From a68c218c8ebf95b4c327dae5a990c09ecba09701 Mon Sep 17 00:00:00 2001 From: Wind Yuan Date: Fri, 11 Jan 2013 17:08:00 +0800 Subject: [PATCH] vc1: fix decoding of WMV3 videos in AVI format. The AVI demuxer (avidemux) does not set a proper "format" attribute to the generated caps. So, try to recover the video codec format from the "wmvversion" property instead. Signed-off-by: Gwenole Beauchesne --- gst-libs/gst/vaapi/gstvaapidecoder_vc1.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/gst-libs/gst/vaapi/gstvaapidecoder_vc1.c b/gst-libs/gst/vaapi/gstvaapidecoder_vc1.c index 9baf388..1fe3883 100644 --- a/gst-libs/gst/vaapi/gstvaapidecoder_vc1.c +++ b/gst-libs/gst/vaapi/gstvaapidecoder_vc1.c @@ -1042,6 +1042,7 @@ decode_codec_data(GstVaapiDecoderVC1 *decoder, GstBuffer *buffer) guint buf_size, ofs; gint width, height; guint32 format; + gint version; buf = GST_BUFFER_DATA(buffer); buf_size = GST_BUFFER_SIZE(buffer); @@ -1058,6 +1059,12 @@ decode_codec_data(GstVaapiDecoderVC1 *decoder, GstBuffer *buffer) caps = GST_VAAPI_DECODER_CODEC_STATE(decoder)->caps; structure = gst_caps_get_structure(caps, 0); if (!gst_structure_get_fourcc(structure, "format", &format)) { + /* Try to determine format from "wmvversion" property */ + if (gst_structure_get_int(structure, "wmvversion", &version)) + format = (version >= 1 && version <= 3) ? + GST_MAKE_FOURCC('W','M','V',('0'+version)) : 0; + } + if (!format) { GST_ERROR("failed to parse profile from codec-data"); return GST_VAAPI_DECODER_STATUS_ERROR_UNSUPPORTED_CODEC; } -- 2.7.4