]> git.sesse.net Git - ffmpeg/commit
movenc: Present durations in mvhd/tkhd/mdhd as they are after edits
authorMartin Storsjö <martin@martin.st>
Sat, 19 Dec 2020 22:45:42 +0000 (00:45 +0200)
committerMartin Storsjö <martin@martin.st>
Fri, 15 Jan 2021 13:01:03 +0000 (15:01 +0200)
commitc2424b1f35a1c6c06f1f9fe5f77a7157ed84e1cd
tree69adc27588c6ee103aa2ae9a61c06bbb656ea719
parentd4902751cb111d8f66d481d670cad079228e9f73
movenc: Present durations in mvhd/tkhd/mdhd as they are after edits

If the edit lists remove parts of the output timeline, or add a
delay to it, this should be included in the mvhd/tkhd/mdhd durations,
which should correspond to the edit lists.

For tracks starting with pts < 0, the edit list trims out the segment
before pts=0. For tracks starting with pts > 0, a delay element is
added in the edit list, delaying the start of the track data.

In both cases, the practical effect is that the post-edit output
is as if the track had started with pts = 0. Thus calculate the range
from pts=0 to end_pts, for the purposes of mvhd/tkhd/mdhd, unless
edit lists explicitly are disabled.

mov_write_edts_tag needs to operate on the actual pts duration of
the track samples, not the duration that already takes the edit
list effect into account.

Signed-off-by: Martin Storsjö <martin@martin.st>
libavformat/movenc.c
tests/ref/fate/copy-trac3074
tests/ref/fate/gaplessenc-itunes-to-ipod-aac
tests/ref/fate/gaplessenc-pcm-to-mov-aac
tests/ref/fate/movenc