From patchwork Wed Mar 27 13:01:05 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 47532 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:9f96:b0:1a3:b6bb:3029 with SMTP id mm22csp605128pzb; Wed, 27 Mar 2024 06:03:25 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXe0WZjc07Ys7XUFXalkslwsPwdFMVSxkfoyF3pZUY5uum2KiO3SFuCX/Xag5TP9gydcSgLtyrRbc8HOsAv6X+Gx2qXaXPvC7swXg== X-Google-Smtp-Source: AGHT+IEved2PYYQt7OVCo6JF+qYqmHsxxIMTfhGqSHZ4cXwkUvlTI0l+a4IEYfyTjD1h35ELknpy X-Received: by 2002:a17:907:7212:b0:a45:cdd7:c481 with SMTP id dr18-20020a170907721200b00a45cdd7c481mr9948429ejc.1.1711544605379; Wed, 27 Mar 2024 06:03:25 -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 dc19-20020a170906c7d300b00a45b8e1352dsi4735128ejb.741.2024.03.27.06.03.24; Wed, 27 Mar 2024 06:03:25 -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=FhiXouvH; 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 C2D6668D6CC; Wed, 27 Mar 2024 15:01:50 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from APC01-SG2-obe.outbound.protection.outlook.com (mail-sgaapc01olkn2014.outbound.protection.outlook.com [40.92.53.14]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 18F3868D6CF for ; Wed, 27 Mar 2024 15:01:44 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CJlpO3WElV7GTv47fAKHpVUKujtI/NeMzReDghENX2+FQLvquLqwehHoHnd9q7gScMBPkd+rO7sxePxZIJwxSCfTOyDcIud2hqUhUmvYvcwJrW356gGfXs3uMFTM+EWQVF2ECYIEeTjjAsbsFabmEbg8BpuDW0T+lVL0cutW9Jy93Cg+HXHqNr7eWB5qkYRh4uGhPe/17Y8iCyCN28EM0eGtIFiq1j6J9gJSaA3Q08X4FwI8F4wAItb3fFezCIO5F6E1/msAAikWhjpYk2GYaGpz9b29NlGkVVmvt+Ldln2aPBns5ISi56WLOkDJn8cVwAsfDyL+wkVVC/E4dKon+Q== 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=/2JtCP0x9zUOKSmAixxljMReLCurMfDvm5V0WW9MHNA=; b=fBvG8h1WrLawpK4CTtDefQMtbkcqIhFhxlI49IM98oyG43B7gQ19DU8WXpNuNOKLyqwqpdIL1LKdcqFMT9fonC7XmTOxB2deFe5Ytqyu1a8qNyGUI5b9B8kJwV7zx4XC5rkSCW/qfUJ2pSiz4a68QxGwQW13I8iRm4oLFOK3pNihdwZIKvZwt795tmB0Wpa2t3eBlDJaiRa32nAd4GIK4Vc74deM7meJ3K8XGd2I03gWQf87HDs01gwejgLlcDtNneMXYcWqQrRo4x9eyVmPlODyN43FmqlYVUCiCXea0MEADLfHRBTaeNOh6x8Pmo+eAms68ioRNWIIP69d4adyYA== 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=/2JtCP0x9zUOKSmAixxljMReLCurMfDvm5V0WW9MHNA=; b=FhiXouvHdhHIMA9DbqyfdZbxH2HLVdseqcnj25wz5glqXbNcUZfhkFH9PSfjENH5Mi9/yRWeHzvZ5wRx3NodlTSaW9kV0jHYi6oY4KJmkP3SQqLL1JnZRFevNmmXFaoVodVll4iNjoF+1hdb6whXKk2IpZyhL5zrZYrCrmky+nJt4i1IUTazooYSRtslSmBuw/ACSmHOMJ3llWH5w4f0MPBVqxiRmH7AVQMKWeMpuEMiXdXydCoR5WXuyhIoxRKpXBzHQniU00GcuzbHeT6ptYB7tVEE+yi4jFnsazuDjKNMdLiY6BoRT5sn7XIxPFAfuUvlu0GxhufH8jdqUNnM1g== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by JH0PR06MB7107.apcprd06.prod.outlook.com (2603:1096:990:9b::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.33; Wed, 27 Mar 2024 13:01:27 +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.7409.031; Wed, 27 Mar 2024 13:01:27 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Mar 2024 21:01:05 +0800 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240327130112.6111-1-nuomi2021@gmail.com> References: <20240327130112.6111-1-nuomi2021@gmail.com> X-TMN: [F/l5Aou7Q9dLiG1/8sBndu505VSol6x4] X-ClientProxiedBy: SG2PR01CA0117.apcprd01.prod.exchangelabs.com (2603:1096:4:40::21) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240327130112.6111-10-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|JH0PR06MB7107:EE_ X-MS-Office365-Filtering-Correlation-Id: f63c52d3-c5cd-4109-a9a8-08dc4e5e0335 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 38tESl8uNDiiyuaZJu/fhq9wEy8CR6/iGXh6hapzjSz4ygatL1G+cLRGkBv2dMkVCaKsN0tvQ8MMzF1vv3fdg0OO5iVCXllzf3zcLebXVJeLdZeUZtI7ljESFiQgMzagyt/MIoChWp5J8KwPEJCljU+sUCA+zc1jYQnFLmsw5aju/ybZzfj673Rob4gInuY9Lfiq2IN8FZT3NGGbCn/eA8Z0DvGpAoCkl87DrbLGxzIzTqxBKc1fuISAxRos3rT/bm7zzCTwZgOMvT7djcsxtMa5D1UQzLLXRIuGLZpGCNVBFxjYd23mcnVcSzNKd1jej13ia8NHY0PNjB512UpMqnd2oB28f5QSfTL5svgysLr8W3ASRzDLVZx/ht8y2fZHSATcG0PQmsKdIA2fbt/pXVYxtXqM8MASy0hLQSraqP5i2+eQsxoAN2eABBjw7qJ5BXR/NTXAJxNH0HTZN0tF9IaZzjRVel73XSRlzqnB9YJD1FvCFY6NZmXErRG/Xb4qCMUrB0oGxSRFlN4tq3NyNfjR+RyBP2JEpH9XT4LMzYZaWIsFSoxy860n5gV5Aj55Lo+77fS91YRA1EhxIzIEaVTVcNV1hmuPb+Qz2S7DT0RMdPbRCXOl7991c1HbScI0 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: tM7n5RKoJG8pvzQmXT5Fd7HeKM2UjRH6uRpYyz9Zddpp2Wh5dmeH/1ReVlcWhgYIl37HZfGMSS3AEZFjCcAnU9830hN/nnQsCYl6pNBOZszR4T5vEqqWrdv2Z1+z7mza6+/eKRF5o5Q76rPSIgSZd2ztnvjowTxEQmzfk1Qd6ZKev4kaHqmfBNN+Xy5hjcXcFm5+ov7kZKBUCv1+cTPw9H2HWkOOcNhfw65dFv1LeySWPmdr1YsYuMHg5gDvdVEaITY0TXgQSCf3R/HFQdp+0qw05bAsHb2LKa3b/lbam3O51igxgJf/TM13zJ6zT9UV7LbT4uy9+miCmKgRwNOI+7a+N8gmp6NpCtlOQAt/jiKQ6qutO9lsyU3Cjp0mHZRbo09OrMrLQHgn+mea9EDh1tY1bv6GyG25JnqynQFT9njWzPv0l0JnCA7jiCvo8m4afrHCGLupznzLPOiFLb6wW3VF9OWsMM5Xk0IqEhLCYB+QzJzrqk3gE6mpnhEyk1WbnsIerdArFj9dfGA8sqTQrrkWiaZBs/04KSL1/dSFxCl035Yqhgp6Fqotobqr34tRV6bqaili8AX1d2Wk0xiLjouPDDt2+Nhj6LnlSFsGVtYLryb8FPTZqe9P8WUtkaLjT8blwRruFpTO1h5JHHLDgM1w/YjC8BD2nKCNNg8YiwEV1oqxp/dJSzAku9F+yhGokoiRnfcKoDKZncm6n123S2+40PeNU11FXzrfc7OAP1Lxw9d2qxknENPN7g7WoLTI7L9szT5V07c1SUDJb+sI/p4epPz25UIxKsx/2dN9MAkk/oQusEaHrrN4IgbcJE/KOrbYxN9fUxiUwP/nV8wy4eDZlfj7ZeG971J9QDgJykw7XSHs/xvSfKRQ5KaRgdw7saT3kWNr64p5qwi3sDDB/EiA34aTU5+CrGO0JXgyCN0ZMOYS5ZaZXBuMchGol3aPagBpC2TfamLm13J/T8PykDyEBrGHfUnFoSxoWJUBlQv9lBDQPglRaJhUwJo1pcxWX2kwJvDUwZl7W/Zk5q+ep6uvlkY4KRo6Eaowk5tqsj9hSYopl2W/kC2NJ4SqpcfyqDrKkRmCwxsIiLdMa2DCPrKP0xw4dhnFFOcsUPcb3VMMB2DvAcCuQGBRHF9W8kjVz7qiMWnQ3PL3v/El1rd7kcoeblsu2wkBTyWbfR+VaFLnUKgeDu3x7uvZr9I/WU602E6t4x985mz8lDAK/11C0Yg1OpfwjfECmo4ay1a2DsHy7xLqVzfhcfjzMbmOQZPuEi/kxWZt08dOzdBpaH3kjg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f63c52d3-c5cd-4109-a9a8-08dc4e5e0335 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2024 13:01:26.9374 (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: JH0PR06MB7107 Subject: [FFmpeg-devel] [PATCH v2 09/16] avcodec/vvcdec: refact out deblock_is_boundary 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: /qwV+XNJjRmb --- libavcodec/vvc/vvc_filter.c | 66 +++++++++++++++---------------------- 1 file changed, 26 insertions(+), 40 deletions(-) diff --git a/libavcodec/vvc/vvc_filter.c b/libavcodec/vvc/vvc_filter.c index 10bd57e078..11972bde41 100644 --- a/libavcodec/vvc/vvc_filter.c +++ b/libavcodec/vvc/vvc_filter.c @@ -528,6 +528,26 @@ static av_always_inline int deblock_bs(const VVCLocalContext *lc, return boundary_strength(lc, mvf_q, mvf_p, rpl_p); } +static int deblock_is_boundary(const VVCLocalContext *lc, const int boundary, + const int pos, const int vertical) +{ + const VVCFrameContext *fc = lc->fc; + const H266RawPPS *rpps = fc->ps.pps->r; + int flag; + if (boundary && (pos % fc->ps.sps->ctb_size_y) == 0) { + flag = vertical ? BOUNDARY_LEFT_SLICE : BOUNDARY_UPPER_SLICE; + if (lc->boundary_flags & flag && + !rpps->pps_loop_filter_across_slices_enabled_flag) + return 0; + + flag = vertical ? BOUNDARY_LEFT_TILE : BOUNDARY_UPPER_TILE; + if (lc->boundary_flags & flag && + !rpps->pps_loop_filter_across_tiles_enabled_flag) + return 0; + } + return boundary; +} + static void vvc_deblock_bs_luma_vertical(const VVCLocalContext *lc, const int x0, const int y0, const int width, const int height) { @@ -554,15 +574,7 @@ static void vvc_deblock_bs_luma_vertical(const VVCLocalContext *lc, } // bs for vertical TU boundaries - boundary_left = x0 > 0 && !(x0 & 3); - if (boundary_left && - ((!fc->ps.pps->r->pps_loop_filter_across_slices_enabled_flag && - lc->boundary_flags & BOUNDARY_LEFT_SLICE && - (x0 % (1 << fc->ps.sps->ctb_log2_size_y)) == 0) || - (!fc->ps.pps->r->pps_loop_filter_across_tiles_enabled_flag && - lc->boundary_flags & BOUNDARY_LEFT_TILE && - (x0 % (1 << fc->ps.sps->ctb_log2_size_y)) == 0))) - boundary_left = 0; + boundary_left = deblock_is_boundary(lc, x0 > 0 && !(x0 & 3), x0, 1); if (boundary_left) { const RefPicList *rpl_left = @@ -610,15 +622,7 @@ static void vvc_deblock_bs_luma_horizontal(const VVCLocalContext *lc, has_horizontal_sb = cb_height > 8; } - boundary_upper = y0 > 0 && !(y0 & 3); - if (boundary_upper && - ((!fc->ps.pps->r->pps_loop_filter_across_slices_enabled_flag && - lc->boundary_flags & BOUNDARY_UPPER_SLICE && - (y0 % (1 << fc->ps.sps->ctb_log2_size_y)) == 0) || - (!fc->ps.pps->r->pps_loop_filter_across_tiles_enabled_flag && - lc->boundary_flags & BOUNDARY_UPPER_TILE && - (y0 % (1 << fc->ps.sps->ctb_log2_size_y)) == 0))) - boundary_upper = 0; + boundary_upper = deblock_is_boundary(lc, y0 > 0 && !(y0 & 3), y0, 0); if (boundary_upper) { const RefPicList *rpl_top = @@ -646,18 +650,9 @@ static void vvc_deblock_bs_chroma_vertical(const VVCLocalContext *lc, const int x0, const int y0, const int width, const int height) { const VVCFrameContext *fc = lc->fc; - int boundary_left; - // bs for vertical TU boundaries - boundary_left = x0 > 0 && !(x0 & ((CHROMA_GRID << fc->ps.sps->hshift[1]) - 1)); - if (boundary_left && - ((!fc->ps.pps->r->pps_loop_filter_across_slices_enabled_flag && - lc->boundary_flags & BOUNDARY_LEFT_SLICE && - (x0 % (1 << fc->ps.sps->ctb_log2_size_y)) == 0) || - (!fc->ps.pps->r->pps_loop_filter_across_tiles_enabled_flag && - lc->boundary_flags & BOUNDARY_LEFT_TILE && - (x0 % (1 << fc->ps.sps->ctb_log2_size_y)) == 0))) - boundary_left = 0; + const int boundary_left = deblock_is_boundary(lc, + x0 > 0 && !(x0 & ((CHROMA_GRID << fc->ps.sps->hshift[CHROMA]) - 1)), x0, 1); if (boundary_left) { for (int i = 0; i < height; i += 2) { @@ -674,17 +669,8 @@ static void vvc_deblock_bs_chroma_horizontal(const VVCLocalContext *lc, const int x0, const int y0, const int width, const int height) { const VVCFrameContext *fc = lc->fc; - int boundary_upper; - - boundary_upper = y0 > 0 && !(y0 & ((CHROMA_GRID << fc->ps.sps->vshift[1]) - 1)); - if (boundary_upper && - ((!fc->ps.pps->r->pps_loop_filter_across_slices_enabled_flag && - lc->boundary_flags & BOUNDARY_UPPER_SLICE && - (y0 % (1 << fc->ps.sps->ctb_log2_size_y)) == 0) || - (!fc->ps.pps->r->pps_loop_filter_across_tiles_enabled_flag && - lc->boundary_flags & BOUNDARY_UPPER_TILE && - (y0 % (1 << fc->ps.sps->ctb_log2_size_y)) == 0))) - boundary_upper = 0; + const int boundary_upper = deblock_is_boundary(lc, + y0 > 0 && !(y0 & ((CHROMA_GRID << fc->ps.sps->vshift[CHROMA]) - 1)), y0, 0); if (boundary_upper) { for (int i = 0; i < width; i += 2) {