summaryrefslogtreecommitdiffstats
path: root/contrib/mp4v2/A01-divide-zero.patch
blob: 4d6aa4d2a3946e45a9b65c81a6545b62f4d92116 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
--- mp4v2-r355/src/mp4track.cpp	2012-01-05 15:44:29.000000000 +0100
+++ mp4v2-r355/src/mp4track.cpp	2012-01-05 15:47:34.000000000 +0100
@@ -819,13 +819,14 @@
                 (thisSecStart + timeScale) - lastSampleTime;
             // calculate the duration of the last sample
             MP4Duration lastSampleDur = sampleTime - lastSampleTime;
-            uint32_t overflow_bytes;
             // now, calculate the number of bytes we overflowed.  Round up.
-            overflow_bytes =
-                ((lastSampleSize * overflow_dur) + (lastSampleDur - 1)) / lastSampleDur;
+            if( lastSampleDur > 0 ) {
+                uint32_t overflow_bytes = 0;
+                overflow_bytes = ((lastSampleSize * overflow_dur) + (lastSampleDur - 1)) / lastSampleDur;
 
-            if (bytesThisSec - overflow_bytes > maxBytesPerSec) {
-                maxBytesPerSec = bytesThisSec - overflow_bytes;
+                if (bytesThisSec - overflow_bytes > maxBytesPerSec) {
+                    maxBytesPerSec = bytesThisSec - overflow_bytes;
+                }
             }
 
             // now adjust the values for this sample.  Remove the bytes