summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Nagy <ronag89@gmail.com>2012-04-16 08:17:25 +0200
committerAnton Khirnov <anton@khirnov.net>2012-07-20 21:06:18 +0200
commitb70d89a033dacf53758256f875f1b23ce0ae13f1 (patch)
tree430b0d376ca386efaa49062d3d8ed2de5df44d9c
parentce64e5bfd11ae63af0fb10317a2aea6f7501be62 (diff)
lavfi: add avfilter_unref_bufferp()
Signed-off-by: Anton Khirnov <anton@khirnov.net>
-rw-r--r--doc/APIchanges3
-rw-r--r--libavfilter/avfilter.h12
-rw-r--r--libavfilter/buffer.c6
3 files changed, 21 insertions, 0 deletions
diff --git a/doc/APIchanges b/doc/APIchanges
index f936d5feda..8770b6d570 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -13,6 +13,9 @@ libavutil: 2011-04-18
API changes, most recent first:
+2012-07-xx - xxxxxxx - lavfi 3.0.0 - avfilter.h
+ Add avfilter_unref_bufferp().
+
2012-07-10 - 5fade8a - lavu 51.37.0
Add av_malloc_array() and av_mallocz_array()
diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h
index 10d64ad614..7fbdd8a2fb 100644
--- a/libavfilter/avfilter.h
+++ b/libavfilter/avfilter.h
@@ -195,9 +195,21 @@ AVFilterBufferRef *avfilter_ref_buffer(AVFilterBufferRef *ref, int pmask);
* buffer, the buffer itself is also automatically freed.
*
* @param ref reference to the buffer, may be NULL
+ *
+ * @note it is recommended to use avfilter_unref_bufferp() instead of this
+ * function
*/
void avfilter_unref_buffer(AVFilterBufferRef *ref);
+/**
+ * Remove a reference to a buffer and set the pointer to NULL.
+ * If this is the last reference to the buffer, the buffer itself
+ * is also automatically freed.
+ *
+ * @param ref pointer to the buffer reference
+ */
+void avfilter_unref_bufferp(AVFilterBufferRef **ref);
+
#if FF_API_AVFILTERPAD_PUBLIC
/**
* A filter pad used for either input or output.
diff --git a/libavfilter/buffer.c b/libavfilter/buffer.c
index be0da26ea1..e3ebc9b8c7 100644
--- a/libavfilter/buffer.c
+++ b/libavfilter/buffer.c
@@ -84,6 +84,12 @@ void avfilter_unref_buffer(AVFilterBufferRef *ref)
av_free(ref);
}
+void avfilter_unref_bufferp(AVFilterBufferRef **ref)
+{
+ avfilter_unref_buffer(*ref);
+ *ref = NULL;
+}
+
int avfilter_copy_frame_props(AVFilterBufferRef *dst, const AVFrame *src)
{
dst->pts = src->pts;