[FFmpeg-devel] [PATCH 1/5] avutil/buffer: add av_buffer_pool_flush()
Lynne
dev at lynne.ee
Thu Dec 10 00:09:41 EET 2020
Dec 9, 2020, 21:25 by jonas at kwiboo.se:
> Signed-off-by: Jonas Karlman <jonas at kwiboo.se>
> ---
> doc/APIchanges | 3 +++
> libavutil/buffer.c | 13 +++++++++++++
> libavutil/buffer.h | 5 +++++
> libavutil/version.h | 2 +-
> 4 files changed, 22 insertions(+), 1 deletion(-)
>
> diff --git a/doc/APIchanges b/doc/APIchanges
> index 3fb9e12525..4a739ce453 100644
> --- a/doc/APIchanges
> +++ b/doc/APIchanges
> @@ -15,6 +15,9 @@ libavutil: 2017-10-21
>
> API changes, most recent first:
>
> +2020-xx-xx - xxxxxxxxxx - lavu 56.63.100 - buffer.h
> + Add av_buffer_pool_flush().
> +
> 2020-12-03 - xxxxxxxxxx - lavu 56.62.100 - timecode.h
> Add av_timecode_init_from_components.
>
> diff --git a/libavutil/buffer.c b/libavutil/buffer.c
> index d67b4bbdaf..a0683664cf 100644
> --- a/libavutil/buffer.c
> +++ b/libavutil/buffer.c
> @@ -300,6 +300,19 @@ static void buffer_pool_free(AVBufferPool *pool)
> av_freep(&pool);
> }
>
> +void av_buffer_pool_flush(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);
> +}
>
This frees all buffers from the pool, which an API user probably has references to,
leading to very nasty crashes. I can't see how this is even useful nor needed.
More information about the ffmpeg-devel
mailing list