From patchwork Wed Oct 26 02:01:45 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 39008 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:85a8:b0:a2:d5a7:ad9d with SMTP id s40csp148599pzd; Tue, 25 Oct 2022 19:02:22 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6o8BIJU6W7UaYna9IohBVERfooPNmpHIUPCZqYz5wt510kU9DRG/MGCuLYqR1KzuaTQsYc X-Received: by 2002:a17:907:b1c:b0:797:983a:7d97 with SMTP id h28-20020a1709070b1c00b00797983a7d97mr27782174ejl.267.1666749741811; Tue, 25 Oct 2022 19:02:21 -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 v27-20020a170906181b00b0078d484e0e79si4120035eje.481.2022.10.25.19.02.07; Tue, 25 Oct 2022 19:02:21 -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="NfbZcTR/"; 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 4899868BC31; Wed, 26 Oct 2022 05:01:58 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-oln040092074089.outbound.protection.outlook.com [40.92.74.89]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6BCB768B8CF for ; Wed, 26 Oct 2022 05:01:51 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=V38dmHVS+31IK2n+eev0dqISfNlNR0FjiwkKGM5867OIkDoBXDrWaqK28KeTqzkTzmxbvv8gxpPzcugN3OKR3VUus6zZDobLuoC8SmXH0o56ROXixmXnGZ/S50opCQonpqdi+pEV8DEQ9YeDBCOJ7TfhLc01Egmod4+moLwK2m5MXiCHcwOb9rnvU7BY6FqXJFVVh9JzED+KBIQ0na8Meqi5IUITx82J/S9avxU2buEi1YFLZ7tibtm/IHssyx1XC2FQ2+8XzeT/FIr1QlrmRmmKRD64kv93SxRD5iJ0axXDRNrufnjmXgAbZ9jafjQKLkbKlsM9z4KwoC1m88f2LA== 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=2BnPLsofp1Esqpco1d0BEDliBvikGZ/9PLCrOvr6ueg=; b=mh/FPV2WOQmVykziA7i/JPIqWCGuJ7iUd7fr6l60Z94YVJRF/MIA2dEznVm2kMbfqy57uJlqrAALAeLmsxLNs0AkjXfu3K6E3iSbZ8uoVDTMHI2tvci0+0ScaCidE6uARzenP+Bgv1KNAgprNYpq8FDmZzGof4+cm3vyI15RcKI0UjqKMfNeu9XluSFCdIxPuCW0MZVi9uvxVPotO4v2MPOs3HdU/waDzUeczN68vyST7X/yU8SapcuTAjnxxjoTpw1ZQ0Hu8+zrdx9DVQTR036uhplsYcmRPYfc0LAIGsMk0cJoG2xmHu+RCTPXBpJ3quA5OvUXD4O3unXayFMOjg== 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=2BnPLsofp1Esqpco1d0BEDliBvikGZ/9PLCrOvr6ueg=; b=NfbZcTR/Kl2r2TylnJNC8mbmJvkl2f/T7R5CKtXNOEimr1JFjDYMkRSaSggmOFl+827/FcixeyZT6LiAjxEJ+kFKc51e6KET0ekF9KzQOPhqHZJ5Koopc1+YQ30SxBla3AeWe69kgCeI3SOnp1zPX89ca135hggEr3BWr0uDCvwS0kWQCi92xgnYjUU8WCoky4zFP+1u4CJYbv70Gydk/8F8tavnBztRof+8jSKzDd3V881kufUmg/eaG8oR8kZTx1zAraFzQ0L4Tb/cF2TNIrlpiLdRd69ciY+TJ97bAbopvNeaejdNFNXoOxm0u1aw6rG6s0qndGEHmT6hej2E5A== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PR3P250MB0067.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:172::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5746.21; Wed, 26 Oct 2022 02:01:49 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::f9d7:680f:70c4:44fe]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::f9d7:680f:70c4:44fe%7]) with mapi id 15.20.5709.015; Wed, 26 Oct 2022 02:01:49 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 26 Oct 2022 04:01:45 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [+sCjHAHUEefZJFPcmER/oB44pIdeJnHgRwfgUq0UtBQ=] X-ClientProxiedBy: FR0P281CA0133.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:97::11) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20221026020148.1899997-2-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PR3P250MB0067:EE_ X-MS-Office365-Filtering-Correlation-Id: da75a0bd-c716-435d-12ab-08dab6f60b29 X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmoSzhB4sgWW4MC2Y4ACp8EGBQcc2aJF7+0QOQNHAq5+W4nZ3mmAidointHxjRWs4TiVomsJYAHx8LZoXUpktAPJfk4cbWkFAlcEc34KvwYAuMBlOQB/eniQPI1MeWLGFMaUxO1d+m8cr6pUWQIs+VVLUIUfmalatuEGZKRg0jePQprnL1RzWMwAXbVq2yJl5aq/bTEuSE1WzExjFpcUcxoIn2AtYQIfPAhxxaWZKF0VVdVZHEanJ+IN6GeJ8LYzGr5v8ITf3fgQf4fsJzRJabhM6yvNBh5zDUUQIHZ2Ah/qw9J2Vz6VQsbJORGPr1KVb+WXr9ZgYCU9LxEIZbA8sfABFtDVC5EeMZDxxT/jkZAboYz9fihO0utV4N2MsvEF1tFZ//jx9wURMx35QlW1oyHjyuSpAD+keGZXFjzm6rtI2xcy2Lb71gs3GyyS5C/mneXrIYlTrF7vx0sVx1mw1CH42mcAaKjKGC6bzQgOQwMa9EIADQB123e8/79r/nKoNfb42uwEnc5d02fdwx6r40B4eKgGHCJja/L4UC0O2zFTRHEaSNcO19/OEcH3wnL/Few4lt6cuBaJ5kIBasad6HJ3wbpLtQJs3y5PB8IM32RNcG/VLzArWyKCtj+qk3tR4a5KGn2uJFFuUKg6lgxp2XomRCOqoWGE1K3potbUW+6pIPvL0uv0L51BVGU8fiP6yYMB7sLbnakfNnh7lnMUoE99sFjY1OkUQTCmWU/DxItNIt9tFhzt9kjWf6uSq0n1b4c= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hJ5WKG23SRDO7rmib6c5q5TjeZtP0wjZrxnqVXtLqC4vQCcg85Xv6a+htGDYEMkHaHRkG9Vw3lDkpyBd8WBhlAPonxAiHvZ/olKjhsuMJcC5Kpixy6cfceA192/EWhHPpnc9orX4JFZd/Jrq1Oil0hRiQrd9HwIBOqDOth5xJUBRQFZm7ctsBxpjDlFGtNcb71PGCnii6FfZDTv20GwPeY/1NIOfr6Fzpa8C+5uwfi2vVxkg0EMuc18e0n/iO2enLl8fO+dxWWJh9ZwOVbOl+9EPiJQxxJzGZ8RpA2YarJo1fXr6vhK1Yp+mRPnBU7MqRs1NDmdKIC4IVAslXUpDus4GBNrIK4LIC6AK/LczgfSd4H0vw0pHwEfD74GB+EdyFXJVKr+eTKQhWyE+7FYu0fzpMH808asWGcfAk88l/YkFaKEcqztjcsvnIth/oOl4YFr6GieN1aRMc+DTHBMR00VbQGTMNeGCRSX2omtcJn+9IWPvtAWTDv7q14N1njZpEcGKfC3MilJYw8pERTVh5cTy6KyE3b3M464sbgERFU9fMF1OZUfJmaI33WO2LS5mxgxB4PiEK2MOP3H3iGoSo3LYFgp7Rg4hE6zcttkrAz6HSJcD68xJZcxg1P6ZVNgqJuLYDAs6h+dPsNw+j29Hv6bWdQ4gbfQGxI7WWsLahoBUowlfeqYaUaApUKow/O4x X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: UKrWx5FUaYw6VKTx8WxKBizK4izE+BPlv2/DPAFn+WWB4R+wZQ4kONUILKwsj9cA0SWQgXem5o1cK4zujb+M2sTWxfZQYlMMO5no429szLc0nKlO7m9EVM75wCO7PZIEpuv7ELb8T5zpxDUsrTNkaUrs3NaYRLhdX1hfRrsYqcKMJY0jr+vlYLxilAnVHLm7Zk614+p0RwqTtBnJoMQnM0xUm1HT7KMykUNn1eEGfOYav0N9C2hzLbidIsyorHtfSQwMQnUCsv9PmDlYRJpU7UpUpQgzLoHRKLcvaOCEz14PZAsiGClPKv7JrDazXGAhYVMQk/hf3cko4U3xa/2bQh3cmB/g8F5xavqCnnhZhYb99s51Azl7fvSHf/7EvwVOfN4kYUL9W/Db+73rO12sRIzbMqZ2/Em0Ylcz0DzNig/l2dNUvCXEm3KWkRMAhuWL0x18NdXyoKZA/thS/taUXJol9/6ILSdYwWnUCZhT5DQiPtzDcRpsqYrXrjuXfllTuhQn2W+vRN3L43+b/+shiwhJWZiQrGAfDLo5vlihh3lWTLIMScreVQzwW6XvqUv/p9rmyFA4mLjWXeDoh5ApilTKPjKXXe4szLIFoS8rii3nO4GSX55U7/aDBnU3E1NBdPYGJ2WUtgbV+FbNllaKx/5mCl7dsMfESpyhvr58TYTw4tg08fnn99VlsLSjJ5fc42DpUOH4nIzmwE/KmMKPygSzUTivzsSejbUJaBLK02oF0pbdd7ie1wI/Yb7ZQB2KaK6EJ0lHKIWUj6RlPmjJh7TWmGQux84w8SNnFaDHCUVQXmDxz02MuM/VCSNwO7EgdKS2YW/s6TVWdxQ+/SD7xc23GU15dxXIRPl85knWOIhMlKTP5gDrTn7uNdzm/9g1yawS94pziePseTNFfRuklPSwWilZ4Uci3xgo2RKKekCDQokMscvYZiF7q/bhPmX5WByGHR6TAWRv5LKH0q7tT3SboRTtXiSRbjJ9eftov7v9mNOU9FWS6AWXIT025jNFnEyP7daZfYU5xSVMRtMEBFnoF4Pyxx0D38/y2waXVChDR+EtiFS2vB8Vf8xhBo0VCVa14mJohoLB7czFdgrDQ7dSFi/2iwa1WXGeXux4SDiMf4WCdtBoOo9LJDuHpntuNfHiBne4dYDw1xFQszokfKJFQ0WZ3mfJnL5hLHllvZX5HjHqcZC4tHEABbI0+jPvehJKxbmOmIuSQc45M3A77UFC3BcinNKnokPaDDAFIECyJYKLSnI0+3fGdN7Yk0qp9f4173QBfHXFaW9OVcpgRVX4DAMRV2dtedHYgY5sZQ3lOTCLJeqiGPf7xz1ScTH+ X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: da75a0bd-c716-435d-12ab-08dab6f60b29 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2022 02:01:49.3359 (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: PR3P250MB0067 Subject: [FFmpeg-devel] [PATCH 4/7] avcodec/mpegvideo: Allocate map and score_map buffers jointly 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: H3cyuykklnF5 Reduces the amounts of allocs, frees and allocation checks. Signed-off-by: Andreas Rheinhardt --- libavcodec/mpegvideo.c | 7 ++++--- libavcodec/snow.c | 1 - libavcodec/snowenc.c | 6 +++--- libavcodec/svq1enc.c | 8 +++----- 4 files changed, 10 insertions(+), 12 deletions(-) diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index 0cd7c86ff6..a04d519ccc 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -373,9 +373,10 @@ static int init_duplicate_context(MpegEncContext *s) yc_size += 2*s->b8_stride + 2*s->mb_stride; if (s->encoding) { - if (!FF_ALLOCZ_TYPED_ARRAY(s->me.map, ME_MAP_SIZE) || - !FF_ALLOCZ_TYPED_ARRAY(s->me.score_map, ME_MAP_SIZE)) + s->me.map = av_mallocz(2 * ME_MAP_SIZE * sizeof(*s->me.map)); + if (!s->me.map) return AVERROR(ENOMEM); + s->me.score_map = s->me.map + ME_MAP_SIZE; if (s->noise_reduction) { if (!FF_ALLOCZ_TYPED_ARRAY(s->dct_error_sum, 2)) @@ -445,7 +446,7 @@ static void free_duplicate_context(MpegEncContext *s) av_freep(&s->dct_error_sum); av_freep(&s->me.map); - av_freep(&s->me.score_map); + s->me.score_map = NULL; av_freep(&s->blocks); av_freep(&s->ac_val_base); s->block = NULL; diff --git a/libavcodec/snow.c b/libavcodec/snow.c index cde09902c3..b6c8d5e256 100644 --- a/libavcodec/snow.c +++ b/libavcodec/snow.c @@ -635,7 +635,6 @@ av_cold void ff_snow_common_end(SnowContext *s) s->m.me.temp= NULL; av_freep(&s->m.me.scratchpad); av_freep(&s->m.me.map); - av_freep(&s->m.me.score_map); av_freep(&s->m.sc.obmc_scratchpad); av_freep(&s->block); diff --git a/libavcodec/snowenc.c b/libavcodec/snowenc.c index ada24f7895..7fad95b69a 100644 --- a/libavcodec/snowenc.c +++ b/libavcodec/snowenc.c @@ -82,11 +82,11 @@ static av_cold int encode_init(AVCodecContext *avctx) s->m.me.temp = s->m.me.scratchpad = av_calloc(avctx->width + 64, 2*16*2*sizeof(uint8_t)); - s->m.me.map = av_mallocz(ME_MAP_SIZE*sizeof(uint32_t)); - s->m.me.score_map = av_mallocz(ME_MAP_SIZE*sizeof(uint32_t)); s->m.sc.obmc_scratchpad= av_mallocz(MB_SIZE*MB_SIZE*12*sizeof(uint32_t)); - if (!s->m.me.scratchpad || !s->m.me.map || !s->m.me.score_map || !s->m.sc.obmc_scratchpad) + s->m.me.map = av_mallocz(2 * ME_MAP_SIZE * sizeof(*s->m.me.map)); + if (!s->m.me.scratchpad || !s->m.me.map || !s->m.sc.obmc_scratchpad) return AVERROR(ENOMEM); + s->m.me.score_map = s->m.me.map + ME_MAP_SIZE; ff_h263_encode_init(&s->m); //mv_penalty diff --git a/libavcodec/svq1enc.c b/libavcodec/svq1enc.c index 7c9430a137..92f91aeebd 100644 --- a/libavcodec/svq1enc.c +++ b/libavcodec/svq1enc.c @@ -552,7 +552,6 @@ static av_cold int svq1_encode_end(AVCodecContext *avctx) av_freep(&s->m.me.scratchpad); av_freep(&s->m.me.map); - av_freep(&s->m.me.score_map); av_freep(&s->mb_type); av_freep(&s->dummy); av_freep(&s->scratchbuf); @@ -608,18 +607,17 @@ static av_cold int svq1_encode_init(AVCodecContext *avctx) s->m.me.temp = s->m.me.scratchpad = av_mallocz((avctx->width + 64) * 2 * 16 * 2 * sizeof(uint8_t)); - s->m.me.map = av_mallocz(ME_MAP_SIZE * sizeof(uint32_t)); - s->m.me.score_map = av_mallocz(ME_MAP_SIZE * sizeof(uint32_t)); s->mb_type = av_mallocz((s->y_block_width + 1) * s->y_block_height * sizeof(int16_t)); s->dummy = av_mallocz((s->y_block_width + 1) * s->y_block_height * sizeof(int32_t)); + s->m.me.map = av_mallocz(2 * ME_MAP_SIZE * sizeof(*s->m.me.map)); s->svq1encdsp.ssd_int8_vs_int16 = ssd_int8_vs_int16_c; if (!s->m.me.temp || !s->m.me.scratchpad || !s->m.me.map || - !s->m.me.score_map || !s->mb_type || !s->dummy) { + !s->mb_type || !s->dummy) return AVERROR(ENOMEM); - } + s->m.me.score_map = s->m.me.map + ME_MAP_SIZE; #if ARCH_PPC ff_svq1enc_init_ppc(&s->svq1encdsp);