From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 56FF547548 for ; Thu, 12 Oct 2023 13:50:17 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4C14768C9BE; Thu, 12 Oct 2023 16:50:15 +0300 (EEST) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2058.outbound.protection.outlook.com [40.92.89.58]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5391C68C605 for ; Thu, 12 Oct 2023 16:50:06 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lZkKdwhVr8XTMkU54owNzftbG5WgPby99/UpUNoCaHx56UEEM31Z4At8tamiA4jcIIA/pqmFgPFS01uLl+JBX4L+BobSDLqXGHs/Zr/H+q8hbNKmvwD4P6LjtkoWJz+9euxCClgDY9GvaczqNEwOW6Z9xHYD6zRqNJELIKqQk3GQwiua+1uT4zUS0slzQyCpiukhyi1Uc4X6kCykzzUio3wbszfkyCqJnJBR9scIAJpHnG+fPD6K0QHBsxDWjroryT0PAvTPlpciADuaiXDrVataEh3i181avwZELPBHjivKr+cVemw5DA+xkpdwfIJL+ouZkBRoCkdPd6ryf0BfHg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=hfWaUimOo8o6meWMvJ8e/KOzlar2H1xqWnMceNmXvHk=; b=LCT7TwJRbuyxLpYsFvANCzqrKURxwVFl/fjS57FDZwjl6t4tXVFLhVk0gAGzz8r/PBoJhNe+9y7aY9H85fmllF+c4X/MR9i5XGS+nIHPq4eAEJKAI2CMXIBGfD4AFqReJQFTI5Sc+7eSuk10VFoJskv+7aXRRlUCDzAo4JCB903jikrHUvwLFxPHXiPvtEVfbyQJU2LXY9QGSFZ8fgSN53K3cyCF7mnM95cfaKXPD44eT38KZIgI2rEJ0C3WgG/WvnygAwq/7J26r+l0XHLtBy9EcLNmAdP0Xg2St2XhtY+bDWKUT81MBkRdImt+Uj00BPUg+qhI0s8Mz0G+qEiRLg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hfWaUimOo8o6meWMvJ8e/KOzlar2H1xqWnMceNmXvHk=; b=NBuHOPgOwpVHHOf+RRSQSzsSbxcf4Oamo1Wl3pZfHwNEL9xxn5sWQlC4wPgxk/M26Iej9tpnteoaaRfZdDYjGMuWPDl4KL55wV/cWoTs0mIuD8qEZVpjftnT6mfPwGO+cmzfApnQgHIaeDvnv2La0IbPfDqyZuizWmNzhVRAsMFZ8wmWUXTdFTGE6fSOYbmFHZqgE8yTmq2M+hN/EAEliPlk8297x/oWcbrbBp4etQ4D3KNmUlVYQUl0ROvuNrRwjTZ8gmQKOVTkbe1nyqLfc4vNYBApppMldmzePewIF6ILfdT+GrT7vj34y8heVg1TnjAe4KdaGXyXSax+yi6DKw== Received: from DU0P250MB0747.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:3cb::16) by AM8P250MB0019.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:3da::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.45; Thu, 12 Oct 2023 13:50:04 +0000 Received: from DU0P250MB0747.EURP250.PROD.OUTLOOK.COM ([fe80::ec5a:5f06:b873:e81b]) by DU0P250MB0747.EURP250.PROD.OUTLOOK.COM ([fe80::ec5a:5f06:b873:e81b%4]) with mapi id 15.20.6863.043; Thu, 12 Oct 2023 13:50:04 +0000 Message-ID: Date: Thu, 12 Oct 2023 15:51:18 +0200 User-Agent: Mozilla Thunderbird Content-Language: en-US To: FFmpeg development discussions and patches References: <169711587240.32606.8092556431828354289@lain.khirnov.net> From: Andreas Rheinhardt In-Reply-To: <169711587240.32606.8092556431828354289@lain.khirnov.net> X-TMN: [JZPPklYPcCeLsMV+ZF4vehEDLeNPaD3QTpJF8SXOS7k=] X-ClientProxiedBy: FR4P281CA0181.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:ca::7) To DU0P250MB0747.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:3cb::16) X-Microsoft-Original-Message-ID: <54d3e440-b7d1-4e4d-a10c-ee28832043ba@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU0P250MB0747:EE_|AM8P250MB0019:EE_ X-MS-Office365-Filtering-Correlation-Id: eb987c42-910b-48b5-11da-08dbcb2a22c0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: AoGyNboMgvcKoEQ/Hd34aE/WUsSQfv5GkIuxtnDkjQp6Ow0llE+2LaZR0QoJ4kNrQLC0kCzZNYUp3zuJVx4fD4VGG4iFkSZA8+ibUdsJQQfc/ROBrrFXO+Jw5zzkEE4WtQI2VOE134Nx3rbRWLM6ZE+YTjiIvMUuqHkt57zRFQ4BwPrvXBTXWI5Jax4rqNPHIREhp6+fm/cq1Vv1bZg55BvaLH6MzTa9ETfhSDzGlAIIXdHAfLvMqcbDxlNcP6tCJfMeZYFcfWSP7eJ79updHjmpnMKLErxG7y+Y8CCTLosFMqJ4kDU+bvNhK0LgVYbSwbanjhCbau6lrnEr6HGPCICgi0FLWGchk04tJ8QhlBlALKso+v+cdyp8WYsjteuLDCkNqQUIZS+Jt1If/zTo9INRwqYePMFBOVzalANoinfAmP7LSXYP5MW+IBlARri5+ejgdLzJEjTxH4DBCuamXCWbeEeCf4KOh+L7hIcOvHk3Y7uxKa45OVgcPDqoH7VwDp6QadqRDceHIWBiTo4r/e1RGPI83yWzoeOF6nG9tUdSUliNE8RjnCbX47LbK4SE X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QkNsbzVVcHRSVWMzZ0hmT0FiVkJmNGdkc2w1TFo1REZOWTNRK2tLOWdGbzJz?= =?utf-8?B?bWVUcGJBd01PNDZVaUVzdXRBcnVVSDV1TWdqdUg3T0xYZlNkcmZRRENVeFNB?= =?utf-8?B?cnBaaWRlbzV2WHVIam90T2RyM2UreEhyNjR4d2VzVThsSWJNZENSZkp5OXQy?= =?utf-8?B?ZEwrYWd5ck5rZ2tMMERaaTFPVk5xdTd4bzV4Q1ZyL3E3UTZPa1ExL05oQXEr?= =?utf-8?B?Wk8vanpaWVJnSWpUMG1wT2RUNDJUdVhrbDBOVXBaSkJXeEo1UHVRbzNMVkpr?= =?utf-8?B?aVNUM0EwbzNrYnoxZDBhYzl5N2YwRWVQUWZuR3B5cEt4U2FDSThiK1RCM0ln?= =?utf-8?B?dzZOeDZmQlgyL1BUZndxa1BTdTR3UGJmUGVMeUNVWnRHVHFMb285WlBxVUda?= =?utf-8?B?ZnFYU0F0aHJwc2JyU1RQbXhOaW9WQXpnQzc0NGRnazBQRUR5MEJDRTBiUTFK?= =?utf-8?B?OGhLTXl4d3F3WnRORlp3NG12VTlGUlNucnBhdmpCTno0MWZ1bWE2VERHWUNN?= =?utf-8?B?ZkVlUC85QXlKZ3dYQWhBOW9iUmNtaEI3bnpkNE10eGdIUWhYMzFPem9DU1ox?= =?utf-8?B?SUxCWGllL05rc1RubmJTTWc4RnVCcXI5OVUzREEzSUlmTWE5UFBNMlhvTCta?= =?utf-8?B?alFsRnRlNS9xZEthWGJCQThUd09YQ2llRXIvSVlNOE1NdzM3N05vaExJQ2RI?= =?utf-8?B?c3JMTlU5TEpIMG9NSkczYTBoNXBrUjNkcDRQaVMrelVFVUhpcEJXZ2lkdXZx?= =?utf-8?B?OENjc2VpN0l0cU5jL2djVjZnRHhJQ3M5eW1mVW10QUlaQmFiY2pLUlZyV1ps?= =?utf-8?B?ZWw5NGpxaERNZVpLdzUrVWpsRDU4dnNCaEg5ZzdHVU1mZzhERHpLYXBOdlNN?= =?utf-8?B?K2VyOXlsN1htZ2xiS1JTZ2l5dkRSNkJQSUR0UzZKMGRlcWhCNUl5RDhDWUhB?= =?utf-8?B?WHlBSGQzQW9tUVNJTHdYM1pJaWhORm5LbkJPMkF1QjBTRkEyNTliN0pUc2pt?= =?utf-8?B?TjBETnVsOVNCRFF3aGtHNlFQcmhOS2ppd2h5UkMwT054RWsyTjBaaDE3Qlky?= =?utf-8?B?U1JtdklIY0dXMUIyNGs4bHBrNW1jZjJsNUdSRlRZZGR0R3N0eGxXdjdQUlFr?= =?utf-8?B?Nnk1d1UycEdpaFlaSWVvRnpXcXltRWdiVXRFVFFhbndGdS81TnYwTUpmNFls?= =?utf-8?B?bWZXOXowOFhlQ3BOMmNCU0dDazROWEMxWWdkNi8zU3NTZithSEZFOEt2eTdX?= =?utf-8?B?eDZGU1psTXlpckhGaS9DdFBKOG9aVnRDeEhLTlhPYlVGNDI4b0lYYUZzTkRX?= =?utf-8?B?SEYxanFWK2NZbS9pdlYwWHk0RERGM2FZTmpNSytvM0VNbVkxWWZ5aVY0RDFG?= =?utf-8?B?QmJxTDFUT2FLQ01VR1RiQjA2RHNmc09oN2hqQUUzS2duK1lHRFd1cXZWM2No?= =?utf-8?B?MDY2V0Z6cnpDRXZPQmM0UkdsVHRaU1UvS00vU3cwVjVMYnE3WjVHQzNzTnJZ?= =?utf-8?B?M3RxeWUwR3BuZ21aTG84czRRZEdPNjJPVm1YY1JDWk1GZ3RBM3lPQndsMG1x?= =?utf-8?B?UzhIc3FJR21GNkVmelZiVFljeXp4blBTVFpQM01pRlNZNzQyNmZHT1pnWDd2?= =?utf-8?B?ZUJXYnlrYk5kMWpoenE1NW9vZC9DMW9LTWZGZGoxZFNpUkZpZFlkQkRDcitO?= =?utf-8?Q?X0Jp2ODCxAW3AzZp6FUI?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: eb987c42-910b-48b5-11da-08dbcb2a22c0 X-MS-Exchange-CrossTenant-AuthSource: DU0P250MB0747.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Oct 2023 13:50:04.5814 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8P250MB0019 Subject: Re: [FFmpeg-devel] [PATCH 24/42] avcodec/refstruct: Allow to share pools X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Anton Khirnov: > Quoting Andreas Rheinhardt (2023-09-19 21:57:16) >> To do this, make FFRefStructPool itself refcounted according >> to the RefStruct API. >> >> Signed-off-by: Andreas Rheinhardt >> --- >> libavcodec/refstruct.c | 29 ++++++++++++++++------------- >> libavcodec/refstruct.h | 5 ++++- >> 2 files changed, 20 insertions(+), 14 deletions(-) >> >> diff --git a/libavcodec/refstruct.c b/libavcodec/refstruct.c >> index f8d040874d..2108ff8163 100644 >> --- a/libavcodec/refstruct.c >> +++ b/libavcodec/refstruct.c >> @@ -187,7 +187,7 @@ static void pool_free(FFRefStructPool *pool) >> pthread_mutex_destroy(&pool->mutex); >> if (pool->free_cb) >> pool->free_cb(pool->opaque); >> - av_free(pool); >> + av_free(get_refcount(pool)); >> } >> >> static void pool_free_entry(FFRefStructPool *pool, RefCount *ref) >> @@ -278,13 +278,17 @@ void *ff_refstruct_pool_get(FFRefStructPool *pool) >> return ret; >> } >> >> -void ff_refstruct_pool_uninit(FFRefStructPool **poolp) >> +static void pool_unref(void *ref) >> { >> - FFRefStructPool *pool = *poolp; >> - RefCount *entry; >> + FFRefStructPool *pool = get_userdata(ref); >> + if (atomic_fetch_sub_explicit(&pool->refcount, 1, memory_order_acq_rel) == 1) > > Is there a reason you cannot fold pool->refcount into the pool's > containing RefStruct? > If I simply incremented the pool's refcount for every entry currently in use by users, then the entries would only be freed when the last entry has been returned and all the references to the pool unreferenced. In fact, when I did this, I pondered two things: Shall I make ff_refstruct_pool_uninit() free all the currently available buffers and then unreference the caller's reference or shall I just make it a wrapper to ff_refstruct_unref() to decrement the pool's refcount? The latter is very simple and I did it; the former could be advantageous in particular in case of frame-threading in case the dimensions change. (In this scenario, no user will ever create new entries after the first user unreferences a pool.) - Andreas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".