diff options
author | Derek Buitenhuis <derek.buitenhuis@gmail.com> | 2020-05-16 15:06:09 +0100 |
---|---|---|
committer | Derek Buitenhuis <derek.buitenhuis@gmail.com> | 2020-05-17 13:03:30 +0100 |
commit | 5d9ce445ef24d915f41e384d4c5916cc568e4458 (patch) | |
tree | 6e3eface83f0571bebb390ca61aac4b462d2fd1a | |
parent | f603d10b1e6bb2fbf4dcccc43d3ea2fb911b36ba (diff) | |
download | ffmpeg-5d9ce445ef24d915f41e384d4c5916cc568e4458.tar.gz |
avformat/dump: Use int64_t for intermediate time values
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>
-rw-r--r-- | libavformat/dump.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/libavformat/dump.c b/libavformat/dump.c index 5e9a03185f..06bafc272d 100644 --- a/libavformat/dump.c +++ b/libavformat/dump.c @@ -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"); |