1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-02-04 06:08:26 +02:00

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.
This commit is contained in:
Anton Khirnov 2015-10-04 12:27:10 +02:00
parent 825900248b
commit 5845a8273e

View File

@ -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 static int mov_write_esds_tag(AVIOContext *pb, MOVTrack *track) // Basic
{ {
AVCPBProperties *props;
int64_t pos = avio_tell(pb); int64_t pos = avio_tell(pb);
int decoder_specific_info_len = track->vos_len ? 5 + track->vos_len : 0; 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 else
avio_w8(pb, 0x11); // flags (= Visualstream) 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) avio_wb24(pb, props ? props->buffer_size / 8 : 0); // Buffersize DB
if (track->enc->rc_max_rate != track->enc->rc_min_rate ||
track->enc->rc_min_rate == 0) 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 avio_wb32(pb, 0); // vbr
else else
avio_wb32(pb, track->enc->rc_max_rate); // avg bitrate avio_wb32(pb, props->max_bitrate); // avg bitrate
if (track->vos_len) { if (track->vos_len) {
// DecoderSpecific info descriptor // DecoderSpecific info descriptor