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

"zhilizhao(赵志立)" quinkblack at foxmail.com
Tue Aug 16 10:18:53 EEST 2022



> On Aug 16, 2022, at 7:14 AM, James Almer <jamrial at gmail.com> wrote:
> 
> 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.

The patch LGTM. However, does the ticket indicts some issue related to
the mov muxer, which may be hidden by the patch?

> 
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
> 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 6ee6ed0950..fee9c39f39 100644
> --- a/libavformat/mov.c
> +++ b/libavformat/mov.c
> @@ -1516,10 +1516,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|
> 
> -- 
> 2.37.1
> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".



More information about the ffmpeg-devel mailing list