The BSF API treats such packets as signalling EOF and therefore such a packet might corrupt the BSF state. In such a case, the guarantee that av_interleaved_write_frame() always frees the packet is not upheld.
Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@outlook.com> --- My first attempt was to disallow such packets, but the movenc test explicitly used them (see signal_init_ts()), so there seems to be a use for them. libavformat/mux.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libavformat/mux.c b/libavformat/mux.c index 6ba1306f2b..dbcd3835c2 100644 --- a/libavformat/mux.c +++ b/libavformat/mux.c @@ -784,6 +784,13 @@ static int prepare_input_packet(AVFormatContext *s, AVStream *st, AVPacket *pkt) if (st->internal->is_intra_only) pkt->flags |= AV_PKT_FLAG_KEY; + if (!pkt->data && !pkt->side_data_elems) { + /* Such empty packets signal EOS for the BSF API; so sanitize + * the packet by allocating data of size 0 (+ padding). */ + av_buffer_unref(&pkt->buf); + return av_packet_make_refcounted(pkt); + } + return 0; } -- 2.30.2 _______________________________________________ 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".