mssdemux: fix wma pro caps creation
authorThiago Santos <thiago.sousa.santos@collabora.com>
Fri, 17 May 2013 15:08:10 +0000 (12:08 -0300)
committerThiago Santos <thiago.sousa.santos@collabora.com>
Fri, 17 May 2013 15:08:10 +0000 (12:08 -0300)
WmaPro is actually wmaversion 3, and can also be found by the
WMAP fourcc.

Some manifests also contain the block_align field as "PacketSize"
in the audio track description, the libav decoders require it
to be present in caps.

Fixes #699921

ext/smoothstreaming/gstmssmanifest.c

index 80c96c08923fd3ea8b9d696463401efe37c1ba9b..55be82cdabf3349413af0f4298dbf0b7c7b61fb7 100644 (file)
@@ -327,8 +327,8 @@ _gst_mss_stream_audio_caps_from_fourcc (gchar * fourcc)
   if (strcmp (fourcc, "AACL") == 0) {
     return gst_caps_new_simple ("audio/mpeg", "mpegversion", G_TYPE_INT, 4,
         NULL);
-  } else if (strcmp (fourcc, "WmaPro") == 0) {
-    return gst_caps_new_simple ("audio/x-wma", "wmaversion", G_TYPE_INT, 2,
+  } else if (strcmp (fourcc, "WmaPro") == 0 || strcmp (fourcc, "WMAP") == 0) {
+    return gst_caps_new_simple ("audio/x-wma", "wmaversion", G_TYPE_INT, 3,
         NULL);
   }
   return NULL;
@@ -565,6 +565,7 @@ _gst_mss_stream_audio_caps_from_qualitylevel_xml (GstMssStreamQuality * q)
   gchar *fourcc = (gchar *) xmlGetProp (node, (xmlChar *) "FourCC");
   gchar *channels_str = (gchar *) xmlGetProp (node, (xmlChar *) "Channels");
   gchar *rate_str = (gchar *) xmlGetProp (node, (xmlChar *) "SamplingRate");
+  gchar *block_align_str = (gchar *) xmlGetProp(node, (xmlChar *) "PacketSize");
   gchar *codec_data_str =
       (gchar *) xmlGetProp (node, (xmlChar *) "CodecPrivateData");
   GstBuffer *codec_data = NULL;
@@ -588,6 +589,8 @@ _gst_mss_stream_audio_caps_from_qualitylevel_xml (GstMssStreamQuality * q)
     rate = (gint) g_ascii_strtoull (rate_str, NULL, 10);
   if (channels_str)
     channels = (int) g_ascii_strtoull (channels_str, NULL, 10);
+  if (block_align_str)
+    block_align = (int) g_ascii_strtoull (block_align_str, NULL, 10);
 
   if (!codec_data) {
     GstMapInfo mapinfo;
@@ -636,6 +639,7 @@ end:
   xmlFree (fourcc);
   xmlFree (channels_str);
   xmlFree (rate_str);
+  xmlFree (block_align_str);
   xmlFree (codec_data_str);
 
   return caps;