diff options
author | Víctor Manuel Jáquez Leal <vjaquez@igalia.com> | 2017-06-05 20:30:07 +0200 |
---|---|---|
committer | Víctor Manuel Jáquez Leal <vjaquez@igalia.com> | 2017-06-07 11:24:38 +0200 |
commit | 846c276e26a071c4f1fccb7b0949d4de30a27fb6 (patch) | |
tree | a21536c4211fbccfc08fed2756b86ae55924fc2b /gst-libs/gst/vaapi | |
parent | acf106e1a718cc273f5684c3e76c4e9da17324eb (diff) |
libs: encoder: vp8,h264,h265,mpeg2: set misc param once
Instead of recalculating the miscellaneous buffer parameters for
every buffer, it is only done once, when the encoder is configured.
And for every buffer, the same structures are just copied.
https://bugzilla.gnome.org/show_bug.cgi?id=783449
Diffstat (limited to 'gst-libs/gst/vaapi')
-rw-r--r-- | gst-libs/gst/vaapi/gstvaapiencoder_h264.c | 10 | ||||
-rw-r--r-- | gst-libs/gst/vaapi/gstvaapiencoder_h265.c | 10 | ||||
-rw-r--r-- | gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c | 8 | ||||
-rw-r--r-- | gst-libs/gst/vaapi/gstvaapiencoder_vp8.c | 8 |
4 files changed, 16 insertions, 20 deletions
diff --git a/gst-libs/gst/vaapi/gstvaapiencoder_h264.c b/gst-libs/gst/vaapi/gstvaapiencoder_h264.c index 14bb0762..6ffbd966 100644 --- a/gst-libs/gst/vaapi/gstvaapiencoder_h264.c +++ b/gst-libs/gst/vaapi/gstvaapiencoder_h264.c @@ -2154,11 +2154,8 @@ error_create_packed_seq_hdr: } static gboolean -ensure_control_rate_params (GstVaapiEncoderH264 * encoder, - GstVaapiEncPicture * picture) +ensure_control_rate_params (GstVaapiEncoderH264 * encoder) { - GstVaapiEncoder *const base_encoder = GST_VAAPI_ENCODER_CAST (encoder); - if (GST_VAAPI_ENCODER_RATE_CONTROL (encoder) == GST_VAAPI_RATECONTROL_CQP) return TRUE; @@ -2176,7 +2173,7 @@ ensure_control_rate_params (GstVaapiEncoderH264 * encoder, fill_hrd_params (encoder, &GST_VAAPI_ENCODER_VA_HRD (encoder)); /* *INDENT-ON* */ - return gst_vaapi_encoder_ensure_param_control_rate (base_encoder, picture); + return TRUE; } /* Generates additional control parameters */ @@ -2187,7 +2184,7 @@ ensure_misc_params (GstVaapiEncoderH264 * encoder, GstVaapiEncPicture * picture) GstVaapiEncMiscParam *misc; guint num_roi; - if (!ensure_control_rate_params (encoder, picture)) + if (!gst_vaapi_encoder_ensure_param_control_rate (base_encoder, picture)) return FALSE; if (GST_VAAPI_ENCODER_RATE_CONTROL (encoder) == GST_VAAPI_RATECONTROL_CBR || @@ -2848,6 +2845,7 @@ gst_vaapi_encoder_h264_reconfigure (GstVaapiEncoder * base_encoder) return status; reset_properties (encoder); + ensure_control_rate_params (encoder); return set_context_info (base_encoder); } diff --git a/gst-libs/gst/vaapi/gstvaapiencoder_h265.c b/gst-libs/gst/vaapi/gstvaapiencoder_h265.c index 9513f5c8..e8bc289d 100644 --- a/gst-libs/gst/vaapi/gstvaapiencoder_h265.c +++ b/gst-libs/gst/vaapi/gstvaapiencoder_h265.c @@ -1766,18 +1766,15 @@ error_create_packed_seq_hdr: } static gboolean -ensure_control_rate_params (GstVaapiEncoderH265 * encoder, - GstVaapiEncPicture * picture) +ensure_control_rate_params (GstVaapiEncoderH265 * encoder) { - GstVaapiEncoder *const base_encoder = GST_VAAPI_ENCODER_CAST (encoder); - if (GST_VAAPI_ENCODER_RATE_CONTROL (encoder) == GST_VAAPI_RATECONTROL_CQP) return TRUE; /* HRD params */ fill_hrd_params (encoder, &GST_VAAPI_ENCODER_VA_HRD (encoder)); - return gst_vaapi_encoder_ensure_param_control_rate (base_encoder, picture); + return TRUE; } static gboolean @@ -1785,7 +1782,7 @@ ensure_misc_params (GstVaapiEncoderH265 * encoder, GstVaapiEncPicture * picture) { GstVaapiEncoder *const base_encoder = GST_VAAPI_ENCODER_CAST (encoder); - if (!ensure_control_rate_params (encoder, picture)) + if (!gst_vaapi_encoder_ensure_param_control_rate (base_encoder, picture)) return FALSE; if (!gst_vaapi_encoder_ensure_param_quality_level (base_encoder, picture)) return FALSE; @@ -2413,6 +2410,7 @@ gst_vaapi_encoder_h265_reconfigure (GstVaapiEncoder * base_encoder) return status; reset_properties (encoder); + ensure_control_rate_params (encoder); return set_context_info (base_encoder); } diff --git a/gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c b/gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c index e80443a7..2c284ee4 100644 --- a/gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c +++ b/gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c @@ -452,8 +452,7 @@ ensure_picture (GstVaapiEncoderMpeg2 * encoder, GstVaapiEncPicture * picture, } static gboolean -ensure_control_rate_params (GstVaapiEncoderMpeg2 * encoder, - GstVaapiEncPicture * picture) +ensure_control_rate_params (GstVaapiEncoderMpeg2 * encoder) { GstVaapiEncoder *const base_encoder = GST_VAAPI_ENCODER_CAST (encoder); @@ -476,7 +475,7 @@ ensure_control_rate_params (GstVaapiEncoderMpeg2 * encoder, }; /* *INDENT-ON* */ - return gst_vaapi_encoder_ensure_param_control_rate (base_encoder, picture); + return TRUE; } static gboolean @@ -485,7 +484,7 @@ set_misc_parameters (GstVaapiEncoderMpeg2 * encoder, { GstVaapiEncoder *const base_encoder = GST_VAAPI_ENCODER_CAST (encoder); - if (!ensure_control_rate_params (encoder, picture)) + if (!gst_vaapi_encoder_ensure_param_control_rate (base_encoder, picture)) return FALSE; if (!gst_vaapi_encoder_ensure_param_quality_level (base_encoder, picture)) return FALSE; @@ -713,6 +712,7 @@ gst_vaapi_encoder_mpeg2_reconfigure (GstVaapiEncoder * base_encoder) if (!ensure_bitrate (encoder)) goto error; + ensure_control_rate_params (encoder); return set_context_info (base_encoder); /* ERRORS */ diff --git a/gst-libs/gst/vaapi/gstvaapiencoder_vp8.c b/gst-libs/gst/vaapi/gstvaapiencoder_vp8.c index 11f64492..3aa46e7a 100644 --- a/gst-libs/gst/vaapi/gstvaapiencoder_vp8.c +++ b/gst-libs/gst/vaapi/gstvaapiencoder_vp8.c @@ -258,8 +258,7 @@ error: } static gboolean -ensure_control_rate_params (GstVaapiEncoderVP8 * encoder, - GstVaapiEncPicture * picture) +ensure_control_rate_params (GstVaapiEncoderVP8 * encoder) { GstVaapiEncoder *const base_encoder = GST_VAAPI_ENCODER_CAST (encoder); @@ -291,7 +290,7 @@ ensure_control_rate_params (GstVaapiEncoderVP8 * encoder, }; /* *INDENT-ON* */ - return gst_vaapi_encoder_ensure_param_control_rate (base_encoder, picture); + return TRUE; } static gboolean @@ -302,7 +301,7 @@ ensure_misc_params (GstVaapiEncoderVP8 * encoder, GstVaapiEncPicture * picture) if (!gst_vaapi_encoder_ensure_param_quality_level (base_encoder, picture)) return FALSE; - if (!ensure_control_rate_params (encoder, picture)) + if (!gst_vaapi_encoder_ensure_param_control_rate (base_encoder, picture)) return FALSE; return TRUE; @@ -510,6 +509,7 @@ gst_vaapi_encoder_vp8_reconfigure (GstVaapiEncoder * base_encoder) if (!ensure_bitrate (encoder)) goto error; + ensure_control_rate_params (encoder); return set_context_info (base_encoder); /* ERRORS */ |