[FFmpeg-cvslog] avformat/dump: Use int64_t for intermediate time values
Derek Buitenhuis
git at videolan.org
Sun May 17 15:21:55 EEST 2020
ffmpeg | branch: master | Derek Buitenhuis <derek.buitenhuis at gmail.com> | Sat May 16 15:06:09 2020 +0100| [5d9ce445ef24d915f41e384d4c5916cc568e4458] | committer: Derek Buitenhuis
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 at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5d9ce445ef24d915f41e384d4c5916cc568e4458
---
libavformat/dump.c | 4 ++--
1 file 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");
More information about the ffmpeg-cvslog
mailing list