Signed-off-by: Jonas Karlman <jo...@kwiboo.se> --- libavutil/buffer.c | 13 +++++++++++++ libavutil/buffer.h | 5 +++++ 2 files changed, 18 insertions(+)
diff --git a/libavutil/buffer.c b/libavutil/buffer.c index 8d1aa5fa84..9c5d530c7a 100644 --- a/libavutil/buffer.c +++ b/libavutil/buffer.c @@ -272,6 +272,19 @@ static void buffer_pool_free(AVBufferPool *pool) av_freep(&pool); } +void av_buffer_pool_reclaim(AVBufferPool *pool) +{ + ff_mutex_lock(&pool->mutex); + while (pool->pool) { + BufferPoolEntry *buf = pool->pool; + pool->pool = buf->next; + + buf->free(buf->opaque, buf->data); + av_freep(&buf); + } + ff_mutex_unlock(&pool->mutex); +} + void av_buffer_pool_uninit(AVBufferPool **ppool) { AVBufferPool *pool; diff --git a/libavutil/buffer.h b/libavutil/buffer.h index 73b6bd0b14..fab745f853 100644 --- a/libavutil/buffer.h +++ b/libavutil/buffer.h @@ -266,6 +266,11 @@ AVBufferPool *av_buffer_pool_init2(int size, void *opaque, AVBufferRef* (*alloc)(void *opaque, int size), void (*pool_free)(void *opaque)); +/** + * Free all available buffers in a buffer pool. + */ + void av_buffer_pool_reclaim(AVBufferPool *pool); + /** * Mark the pool as being available for freeing. It will actually be freed only * once all the allocated buffers associated with the pool are released. Thus it -- 2.17.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".