From patchwork Wed Dec 9 20:25:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonas Karlman X-Patchwork-Id: 24457 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id A327C44BD89 for ; Wed, 9 Dec 2020 22:26:03 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 80AD968A596; Wed, 9 Dec 2020 22:26:03 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from o1.b.az.sendgrid.net (o1.b.az.sendgrid.net [208.117.55.133]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 91D7B68A0FE for ; Wed, 9 Dec 2020 22:25:56 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; h=from:subject:in-reply-to:references:to:cc:content-type: content-transfer-encoding; s=001; bh=RKtcqzSfrJXcwHHdzVOjSdIuf+5BUfAtH0gNy3e2Wyg=; b=MzqNqIL7B2VyYPRl9iUS6i1nniwubXx/LktL33W8Gt+dCkitIS37c0usuyBzLBYRA/qL Pud3EEjU+3GZhWzmAten/xVPgef4CdDIBFHNZSY9WaEbvC8FKkTd33tXN4xRixoKkbwPw8 kICHmgTUjPg1EpKXv0Q7FGfqf+DeG5xIg= Received: by filterdrecv-p3mdw1-6f5f88f6c4-sxgfc with SMTP id filterdrecv-p3mdw1-6f5f88f6c4-sxgfc-20-5FD132AC-52 2020-12-09 20:25:16.752345081 +0000 UTC m=+516169.827130158 Received: from bionic.localdomain (unknown) by ismtpd0005p1lon1.sendgrid.net (SG) with ESMTP id hP_fnrA8R9OgCklYtvLeBQ Wed, 09 Dec 2020 20:25:16.560 +0000 (UTC) From: Jonas Karlman Date: Wed, 09 Dec 2020 20:25:16 +0000 (UTC) Message-Id: <20201209202513.27449-2-jonas@kwiboo.se> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201209202513.27449-1-jonas@kwiboo.se> References: <20201209202513.27449-1-jonas@kwiboo.se> X-SG-EID: TdbjyGynYnRZWhH+7lKUQJL+ZxmxpowvO2O9SQF5CwCVrYgcwUXgU5DKUU3QxAfZekEeQsTe+RrMu3cja6a0h7KPMaljdhUgW26hRwWxX/un62EHbw8PhlrzpkVq4ChqBtaSgaQUrykHbqgXXhfcWXFmgW8m285+AgN4w7TBCfsvXJmr5SeFHceBERcb/LiRtvCZLp31SQ+W7lUvQ2l/SKFFZoIaO6XvleODHZZl6lCXCw+mPZKPCSR1UmlF09xA To: ffmpeg-devel@ffmpeg.org X-Entity-ID: wSPGWgGSXUap++qShBI+ag== Subject: [FFmpeg-devel] [PATCH 1/5] avutil/buffer: add av_buffer_pool_flush() X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Nicolas Dufresne , Jernej Skrabec , Boris Brezillon , Ezequiel Garcia , Jonas Karlman MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Jonas Karlman --- 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); +} + void av_buffer_pool_uninit(AVBufferPool **ppool) { AVBufferPool *pool; diff --git a/libavutil/buffer.h b/libavutil/buffer.h index fd4e381efa..cef2d08f5a 100644 --- a/libavutil/buffer.h +++ b/libavutil/buffer.h @@ -283,6 +283,11 @@ AVBufferPool *av_buffer_pool_init2(int size, void *opaque, AVBufferRef* (*alloc)(void *opaque, int size), void (*pool_free)(void *opaque)); +/** + * Free all available buffers in a buffer pool. + */ + void av_buffer_pool_flush(AVBufferPool *pool); + /** * Mark the pool as being available for freeing. It will actually be freed only * once all the allocated buffers associated with the pool are released. Thus it diff --git a/libavutil/version.h b/libavutil/version.h index 9b311b5b27..9db2797aee 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -79,7 +79,7 @@ */ #define LIBAVUTIL_VERSION_MAJOR 56 -#define LIBAVUTIL_VERSION_MINOR 62 +#define LIBAVUTIL_VERSION_MINOR 63 #define LIBAVUTIL_VERSION_MICRO 100 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \