Jetson Inference
DNN Vision Library

Hardware-accelerated video encoder and decoder (H.264/H.265) using GStreamer. More...

Classes

class  gstBufferManager
 gstBufferManager recieves GStreamer buffers from appsink elements and unpacks/maps them into CUDA address space, and handles colorspace conversion into RGB format. More...
 
class  gstDecoder
 Hardware-accelerated video decoder for Jetson using GStreamer. More...
 
class  gstEncoder
 Hardware-accelerated video encoder for Jetson using GStreamer. More...
 
class  gstWebRTC
 Static class for common WebRTC utility functions used with GStreamer. More...
 

Macros

#define LOG_GSTREAMER   "[gstreamer] "
 LOG_GSTREAMER logging prefix. More...
 

Detailed Description

Hardware-accelerated video encoder and decoder (H.264/H.265) using GStreamer.


Class Documentation

◆ gstBufferManager

class gstBufferManager

gstBufferManager recieves GStreamer buffers from appsink elements and unpacks/maps them into CUDA address space, and handles colorspace conversion into RGB format.

It can handle both normal CPU-based GStreamer buffers and NVMM memory which can be mapped directly to the GPU without requiring memory copies using the CPU.

To disable the use of NVMM memory, set -DENABLE_NVMM=OFF when building with CMake:

cmake -DENABLE_NVMM=OFF ../

Public Member Functions

 gstBufferManager (videoOptions *options)
 Constructor. More...
 
 ~gstBufferManager ()
 Destructor. More...
 
bool Enqueue (GstBuffer *buffer, GstCaps *caps)
 Enqueue a GstBuffer from GStreamer. More...
 
int Dequeue (void **output, imageFormat format, uint64_t timeout=UINT64_MAX)
 Dequeue the next frame. More...
 
uint64_t GetLastTimestamp () const
 Get timestamp of the latest dequeued frame. More...
 
imageFormat GetRawFormat () const
 Get raw image format. More...
 
uint64_t GetFrameCount () const
 Get the total number of frames that have been recieved. More...
 

Protected Attributes

imageFormat mFormatYUV
 The YUV colorspace format coming from appsink (typically NV12 or YUY2) More...
 
RingBuffer mBufferYUV
 Ringbuffer of CPU-based YUV frames (non-NVMM) that come from appsink. More...
 
RingBuffer mTimestamps
 Ringbuffer of timestamps that come from appsink. More...
 
RingBuffer mBufferRGB
 Ringbuffer of frames that have been converted to RGB colorspace. More...
 
uint64_t mLastTimestamp
 Timestamp of the latest dequeued frame. More...
 
Event mWaitEvent
 Event that gets triggered when a new frame is recieved. More...
 
videoOptionsmOptions
 Options of the gstDecoder / gstCamera object. More...
 
uint64_t mFrameCount
 Total number of frames that have been recieved. More...
 
bool mNvmmUsed
 Is NVMM memory actually used by the stream? More...
 

Constructor & Destructor Documentation

◆ gstBufferManager()

gstBufferManager::gstBufferManager ( videoOptions options)

Constructor.

◆ ~gstBufferManager()

gstBufferManager::~gstBufferManager ( )

Destructor.

Member Function Documentation

◆ Dequeue()

int gstBufferManager::Dequeue ( void **  output,
imageFormat  format,
uint64_t  timeout = UINT64_MAX 
)

Dequeue the next frame.

Returns 1 on success, 0 on timeout, -1 on error.

◆ Enqueue()

bool gstBufferManager::Enqueue ( GstBuffer *  buffer,
GstCaps *  caps 
)

Enqueue a GstBuffer from GStreamer.

◆ GetFrameCount()

uint64_t gstBufferManager::GetFrameCount ( ) const
inline

Get the total number of frames that have been recieved.

◆ GetLastTimestamp()

uint64_t gstBufferManager::GetLastTimestamp ( ) const
inline

Get timestamp of the latest dequeued frame.

◆ GetRawFormat()

imageFormat gstBufferManager::GetRawFormat ( ) const
inline

Get raw image format.

Member Data Documentation

