From 4ed68fdfdc19705a09c99b93ec4a54167837a52a Mon Sep 17 00:00:00 2001 From: =?UTF-8?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 (cherry picked from commit f124b087eea442b65d809582527dfb5092a3463c) --- 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 82991c15dc..6215ca59ee 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -1074,8 +1074,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); @@ -1231,6 +1231,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. * diff --git a/libavformat/utils.c b/libavformat/utils.c index 6a5c0f066d..d12bbc26c6 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 4b95221b27..27f52e06e1 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, \