From 2506fd54676003e8fce6b2b30464f3463beb3e87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reimar=20D=C3=B6ffinger?= Date: Wed, 19 Dec 2007 14:07:13 +0000 Subject: [PATCH] Add a av_close_input_stream function Originally committed as revision 11269 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/avformat.h | 6 ++++++ libavformat/utils.c | 12 +++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/libavformat/avformat.h b/libavformat/avformat.h index b9e83bf73e..ac41fee95f 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -661,6 +661,12 @@ int av_read_play(AVFormatContext *s); */ int av_read_pause(AVFormatContext *s); +/** + * Free a AVFormatContext allocated by av_open_input_stream. + * @param s context to free + */ +void av_close_input_stream(AVFormatContext *s); + /** * Close a media file (but not its codecs). * diff --git a/libavformat/utils.c b/libavformat/utils.c index 386fe60718..f4cf10f14d 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -2056,7 +2056,7 @@ int av_read_pause(AVFormatContext *s) return AVERROR(ENOSYS); } -void av_close_input_file(AVFormatContext *s) +void av_close_input_stream(AVFormatContext *s) { int i; AVStream *st; @@ -2085,12 +2085,18 @@ void av_close_input_file(AVFormatContext *s) av_freep(&s->programs[i]); } flush_packet_queue(s); - if (!(s->iformat->flags & AVFMT_NOFILE)) - url_fclose(s->pb); av_freep(&s->priv_data); av_free(s); } +void av_close_input_file(AVFormatContext *s) +{ + ByteIOContext *pb = s->iformat->flags & AVFMT_NOFILE ? NULL : s->pb; + av_close_input_stream(s); + if (pb) + url_fclose(pb); +} + AVStream *av_new_stream(AVFormatContext *s, int id) { AVStream *st;