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@passwd.hu>tags/n4.3
@@ -15,6 +15,9 @@ libavutil: 2017-10-21 | |||||
API changes, most recent first: | 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 | 2019-11-17 - 1c23abc88f - lavu 56.36.100 - eval API | ||||
Add av_expr_count_vars(). | Add av_expr_count_vars(). | ||||
@@ -20,6 +20,7 @@ | |||||
#include <stdint.h> | #include <stdint.h> | ||||
#include <string.h> | #include <string.h> | ||||
#include "avassert.h" | |||||
#include "buffer_internal.h" | #include "buffer_internal.h" | ||||
#include "common.h" | #include "common.h" | ||||
#include "mem.h" | #include "mem.h" | ||||
@@ -355,3 +356,10 @@ AVBufferRef *av_buffer_pool_get(AVBufferPool *pool) | |||||
return ret; | return ret; | ||||
} | } | ||||
void *av_buffer_pool_buffer_get_opaque(AVBufferRef *ref) | |||||
{ | |||||
BufferPoolEntry *buf = ref->buffer->opaque; | |||||
av_assert0(buf); | |||||
return buf->opaque; | |||||
} |
@@ -284,6 +284,19 @@ void av_buffer_pool_uninit(AVBufferPool **pool); | |||||
*/ | */ | ||||
AVBufferRef *av_buffer_pool_get(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); | |||||
/** | /** | ||||
* @} | * @} | ||||
*/ | */ | ||||
@@ -79,8 +79,8 @@ | |||||
*/ | */ | ||||
#define LIBAVUTIL_VERSION_MAJOR 56 | #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, \ | #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ | ||||
LIBAVUTIL_VERSION_MINOR, \ | LIBAVUTIL_VERSION_MINOR, \ | ||||