OSDN Git Service

Add a av_close_input_stream function
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>
Wed, 19 Dec 2007 14:07:13 +0000 (14:07 +0000)
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>
Wed, 19 Dec 2007 14:07:13 +0000 (14:07 +0000)
Originally committed as revision 11269 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/avformat.h
libavformat/utils.c

index b9e83bf..ac41fee 100644 (file)
@@ -662,6 +662,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).
  *
  * @param s media file handle
index 386fe60..f4cf10f 100644 (file)
@@ -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;