diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-09-16 14:14:47 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-09-16 14:24:11 +0200 |
commit | f276a490f01bd31b3c9b6111867745e72da7e59d (patch) | |
tree | 26979a20f820b8d32a9f5a00b7dfea500205d148 /libavformat/utils.c | |
parent | d214e5cfb414ea2b8cbcf3c4300288b130388d4a (diff) | |
parent | 3f7fd59d151a2773f0e2e93e56b6b13ec6e5334b (diff) | |
download | ffmpeg-f276a490f01bd31b3c9b6111867745e72da7e59d.tar.gz |
Merge commit '3f7fd59d151a2773f0e2e93e56b6b13ec6e5334b'
* commit '3f7fd59d151a2773f0e2e93e56b6b13ec6e5334b':
avformat: fix typo in avformat_close_input
mp3enc: write Xing TOC
mp3enc: support MPEG-2 and MPEG-2.5 in Xing header.
mp3enc: downgrade some errors in writing Xing frame to warnings
lavf: flush the output AVIOContext in av_write_trailer().
lavf: cosmetics, reformat av_write_trailer().
avio: flush the internal buffer in avio_close()
Enhance doc on asyncts audiofilter
cmdutils: avoid setting data pointers to invalid values in alloc_buffer()
libavcodec: remove av_destruct_packet_nofree()
Conflicts:
libavcodec/avpacket.c
libavformat/mp3enc.c
libavformat/nutenc.c
libavformat/utils.c
libavformat/version.h
tests/ref/lavf/voc
tests/ref/lavf/voc_s16
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/utils.c')
-rw-r--r-- | libavformat/utils.c | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/libavformat/utils.c b/libavformat/utils.c index 6847091eac..7152401de8 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -3056,8 +3056,11 @@ void av_close_input_file(AVFormatContext *s) void avformat_close_input(AVFormatContext **ps) { AVFormatContext *s = *ps; - AVIOContext *pb = (s->iformat && (s->iformat->flags & AVFMT_NOFILE)) || (s->flags & AVFMT_FLAG_CUSTOM_IO) ? - NULL : s->pb; + AVIOContext *pb = s->pb; + + if ((s->iformat && s->iformat->flags & AVFMT_NOFILE) || + (s->flags & AVFMT_FLAG_CUSTOM_IO)) + pb = NULL; flush_packet_queue(s); @@ -3761,34 +3764,38 @@ int av_write_trailer(AVFormatContext *s) { int ret, i; - for(;;){ + for (;;) { AVPacket pkt; - ret= interleave_packet(s, &pkt, NULL, 1); - if(ret<0) //FIXME cleanup needed for ret<0 ? + ret = interleave_packet(s, &pkt, NULL, 1); + if (ret < 0) //FIXME cleanup needed for ret<0 ? goto fail; - if(!ret) + if (!ret) break; - ret= s->oformat->write_packet(s, &pkt); + ret = s->oformat->write_packet(s, &pkt); if (ret >= 0) s->streams[pkt.stream_index]->nb_frames++; av_free_packet(&pkt); - if(ret<0) + if (ret < 0) goto fail; if(s->pb && s->pb->error) goto fail; } - if(s->oformat->write_trailer) + if (s->oformat->write_trailer) ret = s->oformat->write_trailer(s); + + if (!(s->oformat->flags & AVFMT_NOFILE)) + avio_flush(s->pb); + fail: if (s->pb) avio_flush(s->pb); - if(ret == 0) + if (ret == 0) ret = s->pb ? s->pb->error : 0; - for(i=0;i<s->nb_streams;i++) { + for (i = 0; i < s->nb_streams; i++) { av_freep(&s->streams[i]->priv_data); av_freep(&s->streams[i]->index_entries); } |