aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat/movenc.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2015-10-04 12:27:10 +0200
committerAnton Khirnov <anton@khirnov.net>2015-12-06 10:26:01 +0100
commit5845a8273e4694e0254ad728970b82bb64fd8bc0 (patch)
treeb9403b524bbbb8bad56f0edf88c733b33ddc913e /libavformat/movenc.c
parent825900248b4053515803152d3165efdb034b660b (diff)
downloadffmpeg-5845a8273e4694e0254ad728970b82bb64fd8bc0.tar.gz
movenc: use the CPB props side data
Do not access the encoder options, since it makes no sense when the AVStream codec context is not the encoding context.
Diffstat (limited to 'libavformat/movenc.c')
-rw-r--r--libavformat/movenc.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index a940b455ad..1026baeae2 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -305,6 +305,7 @@ static void put_descr(AVIOContext *pb, int tag, unsigned int size)
static int mov_write_esds_tag(AVIOContext *pb, MOVTrack *track) // Basic
{
+ AVCPBProperties *props;
int64_t pos = avio_tell(pb);
int decoder_specific_info_len = track->vos_len ? 5 + track->vos_len : 0;
@@ -337,14 +338,16 @@ static int mov_write_esds_tag(AVIOContext *pb, MOVTrack *track) // Basic
else
avio_w8(pb, 0x11); // flags (= Visualstream)
- avio_wb24(pb, track->enc->rc_buffer_size >> 3); // Buffersize DB
+ props = (AVCPBProperties*)av_stream_get_side_data(track->st, AV_PKT_DATA_CPB_PROPERTIES,
+ NULL);
- avio_wb32(pb, FFMAX(track->enc->bit_rate, track->enc->rc_max_rate)); // maxbitrate (FIXME should be max rate in any 1 sec window)
- if (track->enc->rc_max_rate != track->enc->rc_min_rate ||
- track->enc->rc_min_rate == 0)
+ avio_wb24(pb, props ? props->buffer_size / 8 : 0); // Buffersize DB
+
+ avio_wb32(pb, props ? FFMAX(props->max_bitrate, props->avg_bitrate) : track->enc->bit_rate); // maxbitrate (FIXME should be max rate in any 1 sec window)
+ if (!props || !props->min_bitrate || props->max_bitrate != props->min_bitrate)
avio_wb32(pb, 0); // vbr
else
- avio_wb32(pb, track->enc->rc_max_rate); // avg bitrate
+ avio_wb32(pb, props->max_bitrate); // avg bitrate
if (track->vos_len) {
// DecoderSpecific info descriptor