From patchwork Tue Sep 19 19:57:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43828 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a886:b0:149:dfde:5c0a with SMTP id ca6csp186634pzb; Tue, 19 Sep 2023 13:00:03 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEcAI2DzujLHtlMe/scJl9IxUG/yqSqI6RM7eQ72LAVLXEs54S0Er9l2EF1nMN+XNc/3Id2 X-Received: by 2002:aa7:c414:0:b0:530:74ed:fc85 with SMTP id j20-20020aa7c414000000b0053074edfc85mr339994edq.3.1695153603436; Tue, 19 Sep 2023 13:00:03 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id q1-20020a056402032100b0052d214eb778si11213721edw.112.2023.09.19.13.00.02; Tue, 19 Sep 2023 13:00:03 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=SBgdd8IN; arc=fail (body hash mismatch); spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2E17C68C922; Tue, 19 Sep 2023 22:58:06 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2045.outbound.protection.outlook.com [40.92.91.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3E1D368C930 for ; Tue, 19 Sep 2023 22:58:04 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gZUOhEcXJ7PhCd2LMlEfPx2OPOzfguUUnxnfeuAU7haZKqGYoj5XpiTwkXNgPTldsEsuvHrWOy3sRCQr6AgX7JeUa2DFvqXoQepME8O8i+MJ7f2KuKGuKwkgKM5CMpGkDqcoZwZRZjBXZC3BHIEdU3h6aoz9RcaJj8lJDfu8ez8ojo0YmEqtJZgmqXU369fifOGfioa42Iw0CfuFWEEnJxorWYlqOvMWEd4ILDQ4kDV4mgx4OYhuFPT5MW6AFhTG1Z5SqkoHhisdiWgbe9K6t/y6P1bHq6B8cXaa/8qsG2dWEW0f/B/JW2Prse9Als2woKrsPmWwmhuaI343vCP03g== 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=ulDGEnRWpzkG7Qk8vCIHL2GocfvAhivlRqPx9VGI0VA=; b=C1ONCfWgZa5qpM5316jCjVTD77PI3j/Ha1XklbYdCqazCV0F6AADv0O8rglAorUx0tmvNGN4U1d0QrcqJAlu7nhhwl8eg+l2cjdE2II0HtD3LiiWcWuAki2sYYFMTeIYI6Q4OZifmEDAPMQV9AM02l6wNVlLo3xsSJweu+/eASGdVg/q59n1QWahEkHMqAKQZYvCPntRA/wSwHNXxaevQ84rHULmNgEcaxc26mcNE1s+wA/C5BjnFpHqhujUSAOK9As7+vSi150AMC4IKKhIl9bdCLzb20fsGGEnbfMrqTIIwaUsTqnEVluNrkPG5gvU2JiWje84j0flg3aUcJ55Jg== 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=ulDGEnRWpzkG7Qk8vCIHL2GocfvAhivlRqPx9VGI0VA=; b=SBgdd8IN6R1qJbqKKyzJsE1Lpz6DWl26BQwwLpo1qsciy5aV6slcuWe4Biyc4J94dPkOsws+5vOJ2kh8V8JtbEXXuLPaUGC9a+033JOv2sRpvnsS18yTMlvWRB6E7Ucix/onD5lbC4Ud7qNkZQpMwllnSVEo8K5qzNsa7W2MK70NHqmLun+IhyfbI/1INrK3k/AWxfmFnoK2vnKpfLBRgZoLxC6e9fJ0lWbgtcN9YzYSqaewlwZ2fmIvfn2LUjSW6cAH/iUr0oajTQoyNNC2zvHkP2zTxkMDJjQzWfzJzMzD6ua0HC3iQt72PM/yKMWbSDAMsLgwcw0apz77palhtg== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by DU2P250MB0303.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:27c::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.26; Tue, 19 Sep 2023 19:58:03 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::5e01:aea5:d3a8:cafa]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::5e01:aea5:d3a8:cafa%3]) with mapi id 15.20.6792.026; Tue, 19 Sep 2023 19:58:03 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 19 Sep 2023 21:57:13 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [sR0Ty3mB0N3cvn6ykzAr73vJv8o8Vzjy] X-ClientProxiedBy: ZR0P278CA0086.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:22::19) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20230919195734.1005750-21-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|DU2P250MB0303:EE_ X-MS-Office365-Filtering-Correlation-Id: 9c74f41f-430e-4804-8416-08dbb94abbea X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: SpN/jq4ZzVQCIUqNQkDtVN7mPFIQMNl0MWZjzS+86v981I5obsioFMJZeIhQjpomqSw5x+BBHOC6ugiSPe7hXIUjdH/07WAkKHXcx9tQ2P2FkPBb2EmfmTxK50IBrsdFxE88+MaASfPo2vylOiRXFBiZXwg3ny4JW5jYZ47qUaFjfsV8c7x4hxrAo6nzqocD3D+6r87pC6NO9rx3dvJaDj3Ou2udPcQbUFt0uMBU4op3q5/DiwY07T5GReM/gEuf2lV393Qlj993BLzcm4PIlKE6V9yG+7KNbTS9C1fecXM82tyAkZzQbVQYE34GxV4i+bBW20N6a0VN+Sr9aNKEKdr2p7nbRntYQb9bvDPxwb0vy8Rc8WekGcAqVlsIxPzDSdzNQLicFsLlj8AiqI+UEPdFVuJMDDPmGezN7FxDoH6hkMA8+/V6+Z+khipXR+fbwtTNeUICMUVGSBOZqA2uJGa5XfhkkVhzj6riclKJ2r7ZFDQyTJ1PiAC5tChfmMiFf6by/r2/vlajkfry7qLwEE8GMxrYpuflpCgKlEQTTm+YOB4P8w20fVIbC25iKOJzUpab4ITkoRDgC9utq6Q6BoETnz8y+U6LKkzulx6/U1cSAmlP6AsVl7h0vIo8g5yz X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: W5/DWDkd0njFOgPYeloMHoGZZvoxuiZGftfX+RWCZXXJCtVaxIL9igzWCAU+SQaENTxMjx7N5+fyIo9bmErHNDQ9WLM56pGTIZJLOc892nLM4F8it4HuXodjw9i9zOb+w/GTlRlSi3yEVdYA+uJmuNU9BDjx8Anf5KDacdpHCGBIQ2l6nvGcTz1oH6/L/By63T4XJ1N98JKBqyPcQ7mC7ZD5DoXzdk1KBuufeyhtZleKCYE62/QZnskFx3652MD+cAYFcohki7fFIeMJcFezxHBSIZyfaMnHViLgrU/CBwxEu1UbGbdE4Y52YNzxL/M3B+buCIpX0zO417wmfGz1kmR4m+vltSSe7CIP+UPKuqgMFL+Vak9FwAJ9wz1Il9yP1p0OkpPNV5RDGCjjKSi95lzlOGx6M0lj3NGAsEWg7kXKU2prnEcb+YT6lIzKRaVDFmrJPMdQX7ytSq6XYCZeihBTLA6owBoOLLCXmBigGjRjA407lkEJrTUQeuzPNXsIiFqt+bYRSRD+c3ogTlA4dBtT6DMkBj2khay3B6E+sVfdS9kIG83/CSKVtbea8fOOJPf3Ec/OQ/qXhqEpQdx6PMpgsEDLBfzAC52oX8cQ/k0L/A4CzzmvDUdvR50sPJGFU+4NcJPyaNbN5uNcGuLpKlXTDLy0jIHsO3QVIelf+Du043DqM21jbNpwzIew9lDXXZNcUu3sGjzwPkK+F0WMPPKsOZ6T1TDHdJH7gVSLiTEFIXVEFI5wJAh6DAwuxlDKC8sQ7BujphYY1JlIryILblgcX5hUGoFij7EpceaIzBUbF48uiM38sT4KGp7l+ny3Lpe6Wnym7evzB/jR9lb4Yt6GZJ0ITH6luZ9UC2LBNnWDkCiO6pXd0SCiGQ75ZbkokBoXvDAGZH5F8K8W0JsaWhF3h+IKoVutlJ7y5e0fDe8f2fxN2nt0WWj4V1khEa/yGlwrlamCok+EkuYGuDQSbhJ4CoCfLKYELohKKHi9WV0MaZ3p0nUCuORAzn21+/SR+5sY9eC9oykXSv5WeeAeY0SZEeFLM8ZHfcLkf3np/4joziLF+CWMCqndCSr25lI/CNps47OpF/PFNdZ8e80Yo2nX67juBP9/WDi1jNZRAEYJFTmQobSAfIY9JxNZTSzdyDR6N0K89qAauixDn5RlvJKGwamS7G2BEWEz+RRgz1cEIjBnMpwFM1SXmzU72i5kPQF4aqtQ2pj5PF83NRVM5Nw0a8zvrt+xqyexCxA4LUFTXcQmCo3xYGv2aOHaR69Z X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9c74f41f-430e-4804-8416-08dbb94abbea X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Sep 2023 19:58:03.6797 (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: DU2P250MB0303 Subject: [FFmpeg-devel] [PATCH 21/42] avcodec/refstruct: Allow to always return zeroed pool entries 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: qOt9hi1k2vvj This is in preparation for the following commit. Signed-off-by: Andreas Rheinhardt --- libavcodec/refstruct.c | 10 ++++++++++ libavcodec/refstruct.h | 8 ++++++++ 2 files changed, 18 insertions(+) diff --git a/libavcodec/refstruct.c b/libavcodec/refstruct.c index 7539b7942e..f8d040874d 100644 --- a/libavcodec/refstruct.c +++ b/libavcodec/refstruct.c @@ -262,6 +262,10 @@ static int refstruct_pool_get_ext(void *datap, FFRefStructPool *pool) } } atomic_fetch_add_explicit(&pool->refcount, 1, memory_order_relaxed); + + if (pool->pool_flags & FF_REFSTRUCT_POOL_FLAG_ZERO_EVERY_TIME) + memset(ret, 0, pool->size); + memcpy(datap, &ret, sizeof(ret)); return 0; @@ -334,6 +338,12 @@ FFRefStructPool *ff_refstruct_pool_alloc_ext_c(size_t size, unsigned flags, flags &= ~FF_REFSTRUCT_POOL_FLAG_FREE_ON_INIT_ERROR; pool->pool_flags = flags; + if (flags & FF_REFSTRUCT_POOL_FLAG_ZERO_EVERY_TIME) { + // We will zero the buffer before every use, so zeroing + // upon allocating the buffer is unnecessary. + pool->entry_flags |= FF_REFSTRUCT_FLAG_NO_ZEROING; + } + atomic_init(&pool->refcount, 1); err = pthread_mutex_init(&pool->mutex, NULL); diff --git a/libavcodec/refstruct.h b/libavcodec/refstruct.h index e2fe45e77d..ce3830977f 100644 --- a/libavcodec/refstruct.h +++ b/libavcodec/refstruct.h @@ -207,6 +207,14 @@ typedef struct FFRefStructPool FFRefStructPool; * the callbacks applied earlier (init_cb potentially followed by reset_cb). */ #define FF_REFSTRUCT_POOL_FLAG_FREE_ON_INIT_ERROR (1 << 17) +/** + * If this flag is set, the entries will be zeroed before + * being returned to the user (after the init or reset callbacks + * have been called (if provided)). Furthermore, it also makes + * the pool behave as if the FF_REFSTRUCT_POOL_FLAG_NO_ZEROING + * flag had been provided. + */ +#define FF_REFSTRUCT_POOL_FLAG_ZERO_EVERY_TIME (1 << 18) /** * Equivalent to ff_refstruct_pool_alloc(size, flags, NULL, NULL, NULL, NULL, NULL)