diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2015-06-01 12:46:47 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2015-06-01 12:47:00 +0200 |
commit | e3485640308ed45f605b4ce7e718a89a2e66c2c6 (patch) | |
tree | 727521511d8ce921b969ae69fa52e2d668b391df | |
parent | c0d6afa3e617c8d5b24d0a98688314edc9bfbbcc (diff) | |
parent | e3c4eb87e4d9650d76f6d8d790a9b749b325e973 (diff) | |
download | ffmpeg-e3485640308ed45f605b4ce7e718a89a2e66c2c6.tar.gz |
Merge commit 'e3c4eb87e4d9650d76f6d8d790a9b749b325e973' into release/2.2
* commit 'e3c4eb87e4d9650d76f6d8d790a9b749b325e973':
avpacket: Check for and return errors in ff_interleave_add_packet()
Conflicts:
libavformat/audiointerleave.c
libavformat/internal.h
libavformat/mux.c
See: 4d7c71c36467331f1e0c0f17af9f371d33308a9c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavformat/audiointerleave.c | 10 | ||||
-rw-r--r-- | libavformat/internal.h | 2 | ||||
-rw-r--r-- | libavformat/mux.c | 13 |
3 files changed, 11 insertions, 14 deletions
diff --git a/libavformat/audiointerleave.c b/libavformat/audiointerleave.c index 2aa95f3dc6..c83faf78ac 100644 --- a/libavformat/audiointerleave.c +++ b/libavformat/audiointerleave.c @@ -104,7 +104,7 @@ int ff_audio_rechunk_interleave(AVFormatContext *s, AVPacket *out, AVPacket *pkt int (*get_packet)(AVFormatContext *, AVPacket *, AVPacket *, int), int (*compare_ts)(AVFormatContext *, AVPacket *, AVPacket *)) { - int i; + int i, ret; if (pkt) { AVStream *st = s->streams[pkt->stream_index]; @@ -118,12 +118,10 @@ int ff_audio_rechunk_interleave(AVFormatContext *s, AVPacket *out, AVPacket *pkt } av_fifo_generic_write(aic->fifo, pkt->data, pkt->size, NULL); } else { - int ret; // rewrite pts and dts to be decoded time line position pkt->pts = pkt->dts = aic->dts; aic->dts += pkt->duration; - ret = ff_interleave_add_packet(s, pkt, compare_ts); - if (ret < 0) + if ((ret = ff_interleave_add_packet(s, pkt, compare_ts)) < 0) return ret; } pkt = NULL; @@ -133,10 +131,8 @@ int ff_audio_rechunk_interleave(AVFormatContext *s, AVPacket *out, AVPacket *pkt AVStream *st = s->streams[i]; if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO) { AVPacket new_pkt; - int ret; while ((ret = interleave_new_audio_packet(s, &new_pkt, i, flush)) > 0) { - ret = ff_interleave_add_packet(s, &new_pkt, compare_ts); - if (ret < 0) + if ((ret = ff_interleave_add_packet(s, &new_pkt, compare_ts)) < 0) return ret; } if (ret < 0) diff --git a/libavformat/internal.h b/libavformat/internal.h index f19cebf22e..48e67421f9 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -91,7 +91,7 @@ void ff_program_add_stream_index(AVFormatContext *ac, int progid, unsigned int i * @return 0, or < 0 on error */ int ff_interleave_add_packet(AVFormatContext *s, AVPacket *pkt, - int (*compare)(AVFormatContext *, AVPacket *, AVPacket *)); + int (*compare)(AVFormatContext *, AVPacket *, AVPacket *)); void ff_read_frame_flush(AVFormatContext *s); diff --git a/libavformat/mux.c b/libavformat/mux.c index a5a16e5455..eb39cbb5e1 100644 --- a/libavformat/mux.c +++ b/libavformat/mux.c @@ -640,12 +640,12 @@ int av_write_frame(AVFormatContext *s, AVPacket *pkt) #define CHUNK_START 0x1000 int ff_interleave_add_packet(AVFormatContext *s, AVPacket *pkt, - int (*compare)(AVFormatContext *, AVPacket *, AVPacket *)) + int (*compare)(AVFormatContext *, AVPacket *, AVPacket *)) { + int ret; AVPacketList **next_point, *this_pktl; AVStream *st = s->streams[pkt->stream_index]; int chunked = s->max_chunk_size || s->max_chunk_duration; - int ret; this_pktl = av_mallocz(sizeof(AVPacketList)); if (!this_pktl) @@ -661,7 +661,7 @@ FF_ENABLE_DEPRECATION_WARNINGS av_assert0(pkt->size == UNCODED_FRAME_PACKET_SIZE); av_assert0(((AVFrame *)pkt->data)->buf); } else { - // duplicate the packet if it uses non-allocated memory + // Duplicate the packet if it uses non-allocated memory if ((ret = av_dup_packet(&this_pktl->pkt)) < 0) { av_free(this_pktl); return ret; @@ -716,6 +716,7 @@ next_non_null: s->streams[pkt->stream_index]->last_in_packet_buffer = *next_point = this_pktl; + return 0; } @@ -746,12 +747,12 @@ int ff_interleave_packet_per_dts(AVFormatContext *s, AVPacket *out, AVPacket *pkt, int flush) { AVPacketList *pktl; - int stream_count = 0, noninterleaved_count = 0; + int stream_count = 0; + int noninterleaved_count = 0; int i, ret; if (pkt) { - ret = ff_interleave_add_packet(s, pkt, interleave_compare_dts); - if (ret < 0) + if ((ret = ff_interleave_add_packet(s, pkt, interleave_compare_dts)) < 0) return ret; } |