atdec: Set the correct layer depending on the MP3 caps
authorSebastian Dröge <sebastian@centricular.com>
Tue, 11 Mar 2014 10:14:21 +0000 (11:14 +0100)
committerSebastian Dröge <sebastian@centricular.com>
Tue, 11 Mar 2014 14:34:03 +0000 (15:34 +0100)
sys/applemedia/atdec.c

index fa533a7a775040b3a5b95d8f797177edc6419816..32e5ca7d47ac1cd9684e65aad85de110d0d920d6 100644 (file)
@@ -222,9 +222,26 @@ gst_caps_to_at_format (GstCaps * caps, AudioStreamBasicDescription * format)
   if (can_intersect_static_caps (caps, &aac_caps)) {
     format->mFormatID = kAudioFormatMPEG4AAC;
     format->mFramesPerPacket = 1024;
-  } else if (can_intersect_static_caps (caps, &mp3_caps))
-    format->mFormatID = kAudioFormatMPEGLayer3;
-  else if (can_intersect_static_caps (caps, &raw_caps)) {
+  } else if (can_intersect_static_caps (caps, &mp3_caps)) {
+    gint layer;
+
+    gst_structure_get_int (structure, "layer", &layer);
+    switch (layer) {
+      case 1:
+        format->mFormatID = kAudioFormatMPEGLayer1;
+        break;
+      case 2:
+        format->mFormatID = kAudioFormatMPEGLayer2;
+        break;
+      case 3:
+        format->mFormatID = kAudioFormatMPEGLayer3;
+        break;
+      default:
+        g_warn_if_reached ();
+        format->mFormatID = kAudioFormatMPEGLayer3;
+        break;
+    }
+  } else if (can_intersect_static_caps (caps, &raw_caps)) {
     GstAudioFormat audio_format;
     const char *audio_format_str;