From patchwork Mon Mar 18 14:16:22 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 47175 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:958e:b0:1a3:31a3:7958 with SMTP id iu14csp1042856pzb; Mon, 18 Mar 2024 07:19:13 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWpi9L0iaeAe+xLvlfyTN8/tPJRIxf01dqXpifs8YtlICGfPswqwjwLlExCdPj/+EXfOihMa+0ylRyjhfYEPc/LxbNq0MT4N9P8bQ== X-Google-Smtp-Source: AGHT+IEb6wEY8eoVLH+XCk/EWNucUsPVtX+ochuQtXDMZE9XHJhgNiST2sNMWgvlCPg+PRkdCKAo X-Received: by 2002:a05:6402:1f4b:b0:568:b484:8a04 with SMTP id 11-20020a0564021f4b00b00568b4848a04mr7056048edz.35.1710771553122; Mon, 18 Mar 2024 07:19:13 -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 x2-20020a50d602000000b00566afb7bb1asi4382723edi.62.2024.03.18.07.19.12; Mon, 18 Mar 2024 07:19:13 -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=nH+DaODf; 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 E1B9768D287; Mon, 18 Mar 2024 16:17:26 +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-tyzapc01olkn2032.outbound.protection.outlook.com [40.92.107.32]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8C2FE68D2C3 for ; Mon, 18 Mar 2024 16:17:21 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BsA3+wMyfpVgWVgNyD3WZYrTCLVjl91RW78szvQxpTRj0JYGOydB8qKowVWTnfT09nrr11tMy/oP774nrKjlzjxX16NtNithObCPVD3kd+iqt34MfpGWnqWFyQI+ueifkwDZhdXwfhs0ZPrZ4T8caNiB6RzNuBD2ZQDIl80fKmKuO3kTY3NwV02iI/80xRTzqOx6kfdkI9VdSVTdYihv74fNlNxFvoFJ7Lp9wa8l+8ydBnvnTXW1wx3SdNn/Rr0NcVloKG42EUxDUxPVtuH65Tt7/U/noqfeZhKL/vE6NO0wBI/43xmetxvKUiau76DqNQioul4025NUTGVAp54CEQ== 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=4sDd2FozXmsj+8fUfPNCQVdq0ZK3YBBlEl2U0eOaXMo=; b=l61jj5kcnLbnLFDQO0YQ4ZA6OPsX+xdpJ4RgAtZMzbbWmH4jC/8iJknaLPNhNMyhL/A8wYvXqrG6mJjaas0aukMT/hqjHhZNkx/2l2nTXplS/6qTy94opGKrJdVz+hFgm/ABZXuUL8tJuM8lmk8clboK9XsJhet3zEL9RKcP/uBs99Qu45bQr1k/yi+qSks7Vc8ued1XGWnA/plekV3peyTK810thJvMGCE1fi7Rm3nGheZKtXUKfJ5U7npR/8IUwh9ez5akEfI6SdtKiJaeo7FEfMG3ei2RVNNRffzu7/RlC8PAz+oKe0YVxl8RwCh75iKR257ezseHk05XzsPe+A== 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=4sDd2FozXmsj+8fUfPNCQVdq0ZK3YBBlEl2U0eOaXMo=; b=nH+DaODff94PjLWcd+RIr4R2RD2I1l00Y1+bJIWt0+eWVQW8UGHH+0z0tCLMSsx9lQ303T4fthkIx2CEC4emr5I3Msdn6r3hsVnEUmVBhQuU6A0S26wLCYXCpHfXodfmRnp6itFYCRfiXS/eIVeBWWBpLqnXT+zbZFhugGm4PRplFPlGGPP12PC4SitM7dRZeVEtjZJETly9Z3As1pVv0oI/o6FcfFdpYv1km4kMl2cqOhje0cx6sU2xprTJ3h2phSBPzl/0cL6UgOk2rFPKFz6i2pBiuurUWYaHYvgicKS91MJSUrWFsZE/0PyDl2UMToKOa27RFDJ2mdmP5NSGhg== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by JH0PR06MB6604.apcprd06.prod.outlook.com (2603:1096:990:3f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.26; Mon, 18 Mar 2024 14:17:06 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::d001:da90:518b:ec1c]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::d001:da90:518b:ec1c%3]) with mapi id 15.20.7386.025; Mon, 18 Mar 2024 14:17:06 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Mon, 18 Mar 2024 22:16:22 +0800 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240318141626.3375-1-nuomi2021@gmail.com> References: <20240318141626.3375-1-nuomi2021@gmail.com> X-TMN: [Q0ABpbByqO/r2nj2lPtW0nmeiRnGNGxe] X-ClientProxiedBy: TYAPR01CA0085.jpnprd01.prod.outlook.com (2603:1096:404:2c::25) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240318141626.3375-11-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|JH0PR06MB6604:EE_ X-MS-Office365-Filtering-Correlation-Id: 9d48d000-6997-4a2d-e2a3-08dc475616ee X-MS-Exchange-SLBlob-MailProps: Vs63Iqe4sQndKyqL8642oOb5kiEsziF1wSpNR8eDKWqGmVv7Tfe6UqwyyCy2cJz1APfwKmb8VGpi5MVyAiHnqeJOSE0u7QLIeiqv/wrALQxbRlDNCSESE85m5yyzz9tfLpqwG883IN7b8+f+dXtNowHW6/hzQ10wut8zoH0taCGMMocZLgkHa/HAqeT4vGGEhg0gw3m0xNrCMjdAIeuSIEkA8YFtjzGfToABBhXGQKNF4NKGMZNtLAN6/fLpRD7ZLSsbGXBdYL2IxWoF57olRNWJpctg8gy9Gb3Tq4dFs0czhhWzreZzhJdFQZqTagidqqmTOsYKdIYx/lGJ8qOT3rqCmRp1+1lUm2TrTkcMEofZM7Z+tuca7gPUxD9ypXTJ+zA6Gx2Xg+6aRc4g024LZMzcVvjkeuB5J4J8otiIJdFCtjDkaC86J5Lqqz9iNsBxD+l1NA9ZcHkuoefITVg2IMWLSqYdea9BnHSJEXYdLOBogs/oCRJb5hww08hcDHkiHgs91lA9aEi++li0hGPD0IsSAL8UEIjNHjKzPxc8yaIfEVmGhVcRgZ0OMpmde2mRidY7aLTACHFX6cdKckE6T1SsvUJqoeyGq8JTFYq4RYkdm8YSoknONsatReOaixzbPSyv1+K7SLJvawhuR/II2/Tkpc1gpbqNRJaEiVCvjARyczDTalT7XujKdUhjfpk4XxM3WIiQAnH5jxFt+nC18qNfAq6r+L7KjqgiDB4+BYM= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: fBz3I6VgffPF9OBCxwEZzg2H+bL6jtcxKblj+B2CqhYWY34zrPD5x2csoFLK8HGGhe1++Ysc6qkjmRGKl2J1yQnGNAGZq81Qb3afrP/ZtNyUYjynV0M1Dpwx66O3UtXChmBdDiWy/8C35IbHYFH4yw7ZH4aEPPic997s3nDIKvSicm1GQSa14rEIyTscxTF5cPoNWOLFfOzJVHR4mt/q0M+KGtU//lKBTHCL0rYDEuFkYHBMNlvUxxFpJr4mBDUcZbOwbKtemehLpvoiPl50UzQmRNyi3BNnFjWkhA3P+Fe/JgALJfm3LntGIYECfH77S99x6/S7jJUJF//ImScGKLu0HE9KxlVV8W7u1TmnqxfAEqoaEIhiTiY0mfJejelJZeyWRqx2YCa34WUsDJP8OClWlu2oJac2qdgz0E8N6GQzYNcJ+MZV5Oc9XXovIdfw3XY0/7ijWvLG+vD8ab0MzofzBCtsGK2G/0EyhpnsacXPOYavPwaAnOkOL3UvzERVxDbzZVeXBzGr8WSfH0qesmyr8wLlTpkwqrjb7w8t4YQYrFEqUxhSIX2O6Wi+vUrjkROeXCtBfBpajErJilFuYdrUr0Dj2nJZQI1aDUh+6Pyrc2sxpPGlrKNfpP3LbaGk X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: N6rMJN6JpZ11ejWV8PojyAE0khkkFzTl/mVHLmNPoUeTKvWBaVA8+ZmiwChaFRBBCGflR5qcqTLrM9e7tVN5ZWf3Y3qN2iYF0FxpnbxSL9TdfhVutO5WgKjgfm991G2tl6h6vWoWCszwdLA2mh6CZSiUnFV0VrCnBMXjziUrj3ADzkF7z3XgsVo52MADf1WKpa7Kibw+6w5zcnxwITngdb0WfxREMo2BOLsi7ujslR9Lqg9xVRG4pPkNIFkpMI1pJbUIW8XfOlwJxVxRiBh6B5EXCdwHy5S6kkvSb3CJSnXxNIbL7adldcDWlJxNIVruQQXgF6cWAyJf03Kv6LASNDTxvjl/vud8jLMWae2ibzVx8svxAm+A92S+fjCK//LC4So6oC/jA2JcNHe6Vsgy6Ax4sxchZPS5ltfnAUTapvuAvjT0rdO27E/d7ddC/hwpz4X0zNUJEjPuHVbAozPoiZ+jHli1uc3N7w9hTpYkL9rxYAYXWDmWCotkpKDJjBiMLBpt58PKXb0F2FTgW+YGOagoMR5baRhCmlsEX0UvL4J9iC7xX2hgzJFeMNkMEFteOQlz/bKcOOLC3nESOpUykG9Dlcbol/I79B4XEBAAjf2S5stR20p67crb/gluwialUdQYyOhUndgoBKj0vxUQaRemYrmYyctLGAoD55YhqISH0b2PjOw67QYi7qvQufmBDouhHlLlwFRp63Zx6gJdSFwti6E7XVy23oLHhKW/9wy7QejEJkpbQSMf4Akrk9uMAwr5fAQnd8CDdLOYeA+lQ3YZbXv8wSk/Tnuogj+Ze1JeSilz51OiYDETNsC+xCC0T1mTE2FiO3o30gwGe7rBrv1Vu7i4vsUTdiC5c5O1R5snLc/gtc2el30XFnwbasDi20EYbLLqmI9rpzYNfzutf7AE81gzihmoivpHDs2Am87jnbAqU6PPXbp3RUfrimlSs6G37bX+DxXWeSpwtpyyp3kS7/7UQWBoOUGLh99BXgLFuGBCW/UY+P/B9umozhTaQXOoIVJSQk9v8MkWyP5pCkwGi2xBo5BcB8Cw3Ei9ElnojCDElstdYeR3X9kg7/GFhnLsHelEB2M/jJALZu5YSfoed/P0pdHjUEFvIeq2ykqWazw6pPjVAnx6KunCEnsyb+VtIDnzvPjp+qmcqwpax7piPRaTw/UQPQZW3dEUL16DJ0v+AqAsPcPDx/VoWjC4d19eZ0C9BwSMeW5qpWelITQ7CHQe9qIdkpGbkIbL+/JNOdMG7mBMOyhXZaPpdYbYzL3lb4SIiqozyzUBos0KFA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9d48d000-6997-4a2d-e2a3-08dc475616ee X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2024 14:17:05.9458 (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: JH0PR06MB6604 Subject: [FFmpeg-devel] [PATCH 10/14] avcodec/vvcdec: sao, refact out tile_edge arrays 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: j/6fkUjQVvZG --- libavcodec/vvc/vvc_filter.c | 36 ++++++++++++++---------------------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/libavcodec/vvc/vvc_filter.c b/libavcodec/vvc/vvc_filter.c index ecb004d245..1a3cd02a9f 100644 --- a/libavcodec/vvc/vvc_filter.c +++ b/libavcodec/vvc/vvc_filter.c @@ -157,56 +157,48 @@ void ff_vvc_sao_filter(VVCLocalContext *lc, int x, int y) const int ctb_size_y = fc->ps.sps->ctb_size_y; static const uint8_t sao_tab[16] = { 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8 }; int c_idx; - int edges[4]; // 0 left 1 top 2 right 3 bottom const int rx = x >> fc->ps.sps->ctb_log2_size_y; const int ry = y >> fc->ps.sps->ctb_log2_size_y; + int edges[4] = { !rx, !ry, rx == fc->ps.pps->ctb_width - 1, ry == fc->ps.pps->ctb_height - 1 }; const SAOParams *sao = &CTB(fc->tab.sao, rx, ry); // flags indicating unfilterable edges uint8_t vert_edge[] = { 0, 0 }; uint8_t horiz_edge[] = { 0, 0 }; uint8_t diag_edge[] = { 0, 0, 0, 0 }; + uint8_t tile_edge[] = { 0, 0, 0, 0 }; const uint8_t lfase = fc->ps.pps->r->pps_loop_filter_across_slices_enabled_flag; const uint8_t no_tile_filter = fc->ps.pps->r->num_tiles_in_pic > 1 && !fc->ps.pps->r->pps_loop_filter_across_tiles_enabled_flag; const uint8_t restore = no_tile_filter || !lfase; - uint8_t left_tile_edge = 0; - uint8_t right_tile_edge = 0; - uint8_t up_tile_edge = 0; - uint8_t bottom_tile_edge = 0; - - edges[LEFT] = rx == 0; - edges[TOP] = ry == 0; - edges[RIGHT] = rx == fc->ps.pps->ctb_width - 1; - edges[BOTTOM] = ry == fc->ps.pps->ctb_height - 1; if (restore) { if (!edges[LEFT]) { - left_tile_edge = no_tile_filter && fc->ps.pps->ctb_to_col_bd[rx] == rx; - vert_edge[0] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx - 1, ry)) || left_tile_edge; + tile_edge[LEFT] = no_tile_filter && fc->ps.pps->ctb_to_col_bd[rx] == rx; + vert_edge[0] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx - 1, ry)) || tile_edge[LEFT]; } if (!edges[RIGHT]) { - right_tile_edge = no_tile_filter && fc->ps.pps->ctb_to_col_bd[rx] != fc->ps.pps->ctb_to_col_bd[rx + 1]; - vert_edge[1] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx + 1, ry)) || right_tile_edge; + tile_edge[RIGHT] = no_tile_filter && fc->ps.pps->ctb_to_col_bd[rx] != fc->ps.pps->ctb_to_col_bd[rx + 1]; + vert_edge[1] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx + 1, ry)) || tile_edge[RIGHT]; } if (!edges[TOP]) { - up_tile_edge = no_tile_filter && fc->ps.pps->ctb_to_row_bd[ry] == ry; - horiz_edge[0] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx, ry - 1)) || up_tile_edge; + tile_edge[TOP] = no_tile_filter && fc->ps.pps->ctb_to_row_bd[ry] == ry; + horiz_edge[0] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx, ry - 1)) || tile_edge[TOP]; } if (!edges[BOTTOM]) { - bottom_tile_edge = no_tile_filter && fc->ps.pps->ctb_to_row_bd[ry] != fc->ps.pps->ctb_to_row_bd[ry + 1]; - horiz_edge[1] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx, ry + 1)) || bottom_tile_edge; + tile_edge[BOTTOM] = no_tile_filter && fc->ps.pps->ctb_to_row_bd[ry] != fc->ps.pps->ctb_to_row_bd[ry + 1]; + horiz_edge[1] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx, ry + 1)) || tile_edge[BOTTOM]; } if (!edges[LEFT] && !edges[TOP]) { - diag_edge[0] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx - 1, ry - 1)) || left_tile_edge || up_tile_edge; + diag_edge[0] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx - 1, ry - 1)) || tile_edge[LEFT] || tile_edge[TOP]; } if (!edges[TOP] && !edges[RIGHT]) { - diag_edge[1] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx + 1, ry - 1)) || right_tile_edge || up_tile_edge; + diag_edge[1] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx + 1, ry - 1)) || tile_edge[RIGHT] || tile_edge[TOP]; } if (!edges[RIGHT] && !edges[BOTTOM]) { - diag_edge[2] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx + 1, ry + 1)) || right_tile_edge || bottom_tile_edge; + diag_edge[2] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx + 1, ry + 1)) || tile_edge[RIGHT] || tile_edge[BOTTOM]; } if (!edges[LEFT] && !edges[BOTTOM]) { - diag_edge[3] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx - 1, ry + 1)) || left_tile_edge || bottom_tile_edge; + diag_edge[3] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx - 1, ry + 1)) || tile_edge[LEFT] || tile_edge[BOTTOM]; } }