◆ mBufferRGB

RingBuffer gstBufferManager::mBufferRGB
protected

Ringbuffer of frames that have been converted to RGB colorspace.

◆ mBufferYUV

RingBuffer gstBufferManager::mBufferYUV
protected

Ringbuffer of CPU-based YUV frames (non-NVMM) that come from appsink.

◆ mFormatYUV

imageFormat gstBufferManager::mFormatYUV
protected

The YUV colorspace format coming from appsink (typically NV12 or YUY2)

◆ mFrameCount

uint64_t gstBufferManager::mFrameCount
protected

Total number of frames that have been recieved.

◆ mLastTimestamp

uint64_t gstBufferManager::mLastTimestamp
protected

Timestamp of the latest dequeued frame.

◆ mNvmmUsed

bool gstBufferManager::mNvmmUsed
protected

Is NVMM memory actually used by the stream?

◆ mOptions

videoOptions* gstBufferManager::mOptions
protected

Options of the gstDecoder / gstCamera object.

◆ mTimestamps

RingBuffer gstBufferManager::mTimestamps
protected

Ringbuffer of timestamps that come from appsink.

◆ mWaitEvent

Event gstBufferManager::mWaitEvent
protected

Event that gets triggered when a new frame is recieved.

◆ gstDecoder

class gstDecoder

Hardware-accelerated video decoder for Jetson using GStreamer.

gstDecoder supports loading video files from disk (MKV, MP4, AVI, FLV) and RTP/RTSP network streams over UDP/IP. The supported decoder codecs are H.264, H.265, VP8, VP9, MPEG-2, MPEG-4, and MJPEG.

Note
gstDecoder implements the videoSource interface and is intended to be used through that as opposed to directly. videoSource implements additional command-line parsing of videoOptions to construct instances.
See also
videoSource
Inheritance diagram for gstDecoder:
videoSource

Public Member Functions

 ~gstDecoder ()
 Destructor. More...
 
virtual bool Capture (void **image, imageFormat format, uint64_t timeout=DEFAULT_TIMEOUT, int *status=NULL)
 Capture the next decoded frame. More...
 
virtual bool Open ()
 Open the stream. More...
 
virtual void Close ()
 Close the stream. More...
 
bool IsEOS () const
 Return true if End Of Stream (EOS) has been reached. More...
 
virtual uint32_t GetType () const
 Return the interface type (gstDecoder::Type) More...
 
- Public Member Functions inherited from videoSource
virtual ~videoSource ()
 Destroy interface and release all resources. More...
 
template<typename T >
bool Capture (T **image, int *status)
 Capture the next image from the video stream, using the default timeout of 1000ms. More...
 
template<typename T >
bool Capture (T **image, uint64_t timeout=DEFAULT_TIMEOUT, int *status=NULL)
 Capture the next image from the video stream. More...
 
bool IsStreaming () const
 Check if the device is actively streaming or not. More...
 
uint32_t GetWidth () const
 Return the width of the stream, in pixels. More...
 
uint32_t GetHeight () const
 Return the height of the stream, in pixels. More...
 
uint32_t GetFrameRate () const
 Return the framerate, in Hz or FPS. More...
 
uint64_t GetFrameCount () const
 Return the number of frames captured. More...
 
uint64_t GetLastTimestamp () const
 Get timestamp of the last captured frame, in nanoseconds. More...
 
imageFormat GetRawFormat () const
 Get raw image format. More...
 
const URIGetResource () const
 Return the resource URI of the stream. More...
 
const videoOptionsGetOptions () const
 Return the videoOptions of the stream. More...
 
bool IsType (uint32_t type) const
 Check if this stream is of a particular type. More...
 
template<typename T >
bool IsType () const
 Check if a this stream is of a particular type. More...
 
const char * TypeToStr () const
 Convert this stream's class type to string. More...
 

Static Public Member Functions

static gstDecoderCreate (const videoOptions &options)
 Create a decoder from the provided video options. More...
 
static gstDecoderCreate (const URI &resource, videoOptions::Codec codec)
 Create a decoder instance from resource URI and codec. More...
 
