From 8e665fa43578ae01223567946a2ff58262b8455e Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Sun, 22 May 2022 21:38:34 +0900 Subject: [PATCH] qsvencoder: Move common property to baseclass adapter-luid and device-path are common for all codecs Part-of: --- .../gst-plugins-bad/sys/qsv/gstqsvencoder.cpp | 24 +++++++++++++++++++ .../gst-plugins-bad/sys/qsv/gstqsvh264enc.cpp | 24 ------------------- .../gst-plugins-bad/sys/qsv/gstqsvh265enc.cpp | 24 ------------------- .../gst-plugins-bad/sys/qsv/gstqsvjpegenc.cpp | 24 ------------------- .../gst-plugins-bad/sys/qsv/gstqsvvp9enc.cpp | 24 ------------------- 5 files changed, 24 insertions(+), 96 deletions(-) diff --git a/subprojects/gst-plugins-bad/sys/qsv/gstqsvencoder.cpp b/subprojects/gst-plugins-bad/sys/qsv/gstqsvencoder.cpp index 3b6e7472be..dbb82be966 100644 --- a/subprojects/gst-plugins-bad/sys/qsv/gstqsvencoder.cpp +++ b/subprojects/gst-plugins-bad/sys/qsv/gstqsvencoder.cpp @@ -64,6 +64,8 @@ gst_qsv_coding_option_get_type (void) enum { PROP_0, + PROP_ADAPTER_LUID, + PROP_DEVICE_PATH, PROP_TARGET_USAGE, PROP_LOW_LATENCY, }; @@ -175,6 +177,21 @@ gst_qsv_encoder_class_init (GstQsvEncoderClass * klass) object_class->set_property = gst_qsv_encoder_set_property; object_class->get_property = gst_qsv_encoder_get_property; +#ifdef G_OS_WIN32 + g_object_class_install_property (object_class, PROP_ADAPTER_LUID, + g_param_spec_int64 ("adapter-luid", "Adapter LUID", + "DXGI Adapter LUID (Locally Unique Identifier) of created device", + G_MININT64, G_MAXINT64, 0, + (GParamFlags) (GST_PARAM_CONDITIONALLY_AVAILABLE | G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS))); +#else + g_object_class_install_property (object_class, PROP_DEVICE_PATH, + g_param_spec_string ("device-path", "Device Path", + "DRM device path", NULL, + (GParamFlags) (GST_PARAM_CONDITIONALLY_AVAILABLE | + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS))); +#endif + g_object_class_install_property (object_class, PROP_TARGET_USAGE, g_param_spec_uint ("target-usage", "Target Usage", "1: Best quality, 4: Balanced, 7: Best speed", @@ -277,8 +294,15 @@ gst_qsv_encoder_get_property (GObject * object, guint prop_id, GValue * value, { GstQsvEncoder *self = GST_QSV_ENCODER (object); GstQsvEncoderPrivate *priv = self->priv; + GstQsvEncoderClass *klass = GST_QSV_ENCODER_GET_CLASS (self); switch (prop_id) { + case PROP_ADAPTER_LUID: + g_value_set_int64 (value, klass->adapter_luid); + break; + case PROP_DEVICE_PATH: + g_value_set_string (value, klass->display_path); + break; case PROP_TARGET_USAGE: g_value_set_uint (value, priv->target_usage); break; diff --git a/subprojects/gst-plugins-bad/sys/qsv/gstqsvh264enc.cpp b/subprojects/gst-plugins-bad/sys/qsv/gstqsvh264enc.cpp index 5ebd0f2bd9..2f07fcddb8 100644 --- a/subprojects/gst-plugins-bad/sys/qsv/gstqsvh264enc.cpp +++ b/subprojects/gst-plugins-bad/sys/qsv/gstqsvh264enc.cpp @@ -124,8 +124,6 @@ gst_qsv_h264_enc_rc_lookahead_ds_get_type (void) enum { PROP_0, - PROP_ADAPTER_LUID, - PROP_DEVICE_PATH, PROP_CABAC, PROP_MIN_QP_I, PROP_MIN_QP_P, @@ -282,21 +280,6 @@ gst_qsv_h264_enc_class_init (GstQsvH264EncClass * klass, gpointer data) object_class->set_property = gst_qsv_h264_enc_set_property; object_class->get_property = gst_qsv_h264_enc_get_property; -#ifdef G_OS_WIN32 - g_object_class_install_property (object_class, PROP_ADAPTER_LUID, - g_param_spec_int64 ("adapter-luid", "Adapter LUID", - "DXGI Adapter LUID (Locally Unique Identifier) of created device", - G_MININT64, G_MAXINT64, qsvenc_class->adapter_luid, - (GParamFlags) (GST_PARAM_CONDITIONALLY_AVAILABLE | G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS))); -#else - g_object_class_install_property (object_class, PROP_DEVICE_PATH, - g_param_spec_string ("device-path", "Device Path", - "DRM device path", cdata->display_path, - (GParamFlags) (GST_PARAM_CONDITIONALLY_AVAILABLE | - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS))); -#endif - g_object_class_install_property (object_class, PROP_CABAC, g_param_spec_enum ("cabac", "Cabac", "Enables CABAC entropy coding", GST_TYPE_QSV_CODING_OPTION, DEFAULT_CABAC, @@ -681,15 +664,8 @@ gst_qsv_h264_enc_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) { GstQsvH264Enc *self = GST_QSV_H264_ENC (object); - GstQsvEncoderClass *klass = GST_QSV_ENCODER_GET_CLASS (self); switch (prop_id) { - case PROP_ADAPTER_LUID: - g_value_set_int64 (value, klass->adapter_luid); - break; - case PROP_DEVICE_PATH: - g_value_set_string (value, klass->display_path); - break; case PROP_CABAC: g_value_set_enum (value, self->cabac); break; diff --git a/subprojects/gst-plugins-bad/sys/qsv/gstqsvh265enc.cpp b/subprojects/gst-plugins-bad/sys/qsv/gstqsvh265enc.cpp index a737006ef5..443458920e 100644 --- a/subprojects/gst-plugins-bad/sys/qsv/gstqsvh265enc.cpp +++ b/subprojects/gst-plugins-bad/sys/qsv/gstqsvh265enc.cpp @@ -94,8 +94,6 @@ gst_qsv_h265_enc_rate_control_get_type (void) enum { PROP_0, - PROP_ADAPTER_LUID, - PROP_DEVICE_PATH, PROP_MIN_QP_I, PROP_MIN_QP_P, PROP_MIN_QP_B, @@ -239,21 +237,6 @@ gst_qsv_h265_enc_class_init (GstQsvH265EncClass * klass, gpointer data) object_class->set_property = gst_qsv_h265_enc_set_property; object_class->get_property = gst_qsv_h265_enc_get_property; -#ifdef G_OS_WIN32 - g_object_class_install_property (object_class, PROP_ADAPTER_LUID, - g_param_spec_int64 ("adapter-luid", "Adapter LUID", - "DXGI Adapter LUID (Locally Unique Identifier) of created device", - G_MININT64, G_MAXINT64, qsvenc_class->adapter_luid, - (GParamFlags) (GST_PARAM_CONDITIONALLY_AVAILABLE | G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS))); -#else - g_object_class_install_property (object_class, PROP_DEVICE_PATH, - g_param_spec_string ("device-path", "Device Path", - "DRM device path", cdata->display_path, - (GParamFlags) (GST_PARAM_CONDITIONALLY_AVAILABLE | - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS))); -#endif - g_object_class_install_property (object_class, PROP_MIN_QP_I, g_param_spec_uint ("min-qp-i", "Min QP I", "Minimum allowed QP value for I-frame types (0: default)", @@ -586,15 +569,8 @@ gst_qsv_h265_enc_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) { GstQsvH265Enc *self = GST_QSV_H265_ENC (object); - GstQsvEncoderClass *klass = GST_QSV_ENCODER_GET_CLASS (self); switch (prop_id) { - case PROP_ADAPTER_LUID: - g_value_set_int64 (value, klass->adapter_luid); - break; - case PROP_DEVICE_PATH: - g_value_set_string (value, klass->display_path); - break; case PROP_MIN_QP_I: g_value_set_uint (value, self->min_qp_i); break; diff --git a/subprojects/gst-plugins-bad/sys/qsv/gstqsvjpegenc.cpp b/subprojects/gst-plugins-bad/sys/qsv/gstqsvjpegenc.cpp index 66e499bbf7..44a5ac6768 100644 --- a/subprojects/gst-plugins-bad/sys/qsv/gstqsvjpegenc.cpp +++ b/subprojects/gst-plugins-bad/sys/qsv/gstqsvjpegenc.cpp @@ -39,8 +39,6 @@ GST_DEBUG_CATEGORY_STATIC (gst_qsv_jpeg_enc_debug); enum { PROP_0, - PROP_ADAPTER_LUID, - PROP_DEVICE_PATH, PROP_QUALITY, }; @@ -113,21 +111,6 @@ gst_qsv_jpeg_enc_class_init (GstQsvJpegEncClass * klass, gpointer data) object_class->set_property = gst_qsv_jpeg_enc_set_property; object_class->get_property = gst_qsv_jpeg_enc_get_property; -#ifdef G_OS_WIN32 - g_object_class_install_property (object_class, PROP_ADAPTER_LUID, - g_param_spec_int64 ("adapter-luid", "Adapter LUID", - "DXGI Adapter LUID (Locally Unique Identifier) of created device", - G_MININT64, G_MAXINT64, qsvenc_class->adapter_luid, - (GParamFlags) (GST_PARAM_CONDITIONALLY_AVAILABLE | G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS))); -#else - g_object_class_install_property (object_class, PROP_DEVICE_PATH, - g_param_spec_string ("device-path", "Device Path", - "DRM device path", cdata->display_path, - (GParamFlags) (GST_PARAM_CONDITIONALLY_AVAILABLE | - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS))); -#endif - g_object_class_install_property (object_class, PROP_QUALITY, g_param_spec_uint ("quality", "Quality", "Encoding quality, 100 for best quality", @@ -226,15 +209,8 @@ gst_qsv_jpeg_enc_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) { GstQsvJpegEnc *self = GST_QSV_JPEG_ENC (object); - GstQsvEncoderClass *klass = GST_QSV_ENCODER_GET_CLASS (self); switch (prop_id) { - case PROP_ADAPTER_LUID: - g_value_set_int64 (value, klass->adapter_luid); - break; - case PROP_DEVICE_PATH: - g_value_set_string (value, klass->display_path); - break; case PROP_QUALITY: g_value_set_uint (value, self->quality); break; diff --git a/subprojects/gst-plugins-bad/sys/qsv/gstqsvvp9enc.cpp b/subprojects/gst-plugins-bad/sys/qsv/gstqsvvp9enc.cpp index 63ff0486dd..a24244a85e 100644 --- a/subprojects/gst-plugins-bad/sys/qsv/gstqsvvp9enc.cpp +++ b/subprojects/gst-plugins-bad/sys/qsv/gstqsvvp9enc.cpp @@ -61,8 +61,6 @@ gst_qsv_vp9_enc_rate_control_get_type (void) enum { PROP_0, - PROP_ADAPTER_LUID, - PROP_DEVICE_PATH, PROP_QP_I, PROP_QP_P, PROP_GOP_SIZE, @@ -162,21 +160,6 @@ gst_qsv_vp9_enc_class_init (GstQsvVP9EncClass * klass, gpointer data) object_class->set_property = gst_qsv_vp9_enc_set_property; object_class->get_property = gst_qsv_vp9_enc_get_property; -#ifdef G_OS_WIN32 - g_object_class_install_property (object_class, PROP_ADAPTER_LUID, - g_param_spec_int64 ("adapter-luid", "Adapter LUID", - "DXGI Adapter LUID (Locally Unique Identifier) of created device", - G_MININT64, G_MAXINT64, qsvenc_class->adapter_luid, - (GParamFlags) (GST_PARAM_CONDITIONALLY_AVAILABLE | G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS))); -#else - g_object_class_install_property (object_class, PROP_DEVICE_PATH, - g_param_spec_string ("device-path", "Device Path", - "DRM device path", cdata->display_path, - (GParamFlags) (GST_PARAM_CONDITIONALLY_AVAILABLE | - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS))); -#endif - g_object_class_install_property (object_class, PROP_QP_I, g_param_spec_uint ("qp-i", "QP I", "Constant quantizer for I frames (0: default)", @@ -363,15 +346,8 @@ gst_qsv_vp9_enc_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) { GstQsvVP9Enc *self = GST_QSV_VP9_ENC (object); - GstQsvEncoderClass *klass = GST_QSV_ENCODER_GET_CLASS (self); switch (prop_id) { - case PROP_ADAPTER_LUID: - g_value_set_int64 (value, klass->adapter_luid); - break; - case PROP_DEVICE_PATH: - g_value_set_string (value, klass->display_path); - break; case PROP_QP_I: g_value_set_uint (value, self->qp_i); break;