rtpmp4gdepay: consider (optional) auxiliary data when parsing
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Thu, 27 Aug 2009 13:46:52 +0000 (15:46 +0200)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Mon, 31 Aug 2009 14:50:01 +0000 (16:50 +0200)
gst/rtp/gstrtpmp4gdepay.c

index a4c8a4b..865e120 100644 (file)
@@ -477,6 +477,23 @@ gst_rtp_mp4g_depay_process (GstBaseRTPDepayload * depayload, GstBuffer * buf)
       payload_AU = 2 + AU_headers_bytes;
       payload_AU_size = payload_len - AU_headers_bytes;
 
+      if (G_UNLIKELY (rtpmp4gdepay->auxiliarydatasizelength)) {
+        gint aux_size;
+
+        /* point the bitstream parser to the first auxiliary data bit */
+        gst_bs_parse_init (&bs, payload + AU_headers_bytes,
+            payload_len - AU_headers_bytes);
+        aux_size =
+            gst_bs_parse_read (&bs, rtpmp4gdepay->auxiliarydatasizelength);
+        /* convert to bytes */
+        aux_size = (aux_size + 7) / 8;
+        /* AU data then follows auxiliary data */
+        if (payload_AU_size < aux_size)
+          goto short_payload;
+        payload_AU += aux_size;
+        payload_AU_size -= aux_size;
+      }
+
       /* point the bitstream parser to the first AU header bit */
       gst_bs_parse_init (&bs, payload, payload_len);
       AU_index = AU_index_delta = 0;