From 85c17f6c233e177cb4e7c720056b56be4974468f Mon Sep 17 00:00:00 2001 From: Mengkejiergeli Ba Date: Tue, 22 Jun 2021 16:12:57 +0800 Subject: [PATCH] msdk: fix qp range for vp9enc Part-of: --- sys/msdk/gstmsdkenc.c | 13 ++++++++++--- sys/msdk/gstmsdkenc.h | 3 +++ sys/msdk/gstmsdkvp9enc.c | 2 ++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/sys/msdk/gstmsdkenc.c b/sys/msdk/gstmsdkenc.c index 547529d..24e2229 100644 --- a/sys/msdk/gstmsdkenc.c +++ b/sys/msdk/gstmsdkenc.c @@ -2054,6 +2054,8 @@ 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; + klass->qp_max = 51; + klass->qp_min = 0; gobject_class->dispose = gst_msdkenc_dispose; @@ -2321,6 +2323,8 @@ gst_msdkenc_install_common_properties (GstMsdkEncClass * klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GParamSpec *obj_properties[GST_MSDKENC_PROP_MAX] = { NULL, }; + guint qp_range_max = klass->qp_max; + guint qp_range_min = klass->qp_min; obj_properties[GST_MSDKENC_PROP_HARDWARE] = g_param_spec_boolean ("hardware", "Hardware", "Enable hardware encoders", @@ -2382,17 +2386,20 @@ gst_msdkenc_install_common_properties (GstMsdkEncClass * klass) g_param_spec_uint ("qpi", "QPI", "Constant quantizer for I frames (0 unlimited). Also used as " "ICQQuality or QVBRQuality for different RateControl methods", - 0, 51, PROP_QPI_DEFAULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + qp_range_min, qp_range_max, PROP_QPI_DEFAULT, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); obj_properties[GST_MSDKENC_PROP_QPP] = g_param_spec_uint ("qpp", "QPP", "Constant quantizer for P frames (0 unlimited)", - 0, 51, PROP_QPP_DEFAULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + qp_range_min, qp_range_max, PROP_QPP_DEFAULT, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); obj_properties[GST_MSDKENC_PROP_QPB] = g_param_spec_uint ("qpb", "QPB", "Constant quantizer for B frames (0 unlimited)", - 0, 51, PROP_QPB_DEFAULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + qp_range_min, qp_range_max, PROP_QPB_DEFAULT, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); obj_properties[GST_MSDKENC_PROP_GOP_SIZE] = g_param_spec_uint ("gop-size", "GOP Size", "GOP Size", 0, diff --git a/sys/msdk/gstmsdkenc.h b/sys/msdk/gstmsdkenc.h index 47cca4e..496c60d 100644 --- a/sys/msdk/gstmsdkenc.h +++ b/sys/msdk/gstmsdkenc.h @@ -186,6 +186,9 @@ struct _GstMsdkEncClass /* Allow sub class set extra frame parameters */ void (*set_extra_params) (GstMsdkEnc * encoder, GstVideoCodecFrame * frame); + + guint qp_max; + guint qp_min; }; struct _MsdkEncTask diff --git a/sys/msdk/gstmsdkvp9enc.c b/sys/msdk/gstmsdkvp9enc.c index ac759c1..e6a1364 100644 --- a/sys/msdk/gstmsdkvp9enc.c +++ b/sys/msdk/gstmsdkvp9enc.c @@ -272,6 +272,8 @@ gst_msdkvp9enc_class_init (GstMsdkVP9EncClass * klass) encoder_class->set_format = gst_msdkvp9enc_set_format; encoder_class->configure = gst_msdkvp9enc_configure; encoder_class->set_src_caps = gst_msdkvp9enc_set_src_caps; + encoder_class->qp_max = 255; + encoder_class->qp_min = 0; gst_msdkenc_install_common_properties (encoder_class); -- 2.7.4