msdkdec: don't set unknown picture struct to progressive for vc1
authorHaihao Xiang <haihao.xiang@intel.com>
Fri, 29 Mar 2019 04:53:38 +0000 (12:53 +0800)
committerHaihao Xiang <haihao.xiang@intel.com>
Fri, 29 Mar 2019 05:13:07 +0000 (13:13 +0800)
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.

sys/msdk/gstmsdkdec.c
sys/msdk/gstmsdkdec.h
sys/msdk/gstmsdkvp8dec.c
sys/msdk/gstmsdkvp9dec.c

index 53faaf9..74137c0 100644 (file)
@@ -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;
 }
 
index c55e145..660c634 100644 (file)
@@ -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);
 };
 
index 71f8c1d..ae68f94 100644 (file)
@@ -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;
 }
 
index 7a9427a..dcdee03 100644 (file)
@@ -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;
 }