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;