From 8a273a746061a112e5e35066a8fd8e146d821a62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Tue, 24 Feb 2015 13:23:30 +0200 Subject: [PATCH] avio: Add an internal utility function for freeing dynamic buffers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Martin Storsjö --- libavformat/avio_internal.h | 7 +++++++ libavformat/aviobuf.c | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/libavformat/avio_internal.h b/libavformat/avio_internal.h index a8bcadd38b..f8c9c93a3d 100644 --- a/libavformat/avio_internal.h +++ b/libavformat/avio_internal.h @@ -139,4 +139,11 @@ int ffio_open_null_buf(AVIOContext **s); */ int ffio_close_null_buf(AVIOContext *s); +/** + * Free a dynamic buffer. + * + * @param s a pointer to an IO context opened by avio_open_dyn_buf() + */ +void ffio_free_dyn_buf(AVIOContext **s); + #endif /* AVFORMAT_AVIO_INTERNAL_H */ diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c index 5f848b20f9..8dc805a3ae 100644 --- a/libavformat/aviobuf.c +++ b/libavformat/aviobuf.c @@ -991,6 +991,16 @@ int avio_close_dyn_buf(AVIOContext *s, uint8_t **pbuffer) return size - padding; } +void ffio_free_dyn_buf(AVIOContext **s) +{ + uint8_t *tmp; + if (!*s) + return; + avio_close_dyn_buf(*s, &tmp); + av_free(tmp); + *s = NULL; +} + static int null_buf_write(void *opaque, uint8_t *buf, int buf_size) { DynBuffer *d = opaque;