]> git.sesse.net Git - ffmpeg/commitdiff
avformat/dump: Use int64_t for intermediate time values
authorDerek Buitenhuis <derek.buitenhuis@gmail.com>
Sat, 16 May 2020 14:06:09 +0000 (15:06 +0100)
committerDerek Buitenhuis <derek.buitenhuis@gmail.com>
Sun, 17 May 2020 12:03:30 +0000 (13:03 +0100)
Prevents wrap-around to negative values while calculating the duration string.

Before:

    Duration: -411422:-59:-42.17, start: 0.000000, bitrate: 0 kb/s

After:

    Duration: 781623:28:34.17, start: 0.000000, bitrate: 0 kb/s

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
libavformat/dump.c

index 5e9a03185f16f2a79f00ba1c4df28e674f3cd023..06bafc272d8af5c91f01180e1590a7b322d130d8 100644 (file)
@@ -615,7 +615,7 @@ void av_dump_format(AVFormatContext *ic, int index,
     if (!is_output) {
         av_log(NULL, AV_LOG_INFO, "  Duration: ");
         if (ic->duration != AV_NOPTS_VALUE) {
-            int hours, mins, secs, us;
+            int64_t hours, mins, secs, us;
             int64_t duration = ic->duration + (ic->duration <= INT64_MAX - 5000 ? 5000 : 0);
             secs  = duration / AV_TIME_BASE;
             us    = duration % AV_TIME_BASE;
@@ -623,7 +623,7 @@ void av_dump_format(AVFormatContext *ic, int index,
             secs %= 60;
             hours = mins / 60;
             mins %= 60;
-            av_log(NULL, AV_LOG_INFO, "%02d:%02d:%02d.%02d", hours, mins, secs,
+            av_log(NULL, AV_LOG_INFO, "%02"PRId64":%02"PRId64":%02"PRId64".%02"PRId64"", hours, mins, secs,
                    (100 * us) / AV_TIME_BASE);
         } else {
             av_log(NULL, AV_LOG_INFO, "N/A");