msdkdec: add post_configure virtual method
authorU. Artie Eoff <ullysses.a.eoff@intel.com>
Sat, 22 Jun 2019 01:12:48 +0000 (18:12 -0700)
committerVíctor Manuel Jáquez Leal <vjaquez@igalia.com>
Sat, 29 Jun 2019 17:40:06 +0000 (17:40 +0000)
A post_configure virtual method is added to allow
codec subclasses to adjust the initialized parameters
after MFXVideoDECODE_DecodeHeader is called from the
gstmsdkdec::gst_msdkdec_handle_frame function.

This is useful if codecs want to adjust the output
parameters based on the codec-specific decoding
options that are present in the mfxInfoMFX structure
after MFXVideoDECODE_DecodeHeader initializes them.

sys/msdk/gstmsdkdec.c
sys/msdk/gstmsdkdec.h

index 0870cbabbe1e161dc5f30693794a0fb36100cc3a..54b4abaab545f6371d7e3919418b999482732b6a 100644 (file)
@@ -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);
 
index 9ab21e2e1edaf63f68d6de9c17eab981f82eb849..c55eb7c9e854c1f0879d6ad29f944b703b5c12c3 100644 (file)
@@ -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 */