]> git.sesse.net Git - ffmpeg/commitdiff
avformat/movenc: use more fall-back values for average bit rate fields
authorJan Ekström <jeebjp@gmail.com>
Sun, 20 Sep 2020 15:14:48 +0000 (18:14 +0300)
committerJan Ekström <jeebjp@gmail.com>
Tue, 22 Sep 2020 15:25:44 +0000 (18:25 +0300)
If the average bit rate cannot be calculated, such as in the case
of streamed fragmented mp4, utilize various available parameters
in priority order.

Tests are updated where the esds or btrt or ISML manifest boxes'
output changes.

libavformat/movenc.c
tests/ref/lavf/ismv

index 76fb251fa86b1a3c0484b5bad287f5d1cd9ac96f..860e331b197152d3b91383b5c05322a1eeaa170e 100644 (file)
@@ -648,6 +648,23 @@ static struct mpeg4_bit_rate_values calculate_mpeg4_bit_rates(MOVTrack *track)
     struct mpeg4_bit_rate_values bit_rates = { 0 };
 
     bit_rates.avg_bit_rate = compute_avg_bitrate(track);
+    if (!bit_rates.avg_bit_rate) {
+        // if the average bit rate cannot be calculated at this point, such as
+        // in the case of fragmented MP4, utilize the following values as
+        // fall-back in priority order:
+        //
+        // 1. average bit rate property
+        // 2. bit rate (usually average over the whole clip)
+        // 3. maximum bit rate property
+
+        if (props && props->avg_bitrate) {
+            bit_rates.avg_bit_rate = props->avg_bitrate;
+        } else if (track->par->bit_rate) {
+            bit_rates.avg_bit_rate = track->par->bit_rate;
+        } else if (props && props->max_bitrate) {
+            bit_rates.avg_bit_rate = props->max_bitrate;
+        }
+    }
 
     // (FIXME should be max rate in any 1 sec window)
     bit_rates.max_bit_rate = FFMAX(track->par->bit_rate,
index e7361705fa59a0389e2540658cbec7f505a85f58..ac7f72ba330c4d4aba0fddeeaf37fc9c28259d53 100644 (file)
@@ -1,9 +1,9 @@
-4c6bc5ac805a76bbbd886a69d2e61554 *tests/data/lavf/lavf.ismv
+48fb8d7a5d19bd60f3a49ccf4b7d6593 *tests/data/lavf/lavf.ismv
 313169 tests/data/lavf/lavf.ismv
 tests/data/lavf/lavf.ismv CRC=0x9d9a638a
-18678627921460328ea3fed238d0d57d *tests/data/lavf/lavf.ismv
+d19cd8e310a2e94fe0a0d11c5dc29217 *tests/data/lavf/lavf.ismv
 322075 tests/data/lavf/lavf.ismv
 tests/data/lavf/lavf.ismv CRC=0xe8130120
-b9a858caf55b1eff2273e746e9f72dc4 *tests/data/lavf/lavf.ismv
+3b6023766845b51b075aed474c00f73c *tests/data/lavf/lavf.ismv
 312546 tests/data/lavf/lavf.ismv
 tests/data/lavf/lavf.ismv CRC=0x9d9a638a