diff options
author | Jan Ekström <jeebjp@gmail.com> | 2016-09-28 02:14:23 +0300 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2016-09-28 23:45:11 +0200 |
commit | 6c10f8fe7658c699fc41688c175aa9d79f4b1daf (patch) | |
tree | ca4856f277d8827149e7ee3573781f601e177ace /libavformat | |
parent | e4bfc9ecf73d593853ef4e993a5c753f5596aee1 (diff) | |
download | ffmpeg-6c10f8fe7658c699fc41688c175aa9d79f4b1daf.tar.gz |
movenc: use similar logic to DASH when writing bit rate to ISML
This way, in case of bit rate not being set, max_bitrate will be
used instead. This enables, for example, re-using max_bitrate
information from the input or doing transcoding with a rate
control mode that is not bit rate based.
Signed-off-by: Jan Ekström <jeebjp@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/movenc.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 449d0b537c..8992782c8c 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -3581,6 +3581,9 @@ static int mov_write_isml_manifest(AVIOContext *pb, MOVMuxContext *mov, AVFormat { int64_t pos = avio_tell(pb); int i; + int64_t manifest_bit_rate = 0; + AVCPBProperties *props = NULL; + static const uint8_t uuid[] = { 0xa5, 0xd4, 0x0b, 0x30, 0xe8, 0x14, 0x11, 0xdd, 0xba, 0x2f, 0x08, 0x00, 0x20, 0x0c, 0x9a, 0x66 @@ -3615,9 +3618,18 @@ static int mov_write_isml_manifest(AVIOContext *pb, MOVMuxContext *mov, AVFormat } else { continue; } + + props = (AVCPBProperties*)av_stream_get_side_data(track->st, AV_PKT_DATA_CPB_PROPERTIES, NULL); + + if (track->par->bit_rate) { + manifest_bit_rate = track->par->bit_rate; + } else if (props) { + manifest_bit_rate = props->max_bitrate; + } + avio_printf(pb, "<%s systemBitrate=\"%"PRId64"\">\n", type, - (int64_t)track->par->bit_rate); - param_write_int(pb, "systemBitrate", track->par->bit_rate); + manifest_bit_rate); + param_write_int(pb, "systemBitrate", manifest_bit_rate); param_write_int(pb, "trackID", track_id); if (track->par->codec_type == AVMEDIA_TYPE_VIDEO) { if (track->par->codec_id == AV_CODEC_ID_H264) { |