From patchwork Mon Apr 8 20:12:01 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonas Karlman X-Patchwork-Id: 12648 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 BD7E3448624 for ; Mon, 8 Apr 2019 23:12:09 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9E74368AC9A; Mon, 8 Apr 2019 23:12:09 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-oln040092065088.outbound.protection.outlook.com [40.92.65.88]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E35EB68AC1E for ; Mon, 8 Apr 2019 23:12:02 +0300 (EEST) Received: from DB5EUR01FT044.eop-EUR01.prod.protection.outlook.com (10.152.4.58) by DB5EUR01HT192.eop-EUR01.prod.protection.outlook.com (10.152.5.121) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1771.16; Mon, 8 Apr 2019 20:12:01 +0000 Received: from AM3PR03MB0966.eurprd03.prod.outlook.com (10.152.4.58) by DB5EUR01FT044.mail.protection.outlook.com (10.152.4.182) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1771.16 via Frontend Transport; Mon, 8 Apr 2019 20:12:01 +0000 Received: from AM3PR03MB0966.eurprd03.prod.outlook.com ([fe80::c89:4e52:34c1:7009]) by AM3PR03MB0966.eurprd03.prod.outlook.com ([fe80::c89:4e52:34c1:7009%5]) with mapi id 15.20.1771.016; Mon, 8 Apr 2019 20:12:01 +0000 From: Jonas Karlman To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [RFC 1/6] avutil: add av_buffer_pool_reclaim() Thread-Index: AQHU7kdTEwejKkpPFUWHbGZMyIqPsw== Date: Mon, 8 Apr 2019 20:12:01 +0000 Message-ID: References: In-Reply-To: Accept-Language: sv-SE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM6PR03CA0034.eurprd03.prod.outlook.com (2603:10a6:20b::47) To AM3PR03MB0966.eurprd03.prod.outlook.com (2a01:111:e400:884c::23) x-incomingtopheadermarker: OriginalChecksum:FE3C9D329DC12524FB14C83FAE94CC4D72FF3029E0BE2917AAAB4EB2B840D31B; UpperCasedChecksum:DF455225F9AC80D17A6EDF916E4F35ABE5F0F23EA1B92166726598F53956B23C; SizeAsReceived:7566; Count:51 x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.17.1 x-tmn: [EUNdIutZszw7503z2o/rEWOu7YV8bbiN] x-microsoft-original-message-id: <20190408201147.4379-1-jonas@kwiboo.se> x-ms-publictraffictype: Email x-incomingheadercount: 51 x-eopattributedmessage: 0 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(20181119110)(201702061078)(5061506573)(5061507331)(1603103135)(2017031320274)(2017031323274)(2017031324274)(2017031322404)(1601125500)(1603101475)(1701031045); SRVR:DB5EUR01HT192; x-ms-traffictypediagnostic: DB5EUR01HT192: x-microsoft-antispam-message-info: nKWPiAfXXxuNP2OcoWptFw64EFio+KJ7Yz0pYYibXkXMxK4YxsT2vTmDc2hLj3KG MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 268b9e45-f129-4ba0-9ba0-08d6bc5e75f0 X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Apr 2019 20:12:01.6668 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5EUR01HT192 Subject: [FFmpeg-devel] [RFC 1/6] avutil: add av_buffer_pool_reclaim() 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: "jernej.skrabec@siol.net" , Jonas Karlman Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Jonas Karlman --- libavutil/buffer.c | 13 +++++++++++++ libavutil/buffer.h | 5 +++++ 2 files changed, 18 insertions(+) diff --git a/libavutil/buffer.c b/libavutil/buffer.c index 8d1aa5fa84..9c5d530c7a 100644 --- a/libavutil/buffer.c +++ b/libavutil/buffer.c @@ -272,6 +272,19 @@ static void buffer_pool_free(AVBufferPool *pool) av_freep(&pool); } +void av_buffer_pool_reclaim(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 73b6bd0b14..fab745f853 100644 --- a/libavutil/buffer.h +++ b/libavutil/buffer.h @@ -266,6 +266,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_reclaim(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