[FFmpeg-devel] [PATCH] avformat/movenc: fix duration in mdhd box

Zhao Zhili quinkblack at foxmail.com
Fri Dec 17 15:34:09 EET 2021


It's the duration of this media, should not take account of
editlist.
---
 libavformat/movenc.c  | 9 +++++++--
 tests/ref/fate/movenc | 2 +-
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index 0f912dd012..643beac6f2 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -2970,8 +2970,13 @@ static int64_t calc_pts_duration(MOVMuxContext *mov, MOVTrack *track)
 static int mov_write_mdhd_tag(AVIOContext *pb, MOVMuxContext *mov,
                               MOVTrack *track)
 {
-    int64_t duration = calc_pts_duration(mov, track);
-    int version = duration < INT32_MAX ? 0 : 1;
+    int64_t start, end;
+    int64_t duration;
+    int version;
+
+    get_pts_range(mov, track, &start, &end);
+    duration = end - start;
+    version = duration < INT32_MAX ? 0 : 1;
 
     if (track->mode == MODE_ISM)
         version = 1;
diff --git a/tests/ref/fate/movenc b/tests/ref/fate/movenc
index 81ea75f372..19e4e291b8 100644
--- a/tests/ref/fate/movenc
+++ b/tests/ref/fate/movenc
@@ -7,7 +7,7 @@ write_data len 36, time nopts, type header atom ftyp
 write_data len 2761, time nopts, type header atom -
 write_data len 908, time 966667, type sync atom moof
 write_data len 110, time nopts, type trailer atom -
-caf0876986b5f033efc0958c338289cc 3815 non-empty-moov-elst
+9d260d424e9de4626163fd25ccce5bab 3815 non-empty-moov-elst
 write_data len 36, time nopts, type header atom ftyp
 write_data len 2669, time nopts, type header atom -
 write_data len 908, time 1000000, type sync atom moof
-- 
2.31.1



More information about the ffmpeg-devel mailing list