[FFmpeg-devel] [PATCH 1/7] lavc/vaapi_encode: Add codec-specific bit rate control callback.
Jun Zhao
mypopydev at gmail.com
Sat Nov 3 04:52:06 EET 2018
Add extra codec-specific bit rate control configuration callback
interface.
Signed-off-by: Jun Zhao <jun.zhao at intel.com>
---
libavcodec/vaapi_encode.c | 9 +++++++++
libavcodec/vaapi_encode.h | 3 +++
2 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c
index 2fe8501..0e7f0a1 100644
--- a/libavcodec/vaapi_encode.c
+++ b/libavcodec/vaapi_encode.c
@@ -1261,6 +1261,7 @@ static av_cold int vaapi_encode_init_rate_control(AVCodecContext *avctx)
int fr_num, fr_den;
VAConfigAttrib rc_attr = { VAConfigAttribRateControl };
VAStatus vas;
+ int err;
vas = vaGetConfigAttributes(ctx->hwctx->display,
ctx->va_profile, ctx->va_entrypoint,
@@ -1412,6 +1413,14 @@ static av_cold int vaapi_encode_init_rate_control(AVCodecContext *avctx)
.max_qp = (avctx->qmax > 0 ? avctx->qmax : 0),
#endif
};
+ if (ctx->codec->bit_rate_control) {
+ err = ctx->codec->bit_rate_control(avctx);
+ if (err < 0) {
+ av_log(avctx, AV_LOG_ERROR, "Codec specific bit rate control setting "
+ "failed: %d.\n", err);
+ return err;
+ }
+ }
vaapi_encode_add_global_param(avctx, &ctx->rc_params.misc,
sizeof(ctx->rc_params));
diff --git a/libavcodec/vaapi_encode.h b/libavcodec/vaapi_encode.h
index 965fe65..c40de65 100644
--- a/libavcodec/vaapi_encode.h
+++ b/libavcodec/vaapi_encode.h
@@ -268,6 +268,9 @@ typedef struct VAAPIEncodeType {
// add any necessary global parameters).
int (*configure)(AVCodecContext *avctx);
+ // Perform any extra codec-specific bit rate control configuration
+ int (*bit_rate_control)(AVCodecContext *avctx);
+
// The size of the parameter structures:
// sizeof(VAEnc{type}ParameterBuffer{codec}).
size_t sequence_params_size;
--
1.7.1
More information about the ffmpeg-devel
mailing list