static bool IsSupportedExtension (const char *ext)
 Return true if the extension is in the list of SupportedExtensions. More...
 
- Static Public Member Functions inherited from videoSource
static videoSourceCreate (const videoOptions &options)
 Create videoSource interface from a videoOptions struct that's already been filled out. More...
 
static videoSourceCreate (const char *URI, const videoOptions &options=videoOptions())
 Create videoSource interface from a resource URI string and optional videoOptions. More...
 
static videoSourceCreate (const char *URI, const commandLine &cmdLine)
 Create videoSource interface from a resource URI string and parsing command line arguments. More...
 
static videoSourceCreate (const char *URI, const int argc, char **argv)
 Create videoSource interface from a resource URI string and parsing command line arguments. More...
 
static videoSourceCreate (const int argc, char **argv, int positionArg=-1)
 Create videoSource interface by parsing command line arguments, including the resource URI. More...
 
static videoSourceCreate (const commandLine &cmdLine, int positionArg=-1)
 Create videoSource interface by parsing command line arguments, including the resource URI. More...
 
static const char * Usage ()
 Usage string for command line arguments to Create() More...
 
static const char * TypeToStr (uint32_t type)
 Convert a class type to a string. More...
 

Static Public Attributes

static const uint32_t Type = (1 << 1)
 Unique type identifier of gstDecoder class. More...
 
static const char * SupportedExtensions []
 String array of supported video file extensions, terminated with a NULL sentinel value. More...
 
- Static Public Attributes inherited from videoSource
static const uint64_t DEFAULT_TIMEOUT =1000
 The default Capture timeout (1000ms) More...
 

Protected Member Functions

 gstDecoder (const videoOptions &options)
 
void checkMsgBus ()
 
void checkBuffer ()
 
bool buildLaunchStr ()
 
bool discover ()
 
bool init ()
 
bool initPipeline ()
 
void destroyPipeline ()
 
bool isLooping () const
 
- Protected Member Functions inherited from videoSource
 videoSource (const videoOptions &options)
 

Static Protected Member Functions

static void onEOS (_GstAppSink *sink, void *user_data)
 
static GstFlowReturn onPreroll (_GstAppSink *sink, void *user_data)
 
static GstFlowReturn onBuffer (_GstAppSink *sink, void *user_data)
 
static void onWebsocketMessage (WebRTCPeer *peer, const char *message, size_t message_size, void *user_data)
 

Protected Attributes

GstBus * mBus
 
GstElement * mPipeline
 
_GstAppSink * mAppSink
 
Event mWaitEvent
 
std::string mLaunchStr
 
bool mCustomSize
 
bool mCustomRate
 
bool mEOS
 
size_t mLoopCount
 
gstBufferManagermBufferManager
 
WebRTCServermWebRTCServer
 
bool mWebRTCConnected
 
- Protected Attributes inherited from videoSource
bool mStreaming
 
videoOptions mOptions
 
uint64_t mLastTimestamp
 
imageFormat mRawFormat
 

Additional Inherited Members

- Public Types inherited from videoSource
enum  Status { ERROR = -2, EOS = -1, TIMEOUT = 0, OK = 1 }
 Stream status codes that are optionally returned from Capture() More...
 

Constructor & Destructor Documentation

◆ ~gstDecoder()

gstDecoder::~gstDecoder ( )

Destructor.

◆ gstDecoder()

gstDecoder::gstDecoder ( const videoOptions options)
protected

Member Function Documentation

◆ buildLaunchStr()

bool gstDecoder::buildLaunchStr ( )
protected

◆ Capture()

virtual bool gstDecoder::Capture ( void **  image,
imageFormat  format,
uint64_t  timeout = DEFAULT_TIMEOUT,
int *  status = NULL 
)
virtual

Capture the next decoded frame.

See also
videoSource::Capture()

Implements videoSource.

◆ checkBuffer()

void gstDecoder::checkBuffer ( )
protected

◆ checkMsgBus()

void gstDecoder::checkMsgBus ( )
protected

◆ Close()

virtual void gstDecoder::Close ( )
virtual

