diff --git a/sys/msdk/gstmsdkdec.c b/sys/msdk/gstmsdkdec.c index 0870cbabbe..54b4abaab5 100644 --- a/sys/msdk/gstmsdkdec.c +++ b/sys/msdk/gstmsdkdec.c @@ -926,6 +926,11 @@ gst_msdkdec_handle_frame (GstVideoDecoder * decoder, GstVideoCodecFrame * frame) goto done; } + if (!klass->post_configure (thiz)) { + flow = GST_FLOW_ERROR; + goto error; + } + if (!thiz->initialized) hard_reset = TRUE; else if (thiz->allocation_caps) { @@ -1453,6 +1458,13 @@ gst_msdkdec_finalize (GObject * object) g_object_unref (thiz->adapter); } +static gboolean +gst_msdkdec_post_configure (GstMsdkDec * decoder) +{ + /* Do nothing */ + return TRUE; +} + static gboolean gst_msdkdec_preinit_decoder (GstMsdkDec * decoder) { @@ -1503,6 +1515,7 @@ gst_msdkdec_class_init (GstMsdkDecClass * klass) decoder_class->flush = GST_DEBUG_FUNCPTR (gst_msdkdec_flush); decoder_class->drain = GST_DEBUG_FUNCPTR (gst_msdkdec_drain); + klass->post_configure = GST_DEBUG_FUNCPTR (gst_msdkdec_post_configure); klass->preinit_decoder = GST_DEBUG_FUNCPTR (gst_msdkdec_preinit_decoder); klass->postinit_decoder = GST_DEBUG_FUNCPTR (gst_msdkdec_postinit_decoder); diff --git a/sys/msdk/gstmsdkdec.h b/sys/msdk/gstmsdkdec.h index 9ab21e2e1e..c55eb7c9e8 100644 --- a/sys/msdk/gstmsdkdec.h +++ b/sys/msdk/gstmsdkdec.h @@ -108,6 +108,9 @@ struct _GstMsdkDecClass gboolean (*configure) (GstMsdkDec * decoder); + /* adjust mfx parameters per codec after decode header */ + gboolean (*post_configure) (GstMsdkDec * decoder); + /* reset mfx parameters per codec */ gboolean (*preinit_decoder) (GstMsdkDec * decoder); /* adjust mfx parameters per codec */