After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 759770 - problem with sequence number in RTP-Info-header when rtponviftimestamp plugin present
problem with sequence number in RTP-Info-header when rtponviftimestamp plugin...
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gst-rtsp-server
unspecified
Other Linux
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2015-12-22 08:20 UTC by Branko Subasic
Modified: 2015-12-28 10:49 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Branko Subasic 2015-12-22 08:20:11 UTC
When the RTSP server creates the RTP-Info header it asks the payloaders for the sequence number and RTP time stamps. However, when the rtponviftimestamp element is present, after the actual payloader, these values will not be taken from the first packet pushed by the payloader. This is because the payloaders always store the info for the last payloaded packet, butrtponviftimestamp the rtponviftimestamp element caches one buffer (it needs to do this to know whether to set the e-bit in the extension header or not). This means that the payloader will push (at least) two buffers while pre-rolling.

One way to fix this would be to make the payloader store the sequence number and RTP time stamp for the "pre-roll packet", e.g. the first packet payloaded when going to paused state. However, that would mean that the payloader would have to behave differently in paused and playing states. In paused state it would have to provide the sequence number and rtp timestamp for the "preroll packet", but in playing state it would have to return the values for the last payloaded packet.
Or the RTSP server would have to ask for them in different ways.

Another way would be to use an upstream custom query to ask for the sequence number and RTP time stamp. When the rtponviftimestamp element is present it would answer the query, when it's not the payloader would answer it.

I propese the latter approach. It requires changes in rtpbasepayload, rtponviftimestamp, and gst-rtsp-server. But it is a generic solution which does not require the payloaders to behave differently in different states.
Comment 1 Sebastian Dröge (slomo) 2015-12-28 10:49:35 UTC
<she-man> slomo: regarding our discussion about https://bugzilla.gnome.org/show_bug.cgi?id=759770
<she-man> slomo: turns out i was wrong, i checked the wrong version of gst-rtsp-server...
<she-man> slomo: the issue is fixed on master, the sequence number and rtptime are taken from the sinks using the last-sample property 
<she-man> slomo: sorry about that