msdk_status_to_string (status));
}
- /* Force the structure to MFX_PICSTRUCT_PROGRESSIVE if it is unknow to
- * work-around MSDK issue:
- * https://github.com/Intel-Media-SDK/MediaSDK/issues/1139
- */
- if (thiz->param.mfx.FrameInfo.PicStruct == MFX_PICSTRUCT_UNKNOWN)
- thiz->param.mfx.FrameInfo.PicStruct = MFX_PICSTRUCT_PROGRESSIVE;
+ klass->postinit_decoder (thiz);
status = MFXVideoDECODE_QueryIOSurf (session, &thiz->param, &request);
if (status < MFX_ERR_NONE) {
return TRUE;
}
+static gboolean
+gst_msdkdec_postinit_decoder (GstMsdkDec * decoder)
+{
+ /* Do nothing */
+ return TRUE;
+}
+
static void
gst_msdkdec_class_init (GstMsdkDecClass * klass)
{
decoder_class->drain = GST_DEBUG_FUNCPTR (gst_msdkdec_drain);
klass->preinit_decoder = GST_DEBUG_FUNCPTR (gst_msdkdec_preinit_decoder);
+ klass->postinit_decoder = GST_DEBUG_FUNCPTR (gst_msdkdec_postinit_decoder);
g_object_class_install_property (gobject_class, GST_MSDKDEC_PROP_HARDWARE,
g_param_spec_boolean ("hardware", "Hardware", "Enable hardware decoders",
/* reset mfx parameters per codec */
gboolean (*preinit_decoder) (GstMsdkDec * decoder);
+ /* adjust mfx parameters per codec */
+ gboolean (*postinit_decoder) (GstMsdkDec * decoder);
};
struct _MsdkDecTask
return TRUE;
}
+static gboolean
+gst_msdkvp8dec_postinit_decoder (GstMsdkDec * decoder)
+{
+ /* Force the structure to MFX_PICSTRUCT_PROGRESSIVE if it is unknow to
+ * work-around MSDK issue:
+ * https://github.com/Intel-Media-SDK/MediaSDK/issues/1139
+ */
+ if (decoder->param.mfx.FrameInfo.PicStruct == MFX_PICSTRUCT_UNKNOWN)
+ decoder->param.mfx.FrameInfo.PicStruct = MFX_PICSTRUCT_PROGRESSIVE;
+
+ return TRUE;
+}
+
static void
gst_msdkvp8dec_class_init (GstMsdkVP8DecClass * klass)
{
decoder_class->configure = GST_DEBUG_FUNCPTR (gst_msdkvp8dec_configure);
decoder_class->preinit_decoder =
GST_DEBUG_FUNCPTR (gst_msdkvp8dec_preinit_decoder);
+ decoder_class->postinit_decoder =
+ GST_DEBUG_FUNCPTR (gst_msdkvp8dec_postinit_decoder);
gst_element_class_set_static_metadata (element_class,
"Intel MSDK VP8 decoder",