avcodecmap: fix regression with wmv3 video in WMVA format
authorTim-Philipp Müller <tim@centricular.com>
Fri, 3 Jan 2014 15:58:26 +0000 (15:58 +0000)
committerTim-Philipp Müller <tim@centricular.com>
Fri, 3 Jan 2014 16:00:41 +0000 (16:00 +0000)
The VC-1 decoder should handle that. Before avdec_wmv3 handled
it, but then we added format=WMV3 to its sink pad template
caps, at which point nothing handled WMVA any longer.

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

ext/libav/gstavcodecmap.c

index 5fe1b75..42a319a 100644 (file)
@@ -1436,7 +1436,22 @@ gst_ffmpeg_codecid_to_caps (enum AVCodecID codec_id,
     case AV_CODEC_ID_VC1:
       caps =
           gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-wmv",
-          "wmvversion", G_TYPE_INT, 3, "format", G_TYPE_STRING, "WVC1", NULL);
+          "wmvversion", G_TYPE_INT, 3, NULL);
+      if (!context && !encode) {
+        GValue arr = { 0, };
+        GValue item = { 0, };
+
+        g_value_init (&arr, GST_TYPE_LIST);
+        g_value_init (&item, G_TYPE_STRING);
+        g_value_set_string (&item, "WVC1");
+        gst_value_list_append_value (&arr, &item);
+        g_value_set_string (&item, "WMVA");
+        gst_value_list_append_and_take_value (&arr, &item);
+        gst_caps_set_value (caps, "format", &arr);
+        g_value_unset (&arr);
+      } else {
+        gst_caps_set_simple (caps, "format", G_TYPE_STRING, "WVC1", NULL);
+      }
       break;
     case AV_CODEC_ID_QDM2:
       caps =