qtdemux: AAC codec_data can be > 2 bytes long
authorArun Raghavan <arun.raghavan@collabora.co.uk>
Tue, 5 Oct 2010 18:40:50 +0000 (19:40 +0100)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Tue, 5 Oct 2010 18:45:31 +0000 (19:45 +0100)
This fixes the assumption that DecoderSpecificInfo must be 2 bytes long
for AAC files. The specification allows HE-AAC to be explicitly
signalled in a backward compatible way. This is done by means of an
additional information after the regular AAC header. It is expected that
decoders that can play AAC but not HE-AAC will parse the header normally
and ignore extended bits, much as they do for the HE-AAC specific payload
in the actual stream.

https://bugzilla.gnome.org/show_bug.cgi?id=612313

gst/qtdemux/qtdemux.c

index 673777c..1595db9 100644 (file)
@@ -7421,7 +7421,10 @@ gst_qtdemux_handle_esds (GstQTDemux * qtdemux, QtDemuxStream * stream,
         rate = gst_codec_utils_aac_get_sample_rate_from_index (rateindex);
         if (rate > 0)
           stream->rate = rate;
+      }
 
+      /* Set level and profile if possible */
+      if (data_ptr != NULL && data_len >= 2) {
         gst_codec_utils_aac_caps_set_level_and_profile (stream->caps,
             data_ptr, data_len);
       }