msdkenc: add set_extra_params virtual method
authorHaihao Xiang <haihao.xiang@intel.com>
Tue, 3 Dec 2019 02:48:21 +0000 (10:48 +0800)
committerHaihao Xiang <haihao.xiang@intel.com>
Wed, 15 Jan 2020 00:47:12 +0000 (00:47 +0000)
set_extra_params is added to allow sub class to add extra mfx parameters
for changed input frame or meta data

sys/msdk/gstmsdkenc.c
sys/msdk/gstmsdkenc.h

index 74b7ecc..9e9fc54 100644 (file)
@@ -1383,6 +1383,8 @@ gst_msdkenc_handle_frame (GstVideoEncoder * encoder, GstVideoCodecFrame * frame)
     gst_msdkenc_flush_frames (thiz, FALSE);
     gst_msdkenc_close_encoder (thiz);
 
+    klass->set_extra_params (thiz, frame);
+
     // This will reinitialized the encoder but keep same input format.
     gst_msdkenc_set_format (encoder, NULL);
   }
@@ -1684,6 +1686,12 @@ gst_msdkenc_need_reconfig (GstMsdkEnc * encoder, GstVideoCodecFrame * frame)
 }
 
 static void
+gst_msdkenc_set_extra_params (GstMsdkEnc * encoder, GstVideoCodecFrame * frame)
+{
+  /* Do nothing */
+}
+
+static void
 gst_msdkenc_class_init (GstMsdkEncClass * klass)
 {
   GObjectClass *gobject_class;
@@ -1696,6 +1704,7 @@ gst_msdkenc_class_init (GstMsdkEncClass * klass)
 
   klass->need_conversion = gst_msdkenc_need_conversion;
   klass->need_reconfig = gst_msdkenc_need_reconfig;
+  klass->set_extra_params = gst_msdkenc_set_extra_params;
 
   gobject_class->finalize = gst_msdkenc_finalize;
 
index e209720..bce8139 100644 (file)
@@ -177,6 +177,9 @@ struct _GstMsdkEncClass
 
   /* Return TRUE if sub class requires a recofnig */
   gboolean (*need_reconfig) (GstMsdkEnc * encoder, GstVideoCodecFrame * frame);
+
+  /* Allow sub class set extra frame parameters */
+  void (*set_extra_params) (GstMsdkEnc * encoder, GstVideoCodecFrame * frame);
 };
 
 struct _MsdkEncTask