[FFmpeg-devel] [PATCH] movenc: Ensure no separate moof written for empty track
Martin Storsjö
martin at martin.st
Thu Aug 12 23:26:42 EEST 2021
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 <sehuww at 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
More information about the ffmpeg-devel
mailing list