From patchwork Sat Jun 22 06:23:58 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 50066 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:ae71:0:b0:482:c625:d099 with SMTP id w17csp937596vqz; Fri, 21 Jun 2024 23:32:57 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVWPHtpk8zslEZavmGWP3xDASH+OFldiC8WH4lH6Y+vf0LTvj1gbCYOXkZXgjnV0FgbTCgPncno1aTamKewNi8Qq3CJ7cpUZrGjkw== X-Google-Smtp-Source: AGHT+IH3aeTRMnKvyLFtvA38aVp0Z/CNzVfuqPpbpRB0MN6vS1TbIP3dvtbiKAZi9lWZf6Fb+AIo X-Received: by 2002:a05:6512:3ba8:b0:52c:db4d:9f3a with SMTP id 2adb3069b0e04-52cdb4da0admr2295738e87.15.1719037976980; Fri, 21 Jun 2024 23:32:56 -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 2adb3069b0e04-52cd63b4049si866436e87.63.2024.06.21.23.32.56; Fri, 21 Jun 2024 23:32:56 -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="Ndz3/sEP"; 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 14FDC68D8E8; Sat, 22 Jun 2024 09:24:49 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from APC01-PSA-obe.outbound.protection.outlook.com (mail-psaapc01olkn2027.outbound.protection.outlook.com [40.92.52.27]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9566B68D863 for ; Sat, 22 Jun 2024 09:24:39 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Skm2RXqdOdqvuohRMov/FHb46H8K6+uA0KE7UJ6JSifavNWRF39ppOjh6TjvaLQS8K4uBzs8IKNSToxsXZxUrS/3qLAR2xiizHWKXLJ/yD670MEkoGgpt9dHW6N8AQyBi3Z4PBtqJkXajUuWTaotftLKVRnwviPjn0RnIieTAmnD+gLNmOJmPQJsRf38DChhRd1iAFgA/ur54nPoMz8Ioc6qC7mray77I1fRcSyU1iCHp03xsvNPJdx6MHC7PmYOln6aEhPVI0KbR6myFfoWiTyYinw4ostrNNx1uxJdmdx+NDnNf52D02K/d/44dutayAdvwn4HVgXc7mae7CUqSA== 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=HvgY5lpOoEkgrJVrxY3fO26KaysQlrdCEpJ/iG2fQe4=; b=SKu9YcAZSNUo7rm0tQrMsnBnqJpe1aybF3eEEYY/FSmTZKZ+W5lIuR/RVsifx2pn8E7GNWB74vDGIdRct53LgZTjyOedylnJwvfZRSl+RodF4/FkiiCuSk09xms1cPPJCLRy7iiWK4aQ+18fBb5wFjU5BMdYyhEfHATdR8qczulSolJqgT/r/C/mWCDqR3xMBOCcRxsh9UCr/v/0RmVMSlqFHbsI+Lp2dfRB9B7+sDS1Zfvh/syD/AvESyC1Kj/splTuNg9WMOuzihOr3STg/Ynh5smIs22xLfPoJ+CLK+2ToCaQv1sD61mvjZUZOpOBXsLUPRmWFLwHSEeKtYDQmQ== 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=HvgY5lpOoEkgrJVrxY3fO26KaysQlrdCEpJ/iG2fQe4=; b=Ndz3/sEPNoDkT4iNbYmZjUUCW0sojMWdCj8096/r1HPaNXO+WDbBkuxH9PYWPZ0zNx5YN1uJu5Z+Hsck8Dr6BkatfO26tYxTBX7iGa2TIhygs+gAXgf5dy23R4FNB8/n6aOGzaFAauvl3ZqC6B7nc6dEQlMeJtcmApGfgQ17s6oD4nRZwE6icbxc/E8NcBv5kwpjrDFvzuAbcR9eZDliNd5S8t6BKMp3YUOk/GFc4MziM9p15pksnlMoE1XThUVoQaKZYW3K7yEh+3g6k0AlX4yu1BIIRe/2DL5NeQOlNjVokn0oThGWY/5iTjfAlBmjRR15KPU13bttEDdu5MTKEQ== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by TYZPR06MB6045.apcprd06.prod.outlook.com (2603:1096:400:33c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7698.19; Sat, 22 Jun 2024 06:24:22 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca%3]) with mapi id 15.20.7698.017; Sat, 22 Jun 2024 06:24:22 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sat, 22 Jun 2024 14:23:58 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240622062405.285359-1-nuomi2021@gmail.com> References: <20240622062405.285359-1-nuomi2021@gmail.com> X-TMN: [nwuIENSsTwOVG0+6xu1bv6LeuGiVErQO] X-ClientProxiedBy: TY2PR04CA0023.apcprd04.prod.outlook.com (2603:1096:404:f6::35) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240622062405.285359-11-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|TYZPR06MB6045:EE_ X-MS-Office365-Filtering-Correlation-Id: a81fc6c6-6f17-44ac-4359-08dc9283f465 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199025|440099025|3412199022|1710799023; X-Microsoft-Antispam-Message-Info: 2vp0QxRZ5OXtnxlH+wLhR9I0aYMTfN16tGzo3c1/XDZFTgOq4eO6BWYprFuCc3S5HwO9I2Kyr/O+/T3rQfHfMfm4imGqlfZUO553rShsOousXj7jTSW0EgFktlxtCMBllVIvzgPlOiU9nmaofbcdIOz+JWQVM7qBxzOB7uQHDGmxa6UZc1doLIIq0y00+jIF8skIxdlcPegHYioNzY6sRa61IGppF63aUU1arHhiTMENtGkqOeHoiFSAzQ4hdRaLi8csyJvBmETw1hQOgEN5ayDgMOehGZ1hu7vaJIFrvbUVyRCXZYovggxo4WJRTW8JsG2fwE1hSecBo+aZxKche3GW5T5pTYv7U6kSLilrH9D4bQYORfd5CCVy1jjbaNvmwDoPAKZ6NLgR3pubURj0ImxeyYKd5jJReEPSsMXOpU4zXGB/BdH/5Ww2cLPT5fUNj+BwP8u8nZFzh7lxxHPXBe4J4/SbRnYCxyzkrX9/Zfz0KEC7F2CPhIllJMniDLXWbihtUaPPcaj1BnGKUC8n68EDHbmcWd0IOWpI6ajJ0QdtxfUXO8iyV4rIwFhhehnVjluuJba9cUq8/hlv9RASJuf938wSm5d0vxox2aAymFCLaN7yoKCCpXVwfpZRCvOD X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ZXiL16DFn1NtcyRj/M79xi60wp4UJMQfdss6Kq/vjU5mhAGNxkXyTBb9woK4Nml9ojsR/mjsHUyLC8t/ZhFVpNaF/Z1R1rfWNwFqurqIL4Iv17BclVTB5LywHKqrdDd/Isld8H2wOnHyBppXXw+DNlNISN/EmYegrNVklrYXUCw7TBWm6r0uAxA3oM+ZgGtewgLLRuVVHDhxtSZpPWW8zAmM2Y4zow9mpLmO7DDCErYnmX9Q7971zEvsb6mO8Sx56BzRtNMwztKMtaNdlJ5EQNZdeHYHrt4M+xfYTV1/wJPDaTsod0h4Cl0F+PD9wM3MRqNLwBrNGVUWPceLYakWi4bjLADalM7JejyyqI/drC7qZ/2BLSzQgWLquk2PNjs2fXSIYR3ScRjjjLJxdiQwGHwCP7UdPrQsXx1jwpm3Vn5AUxdS5yAAmzRolSTY7bpSJnaY2NU8VV7HelNjAS5nNDYwvV8sKD5zECiaf0qlw7Tg4O3kv50JEEkcIkAMu68KCm+9pM5JJtB1hE2im0jGgKhpfu0EdE4sz2yzDF/Idsk8xtqXgdZJCC1unsxA0jBB8odzputQo5DXfwOkOyDL9jW7smwm5nYuYVZDtCyGgRXODe3Rui4b9hoQgI2nXKJ4TVp5QaHawIdhEuNZMob9g6CKpxZqAW5LPYkYG9/6us4g/OVlD37cKEdjn4+xq9CAJiy1yZt8yWZXQqqoyp0iECxMF7fuLcENJ4QUGPcu+lgx8sXqS6mBqhJ8QnM3j7h4UzruHSDSDNv5rtpOJoEQdz82VsttZF7RKRtzeGX0F1Kn5Z8V2NmGvQtkj49APOHndNGAZWlINrKTTSgdOttB9mekrN3PNusRFnzcmG5fPur3Jk6YNhFvlXDsf0PNWBF61qKFSf2ayIMYKKi+fPv6hNtNR+h3Jk1h//nFg7geRQ0uBRmOImxHdbLkN2TjZ2aosRwd8yIr0KGcUnemEirpG0kqoMS/W7RKp48m/vmVBIGdyOOo8HFs9tp/K6gr5oM3GhIuE1xnxHPq67JiUfS/kzbJAVdgdpXFen5pA4jNTVXAEpuKvHtqsJgz1tC0SogfNzdeUNwOzUvWsA9J5uB6mxRHQz+syvFLk/kXemkoJPIrMeMzX6VCubKM8RCJ4awlTFHe3svk99qvDFRZADkzvQ4UXb2FEHXd85DiI8TIYArSenKSVc8SvuBwOhUjIIzIBvpuNExfSZMEVAF/FVkPCJMTRsfrxV1e8hm8zEDk+J+B35S+AfoTQWTU/B1Omi6A+57OYFBX+v2pMQnhqmEI1g== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a81fc6c6-6f17-44ac-4359-08dc9283f465 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jun 2024 06:24:22.0040 (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: TYZPR06MB6045 Subject: [FFmpeg-devel] [PATCH 11/18] avcodec/vvcdec: refact out alf_get_edges 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: UI759Eldm+Aj --- libavcodec/vvc/filter.c | 53 ++++++++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/libavcodec/vvc/filter.c b/libavcodec/vvc/filter.c index 3aa241ad90..671e599dab 100644 --- a/libavcodec/vvc/filter.c +++ b/libavcodec/vvc/filter.c @@ -1036,6 +1036,35 @@ void ff_vvc_alf_copy_ctu_to_hv(VVCLocalContext* lc, const int x0, const int y0) } } +static void alf_get_edges(const VVCLocalContext *lc, int edges[MAX_EDGES], const int rx, const int ry) +{ + VVCFrameContext *fc = lc->fc; + const VVCSPS *sps = fc->ps.sps; + const VVCPPS *pps = fc->ps.pps; + const int subpic_idx = lc->sc->sh.r->curr_subpic_idx; + + if (!pps->r->pps_loop_filter_across_tiles_enabled_flag) { + edges[LEFT] |= !!(lc->boundary_flags & BOUNDARY_LEFT_TILE); + edges[TOP] |= !!(lc->boundary_flags & BOUNDARY_UPPER_TILE); + edges[RIGHT] |= pps->ctb_to_col_bd[rx] != pps->ctb_to_col_bd[rx + 1]; + edges[BOTTOM] |= pps->ctb_to_row_bd[ry] != pps->ctb_to_row_bd[ry + 1]; + } + + if (!pps->r->pps_loop_filter_across_slices_enabled_flag) { + edges[LEFT] |= !!(lc->boundary_flags & BOUNDARY_LEFT_SLICE); + edges[TOP] |= !!(lc->boundary_flags & BOUNDARY_UPPER_SLICE); + edges[RIGHT] |= CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx + 1, ry); + edges[BOTTOM] |= CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx, ry + 1); + } + + if (!sps->r->sps_loop_filter_across_subpic_enabled_flag[subpic_idx]) { + edges[LEFT] |= !!(lc->boundary_flags & BOUNDARY_LEFT_SUBPIC); + edges[TOP] |= !!(lc->boundary_flags & BOUNDARY_UPPER_SUBPIC); + edges[RIGHT] |= fc->ps.sps->r->sps_subpic_ctu_top_left_x[subpic_idx] + fc->ps.sps->r->sps_subpic_width_minus1[subpic_idx] == rx; + edges[BOTTOM] |= fc->ps.sps->r->sps_subpic_ctu_top_left_y[subpic_idx] + fc->ps.sps->r->sps_subpic_height_minus1[subpic_idx] == ry; + } +} + void ff_vvc_alf_filter(VVCLocalContext *lc, const int x0, const int y0) { VVCFrameContext *fc = lc->fc; @@ -1047,31 +1076,11 @@ void ff_vvc_alf_filter(VVCLocalContext *lc, const int x0, const int y0) const int ps = fc->ps.sps->pixel_shift; const int padded_stride = EDGE_EMU_BUFFER_STRIDE << ps; const int padded_offset = padded_stride * ALF_PADDING_SIZE + (ALF_PADDING_SIZE << ps); - const int c_end = fc->ps.sps->r->sps_chroma_format_idc ? VVC_MAX_SAMPLE_ARRAYS : 1; - const int subpic_idx = lc->sc->sh.r->curr_subpic_idx; + const int c_end = sps->r->sps_chroma_format_idc ? VVC_MAX_SAMPLE_ARRAYS : 1; ALFParams *alf = &CTB(fc->tab.alf, rx, ry); int edges[MAX_EDGES] = { rx == 0, ry == 0, rx == pps->ctb_width - 1, ry == pps->ctb_height - 1 }; - if (!pps->r->pps_loop_filter_across_tiles_enabled_flag) { - edges[LEFT] = edges[LEFT] || (lc->boundary_flags & BOUNDARY_LEFT_TILE); - edges[TOP] = edges[TOP] || (lc->boundary_flags & BOUNDARY_UPPER_TILE); - edges[RIGHT] = edges[RIGHT] || pps->ctb_to_col_bd[rx] != pps->ctb_to_col_bd[rx + 1]; - edges[BOTTOM] = edges[BOTTOM] || pps->ctb_to_row_bd[ry] != pps->ctb_to_row_bd[ry + 1]; - } - - if (!pps->r->pps_loop_filter_across_slices_enabled_flag) { - edges[LEFT] = edges[LEFT] || (lc->boundary_flags & BOUNDARY_LEFT_SLICE); - edges[TOP] = edges[TOP] || (lc->boundary_flags & BOUNDARY_UPPER_SLICE); - edges[RIGHT] = edges[RIGHT] || CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx + 1, ry); - edges[BOTTOM] = edges[BOTTOM] || CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx, ry + 1); - } - - if (!sps->r->sps_loop_filter_across_subpic_enabled_flag[subpic_idx]) { - edges[LEFT] = edges[LEFT] || (lc->boundary_flags & BOUNDARY_LEFT_SUBPIC); - edges[TOP] = edges[TOP] || (lc->boundary_flags & BOUNDARY_UPPER_SUBPIC); - edges[RIGHT] = edges[RIGHT] || fc->ps.sps->r->sps_subpic_ctu_top_left_x[subpic_idx] + fc->ps.sps->r->sps_subpic_width_minus1[subpic_idx] == rx; - edges[BOTTOM] = edges[BOTTOM] || fc->ps.sps->r->sps_subpic_ctu_top_left_y[subpic_idx] + fc->ps.sps->r->sps_subpic_height_minus1[subpic_idx] == ry; - } + alf_get_edges(lc, edges, rx, ry); for (int c_idx = 0; c_idx < c_end; c_idx++) { const int hs = fc->ps.sps->hshift[c_idx];