summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.com>2014-01-03 15:58:26 +0000
committerTim-Philipp Müller <tim@centricular.com>2014-01-03 16:00:41 +0000
commit8770f227359897e42000ea044ff99f0c4a9daccc (patch)
treed5e916d9293f55671d825954f7d4705e2076a600
parent1409e1692b8c9b2c2169918204281f526259b35d (diff)
avcodecmap: fix regression with wmv3 video in WMVA format
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
-rw-r--r--ext/libav/gstavcodecmap.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/ext/libav/gstavcodecmap.c b/ext/libav/gstavcodecmap.c
index 5fe1b75..42a319a 100644
--- a/ext/libav/gstavcodecmap.c
+++ b/ext/libav/gstavcodecmap.c
@@ -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 =