On Thu, 12 Aug 2021, Hu Weiwen wrote:

track->mdat_buf can be not NULL while the track is still empty if the
last packet write failed.

Signed-off-by: Hu Weiwen <[email protected]>
---
libavformat/movenc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index bcc202300bb..a460cd9adae 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -5422,7 +5422,7 @@ static int mov_flush_fragment(AVFormatContext *s, int 
force)
            duration = track->start_dts + track->track_duration -
                       track->cluster[0].dts;
        if (mov->flags & FF_MOV_FLAG_SEPARATE_MOOF) {
-            if (!track->mdat_buf)
+            if (!track->entry)
                continue;
            mdat_size = avio_tell(track->mdat_buf);
            moof_tracks = i;
--
2.25.1

Ok I guess.

If this situation happens (we allocate mdat_buf but fail to write a sample to it), I guess we can end up with some half-written packet at the start of it, which will be written as part of the next fragment. As long as byte offsets end up correct so the extra data at the start of the buffer is ignored I guess that'll work fine (I didn't check right now).

// Martin

_______________________________________________
ffmpeg-devel mailing list
[email protected]
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".

Reply via email to