From f124b087eea442b65d809582527dfb5092a3463c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Martin=20Storsj=C3=B6?= Date: Fri, 4 Feb 2011 12:04:16 +0200 Subject: [PATCH] libavformat: Add a function for freeing an AVFormatContext This function is useful for freeing data structures allocated by muxers, which currently have to be freed manually by the caller. Signed-off-by: Ronald S. Bultje --- libavformat/avformat.h | 10 ++++++++-- libavformat/utils.c | 11 ++++++++--- libavformat/version.h | 2 +- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/libavformat/avformat.h b/libavformat/avformat.h index f9f9be5b0..83289e460 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -1072,8 +1072,8 @@ attribute_deprecated AVFormatContext *av_alloc_format_context(void); /** * Allocate an AVFormatContext. - * Can be freed with av_free() but do not forget to free everything you - * explicitly allocated as well! + * avformat_free_context() can be used to free the context and everything + * allocated by the framework within it. */ AVFormatContext *avformat_alloc_context(void); @@ -1230,6 +1230,12 @@ void av_close_input_stream(AVFormatContext *s); void av_close_input_file(AVFormatContext *s); /** + * Free an AVFormatContext and all its streams. + * @param s context to free + */ +void avformat_free_context(AVFormatContext *s); + +/** * Add a new stream to a media file. * * Can only be called in the read_header() function. If the flag diff --git a/libavformat/utils.c b/libavformat/utils.c index 6a5c0f066..d12bbc26c 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -2556,12 +2556,17 @@ int av_read_pause(AVFormatContext *s) void av_close_input_stream(AVFormatContext *s) { - int i; - AVStream *st; - flush_packet_queue(s); if (s->iformat->read_close) s->iformat->read_close(s); + avformat_free_context(s); +} + +void avformat_free_context(AVFormatContext *s) +{ + int i; + AVStream *st; + for(i=0;inb_streams;i++) { /* free all data in a stream component */ st = s->streams[i]; diff --git a/libavformat/version.h b/libavformat/version.h index 4b95221b2..27f52e06e 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -24,7 +24,7 @@ #include "libavutil/avutil.h" #define LIBAVFORMAT_VERSION_MAJOR 52 -#define LIBAVFORMAT_VERSION_MINOR 95 +#define LIBAVFORMAT_VERSION_MINOR 96 #define LIBAVFORMAT_VERSION_MICRO 0 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ -- 2.11.0