Commit 38ec5b4a authored by Mark Thompson's avatar Mark Thompson

vaapi_encode: Factorise out adding global parameters

parent c5b4ad24
...@@ -960,6 +960,20 @@ fail: ...@@ -960,6 +960,20 @@ fail:
return err; return err;
} }
static av_cold void vaapi_encode_add_global_param(AVCodecContext *avctx,
VAEncMiscParameterBuffer *buffer,
size_t size)
{
VAAPIEncodeContext *ctx = avctx->priv_data;
av_assert0(ctx->nb_global_params < MAX_GLOBAL_PARAMS);
ctx->global_params [ctx->nb_global_params] = buffer;
ctx->global_params_size[ctx->nb_global_params] = size;
++ctx->nb_global_params;
}
static av_cold int vaapi_encode_config_attributes(AVCodecContext *avctx) static av_cold int vaapi_encode_config_attributes(AVCodecContext *avctx)
{ {
VAAPIEncodeContext *ctx = avctx->priv_data; VAAPIEncodeContext *ctx = avctx->priv_data;
...@@ -1182,20 +1196,16 @@ static av_cold int vaapi_encode_init_rate_control(AVCodecContext *avctx) ...@@ -1182,20 +1196,16 @@ static av_cold int vaapi_encode_init_rate_control(AVCodecContext *avctx)
.min_qp = (avctx->qmin > 0 ? avctx->qmin : 0), .min_qp = (avctx->qmin > 0 ? avctx->qmin : 0),
.basic_unit_size = 0, .basic_unit_size = 0,
}; };
ctx->global_params[ctx->nb_global_params] = vaapi_encode_add_global_param(avctx, &ctx->rc_params.misc,
&ctx->rc_params.misc; sizeof(ctx->rc_params));
ctx->global_params_size[ctx->nb_global_params++] =
sizeof(ctx->rc_params);
ctx->hrd_params.misc.type = VAEncMiscParameterTypeHRD; ctx->hrd_params.misc.type = VAEncMiscParameterTypeHRD;
ctx->hrd_params.hrd = (VAEncMiscParameterHRD) { ctx->hrd_params.hrd = (VAEncMiscParameterHRD) {
.initial_buffer_fullness = hrd_initial_buffer_fullness, .initial_buffer_fullness = hrd_initial_buffer_fullness,
.buffer_size = hrd_buffer_size, .buffer_size = hrd_buffer_size,
}; };
ctx->global_params[ctx->nb_global_params] = vaapi_encode_add_global_param(avctx, &ctx->hrd_params.misc,
&ctx->hrd_params.misc; sizeof(ctx->hrd_params));
ctx->global_params_size[ctx->nb_global_params++] =
sizeof(ctx->hrd_params);
if (avctx->framerate.num > 0 && avctx->framerate.den > 0) if (avctx->framerate.num > 0 && avctx->framerate.den > 0)
av_reduce(&fr_num, &fr_den, av_reduce(&fr_num, &fr_den,
...@@ -1208,10 +1218,8 @@ static av_cold int vaapi_encode_init_rate_control(AVCodecContext *avctx) ...@@ -1208,10 +1218,8 @@ static av_cold int vaapi_encode_init_rate_control(AVCodecContext *avctx)
ctx->fr_params.fr.framerate = (unsigned int)fr_den << 16 | fr_num; ctx->fr_params.fr.framerate = (unsigned int)fr_den << 16 | fr_num;
#if VA_CHECK_VERSION(0, 40, 0) #if VA_CHECK_VERSION(0, 40, 0)
ctx->global_params[ctx->nb_global_params] = vaapi_encode_add_global_param(avctx, &ctx->fr_params.misc,
&ctx->fr_params.misc; sizeof(ctx->fr_params));
ctx->global_params_size[ctx->nb_global_params++] =
sizeof(ctx->fr_params);
#endif #endif
return 0; return 0;
...@@ -1467,10 +1475,8 @@ av_cold int ff_vaapi_encode_init(AVCodecContext *avctx) ...@@ -1467,10 +1475,8 @@ av_cold int ff_vaapi_encode_init(AVCodecContext *avctx)
ctx->quality_params.quality.quality_level = ctx->quality_params.quality.quality_level =
avctx->compression_level; avctx->compression_level;
ctx->global_params[ctx->nb_global_params] = vaapi_encode_add_global_param(avctx, &ctx->quality_params.misc,
&ctx->quality_params.misc; sizeof(ctx->quality_params));
ctx->global_params_size[ctx->nb_global_params++] =
sizeof(ctx->quality_params);
} }
#else #else
av_log(avctx, AV_LOG_WARNING, "The encode compression level " av_log(avctx, AV_LOG_WARNING, "The encode compression level "
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment