diff --git a/gst-libs/gst/vaapi/gstvaapiencoder.c b/gst-libs/gst/vaapi/gstvaapiencoder.c index 9a881560c6..bd56b8af21 100644 --- a/gst-libs/gst/vaapi/gstvaapiencoder.c +++ b/gst-libs/gst/vaapi/gstvaapiencoder.c @@ -1803,7 +1803,9 @@ gst_vaapi_encoder_class_init (GstVaapiEncoderClass * klass) g_param_spec_uint ("bitrate", "Bitrate (kbps)", "The desired bitrate expressed in kbps (0: auto-calculate)", - 0, 2000 * 1024, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 0, 2000 * 1024, 0, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoder:target-percentage: @@ -1814,7 +1816,9 @@ gst_vaapi_encoder_class_init (GstVaapiEncoderClass * klass) g_param_spec_uint ("target-percentage", "Target Percentage", "The desired target percentage of bitrate for variable rate " - "controls.", 1, 100, 70, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + "controls.", 1, 100, 70, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoder:keyframe-period: @@ -1825,7 +1829,9 @@ gst_vaapi_encoder_class_init (GstVaapiEncoderClass * klass) g_param_spec_uint ("keyframe-period", "Keyframe Period", "Maximal distance between two keyframes (0: auto-calculate)", 0, - G_MAXUINT32, 30, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_MAXUINT32, 30, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoder:quality-level: @@ -1837,7 +1843,8 @@ gst_vaapi_encoder_class_init (GstVaapiEncoderClass * klass) "Quality Level", "Encoding Quality Level " "(lower value means higher-quality/slow-encode, " " higher value means lower-quality/fast-encode)", - 1, 7, 4, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 1, 7, 4, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVapiEncoder:roi-default-delta-qp @@ -1849,7 +1856,9 @@ gst_vaapi_encoder_class_init (GstVaapiEncoderClass * klass) "The default delta-qp to apply to each Region of Interest" "(lower value means higher-quality, " "higher value means lower-quality)", - -10, 10, -10, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + -10, 10, -10, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoder: trellis: @@ -1862,7 +1871,8 @@ gst_vaapi_encoder_class_init (GstVaapiEncoderClass * klass) g_param_spec_boolean ("trellis", "Trellis Quantization", "The Trellis Quantization Method of Encoder", - FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); g_object_class_install_properties (object_class, ENCODER_N_PROPERTIES, properties); diff --git a/gst-libs/gst/vaapi/gstvaapiencoder.h b/gst-libs/gst/vaapi/gstvaapiencoder.h index 69eb1c9527..98c6bc1ad6 100644 --- a/gst-libs/gst/vaapi/gstvaapiencoder.h +++ b/gst-libs/gst/vaapi/gstvaapiencoder.h @@ -41,6 +41,11 @@ typedef struct _GstVaapiEncoder GstVaapiEncoder; GType gst_vaapi_encoder_get_type (void) G_GNUC_CONST; +/* This user defined flag is added when the internal encoder + class wants to expose its property gparam spec to the according + encode class. */ +#define G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE (1 << 29) + /** * GstVaapiEncoderStatus: * @GST_VAAPI_ENCODER_STATUS_SUCCESS: Success. diff --git a/gst-libs/gst/vaapi/gstvaapiencoder_h264.c b/gst-libs/gst/vaapi/gstvaapiencoder_h264.c index dd6a3a01a5..22ac7d239e 100644 --- a/gst-libs/gst/vaapi/gstvaapiencoder_h264.c +++ b/gst-libs/gst/vaapi/gstvaapiencoder_h264.c @@ -3836,7 +3836,8 @@ gst_vaapi_encoder_h264_class_init (GstVaapiEncoderH264Class * klass) "Rate Control", "Rate control mode", g_class_data.rate_control_get_type (), g_class_data.default_rate_control, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:tune: @@ -3849,7 +3850,8 @@ gst_vaapi_encoder_h264_class_init (GstVaapiEncoderH264Class * klass) "Encoder tuning option", g_class_data.encoder_tune_get_type (), g_class_data.default_encoder_tune, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:max-bframes: @@ -3859,7 +3861,8 @@ gst_vaapi_encoder_h264_class_init (GstVaapiEncoderH264Class * klass) properties[ENCODER_H264_PROP_MAX_BFRAMES] = g_param_spec_uint ("max-bframes", "Max B-Frames", "Number of B-frames between I and P", 0, 10, 0, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:refs: @@ -3870,7 +3873,8 @@ gst_vaapi_encoder_h264_class_init (GstVaapiEncoderH264Class * klass) properties[ENCODER_H264_PROP_NUM_REF_FRAMES] = g_param_spec_uint ("refs", "Number of Reference Frames", "Number of reference frames", 1, 8, 1, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:init-qp: @@ -3880,7 +3884,8 @@ gst_vaapi_encoder_h264_class_init (GstVaapiEncoderH264Class * klass) properties[ENCODER_H264_PROP_INIT_QP] = g_param_spec_uint ("init-qp", "Initial QP", "Initial quantizer value", 0, 51, 26, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:min-qp: @@ -3890,7 +3895,8 @@ gst_vaapi_encoder_h264_class_init (GstVaapiEncoderH264Class * klass) properties[ENCODER_H264_PROP_MIN_QP] = g_param_spec_uint ("min-qp", "Minimum QP", "Minimum quantizer value", 0, 51, 1, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:max-qp: @@ -3902,7 +3908,8 @@ gst_vaapi_encoder_h264_class_init (GstVaapiEncoderH264Class * klass) properties[ENCODER_H264_PROP_MAX_QP] = g_param_spec_uint ("max-qp", "Maximum QP", "Maximum quantizer value", 0, 51, 51, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:qp-ip: @@ -3914,7 +3921,9 @@ gst_vaapi_encoder_h264_class_init (GstVaapiEncoderH264Class * klass) g_param_spec_int ("qp-ip", "Difference of QP between I and P frame", "Difference of QP between I and P frame (available only on CQP)", - -51, 51, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + -51, 51, 0, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:qp-ib: @@ -3926,7 +3935,9 @@ gst_vaapi_encoder_h264_class_init (GstVaapiEncoderH264Class * klass) g_param_spec_int ("qp-ib", "Difference of QP between I and B frame", "Difference of QP between I and B frame (available only on CQP)", - -51, 51, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + -51, 51, 0, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:num-slices: @@ -3937,7 +3948,9 @@ gst_vaapi_encoder_h264_class_init (GstVaapiEncoderH264Class * klass) g_param_spec_uint ("num-slices", "Number of Slices", "Number of slices per frame", - 1, 200, 1, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 1, 200, 1, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:cabac: @@ -3950,7 +3963,8 @@ gst_vaapi_encoder_h264_class_init (GstVaapiEncoderH264Class * klass) g_param_spec_boolean ("cabac", "Enable CABAC", "Enable CABAC entropy coding mode", - FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:dct8x8: @@ -3963,7 +3977,8 @@ gst_vaapi_encoder_h264_class_init (GstVaapiEncoderH264Class * klass) g_param_spec_boolean ("dct8x8", "Enable 8x8 DCT", "Enable adaptive use of 8x8 transforms in I-frames", - FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:mbbrc: @@ -3976,7 +3991,8 @@ gst_vaapi_encoder_h264_class_init (GstVaapiEncoderH264Class * klass) "Macroblock level Bitrate Control", "Macroblock level Bitrate Control", GST_VAAPI_TYPE_ENCODER_MBBRC, GST_VAAPI_ENCODER_MBBRC_AUTO, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:temporal-levels: @@ -3988,7 +4004,8 @@ gst_vaapi_encoder_h264_class_init (GstVaapiEncoderH264Class * klass) "temporal levels", "Number of temporal levels in the encoded stream ", MIN_TEMPORAL_LEVELS, MAX_TEMPORAL_LEVELS, MIN_TEMPORAL_LEVELS, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:prediction-type: @@ -4001,7 +4018,8 @@ gst_vaapi_encoder_h264_class_init (GstVaapiEncoderH264Class * klass) "Reference Picture Selection Modes", gst_vaapi_encoder_h264_prediction_type (), GST_VAAPI_ENCODER_H264_PREDICTION_DEFAULT, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:cpb-length: @@ -4011,7 +4029,9 @@ gst_vaapi_encoder_h264_class_init (GstVaapiEncoderH264Class * klass) properties[ENCODER_H264_PROP_CPB_LENGTH] = g_param_spec_uint ("cpb-length", "CPB Length", "Length of the CPB buffer in milliseconds", - 1, 10000, DEFAULT_CPB_LENGTH, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 1, 10000, DEFAULT_CPB_LENGTH, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:num-views: @@ -4022,7 +4042,9 @@ gst_vaapi_encoder_h264_class_init (GstVaapiEncoderH264Class * klass) g_param_spec_uint ("num-views", "Number of Views", "Number of Views for MVC encoding", - 1, MAX_NUM_VIEWS, 1, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 1, MAX_NUM_VIEWS, 1, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:view-ids: @@ -4035,7 +4057,8 @@ gst_vaapi_encoder_h264_class_init (GstVaapiEncoderH264Class * klass) g_param_spec_uint ("view-id-value", "View id value", "view id values used for mvc encoding", 0, MAX_VIEW_ID, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS), - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:aud: @@ -4057,9 +4080,12 @@ gst_vaapi_encoder_h264_class_init (GstVaapiEncoderH264Class * klass) properties[ENCODER_H264_PROP_COMPLIANCE_MODE] = g_param_spec_enum ("compliance-mode", "Spec Compliance Mode", - "Tune Encode quality/performance by relaxing specification compliance restrictions", + "Tune Encode quality/performance by relaxing specification" + " compliance restrictions", gst_vaapi_encoder_h264_compliance_mode_type (), - GST_VAAPI_ENCODER_H264_COMPLIANCE_MODE_STRICT, G_PARAM_READWRITE); + GST_VAAPI_ENCODER_H264_COMPLIANCE_MODE_STRICT, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:quality_factor: @@ -4071,7 +4097,9 @@ gst_vaapi_encoder_h264_class_init (GstVaapiEncoderH264Class * klass) "Quality factor for ICQ/QVBR", "quality factor for ICQ/QVBR bitrate control mode" "(low value means higher-quality, higher value means lower-quality)", - 1, 51, 26, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 1, 51, 26, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); g_object_class_install_properties (object_class, ENCODER_H264_N_PROPERTIES, properties); diff --git a/gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c b/gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c index dab9d9dbc4..dc7b06869b 100644 --- a/gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c +++ b/gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c @@ -4342,7 +4342,8 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) g_param_spec_enum ("rate-control", "Rate Control", "Rate control mode", fei_encoder_class_data.rate_control_get_type (), fei_encoder_class_data.default_rate_control, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264Fei:tune: @@ -4355,7 +4356,8 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) "Encoder tuning option", fei_encoder_class_data.encoder_tune_get_type (), fei_encoder_class_data.default_encoder_tune, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264Fei:max-bframes: @@ -4365,7 +4367,8 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) properties[ENCODER_H264_FEI_PROP_MAX_BFRAMES] = g_param_spec_uint ("max-bframes", "Max B-Frames", "Number of B-frames between I and P", 0, 10, 1, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264Fei:init-qp: @@ -4375,7 +4378,8 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) properties[ENCODER_H264_FEI_PROP_INIT_QP] = g_param_spec_uint ("init-qp", "Initial QP", "Initial quantizer value", 0, 51, 26, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264Fei:min-qp: @@ -4385,7 +4389,8 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) properties[ENCODER_H264_FEI_PROP_MIN_QP] = g_param_spec_uint ("min-qp", "Minimum QP", "Minimum quantizer value", 0, 51, 1, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264Fei:max-qp: @@ -4397,7 +4402,8 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) properties[ENCODER_H264_FEI_PROP_MAX_QP] = g_param_spec_uint ("max-qp", "Maximum QP", "Maximum quantizer value", 0, 51, 51, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264Fei:num-slices: @@ -4408,7 +4414,9 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) g_param_spec_uint ("num-slices", "Number of Slices", "Number of slices per frame", - 1, 200, 1, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 1, 200, 1, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264Fei:cabac: @@ -4421,7 +4429,8 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) g_param_spec_boolean ("cabac", "Enable CABAC", "Enable CABAC entropy coding mode", - TRUE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + TRUE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264Fei:dct8x8: @@ -4434,7 +4443,8 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) g_param_spec_boolean ("dct8x8", "Enable 8x8 DCT", "Enable adaptive use of 8x8 transforms in I-frames", - TRUE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + TRUE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264Fei:cpb-length: @@ -4444,7 +4454,9 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) properties[ENCODER_H264_FEI_PROP_CPB_LENGTH] = g_param_spec_uint ("cpb-length", "CPB Length", "Length of the CPB buffer in milliseconds", - 1, 10000, DEFAULT_CPB_LENGTH, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 1, 10000, DEFAULT_CPB_LENGTH, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264Fei:num-views: @@ -4455,7 +4467,9 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) g_param_spec_uint ("num-views", "Number of Views", "Number of Views for MVC encoding", - 1, MAX_NUM_VIEWS, 1, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 1, MAX_NUM_VIEWS, 1, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264Fei:view-ids: * @@ -4467,7 +4481,8 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) g_param_spec_uint ("view-id-value", "View id value", "view id values used for mvc encoding", 0, MAX_VIEW_ID, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS), - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264: disable-fei: @@ -4482,7 +4497,8 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) g_param_spec_boolean ("disable-fei", "Disable FEI Mode Encode", "Disable Flexible Encoding Infrasturcture", FALSE, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** @@ -4498,7 +4514,8 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) g_param_spec_boolean ("stats-out", "stats out", "Enable stats out for fei", - TRUE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + TRUE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:num_mv_predictors_l0: @@ -4510,7 +4527,8 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) "Num mv predict l0", "Indicate how many predictors should be used for l0," "only valid if MVPredictor input enabled", - 0, 3, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 0, 3, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:num_mv_predictors_l1: * Indicate how many mv predictors should be used for l1 frames. @@ -4522,7 +4540,8 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) "Num mv predict l1", "Indicate how many predictors should be used for l1," "only valid if MVPredictor input enabled", - 0, 3, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 0, 3, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:search-window: * Use predefined Search Window @@ -4533,7 +4552,8 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) "Specify one of the predefined search path", GST_VAAPI_TYPE_FEI_H264_SEARCH_WINDOW, GST_VAAPI_FEI_H264_SEARCH_WINDOW_DEFAULT, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:len-sp: @@ -4543,7 +4563,9 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) g_param_spec_uint ("len-sp", "length of search path", "This value defines number of search units in search path", - 1, 63, 32, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 1, 63, 32, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:search-path: @@ -4556,7 +4578,8 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) "Specify search path", GST_VAAPI_TYPE_FEI_H264_SEARCH_PATH, GST_VAAPI_FEI_H264_SEARCH_PATH_DEFAULT, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:ref-width: @@ -4566,7 +4589,9 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) g_param_spec_uint ("ref-width", "ref width", "Width of search region in pixel, must be multiple of 4", - 4, 64, 32, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 4, 64, 32, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:ref-height: @@ -4576,7 +4601,9 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) g_param_spec_uint ("ref-height", "ref height", "Height of search region in pixel, must be multiple of 4", - 4, 32, 32, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 4, 32, 32, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:submb-mask: * Defines the bit-mask for disabling sub-partition @@ -4588,7 +4615,8 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) "defines the bit-mask for disabling sub mb partition", GST_VAAPI_TYPE_FEI_H264_SUB_MB_PART_MASK, GST_VAAPI_FEI_H264_SUB_MB_PART_MASK_DEFAULT, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:subpel-mode: @@ -4603,7 +4631,8 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) "Sub pixel precision for motion estimation", GST_VAAPI_TYPE_FEI_H264_SUB_PEL_MODE, GST_VAAPI_FEI_H264_SUB_PEL_MODE_DEFAULT, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:intrapart-mask: * Specifies which Luma Intra partition is enabled/disabled @@ -4616,7 +4645,8 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) "intra mode decision", GST_VAAPI_TYPE_FEI_H264_INTRA_PART_MASK, GST_VAAPI_FEI_H264_INTRA_PART_MASK_DEFAULT, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:intra-sad: @@ -4629,7 +4659,8 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) "Specifies distortion measure adjustments used" "in the motion search SAD comparison for intra MB", GST_VAAPI_TYPE_FEI_H264_SAD_MODE, GST_VAAPI_FEI_H264_SAD_MODE_DEFAULT, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:inter-sad: @@ -4642,7 +4673,8 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) "Specifies distortion measure adjustments used" "in the motion search SAD comparison for inter MB", GST_VAAPI_TYPE_FEI_H264_SAD_MODE, GST_VAAPI_FEI_H264_SAD_MODE_DEFAULT, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:adaptive-search: @@ -4652,7 +4684,8 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) g_param_spec_boolean ("adaptive-search", "adaptive-search", "Enable adaptive search", - FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:multi-predL0: * When set to 1, neighbor MV will be used as predictor for list L0, @@ -4663,7 +4696,8 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) "multi predL0", "Enable multi prediction for ref L0 list, when set neighbor MV will be used" "as predictor, no neighbor MV will be used otherwise", - FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264:multi-predL1: @@ -4675,7 +4709,8 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) "multi predL1", "Enable multi prediction for ref L1 list, when set neighbor MV will be used" "as predictor, no neighbor MV will be used otherwise", - FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH264Fei: fei-mode: @@ -4694,7 +4729,8 @@ gst_vaapi_encoder_h264_fei_class_init (GstVaapiEncoderH264FeiClass * klass) "FEI Encoding Mode", "Functional mode of FEI Encoding", GST_VAAPI_TYPE_FEI_MODE, GST_VAAPI_FEI_MODE_DEFAULT, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); g_object_class_install_properties (object_class, ENCODER_H264_FEI_N_PROPERTIES, properties); diff --git a/gst-libs/gst/vaapi/gstvaapiencoder_h265.c b/gst-libs/gst/vaapi/gstvaapiencoder_h265.c index 1d99f8ece3..f17f2b8833 100644 --- a/gst-libs/gst/vaapi/gstvaapiencoder_h265.c +++ b/gst-libs/gst/vaapi/gstvaapiencoder_h265.c @@ -2894,7 +2894,8 @@ gst_vaapi_encoder_h265_class_init (GstVaapiEncoderH265Class * klass) "Rate Control", "Rate control mode", g_class_data.rate_control_get_type (), g_class_data.default_rate_control, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH265:tune: @@ -2907,7 +2908,8 @@ gst_vaapi_encoder_h265_class_init (GstVaapiEncoderH265Class * klass) "Encoder tuning option", g_class_data.encoder_tune_get_type (), g_class_data.default_encoder_tune, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH265:max-bframes: @@ -2917,7 +2919,8 @@ gst_vaapi_encoder_h265_class_init (GstVaapiEncoderH265Class * klass) properties[ENCODER_H265_PROP_MAX_BFRAMES] = g_param_spec_uint ("max-bframes", "Max B-Frames", "Number of B-frames between I and P", 0, 10, 0, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH265:refs: @@ -2928,7 +2931,8 @@ gst_vaapi_encoder_h265_class_init (GstVaapiEncoderH265Class * klass) properties[ENCODER_H265_PROP_NUM_REF_FRAMES] = g_param_spec_uint ("refs", "Number of Reference Frames", "Number of reference frames", 1, 3, 1, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH265:init-qp: @@ -2938,7 +2942,8 @@ gst_vaapi_encoder_h265_class_init (GstVaapiEncoderH265Class * klass) properties[ENCODER_H265_PROP_INIT_QP] = g_param_spec_uint ("init-qp", "Initial QP", "Initial quantizer value", 0, 51, 26, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH265:min-qp: @@ -2948,7 +2953,8 @@ gst_vaapi_encoder_h265_class_init (GstVaapiEncoderH265Class * klass) properties[ENCODER_H265_PROP_MIN_QP] = g_param_spec_uint ("min-qp", "Minimum QP", "Minimum quantizer value", 0, 51, 1, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH265:max-qp: @@ -2960,7 +2966,8 @@ gst_vaapi_encoder_h265_class_init (GstVaapiEncoderH265Class * klass) properties[ENCODER_H265_PROP_MAX_QP] = g_param_spec_uint ("max-qp", "Maximum QP", "Maximum quantizer value", 0, 51, 51, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH265:qp-ip: @@ -2972,7 +2979,9 @@ gst_vaapi_encoder_h265_class_init (GstVaapiEncoderH265Class * klass) g_param_spec_int ("qp-ip", "Difference of QP between I and P frame", "Difference of QP between I and P frame (available only on CQP)", - -51, 51, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + -51, 51, 0, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH265:qp-ib: @@ -2984,7 +2993,9 @@ gst_vaapi_encoder_h265_class_init (GstVaapiEncoderH265Class * klass) g_param_spec_int ("qp-ib", "Difference of QP between I and B frame", "Difference of QP between I and B frame (available only on CQP)", - -51, 51, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + -51, 51, 0, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /* FIXME: there seems to be issues with multi-slice encoding */ /** @@ -2996,7 +3007,9 @@ gst_vaapi_encoder_h265_class_init (GstVaapiEncoderH265Class * klass) g_param_spec_uint ("num-slices", "Number of Slices", "Number of slices per frame", - 1, 200, 1, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 1, 200, 1, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH265:cpb-length: @@ -3006,7 +3019,9 @@ gst_vaapi_encoder_h265_class_init (GstVaapiEncoderH265Class * klass) properties[ENCODER_H265_PROP_CPB_LENGTH] = g_param_spec_uint ("cpb-length", "CPB Length", "Length of the CPB buffer in milliseconds", - 1, 10000, DEFAULT_CPB_LENGTH, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 1, 10000, DEFAULT_CPB_LENGTH, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH265:mbbrc: @@ -3019,7 +3034,8 @@ gst_vaapi_encoder_h265_class_init (GstVaapiEncoderH265Class * klass) "Macroblock level Bitrate Control", "Macroblock level Bitrate Control", GST_VAAPI_TYPE_ENCODER_MBBRC, GST_VAAPI_ENCODER_MBBRC_AUTO, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderH265:low_delay_b: @@ -3031,7 +3047,8 @@ gst_vaapi_encoder_h265_class_init (GstVaapiEncoderH265Class * klass) "Enable low delay b", "Transforms P frames into predictive B frames." " Enable it when P frames are not supported.", - FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); g_object_class_install_properties (object_class, ENCODER_H265_N_PROPERTIES, properties); diff --git a/gst-libs/gst/vaapi/gstvaapiencoder_jpeg.c b/gst-libs/gst/vaapi/gstvaapiencoder_jpeg.c index 674164bf76..2848370c81 100644 --- a/gst-libs/gst/vaapi/gstvaapiencoder_jpeg.c +++ b/gst-libs/gst/vaapi/gstvaapiencoder_jpeg.c @@ -871,7 +871,8 @@ gst_vaapi_encoder_jpeg_class_init (GstVaapiEncoderJpegClass * klass) "Rate Control", "Rate control mode", g_class_data.rate_control_get_type (), g_class_data.default_rate_control, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); properties[ENCODER_JPEG_PROP_TUNE] = g_param_spec_enum ("tune", @@ -879,12 +880,15 @@ gst_vaapi_encoder_jpeg_class_init (GstVaapiEncoderJpegClass * klass) "Encoder tuning option", g_class_data.encoder_tune_get_type (), g_class_data.default_encoder_tune, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); properties[ENCODER_JPEG_PROP_QUALITY] = g_param_spec_uint ("quality", "Quality factor", - "Quality factor", 0, 100, 50, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + "Quality factor", 0, 100, 50, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); g_object_class_install_properties (object_class, ENCODER_JPEG_N_PROPERTIES, properties); diff --git a/gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c b/gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c index 3a354b00ba..44c0baca7a 100644 --- a/gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c +++ b/gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c @@ -910,7 +910,8 @@ gst_vaapi_encoder_mpeg2_class_init (GstVaapiEncoderMpeg2Class * klass) "Rate Control", "Rate control mode", g_class_data.rate_control_get_type (), g_class_data.default_rate_control, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderMpeg2:tune: @@ -923,18 +924,21 @@ gst_vaapi_encoder_mpeg2_class_init (GstVaapiEncoderMpeg2Class * klass) "Encoder tuning option", g_class_data.encoder_tune_get_type (), g_class_data.default_encoder_tune, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); properties[ENCODER_MPEG2_PROP_QUANTIZER] = g_param_spec_uint ("quantizer", "Constant Quantizer", "Constant quantizer (if rate-control mode is CQP)", - 2, 62, 8, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 2, 62, 8, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); properties[ENCODER_MPEG2_PROP_MAX_BFRAMES] = g_param_spec_uint ("max-bframes", "Max B-Frames", "Number of B-frames between I and P", 0, 16, 0, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); g_object_class_install_properties (object_class, ENCODER_MPEG2_N_PROPERTIES, properties); diff --git a/gst-libs/gst/vaapi/gstvaapiencoder_vp8.c b/gst-libs/gst/vaapi/gstvaapiencoder_vp8.c index 17b52ef015..2af6024d8d 100644 --- a/gst-libs/gst/vaapi/gstvaapiencoder_vp8.c +++ b/gst-libs/gst/vaapi/gstvaapiencoder_vp8.c @@ -667,23 +667,29 @@ gst_vaapi_encoder_vp8_class_init (GstVaapiEncoderVP8Class * klass) "Rate Control", "Rate control mode", g_class_data.rate_control_get_type (), g_class_data.default_rate_control, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); properties[ENCODER_VP8_PROP_TUNE] = g_param_spec_enum ("tune", "Encoder Tuning", "Encoder tuning option", g_class_data.encoder_tune_get_type (), g_class_data.default_encoder_tune, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); properties[ENCODER_VP8_PROP_LOOP_FILTER_LEVEL] = g_param_spec_uint ("loop-filter-level", "Loop Filter Level", "Controls the deblocking filter strength", 0, 63, - DEFAULT_LOOP_FILTER_LEVEL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + DEFAULT_LOOP_FILTER_LEVEL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); properties[ENCODER_VP8_PROP_SHARPNESS_LEVEL] = g_param_spec_uint ("sharpness-level", "Sharpness Level", "Controls the deblocking filter sensitivity", 0, 7, - DEFAULT_SHARPNESS_LEVEL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + DEFAULT_SHARPNESS_LEVEL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); properties[ENCODER_VP8_PROP_YAC_Q_INDEX] = g_param_spec_uint ("yac-qi", @@ -691,7 +697,9 @@ gst_vaapi_encoder_vp8_class_init (GstVaapiEncoderVP8Class * klass) "Quantization Table index for Luma AC Coefficients," " (in default case, yac_qi=4 for key frames and yac_qi=40" " for P frames)", - 0, 127, DEFAULT_YAC_QI, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 0, 127, DEFAULT_YAC_QI, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); g_object_class_install_properties (object_class, ENCODER_VP8_N_PROPERTIES, properties); diff --git a/gst-libs/gst/vaapi/gstvaapiencoder_vp9.c b/gst-libs/gst/vaapi/gstvaapiencoder_vp9.c index 16be27804e..663978670f 100644 --- a/gst-libs/gst/vaapi/gstvaapiencoder_vp9.c +++ b/gst-libs/gst/vaapi/gstvaapiencoder_vp9.c @@ -427,8 +427,8 @@ update_ref_list (GstVaapiEncoderVP9 * encoder, GstVaapiEncPicture * picture, gst_vaapi_surface_proxy_unref (ref); break; case GST_VAAPI_ENCODER_VP9_REF_PIC_MODE_1: - gst_vaapi_surface_proxy_replace (&encoder-> - ref_list[encoder->ref_list_idx], ref); + gst_vaapi_surface_proxy_replace (&encoder->ref_list[encoder-> + ref_list_idx], ref); gst_vaapi_surface_proxy_unref (ref); encoder->ref_list_idx = (encoder->ref_list_idx + 1) % GST_VP9_REF_FRAMES; break; @@ -709,7 +709,8 @@ gst_vaapi_encoder_vp9_class_init (GstVaapiEncoderVP9Class * klass) "Rate Control", "Rate control mode", g_class_data.rate_control_get_type (), g_class_data.default_rate_control, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); properties[ENCODER_VP9_PROP_TUNE] = g_param_spec_enum ("tune", @@ -717,27 +718,32 @@ gst_vaapi_encoder_vp9_class_init (GstVaapiEncoderVP9Class * klass) "Encoder tuning option", g_class_data.encoder_tune_get_type (), g_class_data.default_encoder_tune, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); properties[ENCODER_VP9_PROP_LOOP_FILTER_LEVEL] = g_param_spec_uint ("loop-filter-level", "Loop Filter Level", "Controls the deblocking filter strength", 0, 63, DEFAULT_LOOP_FILTER_LEVEL, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); properties[ENCODER_VP9_PROP_SHARPNESS_LEVEL] = g_param_spec_uint ("sharpness-level", "Sharpness Level", "Controls the deblocking filter sensitivity", 0, 7, DEFAULT_SHARPNESS_LEVEL, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); properties[ENCODER_VP9_PROP_YAC_Q_INDEX] = g_param_spec_uint ("yac-qi", "Luma AC Quant Table index", "Quantization Table index for Luma AC Coefficients", - 0, 255, DEFAULT_YAC_QINDEX, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 0, 255, DEFAULT_YAC_QINDEX, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); properties[ENCODER_VP9_PROP_REF_PIC_MODE] = g_param_spec_enum ("ref-pic-mode", @@ -745,7 +751,8 @@ gst_vaapi_encoder_vp9_class_init (GstVaapiEncoderVP9Class * klass) "Reference Picture Selection Modes", gst_vaapi_encoder_vp9_ref_pic_mode_type (), GST_VAAPI_ENCODER_VP9_REF_PIC_MODE_0, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiEncoderVP9:cpb-length: @@ -757,7 +764,9 @@ gst_vaapi_encoder_vp9_class_init (GstVaapiEncoderVP9Class * klass) properties[ENCODER_VP9_PROP_CPB_LENGTH] = g_param_spec_uint ("cpb-length", "CPB Length", "Length of the CPB_buffer/window_size in milliseconds", - 1, 10000, DEFAULT_CPB_LENGTH, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 1, 10000, DEFAULT_CPB_LENGTH, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); g_object_class_install_properties (object_class, ENCODER_VP9_N_PROPERTIES, properties); diff --git a/gst-libs/gst/vaapi/gstvaapifeienc_h264.c b/gst-libs/gst/vaapi/gstvaapifeienc_h264.c index a15a192c84..0816bf96c2 100644 --- a/gst-libs/gst/vaapi/gstvaapifeienc_h264.c +++ b/gst-libs/gst/vaapi/gstvaapifeienc_h264.c @@ -2126,7 +2126,8 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) "Rate Control", "Rate control mode", fei_enc_class_data.rate_control_get_type (), fei_enc_class_data.default_rate_control, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:tune: @@ -2139,7 +2140,8 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) "Encoder tuning option", fei_enc_class_data.encoder_tune_get_type (), fei_enc_class_data.default_encoder_tune, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:max-bframes: @@ -2149,7 +2151,8 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) properties[FEI_H264_ENC_PROP_MAX_BFRAMES] = g_param_spec_uint ("max-bframes", "Max B-Frames", "Number of B-frames between I and P", 0, 10, 0, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:init-qp: @@ -2159,7 +2162,8 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) properties[FEI_H264_ENC_PROP_INIT_QP] = g_param_spec_uint ("init-qp", "Initial QP", "Initial quantizer value", 1, 51, 26, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:min-qp: @@ -2169,7 +2173,8 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) properties[FEI_H264_ENC_PROP_MIN_QP] = g_param_spec_uint ("min-qp", "Minimum QP", "Minimum quantizer value", 1, 51, 1, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:num-slices: @@ -2180,7 +2185,9 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) g_param_spec_uint ("num-slices", "Number of Slices", "Number of slices per frame", - 1, 200, 1, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 1, 200, 1, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:cabac: @@ -2193,7 +2200,8 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) g_param_spec_boolean ("cabac", "Enable CABAC", "Enable CABAC entropy coding mode", - FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:dct8x8: @@ -2206,7 +2214,8 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) g_param_spec_boolean ("dct8x8", "Enable 8x8 DCT", "Enable adaptive use of 8x8 transforms in I-frames", - FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:cpb-length: @@ -2216,7 +2225,9 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) properties[FEI_H264_ENC_PROP_CPB_LENGTH] = g_param_spec_uint ("cpb-length", "CPB Length", "Length of the CPB buffer in milliseconds", - 1, 10000, DEFAULT_CPB_LENGTH, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 1, 10000, DEFAULT_CPB_LENGTH, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:num-views: @@ -2227,7 +2238,9 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) g_param_spec_uint ("num-views", "Number of Views", "Number of Views for MVC encoding", - 1, MAX_NUM_VIEWS, 1, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 1, MAX_NUM_VIEWS, 1, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:view-ids: * @@ -2239,7 +2252,8 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) g_param_spec_uint ("view-id-value", "View id value", "view id values used for mvc encoding", 0, MAX_VIEW_ID, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS), - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:num-ref: * @@ -2249,7 +2263,8 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) g_param_spec_uint ("num-ref", "Num Ref", "reference frame number", - 1, 6, 1, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 1, 6, 1, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:num_mv_predictors_l0: @@ -2260,7 +2275,8 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) g_param_spec_uint ("num-mvpredict-l0", "Num mv predict l0", "Indicate how many predictors should be used for l0", - 0, 3, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 0, 3, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:num_mv_predictors_l1: * @@ -2270,7 +2286,8 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) g_param_spec_uint ("num-mvpredict-l1", "Num mv predict l1", "Indicate how many predictors should be used for l1", - 0, 3, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 0, 3, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:search-window: */ @@ -2280,7 +2297,8 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) "Specify one of the predefined search path", GST_VAAPI_TYPE_FEI_H264_SEARCH_WINDOW, GST_VAAPI_FEI_H264_SEARCH_WINDOW_DEFAULT, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:len-sp: */ @@ -2288,7 +2306,9 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) g_param_spec_uint ("len-sp", "len sp", "This value defines number of search units in search path", - 1, 63, 32, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 1, 63, 32, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:search-path: @@ -2299,7 +2319,8 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) "Specify search path", GST_VAAPI_TYPE_FEI_H264_SEARCH_PATH, GST_VAAPI_FEI_H264_SEARCH_PATH_DEFAULT, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:ref-width: @@ -2308,7 +2329,9 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) g_param_spec_uint ("ref-width", "ref width", "Width of search region in pixel, must be multiple of 4", - 4, 64, 32, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 4, 64, 32, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:ref-height: @@ -2317,7 +2340,9 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) g_param_spec_uint ("ref-height", "ref height", "Height of search region in pixel, must be multiple of 4", - 4, 32, 32, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + 4, 32, 32, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:submb-mask: * Defines the bit-mask for disabling sub-partition @@ -2329,7 +2354,8 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) "defines the bit-mask for disabling sub mb partition", GST_VAAPI_TYPE_FEI_H264_SUB_MB_PART_MASK, GST_VAAPI_FEI_H264_SUB_MB_PART_MASK_DEFAULT, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:subpel-mode: @@ -2340,7 +2366,8 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) "Sub pixel precision for motion estimation", GST_VAAPI_TYPE_FEI_H264_SUB_PEL_MODE, GST_VAAPI_FEI_H264_SUB_PEL_MODE_DEFAULT, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:intrapart-mask: */ @@ -2350,7 +2377,8 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) "What block and sub-block partitions are disabled for intra MBs", GST_VAAPI_TYPE_FEI_H264_INTRA_PART_MASK, GST_VAAPI_FEI_H264_INTRA_PART_MASK_DEFAULT, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:intra-sad: */ @@ -2359,7 +2387,8 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) "intra sad", "Specifies distortion measure adjustments used in the motion search SAD comparison for intra MB", GST_VAAPI_TYPE_FEI_H264_SAD_MODE, GST_VAAPI_FEI_H264_SAD_MODE_DEFAULT, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:inter-sad: @@ -2369,7 +2398,8 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) "inter sad", "Specifies distortion measure adjustments used in the motion search SAD comparison for inter MB", GST_VAAPI_TYPE_FEI_H264_SAD_MODE, GST_VAAPI_FEI_H264_SAD_MODE_DEFAULT, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:adaptive-search: @@ -2378,7 +2408,8 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) g_param_spec_boolean ("adaptive-search", "adaptive-search", "Enable adaptive search", - FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:multi-predL0: @@ -2387,7 +2418,8 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) g_param_spec_boolean ("multi-predL0", "multi predL0", "Enable multi prediction for ref L0 list", - FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); /** * GstVaapiFeiEncH264:multi-predL0: @@ -2396,7 +2428,8 @@ gst_vaapi_feienc_h264_class_init (GstVaapiFeiEncH264Class * klass) g_param_spec_boolean ("multi-predL1", "multi predL1", "Enable multi prediction for ref L1 list", - FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT | + G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE); g_object_class_install_properties (object_class, FEI_H264_ENC_N_PROPERTIES, properties);