PR #23208 opened by Zhao Zhili (quink)
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23208
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23208.patch

When a tmcd or similar metadata track references multiple source
tracks, the per-iteration assignment overwrote track->track_duration
on each loop step, leaving it set to whatever the last source happened
to be.


>From 1e337d84580247f00eea4aa29d0e22b84fce9075 Mon Sep 17 00:00:00 2001
From: Zhao Zhili <[email protected]>
Date: Mon, 18 May 2026 17:58:49 +0800
Subject: [PATCH] avformat/movenc: don't overwrite track_duration on every
 src_track

When a tmcd or similar metadata track references multiple source
tracks, the per-iteration assignment overwrote track->track_duration
on each loop step, leaving it set to whatever the last source happened
to be.
---
 libavformat/movenc.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index 10ea818dd3..f645296372 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -5353,7 +5353,12 @@ static int mov_write_moov_tag(AVIOContext *pb, 
MOVMuxContext *mov,
                 int ret = mov_add_tref_id(mov, tag, track->track_id);
                 if (ret < 0)
                     return ret;
-                //src_trk may have a different timescale than the tmcd track
+            }
+            if (track->nb_src_track) {
+                /* Derive the duration from the first source track, matching
+                 * the convention used by get_pts_range() and the rtp/lvc1
+                 * branches above. The source may use a different timescale. */
+                int src_trk = track->src_track[0];
                 track->track_duration = 
av_rescale(mov->tracks[src_trk].track_duration,
                                                    track->timescale,
                                                    
mov->tracks[src_trk].timescale);
-- 
2.52.0

_______________________________________________
ffmpeg-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to