aacparse: Handle Parametric Stereo with HE-AAC(v2)
authorEdward Hervey <edward@centricular.com>
Tue, 4 Apr 2017 15:55:13 +0000 (17:55 +0200)
committerEdward Hervey <bilboed@bilboed.com>
Tue, 4 Apr 2017 16:16:39 +0000 (18:16 +0200)
According to ISO/IEC:14496-2:2009 , in the case of HE-AACv2 (audioObjecType
29) parametric stereo is used (a single mono track is used and then
transformations are applied to it to provide a stereo output).

We therefore report two channels in the case where there is one reported
in the audioChannelConfiguration.

Fixes the various issues where a demuxer would report two channels, but
then the parser would say there's only one channel, and then the decoder
would output two channels.

gst/audioparsers/gstaacparse.c

index bf424b2..21b8c8c 100644 (file)
@@ -564,8 +564,13 @@ gst_aac_parse_read_loas_audio_specific_config (GstAacParse * aacparse,
   if (audio_object_type == 5 || audio_object_type == 29) {
     extension_audio_object_type = 5;
     sbr = TRUE;
-    if (audio_object_type == 29)
+    if (audio_object_type == 29) {
       ps = TRUE;
+      /* Parametric stereo. If we have a one-channel configuration, we can
+       * override it to stereo */
+      if (*channels == 1)
+        *channels = 2;
+    }
 
     GST_LOG_OBJECT (aacparse,
         "Audio object type 5 or 29, so rereading sampling rate...");