summaryrefslogtreecommitdiff
path: root/libavformat/utils.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-09-16 14:14:47 +0200
committerMichael Niedermayer <michaelni@gmx.at>2012-09-16 14:24:11 +0200
commitf276a490f01bd31b3c9b6111867745e72da7e59d (patch)
tree26979a20f820b8d32a9f5a00b7dfea500205d148 /libavformat/utils.c
parentd214e5cfb414ea2b8cbcf3c4300288b130388d4a (diff)
parent3f7fd59d151a2773f0e2e93e56b6b13ec6e5334b (diff)
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.c29
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);
}