mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 07:28:11 +02:00
frontends/va: Set default rate control values once when creating encoder
Move setting the default values from getEncParamPresetH264/5 as this
function is called on each frame which would result in overwriting
values set by application.
This fixes setting HRD parameters and max_qp/min_qp when
PIPE_VIDEO_CAP_ENC_QUALITY_LEVEL is not supported.
Cc: mesa-stable
Reviewed-by: Ruijing Dong <ruijing.dong@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25355>
(cherry picked from commit dd2ef9a0e4)
This commit is contained in:
parent
58f52f8b4e
commit
c0f9930089
3 changed files with 14 additions and 15 deletions
|
|
@ -913,7 +913,7 @@
|
|||
"description": "frontends/va: Set default rate control values once when creating encoder",
|
||||
"nominated": true,
|
||||
"nomination_type": 0,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": null
|
||||
},
|
||||
|
|
|
|||
|
|
@ -184,6 +184,13 @@ vlVaHandleVAEncSequenceParameterBufferTypeH264(vlVaDriver *drv, vlVaContext *con
|
|||
return VA_STATUS_ERROR_ALLOCATION_FAILED;
|
||||
|
||||
getEncParamPresetH264(context);
|
||||
context->desc.h264enc.rate_ctrl[0].vbv_buffer_size = 20000000;
|
||||
context->desc.h264enc.rate_ctrl[0].vbv_buf_lv = 48;
|
||||
context->desc.h264enc.rate_ctrl[0].fill_data_enable = 1;
|
||||
context->desc.h264enc.rate_ctrl[0].enforce_hrd = 1;
|
||||
context->desc.h264enc.rate_ctrl[0].max_qp = 51;
|
||||
context->desc.h264enc.rate_ctrl[0].min_qp = 0;
|
||||
context->desc.h264enc.enable_vui = false;
|
||||
}
|
||||
|
||||
context->gop_coeff = ((1024 + h264->intra_idr_period - 1) / h264->intra_idr_period + 1) / 2 * 2;
|
||||
|
|
@ -342,13 +349,6 @@ vlVaHandleVAEncMiscParameterTypeHRDH264(vlVaContext *context, VAEncMiscParameter
|
|||
void getEncParamPresetH264(vlVaContext *context)
|
||||
{
|
||||
//rate control
|
||||
context->desc.h264enc.rate_ctrl[0].vbv_buffer_size = 20000000;
|
||||
context->desc.h264enc.rate_ctrl[0].vbv_buf_lv = 48;
|
||||
context->desc.h264enc.rate_ctrl[0].fill_data_enable = 1;
|
||||
context->desc.h264enc.rate_ctrl[0].enforce_hrd = 1;
|
||||
context->desc.h264enc.rate_ctrl[0].max_qp = 51;
|
||||
context->desc.h264enc.rate_ctrl[0].min_qp = 0;
|
||||
context->desc.h264enc.enable_vui = false;
|
||||
if (context->desc.h264enc.rate_ctrl[0].frame_rate_num == 0 ||
|
||||
context->desc.h264enc.rate_ctrl[0].frame_rate_den == 0) {
|
||||
context->desc.h264enc.rate_ctrl[0].frame_rate_num = 30;
|
||||
|
|
|
|||
|
|
@ -165,6 +165,12 @@ vlVaHandleVAEncSequenceParameterBufferTypeHEVC(vlVaDriver *drv, vlVaContext *con
|
|||
return VA_STATUS_ERROR_ALLOCATION_FAILED;
|
||||
|
||||
getEncParamPresetH265(context);
|
||||
context->desc.h265enc.rc.vbv_buffer_size = 20000000;
|
||||
context->desc.h265enc.rc.vbv_buf_lv = 48;
|
||||
context->desc.h265enc.rc.fill_data_enable = 1;
|
||||
context->desc.h265enc.rc.enforce_hrd = 1;
|
||||
context->desc.h265enc.rc.max_qp = 51;
|
||||
context->desc.h265enc.rc.min_qp = 0;
|
||||
}
|
||||
|
||||
context->desc.h265enc.seq.general_profile_idc = h265->general_profile_idc;
|
||||
|
|
@ -415,13 +421,6 @@ vlVaHandleVAEncMiscParameterTypeHRDHEVC(vlVaContext *context, VAEncMiscParameter
|
|||
void getEncParamPresetH265(vlVaContext *context)
|
||||
{
|
||||
//rate control
|
||||
context->desc.h265enc.rc.vbv_buffer_size = 20000000;
|
||||
context->desc.h265enc.rc.vbv_buf_lv = 48;
|
||||
context->desc.h265enc.rc.fill_data_enable = 1;
|
||||
context->desc.h265enc.rc.enforce_hrd = 1;
|
||||
context->desc.h265enc.rc.max_qp = 51;
|
||||
context->desc.h265enc.rc.min_qp = 0;
|
||||
|
||||
if (context->desc.h265enc.rc.frame_rate_num == 0 ||
|
||||
context->desc.h265enc.rc.frame_rate_den == 0) {
|
||||
context->desc.h265enc.rc.frame_rate_num = 30;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue