From c9a434bbff4d9250a355a7d07b4c80b2d71debdb Mon Sep 17 00:00:00 2001 From: Mark Nauwelaerts Date: Thu, 27 Aug 2009 15:46:52 +0200 Subject: [PATCH] rtpmp4gdepay: consider (optional) auxiliary data when parsing --- gst/rtp/gstrtpmp4gdepay.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/gst/rtp/gstrtpmp4gdepay.c b/gst/rtp/gstrtpmp4gdepay.c index a4c8a4b579..865e120f3b 100644 --- a/gst/rtp/gstrtpmp4gdepay.c +++ b/gst/rtp/gstrtpmp4gdepay.c @@ -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;