From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 860B04A1A6 for ; Sat, 22 Jun 2024 06:26:16 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CA7C268D8BD; Sat, 22 Jun 2024 09:24:48 +0300 (EEST) 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: =?us-ascii?Q?ZXiL16DFn1NtcyRj/M79xi60wp4UJMQfdss6Kq/vjU5mhAGNxkXyTBb9woK4?= =?us-ascii?Q?Nml9ojsR/mjsHUyLC8t/ZhFVpNaF/Z1R1rfWNwFqurqIL4Iv17BclVTB5Lyw?= =?us-ascii?Q?HKqrdDd/Isld8H2wOnHyBppXXw+DNlNISN/EmYegrNVklrYXUCw7TBWm6r0u?= =?us-ascii?Q?AxA3oM+ZgGtewgLLRuVVHDhxtSZpPWW8zAmM2Y4zow9mpLmO7DDCErYnmX9Q?= =?us-ascii?Q?7971zEvsb6mO8Sx56BzRtNMwztKMtaNdlJ5EQNZdeHYHrt4M+xfYTV1/wJPD?= =?us-ascii?Q?aTsod0h4Cl0F+PD9wM3MRqNLwBrNGVUWPceLYakWi4bjLADalM7JejyyqI/d?= =?us-ascii?Q?rC7qZ/2BLSzQgWLquk2PNjs2fXSIYR3ScRjjjLJxdiQwGHwCP7UdPrQsXx1j?= =?us-ascii?Q?wpm3Vn5AUxdS5yAAmzRolSTY7bpSJnaY2NU8VV7HelNjAS5nNDYwvV8sKD5z?= =?us-ascii?Q?ECiaf0qlw7Tg4O3kv50JEEkcIkAMu68KCm+9pM5JJtB1hE2im0jGgKhpfu0E?= =?us-ascii?Q?dE4sz2yzDF/Idsk8xtqXgdZJCC1unsxA0jBB8odzputQo5DXfwOkOyDL9jW7?= =?us-ascii?Q?smwm5nYuYVZDtCyGgRXODe3Rui4b9hoQgI2nXKJ4TVp5QaHawIdhEuNZMob9?= =?us-ascii?Q?g6CKpxZqAW5LPYkYG9/6us4g/OVlD37cKEdjn4+xq9CAJiy1yZt8yWZXQqqo?= =?us-ascii?Q?yp0iECxMF7fuLcENJ4QUGPcu+lgx8sXqS6mBqhJ8QnM3j7h4UzruHSDSDNv5?= =?us-ascii?Q?rtpOJoEQdz82VsttZF7RKRtzeGX0F1Kn5Z8V2NmGvQtkj49APOHndNGAZWlI?= =?us-ascii?Q?NrKTTSgdOttB9mekrN3PNusRFnzcmG5fPur3Jk6YNhFvlXDsf0PNWBF61qKF?= =?us-ascii?Q?Sf2ayIMYKKi+fPv6hNtNR+h3Jk1h//nFg7geRQ0uBRmOImxHdbLkN2TjZ2ao?= =?us-ascii?Q?sRwd8yIr0KGcUnemEirpG0kqoMS/W7RKp48m/vmVBIGdyOOo8HFs9tp/K6gr?= =?us-ascii?Q?5oM3GhIuE1xnxHPq67JiUfS/kzbJAVdgdpXFen5pA4jNTVXAEpuKvHtqsJgz?= =?us-ascii?Q?1tC0SogfNzdeUNwOzUvWsA9J5uB6mxRHQz+syvFLk/kXemkoJPIrMeMzX6VC?= =?us-ascii?Q?ubKM8RCJ4awlTFHe3svk99qvDFRZADkzvQ4UXb2FEHXd85DiI8TIYArSenKS?= =?us-ascii?Q?Vc8SvuBwOhUjIIzIBvpuNExfSZMEVAF/FVkPCJMTRsfrxV1e8hm8zEDk+J+B?= =?us-ascii?Q?35S+AfoTQWTU/B1Omi6A+57OYFBX+v2pMQnhqmEI1g=3D=3D?= 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: --- 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]; -- 2.34.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".