From patchwork Wed Jan 3 15:32:38 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 45460 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:6623:b0:194:e134:edd4 with SMTP id n35csp7328003pzh; Wed, 3 Jan 2024 07:33:57 -0800 (PST) X-Google-Smtp-Source: AGHT+IGJEhMjsPKuq57b98HB0fzOfZPakePyCu1LjVB6Q7ZkuvaVwLhE2jCF+p6CVwz11rIORtN4 X-Received: by 2002:ac2:4ac3:0:b0:50e:1ef0:4843 with SMTP id m3-20020ac24ac3000000b0050e1ef04843mr4753641lfp.160.1704296037255; Wed, 03 Jan 2024 07:33:57 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id t3-20020a056402524300b00554bf7cd165si9283813edd.396.2024.01.03.07.33.56; Wed, 03 Jan 2024 07:33:57 -0800 (PST) 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=CKtNVqk7; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 24B7F68CCB3; Wed, 3 Jan 2024 17:33:34 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from APC01-TYZ-obe.outbound.protection.outlook.com (mail-tyzapc01olkn2033.outbound.protection.outlook.com [40.92.107.33]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7C1BF68CC35 for ; Wed, 3 Jan 2024 17:33:27 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Cr4PwD5cq0SHNHc9C+fbrN7Lx4ZNBt7uvUKM9efiocK8NMkmb5dbD4uLEgqw641mxR2f4w4ITiiwYEQIE1WnKkSRyXiG6qqwy6XWkXSfP9yo9Tz8HArpusJNexMXvbR2IO/TICFyENnmFRktPuGzm8wI1ouJ8OyTagBqA8ZemtbfZQ61iSRHLIyNxuctr3CViZwBYROcURY7++bGQv/x/TPwMf0+XmxkMoNOt2EtpcgsgyNCz6zdVHZp+xaUL+Nd3vQaB/cWwwPGECWKfp0qmlbEH3ofkvpryU1DaaEBiWR2sWwPj5sr07Vx2rd2dhAi4mYshJELv3I6nSN3uotg0w== 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=D5lT3Sdn31EBj4benOQRLS24WNzgxPwC9Lw7sRjaDfg=; b=FIu+VdWi4MKvAIrRS0j0KxLIB5+EsRWZ3/mI0bfYDdkTWrQt1c8Rx9OnlEwxVXhAfFrg3ZXpFkfPY09a02Ki0Ai3uI0CGYgU76sRrCKflRJHWPBGuKBUz9AwxrB2QAQJx6pHlLKosu1Z5HgIpE/CnXYBM9dzZP7z86EIYDml2AdNxPrxv8cXdVqg49u2hTMbOyrRzoq6LvmgcjIMX/cK3HGvxuefvJXN2+XmFcPDwMkLnC4/MDj/Ww75IAyf+OPc3rGpHbU1XBpUDyFqG/PxPCNTuTbwFF9QbPq91wbDSs0+XwC3/igxjG05N3T6NfuiNqyvaSITmQC5+HavKGMxHg== 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=D5lT3Sdn31EBj4benOQRLS24WNzgxPwC9Lw7sRjaDfg=; b=CKtNVqk7Ac4eFH6Nxl6kRxb75al50BEljOS3SQuXYTO1SJqTG9GzTTvqWONHVsmHZqJxIJ14ei2zrc2NpOaS0Wd0lC7YQuWM+fBzVLM0BSDbUWdZBjHWHV4yXGMh7vmVgTJBqs2rXbzNEb2Kyjvah7wc1d6NqGoud6Tjoss4RFx1NbtN4eAyTvPEQI6FrBmhnpHolHpUDlsPSY0Ej+mIou5/vydV4M76ceihjpJXsg91nA3HgIbsLrblXRnQzM2uxua2Q6n3Q6mjyZKNKJ4/Q9+ubGZyWa7jq7ZUHmBsSrpsPKAyHr8fq8m592+rqmu1CSdoGQYB50AQveO9gPh72g== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by SEYPR06MB5085.apcprd06.prod.outlook.com (2603:1096:101:55::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.13; Wed, 3 Jan 2024 15:33:04 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::e139:fd7a:1b66:a3f7]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::e139:fd7a:1b66:a3f7%7]) with mapi id 15.20.7159.013; Wed, 3 Jan 2024 15:33:04 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Wed, 3 Jan 2024 23:32:38 +0800 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240103153238.18678-1-nuomi2021@gmail.com> References: <20240103153238.18678-1-nuomi2021@gmail.com> X-TMN: [7xq3ZVIuR3cbe6hAodN5HjOVEDyTuqEH] X-ClientProxiedBy: SI1PR02CA0008.apcprd02.prod.outlook.com (2603:1096:4:1f7::14) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240103153238.18678-5-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|SEYPR06MB5085:EE_ X-MS-Office365-Filtering-Correlation-Id: ef6bcadf-94a2-4f82-93c1-08dc0c7146c3 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4PKglmWJ0CCeu9VvyjFCcuG57/vTXqXGlV7RDmxxYWWHX7i+ldiN42piDozHuLRyScLTSC50Wnd/+ZSgllawR0AOZQFvm8JZYaBl7jsQSZcCl2QygFShVcJSdiWZGc1WOlf1cP3yDr7Npw5aiG7uiMYS0sBsD8cq7+BfBaHbzx082AogtUrVxD/1iWc0c8VQEuPYy4u0rkR+nq/i7P9LHYSLMuVs9Y4FiIcvhFkROH1k+akMaGGKvUNOymGOoVct/DsgT45mz6CQhBHX2ulefZ7xrXh7B/ZhUx7PaPEDjmRNhaap2+rNF3oeqYlq/JScoIlVWY6K6/so2un4b2I6fOz782URSpaJd848sZnOPAUb+TJu3XyXRGiOIeu7m5qLfBUinHzZ3OrLhx0V7xykhg9LvczZaAAmoV0FBlaEL7CqtX/lmTIzoPuTmxrR51uXguNChhb20L0BLALBTD8m2OxCW6jStzsi93DFsixWp9iP7BQ8SzNYDZ5oPTfEt06TSxz28wzsSDxbkoqoBvo0VunZgReYv77jpQKqKo+hO34ZuCrjNeInldVl/E+rgGWzGXaJMtDSkiBan1LhwT+KCnOlR9WhaIhSsARrid4BfEFByw26DgrnuTUydH14zZPJ X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 0kOz+DlLNE0qNtcYnC7Ly7w0WiQNHICPYrl6fAnmb4OpqS5oDxrcSviBWJZsU0rvmW8ZqcQ+a7e4uITBCe1YNWC0Lk09oouwFCd0K72JLUjLywkemUAk/N/TfWv6M9wM5S1OwKdlRDqXVMvKaDeylMga2rxD/PW397D4XQ6bIIeNMkCiHMET0x3NQbabD40Gn2d2zcEQr+xpnl+/aOCx9sKPxCA11YOlWc8ZflroWDof/Xw4tUlZB135l+XgSz5+44gMb9jY4lgFz+El1fCcBFKEZsL73F/6icN+TOrOdP7fo6wiprh9zrxxMaw3/e2fSRkIBLYD/+o9f+hpIiv1iAwLeteMKCRM781rWAxmnIxsUridWVSlxOJTPwJIGvljUMaTwkNd+d965RvOgh6f93XbF75lDctPzHsW1q9ZmjF+Vfnmldmk+7FVCZ2ddjHYqLqxhaFtbfx/PalVgGncP7aq7KA2ifa+cT8BqbnfSy0gH2J3mJNgC2HSssdXV/Gl/TGfxsPZ2HVBtAiGxgxt9+hVPEJsv8Z/+EHwFB8wEGunhZ1XFkvjyYvKTEy0mAPSpd8vQ5MKbQ+bNuo8ctAwMMjLcAZzPMSqoTt822S8FrVDm8dWdoQQTX9zcI7nh4YzilMMvYu2neyui35NFFKMBLFmPtR6r6K68nK4ZdEk4gjchrRdVx2TIGNKf2uzTmusjBBK1YAbY+Q6FVrVjmNCo9yqgR/pchmXwmJsG2DwPTzdjtHr4vktWlfUx/jnhCRelkJPNNB0t06orwV0veBTzykKeGQ5HtIv50ge141lwsGQ3uEMWOVJDcXxrnW2nDG9ee/PSpNkbHEnQ2lDU18ihrfSmGHrfRNhC9WwrtSa34KMyNUa0o/eiz1R63RRxv/CW07WpUCNy3QJLEDGe3Qfuhq4g+k7qy7MXIl+fK9Zf4Shooh+Q8lkJFRpqEfgsISPmsTKsWTvNdULZAkCBgzrIFTBQCQOS38FaTuJqnl5lo1Af8fSY6KIY4gFfxvQVSMe69uFhJDhfCL9ErXPHOOEQCn24eE/Js/0XZAxCUCTIOxNiSAT5dWTC/3JaIydnZPJzgY0vSfvlXLDykMyGXNTX9RX4Wh33GmhEyXVuLQax9HYwpW8Yx5BcENP90+W9U/YYCl87hH8asZqnNLQlNhRC0bitRB4s3yyMVeF++tAs5TEk8zIyjEpwIPG/X1kUci9bdrTxlImuWQCzV7JSODIUhi8xPCPv4IP20xKVvl0qz6xhqNQehs+4OFkLqBWuGvM X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ef6bcadf-94a2-4f82-93c1-08dc0c7146c3 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jan 2024 15:33:04.0902 (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: SEYPR06MB5085 Subject: [FFmpeg-devel] [PATCH 4/4] vvcdec: reuse xvc_deblock_template.c 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: Nuo Mi Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: IhyJ63ZMe7nM --- libavcodec/vvc/vvc_filter_template.c | 82 +--------------------------- 1 file changed, 3 insertions(+), 79 deletions(-) diff --git a/libavcodec/vvc/vvc_filter_template.c b/libavcodec/vvc/vvc_filter_template.c index 04eb9702dc..98a9005674 100644 --- a/libavcodec/vvc/vvc_filter_template.c +++ b/libavcodec/vvc/vvc_filter_template.c @@ -461,6 +461,8 @@ static void FUNC(alf_recon_coeff_and_clip)(int16_t *coeff, int16_t *clip, #define FQ2 pix[2 * xstride + 1 * ystride] #define FQ3 pix[3 * xstride + 1 * ystride] +#include "libavcodec/xvc_deblock_template.c" + static void FUNC(loop_filter_luma_large)(pixel *pix, const ptrdiff_t xstride, const ptrdiff_t ystride, const int32_t tc, const uint8_t no_p, const uint8_t no_q, const uint8_t max_len_p, const uint8_t max_len_q) { @@ -541,66 +543,6 @@ static void FUNC(loop_filter_luma_large)(pixel *pix, const ptrdiff_t xstride, co } } -static void FUNC(loop_filter_luma_strong)(pixel *pix, const ptrdiff_t xstride, const ptrdiff_t ystride, const int32_t tc, - const uint8_t no_p, const uint8_t no_q) -{ - const int tc2 = tc << 1; - const int tc3 = tc * 3; - for (int d = 0; d < 4; d++) { - const int p3 = P3; - const int p2 = P2; - const int p1 = P1; - const int p0 = P0; - const int q0 = Q0; - const int q1 = Q1; - const int q2 = Q2; - const int q3 = Q3; - if (!no_p) { - P0 = p0 + av_clip(((p2 + 2 * p1 + 2 * p0 + 2 * q0 + q1 + 4) >> 3) - p0, -tc3, tc3); - P1 = p1 + av_clip(((p2 + p1 + p0 + q0 + 2) >> 2) - p1, -tc2, tc2); - P2 = p2 + av_clip(((2 * p3 + 3 * p2 + p1 + p0 + q0 + 4) >> 3) - p2, -tc, tc); - } - if (!no_q) { - Q0 = q0 + av_clip(((p1 + 2 * p0 + 2 * q0 + 2 * q1 + q2 + 4) >> 3) - q0, -tc3, tc3); - Q1 = q1 + av_clip(((p0 + q0 + q1 + q2 + 2) >> 2) - q1, -tc2, tc2); - Q2 = q2 + av_clip(((2 * q3 + 3 * q2 + q1 + q0 + p0 + 4) >> 3) - q2, -tc, tc); - } - pix += ystride; - } -} - -static void FUNC(loop_filter_luma_weak)(pixel *pix, const ptrdiff_t xstride, const ptrdiff_t ystride, - const int32_t tc, const int32_t beta, const uint8_t no_p, const uint8_t no_q, const int nd_p, const int nd_q) -{ - const int tc_2 = tc >> 1; - for (int d = 0; d < 4; d++) { - const int p2 = P2; - const int p1 = P1; - const int p0 = P0; - const int q0 = Q0; - const int q1 = Q1; - const int q2 = Q2; - int delta0 = (9 * (q0 - p0) - 3 * (q1 - p1) + 8) >> 4; - if (abs(delta0) < 10 * tc) { - delta0 = av_clip(delta0, -tc, tc); - if (!no_p) - P0 = av_clip_pixel(p0 + delta0); - if (!no_q) - Q0 = av_clip_pixel(q0 - delta0); - if (!no_p && nd_p > 1) { - const int deltap1 = av_clip((((p2 + p0 + 1) >> 1) - p1 + delta0) >> 1, -tc_2, tc_2); - P1 = av_clip_pixel(p1 + deltap1); - } - if (!no_q && nd_q > 1) { - const int deltaq1 = av_clip((((q2 + q0 + 1) >> 1) - q1 - delta0) >> 1, -tc_2, tc_2); - Q1 = av_clip_pixel(q1 + deltaq1); - } - } - pix += ystride; - } - -} - static void FUNC(vvc_loop_filter_luma)(uint8_t* _pix, ptrdiff_t _xstride, ptrdiff_t _ystride, const int32_t *_beta, const int32_t *_tc, const uint8_t *_no_p, const uint8_t *_no_q, const uint8_t *_max_len_p, const uint8_t *_max_len_q, int hor_ctu_edge) @@ -673,7 +615,7 @@ static void FUNC(vvc_loop_filter_luma)(uint8_t* _pix, ptrdiff_t _xstride, ptrdif abs(P3 - P0) + abs(Q3 - Q0) < beta_3 && abs(P0 - Q0) < tc25 && abs(TP3 - TP0) + abs(TQ3 - TQ0) < beta_3 && abs(TP0 - TQ0) < tc25 && (d0 << 1) < beta_2 && (d3 << 1) < beta_2) { - FUNC(loop_filter_luma_strong)(pix, xstride, ystride, tc, no_p, no_q); + FUNC(loop_filter_luma_strong)(pix, xstride, ystride, tc, tc << 1, tc * 3, no_p, no_q); } else { // weak filtering int nd_p = 1; int nd_q = 1; @@ -737,24 +679,6 @@ static void FUNC(loop_filter_chroma_strong_one_side)(pixel *pix, const ptrdiff_t } } -static void FUNC(loop_filter_chroma_weak)(pixel *pix, const ptrdiff_t xstride, const ptrdiff_t ystride, - const int size, const int32_t tc, const uint8_t no_p, const uint8_t no_q) -{ - for (int d = 0; d < size; d++) { - int delta0; - const int p1 = P1; - const int p0 = P0; - const int q0 = Q0; - const int q1 = Q1; - delta0 = av_clip((((q0 - p0) * 4) + p1 - q1 + 4) >> 3, -tc, tc); - if (!no_p) - P0 = av_clip_pixel(p0 + delta0); - if (!no_q) - Q0 = av_clip_pixel(q0 - delta0); - pix += ystride; - } -} - static void FUNC(vvc_loop_filter_chroma)(uint8_t *_pix, const ptrdiff_t _xstride, const ptrdiff_t _ystride, const int32_t *_beta, const int32_t *_tc, const uint8_t *_no_p, const uint8_t *_no_q, const uint8_t *_max_len_p, const uint8_t *_max_len_q, const int shift)