summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMengkejiergeli Ba <mengkejiergeli.ba@intel.com>2021-06-22 16:12:57 +0800
committerMengkejiergeli Ba <mengkejiergeli.ba@intel.com>2021-06-24 01:30:18 +0000
commit85c17f6c233e177cb4e7c720056b56be4974468f (patch)
treefd7ad0cabcd3932c16ffbc625561ae8a24f1543f
parent1d4ecd0bde66a8fd5933358ed8c87f79826c0748 (diff)
downloadgstreamer-plugins-bad-85c17f6c233e177cb4e7c720056b56be4974468f.tar.gz
msdk: fix qp range for vp9enc
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2349>
-rw-r--r--sys/msdk/gstmsdkenc.c13
-rw-r--r--sys/msdk/gstmsdkenc.h3
-rw-r--r--sys/msdk/gstmsdkvp9enc.c2
3 files changed, 15 insertions, 3 deletions
diff --git a/sys/msdk/gstmsdkenc.c b/sys/msdk/gstmsdkenc.c
index 547529d87..24e222979 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 47cca4eaf..496c60d1f 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 ac759c1ff..e6a13643a 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);