diff mbox

[FFmpeg-devel,1/2] movenc: use similar logic to DASH when writing bit rate to ISML

Message ID 1474927822-6802-2-git-send-email-jeebjp@gmail.com
State Superseded
Headers show

Commit Message

Jan Ekström Sept. 26, 2016, 10:10 p.m. UTC
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>
---
 libavformat/movenc.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

Comments

Carl Eugen Hoyos Sept. 27, 2016, 7:35 a.m. UTC | #1
2016-09-27 0:10 GMT+02:00 Jan Ekström <jeebjp@gmail.com>:

>          avio_printf(pb, "<%s systemBitrate=\"%"PRId64"\">\n", type,
> -                    (int64_t)track->par->bit_rate);
> -        param_write_int(pb, "systemBitrate", track->par->bit_rate);
> +                    (int64_t)manifest_bit_rate);

The cast looks unneeded (and ugly).

Please consider adding braces to the if-else clause you add above.

Carl Eugen
diff mbox

Patch

diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index 449d0b5..d5ed1dd 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,17 @@  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);
+                    (int64_t)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) {