From patchwork Thu Feb 22 07:14:04 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 46433 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:26a3:b0:19e:cdac:8cce with SMTP id h35csp173777pze; Wed, 21 Feb 2024 23:15:35 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCU0NyNs0Q+j6AQ/ueGOgOlaFcrD+QAPvoHqGHfj3fkmDV/iBT6OLGS6+MLoUwP/w5cxtqLr/ijF60pMv0ThmBy98zFBf8WAYSX/4w== X-Google-Smtp-Source: AGHT+IGFPsZmAqmsxo+65DXjbI2Z2krxcT5+v59YQIznb7MclDbAM9tEfw/BlQbK/u4143Mr3yjA X-Received: by 2002:a17:907:7848:b0:a3b:b215:6edb with SMTP id lb8-20020a170907784800b00a3bb2156edbmr12024975ejc.6.1708586135669; Wed, 21 Feb 2024 23:15:35 -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 oq26-20020a170906cc9a00b00a3e4f7071cbsi4367051ejb.891.2024.02.21.23.15.35; Wed, 21 Feb 2024 23:15:35 -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=MshZejdc; 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 2268B68D204; Thu, 22 Feb 2024 09:15:05 +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-sgaapc01olkn2011.outbound.protection.outlook.com [40.92.53.11]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 27038680BEC for ; Thu, 22 Feb 2024 09:15:02 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=URBUK+F9I3HN4VbJ2w5WSfyHCB4waTs5XWsOcCYGbtEEcN90YM15n9Cf4a2DQavlffUJdThZvH9CEASwPDEyRHCMpvQOedwoXUTKrbPN1/AYqEsG8P1fpYgWWePsna97yJrC2max/onm4HuQHPMKit4ejxbdFAuuu/jHkqSVKexe575WViJOx2i+y4CON3c0AlfK7l4ZbsMFH8hmaH042Ktt6jmdafTCzKNdlVWDX9Nd5Y4OgNF5gadtbWAxj5gmgjcENWrtUOGczhH0EDZXnFLcf1uPXaBL0tpGiYG8Q1J3EnF5vMhGvZkXa6rIcLwqItZbQwOnXj+ypnHzQCaZyQ== 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=qjWCmNtO78fiI4c4CdBRNINR3RG96Euzc2FkhJ2/mZI=; b=adFqO/Z36XWBqgF+wlIURUJCJmUyuX+XzrQ8gZ+uumof4ZjldETo/BUmbYy7iPTSx9Net3r8AS48Bu/0xOMsyTk7GmIjZ3m9hKk89Xn/RZ3N5Dln1WzjNzx1WWCkimzeYSrj4l6gDy0RqInUll9WLZE82Q0eWWqLbwnQKMc1XmNvdA0gT4aKGtXY4Vw97FxIqAuQgeVTR6jMzS5VWg+r1wjKJQs2b7rWOO7286nUjTDzn0pIttk+66wd8crxdYKWIt5L+/pPbGQ5qRptD82uczwavd9sJMyLmelFj6cun9nsUn8h/9wZIDdEHLTmtoCKynb/5qYymtRQweNuVcLyXA== 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=qjWCmNtO78fiI4c4CdBRNINR3RG96Euzc2FkhJ2/mZI=; b=MshZejdc2LtYd+PgqVLKz4qt4qbDioxoM1+9840qBQT0II9qL50oMT7gdRrJcybZ5ubVYyaKeFFKbfx5g1wVj2BMvkeVstaKCqW8kgkoFY0kqCJVDDxmqb6sRhVJMAa2/F9dxXd8Bk5lUQDNCICaM2BALFukGBy94dBnlwp+vyVToFWEweNhWmN/76P9zRi/yyRFUQW9cM0eh1dElzyoanrLe9nK57qhGrfSq1JNgpcLeb8lGGdOSPM69BZseNVVdl1hUSniXnDxVzCFH1OPCbzg/6sERsm/6mxA+Hu89bzJDaq6sUXicqyUZ8VtYQzdivQABFaXnlnpIZYAPZMfwA== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by TYUPR06MB6241.apcprd06.prod.outlook.com (2603:1096:400:358::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.38; Thu, 22 Feb 2024 07:14:52 +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.7292.036; Thu, 22 Feb 2024 07:14:52 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Thu, 22 Feb 2024 15:14:04 +0800 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240222071406.5714-1-nuomi2021@gmail.com> References: <20240222071406.5714-1-nuomi2021@gmail.com> X-TMN: [SbNJPr3u3vOWxmGmeWs9sGBA0X4v9OkD] X-ClientProxiedBy: TYCP286CA0049.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2b5::7) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240222071406.5714-10-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|TYUPR06MB6241:EE_ X-MS-Office365-Filtering-Correlation-Id: c322ce6e-1622-48d0-eb0a-08dc3375f6ef X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DQ3NeTcjf6pZokeQ3sBJrUleRnyZQhrT5pVa8dhUMgaLrgertlX0IAPejqze1vh7BUgOzgywxyoDftHgm8NEdXkMQlFLkSWjTM4q4MeUw1wEdF/yl21czzIBgIfnfCR4oMBL9Go4QQ1VviqpXOWoRzURAIuTa9uCPwL5eB91i2CJ9mIUmBPUVOkZIaphMbmwrsWG2AyLYdMVGBD9B22ckpXaJyzKC6XiXIozBjplVikOZywgvohQexUmE3BQpKEc/2S64JhMQF27gS9tTk1Y7iPiqNklV9mHKCyqxvLd4SxZvKKE9CSpDzpuZ6JcI7xIezKqfD3Y8FpvUHK8qDnpyaUnQQTGBKZCTwKlOsU25FRw36GU1+MBu6IXEUphwEU1Hsq/uICa4AVcV68qYA66JQ+8lfduaXnhPVQETz76uHjs56aER/sT9d6FPifM/Kv1xISNMH9KapNnLHf2+Fi6WIw6mdAA/Bn4Q95XX0BP9hpl6MI8A4ZpGvVj2CI8PvxoPLYSk/l/fhGbkiyClGC6u6sIBmEi8ABhXjGMVSH5i4YfT5McZ4c9peAEuKHyRKYZi2/XaMDSl1SUOL3dcasvr4K3fhkXwefXVcIh3x5v8F0iVhIbDS8R0MtSMs9G7OF1 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: raqi9+E2bOeEze82qN0bFXhSGToNpYID///RMgrmfetNbuCk6DZwLxvFhLMf2YG1UtFe3s2WiHa/aumD5B2XkSi5G3oYNF3Tp9sZgBILml09AYQ2KZWzsxmDTPThHgE+5tzEXIJt9kzYkpuUqrWbR8DokxvHUnD+tgGrfs0GGgyBt+w8UwXAjHrdP3kDsStJkWYpCMqknuSoynYHiOEMUrY/p81JrIvhQgkRDeCQJMHA1pLhzVZZxGcWXUX7lUADviltSxrhesx4/20eejwvus8w92o0BVNYugpMJROGT2q32wqfbdAMEUcc4hmjX4o4+38LT961XD9Ct/3NFkCUQs77YRn5eTdMb+Y3D7JwqOPX3Fa4Rbd4YzxLKNeNaHyybRcJGrlci0ChKr1yoZ8HxHUNJpJAjUhSam23NFFM+hE2yCCWoCPcqZmnuceOY+RFGS7XKaoAYmvNZXixMpORoDgGqw1qjM14GN0zDEXngd/eif6PV/zY/VAG/W3nTQY5ZmbivRInjxb+7eg0nwIDz7HGl0CjEBoourDIZSFrzRMbQ8iPMjwTFgABMbgTB4VtrGimMSwOdLISHU4wHhXREyI5Xa/wGJMaYBHbGmgnZuwtyvJx8eFwiyUi0DMVAk1za2Z04iO9L5wFNj3qHtP4Idw9CGk6WiDu0MilqK5+XIm1rsPIdMxeK0s+pl8X6eAfRQMBrXuTp4ZsKz6XSstInJHQUMY++Ha/vYT2QZ4yK+6JpvrCd24h8uHieWAQrlihKnas72Q4Jp0DL8ze5mN5xFIZWC/XiXAeAALAYP9uSc1Egvdb8QKROF7WyknFi+eOc1oOX8mm+yHqPAz3w8F1yzLI7fsJmAXJ2B6GqVhpEvJEzaCdOYGTu/S07h655bn2Eo/YeRmq/VslKkq+SyK8qovr2AS5XEWw8+O8ZLTYuJhFM+w8cHLNwrDvq9wA3My4gxkmOyKijW3Diq506SmJTvcklbjGSHQi3qe0xoymEUcjUa2PKPUxEuaMRm6/KKfb5R19KaB7SG/8GTTU52mwW8IMImaVBx5PumxL06l/0UMc+gzwqS7hXulh4rQygOc2CZHS2eJ8oJnwP+i8BvpgQurD0fqWEQWMfKLGOIqnes7DFAftZ3Vga+THRpIo1e0JLu/vTTksyF3mDAP9gWNPpurMTlP+AeJv8Bq7t2ns6E2X7AVcFk5x1YH0Ut9V/2OH9+BcjTmykUxJ90vADLzd2qX5hPFgw6sVrpGc26l74rJKwScFBhAE4lPD4Ll8QKH8P4nE8p3tMYGMACOxrquciA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c322ce6e-1622-48d0-eb0a-08dc3375f6ef X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2024 07:14:52.9378 (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: TYUPR06MB6241 Subject: [FFmpeg-devel] [PATCH 09/11] avcodec/vvcdec: refact, rename !is_mvp to check_mer 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: RMoyQPr12NEl For IBC, we'll utilize the check_available function. However, neither MVP nor merge mode need to check the motion estimation region. Let's rename it to avoid confusion. --- libavcodec/vvc/vvc_mvs.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/libavcodec/vvc/vvc_mvs.c b/libavcodec/vvc/vvc_mvs.c index 8fdbb00a41..56e4009741 100644 --- a/libavcodec/vvc/vvc_mvs.c +++ b/libavcodec/vvc/vvc_mvs.c @@ -589,7 +589,7 @@ static void init_neighbour_context(NeighbourContext *ctx, const VVCLocalContext ctx->lc = lc; } -static int check_available(Neighbour *n, const VVCLocalContext *lc, const int is_mvp) +static int check_available(Neighbour *n, const VVCLocalContext *lc, const int check_mer) { const VVCFrameContext *fc = lc->fc; const VVCSPS *sps = fc->ps.sps; @@ -601,7 +601,7 @@ static int check_available(Neighbour *n, const VVCLocalContext *lc, const int is n->checked = 1; n->available = !sps->r->sps_entropy_coding_sync_enabled_flag || ((n->x >> sps->ctb_log2_size_y) <= (cu->x0 >> sps->ctb_log2_size_y)); n->available &= TAB_MVF(n->x, n->y).pred_flag != PF_INTRA; - if (!is_mvp) + if (check_mer) n->available &= !is_same_mer(fc, n->x, n->y, cu->x0, cu->y0); } return n->available; @@ -620,10 +620,9 @@ static const MvField *mv_merge_candidate(const VVCLocalContext *lc, const int x_ static const MvField* mv_merge_from_nb(NeighbourContext *ctx, const NeighbourIdx nb) { const VVCLocalContext *lc = ctx->lc; - const int is_mvp = 0; Neighbour *n = &ctx->neighbours[nb]; - if (check_available(n, lc, is_mvp)) + if (check_available(n, lc, 1)) return mv_merge_candidate(lc, n->x, n->y); return 0; } @@ -943,10 +942,9 @@ static int affine_merge_candidate(const VVCLocalContext *lc, const int x_cand, c static int affine_merge_from_nbs(NeighbourContext *ctx, const NeighbourIdx *nbs, const int num_nbs, MotionInfo* cand) { const VVCLocalContext *lc = ctx->lc; - const int is_mvp = 0; for (int i = 0; i < num_nbs; i++) { Neighbour *n = &ctx->neighbours[nbs[i]]; - if (check_available(n, lc, is_mvp) && affine_merge_candidate(lc, n->x, n->y, cand)) + if (check_available(n, lc, 1) && affine_merge_candidate(lc, n->x, n->y, cand)) return 1; } return 0; @@ -961,7 +959,7 @@ static const MvField* derive_corner_mvf(NeighbourContext *ctx, const NeighbourId const int min_pu_width = fc->ps.pps->min_pu_width; for (int i = 0; i < num_neighbour; i++) { Neighbour *n = &ctx->neighbours[neighbour[i]]; - if (check_available(n, ctx->lc, 0)) { + if (check_available(n, ctx->lc, 1)) { return &TAB_MVF(n->x, n->y); } } @@ -1461,12 +1459,11 @@ static int mvp_from_nbs(NeighbourContext *ctx, Mv *cps, const int num_cps) { const VVCLocalContext *lc = ctx->lc; - const int is_mvp = 1; int available = 0; for (int i = 0; i < num_nbs; i++) { Neighbour *n = &ctx->neighbours[nbs[i]]; - if (check_available(n, lc, is_mvp)) { + if (check_available(n, lc, 0)) { if (num_cps > 1) available = affine_mvp_candidate(lc, n->x, n->y, lx, ref_idx, cps, num_cps); else @@ -1601,12 +1598,11 @@ static int affine_mvp_constructed_cp(NeighbourContext *ctx, const MvField *tab_mvf = fc->tab.mvf; const int min_pu_width = fc->ps.pps->min_pu_width; const RefPicList* rpl = lc->sc->rpl; - const int is_mvp = 1; int available = 0; for (int i = 0; i < num_neighbour; i++) { Neighbour *n = &ctx->neighbours[neighbour[i]]; - if (check_available(n, ctx->lc, is_mvp)) { + if (check_available(n, ctx->lc, 0)) { const PredFlag maskx = lx + 1; const MvField* mvf = &TAB_MVF(n->x, n->y); const int poc = rpl[lx].list[ref_idx];