diff options
Diffstat (limited to 'gst')
-rw-r--r-- | gst/rtp/gstrtpmp4gdepay.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/gst/rtp/gstrtpmp4gdepay.c b/gst/rtp/gstrtpmp4gdepay.c index a4c8a4b5..865e120f 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; |