From patchwork Thu Feb 22 07:13:56 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 46439 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:26a3:b0:19e:cdac:8cce with SMTP id h35csp184451pze; Wed, 21 Feb 2024 23:47:31 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCUwN5Xsq0NOSTHnNWSqR+8NoNfKIoD8txUgyvnFOwZJY6vMwcTUmfaOjTR85Qk5mYXiB2Zm0m+crjqbsksfXMk4ouJ3tYmja77gmQ== X-Google-Smtp-Source: AGHT+IHoov/8V3Vh3Ed1Bgf2fx9MJtTWmouM7T91ZK1xP/q9v42XDx6BNPcuECFmcXA/rbOGSdQ9 X-Received: by 2002:a50:9513:0:b0:563:8a71:eb77 with SMTP id u19-20020a509513000000b005638a71eb77mr12973075eda.4.1708588051280; Wed, 21 Feb 2024 23:47:31 -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 s19-20020a50d493000000b005642ea0a7besi4692788edi.164.2024.02.21.23.47.30; Wed, 21 Feb 2024 23:47:31 -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=A0hdGwb6; 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 91EAC68D1FD; Thu, 22 Feb 2024 09:47:28 +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-sgaapc01olkn2065.outbound.protection.outlook.com [40.92.53.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 15A0468D1CC for ; Thu, 22 Feb 2024 09:47:21 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZDNcaU0gfoAfv4Egl8an8m7ITruwtwgt3HKAFHsEBuPxhPSBFUVDjbDJPo1qsPpbEEFyPUvHxwIIWFbKtTV9jYDCHoRDLyP8ToOtBl2hfBYzL3w+FedwYoAVc9a6vKxsues4PKrWNCwfHyewO9VAmjwvQ0ZcNWmhI82AlFZVT2sKWZfTJgwb8Ru7UDewMi30zSHgW9II9ZqtZ4Qg6db5r/mn4m10lvYGEXvXFiwIsGcRhrEMWnHwVEILRD3Mo+nXhUhDkUY+YnK2rvYjI9E/ZZVzjKkkwcEY9FJuOip26OFug2kFG542fglOqY9tXB/LRFePxwrBasoP/UVCEkP7wQ== 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=qleb8xdIFcvBkT4cl9DmxFlroDN5G8DK1C75dXmUihc=; b=hphFCS4XyM4vweYU10cgyeG3+zazrQ6Yn/xYMvv4iTpQE2as/9YRQxGUnvRHFZjMdMlIxQ8iWOHomzRFMmhcq3vk5droDOohE33JGQXGRgyiMNXkVPUUCv/m3ClHadBu1hcWlj4Msa4T2TI5CdULXCTA0Y4ye1AXG8Au7O/0w/a2HwjDQGbrSMIfNXRvrNP+6lNga7tpe1fg7ODJ7Z7aRYi8eRRuxImH2t8LQGcQRJ/aRda2ZCBl6QG5PMeGDr0P8TrrxWrugbUnmUuM4woQMpAs6V5IEX26ojeh7EV1WH8OXjAVoUHo0mjPS2j0Rnaha2WtDMcq0iAQ+wcCWj/Zlw== 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=qleb8xdIFcvBkT4cl9DmxFlroDN5G8DK1C75dXmUihc=; b=A0hdGwb6bu0wPzPdFLMa0+t/9PHt/Znm0eQFTao3GJMZ/mSwEDXiRbzwegGG/v1fMxGWcp4q46HfNPJtHQibQN+6/i9bGr87uWUWU6HcAqU81NlYfvDbyn6L84ChHi/vgNK7wWRYAIH6jQ0QUqB9lY/To049HaBfI4puM1ypHjXjDlU74fcRQlK/ES3w/VyjF1XHLY/k/CT5pRRiEqVHYd/KP00wF4p4xFNnLRMMS9V3fG73LqfHULWBVtpuIcoO0W8BzqQJ0+3rEP9xekMdl5zwZZVieiiEdl8n+4qiR5YW1scEqlTWa0CBIW4wl1wPDG4D2UNMbDHeqBbngvZ/ew== 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:46 +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:46 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Thu, 22 Feb 2024 15:13:56 +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: [ewpEOt41sek8LNtDYuGa9OSEFBYUPH1M] 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-2-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: 22ab87b5-597f-4ec1-c6f4-08dc3375f2f6 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Ba0UIguNa87V4elASLAc3MoKPTXcNAb6rpCqSBPY2APrFu2awTQRs9sErkPdW9r76orFbe7qwC7D+nN6UfTjsXtRLE3CJoGV6sY/I5zR4dEUhTpbBVARkZi3XBFSmApuPbXYB7gYWoN+3qmyYlC0/ZfD9x/G0iFgrinIf++xGT6+N7AXCYhpAELzhHJgzK+S10wvJqeNjT3F8ocyaPXyEhLxAh2TtK6GO8fsWzxZ25MxiFKAFa35YWULia1dhefOTmzl4mSPRpqwmGNccf5klY8+2ozk0iftomvaCP75Gcp8Fon/ApzMVReheT9MLYOjDT7llDeOaSFqZq5npylI9DKlTCOMEgw+v0UcGPcAwD0fr+vd5MoS6+Z/W1WKojoxJIulON+AyBHuEBzxccjsSCQwt1KKCBLAaZeTIEONf3c8xb/YVxzXvxwc0G/XKX1tiexIpKvmCwSUthbPdLJhHUgYKifAsDODdEqQeJB0x6kdy9zuvAjKM4rhXlvwelW7WASCVLcYjG5HHnXhPu7hkBNTOUMbh65b0CHoSFXKymk0edvXwSVLfeXAIhumun+m7gsZTAAQ2WDDGgjl42hvssrkuPIt1Vn2IFg31UNh+eQ= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: rhJOuLfZgB3DCKQ+SUd5v+Pz7YC4mt/FB2vS8ooDotJzdHtSF7fDCKlZLmrzE9hGDZ6aE9U0MsS6/OpuI6lFWKt3un0iRJpIQXRjsdAxdeV03DV067+uC1h0yhCvDH3bRzZoGcDaGXtS8K3IexoL5FlirJxVWMyybIm06mDsJsbQWl1GxTF3QlbYM53cxpFz1yRZDz2wcP6rIAskDs7nvbAWOZ7nkTFdE8ccdKJwyOTQGdFIkNihxk5iXREuGTAtUz4z22r/tLTGc4bFpRbpRj2ZL8eNUxPoK4fPjr0xA5IXAmmHm+adatVwY9ThWFlGw43GwksuhOABQXmXUO74IZcdLFbY4FXu4zCpcKS4Cyyo7uq9N3ca4ui8vCPCQ+RUfyTqrHdocSETYUmITnIfNCgBPxLSLwnuHk2FjshCxbNtnLBxcbmhyZfpxtUEXUz+C4m1pUFmU/LI8hJJqf8bGgjTmLxKqJpRtIWcvFU0z6m6mwcY5bHxAjtMIo4VHpgeoe653N50Jf1ib0uWLw86s+aIGRbxW7QzFs6CVfmB7EClkBuJ8/gWzPc98qd5jZcC8mdKoxTZM/PKBT02SJpw+2Zhi6pF/3wBS9R9bUTVlBai/qbbv+n29DQmvvf8rAJKbTZrwXKQ2RMoMx35vFn+r/wbpMBTw00+5KLUH6P6qzD8FvQqPHkgQsiMX4pN1ApBeNJWevMGzwFvWcpVZUsyZCUM/fwfI0LzOWtxoXPGq6BKOWBfgqK6ZRcbYoNQhSx8uQOMug3CMbzImkX7z0FRl6OeWWDJipw7e3t33UUvihhyRbZyW0IjLwhz4tSv0fNhm6hmjDIygeckvb6lvBqjjH03wrqB8Xpu1DdGz0m8ufU+wiPA0vTnoMOHJDB1HIXNw/XplvxksR2Si09mtKkrHKcIO0nctmqRRQkxH2RPU/mtqJWNALchdFSTjYqX/vJi00tnWuaHAAeYnhog+I25UVnVlKaSemG6jmyZaTvnjF/jXt9pMD6iTdx9zz8D0uUXC/Rai3QWfeJT8RnqKjr+WRiNDzwdBAquyXvVZHVKClMKDQ/oPRxCJa+1gV81y9LhjkM4AKFcVQnTUf7hHArmHMS+XDYC7uTxoMk8ntlQ1LaADFY/rq5oYHSvuqUDjk0Z9LTySFXDihFW6NfxTsNWEZfy6Ht0ACx254HV9orIA05rqcI4i5w9Cn4r+84m+SXPYoGhU/TDom1r0ujndbquUIYnUaiDFKqwicuwoOlcI5TGH9mJX4QBeSWFVndN5T+ZlNDkmcVr4dLwwdmWCLAenQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 22ab87b5-597f-4ec1-c6f4-08dc3375f2f6 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:46.3038 (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 01/11] avcodec/vvcdec: refact out deblock_bs to reduce duplicate code 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: F19H9VKsJSBK --- libavcodec/vvc/vvc_filter.c | 176 +++++++++++------------------------- 1 file changed, 55 insertions(+), 121 deletions(-) diff --git a/libavcodec/vvc/vvc_filter.c b/libavcodec/vvc/vvc_filter.c index 5fa711c9e0..ca541fd997 100644 --- a/libavcodec/vvc/vvc_filter.c +++ b/libavcodec/vvc/vvc_filter.c @@ -474,8 +474,9 @@ static void vvc_deblock_subblock_bs_horizontal(const VVCLocalContext *lc, } } -static void vvc_deblock_bs_luma_vertical(const VVCLocalContext *lc, - const int x0, const int y0, const int width, const int height) +static av_always_inline int deblock_bs(const VVCLocalContext *lc, + const int x_p, const int y_p, const int x_q, const int y_q, + const RefPicList *rpl_p, const int c_idx, const int off_to_cb, const uint8_t has_sub_block) { const VVCFrameContext *fc = lc->fc; const MvField *tab_mvf = fc->tab.mvf; @@ -483,6 +484,44 @@ static void vvc_deblock_bs_luma_vertical(const VVCLocalContext *lc, const int log2_min_tu_size = MIN_TU_LOG2; const int min_pu_width = fc->ps.pps->min_pu_width; const int min_tu_width = fc->ps.pps->min_tu_width; + const int pu_p = (y_p >> log2_min_pu_size) * min_pu_width + (x_p >> log2_min_pu_size); + const int pu_q = (y_q >> log2_min_pu_size) * min_pu_width + (x_q >> log2_min_pu_size); + const MvField *mvf_p = &tab_mvf[pu_p]; + const MvField *mvf_q = &tab_mvf[pu_q]; + const uint8_t chroma = !!c_idx; + const int tu_p = (y_p >> log2_min_tu_size) * min_tu_width + (x_p >> log2_min_tu_size); + const int tu_q = (y_q >> log2_min_tu_size) * min_tu_width + (x_q >> log2_min_tu_size); + const uint8_t pcmf = fc->tab.pcmf[chroma][tu_p] && fc->tab.pcmf[chroma][tu_q]; + + if (pcmf) + return 0; + + if (mvf_p->pred_flag == PF_INTRA || mvf_q->pred_flag == PF_INTRA || mvf_p->ciip_flag || mvf_q->ciip_flag) + return 2; + + if (chroma) { + return fc->tab.tu_coded_flag[c_idx][tu_p] || + fc->tab.tu_coded_flag[c_idx][tu_q] || + fc->tab.tu_joint_cbcr_residual_flag[tu_p] || + fc->tab.tu_joint_cbcr_residual_flag[tu_q]; + } + + if (fc->tab.tu_coded_flag[LUMA][tu_p] || fc->tab.tu_coded_flag[LUMA][tu_q]) + return 1; + + if ((off_to_cb && ((off_to_cb % 8) || !has_sub_block))) + return 0; // inside a cu, not aligned to 8 or with no subblocks + + return boundary_strength(lc, mvf_q, mvf_p, rpl_p); +} + +static void vvc_deblock_bs_luma_vertical(const VVCLocalContext *lc, + const int x0, const int y0, const int width, const int height) +{ + const VVCFrameContext *fc = lc->fc; + const MvField *tab_mvf = fc->tab.mvf; + const int log2_min_pu_size = MIN_PU_LOG2; + const int min_pu_width = fc->ps.pps->min_pu_width; const int min_cb_log2 = fc->ps.sps->min_cb_log2_size_y; const int min_cb_width = fc->ps.pps->min_cb_width; const int is_intra = tab_mvf[(y0 >> log2_min_pu_size) * min_pu_width + @@ -494,6 +533,7 @@ static void vvc_deblock_bs_luma_vertical(const VVCLocalContext *lc, const int cb_x = fc->tab.cb_pos_x[LUMA][off_q]; const int cb_y = fc->tab.cb_pos_y[LUMA][off_q]; const int cb_width = fc->tab.cb_width[LUMA][off_q]; + const int off_x = cb_x - x0; if (!is_intra) { if (fc->tab.msf[off_q] || fc->tab.iaf[off_q]) @@ -514,34 +554,9 @@ static void vvc_deblock_bs_luma_vertical(const VVCLocalContext *lc, if (boundary_left) { const RefPicList *rpl_left = (lc->boundary_flags & BOUNDARY_LEFT_SLICE) ? ff_vvc_get_ref_list(fc, fc->ref, x0 - 1, y0) : lc->sc->rpl; - const int xp_pu = (x0 - 1) >> log2_min_pu_size; - const int xq_pu = x0 >> log2_min_pu_size; - const int xp_tu = (x0 - 1) >> log2_min_tu_size; - const int xq_tu = x0 >> log2_min_tu_size; - for (int i = 0; i < height; i += 4) { - const int off_x = cb_x - x0; - const int y_pu = (y0 + i) >> log2_min_pu_size; - const int y_tu = (y0 + i) >> log2_min_tu_size; - const MvField *left = &tab_mvf[y_pu * min_pu_width + xp_pu]; - const MvField *curr = &tab_mvf[y_pu * min_pu_width + xq_pu]; - const uint8_t left_cbf_luma = fc->tab.tu_coded_flag[LUMA][y_tu * min_tu_width + xp_tu]; - const uint8_t curr_cbf_luma = fc->tab.tu_coded_flag[LUMA][y_tu * min_tu_width + xq_tu]; - const uint8_t pcmf = fc->tab.pcmf[LUMA][y_tu * min_tu_width + xp_tu] && - fc->tab.pcmf[LUMA][y_tu * min_tu_width + xq_tu]; uint8_t max_len_p, max_len_q; - int bs; - - if (pcmf) - bs = 0; - else if (curr->pred_flag == PF_INTRA || left->pred_flag == PF_INTRA || curr->ciip_flag || left->ciip_flag) - bs = 2; - else if (curr_cbf_luma || left_cbf_luma) - bs = 1; - else if (off_x && ((off_x % 8) || !has_vertical_sb)) - bs = 0; ////inside a cu, not aligned to 8 or with no subblocks - else - bs = boundary_strength(lc, curr, left, rpl_left); + const int bs = deblock_bs(lc, x0 - 1, y0 + i, x0, y0 + i, rpl_left, 0, off_x, has_vertical_sb); TAB_BS(fc->tab.vertical_bs[LUMA], x0, (y0 + i)) = bs; @@ -561,11 +576,9 @@ static void vvc_deblock_bs_luma_horizontal(const VVCLocalContext *lc, const int x0, const int y0, const int width, const int height) { const VVCFrameContext *fc = lc->fc; - const MvField *tab_mvf = fc->tab.mvf; + const MvField *tab_mvf = fc->tab.mvf; const int log2_min_pu_size = MIN_PU_LOG2; - const int log2_min_tu_size = MIN_TU_LOG2; const int min_pu_width = fc->ps.pps->min_pu_width; - const int min_tu_width = fc->ps.pps->min_tu_width; const int min_cb_log2 = fc->ps.sps->min_cb_log2_size_y; const int min_cb_width = fc->ps.pps->min_cb_width; const int is_intra = tab_mvf[(y0 >> log2_min_pu_size) * min_pu_width + @@ -577,6 +590,7 @@ static void vvc_deblock_bs_luma_horizontal(const VVCLocalContext *lc, const int cb_x = fc->tab.cb_pos_x[LUMA][off_q]; const int cb_y = fc->tab.cb_pos_y[LUMA][off_q]; const int cb_height = fc->tab.cb_height[LUMA][off_q]; + const int off_y = y0 - cb_y; if (!is_intra) { if (fc->tab.msf[off_q] || fc->tab.iaf[off_q]) @@ -596,34 +610,10 @@ static void vvc_deblock_bs_luma_horizontal(const VVCLocalContext *lc, if (boundary_upper) { const RefPicList *rpl_top = (lc->boundary_flags & BOUNDARY_UPPER_SLICE) ? ff_vvc_get_ref_list(fc, fc->ref, x0, y0 - 1) : lc->sc->rpl; - int yp_pu = (y0 - 1) >> log2_min_pu_size; - int yq_pu = y0 >> log2_min_pu_size; - int yp_tu = (y0 - 1) >> log2_min_tu_size; - int yq_tu = y0 >> log2_min_tu_size; for (int i = 0; i < width; i += 4) { - const int off_y = y0 - cb_y; - const int x_pu = (x0 + i) >> log2_min_pu_size; - const int x_tu = (x0 + i) >> log2_min_tu_size; - const MvField *top = &tab_mvf[yp_pu * min_pu_width + x_pu]; - const MvField *curr = &tab_mvf[yq_pu * min_pu_width + x_pu]; - const uint8_t top_cbf_luma = fc->tab.tu_coded_flag[LUMA][yp_tu * min_tu_width + x_tu]; - const uint8_t curr_cbf_luma = fc->tab.tu_coded_flag[LUMA][yq_tu * min_tu_width + x_tu]; - const uint8_t pcmf = fc->tab.pcmf[LUMA][yp_tu * min_tu_width + x_tu] && - fc->tab.pcmf[LUMA][yq_tu * min_tu_width + x_tu]; uint8_t max_len_p, max_len_q; - int bs; - - if (pcmf) - bs = 0; - else if (curr->pred_flag == PF_INTRA || top->pred_flag == PF_INTRA || curr->ciip_flag || top->ciip_flag) - bs = 2; - else if (curr_cbf_luma || top_cbf_luma) - bs = 1; - else if (off_y && ((off_y % 8) || !has_horizontal_sb)) - bs = 0; //inside a cu, not aligned to 8 or with no subblocks - else - bs = boundary_strength(lc, curr, top, rpl_top); + const int bs = deblock_bs(lc, x0 + i, y0 - 1, x0 + i, y0, rpl_top, 0, off_y, has_horizontal_sb); TAB_BS(fc->tab.horizontal_bs[LUMA], x0 + i, y0) = bs; @@ -642,12 +632,7 @@ static void vvc_deblock_bs_luma_horizontal(const VVCLocalContext *lc, 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; - const MvField *tab_mvf = fc->tab.mvf; - const int log2_min_pu_size = MIN_PU_LOG2; - const int log2_min_tu_size = MIN_PU_LOG2; - const int min_pu_width = fc->ps.pps->min_pu_width; - const int min_tu_width = fc->ps.pps->min_tu_width; + const VVCFrameContext *fc = lc->fc; int boundary_left; // bs for vertical TU boundaries @@ -662,34 +647,11 @@ static void vvc_deblock_bs_chroma_vertical(const VVCLocalContext *lc, boundary_left = 0; if (boundary_left) { - const int xp_pu = (x0 - 1) >> log2_min_pu_size; - const int xq_pu = x0 >> log2_min_pu_size; - const int xp_tu = (x0 - 1) >> log2_min_tu_size; - const int xq_tu = x0 >> log2_min_tu_size; - for (int i = 0; i < height; i += 2) { - const int y_pu = (y0 + i) >> log2_min_pu_size; - const int y_tu = (y0 + i) >> log2_min_tu_size; - const MvField *left = &tab_mvf[y_pu * min_pu_width + xp_pu]; - const MvField *curr = &tab_mvf[y_pu * min_pu_width + xq_pu]; - const int left_tu = y_tu * min_tu_width + xp_tu; - const int curr_tu = y_tu * min_tu_width + xq_tu; - const uint8_t pcmf = fc->tab.pcmf[CHROMA][left_tu] && fc->tab.pcmf[CHROMA][curr_tu]; - - for (int c = CB; c <= CR; c++) { - uint8_t cbf = fc->tab.tu_coded_flag[c][left_tu] | - fc->tab.tu_coded_flag[c][curr_tu] | - fc->tab.tu_joint_cbcr_residual_flag[left_tu] | - fc->tab.tu_joint_cbcr_residual_flag[curr_tu]; - int bs = 0; - - if (pcmf) - bs = 0; - else if (curr->pred_flag == PF_INTRA || left->pred_flag == PF_INTRA || curr->ciip_flag || left->ciip_flag) - bs = 2; - else if (cbf) - bs = 1; - TAB_BS(fc->tab.vertical_bs[c], x0, (y0 + i)) = bs; + for (int c_idx = CB; c_idx <= CR; c_idx++) { + const int bs = deblock_bs(lc, x0 - 1, y0 + i, x0, y0 + i, NULL, c_idx, 0, 0); + + TAB_BS(fc->tab.vertical_bs[c_idx], x0, (y0 + i)) = bs; } } } @@ -699,11 +661,6 @@ 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; - MvField *tab_mvf = fc->tab.mvf; - const int log2_min_pu_size = MIN_PU_LOG2; - const int log2_min_tu_size = MIN_PU_LOG2; - const int min_pu_width = fc->ps.pps->min_pu_width; - const int min_tu_width = fc->ps.pps->min_tu_width; int boundary_upper; boundary_upper = y0 > 0 && !(y0 & ((CHROMA_GRID << fc->ps.sps->vshift[1]) - 1)); @@ -717,34 +674,11 @@ static void vvc_deblock_bs_chroma_horizontal(const VVCLocalContext *lc, boundary_upper = 0; if (boundary_upper) { - int yp_pu = (y0 - 1) >> log2_min_pu_size; - int yq_pu = y0 >> log2_min_pu_size; - int yp_tu = (y0 - 1) >> log2_min_tu_size; - int yq_tu = y0 >> log2_min_tu_size; - for (int i = 0; i < width; i += 2) { - const int x_pu = (x0 + i) >> log2_min_pu_size; - const int x_tu = (x0 + i) >> log2_min_tu_size; - const MvField *top = &tab_mvf[yp_pu * min_pu_width + x_pu]; - const MvField *curr = &tab_mvf[yq_pu * min_pu_width + x_pu]; - const int top_tu = yp_tu * min_tu_width + x_tu; - const int curr_tu = yq_tu * min_tu_width + x_tu; - const uint8_t pcmf = fc->tab.pcmf[CHROMA][top_tu] && fc->tab.pcmf[CHROMA][curr_tu]; - - for (int c = CB; c <= CR; c++) { - uint8_t cbf = fc->tab.tu_coded_flag[c][top_tu] | - fc->tab.tu_coded_flag[c][curr_tu] | - fc->tab.tu_joint_cbcr_residual_flag[top_tu] | - fc->tab.tu_joint_cbcr_residual_flag[curr_tu]; - int bs = 0; - - if (pcmf) - bs = 0; - else if (curr->pred_flag == PF_INTRA || top->pred_flag == PF_INTRA || curr->ciip_flag || top->ciip_flag) - bs = 2; - else if (cbf) - bs = 1; - TAB_BS(fc->tab.horizontal_bs[c], x0 + i, y0) = bs; + for (int c_idx = CB; c_idx <= CR; c_idx++) { + const int bs = deblock_bs(lc, x0 + i, y0 - 1, x0 + i, y0, NULL, c_idx, 0, 0); + + TAB_BS(fc->tab.horizontal_bs[c_idx], x0 + i, y0) = bs; } } } From patchwork Thu Feb 22 07:13:57 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 46431 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:26a3:b0:19e:cdac:8cce with SMTP id h35csp173649pze; Wed, 21 Feb 2024 23:15:17 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCXt03I/JD/dfIXxP2ne+e2x7uHJex6LpTzgpo911LgC3nS92DX8BREfxLDyWldukd4uC/BwbQ5g1wKDZACK9Kv4/wkwA7nLUPn5EQ== X-Google-Smtp-Source: AGHT+IG9+el1PGma9NJd/RjOUUjsAPNMDSc1MPdp4eVO3Zr2fJGO9MSUYtPShZLU7UHuhVBjYIux X-Received: by 2002:a05:6402:214a:b0:563:bd95:4e8b with SMTP id bq10-20020a056402214a00b00563bd954e8bmr10720166edb.11.1708586116927; Wed, 21 Feb 2024 23:15:16 -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 v14-20020a056402184e00b0056289a3709fsi4942419edy.380.2024.02.21.23.15.16; Wed, 21 Feb 2024 23:15:16 -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=YXFKJDme; 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 F313E68D1DB; Thu, 22 Feb 2024 09:15:02 +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 CB51F68D170 for ; Thu, 22 Feb 2024 09:14:56 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bs7jaEzba4L66rQq/ac2nRzXiUY1UZozomsoVxUvvrZB8COq8n4F7bPhRdtFxHMqqKJ+GaJGk3O01dULW7usQ7vLQqAgOXsPr7q8yPGpbuohWkmkfaaci7nRv4gwmJyrWKC5lrhDv24WAzVEOwYoe+2DelVrVNAeKQ3fCPFHaZSi+97yTpKHorSNJWmjFrtqtgIKSfBb6rgOU7whpmBflKJmc0D+604qgJ36mAMrpLlJic9mXo6PJ4YJfbg+tl00loHkB7L9/ld8qV1ugKl9x7ezAF6fh/v5M0rD9wtHiKl3mkY7QRscZkK5HUCzJteLUF22WOrWE8KEXkh7frZm3A== 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=27fGOxi9vMOu3/x2KQEAtzdC0EQAgV9Xqri5jdTa4SI=; b=L8sx2CYMI7tHSwYaNWG+0NwqHaI2vXzbtnqf4j5bUfdfqDpX3Wo0QbkniX7usQLSgiKng81hB9XxFw3VOCn66efSFAMjI1Y/mrO5hfhB6XIabvfLYz8l3cY8ye60Lm17jHPnYHwAtaqIlkuWpkmEfEpAjvt3zR+HM6QFfAPTTmVbU4G/+ppVmao13xdJiFGr1FBwQC/F4TcpjLLFJVSp0KOiwKyT7tn9JEidnUGdR3evgyUBq33dJSfdqk6CjN4AVszoF2hPTJk+S2mxUG7YpK88o/5DZJfbNkfbnTROuh+jRW0ZfCCQpgNw8+6ZT2CjXHaCUjOkRW+Xy41q/4V2AQ== 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=27fGOxi9vMOu3/x2KQEAtzdC0EQAgV9Xqri5jdTa4SI=; b=YXFKJDmeFCERX/KLCdfU9n9rz9fmPhWtfS20MWVudaSrVQ0NatLiKUGbnT3g8uSpKYzrqqKhjuaNDsSurJdXpFNwJkNdQWff6K9/bZ7dsEhU5ExLazyujmbCoseQ9rtjfUConPjo593aNBBMyKtXadBwW69jTigV0NJpIyjTNsrNH+mVVgyU/Af18cqXqqBdmWry6OPJ1vJKOceM2FktE4KzkXa5fipfliKKo+joJt0fLuEjopvu16TIuDKUU5cFRrozJBI8fRbDNeImqXQRpnYTfoODiCEVEPM2dYUxqwLigkQLkpxyqznMlDAD7sQ7INI25YKyJkQdC4aEyfmiDA== 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:47 +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:47 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Thu, 22 Feb 2024 15:13:57 +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: [VK985aasUKAY7OW0ABHRm/sfNmQv7Gpu] 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-3-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: f9dba4ff-9b2a-4a0a-0a55-08dc3375f375 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: W1SGJi7itmdFvSbN+2bvkYu4dDKegpkVP6HD/MmNJR/Qe3+S1NlJLw83HtKn7kP6IjgC/9pgfjv/uySsnXNM+r8HoWUU51ehJclcbYXP12Mp6ljaUagWcuc4ONR1b/3J4N442bEkVDOaZkbFNkA6OzITSH7bK+4d02WsxG+r1Sh2rkzcBAIG8OEkZHwh27R0cacpnGiWZgIoMzbl8ZMtA7Wg6+W1isu/n9gB4GWcIKuy6QCx/wv63D5ntcI8UXUsmibaDLesOdufkijcXa2uoSoJHxPsXdyhdwzrGmNk45XnOR5S1Svd2+J9V6kXsxvD5/xCRsGcOfO/vA4AdJdrfEtiGpmIguNWzCT4a1+L0LwZuvhUx+6eKq5aGch0YRK3UZf+Rnl/EGCZpnGk1t3s67xY+j5eFkl/hwPC0vH4m2bDbmVzUFSCYElMZsvCOz7Nud7YYrtufyG9oaiTgF/3mxLfNV+Ve/xPi4+3LrvQKuhFT8fg2qjCBshEEyUTXX6tkzdXn4mrf/x50KCupfp9BFvLcxzUgbRJO98f0TP5WFfbT6sxJojSxsqQIlXRirHxG+74qifuUk7mBWc9f9YQp3yNYULGnf0Dcy+4Mcoykps62CnyeEFdbH3pAjN+D9p9 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 8bBlC8snUcSJ0ae3rYoBFGPvhU73ur47EqggU3FBZ9sE9pYS94GulQmK1zQ1ahpbl0GQCBDLZr4dmaVxiAMrkgIzF04SeFcAJjd+x0DLfx/rxQQZfuJv65LA80EDwqq5+TLRDYT01L4O+Aojxo9HdXWIxlhH1gvn6n6yOp2Dugc5/f0z8UiYMD5oiuSuFmG9Z1ERqsirNOWckVjqb9z+QkvXiKnOA4OKe6l+giiBJpKW5MhfLs15uxC+DKyRRd3Sn79pDfiPuAnRBnXJdXVcbQpPFV/5DdIr5spYQ5GTcsoDnXpOOo/spu6P7h/+PEAwROMF3wAAn7l6pMa6Re/ixGPBPYjKM2FBSB699DePxKBGBNVwh3NB5VXz3MoHl08JGbT2yrnxa90uK6aCiUqsowhv67feoXx/1cqZe5wjwPU1rQRbUooSUStcMnTsRtFbUwJFTHuV7v5aJ8/7/Ry91gTYUVdjKI+WejZvWZ0AOjaTMtEHM27iZy+n36xw4uPSMA4cJxCUrdWggfbKOfpNhTqA7graQcGvrYPAv8DyRppVNEywI5JTzmRu6+3eSs4OT/bl0jPd1PqSBM87wZsSUah3hXj467ZseiRNow2vbqrwxwL8jQpfbNdFevaaNAv3RK3fcqlbaTTSCKwe0tCZoTXeo6QTo65W4pec9PMIdvYCQBWJbWM6gkTE6GwSgD3xi3bsGkbhXSO/KI3EtiOyT8NzkMZDnB2vCrcrQ+qjrX/8oFUwa8gXu824+Q+6rafio8FRKlaGD0JlQCXkZIO03yjjhj7CFVWU12bBy4Xpb4kyjvlDuV1mmnNoDN6Q0d3LzB7xfs5oeWsvhzubrxpYg+dE7XvSbARgrCIVHbr3ibLhhLV0RrOjw1gk5s6zcn1E6WHiBQHKngqSDaehQ4wgtsayXDlaBmyfrO2PVtUdj+hJpKk5Lw2HMe42hacR0HVpjhSD9aMreCRSmnSi1maLO+CaMq1ad1sz4XIZE0YyLU2zRY5XBEGe6IAQ6HtpmoKtgjpNuWHsEcLnrBvrl6uSFD1MkyKgnmxzhZIo1/htXMDYfE5qa0a3MNj+NpSlMuMxcTEHUVhvbJ9+DdRTE0lPDmBvmwx2fIBcwi8kJoJvcKX7PtWuCyB5DZ1iQGJrUwHlTyr+Y0U2O9XtD4vDs69z59SGSSdfWkZ1EUAhsUyg18s/HgK7TLq3FE7Ws40VJHw3sRIC5jL8HsoIOh+9Y/Bm2eO+Xp9xc/vArOCdXDZzDDbtMmYUEccbzvQVempIfyBKaT4NS87Mlepb4J2hN+6W3Q== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f9dba4ff-9b2a-4a0a-0a55-08dc3375f375 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:47.1610 (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 02/11] avcodec/vvcdec: set CuPredMode table for chroma 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: 31OiJ+QPcqyw follow the spec --- libavcodec/vvc/vvc_ctu.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libavcodec/vvc/vvc_ctu.c b/libavcodec/vvc/vvc_ctu.c index 36f98f5f2b..2e48f7bed8 100644 --- a/libavcodec/vvc/vvc_ctu.c +++ b/libavcodec/vvc/vvc_ctu.c @@ -1227,9 +1227,12 @@ static void set_cu_tabs(const VVCLocalContext *lc, const CodingUnit *cu) const VVCFrameContext *fc = lc->fc; const TransformUnit *tu = cu->tus.head; - set_cb_tab(lc, fc->tab.cpm[cu->ch_type], cu->pred_mode); - if (cu->tree_type != DUAL_TREE_CHROMA) + if (cu->tree_type != DUAL_TREE_CHROMA) { + set_cb_tab(lc, fc->tab.cpm[LUMA], cu->pred_mode); set_cb_tab(lc, fc->tab.skip, cu->skip_flag); + } + if (fc->ps.sps->r->sps_chroma_format_idc && cu->tree_type != DUAL_TREE_LUMA) + set_cb_tab(lc, fc->tab.cpm[CHROMA], cu->pred_mode); while (tu) { for (int j = 0; j < tu->nb_tbs; j++) { From patchwork Thu Feb 22 07:13: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: 46440 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:26a3:b0:19e:cdac:8cce with SMTP id h35csp184702pze; Wed, 21 Feb 2024 23:48:19 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCWexNINa4r8P5lpebD0nPkAWDPWqCLTx+H0bv8mLMIobBeIQME4bE5Sq9hs8lGtkCSflTpKX9VIiWOImraxJwOfnxr3mvuh5JeIGg== X-Google-Smtp-Source: AGHT+IEHLw3A09OKEH48ZCr6elJNWY0WILnV5dVPqgT1PfRvA69YagNkhdrK69JAKcwcYhs9Kh6a X-Received: by 2002:a05:6402:2812:b0:563:c54e:ee with SMTP id h18-20020a056402281200b00563c54e00eemr19611626ede.2.1708588099121; Wed, 21 Feb 2024 23:48:19 -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 o15-20020a056402038f00b005647d398b85si3352892edv.85.2024.02.21.23.48.18; Wed, 21 Feb 2024 23:48:19 -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=RPtOdtZI; 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 B93AB68D1CC; Thu, 22 Feb 2024 09:48:16 +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-sgaapc01olkn2086.outbound.protection.outlook.com [40.92.53.86]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 66D6868D1CC for ; Thu, 22 Feb 2024 09:48:14 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=W1sWn/R7lQfbL09Q6+gvuLhvowKEu+mPfsChV3gaHyRhOpGEh96lsyW7HXHEbjR7wpLkBLNQY1ASd47huncud5tXSxNghtbQNtx/K/VKiSULwN4HJh7hh6TYHmV4SEIlB4+ZaHtkZJEWScaaFi54zpdxoDeGds5fdxYN8nCbSQNw5tjAIulQk7AFpYrg8h5vYmRQ1RxiySqNL48pjmlF+uMmYG/+FsLUUcIbzFZ7bEzhHrj3T/rj7b7oZdAWyOy0mS3J1MAp+5WefIt9x64KY6EWUHWuj/sI/MAOjFycAMVLfYby6tcQtUp+dWMIxmN5p6cXkRbpOVEvJdgGSG9zfg== 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=TMQPyQQ/bgPVJPI2iCRJdG8G2GKpUhomdinBdvW+LHM=; b=edskazrDI7u+ZJRKhxGI5vxoUygjOwOElPExlWN/zTmfL4qM7tVO08AX+nePthIIKEqesmUfaGfPatC6CngsHdavQAxYI3NSDEFsaTOUbCezMt6sdJSgJrSoJyjiYz5lThUraBb4tqRAPofk3xeE+LE0CiP2eNol6u2tn6sJY8mMN6e2V2ODLbf+VRRx8VLKTKBcCGWgyRYQQdbYwTCgJCV9gY/z/tPBToMVaoOSE9rmwAZHhasq22/uSaRmmVWS+bMUanVLnitbH7I4DandpMqydmX++dAwIRKNXVgmseN0F+cPVrLIt67Q4Qc4+raxO66IkJgmhpxLZiyz2lIO7w== 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=TMQPyQQ/bgPVJPI2iCRJdG8G2GKpUhomdinBdvW+LHM=; b=RPtOdtZIsyFdoOKivTwnLissL9mKWdLrMl9i03G/7YhFIRmU+GiEFVDzNlClPSTtXmLyvukvpZJweZQmddla8FGz+9Qyexd9PRhptfQXSKOQqWfkKOXRIZApnMftQgxcoKDK63bg7ZL5LcedXvVf8uZzR8i21TrMhbVnztfkKNo4LB2tOWMYI6eqAukUOpoADdNQeCDta6W7OUBVgyGLrkzNgwUkXuXouEhT+JtSrJd7h+fVU1VBsK3iYRWwHpzbC8uf3Z39iLIlQCISTFJU2DBTjwpj+iL1AE+s7fD7Xv381zFrUdRWJC5oYKT2yq3XfwneNtmKJJL+NC7mXBxjNg== 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:48 +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:48 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Thu, 22 Feb 2024 15:13:58 +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: [V8uY+Bi9Z1IfzvsDogug7YJo3qvIq7E9] 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-4-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: d572d21e-f569-417b-6a28-08dc3375f3fc X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vcwBoieggBGp7Iwakc+b95SmmFh+e7ZPjSQD3aMwJXHYVERT3HalXIo/9VO2FeezZKzh5lhisYZmzcC9KwMyiSi9y819Ejz5Qy+1lyFdH1KGYsBJ8297jI5iLoSv5KwJ7kywEUQU0NNy+ep1DCniw1jLaHVH35gWNYMQZLukAV3aSPvdKRZolUUQq8zWk0QousX9xpTPWbObNhyCk5MKbjnIu1ZJT+Szs0Rwg7t+nZO5HNWZJepsw2ob2lqCJKT3L7ODiwFDdsDrimhcXAY2VJrzjSGiX2dGA5JuompsyrkWYEIWfOOFBsvyRpdjrQPb9Zyw+iaa8E+RLeIZ7oK0EEZX33xOGzxjvL7lyON7iT6MmZpLYDI4MxdD8lIvbVaFpsZlo/a4IDYn7TqSJH4eGl7BZ8AewsmMZKEnNTQrnj4/wJpe/e7NyvXP+o/3z30wOyjCTeRCt41XD/tWbmI6w+sd6RXAeIe7qnQMZkrwhSQZG3+dejV3urNxLYG9d2wUkIgbZSzqyCNRMA2QC07KRQTG/DKhGGUSByUMQkaULTuwLJOPHrPMzAW131bByidJwj2yQ7krz6eHgPvi3dMr7pObyyPEkb8GRkXwmdE1DZY= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: E0TUg7rOXIEAEDadhps62KUr4S19fo/mCJ9IwosXXJzC1w3XZSkOlM91xG4QvwJYye/tRT7BITTk78zGeZRA1StzWcFQVPBpM7RyLv7ui+mO4JlMIm1raccyOq+s05bGIOkdGRTvIUGTgm/YlqZlp6MZYN1vu2SkkytbSuRdDocp7UZgkzFf6LP83dNBvcbzr286ptV5eV4y9CPW3QGWz6Bb7+6w2f6SX6WASHt8KjbMS6qqI4bryPNPqE2Ol6UnOeYTFtSoUfWxhg4Hc6Zut5ESjxoFwa08Fbv2MqY+Q75soaJ0xy2fLFjOrfyHASMGrex6MeEqn5vh+5YuTOE/LG918wepOzUNj0YuNI17hTRsIT74N/brLh2LTVwBLJwRC0nGu5q4hcR/jDAOfz1ZTAZLp7Gd6VHiS/QC/2WiNc53J/pchRe7Q7gJ7cQ8auzjf/6jPC7hOW1VsnEC7nu/FOQrd8GYkjoPy8Io7uF+mRElnp6hrHCZfuRGfFQImNzuq9Dy/7mwsdIweETjdp/frBuTJuXUrd/qYoRNP9Frm0J5iITH5g9llEmbeMPfm7v/zOwTM4E7MUjibfZye86zIwS6ks/GvQ0a4FNzvS0dFi4IPxZa85hbqxMeXRPJyN+ix/FjJGcw6TDiy4xBW3twUagIANSzQdNXly95tLvpnBd/RYV2ipbXnv59HQOr/z7tL+R3K5VTPlWqCodUID4lhW6h7Zvew3k8SKMVD4q/Ji+0oC8dfGizefISq5O5OncEh7dSYpj1wueXMfIqonfMowOch9v2w4GLoAhE7iyb6QsgM0UMLggc11Xw8Ye+dZPQXs4p5Js+hXT+VQqJQgLNDzD7As0LdgdUO/zPoWLQxhbecAJGz9FDCxkKm19SR1qAo5miJhRHf9HUr5Ww7XmRosJjNutZ31W016MkJy5WhMRqFkvf9STYSWDSO1U/0wceVAGUubMvbsqZkY8F1y4BJfo647RnurWT1FWbJqDPpgKeD01NlBRF3JNd/6cs+KjvroLrFx0r/PAqNXSb04Ki1P2FOh8fn/JVeQeqeuAKCWkL9dQT49aaqQFEUL9OGJeAF2RHD1WKKkQRFxFP1VdhL2HE6p6jHEyXl7KTqSvzH7zH4SGADJFjsJWp8ln0Q1pqf0cA8kB8CP2SIV+RlKxWRweljGlmFsB6vwHkVXz58dockZW0iL2pb/biwsubZNfXCP2YEahxnDIq6kzD1STf7L6/0ETfddBVvBIElSHECs/JHKa3tCyI68rRPpbFWOvGNAniW78AvLVqKWvtAKjOMQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d572d21e-f569-417b-6a28-08dc3375f3fc 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:47.9796 (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 03/11] avcodec/vvcdec: deblock_bs, fix intra check for IBC 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: 8sMLPhVgkZ9A An Intra Block Copy clip may use different modes for luma and chroma. For example, MODE_IBC for luma and MODE_INTRA for chroma. We have to check luma and chroma CuPredMode (cpm) separately. --- libavcodec/vvc/vvc_filter.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libavcodec/vvc/vvc_filter.c b/libavcodec/vvc/vvc_filter.c index ca541fd997..379d90d02b 100644 --- a/libavcodec/vvc/vvc_filter.c +++ b/libavcodec/vvc/vvc_filter.c @@ -482,8 +482,10 @@ static av_always_inline int deblock_bs(const VVCLocalContext *lc, const MvField *tab_mvf = fc->tab.mvf; const int log2_min_pu_size = MIN_PU_LOG2; const int log2_min_tu_size = MIN_TU_LOG2; + const int log2_min_cb_size = fc->ps.sps->min_cb_log2_size_y; const int min_pu_width = fc->ps.pps->min_pu_width; const int min_tu_width = fc->ps.pps->min_tu_width; + const int min_cb_width = fc->ps.pps->min_cb_width; const int pu_p = (y_p >> log2_min_pu_size) * min_pu_width + (x_p >> log2_min_pu_size); const int pu_q = (y_q >> log2_min_pu_size) * min_pu_width + (x_q >> log2_min_pu_size); const MvField *mvf_p = &tab_mvf[pu_p]; @@ -492,11 +494,14 @@ static av_always_inline int deblock_bs(const VVCLocalContext *lc, const int tu_p = (y_p >> log2_min_tu_size) * min_tu_width + (x_p >> log2_min_tu_size); const int tu_q = (y_q >> log2_min_tu_size) * min_tu_width + (x_q >> log2_min_tu_size); const uint8_t pcmf = fc->tab.pcmf[chroma][tu_p] && fc->tab.pcmf[chroma][tu_q]; + const int cb_p = (y_p >> log2_min_cb_size) * min_cb_width + (x_p >> log2_min_cb_size); + const int cb_q = (y_q >> log2_min_cb_size) * min_cb_width + (x_q >> log2_min_cb_size); + const uint8_t intra = fc->tab.cpm[chroma][cb_p] == MODE_INTRA || fc->tab.cpm[chroma][cb_q] == MODE_INTRA; if (pcmf) return 0; - if (mvf_p->pred_flag == PF_INTRA || mvf_q->pred_flag == PF_INTRA || mvf_p->ciip_flag || mvf_q->ciip_flag) + if (intra || mvf_p->ciip_flag || mvf_q->ciip_flag) return 2; if (chroma) { From patchwork Thu Feb 22 07:13:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 46438 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:26a3:b0:19e:cdac:8cce with SMTP id h35csp184294pze; Wed, 21 Feb 2024 23:46:57 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCWykWq+mIi5EPQ40vMACP51dNW5992sAK5V2h3iGaO82pv3t5R/kOeb759sWC/Ht79Y0bFWvIYqqd2xWyby39YXR+v+hdcx0AUTiA== X-Google-Smtp-Source: AGHT+IGPr2s56Ba177xPE8LP+65lE+OnKg3x+zCAmpcLZRbxwAj7Z2Azuma7FX+d8uUta8Dj4ICa X-Received: by 2002:a05:6512:5d2:b0:511:a819:2c5d with SMTP id o18-20020a05651205d200b00511a8192c5dmr11431683lfo.28.1708588017270; Wed, 21 Feb 2024 23:46:57 -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 w4-20020a056402070400b005647661cb8asi3593922edx.569.2024.02.21.23.46.56; Wed, 21 Feb 2024 23:46:57 -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=N6pmNQZC; 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 24BE668D1DF; Thu, 22 Feb 2024 09:46:53 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from APC01-PSA-obe.outbound.protection.outlook.com (mail-psaapc01olkn2051.outbound.protection.outlook.com [40.92.52.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B335768CF9A for ; Thu, 22 Feb 2024 09:46:46 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KH7zYWBTNFiwyD6m2zC5A8MuLW0C1lgOJqY9WBPEtA2FJkflXDVm+dx1vdcbS4n0C4ksc92XlpxxMV9jQF3Dbw7drNK1npCJkuZ4Js8yQiRiwWImdiaN44N+tQcwy5V3ubMhfGP41eFD0OEh92f0Tvs0DyFXbkTBefcuADjWJ2pjtfYJ3tMLtuNYQjr/IP7T8fLQO5CAZd4wy2G+tg45iuxWLMC+9VWFiBNJ8wwTIgT1btDPvqHpxSM5iRhYGScEUJkfFhG68f+8BoN2WEsjxoKwNvxmHrtA+c5eWEiHUxiIGq6S0JFYqDle1crMC874V8LWRlesy2Z2qAU/lxsB/w== 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=4ZBhVAg3yO/Daeyo6LEiuGteIg2GOCU08LuB6Pf42XQ=; b=K+2petT/2ADn45E5FKojnCs9XZFk7oIWQGXR/eNtS2PwWnSazErbe21TOtg1M5Wy329b3qeeWKjuu4kijhkXCuURD76fTV/0KmIVP8XPeZgDwOtqxMy6KkNOEuh2+JI1roTm6GQ69+WcYPKVtaNZzYUjyNuo/sJyu6cKQPe7RxXyHsldsDIUGmJSGve55K9cQB77nxA38UVwa2LShVlY5kI3JyFjDII3HjCtE6ScWJDc7/PcxHf7RWqp54TtilyM/52/Lsu6GHLkNNHLZI1aQePe9R0qPsT2UJqxOG4p81TDO7NzqB5uGwUmehh7lP/NpxhSqUVErc9W8VQHMEOd7w== 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=4ZBhVAg3yO/Daeyo6LEiuGteIg2GOCU08LuB6Pf42XQ=; b=N6pmNQZCsDipdF9DMbFIbcUuH/Uw0/8JJwmgOBm4DJX2wYH6MWjDjFV0DCnpfkTBtEC8VHSnSLKinUcdeBVfMaoeezXBDb1qFqVqMg6tY0XdyIl0riqW5AzB1bsgbrybykBnofZZmreszhuEatHT1kH7Se5fZOSNnjEBnKVIMFVZe/5mwTFbGVbithwVzSqX8Q1IAhUrCDeT9Jn5JtX255kMdTVjajhylRSqbLweB4NxPwX8agEMM68CdZoi13bs1gc0XlOCJyFceA8b2hgpBV8IMOF5YfWkpc2eRuxAFahx2jQp88t992RdwE6lhuaeVcjJn+xmRgJ8760UHPPz3g== 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:48 +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:48 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Thu, 22 Feb 2024 15:13:59 +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: [zkfkLUAdQa29ml5LGb4iCJUqItStTLMn] 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-5-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: 6109930e-3871-4ed3-bcd6-08dc3375f475 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: cFBNqGb6y+yg+cPA0MLPNYNYBCtMA1tg2BbDvOFxFXHdCh4/Wph8zO8JhJUAxdIxT1Z560u20hWVoU1xDJTse8BuriR3EnOkQaUypW4JqJy8QHmlss3Fu7/KPsP7UC+pKZGoxm6QNW6BOKYxq6xCJ9sN5DHef/SFNFw47VnK8U8gJtmXgSP6ryC/V6XYf3GoBGFkb59wzMix6oBEdDboiHkMbH2vsBmfbsyzwXYX9h7QdruU3t6LxOVuFuxGlGzJZE8t5XIJUBkYBcJZadkgjt7ZiAaTL0IzQS8QW4YjKgX/x6enzk/QRnXIj5XdsmAZ2baSGlnTHH6CWfGAvVc+rndxaQNFwqNeaO+PK6RgHTh/uNVehIU4XqX8Z1sOtbbJx7Fh2b8uHj1Q+ZLEgs6qpIS77nB1qjPs3RH1i0EPp8YTCHo16AbGl+DEZu/y/XH28jDJZpdqCQsii4KKdcENKDwwaPvLbfOLwEGAGC2/Zpk1ncz5c5BwcGLefz+LbfP/nxqJ4DkR6BqQCBRMS4fgnuEyzCzHEHJ/TOGQ3omHr6+hx994bg4OyQFWpc8VsyTRanf6IRDgzOESDxZVT7cWxzxyOXolBg8tc3I3ltrqO7TzccqsTAlbPY/hJCIueSHT X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: QgR1RezHyJvqR9i4Prbctpf+0JdSfLDAv5KQldum4B2psI/oXXWLq/WfUzjKsKMzgUjxMAt5TvZBmK9f81kZq+LFEn+Bt0dxILLZVduv/ZmyQpV+5LNVjWBzNAehMN10qXhTnrXVonQ52jo/gPemDLdLhsmOq3CWNMmqXmnwArTG+tnewGHn1QuSXRUJbyPeAQ/BL9SHjU33rrc04uXKYefEexnsTSGLSxTxiGPTTQwHmK48pCKlwYMnYT7I/1Jw2gL48E+w8V/d0PFG2lxr78kRe1iYLAAZK9I07CQdVT2BMj5mG5Y7b1MmLAc/XLp17kWuf24eIxDF9t39OZxJ4yOzCuFKDXVyCxMv+S+7VecgOq6cssUxmGvA0IHumCZ0RMvDxChuLpweaFSY+jnxOqy0TIsbPL3u7YxYHtMz1FcW+DVsO+7gHzlUGY61WskB7BPR7wNkgZ0+iVbpAQUCDtJ9/l/PAozsFCNMEXEE3fsLTGY/066jGyMHHWkndfuCvAEkfKIU9bdSGAbcTLFmBXb/kw/0ESFZGDe8KOQRdyTBwsDo41fPPVnNWVtx6OpD0GAZjh+8TWNN6YUjPsanPshaYlLucmslVlyYAgJT3TrZ7FZn0khErwnHNo+061y8kLNb/cLQLqpZbdNlYhQNiVQzX/u8JDPZi6Ixwe8AlAgHJtNp+24XeOqgh2TIrvTcwerekBcXQi26JuPnFulALOBdvswB8JxPed3rbMlXkRZJbfZH0xsxenc+LITlmppCFGrzIVAb/cTCrpH+th5c+S+awa0UvvnHVycz6JGJp8s3MxFJAZLPxlllQIs3p4knKlube8XcecB3iOfh8s7knrn6k9PR+bIVoVveShN3vGc305n9euunWSXblpGRgPy+bQQYjto/VnTzGSqG2fAqEw/Ph6X1APfrmx5DNpJFO1MFYO0HWUeeipYNJBFtgbvU3a/X4BmjGi4e9/Zjy6XeGUISNgTcNev1AcAJE3UFVMH4e6LmT7HKtWh11hYrpXJeZgs6ubzAb83xbS8wnaVFehDzneNAkgyvt6Lq92yaw3BbIXhDHxA7aNhK/jElQnqCX/tr5i2y5LI1gxqbOhS7jRWZXVzR+T3bJH2PJwDKr5Rn3epC2rNjgSb0T6N+pcZQFt5n4v8RliQP9aZbGeLga3V1Un20X9isJIDwxlY5gkRb4RcuL9HQQwYjmR2TlKDEu4xXhEx99t/VsqmlZc7HJErmEdFBgMrEGOkchYfmvoQlNpBe09x3QmSfnwc5tshr43hB2SK1cjPO8Cgh1G8CMA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6109930e-3871-4ed3-bcd6-08dc3375f475 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:48.8129 (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 04/11] avcodec/vvcdec: cabac, fix non_inter_flag, pred_mode_flag, amvr_shift for IBC 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: 7P82nWh0VSDm --- libavcodec/vvc/vvc_cabac.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libavcodec/vvc/vvc_cabac.c b/libavcodec/vvc/vvc_cabac.c index 4342dfc342..5e24a1b677 100644 --- a/libavcodec/vvc/vvc_cabac.c +++ b/libavcodec/vvc/vvc_cabac.c @@ -1196,10 +1196,10 @@ VVCSplitMode ff_vvc_split_mode(VVCLocalContext *lc, const int x0, const int y0, int ff_vvc_non_inter_flag(VVCLocalContext *lc, const int x0, const int y0, const int ch_type) { const VVCFrameContext *fc = lc->fc; - uint8_t inc, left = 0, top = 0; + uint8_t inc, left = MODE_INTER, top = MODE_INTER; get_left_top(lc, &left, &top, x0, y0, fc->tab.cpm[ch_type], fc->tab.cpm[ch_type]); - inc = left || top; + inc = left == MODE_INTRA || top == MODE_INTRA; return GET_CABAC(NON_INTER_FLAG + inc); } @@ -1207,10 +1207,10 @@ int ff_vvc_pred_mode_flag(VVCLocalContext *lc, const int is_chroma) { const VVCFrameContext *fc = lc->fc; const CodingUnit *cu = lc->cu; - uint8_t inc, left = 0, top = 0; + uint8_t inc, left = MODE_INTER, top = MODE_INTER; get_left_top(lc, &left, &top, cu->x0, cu->y0, fc->tab.cpm[is_chroma], fc->tab.cpm[is_chroma]); - inc = left || top; + inc = left == MODE_INTRA || top == MODE_INTRA; return GET_CABAC(PRED_MODE_FLAG + inc); } @@ -1569,7 +1569,7 @@ int ff_vvc_amvr_shift(VVCLocalContext *lc, const int inter_affine_flag, { int amvr_shift = 2; if (has_amvr_flag) { - if (amvr_flag(lc, inter_affine_flag)) { + if (pred_mode == MODE_IBC || amvr_flag(lc, inter_affine_flag)) { int idx; if (inter_affine_flag) { idx = amvr_precision_idx(lc, 2, 1); From patchwork Thu Feb 22 07:14:00 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 46432 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:26a3:b0:19e:cdac:8cce with SMTP id h35csp173699pze; Wed, 21 Feb 2024 23:15:26 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCVLg0TESKp/FyjzJRh4WcSzLr3YNxcCv412TjFihdldWjnJqtRMmmpEWQVVjgHYtyfNYUs3MBQqrKXh/SzP5I8HTPr+6bDqjnF8iA== X-Google-Smtp-Source: AGHT+IEt+NUNCtEfLuXyasOHIUU/sSQN49YdsMSsLCGMFWyldLQL9vrXS4rpTR2mVDo9J1CDb66S X-Received: by 2002:aa7:db53:0:b0:565:dff:cd4d with SMTP id n19-20020aa7db53000000b005650dffcd4dmr2305333edt.13.1708586126459; Wed, 21 Feb 2024 23:15:26 -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 a19-20020a05640213d300b005647009af29si3733332edx.281.2024.02.21.23.15.26; Wed, 21 Feb 2024 23:15:26 -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=LxNuubn0; 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 2A1B168D1E4; Thu, 22 Feb 2024 09:15:04 +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 78A0968D1CB 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=FZkw34VZxnCWzWE9UulZbJUbGsFOBRmtrZbBtUAoT2QV+TFmOUe1kdYm3CjiZkBcO4B9zaTGLtBXRO8hPV0M/gB9QsSw7dyeCs4zFWxDi8FxgmlfqnaJPr+NinUAJsbRIVzTEKC0ifHxA4/In/3J4mKgnmAHvs2BQ1dt/UJPYOd1todfcG/T5GJWw6r2xE+E/8El3ShixsDAKZTTK++/nEXs8hjPTTZVrdtOT0qW2IPOGlsfXa6mqCpdKj0iqV8NZuxdnxir7nDDi1O+izO3FE8nfYOW+zTU0a+IGsoIXHphSJiW4l3hpx2JYIaP2nNgzz1B8U3mMW7FRloAQAqR3w== 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=79oL7fdwEF4U64v1tIb34u5vQSgWgEhM8H81S7Zz1nM=; b=jpLUH9ZfMkpNgyA4avlzkbJcRAJqywyibNiRLpVxOtRx8TXXXwBV4tYPcvmkoDEmSk0YQN7b9F57SJgwf1LS+qU0pQlQFI7dptDLdppaVOCR/w9I2dCWDzffRCHtPVvcx7k4wDOaPhd7LR3UPo1ff2I1XEfd4dcRMO7cMQGUw8RVlvgqNXXtL98XxcRuci9CqHU98Km9sHKtscBDczZLmZju61EPb2Ee6ya+GKH7IEbiYiovqHeGuzT621hUzuqqj1nFiHCciSV7+23fJzbu1qrGWpvjJDHS7Bsl+ypIusAfD0+1vNWXw7M75PD1rQ4IQWKnp2gKoIYKcs2I71zewg== 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=79oL7fdwEF4U64v1tIb34u5vQSgWgEhM8H81S7Zz1nM=; b=LxNuubn0M7BAfRNvR9uuQc1PU564wbj9K44zSgNyAsRZH0IlbuRNt7/kFX4/U45W7f0MqQkDF1g1DjQmtJyDZwVY3tn4u3p1evMtc/HydiixN1su0yah4RZ/yNzdiZxIjFqpYk8Kd/urMtjV4rKa8TSeB8aPGuhg/1DYSA0Lkkt2Kxu2CyLjgjtYPr3frHsvF+PV0N2evbK0fgiPYZi3PkQZbO7YsBr6Nj7RF+MUVbV8Wi0IEVQFQRTCjXm7y72NfzSBbQaGsgJ8zCPwSRVUuY1fjpsUZcGcdNavLNtj9FicQAkx/1/n4KNCtZtRbD2MS5WROfj+c6fc2KLIEYUrlw== 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:49 +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:49 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Thu, 22 Feb 2024 15:14:00 +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: [ThhPrXhYjqu6kv4LXnl0N4S4i2nG5pvh] 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-6-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: 33446eaa-07e5-4344-3b52-08dc3375f50a X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Gr2cAEpUYQVi9gcqmnUdnOUbhFHNixXTxFTvt0HRyOD86XrKcND9Cs/jh3dp9cqcWwcSgxfY9btHY1I9F1NspYcWG3UHadwCPSGax22MP2N9iw6phTbPELFx2TCye6/PHP2qKOtERoAx9LMqKOtKc8n+SALuSgdbh+NW6b/xpP6j/wSGkQXbGG4e8YfPWvTbiYjGZCHzQ9ONkiGpihfmgPBH1contvEnY7XpYZEfMVRwmHW7n5B96SGr2qfKaGem59f9wab1+sjBHVsqGNFWig5NuAW6Jg8X5XY5UKOssLE5KrY1ZCihQENJakFm8DZ4xCEMhj3AAIZrp3b6KtR7kwx9MpQncPIreR7KK0nUh/Gv1ot/FWg24Bn3jY3hDw/zNud6wpnoCyCtGBfc7ct06Y4hoPz6doDdbYCHDpaPiOnpd++g8om+8zrZYiyk7P3ukdwHuUrqKlvGq3CdfBvuNvkzpNOCQDiTLdpZi7mgOO7pMqAoiACNXy6ZhTrOXfcmxnOAcQkUrdMeVMlUcU+zkATF3KGv+XS+qoXjUn7IZ5LNv/Vx/TXss6sApvJdTKLUwfjf+hbi2MLY4nK9vXb/unf5dOZNgkvDL+8XlNzreq1pXzRKDXWMxAxdO2y/d3Vs X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 7o0ss4u8G2U3XXaGxJ3LDgz4RcZ9hY30jyBDtv9XJ5NICRV60Ke4+V3Ey12qCnJ4VNIMJawhUGMEPs3Ncc+OQaH8eK6XxXwlt12xnq2PLwI/sAULis16v+4+9wLkjSDcD3OYOdNaTSpoG3SRiKaw5eesjfjvAFKL04jKmLPNpvxFwMBJ5FMoKpVFQrPdvm+7qm8MTGclbYoWIJqg8JAnjPwvfSfbO4Xrnaj/uI24ZgHnbI7Xgv7Y4yPnYxBAFap1vwnZMZQNzou7KnMMIGAgbEaY2lpThbv8HE0mFVFeSv+X8F0H/6Y1Z57YkgaxyIWloMKAycVbouiHthIUoHyAXHX4xZVDP8WEuu1GL9KIX/hiMg5vIiRUXeg01qf2xeF1cGWkfdv/SXDLU/MmxnupnchUUQ/eU1lmkcihCH5s2idVBuFxeHOahnnVZK7ajQh4hnpBeOUOfF8ZI8KcJB9fKpulp+nxo6qUFLfbx6i6WBm8I0ZmPRtdQBtUhtZpf1fGOX2EuklhlHV4MyBqdITAPG8sQTIyZP9QEswwCf74rmFsZYXtmjt+dbgrSdencsf3bb3maUwQiVeB3slp0OcDiSjBQrq3BfrLtUtC0sozsPP2+35IoZF+N/pA9xCXGihpBdErSxUQ3QtX13aB9gH5QVxGuXeOhcwQEMNUTOEUqeem0RV8Q36bUD3qdnBWtXsf3jMOKaYH0hQd5j2hvBDLR6ZD+f8ZKiVxldusskaDNT++7G+QIOyXsntHnNAmEie7PgRceb67icbudeILK35cl/OmOkQ0ZpOXwk907HHeF4eA1BgDUoCfncppZnjOgzcnXVDmmkk9q5IZoZc4GjCbJucZwmMmABD0MXUmWIWG/SDDF85t9li4+WWfWEpP0GVIYDAjRDHf2WOGfSpPlJu3E5UaEzI9BzqiVAiF1FgY9/JX4XbTjiy+VVPuSkXV/xErk4nPbc6GfdOf7jbs+sclySei0ivM5xLtYTJmuAAjQK4cJzEVuIMx8GlV+FpXyxmNwKtZbs8pVev1MM7uTtyzd+3m5oTVQsGKZT6aS/NkJnB3oHLJR1BVZB9ncXBv4jW1/sec1qqMrhfeHdlNIlhxikVMmzLgnwO3VXbJfx/iVY3Gm6L+Fjy/Znshx53azg5ovBWa+uvOL1wBqnCNrld0FmOxyMHyd7jOKGn+3t2GkaQxm/UqRM6q20r56IDqS7+7X3Uax/hZqRGpYPaMV1jw2KpvW498sPcqU883yBQPKBsiPXWN2IvwzfO/fivT0pRaMl9ctNZ+VEK51SnUgvZwSw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 33446eaa-07e5-4344-3b52-08dc3375f50a 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:49.7347 (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 05/11] avcodec/vvcdec: implement update_hmvp for IBC 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 , Wu Jianhua Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: oIkZ5WRiK7t4 From: Wu Jianhua Signed-off-by: Wu Jianhua Signed-off-by: Nuo Mi --- libavcodec/vvc/vvc_ctu.c | 9 +++++-- libavcodec/vvc/vvc_ctu.h | 3 +++ libavcodec/vvc/vvc_mvs.c | 53 ++++++++++++++++++++++++++-------------- 3 files changed, 44 insertions(+), 21 deletions(-) diff --git a/libavcodec/vvc/vvc_ctu.c b/libavcodec/vvc/vvc_ctu.c index 2e48f7bed8..b78a1417c7 100644 --- a/libavcodec/vvc/vvc_ctu.c +++ b/libavcodec/vvc/vvc_ctu.c @@ -1717,10 +1717,15 @@ static int inter_data(VVCLocalContext *lc) } else { ret = mvp_data(lc); } - if (!pu->merge_gpm_flag && !pu->inter_affine_flag && !pu->merge_subblock_flag) { + + if (cu->pred_mode == MODE_IBC) + { + ff_vvc_update_hmvp(lc, mi); + } else if (!pu->merge_gpm_flag && !pu->inter_affine_flag && !pu->merge_subblock_flag) { refine_regular_subblock(lc); ff_vvc_update_hmvp(lc, mi); } + if (!pu->dmvr_flag) fill_dmvr_info(lc->fc, cu->x0, cu->y0, cu->cb_width, cu->cb_height); return ret; @@ -2394,8 +2399,8 @@ int ff_vvc_coding_tree_unit(VVCLocalContext *lc, int ret; if (rx == pps->ctb_to_col_bd[rx]) { - //fix me for ibc ep->num_hmvp = 0; + ep->num_hmvp_ibc = 0; ep->is_first_qg = ry == pps->ctb_to_row_bd[ry] || !ctu_idx; } diff --git a/libavcodec/vvc/vvc_ctu.h b/libavcodec/vvc/vvc_ctu.h index ab3fac626d..5ed331a831 100644 --- a/libavcodec/vvc/vvc_ctu.h +++ b/libavcodec/vvc/vvc_ctu.h @@ -357,8 +357,11 @@ typedef struct EntryPoint { int ctu_end; uint8_t is_first_qg; // first quantization group + MvField hmvp[MAX_NUM_HMVP_CANDS]; ///< HmvpCandList int num_hmvp; ///< NumHmvpCand + MvField hmvp_ibc[MAX_NUM_HMVP_CANDS]; ///< HmvpIbcCandList + int num_hmvp_ibc; ///< NumHmvpIbcCand } EntryPoint; typedef struct VVCLocalContext { diff --git a/libavcodec/vvc/vvc_mvs.c b/libavcodec/vvc/vvc_mvs.c index 2ed05ad2a4..8af57e8ed3 100644 --- a/libavcodec/vvc/vvc_mvs.c +++ b/libavcodec/vvc/vvc_mvs.c @@ -1758,34 +1758,49 @@ static av_always_inline int is_greater_mer(const VVCFrameContext *fc, const int y0_br >> plevel > y0 >> plevel; } -//8.5.2.16 Updating process for the history-based motion vector predictor candidate list -void ff_vvc_update_hmvp(VVCLocalContext *lc, const MotionInfo *mi) +static void update_hmvp(MvField *hmvp, int *num_hmvp, const MvField *mvf, + int (*compare)(const MvField *n, const MvField *o)) { - const VVCFrameContext *fc = lc->fc; - const CodingUnit *cu = lc->cu; - const int min_pu_width = fc->ps.pps->min_pu_width; - const MvField* tab_mvf = fc->tab.mvf; - EntryPoint* ep = lc->ep; - const MvField *mvf; int i; - - if (!is_greater_mer(fc, cu->x0, cu->y0, cu->x0 + cu->cb_width, cu->y0 + cu->cb_height)) - return; - mvf = &TAB_MVF(cu->x0, cu->y0); - - for (i = 0; i < ep->num_hmvp; i++) { - if (compare_mv_ref_idx(mvf, ep->hmvp + i)) { - ep->num_hmvp--; + for (i = 0; i < *num_hmvp; i++) { + if (compare(mvf, hmvp + i)) { + (*num_hmvp)--; break; } } if (i == MAX_NUM_HMVP_CANDS) { - ep->num_hmvp--; + (*num_hmvp)--; i = 0; } - memmove(ep->hmvp + i, ep->hmvp + i + 1, (ep->num_hmvp - i) * sizeof(MvField)); - ep->hmvp[ep->num_hmvp++] = *mvf; + memmove(hmvp + i, hmvp + i + 1, (*num_hmvp - i) * sizeof(MvField)); + hmvp[(*num_hmvp)++] = *mvf; +} + +static int compare_l0_mv(const MvField *n, const MvField *o) +{ + return IS_SAME_MV(&n->mv[L0], &o->mv[L0]); +} + +//8.6.2.4 Derivation process for IBC history-based block vector candidates +//8.5.2.16 Updating process for the history-based motion vector predictor candidate list +void ff_vvc_update_hmvp(VVCLocalContext *lc, const MotionInfo *mi) +{ + const VVCFrameContext *fc = lc->fc; + const CodingUnit *cu = lc->cu; + const int min_pu_width = fc->ps.pps->min_pu_width; + const MvField *tab_mvf = fc->tab.mvf; + EntryPoint *ep = lc->ep; + + if (cu->pred_mode == MODE_IBC) { + if (cu->cb_width * cu->cb_height <= 16) + return; + update_hmvp(ep->hmvp_ibc, &ep->num_hmvp_ibc, &TAB_MVF(cu->x0, cu->y0), compare_l0_mv); + } else { + if (!is_greater_mer(fc, cu->x0, cu->y0, cu->x0 + cu->cb_width, cu->y0 + cu->cb_height)) + return; + update_hmvp(ep->hmvp, &ep->num_hmvp, &TAB_MVF(cu->x0, cu->y0), compare_mv_ref_idx); + } } MvField* ff_vvc_get_mvf(const VVCFrameContext *fc, const int x0, const int y0) From patchwork Thu Feb 22 07:14:01 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 46437 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:26a3:b0:19e:cdac:8cce with SMTP id h35csp178429pze; Wed, 21 Feb 2024 23:29:44 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCULr0qn2BVJ+5XGvd7bjbQB/RuaLBaFM6JsK1FW7BeRhhd5niSml0kINDUfQjeXZLsXWCYCkgPJDlheGYVMw2TBj0VN0xph681pbA== X-Google-Smtp-Source: AGHT+IE95d3XV6GwS1d2atiI1d1/ng8A92P9+Jz1dstY2rrJ1Dte23BL+VlPNmyu34fdTr+35J8k X-Received: by 2002:a17:906:1997:b0:a3e:ac2e:65bc with SMTP id g23-20020a170906199700b00a3eac2e65bcmr6899475ejd.62.1708586983955; Wed, 21 Feb 2024 23:29:43 -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 v21-20020a1709062f1500b00a3ce79e8cb1si5084658eji.557.2024.02.21.23.29.43; Wed, 21 Feb 2024 23:29:43 -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="uUJth2Z/"; 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 B4FDA68D1D0; Thu, 22 Feb 2024 09:29:40 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from APC01-PSA-obe.outbound.protection.outlook.com (mail-psaapc01olkn2054.outbound.protection.outlook.com [40.92.52.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DB44868D130 for ; Thu, 22 Feb 2024 09:29:33 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BznoNzQaW+tfEwpAUxAskPFv/eG5pZNkYjwhDF7JSFp1b8M4If4UII/1R/+g7AR+JpjuTtsnF0NIClGpNwrjCs86f40YM7p8UmmwqEqHRPOGbpNwHFRB3cAtJ8niEDPVCBR0HE8/BA94lN/ODaHiskeYXJMekq/MqVXjboezmhXTsKQMM/UouPTYctpO83ZiAOgtU4e1Q+VLDKKq7d8PPg0M3l+2zp8WMMBdAga2E5pJIbRoBktn+z3SlX66VBB3uABaNXdTsIcMnUUFhCZr6lAJVSX3dRhHlyffMfcyH1W9ylMkHyKtO17SIlbEjiiSASO3uxVrI1JSfr5QpYZpBg== 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=zrhnrLtXIZGu6QS1DR1z4WU/VdHBj4aJgp6UaExQmck=; b=SQFNYHg/snCTI18r+S95+ZwqFp2Y+9VteZEb/AIwFxlfSB73XR2cK4VWWPJ7dsKuqVMvHJN/ed2YQL0zCSsRjeU5JwVP8Ym/jtNiWeH3D6breulivjemIb2NZyi7EOvBFBHkqrk1I0ob+IIl+JmoD2KgWxW4wbkJy8Fv/6pgKtIhMdtPVRykO4mQb9JULCuLkUhARy4BAXc2k93OA9TLOk3/VKF/7MVvZQmPE37PaGC3UyHrWAkyGH4l9bhm3yDlh9C74cu0mAj7GcKiTdAzA54Uq6jX50ewCev656s0HoN/tcgidYm4hZ2Xk6PPPumJ92PR35oqH/IR+hnVm+BJYA== 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=zrhnrLtXIZGu6QS1DR1z4WU/VdHBj4aJgp6UaExQmck=; b=uUJth2Z/e+Yk+ItRyEctv2p7skd35fLAZ2km6GHf8QB5MmfFyYzvxDK5bYRoSx8ba9n32XuAIZHTiQxWNbmVi4eg5m1RG74MYY4PJ45CmjpPi//6DAK/Yf8E+VY/7bSuykFlkkz32c0EcEPiFdaTS177TDco5wu6FiAgQqy3yDfKckerqoiX0yEFJt7NnpTDqyOMP8S43FN+s0eT2x3iv8F9zuFFg1LokpySDf5WZqv8WY/SadlECCDybqxwSph0haEsbxQFe6pbPnehOWhZmfLCQxosWoTz1NZSgzQ1csQ/iF1SWFh8BpV6jVUYDPRxiDvM1ILa6lMHhyYLFYstIA== 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:50 +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:50 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Thu, 22 Feb 2024 15:14:01 +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: [BnJqtA3serJyceJeK6i0mDrXGd5yCFVe] 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-7-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: 64db9066-eee7-4230-4e5e-08dc3375f57d X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6nN9Zn2AsU+5FIUeBJc2m9cAoyDaYsrlnF7sQ3OATcdHLRKM/p9ElaiqGuQa9dFI66FXmnn9g5wuUhZQDuKR5p1oEpBDEfkSReoFyR7TMl59JMgqZFdfm/GKDSASY+wfVbYwW5cWzaY417dTKzbWNW6C8EwGNCotYOlHOYjkh+OnbpVrZu//4aerI5mOu8BRfJj3cTpQuUPALSJRECt3G8GsSViCUdrmsmSsq15vnsLefdsNmYf6cJWj0hNDmMDIb92pdUI7UOvNes4Bvrq7P7ZeWNL3b7l4g3kU4U6+s/2N2RspFJiWDs4kaSlX7pmPoKD9ZuJ1ui4j2w3jv0wcQwEeTtNSQB0NW/nE4/NaTeMX5Yiy2Cp/FbIflOJyWyK4EibUqPH0XHkZRAEzMdj74O2jAXYp9jRblVLvAkVKvq96sRkniP8XFB/Ac4Dw6asQXLWcKaIXQmZDHwxmUtNw22OfBhvzO3d9exDWAIMIdLziTFlU2PJ+13PWw2uqjNA0lnp9xyVWIiOF5uVRsvTyTTYQMI/ktZphrohCGIuzBg31QwY3nRof4fusVNr0y4yJWIlc+EZDRopQER7JzmmWUsGZaGWwkcKouKaftTzc1DDB55BIpNwIPCz1JWu4U4MF X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /MXCyYlxUrItWNpd/MQWFon3GIs9YSL7/gBa2fO7d1l1aWZTbMR5DZ9AxzE5FPNY0ycwenBbFW3AlM3RtiFvoWOYvlg9XTg0XnV+b1ejuclNg6pPtFdfoCAiesYXGvR9PrgN6AP/imfssN45FdoiIEg2BVNV/0g4jbwJXqe88Lq6z0J7Yl/1EI7bn5sGLpJylKh6afJv4JiIH5O+McnrDIjzksINWPOHwc+B5Fh6ALsVWCvSkU0JWr7pZzMJdcA2MdYPp9FPkzI0BuZbizTcJOiumjSXISj+LftErZcjelmKtEA69vUSpj+U4RvLOwO0mBYlLR+7ED1ahsHSaIssuDxzXi1h0DG7RXross0Fg3jFHtBYqhAESV/V54Ii/Nekhs4E/zI8Au1kbNAv4CLxWQ1Nhf/8f7tNQALAg5DDGR5XPL+jgZ6brFxjsKLvEXpBE2HjYwktqcDYU/CMvJGEhdjC+wr5wGF8Z2No2DjikmZgF6qTKDAUw2uFpY4056r8ynmyxfC2/jU3xyZhA40/75a5SnQp6eYDOVDCX1za5e8D3ohA/GcycI+o5ioX5nmDI658iqOs8+oRDDM6DDHY14FGi2uFObt3f2INW91pgi327RAZbgO0EBxYrGV3d2+jSGbRatPSsYuq+tfdZ8mbiipCwbTZnEQM7BijfllP8edfek/1WQyjMkd8wg5p74I8WP/TLrvpYCjxxVHjP6mGNFJyOp65DGpsrpIG9o9H7u/RvTwfdUhUvOaWwEaLpgFXnl5x427CCsMrsBM4YZuXngbn7gY2QOXIN/6mC8vr1tsqyQ2/sL52gIcPi67MgcclAYebdPfWVZfnQb5Y9KcAPdfbtLuvIGQmddIU4/W45fa11zTo7uhPQkOOVg6uE+UVSfpp39+JMnZV1x0ovqGja2szeIB/6Mrmc221Y3QSeG2sQrG7EjL2+V96PptnBM/bgA4fi0DYiNhaZKqmnuKyFmQd6BmpXg7cdpo2CxKpw4dxAjxRRr2n6eGxpAgUgIdtav8Qmk6R7KzQ6rK3yVoSICPlbTmXdUJJl0q6t1nxP4+f7sCgX28eMLK3DZbDkz3++hCpu/9Y2wAmXdjM8EMzO0g2in55nwlzeC/n7O2Vo9EBlDeRwZi+Hario7ZSDU70Yl99YuiLxXTElSL3pt1cRwx93MWK0XaBiWukKEvY78AXqWuW61KusAVBXB/c6f2IKpCW0tZJUjvdsg+HGPozCpYr2p8Ck5ehqQZDIrZhBXbkByNUIrbnvP8idj/8vSNEyLHF50hYUJ6Bp+7kXOnmfg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 64db9066-eee7-4230-4e5e-08dc3375f57d 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:50.5274 (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 06/11] avcodec/vvcdec: skip inter prediction for IBC blocks 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: NzChPuE53gd8 Intra Block Copy relies on reconstructed pixels from the current frame. We skip IBC during the inter prediction stage and handle it during the reconstruction stage. --- libavcodec/vvc/vvc_inter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/vvc/vvc_inter.c b/libavcodec/vvc/vvc_inter.c index 6c9c8a7165..d5be32aa14 100644 --- a/libavcodec/vvc/vvc_inter.c +++ b/libavcodec/vvc/vvc_inter.c @@ -893,7 +893,7 @@ static void predict_inter(VVCLocalContext *lc) static int has_inter_luma(const CodingUnit *cu) { - return cu->pred_mode != MODE_INTRA && cu->pred_mode != MODE_PLT && cu->tree_type != DUAL_TREE_CHROMA; + return (cu->pred_mode == MODE_INTER || cu->pred_mode == MODE_SKIP) && cu->tree_type != DUAL_TREE_CHROMA; } int ff_vvc_predict_inter(VVCLocalContext *lc, const int rs) From patchwork Thu Feb 22 07:14:02 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 46435 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:26a3:b0:19e:cdac:8cce with SMTP id h35csp173943pze; Wed, 21 Feb 2024 23:16:02 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCX2Zdelmz/tchZn3raf/iScyxiSlvydq5XA9xB+7QkApF373WSbLKLB7OqICoCTchP0SnKoBEYyAwfGt5PGJa6ZRodUxY8Cd0xz2w== X-Google-Smtp-Source: AGHT+IEuqE+8vn9wbRjp8IfhIQScMwP5W5tWYZ9hfEQqstUAvwp8RHPp8C6Q3Tglk8FpKIFKJ9ei X-Received: by 2002:aa7:cf14:0:b0:564:4a18:45f1 with SMTP id a20-20020aa7cf14000000b005644a1845f1mr11537871edy.17.1708586162518; Wed, 21 Feb 2024 23:16:02 -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 z10-20020a056402274a00b005642ea075aesi4892031edd.314.2024.02.21.23.16.02; Wed, 21 Feb 2024 23:16:02 -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=eC2UfAxb; 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 862E168D22D; Thu, 22 Feb 2024 09:15:13 +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 3DBD668D207 for ; Thu, 22 Feb 2024 09:15:10 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jw0FfsIFJWS+UCgiY19+fKlviZ99NDAOpEU2P30rHA/bpeSg449Mqzwf+YM9itIYKGkwwTulH3NGUubRwiRCYEYp/BmhItFIaxFNf1EmIS84MAHCyOApFtJ/vfWdV3OefGb3MAdbUOade8Xo69vOfH2tLEm7gyhy0G0EqOgCpgBxZWVV3Xpr1sIVmiMTJ8CcADhEhRvcw4KRA0jNFTlo7Pxdzy03mmSOLe/nwV9EcGOevsgpWKp/S4DL+WOX469ioq/JvltSUNgEu/masWsg4wuE4L/HWEiOLYwoj1CzAXrpvRNVuIhkHZlOEo+rRkohiWENhH7MhQdhRqlrGDLMxg== 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=SMLZA14ovFhLgkJWzzG8Q9GQ+fV7PNzR3CP/vtKw3AA=; b=Mvj4JHZHfgrjCyqC43ByEwCMQvfdFvYw8wt66xX4lcDKmmeCKXvzjZhde163tKcaR+wwNwojbyLMmhhxBzkjtVQSbwmO6mzlRIqa6HtO/IC6HllFDCr7Z4yiaGjNJ/cBMUurDoxdbJcH1acuKwKc7TZabYBztVBZ567i0MukGW81EJUsQ7zJIQ6T2P/yWL15qIT4GatB3bRhWFqnJSqWiZnC7/PzXZWPLAXSUZFPIBbskvS+SOAbB95/iQAzjb4OvFke9WkcfPJyDSY5YevP7MM/zxl3fpIEBX6yP3s7IscZL/Ce3gAQbsKfV97GjK7Ha9ga/iUF2u1azb2n3Gyvxw== 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=SMLZA14ovFhLgkJWzzG8Q9GQ+fV7PNzR3CP/vtKw3AA=; b=eC2UfAxbAgOVy1pN4QzCuFIzisAf3bPPdiznZ+M+1us0ef0VNEgZ5cniR92dqM6GtUPEZylEHdyppxHC+ZEaslHwWSlhaNgnZyiyLROmg6SmtMNOa6CqOLVcrVRfIZ4RtU40tuzRJXTYKy9XvQ/VcJG55ZfSdCQU1dAV0YJv3XnfpQUki88HSsyBCQUdWrZPlfK0BBii/nqAX6dhwuVF48Ehc2A2UvBHF5gDXkX+L5HNegDFv+ncdPc7P1+dGIvE6JQ0FEb6PVUE/O6g40TN3tAWssvE+RSwc31KLUxI8dUnXbrZpQm7Sz88p00leQ0YFOHCaxXukDgRjo3ZEnV8Aw== 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:51 +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:51 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Thu, 22 Feb 2024 15:14:02 +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: [6L549GjogQXF+SF29sSGAdAoyAeqFPU1] 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-8-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: b2f58b68-1b67-49fe-7560-08dc3375f5fa X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: oBna2UQ45j17t1AZ1M3mfNCyz0V4JXzCAndzFbJYjal6OQkxGTXvv0H4hRvIPjzgu0lM2IXEv8/NphoGPXwXUEkuQOw2CnrXUOH1HgooEhkd7Gq+cUk8MDLEtS2jxn4+CflIr4l6/7rOUrR4wUeHSeLLX2R457VIcH8n1tu5bgWS71ajwOVZ55SBrY/Rs/uFlrV4hdOg/gMl72dRmMoy62eUB1FKXifRzW1qbnXMuz0PcIy7SE5zA7zoMEPe9X3G22dCp2mwp+UryrtjApXZKWe42ZFtRXKPpEu5jH2r43ybBWxYRQT/zPLuBHc1vXYl53FI08AkDo6VnGZM46khjSnClw0GUA8aeBIPBxZKT3ZX70RUbU3tjyKf8DWSoNFLHZESPvlgpfKmLo0G6EbP9yykR/PdhElCtl4cpzasacJyIKCMrVDHPMi3ZfQp/7d1C1VMUttxbShrJ7CP06B9vwlrpoiDnXg98a3bfMdzB4Bc0suNZKO4Mtq+70SgGPjylUa0BRRzzOuA5CAiM0xKjC8oqLD7Eog+lrOr4kzt0fKfFo6V5wcieh7SJc6hQPzIAVhLKN+dPp1f+sQQXLV3I6Vie++TvL/pnfdYGhOTJYXvzFM3AfXjxC3VSzkpqYsd X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 1H+JY4YdfOXanslsfgY+AU0UxClcQi3+ahwWE8VBC+x6Upi/GBVTwc/78UixVlkkEQpKbeFxb+y7fHHO6UpzLCfQPphwIFDNWmaU3VKlX32zb2/U94RoqmZI12QBCZt2dCD8vjtSHS20U/qi1rmJlrWw9ALmCaxZvHEKw0wRzkHm4iPxKVsXYuEm6eWH0vR/PQX+kVuUfucf05KPR3qVcsomAokML7xoO/DNc8hBTB4FZnpU979Umu2DbVxu9i+Mszo6pUFYceyCXALUjJ3VwtERMD2FKKQKIG+CDo0DbpTel6LDxRfbbVQWXRN9ug6+aSJ9UKf3yKnmmNla4sYPUvgvAzE7yiJkxONyqHdomdj7oe/C05noUEgbS+nK/Qy+SDIAvrA3KE0yra/SxXo8qovyA8M9foN5l/znHpnOfDqWtyv4zRZlnlfSwmZ+qGlAYciINJiBpbbUEP6ZHB1/67/pfKmUyuY/Fn4Hx/K3MLyh9Uhwa5dzu0wTeiKRd22HtUHZzn2ldA10coj6WJZM8YlL4LIke5E8Y0gTGMsU2ImUiuZPR6iIJZwFN1M1He4DB9G+KUkFm13lqJwbxzCH79gPpxF2Y4n2ARs6oN4WAM4xcyRMwmK2DxTedYAhgs5MLJ61eqYXzX/plX+Gg4s3w/fmrTEhCCXnQuJXuTe7L0K9HzbnTk8lrnZ6zxwdPSJDmBNAYMSGzRHfjaLpior48vUTijH0nYlfEh/cu+PbsbhnPRHMrkAXHXpAOyIEfvPIRFfaDdjCgLc8Gpq6AWlo4LesdEbZzc/cm7JI0CDiB9Jkm7u1sIQBgjBoRjC7iM5ogXdXXffhMxgfiETL6cMKlwaJiv24gwhSfs0Vm3s+Kr6Km9SufQV5rDNOsiOObaavvX293nJJghF3PDpIyceudxgPgp5sYf6VrJ4Ylac7zwTHkRUNFQec76QDk69hsw1UmVHh2zkj4qQE+lkxdxl/7i+Qy31EZ4Jn2IjCAoOQZSZeIiySha95S2hcFwtmMuLcC3a2apTMSO2iDNdccJxnAUw7r4PFwOHy6khsItJDeSwgfW7U/sBvb/oXFNSTCFbKEuA+KAjDO0HMojD56opwW7E8pl5tRvDCxow65AJf+txN0oNUWfGebR2FZQ5kvnwu/YqJIAH5alDbDT4U5csHJ+3MKutLJEuJ4C4oikCYTqOSXw4c74Efif0LAb3vikzaqGshUCOQEvMRfND/ZY+BrqviCEbGmZUqGnMzIOB2vfVCfZN3kbLuTkw3xhYyeWEb8D8RSISYkmCGCwwsv9l2vw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b2f58b68-1b67-49fe-7560-08dc3375f5fa 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:51.3170 (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 07/11] avcodec/vvcdec: ff_vvc_set_intra_mvf, refact to support dmvr tab 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: GcJ9orEvg6q9 --- libavcodec/vvc/vvc_ctu.c | 2 +- libavcodec/vvc/vvc_mvs.c | 4 ++-- libavcodec/vvc/vvc_mvs.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libavcodec/vvc/vvc_ctu.c b/libavcodec/vvc/vvc_ctu.c index b78a1417c7..00476c81e4 100644 --- a/libavcodec/vvc/vvc_ctu.c +++ b/libavcodec/vvc/vvc_ctu.c @@ -1776,7 +1776,7 @@ static int hls_coding_unit(VVCLocalContext *lc, int x0, int y0, int cb_width, in } else { intra_luma_pred_modes(lc); } - ff_vvc_set_intra_mvf(lc); + ff_vvc_set_intra_mvf(lc, 0); } if ((tree_type == SINGLE_TREE || tree_type == DUAL_TREE_CHROMA) && sps->r->sps_chroma_format_idc) { if (pred_mode_plt_flag && tree_type == DUAL_TREE_CHROMA) { diff --git a/libavcodec/vvc/vvc_mvs.c b/libavcodec/vvc/vvc_mvs.c index 8af57e8ed3..8fdbb00a41 100644 --- a/libavcodec/vvc/vvc_mvs.c +++ b/libavcodec/vvc/vvc_mvs.c @@ -262,11 +262,11 @@ void ff_vvc_set_mvf(const VVCLocalContext *lc, const int x0, const int y0, const } } -void ff_vvc_set_intra_mvf(const VVCLocalContext *lc) +void ff_vvc_set_intra_mvf(const VVCLocalContext *lc, const int dmvr) { const VVCFrameContext *fc = lc->fc; const CodingUnit *cu = lc->cu; - MvField *tab_mvf = fc->tab.mvf; + MvField *tab_mvf = dmvr ? fc->ref->tab_dmvr_mvf : fc->tab.mvf; const int min_pu_width = fc->ps.pps->min_pu_width; const int min_pu_size = 1 << MIN_PU_LOG2; for (int dy = 0; dy < cu->cb_height; dy += min_pu_size) { diff --git a/libavcodec/vvc/vvc_mvs.h b/libavcodec/vvc/vvc_mvs.h index 6c46f9fdb2..358de5ec45 100644 --- a/libavcodec/vvc/vvc_mvs.h +++ b/libavcodec/vvc/vvc_mvs.h @@ -41,6 +41,6 @@ void ff_vvc_update_hmvp(VVCLocalContext *lc, const MotionInfo *mi); int ff_vvc_no_backward_pred_flag(const VVCLocalContext *lc); MvField* ff_vvc_get_mvf(const VVCFrameContext *fc, const int x0, const int y0); void ff_vvc_set_mvf(const VVCLocalContext *lc, const int x0, const int y0, const int w, const int h, const MvField *mvf); -void ff_vvc_set_intra_mvf(const VVCLocalContext *lc); +void ff_vvc_set_intra_mvf(const VVCLocalContext *lc, int dmvr); #endif //AVCODEC_VVC_VVC_MVS_H From patchwork Thu Feb 22 07:14:03 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 46436 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:26a3:b0:19e:cdac:8cce with SMTP id h35csp174005pze; Wed, 21 Feb 2024 23:16:11 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCXC4fShxAW1tu0BmN3vrfQa2UnRTav6EcQYwluLesbWiPDIcD9Ix8sMN7eFUJsXiLwgbT/3IL/WwSR+SJpMvamT6GtRptRgX6x1Zg== X-Google-Smtp-Source: AGHT+IENa1ezloq59nUA+CU7YR0Tx1NfxI9KV9xyTsm3iQMlataDOfSe20A8dyaaKvPnOvQ4xGnu X-Received: by 2002:aa7:d508:0:b0:564:5407:ce22 with SMTP id y8-20020aa7d508000000b005645407ce22mr7583645edq.21.1708586171077; Wed, 21 Feb 2024 23:16:11 -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 t18-20020a508d52000000b005647bed43cfsi3290622edt.427.2024.02.21.23.16.10; Wed, 21 Feb 2024 23:16:11 -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=Rx0BzN57; 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 8A7DF68D1D0; Thu, 22 Feb 2024 09:15:14 +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-sgaapc01olkn2037.outbound.protection.outlook.com [40.92.53.37]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7740068D20A for ; Thu, 22 Feb 2024 09:15:05 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kWa0uuqOmP/paHjdaP68o8XIkJJ+ZLfxUfrpHQrgV3RCVnMoRgyCniYBwjtYnjrrrr+9NW4vcTFShBhhLqdzIp3BL14f5BKENyHrMjgmp6cCdUB546ksyqMaGH+n5UW+qf6+Wr/J9JIuLX45G+U1YmPdHqY7tPQPgjcYW53CJ5TYh4a7hM5SOgvXrFHTAjh5LnHuL/mdW2V9WjjtFNUgDl4E7ljiiGaRPP1a5ByE0IRu0cCM9JRcQGdCz4qoJjUj/QEzgoA+r8eA8T9fsk91CmuH3Y9r6VRmDRXkzlatbwmYrXk7cjWflljmqWe6gYuDpYt6axFL1X+dzY3jHgl0pw== 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=asleDdI2PYtb8Pf43TGWi/LwY3h2RLCBqNsRX/OR1YE=; b=YeEXWFBHJGaQAepvoUvCz7a+3EgRx/QnmyTC3m77AlAuYv7S0g2eynTvL/suXKUiom3Agf+o7HHtUxasjvsewerF8h4VaHua0KPngFM3TjmDbZ4HyEVj3KE81p9cTa7fxR/BevG/PUa5ADznPh1cJIeRmHdtiZA+PK8/q0szhmSCaNddkLz9ngfYEAqf1OWEnVlzj/+OTpcIO70GMSgMS44Hqa9njeNdHCcpuw0t/GRPB8dJvBCuPT28dPaqF7hrcdRC+8i9EerKNvScbQ/qYH03lRLMRSYk+g6NGSapLBcO9gtv14frzjBJ/afEMNpsnpS2LGmOxDpMnrUV3Q37CA== 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=asleDdI2PYtb8Pf43TGWi/LwY3h2RLCBqNsRX/OR1YE=; b=Rx0BzN57wIW0TD+BdqkWOcPd2+9EQJeMZjU0x80sQjdx9TWLFwdv8DNhhDAlbjiF0dt/Ntyrk9l4XWpAXaIOr2R/lbmY9D2gmeF7GLhf1z5F4hdFlZQ7fg/C/Mv4CQ3rc1bTQP52u3JEf58cgRC+mmdpqCoLWTUnSgjI/QcTmv9Geb9liynJCSD76ByfZ7heXQAhB2zUqwLN1lJPSkh1QnuGuiludQJe33d0x5h/VjhjyToLDxZH8INUU0yR3JfeDn5rp4XFg937qq3OoddYsHtz8+F+Pjo8WzH9yMmCukjJIfJ6Vu/7GPt5rTMx9Q8WiIEFunK9g/7smtRsGWC5hg== 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:03 +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: [3MzsP443aPKRU7sOUvB0ov+3tTkw0Ag1] 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-9-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: 975b1ec9-4b5c-4a2a-9525-08dc3375f672 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kJE4V31h7OsrCNk7OHGl0/QmDMkEe024b+/YK8Srw1bTwHW5WEbxqxWWjXxq5ovHHyQH01sKTUAWJ8wdLlaMKm2c34z45vUSIbQTQiQgSdyygnVsdHQrBg3MYAXhwNFh16sHY9VfKguBZYcgZy6Hx6bXAZWRyIjqflqK4nR5poK1VV6YOIbzNJRiMfXT0q/3oqTpqiKzQikjPGsb1tktuUibeIZTCxUqBkTQBX/KfLpXB/LSFMjWXWM5gz2n2t/AzN1sUu4d4Mqb445KSZsDBRsiSWJtBFZuaWB4qLUuc0b0fjHSbw60hCqIwoZzcNy17IwKXTtM7CeDwmb2zAm0Pnp5DoPIjDM8dAjZ3YttpVaAEZRQZKL/yeRP9PavHR6AZaGftvYpUyAuVjMSRQzT66glU3TUfYLGXkoImZsM+Hjoaq+EX2mTpizB3LsAHWWPUchW3gMzpmV2nqxiRpOI1otutFwzI5eFVWwfpXychSSOxl9B5ZxhJGx2HhH2m1I9twwOdv93U2isjE9cKmlbRdL3jJfFQ/GRgh+AnIYvPU1vPY/NUuOlJomu1INJ48zMJ1FXbn6c4uNrdF77pgvkRvhLTicXd03y4NTeW7zIE5CNOlY3sHkKLSuPPI7OCPI3 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: XHm7zD/xdDIQvViLs/UqosR9EteJ40tBtptDDVGFtcfvo4BCKTmFmPGLDUnZUF7A1NACZAp+bt9R+ytJKGd81FGkYHRcloDze3y1VbDNgyQoO/MUvqmVYDut1vdmt2A4+vG0G8vro1XOZU0oU9sUHzGoH4Om2f/aaUiHeZDtqkhbfYKyLzijD0GUtxamuHSfFphfef7HxukiJHvdFRuy94oTwY12xrA9RlVB9XiQqVTs316NwVn/ZJAg9+4W+NmhEr8j8D16DhdR1ht0m5ghI65pOFY4dPSBusPza4b6BNq/f/YVauYNz3kz5l5G23gc4+fLq3KgM723ctRAwHISz48seiKOTMOd3Rs1LpwBK0L0Wa+EPsFP3gjJoadAQuN7R7wpspqgl+5XL/2+QrR/bHwP0DS2n8Vvk/TyrZGxj8P86w2Qb48R1IxNfhccXLM6hpQA3U0adNi4ckSrZ0GLW3GjtvEHxD6aPrYfKKlzIHoWy8hYKH5CpdKD+Hi76kaQXTzHO+5wzd9wTYDkODrHZg7levvSStPJw/1VTf1z5K0hDJEPfF3J3aYV8HM7301tW4/NblBgxIGnR9E/JJqo9u7j+zLLf0NVC0cfdcv3AAoL8TKccDRwujHzj7pz8zuAuk8s6cCZJ9yeElphITzxr6x0ZjgqXik6ARLVru0e2hz6bBnr18MWzXuxd/scPMqZyCRiAbPKmC6jzD2r4K2dhlyS5rjYN2q7WeylYp00CHbkjK7CV+XcE0mKYoB9tNlLsYXQjpnQUBrSNm687C9RA9TVq6RB9KqRc3ZBwnRNAVW0GQEa3+/hi0OzKFZMa9rMWVVuQ/GUDxTXW5uxTZInULiXwta3pgHIUpoVj9ViM6coZRulkwHxujgwHvUAWpwYPCJZKR9yDeXHNz2QIB9sXfI5SoY5b0+VDW3LsCT+GIvXJlhe+/MRM2mXODbzGgClb51qGqYqnajeHGSPPaM+kZ8YN3p8rU+2M7vKyh+xX+hmQM1WLgh2TJNAT8pFSAevCf8Mm0tVf+A0IyUMTJ614z5W240LNsPkkTONH27T8sd1QbdFpHwV8UvVvJhOwJOzOI24+P4uQ3ha1mnhZgSmtJ7EjLJPqlDmLuX1ess9PFOuTEoQ5Vw+QYCzlUTcKkXSfEFICQReNUrUS4dnoeK22aq+RxseOrDUaLkhl70HUgO1rq8TLOFPk6VMPtRKDibxJARkeAAr/CdGlFTIC8S5dDlUWEHnGsXlq93KqVcvgCKEUoUfUqDuvTn0Hqop727rWFpFRiR6Qc3ns2yS8CQ7tw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 975b1ec9-4b5c-4a2a-9525-08dc3375f672 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.1116 (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 08/11] avcodec/vvcdec: fix dual tree for skipped transform tree/unit 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: AKgqSeEiR7ns fix IBC_E_Tencent_1.bit --- libavcodec/vvc/vvc_ctu.c | 24 +++++++++++++++--------- libavcodec/vvc/vvc_intra.c | 6 ++++-- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/libavcodec/vvc/vvc_ctu.c b/libavcodec/vvc/vvc_ctu.c index 00476c81e4..2cf6e82f26 100644 --- a/libavcodec/vvc/vvc_ctu.c +++ b/libavcodec/vvc/vvc_ctu.c @@ -481,8 +481,9 @@ static int hls_transform_tree(VVCLocalContext *lc, int x0, int y0,int tu_width, static int skipped_transform_tree(VVCLocalContext *lc, int x0, int y0,int tu_width, int tu_height) { - VVCFrameContext *fc = lc->fc; - const VVCSPS *sps = fc->ps.sps; + VVCFrameContext *fc = lc->fc; + const CodingUnit *cu = lc->cu; + const VVCSPS *sps = fc->ps.sps; if (tu_width > sps->max_tb_size_y || tu_height > sps->max_tb_size_y) { const int ver_split_first = tu_width > sps->max_tb_size_y && tu_width > tu_height; @@ -501,11 +502,14 @@ static int skipped_transform_tree(VVCLocalContext *lc, int x0, int y0,int tu_wid else SKIPPED_TRANSFORM_TREE(x0, y0 + trafo_height); } else { - TransformUnit *tu = add_tu(fc, lc->cu, x0, y0, tu_width, tu_height); - const int c_end = sps->r->sps_chroma_format_idc ? VVC_MAX_SAMPLE_ARRAYS : (LUMA + 1); + TransformUnit *tu = add_tu(fc, lc->cu, x0, y0, tu_width, tu_height); + const int has_chroma = sps->r->sps_chroma_format_idc && cu->tree_type != DUAL_TREE_LUMA; + const int c_start = cu->tree_type == DUAL_TREE_CHROMA ? CB : LUMA; + const int c_end = has_chroma ? VVC_MAX_SAMPLE_ARRAYS : CB; + if (!tu) return AVERROR_INVALIDDATA; - for (int i = LUMA; i < c_end; i++) { + for (int i = c_start; i < c_end; i++) { TransformBlock *tb = add_tb(tu, lc, x0, y0, tu_width >> sps->hshift[i], tu_height >> sps->vshift[i], i); if (i != CR) set_tb_pos(fc, tb); @@ -1125,11 +1129,14 @@ static void sbt_info(VVCLocalContext *lc, const VVCSPS *sps) static int skipped_transform_tree_unit(VVCLocalContext *lc) { - const CodingUnit *cu = lc->cu; + const H266RawSPS *rsps = lc->fc->ps.sps->r; + const CodingUnit *cu = lc->cu; int ret; - set_qp_y(lc, cu->x0, cu->y0, 0); - set_qp_c(lc); + if (cu->tree_type != DUAL_TREE_CHROMA) + set_qp_y(lc, cu->x0, cu->y0, 0); + if (rsps->sps_chroma_format_idc && cu->tree_type != DUAL_TREE_LUMA) + set_qp_c(lc); ret = skipped_transform_tree(lc, cu->x0, cu->y0, cu->cb_width, cu->cb_height); if (ret < 0) return ret; @@ -1815,7 +1822,6 @@ static int hls_coding_unit(VVCLocalContext *lc, int x0, int y0, int cb_width, in if (ret < 0) return ret; } else { - av_assert0(tree_type == SINGLE_TREE); ret = skipped_transform_tree_unit(lc); if (ret < 0) return ret; diff --git a/libavcodec/vvc/vvc_intra.c b/libavcodec/vvc/vvc_intra.c index 214ad38c8c..fb001d6713 100644 --- a/libavcodec/vvc/vvc_intra.c +++ b/libavcodec/vvc/vvc_intra.c @@ -602,8 +602,10 @@ int ff_vvc_reconstruct(VVCLocalContext *lc, const int rs, const int rx, const in if (cu->coded_flag) { ret = reconstruct(lc); } else { - add_reconstructed_area(lc, LUMA, cu->x0, cu->y0, cu->cb_width, cu->cb_height); - add_reconstructed_area(lc, CHROMA, cu->x0, cu->y0, cu->cb_width, cu->cb_height); + if (cu->tree_type != DUAL_TREE_CHROMA) + add_reconstructed_area(lc, LUMA, cu->x0, cu->y0, cu->cb_width, cu->cb_height); + if (sps->r->sps_chroma_format_idc && cu->tree_type != DUAL_TREE_LUMA) + add_reconstructed_area(lc, CHROMA, cu->x0, cu->y0, cu->cb_width, cu->cb_height); } cu = cu->next; } 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]; From patchwork Thu Feb 22 07:14: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: 46430 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:26a3:b0:19e:cdac:8cce with SMTP id h35csp173835pze; Wed, 21 Feb 2024 23:15:44 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCXt8D6DouyF6vH0RFUx1FMHcoQLVP7EbByYhEY2KjcsQA6CqxD8AxTR26yEjEGUjZ9lv8tpK52IphCDUw0Gb+DZJCpTGEUjxbWsNw== X-Google-Smtp-Source: AGHT+IHQmvfAd3BVl950hVAO6GRkWXokGeKwy6HyIAxGf5dA8MlwASQvy+l0mtjo6lri+X9+Zvu/ X-Received: by 2002:a17:906:f903:b0:a3f:302f:7753 with SMTP id lc3-20020a170906f90300b00a3f302f7753mr3657095ejb.21.1708586144400; Wed, 21 Feb 2024 23:15:44 -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 e12-20020a1709062c0c00b00a3bb4587162si4412646ejh.515.2024.02.21.23.15.43; Wed, 21 Feb 2024 23:15:44 -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=V1Bt6wMX; 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 3D45768D212; Thu, 22 Feb 2024 09:15:11 +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 B03B168D18B for ; Thu, 22 Feb 2024 09:15:03 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=K0tYIDj8m3bi+rM809XMR+JbJSKKXWDyiOnQlv+6ztcHV/IB1DrJAfXY2+X0cndZropRo1u907UKYtT7SOz6hb5JC+VwR63BuMS2facb1Bc1vAhkTMDk+o66Lo8/AiE/0XkBdJzG2FyFg8kTH8gKzXrCLA8lnIGF+wmnH7WDea+Y8LWzQIB96jEZCDlg6Rf09PtTWOiqDkCRwz9zrsQ20PgVxjbfRUMMS84SnEfO3En+u2Yu6kQRc5N6UNZPcD9jEhmNR0VoPs1u/FsTKkU/MBDnxaujMW+wkR8MM0RS8tYTQ077IATMVyVgkygsYB1US0dOGwpKTWNPvhu/tp4Ukw== 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=xMHuSmaBcDiECzk8nDYris857jZHXEEbMlYxvz6pyyA=; b=FXQGPCeKKClwT6QnLLpyfarsjyZ/wkTf+ztVIVyGqg1ckHC94Wa/3XFJL4xcAz1GSaSgfqh2cb174HZ3gYiPJU7FJPHGCDDIc10Jgu+f5zW4ew3rm03WqjpdPhJ4QcXrsgem0X1lmw+vFYptxKaBG0kvNzNrMvsMtZWF8saHNiKKUczuikFr+1fly3rtgvdwAtzUl61zwNCCmURXofPVuDI5qHYRjZZp43jh9IDWQpZ5Y7rkqok3d+zbQVWJLmr8y0e7XsnMc+9F5OeS62VNhPxyY5ew+qBBCPm1rC5hPMUtyimAQbKQ3rWZr6sET1zt3kdMLUZwkk0/p08tj497bw== 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=xMHuSmaBcDiECzk8nDYris857jZHXEEbMlYxvz6pyyA=; b=V1Bt6wMX+ETF3Dtes4ZikKCs0ITRHidjJqK9AxoLHzCxN9YNoDv87jivvU7yXwkRjW54rTfWAoo9LWlIw8W8CkXtSq7UHxtClJWQdtjgQypD3A2tkOwyeA3nKklpEEu+S8SSzFkvzh0QyzMFt8EpuGfjHIzZuJL646yQ62yF4sBLcXX1HYWsV7rXIKJa8B08GipCxmCZenG16JnCQE6iu0cefyi6FHCLXXdyacgXzLkNhcTlAmqdJqwO4uQ+RLRFDnnpcVUkH3H2S0pwus280PCIyINBVmxxDpaOM9lqjun5AOMmjawEuuu8lLwvXVX1Zp8XGiplTHWLMPoPt8Q/Fw== 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:53 +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:53 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Thu, 22 Feb 2024 15:14:05 +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: [N+DPUqKOgtirNQwuwXej523jIt14wjKa] 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-11-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: fcfb1c2d-fa23-4346-c753-08dc3375f774 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: si+75R8o1S+WfD0UN6QGfuo9Qq7HmVEWFF9sqbNvUeEIygt5pu3kK0c6mQ9txTQu2xkxhJr1nb1b7w0UCH+4MOSk8TQ4JrtHiUomTEg79BjCdCvXPI+aOc2HtT72ZrNQOqHOx4qSWi2CoaTlGUz8Yjv8Gj+kpavXK9IiwWuUIf7U+GLCfZDqyTHmP+bgQDVqjWQg48P0wEId2rIHJM3b/x4zEuudNCMkvabCNfSmJGH+FYVchzxE91vVJq3gO0T765fhLjFHxFMXtqJ8vG5Xnj9GbTPHNzHj7vmpPOVd0XglxgqfwzDfjI/FsEAssh2FFhSyHFeQfby+ZpPftCQdAXl6Q9V8AKseiiOiudIJ5UTbTGgh2qv6K8EJZfZlFKRz5ch99IkCmxMgNa05wkLn1h/PiYKGWUgmjW/uCkht6j1TKYt8ovLKfGtTa4PiBfiwFx6IaJk7OKVSFg6zCBYecjilbB6oO2EmY1vAnE2L50A5HuSVTZO/aupLMjwBjhAPpKloYyworpBRWkQdUYqfUxaDfO4GFckjpUrJLDMXMZStxA2eBYOBonnv3hZBebYhUYQiQdfyCYl3tyEVa7ucHN79LPgLraryt9ji05fODGEh3oxIBX/uAnmi+/HxZweQ X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: axAeiuaGKB1FpDbtvE0NFqeqRPGVGK6OnacgvjIAdyFaHBOA9vhlNM4iTpfhvdfJmoMMCuWGbw6pDHRoysHY/verylKctyH3i4FG2U420QNhekUizdgwVHmgQlJwk7xe/r0WBl72fCWzzLibxyLL7UQ8kXGQ8Y/H0qkCzgVqHj/uGhvUgR+p6/hRJeB9t+hQ7xgP3DvWcE4ZXv+AgHXZW9136kLv+fpw2ZwiVneTPD15Pl19JWCB7qmk7NC0qBtSJHEkdtakABJ15fd09DAYP5V5JDeXvPwACim5/spIhoqp4qPL13euYo61ACXFHU0RuztK3UkVI/KCTfemnW3XVsGH96utY8wif+rnZ/++2k3Mmv2MhIls1jH2H6qwHobdFbl12cX6JTCEAIb9rILCSucJ+7X9KYKHL1aCCoBEz7enOxTpAZtvkgalHO+JVdJT2cO0WImJ4NuenzsUX3t1ol1ylX5uWtCfpPjVQEGPKLu0C61oQDSiQi4ZMbxC7V0xSvNeRHGYSRJghRW0OiJL6ZrtvyotnpOvkoOupGRRqViBlsJCIXCe/rOf5yLj2+SC+xosh07asUYRAqjnujwdQGluOlx5H/tHLfTRqTN0CA+OU1yIXbz/lsgJv4WsMvcnmlswtmEZgMFvGgVzvu63rWl5GKvwdtFuBhSZ612E8dqWripj1pYoa1CU5nHtjEGBmBSkq2alwEDN/LQEaA7HAVCZCiPHzycQkPsZH2X5u1ml2/VwraelWRerxcIwoHmGmv5MoUgQbxjuCMRtDFwvEuKiuiZCrTUCn792xR564h4YfCKxheWVyb0iNeauRvbs0sV3HozUAD2MpaESl9+6uBM1+58kABKHDb2QjKPv2Q7ONPcUiayH2/TH0pQUNFTKQRZbgNrFsCCyJegcCInmlXPfHy14GzsuzO9aLpOh6fQklQk9IMisnhTgLpG26nSKTBHXFfko376H3Z1zFmAS7ln1mvaTFZYcid2obM1UYwxC57zMElsunryWt1rWmVqB7xSUkK5GdcYo0sFeRDIp0zF3vGydoiye87c0zrac2grIfSIieJIIEVpcmnP0CTqr6KDXTzzPwV0nAfLpFs1UD8xFkH4ZBR/I1NooJAYsomaS3iu2icHItmkri/X+jA4WLwC6FxXVYI6EWcB/CYw5QlLZ/HILtAy+b5XbAMNxOcMqFoA5R2/Cnuq2BoQftp8zQGAgr6M+FyvB3i2jX6DpkXJkhcB1TFOAonIn27Sl/ERk0A27f5QMzmr8Q3MC67DHFEVpMftDJ+VPhU3Gcflg6g== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fcfb1c2d-fa23-4346-c753-08dc3375f774 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:53.8067 (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 10/11] avcodec/vvcdec: add Intra Block Copy parser 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 , Wu Jianhua Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: rwnx++91j9Vu From: Wu Jianhua Co-authored-by: Nuo Mi --- libavcodec/vvc/vvc_ctu.c | 76 +++++++++++++++++++++----- libavcodec/vvc/vvc_ctu.h | 1 + libavcodec/vvc/vvc_mvs.c | 113 ++++++++++++++++++++++++++++++++++++++- libavcodec/vvc/vvc_mvs.h | 2 + 4 files changed, 177 insertions(+), 15 deletions(-) diff --git a/libavcodec/vvc/vvc_ctu.c b/libavcodec/vvc/vvc_ctu.c index 2cf6e82f26..75b9e73ae3 100644 --- a/libavcodec/vvc/vvc_ctu.c +++ b/libavcodec/vvc/vvc_ctu.c @@ -1444,6 +1444,22 @@ static void merge_data_block(VVCLocalContext *lc) } } +static void merge_data_ibc(VVCLocalContext *lc) +{ + const VVCFrameContext* fc = lc->fc; + const VVCSPS* sps = fc->ps.sps; + MotionInfo *mi = &lc->cu->pu.mi; + int merge_idx = 0; + + mi->pred_flag = PF_IBC; + + if (sps->max_num_ibc_merge_cand > 1) + merge_idx = ff_vvc_merge_idx(lc); + + ff_vvc_luma_mv_merge_ibc(lc, merge_idx, &mi->mv[L0][0]); + ff_vvc_store_mv(lc, mi); +} + static int hls_merge_data(VVCLocalContext *lc) { const VVCFrameContext *fc = lc->fc; @@ -1454,8 +1470,7 @@ static int hls_merge_data(VVCLocalContext *lc) pu->merge_gpm_flag = 0; pu->mi.num_sb_x = pu->mi.num_sb_y = 1; if (cu->pred_mode == MODE_IBC) { - avpriv_report_missing_feature(fc->log_ctx, "Intra Block Copy"); - return AVERROR_PATCHWELCOME; + merge_data_ibc(lc); } else { if (ph->max_num_subblock_merge_cand > 0 && cu->cb_width >= 8 && cu->cb_height >= 8) pu->merge_subblock_flag = ff_vvc_merge_subblock_flag(lc); @@ -1571,6 +1586,33 @@ static void mvp_add_difference(MotionInfo *mi, const int num_cp_mv, } } +static int mvp_data_ibc(VVCLocalContext *lc) +{ + const VVCFrameContext *fc = lc->fc; + const CodingUnit *cu = lc->cu; + const PredictionUnit *pu = &lc->cu->pu; + const VVCSPS *sps = fc->ps.sps; + MotionInfo *mi = &lc->cu->pu.mi; + int mvp_l0_flag = 0; + int amvr_shift = 4; + Mv *mv = &mi->mv[L0][0]; + + mi->pred_flag = PF_IBC; + mi->num_sb_x = 1; + mi->num_sb_y = 1; + + hls_mvd_coding(lc, mv); + if (sps->max_num_ibc_merge_cand > 1) + mvp_l0_flag = ff_vvc_mvp_lx_flag(lc); + if (sps->r->sps_amvr_enabled_flag && (mv->x || mv->y)) + amvr_shift = ff_vvc_amvr_shift(lc, pu->inter_affine_flag, cu->pred_mode, 1); + + ff_vvc_mvp_ibc(lc, mvp_l0_flag, amvr_shift, mv); + ff_vvc_store_mv(lc, mi); + + return 0; +} + static int mvp_data(VVCLocalContext *lc) { const VVCFrameContext *fc = lc->fc; @@ -1691,17 +1733,24 @@ static void refine_regular_subblock(const VVCLocalContext *lc) } } -static void fill_dmvr_info(const VVCFrameContext *fc, const int x0, const int y0, - const int width, const int height) +static void fill_dmvr_info(const VVCLocalContext *lc) { - const VVCPPS *pps = fc->ps.pps; - const int w = width >> MIN_PU_LOG2; + const VVCFrameContext *fc = lc->fc; + const CodingUnit *cu = lc->cu; + + if (cu->pred_mode == MODE_IBC) { + ff_vvc_set_intra_mvf(lc, 1); + } else { + const VVCPPS *pps = fc->ps.pps; + const int w = cu->cb_width >> MIN_PU_LOG2; + + for (int y = cu->y0 >> MIN_PU_LOG2; y < (cu->y0 + cu->cb_height) >> MIN_PU_LOG2; y++) { + const int idx = pps->min_pu_width * y + (cu->x0 >> MIN_PU_LOG2); + const MvField *mvf = fc->tab.mvf + idx; + MvField *dmvr_mvf = fc->ref->tab_dmvr_mvf + idx; - for (int y = y0 >> MIN_PU_LOG2; y < (y0 + height) >> MIN_PU_LOG2; y++) { - const int idx = pps->min_pu_width * y + (x0 >> MIN_PU_LOG2); - const MvField *mvf = fc->tab.mvf + idx; - MvField *dmvr_mvf = fc->ref->tab_dmvr_mvf + idx; - memcpy(dmvr_mvf, mvf, sizeof(MvField) * w); + memcpy(dmvr_mvf, mvf, sizeof(MvField) * w); + } } } @@ -1719,8 +1768,7 @@ static int inter_data(VVCLocalContext *lc) if (pu->general_merge_flag) { hls_merge_data(lc); } else if (cu->pred_mode == MODE_IBC){ - avpriv_report_missing_feature(lc->fc->log_ctx, "Intra Block Copy"); - return AVERROR_PATCHWELCOME; + ret = mvp_data_ibc(lc); } else { ret = mvp_data(lc); } @@ -1734,7 +1782,7 @@ static int inter_data(VVCLocalContext *lc) } if (!pu->dmvr_flag) - fill_dmvr_info(lc->fc, cu->x0, cu->y0, cu->cb_width, cu->cb_height); + fill_dmvr_info(lc); return ret; } diff --git a/libavcodec/vvc/vvc_ctu.h b/libavcodec/vvc/vvc_ctu.h index 5ed331a831..8020e184c5 100644 --- a/libavcodec/vvc/vvc_ctu.h +++ b/libavcodec/vvc/vvc_ctu.h @@ -217,6 +217,7 @@ typedef enum PredFlag { PF_L0 = 0x1, PF_L1 = 0x2, PF_BI = 0x3, + PF_IBC = PF_L0 | 0x4, } PredFlag; typedef enum IntraPredMode { diff --git a/libavcodec/vvc/vvc_mvs.c b/libavcodec/vvc/vvc_mvs.c index 56e4009741..6398fd3571 100644 --- a/libavcodec/vvc/vvc_mvs.c +++ b/libavcodec/vvc/vvc_mvs.c @@ -589,6 +589,11 @@ static void init_neighbour_context(NeighbourContext *ctx, const VVCLocalContext ctx->lc = lc; } +static av_always_inline PredMode pred_flag_to_mode(PredFlag pred) +{ + return pred == PF_IBC ? MODE_IBC : (pred == PF_INTRA ? MODE_INTRA : MODE_INTER); +} + static int check_available(Neighbour *n, const VVCLocalContext *lc, const int check_mer) { const VVCFrameContext *fc = lc->fc; @@ -600,7 +605,7 @@ static int check_available(Neighbour *n, const VVCLocalContext *lc, const int ch if (!n->checked) { 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; + n->available &= cu->pred_mode == pred_flag_to_mode(TAB_MVF(n->x, n->y).pred_flag); if (check_mer) n->available &= !is_same_mer(fc, n->x, n->y, cu->x0, cu->y0); } @@ -1589,6 +1594,112 @@ void ff_vvc_mvp(VVCLocalContext *lc, const int *mvp_lx_flag, const int amvr_shif mvp(lc, mvp_lx_flag[L1], L1, mi->ref_idx, amvr_shift, &mi->mv[L1][0]); } +static int ibc_spatial_candidates(const VVCLocalContext *lc, const int merge_idx, Mv *const cand_list, int *nb_merge_cand) +{ + const CodingUnit *cu = lc->cu; + const VVCFrameContext *fc = lc->fc; + const int min_pu_width = fc->ps.pps->min_pu_width; + const MvField *tab_mvf = fc->tab.mvf; + const int is_gt4by4 = (cu->cb_width * cu->cb_height) > 16; + int num_cands = 0; + + NeighbourContext nctx; + Neighbour *a1 = &nctx.neighbours[A1]; + Neighbour *b1 = &nctx.neighbours[B1]; + + if (!is_gt4by4) { + *nb_merge_cand = 0; + return 0; + } + + init_neighbour_context(&nctx, lc); + + if (check_available(a1, lc, 1)) { + cand_list[num_cands++] = TAB_MVF(a1->x, a1->y).mv[L0]; + if (num_cands > merge_idx) + return 1; + } + if (check_available(b1, lc, 1)) { + const MvField *mvf = &TAB_MVF(b1->x, b1->y); + if (!num_cands || !IS_SAME_MV(&cand_list[0], mvf->mv)) { + cand_list[num_cands++] = mvf->mv[L0]; + if (num_cands > merge_idx) + return 1; + } + } + + *nb_merge_cand = num_cands; + return 0; +} + +static int ibc_history_candidates(const VVCLocalContext *lc, + const int merge_idx, Mv *cand_list, int *nb_merge_cand) +{ + const CodingUnit *cu = lc->cu; + const EntryPoint *ep = lc->ep; + const int is_gt4by4 = (cu->cb_width * cu->cb_height) > 16; + int num_cands = *nb_merge_cand; + + for (int i = 1; i <= ep->num_hmvp_ibc; i++) { + int same_motion = 0; + const MvField *mvf = &ep->hmvp_ibc[ep->num_hmvp_ibc - i]; + for (int j = 0; j < *nb_merge_cand; j++) { + same_motion = is_gt4by4 && i == 1 && IS_SAME_MV(&mvf->mv[L0], &cand_list[j]); + if (same_motion) + break; + } + if (!same_motion) { + cand_list[num_cands++] = mvf->mv[L0]; + if (num_cands > merge_idx) + return 1; + } + } + + *nb_merge_cand = num_cands; + return 0; +} + +#define MV_BITS 18 +#define IBC_SHIFT(v) ((v) >= (1 << (MV_BITS - 1)) ? ((v) - (1 << MV_BITS)) : (v)) + +static inline void ibc_add_mvp(Mv *mv, Mv *mvp, const int amvr_shift) +{ + ff_vvc_round_mv(mv, amvr_shift, 0); + ff_vvc_round_mv(mvp, amvr_shift, amvr_shift); + mv->x = IBC_SHIFT(mv->x + mvp->x); + mv->y = IBC_SHIFT(mv->y + mvp->y); +} + +static void ibc_merge_candidates(VVCLocalContext *lc, const int merge_idx, Mv *mv) +{ + const CodingUnit *cu = lc->cu; + LOCAL_ALIGNED_8(Mv, cand_list, [MRG_MAX_NUM_CANDS]); + int nb_cands; + + ff_vvc_set_neighbour_available(lc, cu->x0, cu->y0, cu->cb_width, cu->cb_height); + if (ibc_spatial_candidates(lc, merge_idx, cand_list, &nb_cands) || + ibc_history_candidates(lc, merge_idx, cand_list, &nb_cands)) { + *mv = cand_list[merge_idx]; + return; + } + + //zero mv + memset(mv, 0, sizeof(*mv)); +} + +void ff_vvc_mvp_ibc(VVCLocalContext *lc, const int mvp_l0_flag, const int amvr_shift, Mv *mv) +{ + LOCAL_ALIGNED_8(Mv, mvp, [1]); + + ibc_merge_candidates(lc, mvp_l0_flag, mvp); + ibc_add_mvp(mv, mvp, amvr_shift); +} + +void ff_vvc_luma_mv_merge_ibc(VVCLocalContext *lc, const int merge_idx, Mv *mv) +{ + ibc_merge_candidates(lc, merge_idx, mv); +} + static int affine_mvp_constructed_cp(NeighbourContext *ctx, const NeighbourIdx *neighbour, const int num_neighbour, const int lx, const int8_t ref_idx, const int amvr_shift, Mv *cp) diff --git a/libavcodec/vvc/vvc_mvs.h b/libavcodec/vvc/vvc_mvs.h index 358de5ec45..a546a324c2 100644 --- a/libavcodec/vvc/vvc_mvs.h +++ b/libavcodec/vvc/vvc_mvs.h @@ -30,7 +30,9 @@ void ff_vvc_clip_mv(Mv *mv); void ff_vvc_mv_scale(Mv *dst, const Mv *src, int td, int tb); void ff_vvc_luma_mv_merge_mode(VVCLocalContext *lc, int merge_idx, int ciip_flag, MvField *mv); void ff_vvc_luma_mv_merge_gpm(VVCLocalContext *lc, const int merge_gpm_idx[2], MvField *mv); +void ff_vvc_luma_mv_merge_ibc(VVCLocalContext *lc, int merge_idx, Mv *mv); void ff_vvc_mvp(VVCLocalContext *lc, const int *mvp_lx_flag, const int amvr_shift, MotionInfo *mi); +void ff_vvc_mvp_ibc(VVCLocalContext *lc, int mvp_l0_flag, int amvr_shift, Mv *mv); void ff_vvc_sb_mv_merge_mode(VVCLocalContext *lc, int merge_subblock_idx, PredictionUnit *pu); void ff_vvc_affine_mvp(VVCLocalContext *lc, const int *mvp_lx_flag, const int amvr_shift, MotionInfo* mi); void ff_vvc_store_sb_mvs(const VVCLocalContext *lc, PredictionUnit *pu); From patchwork Thu Feb 22 07:14:06 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 46434 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:26a3:b0:19e:cdac:8cce with SMTP id h35csp173891pze; Wed, 21 Feb 2024 23:15:53 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCVJ8CUHIhhlbHuUJ2i8EZw7iRv3aQewZg+Sq+3YLbOarZPkJES78ab3IZPAMKxH0tXnJUBwb+9Traeb+KqnIdYeoCMmpa7zbGQVwg== X-Google-Smtp-Source: AGHT+IEqUZdId/wj2vHjS4AnkA6IUsDkGfjvQ7IGAiegWPFjH1k3eH2Y0n+cyeeASghAAR0fTNLL X-Received: by 2002:aa7:da53:0:b0:565:21f1:4f27 with SMTP id w19-20020aa7da53000000b0056521f14f27mr1417294eds.23.1708586153492; Wed, 21 Feb 2024 23:15:53 -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 p12-20020aa7cc8c000000b0056069a0bd04si5171145edt.190.2024.02.21.23.15.53; Wed, 21 Feb 2024 23:15:53 -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=bbU0e1Fq; 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 5154E68D22C; Thu, 22 Feb 2024 09:15:12 +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 8DF7368D18B for ; Thu, 22 Feb 2024 09:15:09 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hN7Ru2bGMAdDAHVQz/FELKgbXM8+HIwcb6XME9yCzHMnW7gtdtcRJ/GNtigu1NWlr9Fh3h7rIbQR1kJUr9ooWxzIFwL5MLH736gwPaL44UThuKeKYxU0G4jh3eZ7oPaK3CNf5kHbkJGjwb2LyXUjme6IH2FT8teaBlZX2kKtU0q2QhQ/uFBr8hEMOtyIdQTrqkUck+quhX+2bYAqy9EtwtWgUCaZXcahcWpvzEA2gROE4O7BmQcrt0CQcnJXoGNPyR1/ttbec47MhrtN1DA+8Ik41WrbqIx5UJKCqu5kSN8Npcue+9oKuCjMtAhJSsumDZimxTQcC65xVVlWL22g1Q== 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=N7fWMebf3fo9NcjrgaJeRXnV1TM3EKbFaW8fr9tsb1Q=; b=brgcH65Ji2r7rV0GpObxNQNvETtUwsA9ujbeDVA8jL1rjFoMhA0OvX39AaJkgNCDS4804J4ZXQvqf4dLzMAMlg+Jztj9SCGMuj2DDy3CTlfnWSK0QDGaPs2nrHyRp2opic7WUst2zebI+nslJRJXxrxQw7tnME3uNNx8OyCtw/OG0QvusVe+4il8HmlLonkeOK1EgaffS6d1T8INwZvD5J8juS54UHAVyXBetfaCYsw4rNOrkswCvsmZFLIXIioVLsnowJ7o2lNk1tQPJzsYWUSxXn68PPEQlVcnnrI4tbjOr1FLBy7pLNlwzfLDX6kz4ZAiD7x0MwWiS6yhTyWMCA== 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=N7fWMebf3fo9NcjrgaJeRXnV1TM3EKbFaW8fr9tsb1Q=; b=bbU0e1Fqhj/dTRJXySoUDOFdzXDdGhq+HeiAkwC858IIOF38a/h503gdAnyto8kBxoMnZSmQc2x1XBXfzEIApqStGHwDE3VBo9HWzcUNojR2h32GKQrX7Zzrn6ftVpXXDE+/N4rgnGk3MeWxjiNJATl4SxA7LH7CCsQeThdJF/tFdvSNZC1uj4jMWQTJnWw6icKrcIq13dS5jGWABtBuUEHITRYRU4vk3GL5ISPS3wYcjRHxXeYFH083z1NbJfKpUuo4W+0/C4g7EdvOKi7Pq7P9quHPlRMoWpV4qgz8MaMn7Xe16DQ9iGS80BytompvSBrEezxNuD7Las3lfSYqQQ== 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:54 +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:54 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Thu, 22 Feb 2024 15:14:06 +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: [wC/U/se3exR1lcRfBb+B24WBubgqf/k8] 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-12-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: 0c3303a4-6def-46ad-5460-08dc3375f801 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: c+LoFkADCS/Ul2HP9T5/KZ47JtbrF+3xCqx7Qc7m9fa32c9n6Cij8ogXaiMc0ylkTsLQS/3FMQlZxiN/aMy7bkJw3hIZM7p/OACr6lZOxdmSOE3K0RVABjLkbYM0YkgEIvIr0AoRhRDp828mpVlFRPmeCXqEK9YqMIk1BURJ17CoFzuIOObCD/7nvy0WLXv4BfmUGTyenRjBu94BoOnP+xxtILpEHZQ4noP+rqDNBE65bDWJeYhwTRBijcbbNqguUHPyYtWJBXlY74kNK3WjDuOiUWeU+pPk1F1gTKqwJWFp2hY69VPAeeJeAX491vkk570phTknIrCUk+/ohHfj4Wu2L56SxuMlP/YQsM8kZlQg/BSbLDZlRLniQYqnYWvdl6mkXbFykXF/NCAl9ZmN/30GHufnk2Se85ImyWdS74JgGm60hwqjwwX1o5Tnncjh+T5oQEqfqTF9hU4OAYXyHp7Yt1kyEcQLobU2vBFp/5aj8Ol0SNaFEwdxYjWqDo0H00hBVuwZDhwbBinUdWGDDIN0iJBHZkWm1tRS2FZGRrGtXZuWgsM2s8VMTNBVh8oBa4hq4UpAG8GoKeRZlxbe/lbUim0XNknk92GshFfx8JBR78vHZanCIxsvszlPSIxk X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: V58Spss4iXDL0GmbRQlR9nlfToBGOybQCPZB/o11MTa2qn6BOQECkStN4CoISZJIj3G+kQz8JndTcs40LtJOoQq/zGgeyYWfzzbzo7dsxg3u1pL/47vhoxnPnMvhwOWxTee1jeom1TiSHOTZ7HPJvO0I20LbG+txbKpKj5R82pKdPYiwEADUXQGVsfJcxi9OKrpPrWHNrnOq9GGwEViUpBMglbq7oHtAg6KrGfR/ah2duWw3/g746ld88GFZbTrFHKPNXgbcnCYTatQJzMi30sGtMnW+t3HfN1q3AUAzgtwm85xrvGYUFbZxJUqkRPY7s4ICTL7/5LDJaq/4MuuC9jrJ8wHzpgc5EcaeV+mUrh2E2i8HF/4aCuGjlZafWzEud5El07P+RPie/fPxkx+WHpPqSRhZV7HXsSWl2lx7DBft4NJaZeuBAZw08DtbHQnVfAYB25VQo2AcH4oQvxO+iMymGUo7Y8EKo3G2PeyBkEja+3Y8EbffMd4LSJ5eoPht+aagUGfRtFz6FGUGwJo5ItSNvZ8MIQBxJebPxXeZ2fENiDe+KTKHlcGwbOY27PM/a89w31JrN0jXeHKfV8UpojofbAU0/eXPcFpbRgGV361zgmpQcRHD/W5d7gkUeMVs/3Ci6fWuyDYWuAdtVvpLM+n3y5LBobOORZW0nf6OGDMQgCBuNxUgLr4BqnU8peZlo1Ei9PUWvDNPKzbCuObza1Wj4KGemM48xxACEfz9hAMkiO0hqbUb0In7Bv/Ht2qCwkE1ck1S/Jaln65Xl5xuyCG77VCRL5260owL1+LWyyMq5zzzHL/9dXHijmQdEAA9wtAFny/7+jzVKfzbmi3ofh6Pd5IWZ7xqQmChwCcqAOCd/UvBverlmQVoOxRwAZXILbWXTUQWCP4wGaWUL0Ab1fqr45VsmVRyhOj/cymbH/uaorMz+qt4VhTNUqmratihGRAdmets6EXUli/BMWGQIT7AnWi+Jhn36RcqHshvB9dwuCE2X8WW62aO6MsYqnXCRcQBfYvJnWhusBoqC85fqLjcfcW+9jKV1+bwM2AiydGpaUrglOVARwsecZE/Pk6Hq3CejP/94pnQLCk8hw+0eO4OfvKVbkZVLngZ7BO/U8nuqIj1gXGd3pnLYeTG4DqYpPTop4a06f25c+2RC1R4qOLq9heCkW4QNJnhS8Vj15ZLeg/NGE3ZY9p0ntWKKuOSpOTh2RGQ4goWjC+n4h+LSFe6CmNVWwjzCFdaTgQ9Bj6Idw7/V6eJvSrUPPVJ40oa/MgmD5NdAg+AT9BMZmPO9Q== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0c3303a4-6def-46ad-5460-08dc3375f801 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:54.7191 (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 11/11] avcodec/vvcdec: add Intra Block Copy decoder 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 , Wu Jianhua Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: pXhwqXavS+uw From: Wu Jianhua Introduction at https://ieeexplore.ieee.org/document/9408666 passed files: 10b444_A_Kwai_3.bit 10b444_B_Kwai_3.bit CodingToolsSets_D_Tencent_2.bit IBC_A_Tencent_2.bit IBC_B_Tencent_2.bit IBC_C_Tencent_2.bit IBC_D_Tencent_2.bit IBC_E_Tencent_1.bit LOSSLESS_B_HHI_3.bit Signed-off-by: Wu Jianhua Signed-off-by: Nuo Mi --- libavcodec/vvc/vvc_intra.c | 81 ++++++++++++++++++++++++++++++++++++++ libavcodec/vvc/vvcdec.c | 25 ++++++++++++ libavcodec/vvc/vvcdec.h | 3 ++ 3 files changed, 109 insertions(+) diff --git a/libavcodec/vvc/vvc_intra.c b/libavcodec/vvc/vvc_intra.c index fb001d6713..58dd492478 100644 --- a/libavcodec/vvc/vvc_intra.c +++ b/libavcodec/vvc/vvc_intra.c @@ -20,11 +20,13 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include "libavutil/frame.h" +#include "libavutil/imgutils.h" #include "vvc_data.h" #include "vvc_inter.h" #include "vvc_intra.h" #include "vvc_itx_1d.h" +#include "vvc_mvs.h" static int is_cclm(enum IntraPredMode mode) { @@ -580,6 +582,81 @@ static int reconstruct(VVCLocalContext *lc) return 0; } +#define POS(c_idx, x, y) \ + &fc->frame->data[c_idx][((y) >> fc->ps.sps->vshift[c_idx]) * fc->frame->linesize[c_idx] + \ + (((x) >> fc->ps.sps->hshift[c_idx]) << fc->ps.sps->pixel_shift)] + +#define IBC_POS(c_idx, x, y) \ + (fc->tab.ibc_vir_buf[c_idx] + \ + (x << ps) + (y + ((cu->y0 & ~(sps->ctb_size_y - 1)) >> vs)) * ibc_stride) +#define IBC_X(x) ((x) & ((fc->tab.sz.ibc_buffer_width >> hs) - 1)) +#define IBC_Y(y) ((y) & ((1 << sps->ctb_log2_size_y >> vs) - 1)) + +static void intra_block_copy(const VVCLocalContext *lc, const int c_idx) +{ + const CodingUnit *cu = lc->cu; + const PredictionUnit *pu = &cu->pu; + const VVCFrameContext *fc = lc->fc; + const VVCSPS *sps = fc->ps.sps; + const Mv *bv = &pu->mi.mv[L0][0]; + const int hs = sps->hshift[c_idx]; + const int vs = sps->vshift[c_idx]; + const int ps = sps->pixel_shift; + const int ref_x = IBC_X((cu->x0 >> hs) + (bv->x >> (4 + hs))); + const int ref_y = IBC_Y((cu->y0 >> vs) + (bv->y >> (4 + vs))); + const int w = cu->cb_width >> hs; + const int h = cu->cb_height >> vs; + const int ibc_buf_width = fc->tab.sz.ibc_buffer_width >> hs; ///< IbcBufWidthY and IbcBufWidthC + const int rw = FFMIN(w, ibc_buf_width - ref_x); + const int ibc_stride = ibc_buf_width << ps; + const int dst_stride = fc->frame->linesize[c_idx]; + const uint8_t *ibc_buf = IBC_POS(c_idx, ref_x, ref_y); + uint8_t *dst = POS(c_idx, cu->x0, cu->y0); + + av_image_copy_plane(dst, dst_stride, ibc_buf, ibc_stride, rw << ps, h); + + if (w > rw) { + //wrap around, left part + ibc_buf = IBC_POS(c_idx, 0, ref_y); + dst += rw << ps; + av_image_copy_plane(dst, dst_stride, ibc_buf, ibc_stride, (w - rw) << ps, h); + } +} + +static void vvc_predict_ibc(const VVCLocalContext *lc) +{ + const H266RawSPS *rsps = lc->fc->ps.sps->r; + + intra_block_copy(lc, LUMA); + if (lc->cu->tree_type == SINGLE_TREE && rsps->sps_chroma_format_idc) { + intra_block_copy(lc, CB); + intra_block_copy(lc, CR); + } +} + +static void ibc_fill_vir_buf(const VVCLocalContext *lc, const CodingUnit *cu) +{ + const VVCFrameContext *fc = lc->fc; + const VVCSPS *sps = fc->ps.sps; + const int has_chroma = sps->r->sps_chroma_format_idc && cu->tree_type != DUAL_TREE_LUMA; + const int start = cu->tree_type == DUAL_TREE_CHROMA; + const int end = has_chroma ? CR : LUMA; + + for (int c_idx = start; c_idx <= end; c_idx++) { + const int hs = sps->hshift[c_idx]; + const int vs = sps->vshift[c_idx]; + const int ps = sps->pixel_shift; + const int x = IBC_X(cu->x0 >> hs); + const int y = IBC_Y(cu->y0 >> vs); + const int src_stride = fc->frame->linesize[c_idx]; + const int ibc_stride = fc->tab.sz.ibc_buffer_width >> hs << ps; + const uint8_t *src = POS(c_idx, cu->x0, cu->y0); + uint8_t *ibc_buf = IBC_POS(c_idx, x, y); + + av_image_copy_plane(ibc_buf, ibc_stride, src, src_stride, cu->cb_width >> hs << ps , cu->cb_height >> vs); + } +} + int ff_vvc_reconstruct(VVCLocalContext *lc, const int rs, const int rx, const int ry) { const VVCFrameContext *fc = lc->fc; @@ -599,6 +676,8 @@ int ff_vvc_reconstruct(VVCLocalContext *lc, const int rs, const int rx, const in if (cu->ciip_flag) ff_vvc_predict_ciip(lc); + else if (cu->pred_mode == MODE_IBC) + vvc_predict_ibc(lc); if (cu->coded_flag) { ret = reconstruct(lc); } else { @@ -607,6 +686,8 @@ int ff_vvc_reconstruct(VVCLocalContext *lc, const int rs, const int rx, const in if (sps->r->sps_chroma_format_idc && cu->tree_type != DUAL_TREE_LUMA) add_reconstructed_area(lc, CHROMA, cu->x0, cu->y0, cu->cb_width, cu->cb_height); } + if (sps->r->sps_ibc_enabled_flag) + ibc_fill_vir_buf(lc, cu); cu = cu->next; } ff_vvc_ctu_free_cus(ctu); diff --git a/libavcodec/vvc/vvcdec.c b/libavcodec/vvc/vvcdec.c index e88e746de4..caba1b28c6 100644 --- a/libavcodec/vvc/vvcdec.c +++ b/libavcodec/vvc/vvcdec.c @@ -262,6 +262,30 @@ static void ispmf_tl_init(TabList *l, VVCFrameContext *fc) TL_ADD(ispmf, w64 * h64); } +static void ibc_tl_init(TabList *l, VVCFrameContext *fc) +{ + const VVCSPS *sps = fc->ps.sps; + const VVCPPS *pps = fc->ps.pps; + const int ctu_height = pps ? pps->ctb_height : 0; + const int ctu_size = sps ? sps->ctb_size_y : 0; + const int ps = sps ? sps->pixel_shift : 0; + const int chroma_idc = sps ? sps->r->sps_chroma_format_idc : 0; + const int changed = fc->tab.sz.chroma_format_idc != chroma_idc || + fc->tab.sz.ctu_height != ctu_height || + fc->tab.sz.ctu_size != ctu_size || + fc->tab.sz.pixel_shift != ps; + + fc->tab.sz.ibc_buffer_width = ctu_size ? 2 * MAX_CTU_SIZE * MAX_CTU_SIZE / ctu_size : 0; + + tl_init(l, 0, changed); + + for (int i = LUMA; i < VVC_MAX_SAMPLE_ARRAYS; i++) { + const int hs = sps ? sps->hshift[i] : 0; + const int vs = sps ? sps->vshift[i] : 0; + TL_ADD(ibc_vir_buf[i], fc->tab.sz.ibc_buffer_width * ctu_size * ctu_height << ps >> hs >> vs); + } +} + typedef void (*tl_init_fn)(TabList *l, VVCFrameContext *fc); static int frame_context_for_each_tl(VVCFrameContext *fc, int (*unary_fn)(TabList *l)) @@ -276,6 +300,7 @@ static int frame_context_for_each_tl(VVCFrameContext *fc, int (*unary_fn)(TabLis pixel_buffer_nz_tl_init, msm_tl_init, ispmf_tl_init, + ibc_tl_init, }; for (int i = 0; i < FF_ARRAY_ELEMS(init); i++) { diff --git a/libavcodec/vvc/vvcdec.h b/libavcodec/vvc/vvcdec.h index 4f7ef3a32f..aa3d715524 100644 --- a/libavcodec/vvc/vvcdec.h +++ b/libavcodec/vvc/vvcdec.h @@ -170,6 +170,8 @@ typedef struct VVCFrameContext { int *coeffs; struct CTU *ctus; + uint8_t *ibc_vir_buf[VVC_MAX_SAMPLE_ARRAYS]; ///< IbcVirBuf[] + //used in arrays_init only struct { int ctu_count; @@ -185,6 +187,7 @@ typedef struct VVCFrameContext { int pixel_shift; int bs_width; int bs_height; + int ibc_buffer_width; ///< IbcBufWidth } sz; } tab; } VVCFrameContext;