Close the stream.

See also
videoSource::Close()

Reimplemented from videoSource.

◆ Create() [1/2]

static gstDecoder* gstDecoder::Create ( const URI resource,
videoOptions::Codec  codec 
)
static

Create a decoder instance from resource URI and codec.

◆ Create() [2/2]

static gstDecoder* gstDecoder::Create ( const videoOptions options)
static

Create a decoder from the provided video options.

◆ destroyPipeline()

void gstDecoder::destroyPipeline ( )
protected

◆ discover()

bool gstDecoder::discover ( )
protected

◆ GetType()

virtual uint32_t gstDecoder::GetType ( ) const
inlinevirtual

Return the interface type (gstDecoder::Type)

Reimplemented from videoSource.

◆ init()

bool gstDecoder::init ( )
protected

◆ initPipeline()

bool gstDecoder::initPipeline ( )
protected

◆ IsEOS()

bool gstDecoder::IsEOS ( ) const
inline

Return true if End Of Stream (EOS) has been reached.

In the context of gstDecoder, EOS means that playback has reached the end of the file, and looping is either disabled or all loops have already been run. In the case of RTP/RTSP, it means that the stream has terminated.

◆ isLooping()

bool gstDecoder::isLooping ( ) const
inlineprotected

◆ IsSupportedExtension()

static bool gstDecoder::IsSupportedExtension ( const char *  ext)
static

Return true if the extension is in the list of SupportedExtensions.

Parameters
extstring containing the extension to be checked (should not contain leading dot)
See also
SupportedExtensions for the list of supported Video Streaming file extensions.

◆ onBuffer()

static GstFlowReturn gstDecoder::onBuffer ( _GstAppSink *  sink,
void *  user_data 
)
staticprotected

◆ onEOS()

static void gstDecoder::onEOS ( _GstAppSink *  sink,
void *  user_data 
)
staticprotected

◆ onPreroll()

static GstFlowReturn gstDecoder::onPreroll ( _GstAppSink *  sink,
void *  user_data 
)
staticprotected

◆ onWebsocketMessage()

static void gstDecoder::onWebsocketMessage ( WebRTCPeer peer,
const char *  message,
size_t  message_size,
void *  user_data 
)
staticprotected

◆ Open()

virtual bool gstDecoder::Open ( )
virtual

Open the stream.

See also
videoSource::Open()

Reimplemented from videoSource.

Member Data Documentation

◆ mAppSink

_GstAppSink* gstDecoder::mAppSink
protected

◆ mBufferManager

gstBufferManager* gstDecoder::mBufferManager
protected

◆ mBus

GstBus* gstDecoder::mBus
protected

◆ mCustomRate

bool gstDecoder::mCustomRate
protected

◆ mCustomSize

bool gstDecoder::mCustomSize
protected

◆ mEOS

bool gstDecoder::mEOS
protected

◆ mLaunchStr

std::string gstDecoder::mLaunchStr
protected

◆ mLoopCount

size_t gstDecoder::mLoopCount
protected

◆ mPipeline

GstElement* gstDecoder::mPipeline
protected

◆ mWaitEvent

Event gstDecoder::mWaitEvent
protected

◆ mWebRTCConnected

bool gstDecoder::mWebRTCConnected
protected

◆ mWebRTCServer

WebRTCServer* gstDecoder::mWebRTCServer
protected

◆ SupportedExtensions

const char* gstDecoder::SupportedExtensions[]
static

String array of supported video file extensions, terminated with a NULL sentinel value.

The supported extension are:

  • MKV
  • MP4 / QT
  • AVI
  • FLV
See also
IsSupportedExtension() to check a string against this list.

◆ Type

const uint32_t gstDecoder::Type = (1 << 1)
static

Unique type identifier of gstDecoder class.

◆ gstEncoder

class gstEncoder

Hardware-accelerated video encoder for Jetson using GStreamer.

The encoder can write the encoded video to disk in (MKV, MP4, AVI, FLV), or stream over the network to a remote host via RTP/RTSP using UDP/IP. The supported encoder codecs are H.264, H.265, VP8, VP9, and MJPEG.

