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 <seh...@mail.scut.edu.cn>
---
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
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".