From patchwork Sat Jan 6 10:51:32 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 45502 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1093:b0:199:52ba:a72d with SMTP id w19csp588007pze; Sat, 6 Jan 2024 02:52:55 -0800 (PST) X-Google-Smtp-Source: AGHT+IHws1u/DtiNTiytDvAaYB8AtPZxL7Fp0EMd/QZkTLfmmABcKC/kS51d8HhBxSIh+oKEJ9pI X-Received: by 2002:a50:9e47:0:b0:553:34b1:1130 with SMTP id z65-20020a509e47000000b0055334b11130mr224568ede.58.1704538374943; Sat, 06 Jan 2024 02:52:54 -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 di24-20020a056402319800b0055411d3d790si1389932edb.168.2024.01.06.02.52.54; Sat, 06 Jan 2024 02:52:54 -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=tt4w3UzK; 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 A172668CD0C; Sat, 6 Jan 2024 12:52:43 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from APC01-PSA-obe.outbound.protection.outlook.com (mail-psaapc01olkn2107.outbound.protection.outlook.com [40.92.52.107]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3F69368CCE7 for ; Sat, 6 Jan 2024 12:52:36 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fST1LGtN61d7kBvWvCHSYUkf4YcxxQ5te0NLHu6NceiMOomUISOsgptqzNgQJOWHrLdatlCCzOwWZr29c0IKMQDTnH6LNfxbgMps00PIB8irBPo+WFOSHVX86kaHYZ5Xcx4in+VlGCZeEAVcpfCnipeqvWSzRwNirBa+HkZot4J4W1iBfADrLQcv67F5RLN4PR20D8OhOcC9wi/dnbfxa2lDOtHeCypHGapgBt4cmNOpDoikXGHoB6ZgsLXHyQSA7sQnfGpYcu/n9HIId10wV1kCBcr6SA7URY/OUdUbM8lDrtuSHN+da4ZohnGJOkSUbTjvpRUtSuKLtSe7Mc89Ig== 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=k1PnUjIvHXllUoOTMehe9FfXlRS8Q1E+qvBLlh6Xvj0=; b=kd8SfaqamMXCRI91ie8Q2ssU07UXHlqOEQ+gGu6jYwHAE9gqSu9a0XVYH7G1TJvJ4kvlUZfl63qQ6F+MWe52Ijh3BFbTJ48BPosO5li0kva/02iWm54LWEzQgYWznpyM2S3WmYN55VbagO1JJi28RWOy35pamfm01ndKq7et+EKDJiHy7rkr3C5PcjDmMOaJCROMNi18LSgF3z5IZbzO3ct2t7kzd5QwilurVy0TUHc7qGl7gI2bV77JG30EQ/pu0tsxOC96icdfGCw++XLloneH5XNO9JeMgHyGPXk3wvAdFVauh0C6lshmMw3iR57zxcx+ft6GPulPnO5eTELHPg== 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=k1PnUjIvHXllUoOTMehe9FfXlRS8Q1E+qvBLlh6Xvj0=; b=tt4w3UzKyr9XC98SXnjGj/YjMNWQbWtIxcjT6+SRaed0oQ9uqs+ghoYR6NJVnSBnxBsAnm3sQlQBv0cDvThvk1shyiPYgCeCLlqJzho1Kw+h6G942ai0//zZ0CbmafpyiSBwNjNvld8Bgp8F7cfSEk4a8qe8mqD4/F+/agQvjb7vqzCIK1RWGCJMTTvtnw+tGrjhJ8Hp74wJZoiwQY236XrOJMDPGO0/6ZBp7e4565c7DfxEkjwWujdJJ6HQRXXFQ0WzlFH0fOvyMgj89MER/2b78aBAotTj639ldCRVGIiJoSH4agdiMZXNS0JiFZKctG/mIawmyJMKz82sSGvPRw== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by SI2PR06MB3946.apcprd06.prod.outlook.com (2603:1096:4:ea::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.17; Sat, 6 Jan 2024 10:52:16 +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.018; Sat, 6 Jan 2024 10:52:16 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sat, 6 Jan 2024 18:51:32 +0800 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240106105132.31509-1-nuomi2021@gmail.com> References: <20240106105132.31509-1-nuomi2021@gmail.com> X-TMN: [kt6G7l2C+iyIRVr7UkWbzhbCavSDJ3fE] X-ClientProxiedBy: TYAPR04CA0003.apcprd04.prod.outlook.com (2603:1096:404:15::15) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240106105132.31509-4-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|SI2PR06MB3946:EE_ X-MS-Office365-Filtering-Correlation-Id: 7656cd59-43d6-41bb-99ff-08dc0ea58ba0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1JAa4WpeEdtCNL2Hktitz8Mwlg5a56cm4H/BjwYF5KI5QSc2PdmXglAn2ZhuR3E4JJaydq6FjgF7fFr3+zOi7sTVTKkMALAc9etKLoYpZTi3agSHCNibwEAGv0+s3ybIlSXTHd2PCiSFcvuHHeGQyXwtfhR1X7HYMOZqyZQCu1aW4ZP4sLLOE/WqfCMRV+qG8oOQm3oPcMttqotsLEVH+ZXE47MBJuiH6hkCKpQEkE5+ZaVOUbPWwYsBW4qleVZYw+8UgHYmdhF1i66//6I0X1ji/EhlFkmcSc43lnLICGOiZ3EfmwMQv+5zv0kTNE4zt5BqonxaMCC2DnpxL/1yh93fexj47Gb0CxmPH8auSx84DlNpM3dXy5Qe4Mu9PIRhnHiJETcQpICq5pd3bem6EpphR1JqmCkAxYMntZKZlObiNSVYDzHGMW60bWxok7aeIvgmx07X9wOe7fvnpvQMgJbYsbWtfrJ7n8J1f0nGPFIxB+U/csiJEgJ83nkBznJzTgkPNjL8trHM0bFWA5UEbIQ6VuJQXSfnLzXjyZNGPPJiIkq1/NMu4N0ECLRomolSdJOqC1ciljJYJOw2ZJyYrTcBmu9aS9qVhn7+Igo57/Xm6L+U4+bKR95l6dvxIMUQ X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: TcKmmN8Hej1baJ7gPsR2ECsT6TKVClgD1nnzUGh+HgB+Rm3lwrteIaOOSfW7wUmMYG/yTPHYGVjEEVN20XxIIvQr3AQ+REcOMawIpoYeQ6ZJUP+1g00b31HR95+z3G7xpcKKUeR3D1W8dkCsujrA55g6NFiAAAYq6TvRxYiJNUfazaCtBWzfqkInwuW5nZjaq8dACm8XsQgh5nGlsROrkj1iuP6YKhlmu1dFZgscySHnkro/hNkwXsR4/iFLqY84Meql57QGeKU/g8rKw99shIID2shDjitnZ+oVptlwwa3TVRyN9ZWCd6rbvpQ7KvwNyzwATlVwjGPuf5UoZemeWS4YOk/jJTuDDswrJmdjtV9HODBLhFgOxPIDCt7U/hGjRHHYco/Fyci1bIStZItj3F2WXeL6MUHM9UOpPlDqpOqpqHTv/hH+178dahBAIChOUaGOxXuF86GCJq2BTHPFYF/kDDR1uQZbyPdqMAKW29hVpy8EgyQD6yYJGRILKHN+9BBTRceRknF4wPgFAMfCPZHi8wkZbvj9xcHpgA6y+cUXRsYW05N22ze3vQ9+4blwZEW9zupc7tO+6ZFIOpe/uJyGphPkulhr1Obfrf7tva79dFZDj3Av39CfEpI3aPDz9frloORK+QfO+UI8JvDZDW1MCxseAJnk+RYYwBmAnkpbh/3nevv9J288m2aQl8ssSejH1HI6TJFWb/+aUzXlfnJbu+Lnwk+edGxWJZbyioT30YG+TPc1amqz5+/F0pSd30SGjz4Xfd22yIXdMeNCZDJ6mfyir4GDdQESf4IEf/g9nrp1DU24lqAzA3zd5/Q5Xsob+OAcKGkn0tjUyRL2ST+qtCpBDfAz1VneVRCr5JrDgE2QmlvBeElIcGj10OClYG2ULtZUDkHSzhDw4o+cJ0FyYl8qlJVbBDYi0Ye9eGSxWaIOFZmxmTXx4ToX4b8KxRrN2YtQ0cicBKpq/RRk1e5QkFAu7XXd/qL7dkZsX4mHkihsD2IV1y966i6ti2PvmFVilcaotHH05mvhHVSIbDtHFeLeodOU5QoUQaHH0Wc4MblmO8lAswbcjofETppSe/96tt9/Ie52GqvF+14YhDU6XLFGynn6VJhEgHXVtrXIiVzeWJ2Oj1hpTTGmDS8jVQdwCQ9IqPkpG9JgMzWDMWDQvfYJ6NdTauXQEPof7sjfgwlwYnYYNa4ydExogSmdh6V7dCs5rkNgaxXnKHC/S4H8Q9Cyv+bXkOTCx8pujFDL538vk/MW0j26uGLvG6ir X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7656cd59-43d6-41bb-99ff-08dc0ea58ba0 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Jan 2024 10:52:15.7048 (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: SI2PR06MB3946 Subject: [FFmpeg-devel] [PATCH v2 4/4] vvcdec: reuse h26x/h2656_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: ZCVfYBzMjlPe --- 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 9418980c33..671ed7de4e 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/h26x/h2656_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)