Note
gstEncoder implements the videoOutput interface and is intended to be used through that as opposed to directly. videoOutput implements additional command-line parsing of videoOptions to construct instances.
See also
videoOutput
Inheritance diagram for gstEncoder:
videoOutput

Public Member Functions

 ~gstEncoder ()
 Destructor. More...
 
template<typename T >
bool Render (T *image, uint32_t width, uint32_t height)
 Encode the next frame. More...
 
virtual bool Render (void *image, uint32_t width, uint32_t height, imageFormat format)
 Encode the next frame. More...
 
virtual bool Open ()
 Open the stream. More...
 
virtual void Close ()
 Close the stream. More...
 
GstPipeline * GetPipeline () const
 Return the GStreamer pipeline object. More...
 
WebRTCServerGetWebRTCServer () const
 Return the WebRTC server (only used when the protocol is "webrtc://") More...
 
virtual uint32_t GetType () const
 Return the interface type (gstEncoder::Type) More...
 
- Public Member Functions inherited from videoOutput
virtual ~videoOutput ()
 Destroy interface and release all resources. More...
 
template<typename T >
bool Render (T *image, uint32_t width, uint32_t height)
 Render and output the next frame to the stream. More...
 
bool IsStreaming () const
 Check if the device is actively streaming or not. More...
 
uint32_t GetWidth () const
 Return the width of the stream, in pixels. More...
 
uint32_t GetHeight () const
 Return the height of the stream, in pixels. More...
 
float GetFrameRate () const
 Return the framerate, in Hz or FPS. More...
 
uint64_t GetFrameCount () const
 Return the number of frames output. More...
 
const URIGetResource () const
 Return the resource URI of the stream. More...
 
const videoOptionsGetOptions () const
 Return the videoOptions of the stream. More...
 
void AddOutput (videoOutput *output)
 Add an output sub-stream. More...
 
uint32_t GetNumOutputs () const
 Return the number of sub-streams. More...
 
videoOutputGetOutput (uint32_t index) const
 Return a sub-stream. More...
 
