mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-26 11:41:09 +00:00
amfcodec: Update plugin cache
Adding AV1 encoder documentation (added in 1.22) with various new properties Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6084>
This commit is contained in:
parent
87ab5adf7e
commit
c5e241932c
4 changed files with 1556 additions and 2 deletions
File diff suppressed because it is too large
Load diff
|
@ -437,13 +437,29 @@ gst_amf_av1_enc_class_init (GstAmfAv1EncClass * klass, gpointer data)
|
|||
g_object_class_install_property (object_class, PROP_REF_FRAMES,
|
||||
g_param_spec_uint ("ref-frames", "Reference Frames",
|
||||
"Number of reference frames", 0, 8, DEFAULT_REF_FRAMES, param_flags));
|
||||
|
||||
if (cdata->dev_caps.pre_encode_supported) {
|
||||
/**
|
||||
* GstAmfAv1Enc:pre-encode:
|
||||
*
|
||||
* Enable pre-encode assisted rate control
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PRE_ENCODE,
|
||||
g_param_spec_boolean ("pre-encode", "Pre-encode",
|
||||
"Enable pre-encode", DEFAULT_PRE_ENCODE,
|
||||
(GParamFlags) (param_flags | GST_PARAM_CONDITIONALLY_AVAILABLE)));
|
||||
}
|
||||
|
||||
if (cdata->dev_caps.smart_access_supported) {
|
||||
/**
|
||||
* GstAmfAv1Enc:smart-access-video:
|
||||
*
|
||||
* Enable AMF SmartAccess Video feature
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_SMART_ACCESS,
|
||||
g_param_spec_boolean ("smart-access-video", "Smart Access Video",
|
||||
"Enable AMF SmartAccess Video feature for optimal distribution"
|
||||
|
@ -454,17 +470,40 @@ gst_amf_av1_enc_class_init (GstAmfAv1EncClass * klass, gpointer data)
|
|||
}
|
||||
|
||||
if (dev_caps->pre_analysis) {
|
||||
/**
|
||||
* GstAmfAv1Enc:pre-analysis:
|
||||
*
|
||||
* Enable the pre-analysis module
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PRE_ANALYSIS,
|
||||
g_param_spec_boolean ("pre-analysis", "Pre-analysis",
|
||||
"Enable pre-analysis", DEFAULT_PRE_ANALYSIS, param_flags));
|
||||
|
||||
if (pa_supported->activity_type) {
|
||||
/**
|
||||
* GstAmfAv1Enc:pa-activity-type:
|
||||
*
|
||||
* Set the type of activity analysis for pre-analysis
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_ACTIVITY_TYPE,
|
||||
g_param_spec_enum ("pa-activity-type", "Pre-analysis activity type",
|
||||
"Set the type of activity analysis for pre-analysis",
|
||||
GST_TYPE_AMF_ENC_PA_ACTIVITY_TYPE, DEFAULT_PA_ACTIVITY_TYPE,
|
||||
pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->scene_change_detection) {
|
||||
/**
|
||||
* GstAmfAv1Enc:pa-scene-change-detection:
|
||||
*
|
||||
* Enable scene change detection for pre-analysis
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_PA_SCENE_CHANGE_DETECTION,
|
||||
g_param_spec_boolean ("pa-scene-change-detection",
|
||||
|
@ -472,7 +511,15 @@ gst_amf_av1_enc_class_init (GstAmfAv1EncClass * klass, gpointer data)
|
|||
"Enable scene change detection for pre-analysis",
|
||||
DEFAULT_PA_SCENE_CHANGE_DETECTION, pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->scene_change_detection_sensitivity) {
|
||||
/**
|
||||
* GstAmfAv1Enc:pa-scene-change-detection-sensitivity:
|
||||
*
|
||||
* Pre-analysis scene change detection sensitivity
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_PA_SCENE_CHANGE_DETECTION_SENSITIVITY,
|
||||
g_param_spec_enum ("pa-scene-change-detection-sensitivity",
|
||||
|
@ -481,7 +528,15 @@ gst_amf_av1_enc_class_init (GstAmfAv1EncClass * klass, gpointer data)
|
|||
GST_TYPE_AMF_ENC_PA_SCENE_CHANGE_DETECTION_SENSITIVITY,
|
||||
DEFAULT_PA_SCENE_CHANGE_DETECTION_SENSITIVITY, pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->static_scene_detection) {
|
||||
/**
|
||||
* GstAmfAv1Enc:pa-static-scene-detection:
|
||||
*
|
||||
* Enable static scene detection for pre-analysis
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_PA_STATIC_SCENE_DETECTION,
|
||||
g_param_spec_boolean ("pa-static-scene-detection",
|
||||
|
@ -489,7 +544,15 @@ gst_amf_av1_enc_class_init (GstAmfAv1EncClass * klass, gpointer data)
|
|||
"Enable static scene detection for pre-analysis",
|
||||
DEFAULT_PA_STATIC_SCENE_DETECTION, pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->static_scene_detection_sensitivity) {
|
||||
/**
|
||||
* GstAmfAv1Enc:pa-static-scene-detection-sensitivity:
|
||||
*
|
||||
* Pre-analysis static scene detection sensitivity
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_PA_STATIC_SCENE_DETECTION_SENSITIVITY,
|
||||
g_param_spec_enum ("pa-static-scene-detection-sensitivity",
|
||||
|
@ -498,38 +561,86 @@ gst_amf_av1_enc_class_init (GstAmfAv1EncClass * klass, gpointer data)
|
|||
GST_TYPE_AMF_ENC_PA_STATIC_SCENE_DETECTION_SENSITIVITY,
|
||||
DEFAULT_PA_STATIC_SCENE_DETECTION_SENSITIVITY, pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->initial_qp) {
|
||||
/**
|
||||
* GstAmfAv1Enc:pa-initial-qp:
|
||||
*
|
||||
* Pre-analysis initial QP
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_INITIAL_QP,
|
||||
g_param_spec_uint ("pa-initial-qp", "Pre-analysis initial QP",
|
||||
"The QP value that is used immediately after a scene change", 0,
|
||||
51, DEFAULT_PA_INITIAL_QP, pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->max_qp) {
|
||||
/**
|
||||
* GstAmfAv1Enc:pa-max-qp:
|
||||
*
|
||||
* Pre-analysis max QP
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_MAX_QP,
|
||||
g_param_spec_uint ("pa-max-qp", "Pre-analysis max QP",
|
||||
"The QP threshold to allow a skip frame", 0, 51,
|
||||
DEFAULT_PA_MAX_QP, pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->caq_strength) {
|
||||
/**
|
||||
* GstAmfAv1Enc:pa-caq-strength:
|
||||
*
|
||||
* Content Adaptive Quantization strength for pre-analysis
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_CAQ_STRENGTH,
|
||||
g_param_spec_enum ("pa-caq-strength", "Pre-analysis CAQ strength",
|
||||
"Content Adaptive Quantization strength for pre-analysis",
|
||||
GST_TYPE_AMF_ENC_PA_CAQ_STRENGTH, DEFAULT_PA_CAQ_STRENGTH,
|
||||
pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->frame_sad) {
|
||||
/**
|
||||
* GstAmfAv1Enc:pa-frame-sad:
|
||||
*
|
||||
* Enable Frame SAD algorithm
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_FRAME_SAD,
|
||||
g_param_spec_boolean ("pa-frame-sad", "Pre-analysis SAD algorithm",
|
||||
"Enable Frame SAD algorithm", DEFAULT_PA_FRAME_SAD,
|
||||
pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->ltr) {
|
||||
/**
|
||||
* GstAmfAv1Enc:pa-ltr:
|
||||
*
|
||||
* Enable long term reference frame management
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_LTR,
|
||||
g_param_spec_boolean ("pa-ltr", "Pre-analysis LTR",
|
||||
"Enable long term reference frame management", DEFAULT_PA_LTR,
|
||||
pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->lookahead_buffer_depth) {
|
||||
/**
|
||||
* GstAmfAv1Enc:pa-lookahead-buffer-depth:
|
||||
*
|
||||
* Pre-analysis lookahead buffer depth
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_PA_LOOKAHEAD_BUFFER_DEPTH,
|
||||
g_param_spec_uint ("pa-lookahead-buffer-depth",
|
||||
|
@ -537,21 +648,45 @@ gst_amf_av1_enc_class_init (GstAmfAv1EncClass * klass, gpointer data)
|
|||
"Set the PA lookahead buffer size", 0, 41,
|
||||
DEFAULT_PA_LOOKAHEAD_BUFFER_DEPTH, pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->paq_mode) {
|
||||
/**
|
||||
* GstAmfAv1Enc:pa-paq-mode:
|
||||
*
|
||||
* Set the perceptual adaptive quantization mode
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_PAQ_MODE,
|
||||
g_param_spec_enum ("pa-paq-mode", "Pre-analysis PAQ mode",
|
||||
"Set the perceptual adaptive quantization mode",
|
||||
GST_TYPE_AMF_ENC_PA_PAQ_MODE, DEFAULT_PA_PAQ_MODE,
|
||||
pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->taq_mode) {
|
||||
/**
|
||||
* GstAmfAv1Enc:pa-taq-mode:
|
||||
*
|
||||
* Set the temporal adaptive quantization mode
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_TAQ_MODE,
|
||||
g_param_spec_enum ("pa-taq-mode", "Pre-analysis TAQ mode",
|
||||
"Set the temporal adaptive quantization mode",
|
||||
GST_TYPE_AMF_ENC_PA_TAQ_MODE, DEFAULT_PA_TAQ_MODE,
|
||||
pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->hmqb_mode) {
|
||||
/**
|
||||
* GstAmfAv1Enc:pa-hqmb-mode:
|
||||
*
|
||||
* Set the PA high motion quality boost mode
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_HQMB_MODE,
|
||||
g_param_spec_enum ("pa-hqmb-mode", "Pre-analysis HQMB mode",
|
||||
"Set the PA high motion quality boost mode",
|
||||
|
|
|
@ -482,32 +482,80 @@ gst_amf_h264_enc_class_init (GstAmfH264EncClass * klass, gpointer data)
|
|||
g_object_class_install_property (object_class, PROP_CABAC,
|
||||
g_param_spec_boolean ("cabac", "CABAC",
|
||||
"Enable CABAC entropy coding", TRUE, param_flags));
|
||||
|
||||
if (cdata->dev_caps.pre_encode_supported) {
|
||||
/**
|
||||
* GstAmfH264Enc:pre-encode:
|
||||
*
|
||||
* Enable pre-encode assisted rate control
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PRE_ENCODE,
|
||||
g_param_spec_boolean ("pre-encode", "Pre-encode",
|
||||
"Enable pre-encode", DEFAULT_PRE_ENCODE,
|
||||
(GParamFlags) (param_flags | GST_PARAM_CONDITIONALLY_AVAILABLE)));
|
||||
}
|
||||
|
||||
if (dev_caps->bframes) {
|
||||
/**
|
||||
* GstAmfH264Enc:max-b-frames:
|
||||
*
|
||||
* Maximum number of consecutive B pictures
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_MAX_B_FRAMES,
|
||||
g_param_spec_uint ("max-b-frames", "Maximum number of B-frames",
|
||||
"Maximum number of consecutive B Pictures. "
|
||||
"Suggestion set to 3 if b-frames is not 0", 0, 3,
|
||||
DEFAULT_MAX_B_FRAMES, param_flags));
|
||||
|
||||
/**
|
||||
* GstAmfH264Enc:b-frames:
|
||||
*
|
||||
* Number of consecutive B pictures in a GOP
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_B_FRAMES,
|
||||
g_param_spec_int ("b-frames", "B-Frames",
|
||||
"Number of consecutive B-frames in a GOP. "
|
||||
"If b-frames > max-b-frames, then b-frames set to max-b-frames "
|
||||
"(-1: USAGE default)", -1, 3, DEFAULT_B_FRAMES, param_flags));
|
||||
|
||||
/**
|
||||
* GstAmfH264Enc:b-reference:
|
||||
*
|
||||
* Enable using B-pictures as references
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_B_REFERENCE,
|
||||
g_param_spec_boolean ("b-reference", "B-Frames as reference",
|
||||
"Enables or disables using B-pictures as references",
|
||||
DEFAULT_B_REFERENCE, param_flags));
|
||||
|
||||
if (dev_caps->b_frames_delta_qp_supported) {
|
||||
/**
|
||||
* GstAmfH264Enc:b-frames-delta-qp:
|
||||
*
|
||||
* delta QP of non-reference B pictures with respect to I pictures
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_B_FRAMES_DELTA_QP,
|
||||
g_param_spec_int ("b-frames-delta-qp", "B-Frames delta QP",
|
||||
"Selects the delta QP of non-reference B pictures with respect to I pictures",
|
||||
-10, 10, DEFAULT_B_FRAMES_DELTA_QP, param_flags));
|
||||
|
||||
/**
|
||||
* GstAmfH264Enc:ref-b-frames-delta-qp:
|
||||
*
|
||||
* delta QP of reference B pictures with respect to I pictures
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_REF_B_FRAMES_DELTA_QP,
|
||||
g_param_spec_int ("ref-b-frames-delta-qp",
|
||||
"Reference B-Frames delta QP",
|
||||
|
@ -515,7 +563,15 @@ gst_amf_h264_enc_class_init (GstAmfH264EncClass * klass, gpointer data)
|
|||
-10, 10, DEFAULT_REF_B_FRAMES_DELTA_QP, param_flags));
|
||||
}
|
||||
}
|
||||
|
||||
if (cdata->dev_caps.smart_access_supported) {
|
||||
/**
|
||||
* GstAmfH264Enc:smart-access-video:
|
||||
*
|
||||
* Enable AMF SmartAccess Video feature
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_SMART_ACCESS,
|
||||
g_param_spec_boolean ("smart-access-video", "Smart Access Video",
|
||||
"Enable AMF SmartAccess Video feature for optimal distribution"
|
||||
|
@ -526,10 +582,25 @@ gst_amf_h264_enc_class_init (GstAmfH264EncClass * klass, gpointer data)
|
|||
}
|
||||
|
||||
if (dev_caps->pre_analysis) {
|
||||
/**
|
||||
* GstAmfH264Enc:pre-analysis:
|
||||
*
|
||||
* Enable the pre-analysis module
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PRE_ANALYSIS,
|
||||
g_param_spec_boolean ("pre-analysis", "Pre Analysis",
|
||||
"Enable pre-analysis", DEFAULT_PRE_ANALYSIS, param_flags));
|
||||
|
||||
if (cdata->dev_caps.mini_gop_supported) {
|
||||
/**
|
||||
* GstAmfH264Enc:adaptive-mini-gop:
|
||||
*
|
||||
* Enable Adaptive MiniGOP
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_ADAPT_MINI_GOP,
|
||||
g_param_spec_boolean ("adaptive-mini-gop", "Adaptive MiniGOP",
|
||||
"Enable Adaptive MiniGOP. Determines the number of B-frames to be "
|
||||
|
@ -538,13 +609,28 @@ gst_amf_h264_enc_class_init (GstAmfH264EncClass * klass, gpointer data)
|
|||
(GParamFlags) (param_flags | GST_PARAM_CONDITIONALLY_AVAILABLE)));
|
||||
}
|
||||
if (pa_supported->activity_type) {
|
||||
/**
|
||||
* GstAmfH264Enc:pa-activity-type:
|
||||
*
|
||||
* Set the type of activity analysis for pre-analysis
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_ACTIVITY_TYPE,
|
||||
g_param_spec_enum ("pa-activity-type", "Pre-analysis activity type",
|
||||
"Set the type of activity analysis for pre-analysis",
|
||||
GST_TYPE_AMF_ENC_PA_ACTIVITY_TYPE, DEFAULT_PA_ACTIVITY_TYPE,
|
||||
pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->scene_change_detection) {
|
||||
/**
|
||||
* GstAmfH264Enc:pa-scene-change-detection:
|
||||
*
|
||||
* Enable scene change detection for pre-analysis
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_PA_SCENE_CHANGE_DETECTION,
|
||||
g_param_spec_boolean ("pa-scene-change-detection",
|
||||
|
@ -552,7 +638,15 @@ gst_amf_h264_enc_class_init (GstAmfH264EncClass * klass, gpointer data)
|
|||
"Enable scene change detection for pre-analysis",
|
||||
DEFAULT_PA_SCENE_CHANGE_DETECTION, pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->scene_change_detection_sensitivity) {
|
||||
/**
|
||||
* GstAmfH264Enc:pa-scene-change-detection-sensitivity:
|
||||
*
|
||||
* Pre-analysis scene change detection sensitivity
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_PA_SCENE_CHANGE_DETECTION_SENSITIVITY,
|
||||
g_param_spec_enum ("pa-scene-change-detection-sensitivity",
|
||||
|
@ -562,6 +656,13 @@ gst_amf_h264_enc_class_init (GstAmfH264EncClass * klass, gpointer data)
|
|||
DEFAULT_PA_SCENE_CHANGE_DETECTION_SENSITIVITY, pa_param_flags));
|
||||
}
|
||||
if (pa_supported->static_scene_detection) {
|
||||
/**
|
||||
* GstAmfH264Enc:pa-static-scene-detection:
|
||||
*
|
||||
* Enable static scene detection for pre-analysis
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_PA_STATIC_SCENE_DETECTION,
|
||||
g_param_spec_boolean ("pa-static-scene-detection",
|
||||
|
@ -569,7 +670,15 @@ gst_amf_h264_enc_class_init (GstAmfH264EncClass * klass, gpointer data)
|
|||
"Enable static scene detection for pre-analysis",
|
||||
DEFAULT_PA_STATIC_SCENE_DETECTION, pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->static_scene_detection_sensitivity) {
|
||||
/**
|
||||
* GstAmfH264Enc:pa-static-scene-detection-sensitivity:
|
||||
*
|
||||
* Pre-analysis static scene detection sensitivity
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_PA_STATIC_SCENE_DETECTION_SENSITIVITY,
|
||||
g_param_spec_enum ("pa-static-scene-detection-sensitivity",
|
||||
|
@ -578,38 +687,86 @@ gst_amf_h264_enc_class_init (GstAmfH264EncClass * klass, gpointer data)
|
|||
GST_TYPE_AMF_ENC_PA_STATIC_SCENE_DETECTION_SENSITIVITY,
|
||||
DEFAULT_PA_STATIC_SCENE_DETECTION_SENSITIVITY, pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->initial_qp) {
|
||||
/**
|
||||
* GstAmfH264Enc:pa-initial-qp:
|
||||
*
|
||||
* Pre-analysis initial QP
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_INITIAL_QP,
|
||||
g_param_spec_uint ("pa-initial-qp", "Pre-analysis initial QP",
|
||||
"The QP value that is used immediately after a scene change", 0,
|
||||
51, DEFAULT_PA_INITIAL_QP, pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->max_qp) {
|
||||
/**
|
||||
* GstAmfH264Enc:pa-max-qp:
|
||||
*
|
||||
* Pre-analysis max QP
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_MAX_QP,
|
||||
g_param_spec_uint ("pa-max-qp", "Pre-analysis max QP",
|
||||
"The QP threshold to allow a skip frame", 0, 51,
|
||||
DEFAULT_PA_MAX_QP, pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->caq_strength) {
|
||||
/**
|
||||
* GstAmfH264Enc:pa-caq-strength:
|
||||
*
|
||||
* Content Adaptive Quantization strength for pre-analysis
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_CAQ_STRENGTH,
|
||||
g_param_spec_enum ("pa-caq-strength", "Pre-analysis CAQ strength",
|
||||
"Content Adaptive Quantization strength for pre-analysis",
|
||||
GST_TYPE_AMF_ENC_PA_CAQ_STRENGTH, DEFAULT_PA_CAQ_STRENGTH,
|
||||
pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->frame_sad) {
|
||||
/**
|
||||
* GstAmfH264Enc:pa-frame-sad:
|
||||
*
|
||||
* Enable Frame SAD algorithm
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_FRAME_SAD,
|
||||
g_param_spec_boolean ("pa-frame-sad", "Pre-analysis SAD algorithm",
|
||||
"Enable Frame SAD algorithm", DEFAULT_PA_FRAME_SAD,
|
||||
pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->ltr) {
|
||||
/**
|
||||
* GstAmfH264Enc:pa-ltr:
|
||||
*
|
||||
* Enable long term reference frame management
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_LTR,
|
||||
g_param_spec_boolean ("pa-ltr", "Pre-analysis LTR",
|
||||
"Enable long term reference frame management", DEFAULT_PA_LTR,
|
||||
pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->lookahead_buffer_depth) {
|
||||
/**
|
||||
* GstAmfH264Enc:pa-lookahead-buffer-depth:
|
||||
*
|
||||
* Pre-analysis lookahead buffer depth
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_PA_LOOKAHEAD_BUFFER_DEPTH,
|
||||
g_param_spec_uint ("pa-lookahead-buffer-depth",
|
||||
|
@ -617,21 +774,45 @@ gst_amf_h264_enc_class_init (GstAmfH264EncClass * klass, gpointer data)
|
|||
"Set the PA lookahead buffer size", 0, 41,
|
||||
DEFAULT_PA_LOOKAHEAD_BUFFER_DEPTH, pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->paq_mode) {
|
||||
/**
|
||||
* GstAmfH264Enc:pa-paq-mode:
|
||||
*
|
||||
* Set the perceptual adaptive quantization mode
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_PAQ_MODE,
|
||||
g_param_spec_enum ("pa-paq-mode", "Pre-analysis PAQ mode",
|
||||
"Set the perceptual adaptive quantization mode",
|
||||
GST_TYPE_AMF_ENC_PA_PAQ_MODE, DEFAULT_PA_PAQ_MODE,
|
||||
pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->taq_mode) {
|
||||
/**
|
||||
* GstAmfH264Enc:pa-taq-mode:
|
||||
*
|
||||
* Set the temporal adaptive quantization mode
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_TAQ_MODE,
|
||||
g_param_spec_enum ("pa-taq-mode", "Pre-analysis TAQ mode",
|
||||
"Set the temporal adaptive quantization mode",
|
||||
GST_TYPE_AMF_ENC_PA_TAQ_MODE, DEFAULT_PA_TAQ_MODE,
|
||||
pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->hmqb_mode) {
|
||||
/**
|
||||
* GstAmfH264Enc:pa-hqmb-mode:
|
||||
*
|
||||
* Set the PA high motion quality boost mode
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_HQMB_MODE,
|
||||
g_param_spec_enum ("pa-hqmb-mode", "Pre-analysis HQMB mode",
|
||||
"Set the PA high motion quality boost mode",
|
||||
|
|
|
@ -458,7 +458,15 @@ gst_amf_h265_enc_class_init (GstAmfH265EncClass * klass, gpointer data)
|
|||
g_object_class_install_property (object_class, PROP_AUD,
|
||||
g_param_spec_boolean ("aud", "AUD",
|
||||
"Use AU (Access Unit) delimiter", DEFAULT_AUD, param_flags));
|
||||
|
||||
if (cdata->dev_caps.pre_encode_supported) {
|
||||
/**
|
||||
* GstAmfH265Enc:pre-encode:
|
||||
*
|
||||
* Enable pre-encode assisted rate control
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PRE_ENCODE,
|
||||
g_param_spec_boolean ("pre-encode", "Pre-encode",
|
||||
"Enable pre-encode", DEFAULT_PRE_ENCODE,
|
||||
|
@ -466,6 +474,13 @@ gst_amf_h265_enc_class_init (GstAmfH265EncClass * klass, gpointer data)
|
|||
}
|
||||
|
||||
if (cdata->dev_caps.smart_access_supported) {
|
||||
/**
|
||||
* GstAmfH265Enc:smart-access-video:
|
||||
*
|
||||
* Enable AMF SmartAccess Video feature
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_SMART_ACCESS,
|
||||
g_param_spec_boolean ("smart-access-video", "Smart Access Video",
|
||||
"Enable AMF SmartAccess Video feature for optimal distribution"
|
||||
|
@ -476,17 +491,40 @@ gst_amf_h265_enc_class_init (GstAmfH265EncClass * klass, gpointer data)
|
|||
}
|
||||
|
||||
if (dev_caps->pre_analysis) {
|
||||
/**
|
||||
* GstAmfH265Enc:pre-analysis:
|
||||
*
|
||||
* Enable the pre-analysis module
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PRE_ANALYSIS,
|
||||
g_param_spec_boolean ("pre-analysis", "Pre-analysis",
|
||||
"Enable pre-analysis", DEFAULT_PRE_ANALYSIS, param_flags));
|
||||
|
||||
if (pa_supported->activity_type) {
|
||||
/**
|
||||
* GstAmfH265Enc:pa-activity-type:
|
||||
*
|
||||
* Set the type of activity analysis for pre-analysis
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_ACTIVITY_TYPE,
|
||||
g_param_spec_enum ("pa-activity-type", "Pre-analysis activity type",
|
||||
"Set the type of activity analysis for pre-analysis",
|
||||
GST_TYPE_AMF_ENC_PA_ACTIVITY_TYPE, DEFAULT_PA_ACTIVITY_TYPE,
|
||||
pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->scene_change_detection) {
|
||||
/**
|
||||
* GstAmfH265Enc:pa-scene-change-detection:
|
||||
*
|
||||
* Enable scene change detection for pre-analysis
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_PA_SCENE_CHANGE_DETECTION,
|
||||
g_param_spec_boolean ("pa-scene-change-detection",
|
||||
|
@ -494,7 +532,15 @@ gst_amf_h265_enc_class_init (GstAmfH265EncClass * klass, gpointer data)
|
|||
"Enable scene change detection for pre-analysis",
|
||||
DEFAULT_PA_SCENE_CHANGE_DETECTION, pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->scene_change_detection_sensitivity) {
|
||||
/**
|
||||
* GstAmfH265Enc:pa-scene-change-detection-sensitivity:
|
||||
*
|
||||
* Pre-analysis scene change detection sensitivity
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_PA_SCENE_CHANGE_DETECTION_SENSITIVITY,
|
||||
g_param_spec_enum ("pa-scene-change-detection-sensitivity",
|
||||
|
@ -503,7 +549,15 @@ gst_amf_h265_enc_class_init (GstAmfH265EncClass * klass, gpointer data)
|
|||
GST_TYPE_AMF_ENC_PA_SCENE_CHANGE_DETECTION_SENSITIVITY,
|
||||
DEFAULT_PA_SCENE_CHANGE_DETECTION_SENSITIVITY, pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->static_scene_detection) {
|
||||
/**
|
||||
* GstAmfH265Enc:pa-static-scene-detection:
|
||||
*
|
||||
* Enable static scene detection for pre-analysis
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_PA_STATIC_SCENE_DETECTION,
|
||||
g_param_spec_boolean ("pa-static-scene-detection",
|
||||
|
@ -511,7 +565,15 @@ gst_amf_h265_enc_class_init (GstAmfH265EncClass * klass, gpointer data)
|
|||
"Enable static scene detection for pre-analysis",
|
||||
DEFAULT_PA_STATIC_SCENE_DETECTION, pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->static_scene_detection_sensitivity) {
|
||||
/**
|
||||
* GstAmfH265Enc:pa-static-scene-detection-sensitivity:
|
||||
*
|
||||
* Pre-analysis static scene detection sensitivity
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_PA_STATIC_SCENE_DETECTION_SENSITIVITY,
|
||||
g_param_spec_enum ("pa-static-scene-detection-sensitivity",
|
||||
|
@ -520,38 +582,86 @@ gst_amf_h265_enc_class_init (GstAmfH265EncClass * klass, gpointer data)
|
|||
GST_TYPE_AMF_ENC_PA_STATIC_SCENE_DETECTION_SENSITIVITY,
|
||||
DEFAULT_PA_STATIC_SCENE_DETECTION_SENSITIVITY, pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->initial_qp) {
|
||||
/**
|
||||
* GstAmfH265Enc:pa-initial-qp:
|
||||
*
|
||||
* Pre-analysis initial QP
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_INITIAL_QP,
|
||||
g_param_spec_uint ("pa-initial-qp", "Pre-analysis initial QP",
|
||||
"The QP value that is used immediately after a scene change", 0,
|
||||
51, DEFAULT_PA_INITIAL_QP, pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->max_qp) {
|
||||
/**
|
||||
* GstAmfH265Enc:pa-max-qp:
|
||||
*
|
||||
* Pre-analysis max QP
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_MAX_QP,
|
||||
g_param_spec_uint ("pa-max-qp", "Pre-analysis max QP",
|
||||
"The QP threshold to allow a skip frame", 0, 51,
|
||||
DEFAULT_PA_MAX_QP, pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->caq_strength) {
|
||||
/**
|
||||
* GstAmfH265Enc:pa-caq-strength:
|
||||
*
|
||||
* Content Adaptive Quantization strength for pre-analysis
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_CAQ_STRENGTH,
|
||||
g_param_spec_enum ("pa-caq-strength", "Pre-analysis CAQ strength",
|
||||
"Content Adaptive Quantization strength for pre-analysis",
|
||||
GST_TYPE_AMF_ENC_PA_CAQ_STRENGTH, DEFAULT_PA_CAQ_STRENGTH,
|
||||
pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->frame_sad) {
|
||||
/**
|
||||
* GstAmfH265Enc:pa-frame-sad:
|
||||
*
|
||||
* Enable Frame SAD algorithm
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_FRAME_SAD,
|
||||
g_param_spec_boolean ("pa-frame-sad", "Pre-analysis SAD algorithm",
|
||||
"Enable Frame SAD algorithm", DEFAULT_PA_FRAME_SAD,
|
||||
pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->ltr) {
|
||||
/**
|
||||
* GstAmfH265Enc:pa-ltr:
|
||||
*
|
||||
* Enable long term reference frame management
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_LTR,
|
||||
g_param_spec_boolean ("pa-ltr", "Pre-analysis LTR",
|
||||
"Enable long term reference frame management", DEFAULT_PA_LTR,
|
||||
pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->lookahead_buffer_depth) {
|
||||
/**
|
||||
* GstAmfH265Enc:pa-lookahead-buffer-depth:
|
||||
*
|
||||
* Pre-analysis lookahead buffer depth
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_PA_LOOKAHEAD_BUFFER_DEPTH,
|
||||
g_param_spec_uint ("pa-lookahead-buffer-depth",
|
||||
|
@ -559,21 +669,45 @@ gst_amf_h265_enc_class_init (GstAmfH265EncClass * klass, gpointer data)
|
|||
"Set the PA lookahead buffer size", 0, 41,
|
||||
DEFAULT_PA_LOOKAHEAD_BUFFER_DEPTH, pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->paq_mode) {
|
||||
/**
|
||||
* GstAmfH265Enc:pa-paq-mode:
|
||||
*
|
||||
* Set the perceptual adaptive quantization mode
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_PAQ_MODE,
|
||||
g_param_spec_enum ("pa-paq-mode", "Pre-analysis PAQ mode",
|
||||
"Set the perceptual adaptive quantization mode",
|
||||
GST_TYPE_AMF_ENC_PA_PAQ_MODE, DEFAULT_PA_PAQ_MODE,
|
||||
pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->taq_mode) {
|
||||
/**
|
||||
* GstAmfH265Enc:pa-taq-mode:
|
||||
*
|
||||
* Set the temporal adaptive quantization mode
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_TAQ_MODE,
|
||||
g_param_spec_enum ("pa-taq-mode", "Pre-analysis TAQ mode",
|
||||
"Set the temporal adaptive quantization mode",
|
||||
GST_TYPE_AMF_ENC_PA_TAQ_MODE, DEFAULT_PA_TAQ_MODE,
|
||||
pa_param_flags));
|
||||
}
|
||||
|
||||
if (pa_supported->hmqb_mode) {
|
||||
/**
|
||||
* GstAmfH265Enc:pa-hqmb-mode:
|
||||
*
|
||||
* Set the PA high motion quality boost mode
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
g_object_class_install_property (object_class, PROP_PA_HQMB_MODE,
|
||||
g_param_spec_enum ("pa-hqmb-mode", "Pre-analysis HQMB mode",
|
||||
"Set the PA high motion quality boost mode",
|
||||
|
|
Loading…
Reference in a new issue