rtsp-stream: Use seqnum-offset for rtpinfo
authorLinus Svensson <linussn@axis.com>
Tue, 6 Nov 2018 17:21:54 +0000 (18:21 +0100)
committerSebastian Dröge <slomo@coaxion.net>
Wed, 14 Nov 2018 12:29:58 +0000 (12:29 +0000)
The sequence number in the rtpinfo is supposed to be the first RTP
sequence number. The "seqnum" property on a payloader is supposed to be
the number from the last processed RTP packet. The sequence number for
payloaders that inherit gstrtpbasepayload will not be correct in case of
buffer lists. In order to fix the seqnum property on the payloaders
gst-rtsp-server must get the sequence number for rtpinfo elsewhere and
"seqnum-offset" from the "stats" property contains the value of the
very first RTP packet in a stream. The server will, however, try to look
at the last simple in the sink element and only use properties on the
payloader in case there no sink elements yet, and by looking at the last
sample of the sink gives the server full control of which RTP packet it
looks at. If the payloader does not have the "stats" property, "seqnum"
is still used since "seqnum-offset" is only present in as part of
"stats" and this is still an issue not solved with this patch.

Needed for gst-plugins-base!17

gst/rtsp-server/rtsp-stream.c

index 9ae66a0..83291d6 100644 (file)
@@ -4006,7 +4006,7 @@ stats:
       goto no_stats;
 
     if (seq)
-      gst_structure_get_uint (stats, "seqnum", seq);
+      gst_structure_get_uint (stats, "seqnum-offset", seq);
 
     if (rtptime)
       gst_structure_get_uint (stats, "timestamp", rtptime);