[FFmpeg-cvslog] avformat/mov: don't read duration from mvhd atom

James Almer git at videolan.org
Fri Sep 9 02:07:23 EEST 2022


ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Mon Aug 15 20:14:42 2022 -0300| [836b8001c924deb9263b0f5b7c74ccfaab1f4fdc] | committer: James Almer

avformat/mov: don't read duration from mvhd atom

This duration is equal to the longest duration in all track's tkhd atoms, which
may be comprised of the sum of all edit lists in each track. Empty edit lists
in tracks represent start_time, and the actual media duration is stored in the
mdhd atom.
This change lets the generic demux code derive the longest track duration taken
from mdhd atoms, so the correct duration and start_time combination will be
reported.

Should fix ticket #9775.

Reviewed-by: zhilizhao(赵志立) <quinkblack at foxmail.com>
Signed-off-by: James Almer <jamrial at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=836b8001c924deb9263b0f5b7c74ccfaab1f4fdc
---

 libavformat/mov.c                            | 4 ----
 tests/ref/fate/gaplessenc-itunes-to-ipod-aac | 2 +-
 2 files changed, 1 insertion(+), 5 deletions(-)

diff --git a/libavformat/mov.c b/libavformat/mov.c
index a1bc627991..720a72f3ec 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -1520,10 +1520,6 @@ static int mov_read_mvhd(MOVContext *c, AVIOContext *pb, MOVAtom atom)
     av_log(c->fc, AV_LOG_TRACE, "time scale = %i\n", c->time_scale);
 
     c->duration = (version == 1) ? avio_rb64(pb) : avio_rb32(pb); /* duration */
-    // set the AVFormatContext duration because the duration of individual tracks
-    // may be inaccurate
-    if (!c->trex_data)
-        c->fc->duration = av_rescale(c->duration, AV_TIME_BASE, c->time_scale);
     avio_rb32(pb); /* preferred scale */
 
     avio_rb16(pb); /* preferred volume */
diff --git a/tests/ref/fate/gaplessenc-itunes-to-ipod-aac b/tests/ref/fate/gaplessenc-itunes-to-ipod-aac
index f967ac05bc..1f89e9af85 100644
--- a/tests/ref/fate/gaplessenc-itunes-to-ipod-aac
+++ b/tests/ref/fate/gaplessenc-itunes-to-ipod-aac
@@ -5,7 +5,7 @@ duration_ts=103326
 [/STREAM]
 [FORMAT]
 start_time=0.000000
-duration=2.344000
+duration=2.342993
 [/FORMAT]
 packet|pts=-1024|dts=-1024|duration=1024|flags=KD|side_data|
 



More information about the ffmpeg-cvslog mailing list