On 11/22/2024 5:32 AM, Martin Storsjö wrote:
On Thu, 21 Nov 2024, James Almer wrote:

Instead of expecting the DASH muxer manually setting this, just do it here. This is required to write a simple edit list for audio tracks with triming
samples, where negative CTS offsets can't be used.

Signed-off-by: James Almer <jamr...@gmail.com>
---
libavformat/movenc.c       |  2 +-
libavformat/tests/movenc.c |  6 +++---
tests/ref/fate/movenc      | 14 +++++++-------
3 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index 7cdec28835..cc67e274e8 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -7641,7 +7641,7 @@ static int mov_init(AVFormatContext *s)
                      FF_MOV_FLAG_FRAGMENT | FF_MOV_FLAG_NEGATIVE_CTS_OFFSETS;
    if (mov->flags & FF_MOV_FLAG_DASH)
        mov->flags |= FF_MOV_FLAG_FRAGMENT | FF_MOV_FLAG_EMPTY_MOOV |
-                      FF_MOV_FLAG_DEFAULT_BASE_MOOF;
+                      FF_MOV_FLAG_DEFAULT_BASE_MOOF | FF_MOV_FLAG_DELAY_MOOV;
    if (mov->flags & FF_MOV_FLAG_CMAF)
        mov->flags |= FF_MOV_FLAG_FRAGMENT | FF_MOV_FLAG_EMPTY_MOOV |
                      FF_MOV_FLAG_DEFAULT_BASE_MOOF | FF_MOV_FLAG_NEGATIVE_CTS_OFFSETS;

I'm a little reluctant to do this; IIRC the delay_moov flag significantly changes the sequence of what boxes gets output at what time, which affects things for API users integrating this into segmentation setups. (I presume that's why you changed the movenc test case as well?)

The changes in md5 hashes there are only the missing dash brand in the output, afaict. I removed the dash flag (which is not what the test was about anyway) to make sure delay_moov was not included in the test that only wanted empty_moov.


That's why I'd like to keep delay_moov an explicit opt-in - even if it kinda is necessary to get the timing entirely correct. Users that don't need it, and rely on getting the whole moov during avformat_write_header, would be broken by this change.

But who uses the mov muxer with the dash movflag on its own instead of through the dash muxer, which explicitly enables delay_moov? afaik that flag only ensures the brand is added. Functionality wise it does nothing more than select other flags. Or rather, it should only do that, right? And if it does not, whatever code looks for it should be changed to look for the fragment flag instead.

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to