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 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.
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.