From cdced09ef6e40212bc69486c6d314a7f48e5647d Mon Sep 17 00:00:00 2001 From: Joakim Plate <elupus@ecce.se> Date: Tue, 13 Sep 2011 01:02:48 +0200 Subject: [PATCH] Don't override duration from file header with bitrate duration This is most noticable on matroska files which has duration as part of it's header. --- libavformat/utils.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libavformat/utils.c b/libavformat/utils.c index 36107c3f987..8138069bfdc 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -1856,6 +1856,8 @@ static int has_duration(AVFormatContext *ic) { int i; AVStream *st; + if(ic->duration != AV_NOPTS_VALUE) + return 1; for(i = 0;i < ic->nb_streams; i++) { st = ic->streams[i]; @@ -1913,14 +1915,14 @@ static void update_stream_timings(AVFormatContext *ic) duration = end_time - start_time; } } - if (duration != INT64_MIN) { + if (duration != INT64_MIN && ic->duration == AV_NOPTS_VALUE) { ic->duration = duration; - if (ic->file_size > 0) { + } + if (ic->file_size > 0 && ic->duration != AV_NOPTS_VALUE) { /* compute the bitrate */ ic->bit_rate = (double)ic->file_size * 8.0 * AV_TIME_BASE / (double)ic->duration; } - } } static void fill_all_stream_timings(AVFormatContext *ic) -- GitLab