GstRTPBaseDepayload

Provides a base class for RTP depayloaders

In order to handle RTP header extensions correctly if the depayloader aggregates multiple RTP packet payloads into one output buffer this class provides the function gstrtp.rtpbase_depayload.RTPBaseDepayload.setAggregateHdrextEnabled. If the aggregation is enabled the virtual functions @GstRTPBaseDepayload.process or @GstRTPBaseDepayload.process_rtp_packet must tell the base class what happens to the current RTP packet. By default the base class assumes that the packet payload is used with the next output buffer.

If the RTP packet will not be used with an output buffer gstrtp.rtpbase_depayload.RTPBaseDepayload.dropped must be called. A typical situation would be if we are waiting for a keyframe.

If the RTP packet will be used but not with the current output buffer but with the next one gstrtp.rtpbase_depayload.RTPBaseDepayload.delayed must be called. This may happen if the current RTP packet signals the start of a new output buffer and the currently processed output buffer will be pushed first. The undelay happens implicitly once the current buffer has been pushed or gstrtp.rtpbase_depayload.RTPBaseDepayload.flush has been called.

If gstrtp.rtpbase_depayload.RTPBaseDepayload.flush is called all RTP packets that have not been dropped since the last output buffer are dropped, e.g. if an output buffer is discarded due to malformed data. This may or may not include the current RTP packet depending on the 2nd parameter @keep_current.

Be aware that in case gstrtp.rtpbase_depayload.RTPBaseDepayload.pushList is used each buffer will see the same list of RTP header extensions.

Members

Variables

GstReserved
void*[4] GstReserved;
clockRate
uint clockRate;
needNewsegment
bool needNewsegment;
parent
GstElement parent;
priv
GstRTPBaseDepayloadPrivate* priv;
segment
GstSegment segment;
sinkpad
GstPad* sinkpad;
srcpad
GstPad* srcpad;