diff options
author | Jan Ekström <jeebjp@gmail.com> | 2019-02-23 02:35:28 +0200 |
---|---|---|
committer | Jan Ekström <jeebjp@gmail.com> | 2019-03-03 23:42:27 +0200 |
commit | 4635f649534bb4e3e051be4e416bfdd78074d0b7 (patch) | |
tree | 5b4e6a75c45e682e56711302e2f053fae941dcea /libavcodec | |
parent | 17008a010753833dadd0ff8442b11046da4cd638 (diff) | |
download | ffmpeg-4635f649534bb4e3e051be4e416bfdd78074d0b7.tar.gz |
lavc/libx265: signal CPB properties through side data
This way values such as maxrate/bufsize can be utilized
further down the chain.
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/libx265.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/libavcodec/libx265.c b/libavcodec/libx265.c index 98415366da..fe39f45241 100644 --- a/libavcodec/libx265.c +++ b/libavcodec/libx265.c @@ -79,6 +79,7 @@ static av_cold int libx265_encode_close(AVCodecContext *avctx) static av_cold int libx265_encode_init(AVCodecContext *avctx) { libx265Context *ctx = avctx->priv_data; + AVCPBProperties *cpb_props = NULL; ctx->api = x265_api_get(av_pix_fmt_desc_get(avctx->pix_fmt)->comp[0].depth); if (!ctx->api) @@ -208,6 +209,13 @@ static av_cold int libx265_encode_init(AVCodecContext *avctx) ctx->params->rc.vbvBufferSize = avctx->rc_buffer_size / 1000; ctx->params->rc.vbvMaxBitrate = avctx->rc_max_rate / 1000; + cpb_props = ff_add_cpb_side_data(avctx); + if (!cpb_props) + return AVERROR(ENOMEM); + cpb_props->buffer_size = ctx->params->rc.vbvBufferSize * 1000; + cpb_props->max_bitrate = ctx->params->rc.vbvMaxBitrate * 1000; + cpb_props->avg_bitrate = ctx->params->rc.bitrate * 1000; + if (!(avctx->flags & AV_CODEC_FLAG_GLOBAL_HEADER)) ctx->params->bRepeatHeaders = 1; |