diff options
author | Haihao Xiang <haihao.xiang@intel.com> | 2019-03-29 12:53:38 +0800 |
---|---|---|
committer | Haihao Xiang <haihao.xiang@intel.com> | 2019-03-29 13:13:07 +0800 |
commit | 01051e7dfdf603a74f6fe96e114d3721eb763a5b (patch) | |
tree | 6d89dc54e51d95a87a11b5b2f466bfc6f5f0cb9c /sys | |
parent | 5b0247db334f2da592cadc0cb116e75e2e7962d7 (diff) | |
download | gstreamer-plugins-bad-01051e7dfdf603a74f6fe96e114d3721eb763a5b.tar.gz |
msdkdec: don't set unknown picture struct to progressive for vc1
MFXVideoDECODE_DecodeHeader only parses the sequence layer for VC1, so
the structure is unknown for a stream with interlace flag set in the
sequence layer. If forcing the struct to progressive in this plugin,
MediaSDK will fail to decode such streams.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/msdk/gstmsdkdec.c | 7 | ||||
-rw-r--r-- | sys/msdk/gstmsdkdec.h | 3 | ||||
-rw-r--r-- | sys/msdk/gstmsdkvp8dec.c | 4 | ||||
-rw-r--r-- | sys/msdk/gstmsdkvp9dec.c | 4 |
4 files changed, 13 insertions, 5 deletions
diff --git a/sys/msdk/gstmsdkdec.c b/sys/msdk/gstmsdkdec.c index 53faaf937..74137c0a5 100644 --- a/sys/msdk/gstmsdkdec.c +++ b/sys/msdk/gstmsdkdec.c @@ -319,9 +319,6 @@ gst_msdkdec_init_decoder (GstMsdkDec * thiz) thiz->param.mfx.FrameInfo.AspectRatioH = info->par_d; } - thiz->param.mfx.FrameInfo.PicStruct = - thiz->param.mfx.FrameInfo.PicStruct ? thiz->param.mfx. - FrameInfo.PicStruct : MFX_PICSTRUCT_PROGRESSIVE; thiz->param.mfx.FrameInfo.FourCC = thiz->param.mfx.FrameInfo.FourCC ? thiz->param.mfx. FrameInfo.FourCC : MFX_FOURCC_NV12; @@ -1468,6 +1465,10 @@ gst_msdkdec_preinit_decoder (GstMsdkDec * decoder) decoder->param.mfx.FrameInfo.Height = GST_ROUND_UP_32 (decoder->param.mfx.FrameInfo.Height); + decoder->param.mfx.FrameInfo.PicStruct = + decoder->param.mfx.FrameInfo.PicStruct ? decoder->param.mfx. + FrameInfo.PicStruct : MFX_PICSTRUCT_PROGRESSIVE; + return TRUE; } diff --git a/sys/msdk/gstmsdkdec.h b/sys/msdk/gstmsdkdec.h index c55e1458d..660c634e4 100644 --- a/sys/msdk/gstmsdkdec.h +++ b/sys/msdk/gstmsdkdec.h @@ -108,8 +108,7 @@ struct _GstMsdkDecClass gboolean (*configure) (GstMsdkDec * decoder); - /* reset mfx parameters per codec, currently it is only used for - * the alignment exception for frame width and height */ + /* reset mfx parameters per codec */ gboolean (*preinit_decoder) (GstMsdkDec * decoder); }; diff --git a/sys/msdk/gstmsdkvp8dec.c b/sys/msdk/gstmsdkvp8dec.c index 71f8c1da0..ae68f94c8 100644 --- a/sys/msdk/gstmsdkvp8dec.c +++ b/sys/msdk/gstmsdkvp8dec.c @@ -140,6 +140,10 @@ gst_msdkvp8dec_preinit_decoder (GstMsdkDec * decoder) decoder->param.mfx.FrameInfo.Height = GST_ROUND_UP_16 (decoder->param.mfx.FrameInfo.Height); + decoder->param.mfx.FrameInfo.PicStruct = + decoder->param.mfx.FrameInfo.PicStruct ? decoder->param.mfx. + FrameInfo.PicStruct : MFX_PICSTRUCT_PROGRESSIVE; + return TRUE; } diff --git a/sys/msdk/gstmsdkvp9dec.c b/sys/msdk/gstmsdkvp9dec.c index 7a9427a44..dcdee0309 100644 --- a/sys/msdk/gstmsdkvp9dec.c +++ b/sys/msdk/gstmsdkvp9dec.c @@ -156,6 +156,10 @@ gst_msdkvp9dec_preinit_decoder (GstMsdkDec * decoder) decoder->param.mfx.FrameInfo.Height = GST_ROUND_UP_16 (decoder->param.mfx.FrameInfo.Height); + decoder->param.mfx.FrameInfo.PicStruct = + decoder->param.mfx.FrameInfo.PicStruct ? decoder->param.mfx. + FrameInfo.PicStruct : MFX_PICSTRUCT_PROGRESSIVE; + return TRUE; } |