mirror of
https://github.com/LibreELEC/LibreELEC.tv
synced 2025-09-24 19:46:01 +07:00
55 lines
1.6 KiB
Diff
55 lines
1.6 KiB
Diff
From 7ab07a6b9a8ac8a91213bcbba4a63dc9db03cb53 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Mon, 3 Dec 2018 23:48:04 +0100
|
|
Subject: [PATCH 1/6] avutil: add av_buffer_pool_reclaim()
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@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.21.0
|
|
|