[FFmpeg-devel] [PATCHv2 1/2] avutil/buffer: add av_buffer_pool_buffer_get_opaque
Marton Balint
cus at passwd.hu
Sun Dec 22 22:48:11 EET 2019
In order to access the original opaque parameter of a buffer in the buffer
pool. (The buffer pool implementation overrides the normal opaque parameter but
also saves it so it is accessible).
v2: add assertion check before dereferencing the BufferPoolEntry.
Signed-off-by: Marton Balint <cus at passwd.hu>
---
doc/APIchanges | 3 +++
libavutil/buffer.c | 8 ++++++++
libavutil/buffer.h | 13 +++++++++++++
libavutil/version.h | 4 ++--
4 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/doc/APIchanges b/doc/APIchanges
index 401c65a753..5b8d801f06 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -15,6 +15,9 @@ libavutil: 2017-10-21
API changes, most recent first:
+2019-12-xx - xxxxxxxxxx - lavu 56.37.100 - buffer.h
+ Add av_buffer_pool_buffer_get_opaque().
+
2019-11-17 - 1c23abc88f - lavu 56.36.100 - eval API
Add av_expr_count_vars().
diff --git a/libavutil/buffer.c b/libavutil/buffer.c
index f0034b026a..6d9cb7428e 100644
--- a/libavutil/buffer.c
+++ b/libavutil/buffer.c
@@ -20,6 +20,7 @@
#include <stdint.h>
#include <string.h>
+#include "avassert.h"
#include "buffer_internal.h"
#include "common.h"
#include "mem.h"
@@ -355,3 +356,10 @@ AVBufferRef *av_buffer_pool_get(AVBufferPool *pool)
return ret;
}
+
+void *av_buffer_pool_buffer_get_opaque(AVBufferRef *ref)
+{
+ BufferPoolEntry *buf = ref->buffer->opaque;
+ av_assert0(buf);
+ return buf->opaque;
+}
diff --git a/libavutil/buffer.h b/libavutil/buffer.h
index 73b6bd0b14..e0f94314f4 100644
--- a/libavutil/buffer.h
+++ b/libavutil/buffer.h
@@ -284,6 +284,19 @@ void av_buffer_pool_uninit(AVBufferPool **pool);
*/
AVBufferRef *av_buffer_pool_get(AVBufferPool *pool);
+/**
+ * Query the original opaque parameter of an allocated buffer in the pool.
+ *
+ * @param ref a buffer reference to a buffer returned by av_buffer_pool_get.
+ * @return the opaque parameter set by the buffer allocator function of the
+ * buffer pool.
+ *
+ * @note the opaque parameter of ref is used by the buffer pool implementation,
+ * therefore you have to use this function to access the original opaque
+ * parameter of an allocated buffer.
+ */
+void *av_buffer_pool_buffer_get_opaque(AVBufferRef *ref);
+
/**
* @}
*/
diff --git a/libavutil/version.h b/libavutil/version.h
index e18163388d..4de0fa1fc3 100644
--- a/libavutil/version.h
+++ b/libavutil/version.h
@@ -79,8 +79,8 @@
*/
#define LIBAVUTIL_VERSION_MAJOR 56
-#define LIBAVUTIL_VERSION_MINOR 36
-#define LIBAVUTIL_VERSION_MICRO 101
+#define LIBAVUTIL_VERSION_MINOR 37
+#define LIBAVUTIL_VERSION_MICRO 100
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
LIBAVUTIL_VERSION_MINOR, \
--
2.16.4
More information about the ffmpeg-devel
mailing list