avformat/demux: propagate the internal decoder's bitrate properties

Muxers may access this information through cpb properties within the stream's
side data.

Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
James Almer 2023-09-01 13:55:48 -03:00
parent b6627a57f4
commit 8e972b13a9
1 changed files with 17 additions and 0 deletions

View File

@ -2974,6 +2974,23 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
ret = add_coded_side_data(st, sti->avctx);
if (ret < 0)
goto find_stream_info_err;
if (sti->avctx->rc_buffer_size > 0 || sti->avctx->rc_max_rate > 0 ||
sti->avctx->rc_min_rate) {
size_t cpb_size;
AVCPBProperties *props = av_cpb_properties_alloc(&cpb_size);
if (props) {
if (sti->avctx->rc_buffer_size > 0)
props->buffer_size = sti->avctx->rc_buffer_size;
if (sti->avctx->rc_min_rate > 0)
props->min_bitrate = sti->avctx->rc_min_rate;
if (sti->avctx->rc_max_rate > 0)
props->max_bitrate = sti->avctx->rc_max_rate;
if (av_stream_add_side_data(st, AV_PKT_DATA_CPB_PROPERTIES,
(uint8_t *)props, cpb_size))
av_free(props);
}
}
}
sti->avctx_inited = 0;