Browse Source

lavf/audiointerleave: check return value of av_new_packet()

Fixes CID733709.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
tags/n1.1
Paul B Mahol 13 years ago
parent
commit
3ca8a23288
1 changed files with 5 additions and 2 deletions
  1. +5
    -2
      libavformat/audiointerleave.c

+ 5
- 2
libavformat/audiointerleave.c View File

@@ -84,7 +84,8 @@ static int ff_interleave_new_audio_packet(AVFormatContext *s, AVPacket *pkt,
if (!size || (!flush && size == av_fifo_size(aic->fifo))) if (!size || (!flush && size == av_fifo_size(aic->fifo)))
return 0; 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); av_fifo_generic_read(aic->fifo, pkt->data, size, NULL);


pkt->dts = pkt->pts = aic->dts; 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) { if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
AVPacket new_pkt; AVPacket new_pkt;
int ret; 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); ret = ff_interleave_add_packet(s, &new_pkt, compare_ts);
if (ret < 0) if (ret < 0)
return ret; return ret;
} }
if (ret < 0)
return ret;
} }
} }




Loading…
Cancel
Save