rtph264depay: Fix handling or marker on STAP-A
authorNicolas Dufresne <nicolas.dufresne@collabora.com>
Sun, 27 Jan 2019 02:01:08 +0000 (21:01 -0500)
committerOlivier CrĂȘte <olivier.crete@ocrete.ca>
Thu, 31 Jan 2019 19:30:14 +0000 (19:30 +0000)
Only forward the marker for the last NAL of the STAP-A. Otherwise each NAL
endup being assumed to be a full frame which may break rendering.

Fixes 557

gst/rtp/gstrtph264depay.c

index 1712bee..4b3be6a 100644 (file)
@@ -1103,6 +1103,8 @@ gst_rtp_h264_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 
         /* STAP-A    Single-time aggregation packet     5.7.1 */
         while (payload_len > 2) {
+          gboolean last = FALSE;
+
           /*                      1
            *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
            * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@@ -1136,8 +1138,11 @@ gst_rtp_h264_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
 
           gst_rtp_copy_video_meta (rtph264depay, outbuf, rtp->buffer);
 
+          if (payload_len - nalu_size <= 2)
+            last = TRUE;
+
           gst_rtp_h264_depay_handle_nal (rtph264depay, outbuf, timestamp,
-              marker);
+              marker && last);
 
           payload += nalu_size;
           payload_len -= nalu_size;