--- The following patch makes lavf/utils only update stream duration only if it is not set or 0 in fill_all_stream_timings (which is called by avformat_find_stream_info).
In the context of mov demuxing, the patch makes the last packet duration the same as the one declared in the stts table for example (ie: we trust what the demuxer reports). The patch passes fate, however it might not be valid but I would like to understand what is the purpose / use-case of the update_stream_timing / fill_all_stream_timings functions which are not too well documented. Thanks. --- libavformat/utils.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavformat/utils.c b/libavformat/utils.c index 38d247c6cd..00adf026e6 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -2654,7 +2654,8 @@ static void fill_all_stream_timings(AVFormatContext *ic) if (ic->start_time != AV_NOPTS_VALUE) st->start_time = av_rescale_q(ic->start_time, AV_TIME_BASE_Q, st->time_base); - if (ic->duration != AV_NOPTS_VALUE) + if (ic->duration != AV_NOPTS_VALUE && + (st->duration == 0 || st->duration == AV_NOPTS_VALUE)) st->duration = av_rescale_q(ic->duration, AV_TIME_BASE_Q, st->time_base); } -- 2.13.2 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel