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 2B0E44755C for ; Thu, 12 Oct 2023 17:08:46 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BA34C68C8D8; Thu, 12 Oct 2023 20:08:44 +0300 (EEST) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (unknown [40.92.65.76]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4A28468BD43 for ; Thu, 12 Oct 2023 20:08:38 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EOXqM9uVvxtX++u2zERTawJsZgrMAUBDmQjnT6AE13ViN1+84HJEAt97/DPXO/KktC+gdpTMVfx567odXwDM88zISc07XDlVzAn8RbNyKLSKs2fCk2vJQPm1zUxYyTc5R38ZDlV0X2eVQVRucy6Ac+WPtE73tRtX2BzS36+OzPTkKdpRHm6MlhQqSlX3cXcRXKI4mT/gEPgXfCqWNbLkmIzEGkgYQOrN++HsKPpWg9V9HWk78j1pIaisuKb8qGsjTePmIhQ64OA0VLpuqYKfgnl0tOoUosC54fNeELJYDm5WVH6fTrsN+nC4YYfI6bp7adZNnVUQl73wZIz2x/kr1w== 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=y3Ymh1RRu6JfFUJAb0akM8HGL2Ttqv3/IJDvtOihYJY=; b=Wl9jFUsC0aFyCdB7er2CfEKRU4DbnnN0VsdG53b6C2f8UQ8HtGaptrY0QZjPh9f3cnnzFqGbvO+dnpYld39WrCiupML2rmsRrntE+/6smP1TcAXjPJjoFpXgmb6Ys/QCyETVRN6C1MRbQr4Y+pUoZ5H4jWj6kvmgOUB3+LnBtptI0pqAEN6m+KaPNEUziRGuFPXy1ECbL0VJ7/rkAU39YX3uLZw7onYdASfnj8QX1n0GrQRfwJdECeW7l4fTnpn+DTui2tolKK0j6Bo0MMEYyY1iVK1sNj9TA9996cfHofvtf4ZFn6cR0LoZmL9v9F/wXPuf/Weu9NEeTnVhf5YKKQ== 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=y3Ymh1RRu6JfFUJAb0akM8HGL2Ttqv3/IJDvtOihYJY=; b=msRowUGddveOD4g5HAQ8GkH95YvGsULE4XPXqxm1hqYdRSZa76CSPHXLD9eXoD7lc4bYUFe2WmxtcAyG74oeqyvbaqJZ8XgVTDuckSu5TGqRDjyK3dHJyhl85SrBJPSJvDX7RXbjrKDY5m02vRpv4RPE3qD2f1LmRDH70sY4ajaX3x3R2k6I5pj9aWPY8uPDVM0DFEX2Q8PvSdvqQz10EOeWma+fZ5cCuExRr5J55duDFANfpyOtrx7fpDCYAik9DQrg0l4DuIsK8VMbuukGZIyNb5/mmgNbQ1DBKaDJhmMmDG4iK5iWevYmDLM66hC11RiLGz5LsD6A+Ek2aVvMKw== Received: from DU0P250MB0747.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:3cb::16) by DU2P250MB0288.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:27d::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.44; Thu, 12 Oct 2023 17:08:35 +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 17:08:34 +0000 Message-ID: Date: Thu, 12 Oct 2023 19:09:47 +0200 User-Agent: Mozilla Thunderbird Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <169711587240.32606.8092556431828354289@lain.khirnov.net> <169711949127.32606.4880530769811767953@lain.khirnov.net> From: Andreas Rheinhardt In-Reply-To: <169711949127.32606.4880530769811767953@lain.khirnov.net> X-TMN: [rVyG/8ILIu8tfw/VaSLhHMz0ZzO/Wgiuy8oqMEzZ8iQ=] X-ClientProxiedBy: ZRAP278CA0015.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:10::25) To DU0P250MB0747.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:3cb::16) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU0P250MB0747:EE_|DU2P250MB0288:EE_ X-MS-Office365-Filtering-Correlation-Id: 0fd1d589-17bb-48a2-eaf4-08dbcb45dd70 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UJLNHFBssJT9PJtUw+MgK78NntptW7WmG2K0HhrVSmlRMJl3DUW90JkD7A0p+mHkT972i9d36BrJhT81VOSmqyjefAdhkDaIRuvNc2u/WTG1qX7C/BGRe2dL81qhZ14IPRkPSrl+ViXLUQmWxDK+2HdOQBoeC+yNw83uXCIgA6GNG4p/K667m9qdbMn59yJB1bWXdfyJ+tQqwxXufFGZUPpo95eYp096/rjIP4IwgWWvniGruoV0XPbCchU6weaWLNhwp9EN/oefiP6O3F/ZHA9noaQJptHwwy+GQPRWNNGwA/qVIZ7fsxy1PT+HAZh5ckn1SgRodZtruLt8f2PJoa9J1voBGCiLgxNuUBmJ7kvptU6WuWcplfm/HOYWNWU1HlOQIn1WVGa/AV2ZLtqNVpNpIvdsRdgdxgi1TO14dLLkSBowwsnbF/DJ7gFN3Q1/Us+DmZ0bccpqu3x9jOuln9JViaKWze3WkluQTKFZv7B3U6RTg8+e5YYHq7V/RfjveCb0H/wjJMaWcajW5DQylGmivjz1oT/zda4Fyb1Be8TgKe+hSOjkV6kXQ2HOV1c/ X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?eEZuMXJIelpkWDhXcmE3RWEzT0lvV0czNlpyWmFQd0tEMzZtN01USkhLMlZF?= =?utf-8?B?Qzd6dENxdHRhcFhoeE51Y2dUOTgyZzFzRWRFMG5uWWwzdVpLYnA0c3U3L0c2?= =?utf-8?B?clRFMXBCeGZidWZKKzB2YVBMRXJzUzdkNWEwUCtNZmpyMjF3ZmJ0MW5GS2Vv?= =?utf-8?B?ZnM0VjRKT0V1cHE1YStBLzVUS1pUeW9CVTFVS2IySW1yamxUTEsxVmdzOW1q?= =?utf-8?B?MjVDbmx4aFJCaDZLbTd4bkVza1I5T0JmMGFXTzdrYzRRT3YxUWp4M2J2S1R5?= =?utf-8?B?aTNwMTNJUXlmaUtGWHUxUXlkN0FKK3BhNEJ6M21CMmg4UmRTMEpFdWhMMVRJ?= =?utf-8?B?NThhd1V0cktleHdFeFRNaGE5cERiUTExcmNGbjEvL01vT04zWlRjTmNibm1C?= =?utf-8?B?UWxsdzEyZEtGM2Z3UWdWSmF0V25WSWhrMlJXcGkyTWZzMUkrcW1NYUdMaFBy?= =?utf-8?B?ZHlEdFI2SXc5VitZbDFmYW15Sk1ZU0dESElUWkRGZnMvQWhYY2FVM0l5SEZC?= =?utf-8?B?a0h4NldudUtRWnJBMVpuSnk4UEUxSjEyaTdrZnRyeUZJUE0vMVhqRkN1bjND?= =?utf-8?B?VXJvQTg2S3lveW9FazYvZmRPYTRBNFFxcVgzNlF3OFA5dVhWZzJpOURJZzFU?= =?utf-8?B?NHZXaXZyMnNJdEM3T3g3ZmFDY3pwblkrL2hNZGYzVVZtUnR0d2h2VkFOZ3pS?= =?utf-8?B?bTZKVHFwNi9YOFQ4djF5b1J1dmsyZDBsejNUZUk0SmpMckxYNVJiSisyUlVC?= =?utf-8?B?WG9oRnJaM05jcDRXQkszQ3hpRUpLM0tERnU2enJGbitQYjdlNVc3Q2dxVUo4?= =?utf-8?B?L21MbWRLYTl4RTdrRjByWUZJazFyaWxRN25IbDAySXltVENrdVlVTnpyMFdV?= =?utf-8?B?YnlwZTJodVN2dkx4b3NVRHJJK2hIa3BlejV5ZDFFSkpvNFUrWFJXWXJoYW9B?= =?utf-8?B?d2ZSVGVSNFAzdHlzSXRnbisySmVsbnJ4U05SQkVuT1VMSUdjM2RPVjRNcVhI?= =?utf-8?B?cWtuQTFYbHVqWUhlM3ZYTXVzbkhPVElmS0FmQU1TNGxiSVJBYXowOVVwRGtP?= =?utf-8?B?MUpxVVQ3UVRCQ3ZSNnJzcE5YVUdOTTc3UG11MTNPak0vWENjUS80YVJrK1Z1?= =?utf-8?B?cUpZSnBBL05BMU42RnFXN0ZNdFBQUVZCMmlZb1BvZ3lkbmVYQjFnMlBvOXFh?= =?utf-8?B?Rk9HdmxrNHAwZ0FRS2ovMjhqZGN6UEZaNStWOEZtTFdKUWxMOW83YnpSY0NG?= =?utf-8?B?T1pQY3poZXZSOHowWjA2eWRMTG9aM2piVXJwQWVBbU83dWhVMG9oamZaWmFx?= =?utf-8?B?SXpwTkhYcTcvR2VkdGswaWZjcGxESXFWUldka3BUN0R5dGZXUFpwRTlUZ3ZI?= =?utf-8?B?ekxQNDVlQm4vTzVrYTc2OGpacEVObU1Pc05pVUN3cHlLZEVCY1lDU2Z4TnpE?= =?utf-8?B?Ty96YnQ2UU9KTG9qMlY1ZVptUld4U0IvMkFuNkRscnlVWUtDSTFIWitFT24r?= =?utf-8?B?MUF3cU1WL2d3by9ldXdBcE1YWW1GekhIc3VYbnNaNzBCQkpYdHFTbEtCY0d0?= =?utf-8?B?U0hIc3oyQ0JDTncwUFZwZ28zQkpzQkNvcktlMldLaXF5cHV3ODVyU0RnWnAv?= =?utf-8?B?dzJWTVRZblRHL0c5Z290TGFXazY3clU0VVE5Ym1sUXJIc2JqaHprZVhTRGdG?= =?utf-8?Q?NIHp5AUmVGZC2Udb7LmV?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0fd1d589-17bb-48a2-eaf4-08dbcb45dd70 X-MS-Exchange-CrossTenant-AuthSource: DU0P250MB0747.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Oct 2023 17:08:34.3521 (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: DU2P250MB0288 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-10-12 15:51:18) >> 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. > > Ok, can you please mention this in a comment somewhere? It's quite > non-obvious why do both pool_unref() and refstruct_pool_uninit() exist. > Right now I could move everything from pool_unref() at the end of refstruct_pool_uninit(), leaving pool_unref() empty, but existing. The actual reason that pool_unref() and refstruct_pool_uninit() are different are: 1. The pool must not be freed when its refcount goes to zero, hence I need to override its free callback. 2. I pondered adding support for weak references in RefStruct (in this case the unref callback would be called when there is no strong reference and the free function when there is no reference at all any more). In this case I could give every pool entry in use a weak reference to the pool; FFRefStructPool.refcount would then be unnecessary, as the pool's weak refcount would take over its function. - 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".