virtual void SetStatus (const char *str)
 Set a status string (i.e. More...
 
bool IsType (uint32_t type) const
 Check if this stream is of a particular type. More...
 
template<typename T >
bool IsType () const
 Check if a this stream is of a particular type. More...
 
const char * TypeToStr () const
 Convert this stream's class type to string. More...
 

Static Public Member Functions

static gstEncoderCreate (const videoOptions &options)
 Create an encoder from the provided video options. More...
 
static gstEncoderCreate (const URI &resource, videoOptions::Codec codec)
 Create an encoder instance from resource URI and codec. More...
 
static bool IsSupportedExtension (const char *ext)
 Return true if the extension is in the list of SupportedExtensions. More...
 
- Static Public Member Functions inherited from videoOutput
static videoOutputCreate (const videoOptions &options)
 Create videoOutput interface from a videoOptions struct that's already been filled out. More...
 
static videoOutputCreate (const char *URI, const videoOptions &options=videoOptions())
 Create videoOutput interface from a resource URI string and optional videoOptions. More...
 
static videoOutputCreate (const char *URI, const commandLine &cmdLine)
 Create videoOutput interface from a resource URI string and parsing command line arguments. More...
 
static videoOutputCreate (const char *URI, const int argc, char **argv)
 Create videoOutput interface from a resource URI string and parsing command line arguments. More...
 
static videoOutputCreate (const int argc, char **argv, int positionArg=-1)
 Create videoOutput interface by parsing command line arguments, including the resource URI. More...
 
static videoOutputCreate (const commandLine &cmdLine, int positionArg=-1)
 Create videoOutput interface by parsing command line arguments, including the resource URI. More...
 
static videoOutputCreateNullOutput ()
 Create videoOutput interface that acts as a NULL output and does nothing with incoming frames. More...
 
static const char * Usage ()
 Usage string for command line arguments to Create() More...
 
static const char * TypeToStr (uint32_t type)
 Convert a class type to a string. More...
 

Static Public Attributes

static const uint32_t Type = (1 << 2)
 Unique type identifier of gstEncoder class. More...
 
static const char * SupportedExtensions []
 String array of supported video file extensions, terminated with a NULL sentinel value. More...
 

Protected Member Functions

 gstEncoder (const videoOptions &options)
 
bool init ()
 
bool initPipeline ()
 
void destroyPipeline ()
 
void checkMsgBus ()
 
bool buildCapsStr ()
 
bool buildLaunchStr ()
 
bool encodeYUV (void *buffer, size_t size)
 
- Protected Member Functions inherited from videoOutput
 videoOutput (const videoOptions &options)
 

Static Protected Member Functions

static void onNeedData (GstElement *pipeline, uint32_t size, void *user_data)
 
static void onEnoughData (GstElement *pipeline, void *user_data)
 
static void onWebsocketMessage (WebRTCPeer *peer, const char *message, size_t message_size, void *user_data)
 

Protected Attributes

GstBus * mBus
 
GstCaps * mBufferCaps
 
GstElement * mAppSrc
 
GstElement * mPipeline
 
bool mNeedData
 
std::string mCapsStr
 
std::string mLaunchStr
 
RingBuffer mBufferYUV
 
RTSPServermRTSPServer
 
WebRTCServermWebRTCServer
 
- Protected Attributes inherited from videoOutput
bool mStreaming
 
videoOptions mOptions
 
std::vector< videoOutput * > mOutputs
 

Constructor & Destructor Documentation

◆ ~gstEncoder()

gstEncoder::~gstEncoder ( )

Destructor.

◆ gstEncoder()

gstEncoder::gstEncoder ( const videoOptions options)
protected

Member Function Documentation

◆ buildCapsStr()

bool gstEncoder::buildCapsStr ( )
protected

◆ buildLaunchStr()

bool gstEncoder::buildLaunchStr ( )
protected

◆ checkMsgBus()

void gstEncoder::checkMsgBus ( )
protected

◆ Close()

virtual void gstEncoder::Close ( )
virtual

Close the stream.

See also
videoOutput::Open()

Reimplemented from videoOutput.

◆ Create() [1/2]

static gstEncoder* gstEncoder::Create ( const URI resource,
videoOptions::Codec  codec 
)
static

Create an encoder instance from resource URI and codec.

◆ Create() [2/2]

static gstEncoder* gstEncoder::Create ( const videoOptions options)
static

Create an encoder from the provided video options.

◆ destroyPipeline()

void gstEncoder::destroyPipeline ( )
protected

◆ encodeYUV()

bool gstEncoder::encodeYUV ( void *  buffer,
size_t  size 
)
protected

◆ GetPipeline()

GstPipeline* gstEncoder::GetPipeline ( ) const
inline

Return the GStreamer pipeline object.

◆ GetType()

virtual uint32_t gstEncoder::GetType ( ) const
inlinevirtual

Return the interface type (gstEncoder::Type)

Reimplemented from videoOutput.

◆ GetWebRTCServer()

WebRTCServer* gstEncoder::GetWebRTCServer ( ) const
inline

Return the WebRTC server (only used when the protocol is "webrtc://")

◆ init()

bool gstEncoder::init ( )
protected

◆ initPipeline()

bool gstEncoder::initPipeline ( )
protected

◆ IsSupportedExtension()

static bool gstEncoder::IsSupportedExtension ( const char *  ext)
static

Return true if the extension is in the list of SupportedExtensions.

Parameters
extstring containing the extension to be checked (should not contain leading dot)
See also
SupportedExtensions for the list of supported Video Streaming file extensions.

◆ onEnoughData()

static void gstEncoder::onEnoughData ( GstElement *  pipeline,
void *  user_data 
)
staticprotected

◆ onNeedData()

static void gstEncoder::onNeedData ( GstElement *  pipeline,
uint32_t  size,
void *  user_data 
)
staticprotected

◆ onWebsocketMessage()

static void gstEncoder::onWebsocketMessage ( WebRTCPeer peer,
const char *  message,
size_t  message_size,
void *  user_data 
)
staticprotected

◆ Open()

virtual bool gstEncoder::Open ( )
virtual

Open the stream.

See also
videoOutput::Open()

Reimplemented from videoOutput.

◆ Render() [1/2]

template<typename T >
bool gstEncoder::Render ( T *  image,
uint32_t  width,
uint32_t  height 
)
inline

Encode the next frame.

See also
videoOutput::Render()

◆ Render() [2/2]

virtual bool gstEncoder::Render ( void *  image,
uint32_t  width,
uint32_t  height,
imageFormat  format 
)
virtual

Encode the next frame.

See also
videoOutput::Render()

Reimplemented from videoOutput.

Member Data Documentation

◆ mAppSrc

GstElement* gstEncoder::mAppSrc
protected

◆ mBufferCaps

GstCaps* gstEncoder::mBufferCaps
protected

◆ mBufferYUV

RingBuffer gstEncoder::mBufferYUV
protected

◆ mBus

GstBus* gstEncoder::mBus
protected

◆ mCapsStr

std::string gstEncoder::mCapsStr
protected

◆ mLaunchStr

std::string gstEncoder::mLaunchStr
protected

◆ mNeedData

bool gstEncoder::mNeedData
protected

◆ mPipeline

GstElement* gstEncoder::mPipeline
protected

◆ mRTSPServer

RTSPServer* gstEncoder::mRTSPServer
protected

◆ mWebRTCServer

WebRTCServer* gstEncoder::mWebRTCServer
protected

◆ SupportedExtensions

const char* gstEncoder::SupportedExtensions[]
static

String array of supported video file extensions, terminated with a NULL sentinel value.

The supported extension are:

  • MKV
  • MP4 / QT
  • AVI
  • FLV
See also
IsSupportedExtension() to check a string against this list.

◆ Type

const uint32_t gstEncoder::Type = (1 << 2)
static

Unique type identifier of gstEncoder class.

◆ gstWebRTC

class gstWebRTC

Static class for common WebRTC utility functions used with GStreamer.

This gets used internally by gstEncoder/gstDecoder for handling WebRTC streams.

Static Public Member Functions

static void onNegotiationNeeded (GstElement *webrtcbin, void *user_data)
 Callback for handling webrtcbin "on-negotation-needed" signal. More...
 
static void onCreateOffer (GstPromise *promise, void *user_data)
 Callback for handling webrtcbin "create-offer" signal. More...
 
static void onIceCandidate (GstElement *webrtcbin, uint32_t mline_index, char *candidate, void *user_data)
 Callback for handling webrtcbin "on-ice-candidate" signal. More...
 
static void onWebsocketMessage (WebRTCPeer *peer, const char *message, size_t message_size, void *user_data)
 Handle incoming websocket messages from the client. More...
 

Member Function Documentation

◆ onCreateOffer()

static void gstWebRTC::onCreateOffer ( GstPromise *  promise,
void *  user_data 
)
static

Callback for handling webrtcbin "create-offer" signal.

This sends an SDP offer to the client.

◆ onIceCandidate()

static void gstWebRTC::onIceCandidate ( GstElement *  webrtcbin,
uint32_t  mline_index,
char *  candidate,
void *  user_data 
)
static

Callback for handling webrtcbin "on-ice-candidate" signal.

This send an ICE candidate to the client.

◆ onNegotiationNeeded()

static void gstWebRTC::onNegotiationNeeded ( GstElement *  webrtcbin,
void *  user_data 
)
static

Callback for handling webrtcbin "on-negotation-needed" signal.

It's expected that user_data is set to a WebRTCPeer instance.

◆ onWebsocketMessage()

static void gstWebRTC::onWebsocketMessage ( WebRTCPeer peer,
const char *  message,
size_t  message_size,
void *  user_data 
)
static

Handle incoming websocket messages from the client.

This only handles SDP/ICE messages - it's expected that the caller will handle new peer connecting/closing messages.

Macro Definition Documentation

◆ LOG_GSTREAMER

#define LOG_GSTREAMER   "[gstreamer] "

LOG_GSTREAMER logging prefix.