X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Faudiointerleave.c;h=20323a2c587f39e0313bc23c61f7a65580b40e51;hb=67420b3de50202c0c71e3c9a57451b4adbcb16ab;hp=609a5117a3893fb16063c045b43a8710becd0834;hpb=2a56e65c3b3b53a3a51f290faa33ce0a852cd2a1;p=ffmpeg diff --git a/libavformat/audiointerleave.c b/libavformat/audiointerleave.c index 609a5117a38..20323a2c587 100644 --- a/libavformat/audiointerleave.c +++ b/libavformat/audiointerleave.c @@ -84,7 +84,8 @@ static int ff_interleave_new_audio_packet(AVFormatContext *s, AVPacket *pkt, if (!size || (!flush && size == av_fifo_size(aic->fifo))) return 0; - av_new_packet(pkt, size); + if (av_new_packet(pkt, size) < 0) + return AVERROR(ENOMEM); av_fifo_generic_read(aic->fifo, pkt->data, size, NULL); pkt->dts = pkt->pts = aic->dts; @@ -133,11 +134,13 @@ int ff_audio_rechunk_interleave(AVFormatContext *s, AVPacket *out, AVPacket *pkt if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO) { AVPacket new_pkt; int ret; - while (ff_interleave_new_audio_packet(s, &new_pkt, i, flush)) { + while ((ret = ff_interleave_new_audio_packet(s, &new_pkt, i, flush)) > 0) { ret = ff_interleave_add_packet(s, &new_pkt, compare_ts); if (ret < 0) return ret; } + if (ret < 0) + return ret; } }