From patchwork Sun May 19 13:27:32 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 49012 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a48:b0:1af:fc2d:ff5a with SMTP id zu8csp3923815pzb; Sun, 19 May 2024 06:39:48 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCU9U4BHKd7uXQtUL6y6k6PMVmooRrgafzOG9oOnzJmoarMmQQl1Z1CpZPojtSxTXQVfhjANCICC6AK0RjzXR7HX+hRZlZKH5G2/og== X-Google-Smtp-Source: AGHT+IGiT5y4vGcjYnp0EeF9Afxgl242lkTZkXWvlxsoh/Ne4o9CcGqYBmaiqlvH9h+eE36PqZXx X-Received: by 2002:a50:8d11:0:b0:574:ebf6:e37b with SMTP id 4fb4d7f45d1cf-5752b4748e1mr3177782a12.12.1716125988400; Sun, 19 May 2024 06:39:48 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 4fb4d7f45d1cf-575097ac16csi4197992a12.568.2024.05.19.06.39.48; Sun, 19 May 2024 06:39:48 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b="D0FqCG/s"; 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 D854468CB87; Sun, 19 May 2024 16:39:44 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from SINPR02CU002.outbound.protection.outlook.com (mail-southeastasiaazolkn19011003.outbound.protection.outlook.com [52.103.65.3]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1879868C66F for ; Sun, 19 May 2024 16:39:38 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ngocb5VkIw5Quk/SXqQDWn7BWZbcfZAEsTr58Om85fPA3sUCCkG1ED9O66pCdEY30N/g7tArm6JExZPHYbz2ZXnU9k+pObGRUwyQysXFYvt21H4uDyu1pSR/c/FjcsT8J1C0ktIDDG95txQPcnrZraqhJn10WxbDTlY6mAYThBkLL1d+htZEQmlsOFnQO723iiGdGCgn+zPrkuWgM/5tHGrCakhdSIVqYKvyOEIMBNEll5VSjqJP468OFQ08RewLjIbSrqNCDEh7YYezzA9cWcWyijRm7x4xehzJLTIO6Q+gGsSjbeiEjC/SVY1aasY7GEww9BeurTI3dmUvw1YYHg== 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=A19NTFh6Jx07rjGymp2Zq52Jgv+6MCEZM4AZ0aatbwQ=; b=llkG5NsFkHOMtnv9OEB0UdHBwnYrnFXGdLslsBX4/c/dulZGBns/PCZldxxx9tRLddtq5k+TWT3npAbcRo4s5lwJMqL1lzItcGkBHmBBmnylD4bLmpLuPuYO+xbCjcWg1qUNfYt3mWPMRjHeQzvc6MT/VhHNcZ82vpJiBdF6/2uxsvXcUgDYA/iJFwnGg/FugToJXaNfloGG5IROk0a3JXP831KHZhh41kmaFZIVgIYeIfe5fuDMGmTnpTtumqj4TkuWz9hFsSa07uzKpwo0QKdKxEoizk6xrCjAGwmARK3qkxZOB2SDoRjA1+9ZC4r6RLH3Yf8S82CVEEvUPwSkVw== 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=A19NTFh6Jx07rjGymp2Zq52Jgv+6MCEZM4AZ0aatbwQ=; b=D0FqCG/sXlYqbw/L4wIg3HEQZjSh+U+Nn9w6Ip4MMGAkzeUfK0vM270c3A3bw+85osCOqjDTg0mn2Ce2B1ZMbk6Apsy/eflqOh7PxHtX35ycyKEgis0VkTUuWH627Fy9uxQTBt6lLTGCJpCeTTmG44D5TdJHek8kPjDmHY5067pzfd2hcWLBgfBkDrhUaw7agDoZwjyLUF1VoF+VgX62TmdJXaUZroWwkSzZx+jGE6v0xfm85qlscJSC9R5aCIUIBLo0jkcMBmrfLS60/X8zmRukNUNCYY3w13jd+vLVld50OR+b4wABYr/zOE01VksoOwYQed3ope0L9xHIIdYgsA== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by TYUPR06MB6098.apcprd06.prod.outlook.com (2603:1096:400:358::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.34; Sun, 19 May 2024 13:39:33 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca%4]) with mapi id 15.20.7587.030; Sun, 19 May 2024 13:39:33 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sun, 19 May 2024 21:27:32 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 X-TMN: [9f5ylc9mchxJs4oJYCTJYSkkeR6sTHm+] X-ClientProxiedBy: TYCP301CA0017.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:381::8) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240519132749.790832-1-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|TYUPR06MB6098:EE_ X-MS-Office365-Filtering-Correlation-Id: d3171631-90c8-4493-c72d-08dc78091d8d X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|440099019|3412199016|1710799017; X-Microsoft-Antispam-Message-Info: Vo6xH6XlXW3bTxkGzXjLDwpTO76ZNX3Vlb738v3CckGqzM7DKEsrn75GSTDMUSyc0wMB7GWV7eQevBcyc+m05uaFso/jSqcldmb3EGq2kUeNLdlnCL2UrFMGwpVR16LBMD9bMmYy7K8fPds/ppXObvden1wxAupqP7qu4v70Mnk0AiKb/5vTdmhuKMVLOYq7owxYMGAq/h1fXFEQwnfJGdHdd3gvfsBSQlDT3/AgzLuV3fyWroOFPHJCqXJNavgDaL7AOlhPqehCPZyVtbcxLAwR0TD33uqg3bdFMkeX2ZmLKGCdPkALjQKfE4tFT6ggUJ416YkIAWNIiPimmaTApC9p+fhQh8Xrp9F7JShv7BaWViEHRU948Hl/3walgFm38eq+eF7uDayYbqGkSR/G1XwcBNWju0A/1brwYGmu5KQLXZNNTEsEDljFR3oQ9IsxAE57e3RO2lABpcs10uyELdIbsMOodcKZrUy2UvQj33h8YC9KnkESzeigxFRaxg1XdbeM9M0/RfC3KBvNCeUjWzkdMNID4ggpqIIdWSYGQwqzoBGdOBLMif9F8m9013uJF2pyAhHtXYz7BaOkCLXqxxEVTIPlNM5l17Z+Ylid0pBKb5LhgApG1ZzC0xIbh0Su X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: jzD19mlmqgLnqJCcGhiCH2YM/nH+jDv5Krv40iW2NupCVrPWjCgeIeJXGfqit5Fri1t7fhjz6oX3daTpGACCpJDDjDv07vqkY3Cu/4wkXCTAVn+0/p/KT2dTyj27HFxnFipJEF2O8RfiEI/FTZqNYTrwBYPpXKN0qGctV22IkKYh82oIacQk6eGZ7DF11XS+l/qSwVDcuMLSwwtmzZ92mEfXGWnKZ5FCXxofzHwwtMXv9ZXhRKGZVSefL7g89HV4uTWeOXc8yoEtyrJ9n+g/rV3kg36yKYqDK3wXL3aegHOBi1UeDdrrJbaOoa1IXfUg5dkJJthmc4wLfXmRi/sgXlQUAoZwX4FUbBLRbRSXQKmd5GZCLGNJ80JL4AP0DKLrqbfE8ahhXzpUJoFd+MTYf5MAz+lm+1KLVKvZIyx3XtU7a4hIchl+7QJMMq7+a/hkBih9dDD/yNxm8yFFrnjYSBc8EbrgEwsIFUHabBFK3Fy4hKxG72nwUsvF6c6LzQPx3A2eumeoxcmdSeNRiL5Yc8jUzQl3b0RsDHHhW/Jhi8NbEOCanIVKLKjC1b7lOUKOz2/IOjyFJOqwCcY7Z5nCLJdK1vxq7j3pfnwTOUT5bLsbQyBO2ZIiKkokVCICT47nDLwbCJi9i/glf4h7Oi42E3X8RIrWcWes/KIBQFT57bf2GvcyA2AXyAW5+MMJK38dsmiH1y7b1v12kOiAYKA3zFB5FwrX5ql+d6lV2+DcJAs6Ex/tHmwx6XGtr2HqEiJLrSujyWWcTqSr8pPkFC+D7WBFnU/m1+qOniVUUMYsg13mgcY/x1AeeiCmcmW68uM5TGTuqpcNf/Ri5OWwxhKyd5OjHoFyReNyevNe6TeYMvzqAIz18tjg9NWVnLeek2VgwzzYrtGtWgYWHeyMxyHGavttHM2S41kiw8X9uVuTA1084M6L4yUIVirf7ph7KfkfKZfZb9jgO1K9LE1ntW0TyHIkGmWb30Bk/RwKehrqLfa8XAZNpNs1a0ThcGtsEii9qGkGp7weFluo2VMzsSoqCc5ytCcNJmDllEwFhLlVUT2o4meyyykvofH+PPgclGioWUPQxj1DozYdEs7DtEcVJbiyHgPkIzltGN/7FKXQG8C5SQ5+1/3Ld/Ji3/VP6mwasQ2H8LFt0n129kIVHQxD1Z5UyHUqrA79kPJfcaQ/2kYJphuUeVAtl2qVN9HjI5AykxxLTGgxgHdyca9dsuJqvPdPneVbv8B8HC8Tkh+plE/xMI+syzBgOs2/yaGC38ucnbMMY6rk8Z0LF/ihxDGpYg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d3171631-90c8-4493-c72d-08dc78091d8d X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2024 13:39:32.9468 (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: TYUPR06MB6098 Subject: [FFmpeg-devel] [PATCH 01/18] avcodec/vvcdec: misc, inter, use is_chroma instead of is_luma 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: 3AJT3OrCpfhr --- libavcodec/vvc/inter.c | 50 +++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/libavcodec/vvc/inter.c b/libavcodec/vvc/inter.c index 4a8d1d866a..3f0718cb5a 100644 --- a/libavcodec/vvc/inter.c +++ b/libavcodec/vvc/inter.c @@ -31,33 +31,33 @@ static const int bcw_w_lut[] = {4, 5, 3, 10, -2}; static void subpic_offset(int *x_off, int *y_off, - const VVCSPS *sps, const VVCPPS *pps, const int subpic_idx, const int is_luma) + const VVCSPS *sps, const VVCPPS *pps, const int subpic_idx, const int is_chroma) { - *x_off -= pps->subpic_x[subpic_idx] >> sps->hshift[!is_luma]; - *y_off -= pps->subpic_y[subpic_idx] >> sps->vshift[!is_luma]; + *x_off -= pps->subpic_x[subpic_idx] >> sps->hshift[is_chroma]; + *y_off -= pps->subpic_y[subpic_idx] >> sps->vshift[is_chroma]; } static void subpic_width_height(int *pic_width, int *pic_height, - const VVCSPS *sps, const VVCPPS *pps, const int subpic_idx, const int is_luma) + const VVCSPS *sps, const VVCPPS *pps, const int subpic_idx, const int is_chroma) { - *pic_width = pps->subpic_width[subpic_idx] >> sps->hshift[!is_luma]; - *pic_height = pps->subpic_height[subpic_idx] >> sps->vshift[!is_luma]; + *pic_width = pps->subpic_width[subpic_idx] >> sps->hshift[is_chroma]; + *pic_height = pps->subpic_height[subpic_idx] >> sps->vshift[is_chroma]; } static int emulated_edge(const VVCLocalContext *lc, uint8_t *dst, const uint8_t **src, ptrdiff_t *src_stride, - int x_off, int y_off, const int block_w, const int block_h, const int is_luma) + int x_off, int y_off, const int block_w, const int block_h, const int is_chroma) { const VVCFrameContext *fc = lc->fc; const VVCSPS *sps = fc->ps.sps; const VVCPPS *pps = fc->ps.pps; const int subpic_idx = lc->sc->sh.r->curr_subpic_idx; - const int extra_before = is_luma ? LUMA_EXTRA_BEFORE : CHROMA_EXTRA_BEFORE; - const int extra_after = is_luma ? LUMA_EXTRA_AFTER : CHROMA_EXTRA_AFTER; - const int extra = is_luma ? LUMA_EXTRA : CHROMA_EXTRA; + const int extra_before = is_chroma ? CHROMA_EXTRA_BEFORE : LUMA_EXTRA_BEFORE; + const int extra_after = is_chroma ? CHROMA_EXTRA_AFTER : LUMA_EXTRA_AFTER; + const int extra = is_chroma ? CHROMA_EXTRA : LUMA_EXTRA; int pic_width, pic_height; - subpic_offset(&x_off, &y_off, sps, pps, subpic_idx, is_luma); - subpic_width_height(&pic_width, &pic_height, sps, pps, subpic_idx, is_luma); + subpic_offset(&x_off, &y_off, sps, pps, subpic_idx, is_chroma); + subpic_width_height(&pic_width, &pic_height, sps, pps, subpic_idx, is_chroma); if (x_off < extra_before || y_off < extra_before || x_off >= pic_width - block_w - extra_after || @@ -78,20 +78,20 @@ static int emulated_edge(const VVCLocalContext *lc, uint8_t *dst, const uint8_t } static void emulated_edge_dmvr(const VVCLocalContext *lc, uint8_t *dst, const uint8_t **src, ptrdiff_t *src_stride, - int x_sb, int y_sb, int x_off, int y_off, const int block_w, const int block_h, const int is_luma) + int x_sb, int y_sb, int x_off, int y_off, const int block_w, const int block_h, const int is_chroma) { const VVCFrameContext *fc = lc->fc; const VVCSPS *sps = fc->ps.sps; const VVCPPS *pps = fc->ps.pps; const int subpic_idx = lc->sc->sh.r->curr_subpic_idx; - const int extra_before = is_luma ? LUMA_EXTRA_BEFORE : CHROMA_EXTRA_BEFORE; - const int extra_after = is_luma ? LUMA_EXTRA_AFTER : CHROMA_EXTRA_AFTER; - const int extra = is_luma ? LUMA_EXTRA : CHROMA_EXTRA; + const int extra_before = is_chroma ? CHROMA_EXTRA_BEFORE : LUMA_EXTRA_BEFORE; + const int extra_after = is_chroma ? CHROMA_EXTRA_AFTER : LUMA_EXTRA_AFTER; + const int extra = is_chroma ? CHROMA_EXTRA : LUMA_EXTRA; int pic_width, pic_height; - subpic_offset(&x_off, &y_off, sps, pps, subpic_idx, is_luma); - subpic_offset(&x_sb, &y_sb, sps, pps, subpic_idx, is_luma); - subpic_width_height(&pic_width, &pic_height, sps, pps, subpic_idx, is_luma); + subpic_offset(&x_off, &y_off, sps, pps, subpic_idx, is_chroma); + subpic_offset(&x_sb, &y_sb, sps, pps, subpic_idx, is_chroma); + subpic_width_height(&pic_width, &pic_height, sps, pps, subpic_idx, is_chroma); if (x_off < extra_before || y_off < extra_before || x_off >= pic_width - block_w - extra_after || @@ -124,8 +124,8 @@ static void emulated_edge_bilinear(const VVCLocalContext *lc, uint8_t *dst, cons const int subpic_idx = lc->sc->sh.r->curr_subpic_idx; int pic_width, pic_height; - subpic_offset(&x_off, &y_off, sps, pps, subpic_idx, 1); - subpic_width_height(&pic_width, &pic_height, sps, pps, subpic_idx, 1); + subpic_offset(&x_off, &y_off, sps, pps, subpic_idx, 0); + subpic_width_height(&pic_width, &pic_height, sps, pps, subpic_idx, 0); if (x_off < BILINEAR_EXTRA_BEFORE || y_off < BILINEAR_EXTRA_BEFORE || x_off >= pic_width - block_w - BILINEAR_EXTRA_AFTER || @@ -144,16 +144,16 @@ static void emulated_edge_bilinear(const VVCLocalContext *lc, uint8_t *dst, cons #define EMULATED_EDGE_LUMA(dst, src, src_stride, x_off, y_off) \ - emulated_edge(lc, dst, src, src_stride, x_off, y_off, block_w, block_h, 1) + emulated_edge(lc, dst, src, src_stride, x_off, y_off, block_w, block_h, 0) #define EMULATED_EDGE_CHROMA(dst, src, src_stride, x_off, y_off) \ - emulated_edge(lc, dst, src, src_stride, x_off, y_off, block_w, block_h, 0) + emulated_edge(lc, dst, src, src_stride, x_off, y_off, block_w, block_h, 1) #define EMULATED_EDGE_DMVR_LUMA(dst, src, src_stride, x_sb, y_sb, x_off, y_off) \ - emulated_edge_dmvr(lc, dst, src, src_stride, x_sb, y_sb, x_off, y_off, block_w, block_h, 1) + emulated_edge_dmvr(lc, dst, src, src_stride, x_sb, y_sb, x_off, y_off, block_w, block_h, 0) #define EMULATED_EDGE_DMVR_CHROMA(dst, src, src_stride, x_sb, y_sb, x_off, y_off) \ - emulated_edge_dmvr(lc, dst, src, src_stride, x_sb, y_sb, x_off, y_off, block_w, block_h, 0) + emulated_edge_dmvr(lc, dst, src, src_stride, x_sb, y_sb, x_off, y_off, block_w, block_h, 1) #define EMULATED_EDGE_BILINEAR(dst, src, src_stride, x_off, y_off) \ emulated_edge_bilinear(lc, dst, src, src_stride, x_off, y_off, pred_w, pred_h) From patchwork Sun May 19 13:27:33 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 49014 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a48:b0:1af:fc2d:ff5a with SMTP id zu8csp3923920pzb; Sun, 19 May 2024 06:40:08 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUczNA4t6QPE6I/Hlcwtawr2z8uS8aVRZONMlDaNcbrw/ihVruL/3z5L1NPbd++0IhN3z928YFzbgPgdKdjRV02tbfJjBEMOvSBbg== X-Google-Smtp-Source: AGHT+IEj9v8Xg4XBeRrL1srHsjlVRc7z0f9umUma0Oy8L1EHnYchO9ADFbk1yOdt6rgUyBX7hb4y X-Received: by 2002:a05:6512:3ca9:b0:523:8bce:3db7 with SMTP id 2adb3069b0e04-5238bce3e92mr11353083e87.68.1716126008227; Sun, 19 May 2024 06:40:08 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 2adb3069b0e04-523a6a0edbbsi3218316e87.128.2024.05.19.06.40.07; Sun, 19 May 2024 06:40:08 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=RYS3LGXR; 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 78E4F68CF50; Sun, 19 May 2024 16:39:52 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from SINPR02CU002.outbound.protection.outlook.com (mail-southeastasiaazolkn19011003.outbound.protection.outlook.com [52.103.65.3]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 75A0068C978 for ; Sun, 19 May 2024 16:39:44 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YtwdaLskZbvU3WapdYThajSZUb8Nx4sMcqkZq2KVasakA1QafVLTHXQ1mlBgoc8kr4sR24S40VKzw2/MDYq/jGxl2Fwfdh+PKkX7vb9TiqB1+JISNoSE8rQFx1PyCOkefL6LT5z2x9K6SastJJuQYxR7fCFHPSTF7rv3IxTnNbDLzIuiz3au0t6QDZapVuz6ny64MtkAklEEIuvT5/ZQKIoTWRlZIhShkQX/Bt2+5B5XA5kIPsMmwFrFF9cg6oY+YUdyJ4mNRHX7khtrJaV42BafWVIhX97mYA/7lfTnP9je6Hfb2poehzkUPfSlgG/gUX48ThRs17xYGHI9G+g2Kw== 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=ujysOU+nreSUbZ8ZI5awMuHpefWu/dGPavlyxPxqMCg=; b=T40P9uDKUc+abjelIb2j/R9FtiAFUmOMpaz3i8i/YvkX0Pc1qNPcBr/5nbCe/dBZarABWvON+OBNTfAjdCJUX0LalyvzQwpl91DQR6KuUzPlmKDMS6lAttkGtveEZ2y1yUV6ZKkFBAXVv1+3Pu0rFNxo2ZLTTmNx5gc1G54J3HNbi/GA5/vYtNAyB2CsvEKYdhp0pqLf+MwIUwh7uGkPAvm+Dnk03tN9sD/QoPBGPnmrvMIG8W5OMpawq/3d9S0tXx/y257Fm6G7glPiV6VNqFyAiUo+fYheUsTvKa9ftAikxx1isdaE0fQn5do7ukMZMZgWiXeaqwmokYTpNZJW2A== 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=ujysOU+nreSUbZ8ZI5awMuHpefWu/dGPavlyxPxqMCg=; b=RYS3LGXRLhKxCT9qqQ3E7n4FwscKYmpJV76NsttinVTwVw+088gntWfBku3Z4RMjvIA06h8dUwCjb48SPgDifVyBYofnn3VQIE3aFT8b9VC50qqywSvv8jMxBnE4TPhLdsH9iXH+lj8zNFFHYMS1LJkjJrLd8TbNgAQKNrpd9907NL6nqMgyuyz1Q0r9aqeUcbyK7IrKsEJOPmMFrO9tg+i4K5zq7FtN1EN+gf/EXYEMRgZ+CvDIZnrFbhMIHODtdF3adR17KQCjyCggIRysRFfUWrCzVWGoK0m2FfOWlZ4933sQgiinY0SWvwVRxufmCMNXCfEfT2goCnnHCKITUg== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by TYUPR06MB6098.apcprd06.prod.outlook.com (2603:1096:400:358::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.34; Sun, 19 May 2024 13:39:33 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca%4]) with mapi id 15.20.7587.030; Sun, 19 May 2024 13:39:33 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sun, 19 May 2024 21:27:33 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240519132749.790832-1-nuomi2021@gmail.com> References: <20240519132749.790832-1-nuomi2021@gmail.com> X-TMN: [pLVghEMlIsN/XOsP3rVVeekYkoV8SFDu] X-ClientProxiedBy: TYCP301CA0017.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:381::8) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240519132749.790832-2-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|TYUPR06MB6098:EE_ X-MS-Office365-Filtering-Correlation-Id: 2a656994-ca51-433a-851f-08dc78091e28 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|440099019|3412199016|1710799017; X-Microsoft-Antispam-Message-Info: lP+/EVnx38ibHOg6Dn+2VP+6LmgO00KYB9eN/F+RQx9OsMBv9gKlBwpSdg3XRMwx/GNpp7aokccDQTujaAuSRT3qEtIKpQFPI3JqD2o7RB0sbuKVlqVlQDCNzdGiJ/04QIZSwKput/QRPm7PI3fis1gK0+q5WYLIRrlF9YhseMww5DiCR7QbYG8Ss2Ro4yAyWjrMdWEHb25VsdnHkUw1j3l/ysBMl+rCL3MO1ewavyCkRzuscQ5MVFsms1N5qX8A3W2mTce5Hj/l5R+GA45QOTqC7WpaLwTmtGBHS5lsh8JD69yrH8sx0tdKY9u/P6kw6nbsJQFSWfaFIqpNLMltk0ThiuLzXkRRhlD6TCt2A9x4Q5eY6rhnEYWLIFD09l9AHfDbXXWXpbT9TWJW8gbInRM90br5SoCE5cMvLhRDaDCZ4fhnFlBhjDOqyfOTtjK/NWl5LuFM1/E+4ng1EEaJgHB7pnsy2xS+tHzNcaGihV9q0vabjXFNHkJAJVuJD4obDW4IUcVfqAwz/QIE8d/Gv2sPOrzegH4RqPwcX88/Rze9UQcAPHb5AKNGL4zonELAZ9YDB4fB3o4C7QESbXOOChcaa52KHKQ9AORPGd27plFHxUt+WPbmrSn50DpMFL1p X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 6LXV0swcKOwJVrd2t+mhGWXkbyD351HmEEWm6Xb6NCo4JSoGSpS5fRoW4JCoGeWBlfCtPgK7cNNS+uSi5FqYKr/rFbFGXH2acKfC1blxkao7VgIBG2Zku73nD1CQoZixR0JmDA2fqM6oT1w/vPECcgrj+fRR50I0SDh59IVBKyLLownITvAcdjMgAZ1RjZtKn5Kn3I4LgkREyCm/rsxIBi47D9rLSpUGzMEHL6TNCgrs1ufYn5o0mV81UiG5LXs9LIr4ed9wFzqhpa3ZMkrxzuA/899YbYDE3O0N+GhgCPPzI4lQpUn4I3uNQU1nZWbC/u9SM9bQN8zw/psjigR0wFBlSCgG0Gzqni/hn07ZKzJXuHNualV6GnL2FJE1VnSM9MSXuVUpXnJ3oy/6arWiHpn05eC6Yb0YgVIFUCm5P8A6CbzwjClM3q4Fr5VxNa3qxALuGopIEEArHT5wvgvkd8ztQzMlduOuCIOtHF49tdZG9mX5yujT/naIOXhoEdn1LNWrEOERfa9RwS60S2xcUDbMpfQeIyDOMKYD8vFe0HnGSxzEFKgZ3JO/uHSa+2XsfUE8MjNXPGDtG4FcbD18KfboIxaasaOh3/xOPM/EPUFzqVPhoFsaxwu0QiKXGlWP1iQp1ipg72l/q6Rh4wG18CD/qmxI1LFRoGasBR/8t0D8SNOpQzvoAXEf1XR6+YJ91l/tUBAt1MY476uvb6jlfVUFvrHmGLpFq++4KBx0zRfmz2c9hDTu87SkSLlg2pjOwaezqS5ckv0/iPqIVSJGt5Hq2poMLGPLrJArluB4nQnGofFw7efAm8OnzY6SwcqcZVmW6BVObnqHqAjQOXRJB13sPUcx72FuwPlPF4aDKXisezBqJDJLQUxLs6J0gCU4MFw7gPUsJ5dbUSRskTZcYKxWBnTAqc8UkGaHXE+R4gJ+gDQgKz+R+ikQdwpG40fDiOZZXMh0Jble12609SE5JBfn2tuxs6qZZBbgT5oC3gDNUwopIstCvgfvKnjNI0XLaEfDilKNmqxl66M+clwvixlNHMG1LPMzTeQfWx5rWrMCV5FIhMRzyNSFGBJipgxbmQ35MY3XN6z2dgZO8ympIs7cSfTRpi+iyso+lwvDaKzVRFcINBL7bnjQwaFFzG8cSiUxVSAcOqqe2s3kPBRVqwR+q8B5ZB/z/2kfGcMwo7AWzJbAfAFc/ury4wPfr9+bgNWQ+IsEj4JVnTHEFOoqc7TJEWWF4RAUduNC1nEL4FqvEhDEm4ONP4TmyVmA96jD1HuV46VcC5KFQKhg/7GWTg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2a656994-ca51-433a-851f-08dc78091e28 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2024 13:39:33.8114 (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: TYUPR06MB6098 Subject: [FFmpeg-devel] [PATCH 02/18] avcodec/vvcdec: refact, unify {luma, chroma}_mc to mc 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: iTBNYC7TRE4E --- libavcodec/vvc/inter.c | 47 +++++++++++++----------------------------- 1 file changed, 14 insertions(+), 33 deletions(-) diff --git a/libavcodec/vvc/inter.c b/libavcodec/vvc/inter.c index 3f0718cb5a..8657541eaf 100644 --- a/libavcodec/vvc/inter.c +++ b/libavcodec/vvc/inter.c @@ -142,6 +142,8 @@ static void emulated_edge_bilinear(const VVCLocalContext *lc, uint8_t *dst, cons } } +#define MC_EMULATED_EDGE(dst, src, src_stride, x_off, y_off) \ + emulated_edge(lc, dst, src, src_stride, x_off, y_off, block_w, block_h, is_chroma) #define EMULATED_EDGE_LUMA(dst, src, src_stride, x_off, y_off) \ emulated_edge(lc, dst, src, src_stride, x_off, y_off, block_w, block_h, 0) @@ -209,47 +211,29 @@ static int derive_weight(int *denom, int *w0, int *w1, int *o0, int *o1, return 1; } -static void luma_mc(VVCLocalContext *lc, int16_t *dst, const AVFrame *ref, const Mv *mv, - int x_off, int y_off, const int block_w, const int block_h) -{ - const VVCFrameContext *fc = lc->fc; - const uint8_t *src = ref->data[0]; - ptrdiff_t src_stride = ref->linesize[0]; - const int idx = av_log2(block_w) - 1; - const int mx = mv->x & 0xf; - const int my = mv->y & 0xf; - const int8_t *hf = ff_vvc_inter_luma_filters[0][mx]; - const int8_t *vf = ff_vvc_inter_luma_filters[0][my]; - - x_off += mv->x >> 4; - y_off += mv->y >> 4; - src += y_off * src_stride + (x_off * (1 << fc->ps.sps->pixel_shift)); - - EMULATED_EDGE_LUMA(lc->edge_emu_buffer, &src, &src_stride, x_off, y_off); - - fc->vvcdsp.inter.put[LUMA][idx][!!my][!!mx](dst, src, src_stride, block_h, hf, vf, block_w); -} +#define INTER_FILTER(t, frac) (is_chroma ? ff_vvc_inter_chroma_filters[t][frac] : ff_vvc_inter_luma_filters[t][frac]) -static void chroma_mc(VVCLocalContext *lc, int16_t *dst, const AVFrame *ref, const Mv *mv, +static void mc(VVCLocalContext *lc, int16_t *dst, const AVFrame *ref, const Mv *mv, int x_off, int y_off, const int block_w, const int block_h, const int c_idx) { const VVCFrameContext *fc = lc->fc; const uint8_t *src = ref->data[c_idx]; ptrdiff_t src_stride = ref->linesize[c_idx]; - int hs = fc->ps.sps->hshift[c_idx]; - int vs = fc->ps.sps->vshift[c_idx]; + const int is_chroma = !!c_idx; + const int hs = fc->ps.sps->hshift[c_idx]; + const int vs = fc->ps.sps->vshift[c_idx]; const int idx = av_log2(block_w) - 1; - const intptr_t mx = av_mod_uintp2(mv->x, 4 + hs) << (1 - hs); - const intptr_t my = av_mod_uintp2(mv->y, 4 + vs) << (1 - vs); - const int8_t *hf = ff_vvc_inter_chroma_filters[0][mx]; - const int8_t *vf = ff_vvc_inter_chroma_filters[0][my]; + const intptr_t mx = av_mod_uintp2(mv->x, 4 + hs) << (is_chroma - hs); + const intptr_t my = av_mod_uintp2(mv->y, 4 + vs) << (is_chroma - vs); + const int8_t *hf = INTER_FILTER(0, mx); + const int8_t *vf = INTER_FILTER(0, my); x_off += mv->x >> (4 + hs); y_off += mv->y >> (4 + vs); src += y_off * src_stride + (x_off * (1 << fc->ps.sps->pixel_shift)); - EMULATED_EDGE_CHROMA(lc->edge_emu_buffer, &src, &src_stride, x_off, y_off); - fc->vvcdsp.inter.put[CHROMA][idx][!!my][!!mx](dst, src, src_stride, block_h, hf, vf, block_w); + MC_EMULATED_EDGE(lc->edge_emu_buffer, &src, &src_stride, x_off, y_off); + fc->vvcdsp.inter.put[is_chroma][idx][!!my][!!mx](dst, src, src_stride, block_h, hf, vf, block_w); } static void luma_mc_uni(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, @@ -543,10 +527,7 @@ static void pred_gpm_blk(VVCLocalContext *lc) VVCFrame *ref = lc->sc->rpl[lx].ref[mv->ref_idx[lx]]; if (!ref) return; - if (c_idx) - chroma_mc(lc, tmp[i], ref->frame, mv->mv + lx, x, y, width, height, c_idx); - else - luma_mc(lc, tmp[i], ref->frame, mv->mv + lx, x, y, width, height); + mc(lc, tmp[i], ref->frame, mv->mv + lx, x, y, width, height, c_idx); } fc->vvcdsp.inter.put_gpm(dst, dst_stride, width, height, tmp[0], tmp[1], weights, step_x, step_y); } From patchwork Sun May 19 13:27:34 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 49013 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a48:b0:1af:fc2d:ff5a with SMTP id zu8csp3923859pzb; Sun, 19 May 2024 06:39:58 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWEUsVRpa/Gt0KU9tOPha21m3NXh8vBN1Ax7hZ1te4aMDAq1VgvAEele7nyF3lBk2/lEuikfh8DBHcvxPfRW1rXV4z8gr9QveA9KQ== X-Google-Smtp-Source: AGHT+IH7EU0WAwwrkxZHnol29k387QE5s22YiWllgBVQfOXSuC8gUFeoIxdD7X2BGL2TNOfKsfd1 X-Received: by 2002:a17:906:dace:b0:a5a:5bc8:9fcd with SMTP id a640c23a62f3a-a5a5bc8a0bbmr2473989766b.43.1716125997753; Sun, 19 May 2024 06:39:57 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a5a17c2c248si1269658366b.935.2024.05.19.06.39.57; Sun, 19 May 2024 06:39:57 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=bLaQ6lAp; 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 1FFFF68CF3F; Sun, 19 May 2024 16:39:51 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from SINPR02CU002.outbound.protection.outlook.com (mail-southeastasiaazolkn19011003.outbound.protection.outlook.com [52.103.65.3]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A6D5468C978 for ; Sun, 19 May 2024 16:39:43 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eSrA0vRCsTi9iiRVXV+C/+RgVp0BhBypjqu5o8V0rt7H10IhUun2Lcce+sJSc4El1Uvlb0wx0vkLN5nPGLCF1Q79kYVNEtH/HVBvEVwzlnXqItXVA8tIF7hKQelazd6gr6VeseujQbKvIK6S3R14o3Mq6A1aewDHDvykAzh6ou5BEyFu+KnGwrMA+5jhx+/5a6rHJuOgxiy8KoKSN+igtWkBsMX+BtjLFNsVEpyl32uv8tFq+u/5kgKz+UosXlTw1G3z1RgKduzQTnlPdlCTlHdppm894sEa6kPNaS8QdfM39HLr+wCntnloaFhKodnnjNBVnFOh8bjkHLJepMOgxw== 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=AyYOS/f0P5cI8pQ0u6ZLHhj1Q/PHDxrAoAQqF0B1oUQ=; b=MfObyi/LrsVumdSKyJt1Oq3lf7DW0+QDKDmwf0YAAeBEGPuyI6u1huziVV2zQrsRR6hEa4Nb9krlDsxyPoCNDK4Zo7+KEtz1ldB6coyFiVETU696pIIYo+7+ADa8pDvTEqhR4EidNP2MfsqE4AqbbTU6KLGNgGefeZIU6Y+LH7HHGk2xyhyHDjbzF0XulQeSaU379GANjaVvvF0S2iKdY+xQt+JlIXStgCgo93Yt69f0LNbxaY+GjftgXUzDk1tSG/QTGt4pqz7jP609Q7XzUv7LEyNco6zi2UL99TuGJtz6ZRn+Z0+ary13iOfgUeie+BwVDT4Bgw4DpHq/xn/Wkg== 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=AyYOS/f0P5cI8pQ0u6ZLHhj1Q/PHDxrAoAQqF0B1oUQ=; b=bLaQ6lAp7b/40bLw352/RhpvZ+QQTa5ZkkgUWY+ubq6kBbOSpklekDERiCq0tNlXLF7ux35R4cngbh+QjeAylbHKP5t2k/dSgXzp79s+O5BzS/NGBAfFg8Oej8ULbOwa02dQ4uIsMItHGteIjBo70OKNYucclMNFrHcuNtDb43dMKguePuB47kdWKUX7D4kHDOGN4ljPxaxKlWunXCauLo+BUnDzigygHtIOnrJpyzvCBZ+9N0DhQkwzGZ7RY6CurbHqDdqaL0MlHY/TGKjg3KpsrLjNM3FAHb5DJfmz4wgWLWbflEmPeoq38+YLkJgwoKxaOEaDk6qjKc/0fLHvTQ== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by TYUPR06MB6098.apcprd06.prod.outlook.com (2603:1096:400:358::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.34; Sun, 19 May 2024 13:39:34 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca%4]) with mapi id 15.20.7587.030; Sun, 19 May 2024 13:39:34 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sun, 19 May 2024 21:27:34 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240519132749.790832-1-nuomi2021@gmail.com> References: <20240519132749.790832-1-nuomi2021@gmail.com> X-TMN: [PIohl/cbLbhyWl/ej2RA66nPL8gkw0q0] X-ClientProxiedBy: TYCP301CA0017.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:381::8) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240519132749.790832-3-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|TYUPR06MB6098:EE_ X-MS-Office365-Filtering-Correlation-Id: 306e6e37-a209-4ffd-0ecc-08dc78091ea9 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|440099019|3412199016|1710799017; X-Microsoft-Antispam-Message-Info: uAUPkFRKStz53Pp8BZpiQo8sPbzL6lo3cpy3kq50H/FppmJ09vXgauHW8JFhLEubqHa1D8N52sjx9CE1XsZFEZYFL+Bk4yQEUM9X4FUFqKok52bJ/pdi/iLga2Ue2nbZKgQUOmjxFlGbATl55xPeQDQ/nMBYfqSFVSmDITbHL0vhmi+zyWkKrAbZW7rZYDSCSNDWpWo/1rEVZqbE0GNFCzpsgU4tzk53fGnJzhMaXdaEfalsBhkeDyGlT5DPNG0rZRzRKVJuva01a8BIZo/WwxtXcHJUlm4LabJlYjzTfMxlODcJsXuHinlUHQMNesMNjo1oAm4f7v6DzUF7yLixaTyR5id4lAwQDbN5GGiAcraO6HnfRbGKevdcPlA1O9WTnApho1FRgRXlkJKebpFkgMAVVH3te6yRQcEkxZwjJwQsgnBmYpvZ+HbNjDtVNh3dV7zfLrnpec/FcTiKLAS0H0iQ+eOsVAktk5xW8vxkBy52/EI7j5RRtCNCVd5Zv5JKVM2fQvcItSqAGttwxYKG1o9072AsSwVPTFH6/VhahV93oyXYn/bEFv7C+YNXEAZasmx4eS2xOBJuIRkUA3h+1QAcVWaX+k5d6Bap53eKdko= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: w0CiRDJUKavQ39t9/c39cCtL5FcsrfNPgG/rOVntZKvIGA+txXcgr2yNpmcUu6ZxljA31ANn93v+JcxwrQXotB0e7TrJ+IvrkWbVuV6KZHBmWLnAwCQtx9JPj0f2GNmy3LWTWIXev4915o8zZa6ctiLxZt5Qc1jX20e3qfuqIqmE06jFJRGpqzB0MXpbXJT/hQ+Vn+W5MqIzsDF5U7IfmHjCgdnP0EWgNK6jslxiVP6VXbtQUkaNt4DHUEsE3PUttX0HmR4V7fhOIAPoubfmdLDmXd6B0NBjzHMcmFeDQ9c3ENfUvgZO5GXeDaQPST55Vi+uUO264vKoTJSkqaI5JClKCmfAaWKCUfJ6GezfmuLPC3TY85lAQUWasQXgu1s0phI2eTkVG0epwqJPyFmw5XCQhJL5FZQe6n1dfKkn2lU81rb9mc5BJ8PoGCC5V4T8SIWTmexGeZcdkvY2m2WYeYh7jKjnG4g7b+8KEnnNHRwa0gTE6HJPRaH7WjCfBUWXeHK3xDzlCKdQs/KWng/RaEN210hxzeGkE1+sG+u5c55T1EbOVPRxEAEqKwDYdznk2TclOfP59BfeYIihbuU6iqu31TWq90Hp8/ijtWxIVP0dpilyXocckMR/gctLZrDQakt6ifAaDf+ZQo+lUJyiRoTunDFOI3M491QJZef42pfkD07kQR4bc0a6WG5P9JQ7u1gfpuOlOd0oddAiUiFjFiWjBgKJoQo8S24ba3gm7ChZMzq1uvBfy61048KSHP52Yzdzsy5CPc4xF8l7DggBo5tRT6rLPAVMAOFncUfoYs89zG/BtNyHyUpBC1bHVxtFPL6inXb7peJKd52a6Nw4q0M4VkEZ2tLzC+RvktmxPsXwqwupkT2qTHM7rc2w6v6QSK4+7r11UEGs1CF4DVrcKqlJuBSURZhO6WlkxadIChpx4cddAX7BZB7V/VyrZg38P8MAFPVTRYXJ8Mu/gexDzlPYEcQioy4eO748cTG9vCDB9GXYyMomJPOjNYnd6dKOJ1dl/sPA0PN39HFjWqAQux4DmaEb9wAe4y5/z4+FX3Xe/tpdN4nXPW6wYL1PFssi57962b2fFEtpFo8s53C2jKyT1esL+uHnbUIprijewPeHekG2k3kSwfOnraQGKVWyawds2QrVvZ/dlhpNsG/rDHW5J+8nFd8ytKZr/H/hXNgGsjiCh9bbqWdj+LBUPtXq0q7MGfCPYqJuE/hbzy9tJhUmtQZeX9pRJT40gkAqkw+6gLMQ4FzGZTEs7zcyGcQgQVVKsFYh4ovi9QAgkBbMeQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 306e6e37-a209-4ffd-0ecc-08dc78091ea9 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2024 13:39:34.6123 (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: TYUPR06MB6098 Subject: [FFmpeg-devel] [PATCH 03/18] avcodec/vvcdec: refact, unify {luma, chroma}_mc_uni to mc_uni 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: Mewhdig5sEyD --- libavcodec/vvc/inter.c | 80 +++++++++++++----------------------------- 1 file changed, 25 insertions(+), 55 deletions(-) diff --git a/libavcodec/vvc/inter.c b/libavcodec/vvc/inter.c index 8657541eaf..6d866c1bad 100644 --- a/libavcodec/vvc/inter.c +++ b/libavcodec/vvc/inter.c @@ -236,33 +236,35 @@ static void mc(VVCLocalContext *lc, int16_t *dst, const AVFrame *ref, const Mv * fc->vvcdsp.inter.put[is_chroma][idx][!!my][!!mx](dst, src, src_stride, block_h, hf, vf, block_w); } -static void luma_mc_uni(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, +static void mc_uni(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, const AVFrame *ref, const MvField *mvf, int x_off, int y_off, const int block_w, const int block_h, - const int hf_idx, const int vf_idx) + const int c_idx, const int hf_idx, const int vf_idx) { const VVCFrameContext *fc = lc->fc; + const uint8_t *src = ref->data[c_idx]; + ptrdiff_t src_stride = ref->linesize[c_idx]; const int lx = mvf->pred_flag - PF_L0; - const Mv *mv = mvf->mv + lx; - const uint8_t *src = ref->data[0]; - ptrdiff_t src_stride = ref->linesize[0]; + const int hs = fc->ps.sps->hshift[c_idx]; + const int vs = fc->ps.sps->vshift[c_idx]; const int idx = av_log2(block_w) - 1; - const int mx = mv->x & 0xf; - const int my = mv->y & 0xf; - const int8_t *hf = ff_vvc_inter_luma_filters[hf_idx][mx]; - const int8_t *vf = ff_vvc_inter_luma_filters[vf_idx][my]; + const Mv *mv = &mvf->mv[lx]; + const int is_chroma = !!c_idx; + const intptr_t mx = av_mod_uintp2(mv->x, 4 + hs) << (is_chroma - hs); + const intptr_t my = av_mod_uintp2(mv->y, 4 + vs) << (is_chroma - vs); + const int8_t *hf = INTER_FILTER(hf_idx, mx); + const int8_t *vf = INTER_FILTER(vf_idx, my); int denom, wx, ox; - x_off += mv->x >> 4; - y_off += mv->y >> 4; - src += y_off * src_stride + (x_off * (1 << fc->ps.sps->pixel_shift)); - - EMULATED_EDGE_LUMA(lc->edge_emu_buffer, &src, &src_stride, x_off, y_off); + x_off += mv->x >> (4 + hs); + y_off += mv->y >> (4 + vs); + src += y_off * src_stride + (x_off * (1 << fc->ps.sps->pixel_shift)); - if (derive_weight_uni(&denom, &wx, &ox, lc, mvf, LUMA)) { - fc->vvcdsp.inter.put_uni_w[LUMA][idx][!!my][!!mx](dst, dst_stride, src, src_stride, + MC_EMULATED_EDGE(lc->edge_emu_buffer, &src, &src_stride, x_off, y_off); + if (derive_weight_uni(&denom, &wx, &ox, lc, mvf, c_idx)) { + fc->vvcdsp.inter.put_uni_w[is_chroma][idx][!!my][!!mx](dst, dst_stride, src, src_stride, block_h, denom, wx, ox, hf, vf, block_w); } else { - fc->vvcdsp.inter.put_uni[LUMA][idx][!!my][!!mx](dst, dst_stride, src, src_stride, + fc->vvcdsp.inter.put_uni[is_chroma][idx][!!my][!!mx](dst, dst_stride, src, src_stride, block_h, hf, vf, block_w); } } @@ -312,38 +314,6 @@ static void luma_mc_bi(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_st fc->vvcdsp.inter.avg(dst, dst_stride, tmp[L0], tmp[L1], block_w, block_h); } -static void chroma_mc_uni(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, - const uint8_t *src, ptrdiff_t src_stride, int x_off, int y_off, - const int block_w, const int block_h, const MvField *mvf, const int c_idx, - const int hf_idx, const int vf_idx) -{ - const VVCFrameContext *fc = lc->fc; - const int lx = mvf->pred_flag - PF_L0; - const int hs = fc->ps.sps->hshift[1]; - const int vs = fc->ps.sps->vshift[1]; - const int idx = av_log2(block_w) - 1; - const Mv *mv = &mvf->mv[lx]; - const intptr_t mx = av_mod_uintp2(mv->x, 4 + hs) << (1 - hs); - const intptr_t my = av_mod_uintp2(mv->y, 4 + vs) << (1 - vs); - const int8_t *hf = ff_vvc_inter_chroma_filters[hf_idx][mx]; - const int8_t *vf = ff_vvc_inter_chroma_filters[vf_idx][my]; - int denom, wx, ox; - - x_off += mv->x >> (4 + hs); - y_off += mv->y >> (4 + vs); - src += y_off * src_stride + (x_off * (1 << fc->ps.sps->pixel_shift)); - - - EMULATED_EDGE_CHROMA(lc->edge_emu_buffer, &src, &src_stride, x_off, y_off); - if (derive_weight_uni(&denom, &wx, &ox, lc, mvf, c_idx)) { - fc->vvcdsp.inter.put_uni_w[CHROMA][idx][!!my][!!mx](dst, dst_stride, src, src_stride, - block_h, denom, wx, ox, hf, vf, block_w); - } else { - fc->vvcdsp.inter.put_uni[CHROMA][idx][!!my][!!mx](dst, dst_stride, src, src_stride, - block_h, hf, vf, block_w); - } -} - static void chroma_mc_bi(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, const AVFrame *ref0, const AVFrame *ref1, const int x_off, const int y_off, const int block_w, const int block_h, const MvField *mvf, const int c_idx, @@ -573,8 +543,8 @@ static void pred_regular_luma(VVCLocalContext *lc, const int hf_idx, const int v if (mv->pred_flag != PF_BI) { const int lx = mv->pred_flag - PF_L0; - luma_mc_uni(lc, inter, inter_stride, ref[lx]->frame, - mv, x0, y0, sbw, sbh, hf_idx, vf_idx); + mc_uni(lc, inter, inter_stride, ref[lx]->frame, mv, + x0, y0, sbw, sbh, LUMA, hf_idx, vf_idx); } else { luma_mc_bi(lc, inter, inter_stride, ref[0]->frame, &mv->mv[0], x0, y0, sbw, sbh, ref[1]->frame, &mv->mv[1], mv, @@ -627,10 +597,10 @@ static void pred_regular_chroma(VVCLocalContext *lc, const MvField *mv, if (!ref[lx]) return; - chroma_mc_uni(lc, inter1, inter1_stride, ref[lx]->frame->data[1], ref[lx]->frame->linesize[1], - x0_c, y0_c, w_c, h_c, mv, CB, hf_idx, vf_idx); - chroma_mc_uni(lc, inter2, inter2_stride, ref[lx]->frame->data[2], ref[lx]->frame->linesize[2], - x0_c, y0_c, w_c, h_c, mv, CR, hf_idx, vf_idx); + mc_uni(lc, inter1, inter1_stride, ref[lx]->frame, mv, + x0_c, y0_c, w_c, h_c, CB, hf_idx, vf_idx); + mc_uni(lc, inter2, inter2_stride, ref[lx]->frame, mv, + x0_c, y0_c, w_c, h_c, CR, hf_idx, vf_idx); } else { if (!ref[0] || !ref[1]) return; From patchwork Sun May 19 13:27:35 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 49018 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a48:b0:1af:fc2d:ff5a with SMTP id zu8csp3924186pzb; Sun, 19 May 2024 06:40:53 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWYF+bjBKh1aw6QPzbzjh4+eXLPIdAmXvKDErLmXKHyE/K/BtdN6lvMYLDv/CL+sutcZ4tEOYeHuXex4ZX8CKERZOB6vt5OrTiC5A== X-Google-Smtp-Source: AGHT+IGby1L6kfKetAVXdqXCzA6DP3SWMiBgCkPnWxDiEs9gOBkg76Z/rmqMpYjilNsfOvmwwm+m X-Received: by 2002:aa7:d516:0:b0:572:6698:9258 with SMTP id 4fb4d7f45d1cf-5734d68114cmr18149774a12.2.1716126052858; Sun, 19 May 2024 06:40:52 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 4fb4d7f45d1cf-5733c2d4e7csi11985365a12.322.2024.05.19.06.40.52; Sun, 19 May 2024 06:40:52 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=q1euQGu2; 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 74F0B68CF47; Sun, 19 May 2024 16:40:01 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from HK2PR02CU002.outbound.protection.outlook.com (mail-eastasiaazolkn19010000.outbound.protection.outlook.com [52.103.64.0]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 89B7168CFB7 for ; Sun, 19 May 2024 16:39:50 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=npPGaq2vlW/JGfhRK+gvpWZqDHMFPAmk2G6/jG3uc37ZRH7UpW70Io2obg6SN+G2oJf8llh97tG8B3bslIlzs8LIDyq7CRyT12Ke+1MfvBbDWHMC0kAVrJbKBDrxVGZf2ezbdFxbDybn4HJw5JgRziUYDvrhIg4LJsUkS2O9WgV6yAHiauExDL7PswGbtQkMFwT6uRl8Mbc32SrOxCqftWi18IiLkk3f9XyIf5tdQUnguWMu9qxEl123/Qlra+vIwC2BVQNWGTZBe9W7fqMMbhFNxAc/+1j6u+8Y+1gmh4zo0/DIaurq0C7mBpQ3EgFdP2qb39DknLXKoGYKLYf4Og== 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=mFwVFnPeH4kh0gdCd4Xb8qpQEqcTV1OFwRsyzAODdzM=; b=OzPhoZOC/GoIgfNqIl/YXcBFifPcoze4snYokqMdRTUBWn10h1vmeu7x+oBViUEog7sRhdtVVRe2WHkd4irJE5EflTBg76Fva9iF/hX93DI8jCG6RPP7TS41j2rZZ9cXMOJbRVd9PX8wVqKrAjIk0eQkNfZIO6a/mDOSe6N/n6dDrfyKXzg0lDr0EVO1OREeq+0gRIFRfe89YMWd33CNp6u9g+n2oSpPIi64wYYqVB6bqpiu9pnyy6y4MY4i99Ciyb0J/DPK0DLEfbd/BZUCsXBIbuT7ZgWJomJLyeRAx/nCUJAfY+QgprorxoxD63et4DH+SKj8VUTgrsIi9MO3Gg== 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=mFwVFnPeH4kh0gdCd4Xb8qpQEqcTV1OFwRsyzAODdzM=; b=q1euQGu2PB1I2/rFOYQLovbw9qvNK6gyMZ1J9ptp5v4L0vKVBmZyKPt1TvsCU7wQsfpOAuUqLWPLfm47Leh0ZpTnUEOIsiV4SfYU0zrqVof03QsWugtoOByHl8H0JAcfW67Yj6fCABfdx7JQGf3SQwqifgyl1UAd5PqkpCu3QjpGtG2qfqhdKEDxaH51wlD4jooh7xA717cs8888SoB9xcI0WFchGTTMN0mpTjANmhY8hoPBRtol+16tbBPzxWT4OCV/A7xXa2tACo4RLtEoXJ3DExqW8rHRLZTS+LCpG+2Ivz9e95gkSYrPFrQ46Z2ackNIZFmBbeVMOJ9NPdza1Q== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by TYUPR06MB6098.apcprd06.prod.outlook.com (2603:1096:400:358::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.34; Sun, 19 May 2024 13:39:35 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca%4]) with mapi id 15.20.7587.030; Sun, 19 May 2024 13:39:35 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sun, 19 May 2024 21:27:35 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240519132749.790832-1-nuomi2021@gmail.com> References: <20240519132749.790832-1-nuomi2021@gmail.com> X-TMN: [mJprqx408pfVD2FkXC+KTSUHBNjvrY4c] X-ClientProxiedBy: TYCP301CA0017.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:381::8) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240519132749.790832-4-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|TYUPR06MB6098:EE_ X-MS-Office365-Filtering-Correlation-Id: 0d3b648a-97a3-405f-4970-08dc78091f21 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|440099019|3412199016|1710799017; X-Microsoft-Antispam-Message-Info: gRF7MThMHkO0QQu8nsQ6BqACWPelA4h8NQ2hGJRe2jXZoxCclDprgNhgBGRCyRP6Bni9gknJA4B6CAE5+DUipP+MAAuvTlyX8SE+8MK4MuHRG7PcImMq32sjAR7h1ZZxf/fH4/5tyh10B/nkYMqdG1UGVGKoebDTWCCDw2xiQ4qqa5broUEokEet/m52K1Pj4quU7SzO8BewjzvGYLWvLddmBNn4VTgFM4/G4feECNfXhQocxgNQllj3Voh9pVbA8xHZmkgYhdLkhzjNHa51Eq8vNka1QCMcLaldf+SmJLiMpTI38KRPqRFyIfOmERw2vUMzUGfJoOMXImPKbBe1ryDGPeGGxvt6oI/e3LviOw0zhWsFgCwPwxQq8W9pj6T3QCE0fOoK0yUqvR4owUhnXFVVVLBXD+VaJwma1Q+IeDlGXxngM3Eqy+pEnmlOZYWSCJZC9jndM9yQ38oc5wdq6q9FbydsrqLHbbBW/08PnCLJEq1rUL1yEQ7Cq8Cz6b6I0zX6nqo4Lvf+Tdf6YFhigaGQxB1U+km9iCKTh9LTpKvN+O4Yreq+sQ85Gzj0Xf+Wk6FngDBy3Cw3wXfmvvvJ3oit3KDAkJE31gxD2qA+XH69srt3IDhvNCpCYCQFMKgv X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 3BiLBI2PTIOmLD8NrFvheDDjWWtuQ79PE7txE1u8m2I7Y5CTu23CBfRp+oFGai2UhBFBC7OJN0KKNivQVGUaAWg18T7fQdHdJDPWIIkEfK5W0x8mCLS98n6mubmfUQsHZ5WIEGezMCMsyPSLiALOuvZV+Dveb9oAr+mppGzU4oz1H8a9jclpk8w2Zdzv0YzrqozbPuSfF54oAYB58mUi2g+toQMKeKXnDQ3215K+TYIq4vZTaxaKChmD5rB8uTpNVy1gVbg+dWFhzI/USXXu4/Joqo9EcaFsTXr+02dTMTIawCdOSl81fO/XB22R8C0SeDVPXFacrxL95SdQnvApACMZB5qICiH/zCpmWC0iM4vwL6rUETngwszbg31ioG/9r2LiAgoQfwlDck0u9Xi77rq9D9Xhn822Z1tX2FYp3TU9jvwuzJsBsVZPD1qIpmQGD3Td+CB/Z0gZiySz/w9LvaiVUm5gkl/ZmyyI1zXaKO/SSOtU+rp0LlTxhOBIhikq2mgpn2PW4EkJ0/xZ+BmFY8ilUISO21RCjzW6wRUoIGy4F/cL4Dbbij5iQ0Ax6B4g3jPZqhzHzyAr1z2WO4wgAP6x32F2acrJoesVuW4OPeBmoXh3WTTB7V4qlTi+PQnDfZkFDY4HIabyWRxFfuQRH7lYIkadkNNeP+NfI7eExLtcPn+mhkbqSKF+w/Xxs10cmHdLx4xq1wlSm7kzW1PTMwIo4Hb38wY/JIYuW/pOf0WLdipgRgRCWAlBhrpQkpkWZwfK9tHwl/I320Tkk9x+Ei9blNcqqUWfw0PSh1samjlM6+lTHQELmQc9gzcgaGhckJU0HGKTeSlsXHmoDWVvItEWZG2i2cSNEE30JENTph/nw68Xp0xNMv82i/5Fe/aAqnuxCPLgL+za4FjINjtI/RGexXWt08ns5jei/94UKBjA0w61EciK5NirJsL/OKcIGJQxvrYIRekQKno8hRT3wqvPxYdak2rnZuJtDdlMiUvhQT4OlEMC5cJWNHH3FGMBN7RgBI4XzEjkBRIpVny9yTpSo3nHIHnTYGler7DkYL7J+nE1r7KNWbOcnCAWMREQBgIywGUwggA30mJvB2fR8xKKGPRgXdtsDJLwiB+cSr5ZIACi0MZnc0tyJyo2rwQ2StSRboSq0RSJ/Ai+EpN5sUZamNX2cI6q3PfhGbRcK2pzLKlg+zV/w3O8PV13Z143XTaHd/eh9He8p/DpqX4fGgUbwjxjDErw0rtK1AZfkS/kG4Ej4PySjhMgV3iAMc0FUzn3yJzDybCaqMlNnkrHmQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0d3b648a-97a3-405f-4970-08dc78091f21 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2024 13:39:35.4034 (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: TYUPR06MB6098 Subject: [FFmpeg-devel] [PATCH 04/18] avcodec/vvcdec: refact, unify {luma, chroma}_mc_bi to mc_bi 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: DN0YndgrcCvE --- libavcodec/vvc/inter.c | 95 +++++++++++++----------------------------- 1 file changed, 30 insertions(+), 65 deletions(-) diff --git a/libavcodec/vvc/inter.c b/libavcodec/vvc/inter.c index 6d866c1bad..9132bfaee2 100644 --- a/libavcodec/vvc/inter.c +++ b/libavcodec/vvc/inter.c @@ -151,6 +151,9 @@ static void emulated_edge_bilinear(const VVCLocalContext *lc, uint8_t *dst, cons #define EMULATED_EDGE_CHROMA(dst, src, src_stride, x_off, y_off) \ emulated_edge(lc, dst, src, src_stride, x_off, y_off, block_w, block_h, 1) +#define MC_EMULATED_EDGE_DMVR(dst, src, src_stride, x_sb, y_sb, x_off, y_off) \ + emulated_edge_dmvr(lc, dst, src, src_stride, x_sb, y_sb, x_off, y_off, block_w, block_h, is_chroma) + #define EMULATED_EDGE_DMVR_LUMA(dst, src, src_stride, x_sb, y_sb, x_off, y_off) \ emulated_edge_dmvr(lc, dst, src, src_stride, x_sb, y_sb, x_off, y_off, block_w, block_h, 0) @@ -269,43 +272,45 @@ static void mc_uni(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride } } -static void luma_mc_bi(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, - const AVFrame *ref0, const Mv *mv0, const int x_off, const int y_off, const int block_w, const int block_h, - const AVFrame *ref1, const Mv *mv1, const MvField *mvf, const int hf_idx, const int vf_idx, - const MvField *orig_mv, const int sb_bdof_flag) +static void mc_bi(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, + const AVFrame *ref0, const AVFrame *ref1, const MvField *mvf, const MvField *orig_mv, + const int x_off, const int y_off, const int block_w, const int block_h, const int c_idx, + const int sb_bdof_flag, const int hf_idx, const int vf_idx) { const VVCFrameContext *fc = lc->fc; const PredictionUnit *pu = &lc->cu->pu; + const int hs = fc->ps.sps->hshift[c_idx]; + const int vs = fc->ps.sps->vshift[c_idx]; const int idx = av_log2(block_w) - 1; const AVFrame *ref[] = { ref0, ref1 }; int16_t *tmp[] = { lc->tmp + sb_bdof_flag * PROF_TEMP_OFFSET, lc->tmp1 + sb_bdof_flag * PROF_TEMP_OFFSET }; int denom, w0, w1, o0, o1; - const int weight_flag = derive_weight(&denom, &w0, &w1, &o0, &o1, lc, mvf, LUMA, pu->dmvr_flag); + const int weight_flag = derive_weight(&denom, &w0, &w1, &o0, &o1, lc, mvf, c_idx, pu->dmvr_flag); + const int is_chroma = !!c_idx; for (int i = L0; i <= L1; i++) { const Mv *mv = mvf->mv + i; - const int mx = mv->x & 0xf; - const int my = mv->y & 0xf; - const int ox = x_off + (mv->x >> 4); - const int oy = y_off + (mv->y >> 4); - ptrdiff_t src_stride = ref[i]->linesize[0]; - const uint8_t *src = ref[i]->data[0] + oy * src_stride + (ox * (1 << fc->ps.sps->pixel_shift)); - const int8_t *hf = ff_vvc_inter_luma_filters[hf_idx][mx]; - const int8_t *vf = ff_vvc_inter_luma_filters[vf_idx][my]; + const int mx = av_mod_uintp2(mv->x, 4 + hs) << (is_chroma - hs); + const int my = av_mod_uintp2(mv->y, 4 + vs) << (is_chroma - vs); + const int ox = x_off + (mv->x >> (4 + hs)); + const int oy = y_off + (mv->y >> (4 + vs)); + ptrdiff_t src_stride = ref[i]->linesize[c_idx]; + const uint8_t *src = ref[i]->data[c_idx] + oy * src_stride + (ox * (1 << fc->ps.sps->pixel_shift)); + const int8_t *hf = INTER_FILTER(hf_idx, mx); + const int8_t *vf = INTER_FILTER(vf_idx, my); if (pu->dmvr_flag) { - const int x_sb = x_off + (orig_mv->mv[i].x >> 4); - const int y_sb = y_off + (orig_mv->mv[i].y >> 4); + const int x_sb = x_off + (orig_mv->mv[i].x >> (4 + hs)); + const int y_sb = y_off + (orig_mv->mv[i].y >> (4 + vs)); - EMULATED_EDGE_DMVR_LUMA(lc->edge_emu_buffer, &src, &src_stride, x_sb, y_sb, ox, oy); + MC_EMULATED_EDGE_DMVR(lc->edge_emu_buffer, &src, &src_stride, x_sb, y_sb, ox, oy); } else { - EMULATED_EDGE_LUMA(lc->edge_emu_buffer, &src, &src_stride, ox, oy); + MC_EMULATED_EDGE(lc->edge_emu_buffer, &src, &src_stride, ox, oy); } - fc->vvcdsp.inter.put[LUMA][idx][!!my][!!mx](tmp[i], src, src_stride, block_h, hf, vf, block_w); + fc->vvcdsp.inter.put[is_chroma][idx][!!my][!!mx](tmp[i], src, src_stride, block_h, hf, vf, block_w); if (sb_bdof_flag) fc->vvcdsp.inter.bdof_fetch_samples(tmp[i], src, src_stride, mx, my, block_w, block_h); } - if (sb_bdof_flag) fc->vvcdsp.inter.apply_bdof(dst, dst_stride, tmp[L0], tmp[L1], block_w, block_h); else if (weight_flag) @@ -314,45 +319,6 @@ static void luma_mc_bi(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_st fc->vvcdsp.inter.avg(dst, dst_stride, tmp[L0], tmp[L1], block_w, block_h); } -static void chroma_mc_bi(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, - const AVFrame *ref0, const AVFrame *ref1, const int x_off, const int y_off, - const int block_w, const int block_h, const MvField *mvf, const int c_idx, - const int hf_idx, const int vf_idx, const MvField *orig_mv, const int dmvr_flag, const int ciip_flag) -{ - const VVCFrameContext *fc = lc->fc; - const int hs = fc->ps.sps->hshift[1]; - const int vs = fc->ps.sps->vshift[1]; - const int idx = av_log2(block_w) - 1; - const AVFrame *ref[] = { ref0, ref1 }; - int16_t *tmp[] = { lc->tmp, lc->tmp1 }; - int denom, w0, w1, o0, o1; - const int weight_flag = derive_weight(&denom, &w0, &w1, &o0, &o1, lc, mvf, c_idx, dmvr_flag); - - for (int i = L0; i <= L1; i++) { - const Mv *mv = mvf->mv + i; - const int mx = av_mod_uintp2(mv->x, 4 + hs) << (1 - hs); - const int my = av_mod_uintp2(mv->y, 4 + vs) << (1 - vs); - const int ox = x_off + (mv->x >> (4 + hs)); - const int oy = y_off + (mv->y >> (4 + vs)); - ptrdiff_t src_stride = ref[i]->linesize[c_idx]; - const uint8_t *src = ref[i]->data[c_idx] + oy * src_stride + (ox * (1 << fc->ps.sps->pixel_shift)); - const int8_t *hf = ff_vvc_inter_chroma_filters[hf_idx][mx]; - const int8_t *vf = ff_vvc_inter_chroma_filters[vf_idx][my]; - if (dmvr_flag) { - const int x_sb = x_off + (orig_mv->mv[i].x >> (4 + hs)); - const int y_sb = y_off + (orig_mv->mv[i].y >> (4 + vs)); - EMULATED_EDGE_DMVR_CHROMA(lc->edge_emu_buffer, &src, &src_stride, x_sb, y_sb, ox, oy); - } else { - EMULATED_EDGE_CHROMA(lc->edge_emu_buffer, &src, &src_stride, ox, oy); - } - fc->vvcdsp.inter.put[CHROMA][idx][!!my][!!mx](tmp[i], src, src_stride, block_h, hf, vf, block_w); - } - if (weight_flag) - fc->vvcdsp.inter.w_avg(dst, dst_stride, tmp[L0], tmp[L1], block_w, block_h, denom, w0, w1, o0, o1); - else - fc->vvcdsp.inter.avg(dst, dst_stride, tmp[L0], tmp[L1], block_w, block_h); -} - static void luma_prof_uni(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, const AVFrame *ref, const MvField *mvf, int x_off, int y_off, const int block_w, const int block_h, const int cb_prof_flag, const int16_t *diff_mv_x, const int16_t *diff_mv_y) @@ -546,9 +512,8 @@ static void pred_regular_luma(VVCLocalContext *lc, const int hf_idx, const int v mc_uni(lc, inter, inter_stride, ref[lx]->frame, mv, x0, y0, sbw, sbh, LUMA, hf_idx, vf_idx); } else { - luma_mc_bi(lc, inter, inter_stride, ref[0]->frame, - &mv->mv[0], x0, y0, sbw, sbh, ref[1]->frame, &mv->mv[1], mv, - hf_idx, vf_idx, orig_mv, sb_bdof_flag); + mc_bi(lc, inter, inter_stride, ref[0]->frame, ref[1]->frame, mv, orig_mv, + x0, y0, sbw, sbh, LUMA, sb_bdof_flag, hf_idx, vf_idx); } if (ciip_flag) { @@ -605,11 +570,11 @@ static void pred_regular_chroma(VVCLocalContext *lc, const MvField *mv, if (!ref[0] || !ref[1]) return; - chroma_mc_bi(lc, inter1, inter1_stride, ref[0]->frame, ref[1]->frame, - x0_c, y0_c, w_c, h_c, mv, CB, hf_idx, vf_idx, orig_mv, dmvr_flag, lc->cu->ciip_flag); + mc_bi(lc, inter1, inter1_stride, ref[0]->frame, ref[1]->frame, mv, orig_mv, + x0_c, y0_c, w_c, h_c, CB, 0, hf_idx, vf_idx); - chroma_mc_bi(lc, inter2, inter2_stride, ref[0]->frame, ref[1]->frame, - x0_c, y0_c, w_c, h_c, mv, CR, hf_idx, vf_idx, orig_mv, dmvr_flag, lc->cu->ciip_flag); + mc_bi(lc, inter2, inter2_stride, ref[0]->frame, ref[1]->frame, mv, orig_mv, + x0_c, y0_c, w_c, h_c, CR, 0, hf_idx, vf_idx); } if (do_ciip) { From patchwork Sun May 19 13:27:36 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 49015 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a48:b0:1af:fc2d:ff5a with SMTP id zu8csp3923967pzb; Sun, 19 May 2024 06:40:16 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWDlcXdsglL+uqQTCvqUiDp0Y26m8sDzhPRf2rXhk5Y6ilOA5iLkxpbG86w60h3qQqa2jYO45uHkYcfRwbGOLP09T610hnlni9oWQ== X-Google-Smtp-Source: AGHT+IGg9QNZYJsJCZ7BmPzsPROBq7V+SrzblXJuOG4A6vUxicYzVq0fDVvpHrYtqyNI7s+Q/b25 X-Received: by 2002:a17:906:11d6:b0:a59:ce90:27ea with SMTP id a640c23a62f3a-a5a2d581d96mr1706001466b.24.1716126016602; Sun, 19 May 2024 06:40:16 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a5a1794600csi1141029266b.184.2024.05.19.06.40.16; Sun, 19 May 2024 06:40:16 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b="szK/ww+X"; 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 EDB1E68CFEC; Sun, 19 May 2024 16:39:55 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from SINPR02CU002.outbound.protection.outlook.com (mail-southeastasiaazolkn19011003.outbound.protection.outlook.com [52.103.65.3]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 40F8968CDAC for ; Sun, 19 May 2024 16:39:49 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=O7UHDOcf0kJrSQCx3V4hE34piFtPvI/jnbv081A+SbDQsb+x7siHTFe3v/Ch+GCFLrECetOfq3bYvsRWzfDTFbKGJ6YzIBM5KPXlgitsXqYQpDpq1cPUPIBc369NTXGeHBoLzGFMdDFXiK7FuOc6J2H2KghEO550GFWb0uAL2traV9f/zYG505lpp/byLhZg3+un04miTYgq+ADF9AG2ADcmQqZQBNWwMQnGTWYnHMNb5u5kZni3/Z89s1TJ1N5FqIyl4/eDr1fxMEHZ+U/NZuhoJCIIqIBtfxpaodZRvu8RiSMqL3QVe2t2MpQ6X74RHRYLhtOt9zbrAi9sou8iEw== 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=Zd4/uKaEzeNnzVIoMCPbFaP2pw3RyddkHYGUcPQAbTQ=; b=NqP5alITzgvKGWfLypM+UJin4BDhcBRF0Eq2jHyu/uZCgTqOYCMuOFQe4GqQ4MF9DCvIIL5P7wka1kF+KrHx0A+INHXOAhCPoRnNmtQGDzMWK7iVjBSTtoxanxxU//IfBL+axliOB24HF9Ejhi7YSTrrScYdM4EUj0jCgJb2772wRjaDVVb+G5HH+AOyhdzl6W7K4YEo8eP067WnAY26YnQ7jnJsJ4WMrv1SKLybtMlk5/ZQ0CtjTLDoOTgWFh5HasGDgGuRbut23aqy59trFrOmwTWki6CB0ElpdE3/oFgZLOh2hBO1mIdiuaoPx0OpvF8OyEPBnio2zAQeDRiuoQ== 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=Zd4/uKaEzeNnzVIoMCPbFaP2pw3RyddkHYGUcPQAbTQ=; b=szK/ww+Xl0q5YFn4DgFz2aFU1L9AKQG+vscNhjNu7MOLbZNYWSsp/ob2srPfkipRjWC0zFZPGT/5axooo+LsooQAThYS+a9MTrkrVuAjjRbzmeXGmsw5FwCUmtSi7tXhpJFinAGNqjlObsoooAICry8qAZjtTEpCerNuQX08vzBXxlQXPrgRQtkVH6RksC/2Pb+EbnV6+lX2Q7oyY4Ev/ZuPp52wJSfGJ9ox5W96csX7t9vzmEPIsYhrkZeYN9qhWJl5M00hlOpb8vnKmn4tWzTaLZcRe0km7nvZZrvcir5/e7dpMTK1NCl9rIt8oXd+KLxooL/r34TYt1JB5WzS8g== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by TYUPR06MB6098.apcprd06.prod.outlook.com (2603:1096:400:358::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.34; Sun, 19 May 2024 13:39:36 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca%4]) with mapi id 15.20.7587.030; Sun, 19 May 2024 13:39:36 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sun, 19 May 2024 21:27:36 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240519132749.790832-1-nuomi2021@gmail.com> References: <20240519132749.790832-1-nuomi2021@gmail.com> X-TMN: [iQ9ASoJE7DivF4WHyilVSQIdA9C7kbh/] X-ClientProxiedBy: TYCP301CA0017.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:381::8) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240519132749.790832-5-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|TYUPR06MB6098:EE_ X-MS-Office365-Filtering-Correlation-Id: fe0f7cda-7884-4d47-5faa-08dc78091f9a X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|440099019|3412199016|1710799017; X-Microsoft-Antispam-Message-Info: TSVt4G1Du21VnWEQ8E9ppI7zHFM+uSV97MNMm5UKHVrPfKcIGSubAr3U5mgBFLgI0110lZMuuDyoMg7anfJqSewkpDP4I9HxgsDCjnRHKsusBmS/jydBeJo6du29CsFDKb2bCiZ+jiKBmLZf5+e/QvuvBKrgKA0ogV/WDhegApxS+bKEnoJA8oQr6t9pYQnRKprc6n7EBhW/TCoQ+2Sd0mU/9bDwwjh55dy6kNFHmFhmKicMCYWPYEj+mAqFlkUTpSAh4dua+e+VxWaB8hbljPJlBVpvYhbfUL/jTMZ36TYxB3VQJo7/TLz+IzX2fjh2JpW91++EwbZyU6AQT1s5Po8AETUoJbjtbXsMraqJltmt4PnEU01v7WHaConJRB4zb/g7qXXCA+yBdacmVvlfxPz7QllC3+iubhKVsNyd4s4TIjl3R6gqH/R9rKPZZbgUHNnijrB1EU7Zqt4o80a+gp2F+6eHsWhzvnHO2I5g8HceYsPOEfZd6B07TW0S1v4Kq5ii6fvH1z6yYRk+tGiccsEhc/tOPsBdy26KZ3jjvP8Yx9Llah5G8RP0PloWSks3DPtMJn8JVuItQuFRL7zKsXOE04wdspUDVQmptZtFy0XG9LYTy8SYSIb0iexlI5DY X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: vCYGd/rKCNRVFmPbLFE6GOez8YG41irMqrUCPnj9sIaFiygx29bEioEZVNNkvoK8EooA0icsVNTBqmAaSWWYxESdoStIUQ0IVf0T5V30HDiK4G5TIFIKsyvqvegnjqezGNdrf7V+uEjuHDc+di9COcAkc2rwxLAG9aRseIeRTWSmhVs3nstHybi1//0kShvWFT17pQCdG+HC9GKIRwPOAIr2xYn1wrTsgrBV3gAlBqGRfqqWm/GqjR8FWOcjwlhDZnEGUxN68ejXcC9nbWWxYW8t4/HAnywW/7qHZcoXqQx+KFWpzr6XZZRQV2k9j1MGjkxJom87jMY1SzAtrH+Lh1a1OWErHwiMY8jh8Jgw+N4ZuasftewuMzLuYQZxpAyL8lyL7HCNRBZtSzvwSVlLoemIRVwQ9uTv1NoiBTL8iVI/zaO4Rj1rxd0BtXmv7p88IJBOIGag/AMDWluvkQyYIgGD9cgg8LrLsqNjdnl9sdUuUS6KHnl7UEbN25A0K/GLpm0+u82jcr6WICyJU/XxkVx+kFKqHP1BOE7bq9kQaa33Uhxw22eKmjTEeAUdmGe2sY8v8YQ2txTstScxcjhWwgSB+bZhg5rG4ah3aeUpb6Z9rWsAgff10+qdF1AK49z8RQiyWa6dNtmyFM+7l//HHoiINZsOpP6kPDXmB/HHd7xAgY0Qey1EQkp8JCo/q61luzz0Ny+ZsmOlU0+drlXyyWn7lym69DQjbPKd05v8U6pA2sRylmNLicZn9ur7eCxfRFF/rBDhbvZTnmUYELBV3ICQa2f6wrSWv9mfmLwcgq7uIlAOW7n+Dtl5fQ7nMGmXJXx1PdDsiEkpSWqgPp44wultptniXV3Luz4u8eCO0YBb7pt0DK2ly4J6HWFh8xDYXGod/eiBSsStc0GmZBcIV9iUBAvRkk4HY6IDjToQ5/wq27FJt3aHAX8fhIwgN+aXnNt7UlOtcT0S8+UHedGtVjqn0vCdhs4bzFfb/tCtdAk65UZWrifTNeBLLIUdiwSf83gOMADlRVXNv0/GaAcT2iB5sOe23EekC+saW3OGWD4P9F9tc6uZOLkASI+Dx2QbxtYbqXvqYPeZTr3jbKrs0kbp56Hj/MqrVW1O1zgab0cSFMFIiEhBcapwjb7S+DRWo+vtC7b0iC4+MVoQLlE/B3Z6Z9oIfY6Vuxe37avu9kC/ze2XtBZN4QCucDILmONmEfZ7/o6xX4mzdrKl3zwfL6RgKWOABxSJTp6VNUJx2lFJgyovmfnn9/Lrkfkmetd14eXfqbaqcwLmCZb5i6wU0g== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fe0f7cda-7884-4d47-5faa-08dc78091f9a X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2024 13:39:36.1962 (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: TYUPR06MB6098 Subject: [FFmpeg-devel] [PATCH 05/18] avcodec/vvcdec: misc, remove unused EMULATED_EDGE_{LUMA, CHROMA}, EMULATED_EDGE_DMVR_{LUAM, 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: SRN9pX+Os2ha --- libavcodec/vvc/inter.c | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/libavcodec/vvc/inter.c b/libavcodec/vvc/inter.c index 9132bfaee2..cc93184ca0 100644 --- a/libavcodec/vvc/inter.c +++ b/libavcodec/vvc/inter.c @@ -142,25 +142,13 @@ static void emulated_edge_bilinear(const VVCLocalContext *lc, uint8_t *dst, cons } } -#define MC_EMULATED_EDGE(dst, src, src_stride, x_off, y_off) \ +#define MC_EMULATED_EDGE(dst, src, src_stride, x_off, y_off) \ emulated_edge(lc, dst, src, src_stride, x_off, y_off, block_w, block_h, is_chroma) -#define EMULATED_EDGE_LUMA(dst, src, src_stride, x_off, y_off) \ - emulated_edge(lc, dst, src, src_stride, x_off, y_off, block_w, block_h, 0) - -#define EMULATED_EDGE_CHROMA(dst, src, src_stride, x_off, y_off) \ - emulated_edge(lc, dst, src, src_stride, x_off, y_off, block_w, block_h, 1) - #define MC_EMULATED_EDGE_DMVR(dst, src, src_stride, x_sb, y_sb, x_off, y_off) \ emulated_edge_dmvr(lc, dst, src, src_stride, x_sb, y_sb, x_off, y_off, block_w, block_h, is_chroma) -#define EMULATED_EDGE_DMVR_LUMA(dst, src, src_stride, x_sb, y_sb, x_off, y_off) \ - emulated_edge_dmvr(lc, dst, src, src_stride, x_sb, y_sb, x_off, y_off, block_w, block_h, 0) - -#define EMULATED_EDGE_DMVR_CHROMA(dst, src, src_stride, x_sb, y_sb, x_off, y_off) \ - emulated_edge_dmvr(lc, dst, src, src_stride, x_sb, y_sb, x_off, y_off, block_w, block_h, 1) - -#define EMULATED_EDGE_BILINEAR(dst, src, src_stride, x_off, y_off) \ +#define MC_EMULATED_EDGE_BILINEAR(dst, src, src_stride, x_off, y_off) \ emulated_edge_bilinear(lc, dst, src, src_stride, x_off, y_off, pred_w, pred_h) // part of 8.5.6.6 Weighted sample prediction process @@ -336,12 +324,13 @@ static void luma_prof_uni(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst const int8_t *vf = ff_vvc_inter_luma_filters[2][my]; int denom, wx, ox; const int weight_flag = derive_weight_uni(&denom, &wx, &ox, lc, mvf, LUMA); + const int is_chroma = 0; x_off += mv->x >> 4; y_off += mv->y >> 4; src += y_off * src_stride + (x_off * (1 << fc->ps.sps->pixel_shift)); - EMULATED_EDGE_LUMA(lc->edge_emu_buffer, &src, &src_stride, x_off, y_off); + MC_EMULATED_EDGE(lc->edge_emu_buffer, &src, &src_stride, x_off, y_off); if (cb_prof_flag) { fc->vvcdsp.inter.put[LUMA][idx][!!my][!!mx](prof_tmp, src, src_stride, AFFINE_MIN_BLOCK_SIZE, hf, vf, AFFINE_MIN_BLOCK_SIZE); fc->vvcdsp.inter.fetch_samples(prof_tmp, src, src_stride, mx, my); @@ -369,6 +358,7 @@ static void luma_prof_bi(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_ const int idx = av_log2(block_w) - 1; int denom, w0, w1, o0, o1; const int weight_flag = derive_weight(&denom, &w0, &w1, &o0, &o1, lc, mvf, LUMA, 0); + const int is_chroma = 0; for (int i = L0; i <= L1; i++) { const Mv *mv = mvf->mv + i; @@ -381,7 +371,7 @@ static void luma_prof_bi(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_ const int8_t *hf = ff_vvc_inter_luma_filters[2][mx]; const int8_t *vf = ff_vvc_inter_luma_filters[2][my]; - EMULATED_EDGE_LUMA(lc->edge_emu_buffer, &src, &src_stride, ox, oy); + MC_EMULATED_EDGE(lc->edge_emu_buffer, &src, &src_stride, ox, oy); if (!pu->cb_prof_flag[i]) { fc->vvcdsp.inter.put[LUMA][idx][!!my][!!mx](tmp[i], src, src_stride, block_h, hf, vf, block_w); } else { @@ -654,7 +644,7 @@ static void dmvr_mv_refine(VVCLocalContext *lc, MvField *mvf, MvField *orig_mv, const int oy = y_off + (mv->y >> 4) - sr_range; ptrdiff_t src_stride = ref[i]->linesize[LUMA]; const uint8_t *src = ref[i]->data[LUMA] + oy * src_stride + (ox * (1 << fc->ps.sps->pixel_shift)); - EMULATED_EDGE_BILINEAR(lc->edge_emu_buffer, &src, &src_stride, ox, oy); + MC_EMULATED_EDGE_BILINEAR(lc->edge_emu_buffer, &src, &src_stride, ox, oy); fc->vvcdsp.inter.dmvr[!!my][!!mx](tmp[i], src, src_stride, pred_h, mx, my, pred_w); } From patchwork Sun May 19 13:27:37 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 49016 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a48:b0:1af:fc2d:ff5a with SMTP id zu8csp3924022pzb; Sun, 19 May 2024 06:40:26 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCW9wYtQ8OwT7QunmTpTVxrqWM2BMVGHff1UyDv1Ghknaa2BVOFm8PZ33xAPJKtucxRl5u/dgbK/RHNv6Y32A5oYgz1Ph3HcMhYyeA== X-Google-Smtp-Source: AGHT+IFHqkiEZqlSlxkaBmPBmPC3k3L9fyPam/co9zpPljyZulp/n5f+teyGDXzHjTXRRxIvhopE X-Received: by 2002:a17:906:594d:b0:a59:bb1f:6ffc with SMTP id a640c23a62f3a-a5a2d54c13fmr1690516166b.8.1716126025677; Sun, 19 May 2024 06:40:25 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a5ce172046asi466271566b.354.2024.05.19.06.40.25; Sun, 19 May 2024 06:40:25 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=qsejl0zO; 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 35B6B68C6A7; Sun, 19 May 2024 16:39:58 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from SINPR02CU002.outbound.protection.outlook.com (mail-southeastasiaazolkn19011003.outbound.protection.outlook.com [52.103.65.3]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 106CD68CDAC for ; Sun, 19 May 2024 16:39:50 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a6++xkp3F6t7H/gvrbdJhUpxUrDwI0ZzDjvIQprGvn7qYout9coawygFN9zmM72bLmnTq0gte6BePkAEx/XCvyxyD6dLUjCvmK9tKElBVJuR9ITaREO7kyAkoG8noatRJXDwiTXta5lJb1tPb2FnKL9oIojPvi9BAg51ylcsMyQQFTxKpyCcepzGPXXLB7L3lIomLxskAHMaV9CxAtkwa+8nT2crdxZMYnW4bM9lAYF1u4RA1abyZDvlEVfSa9Tk0m3XzOzKQWrh4AxkoGVwp6TYIF0giNB9TC0xJ99x1Q4ixasaiFsfUzwZNsQzPAIVWrTWVig9Xh3LLw37Z65OKg== 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=3RkpwJHj4LkDbIcWNRr/XT3mjATMIFjrlmmlJB4j8lw=; b=QzB8PQ+tka5qVrL/QOTJgjm/B3yhqvdeaS/1EvFneiWiXPgDwrqJl9cXTjq33G59V9cdMxCvxSmeH9IizXR0oysud1LiD+LrN9m6RWaQsJwl7l/gpJAUv9O+n9N0pmBlZataNU+c63jQcFj0775CYwYENY5DJQWz/hEDEsdLyuwflBaFUe4726VMwhHQE9Cc75tJFAPvPtNAXOaWoNYoH36zhjii6Ujv4dxRaOOB8a06DyYmFCjQOQiofd7u7PcVjIWNjsl0tm0fyvPWLZFAbi6ys3L5hfDViXesTJOHv+ux11urwzT2Lm9ESWY0l9Cqw1MRLuxDkP+dPk52u9849w== 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=3RkpwJHj4LkDbIcWNRr/XT3mjATMIFjrlmmlJB4j8lw=; b=qsejl0zOwtlUNJripqZYadIeAwDiThcZuCukb3cZCoj4L0zu5bxw7IHU8eIh8HAkPAiuZxBnuFqQ0iF1QzT3/lj+AJaIN8k+P/iMG+UxxxrA1lkJm7kjeLqHjFnrJJFqUC4yONJayv7al5gQAcarW/pB6iHr6rk4B7tz4D8ZC+kxJDDJ3vxUcPXGOjzkXtAHfgQ7kRmSG8SVKZ76lsa3y2tTDMYlyAdq9QMp+d+lvERfi0vvKTqX/u9ta0YUzHh6/ygurU1pjtAJwDtcL/2P5uFgSG18pYfcgCuI5+rzY/i2O9+BMqAlFkUjUyq647yegl4iH2Tk2RDPmqEEoF4Mww== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by TYUPR06MB6098.apcprd06.prod.outlook.com (2603:1096:400:358::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.34; Sun, 19 May 2024 13:39:37 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca%4]) with mapi id 15.20.7587.030; Sun, 19 May 2024 13:39:37 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sun, 19 May 2024 21:27:37 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240519132749.790832-1-nuomi2021@gmail.com> References: <20240519132749.790832-1-nuomi2021@gmail.com> X-TMN: [Ff2hidhjobMzQ/10UIQ1CIWozs+lD6J4] X-ClientProxiedBy: TYCP301CA0017.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:381::8) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240519132749.790832-6-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|TYUPR06MB6098:EE_ X-MS-Office365-Filtering-Correlation-Id: 0d2fa726-446f-409a-1251-08dc78092014 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|440099019|3412199016|1710799017; X-Microsoft-Antispam-Message-Info: kh6+ZnxppPMR5Idh4h4MziHTdGAm2cmCPOU1xMHcHMh/+LwqkcbLZP0RWduU1MRCJkGC9Of3yvsfd3K82UAapWUuoKk+Z7K/i8ttOSiRBfMPB6RDzlXp6vHa7c/GNiMFpsLqwMYDH6yO2QeUiLE4TcqX9eYi9zD718q8jChEBCX3yN1Q/CX8ij0ENJMM2adJvoJYlvY0Sl+hAftOjhLbHfwiiBZIScqXvm1F/3P1Xud9WGR3tryFFsLUNLtfdauSzNMDgDzZBio9/EZeL0DtSlEGkP216TXjFwi99czvCKNtuyXpGzJSmdmJz+c3aTTL51iGmW9XuD0yg64DgfK/MqzGQKZuUMEfdx0GVGxm1daXXic/Zt1p4fvA+5WWrQMx55MCfOiKP7e5NvwsvJ3lRmoNh0+o8N1w/PXIWHJs1MY2KSC92lHABBbh17pb/fNlBDWbZopHvpwCTZgfv73n5Zb48EUejcR+sPNE/F/AIJimRXwslJptEM33xaURjRQkPlQsD4fISBsDBllehoJirFWMF1K/8ZcnuJpVa+x+7wtUsqs49B5IkQ5uxJI30wWV9j/FNryE2mhadM8obKkxofebfgIzEndoQCTpm6Ztxu3hulYG1qs1DGpV3M4czCBK X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: enajgKAVNEtuIaQDF8dgEJTgX8oMOfw+BaJ5VKFgg/Svdf+xD7rqafAI9Y8Js26J6fCiIHM3DgCC9B4HnETmmq8e+pCZPhBJGPlMJp/1OdEUOowfF7I0LYQFopMmX9DeqnB9gXsEQkW/zqP87KGz2E+nmT0OYvrWITPFVAEjUffMSdGWFTKoSmdHr1QVUNkd7w845usdLdzwTJjBGmnPz/5PxGPam4pF+1rg0wj+8o+xjjG9BAQCQMCfJ+Bp5dyG6xcYUVyzvkK094OqNNk89PMszrGlKA59HOTQWxe7a1I4kUYtLdtvFCPVrixTvCnOLbAyQZ7ce3rhgf1DsEmQw+15b05tJt4aLPvRarjhhviG6DB0EGTJ9NcBJeor+UiXjYmEXllSTZ/yFzj9/b3ZxiBlaYxrqLJpXVHDc/MhNIUN21rnB+V+xHZ1a+o3pTwanSDrOF7ybQPPPcxly/XTLlEjLlU10pq0WTnb2NsToiVDoVvkKM+PUfG6UcDCbPtZ4l30AdyzPn4ZA/yohqboddK7ir8Hgh+VcBJ5MsQQUKvinXRbXRwCPSzxBLt4DP0wtX4lwQa7VRaQ/yT++Xy8ge61J96auUSw+yvipeAn9u9x6lPz1u4YkcgOJ3fVNMik48RgNeM/wuhpwGnR1Q0xqxacupZVSr23WYonbC2d+WiAxs3p7jLrCFXv6QCgR2VXIFmcaw50q46vUhr9gsTg2hXZoQvWMJbKmZpLSd/tkgmiYmrA5Lp8/TozTmmucXHi+mggD3jjYG+y+I5VYwmyGA7LXiQ8E3PnFpr7JSYsdBMG7UXYFQAyI0XJJ/3BmVvjofLrKH2SILAr2GeFtff9fl06Ogz44mkDeVpFUjh232HzxJbqvyyrKlum2bGKom1KT5JtqSByEnOQfQ3HCpm/EEl93y1kWQUqvfF7IiOeb/fEIGi/v62U61Zq9bSdjMDTQSyT/CKk1JAWJ0tZMISZW2yalctl3+wMDI2vrhnKmbJ+kw7253uxMKZolxg3lsahQPeRkibwDHco5Z+9p1D/1+vUYX75aeg7MYUazmv4O6iPmFS2vFgJENnL/J11s3eChV+/weEFa+1kocR/ddNAmW5h9lWH09VRGDiq2CGnVjreWSVtTCH5pIlsQ6wLeMj+cm7gbTNA6dkPyUDn7GbbAjU+aFE3Yzoqo9yhJUtgT55g92iOzFKPIffCBSlf6hUTykOSBEJJS8ZzPoS5EO2vjFlzl2EnVlClk+FrSjvupleBaSjpFbtx+AIjPjRBV37nvvUMA6bXE50/sbHK5LMSsw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0d2fa726-446f-409a-1251-08dc78092014 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2024 13:39:36.9953 (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: TYUPR06MB6098 Subject: [FFmpeg-devel] [PATCH 06/18] avcodec/vvcdec: refact, unify pred_regular_{luma, chroma} to pred_regular 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: f3+HGNW7pd+C --- libavcodec/vvc/ctu.h | 3 +- libavcodec/vvc/inter.c | 133 +++++++++++++---------------------------- 2 files changed, 41 insertions(+), 95 deletions(-) diff --git a/libavcodec/vvc/ctu.h b/libavcodec/vvc/ctu.h index 4e38ecf54a..337d0e7c28 100644 --- a/libavcodec/vvc/ctu.h +++ b/libavcodec/vvc/ctu.h @@ -380,8 +380,7 @@ typedef struct VVCLocalContext { DECLARE_ALIGNED(32, int16_t, tmp)[MAX_PB_SIZE * MAX_PB_SIZE]; DECLARE_ALIGNED(32, int16_t, tmp1)[MAX_PB_SIZE * MAX_PB_SIZE]; DECLARE_ALIGNED(32, int16_t, tmp2)[MAX_PB_SIZE * MAX_PB_SIZE]; - DECLARE_ALIGNED(32, uint8_t, ciip_tmp1)[MAX_PB_SIZE * MAX_PB_SIZE * 2]; - DECLARE_ALIGNED(32, uint8_t, ciip_tmp2)[MAX_PB_SIZE * MAX_PB_SIZE * 2]; + DECLARE_ALIGNED(32, uint8_t, ciip_tmp)[MAX_PB_SIZE * MAX_PB_SIZE * 2]; DECLARE_ALIGNED(32, uint8_t, sao_buffer)[(MAX_CTU_SIZE + 2 * SAO_PADDING_SIZE) * EDGE_EMU_BUFFER_STRIDE * 2]; DECLARE_ALIGNED(32, uint8_t, alf_buffer_luma)[(MAX_CTU_SIZE + 2 * ALF_PADDING_SIZE) * EDGE_EMU_BUFFER_STRIDE * 2]; DECLARE_ALIGNED(32, uint8_t, alf_buffer_chroma)[(MAX_CTU_SIZE + 2 * ALF_PADDING_SIZE) * EDGE_EMU_BUFFER_STRIDE * 2]; diff --git a/libavcodec/vvc/inter.c b/libavcodec/vvc/inter.c index cc93184ca0..3bf06d6d53 100644 --- a/libavcodec/vvc/inter.c +++ b/libavcodec/vvc/inter.c @@ -482,98 +482,48 @@ static int ciip_derive_intra_weight(const VVCLocalContext *lc, const int x0, con return w; } -static void pred_regular_luma(VVCLocalContext *lc, const int hf_idx, const int vf_idx, const MvField *mv, - const int x0, const int y0, const int sbw, const int sbh, const MvField *orig_mv, const int sb_bdof_flag) +static void pred_regular(VVCLocalContext *lc, const MvField *mvf, const MvField *orig_mvf, + const int x0, const int y0, const int sbw, const int sbh, const int sb_bdof_flag, const int c_start) { - const SliceContext *sc = lc->sc; - const VVCFrameContext *fc = lc->fc; - const int ciip_flag = lc->cu->ciip_flag; - uint8_t *dst = POS(0, x0, y0); - const ptrdiff_t dst_stride = fc->frame->linesize[0]; - uint8_t *inter = ciip_flag ? (uint8_t *)lc->ciip_tmp1 : dst; - const ptrdiff_t inter_stride = ciip_flag ? (MAX_PB_SIZE * sizeof(uint16_t)) : dst_stride; - VVCFrame *ref[2]; - - if (pred_get_refs(lc, ref, mv) < 0) - return; - - if (mv->pred_flag != PF_BI) { - const int lx = mv->pred_flag - PF_L0; - mc_uni(lc, inter, inter_stride, ref[lx]->frame, mv, - x0, y0, sbw, sbh, LUMA, hf_idx, vf_idx); - } else { - mc_bi(lc, inter, inter_stride, ref[0]->frame, ref[1]->frame, mv, orig_mv, - x0, y0, sbw, sbh, LUMA, sb_bdof_flag, hf_idx, vf_idx); - } - - if (ciip_flag) { - const int intra_weight = ciip_derive_intra_weight(lc, x0, y0, sbw, sbh); - fc->vvcdsp.intra.intra_pred(lc, x0, y0, sbw, sbh, 0); - if (sc->sh.r->sh_lmcs_used_flag) - fc->vvcdsp.lmcs.filter(inter, inter_stride, sbw, sbh, &fc->ps.lmcs.fwd_lut); - fc->vvcdsp.inter.put_ciip(dst, dst_stride, sbw, sbh, inter, inter_stride, intra_weight); - - } -} - -static void pred_regular_chroma(VVCLocalContext *lc, const MvField *mv, - const int x0, const int y0, const int sbw, const int sbh, const MvField *orig_mv, const int dmvr_flag) -{ - const VVCFrameContext *fc = lc->fc; - const int hs = fc->ps.sps->hshift[1]; - const int vs = fc->ps.sps->vshift[1]; - const int x0_c = x0 >> hs; - const int y0_c = y0 >> vs; - const int w_c = sbw >> hs; - const int h_c = sbh >> vs; - const int do_ciip = lc->cu->ciip_flag && (w_c > 2); - - uint8_t* dst1 = POS(1, x0, y0); - uint8_t* dst2 = POS(2, x0, y0); - const ptrdiff_t dst1_stride = fc->frame->linesize[1]; - const ptrdiff_t dst2_stride = fc->frame->linesize[2]; - - uint8_t *inter1 = do_ciip ? (uint8_t *)lc->ciip_tmp1 : dst1; - const ptrdiff_t inter1_stride = do_ciip ? (MAX_PB_SIZE * sizeof(uint16_t)) : dst1_stride; - - uint8_t *inter2 = do_ciip ? (uint8_t *)lc->ciip_tmp2 : dst2; - const ptrdiff_t inter2_stride = do_ciip ? (MAX_PB_SIZE * sizeof(uint16_t)) : dst2_stride; - - //fix me - const int hf_idx = 0; - const int vf_idx = 0; + const VVCFrameContext *fc = lc->fc; + const int c_end = fc->ps.sps->r->sps_chroma_format_idc ? CR : LUMA; VVCFrame *ref[2]; - if (pred_get_refs(lc, ref, mv) < 0) + if (pred_get_refs(lc, ref, mvf) < 0) return; - if (mv->pred_flag != PF_BI) { - const int lx = mv->pred_flag - PF_L0; - if (!ref[lx]) - return; - - mc_uni(lc, inter1, inter1_stride, ref[lx]->frame, mv, - x0_c, y0_c, w_c, h_c, CB, hf_idx, vf_idx); - mc_uni(lc, inter2, inter2_stride, ref[lx]->frame, mv, - x0_c, y0_c, w_c, h_c, CR, hf_idx, vf_idx); - } else { - if (!ref[0] || !ref[1]) - return; - - mc_bi(lc, inter1, inter1_stride, ref[0]->frame, ref[1]->frame, mv, orig_mv, - x0_c, y0_c, w_c, h_c, CB, 0, hf_idx, vf_idx); - - mc_bi(lc, inter2, inter2_stride, ref[0]->frame, ref[1]->frame, mv, orig_mv, - x0_c, y0_c, w_c, h_c, CR, 0, hf_idx, vf_idx); - - } - if (do_ciip) { - const int intra_weight = ciip_derive_intra_weight(lc, x0, y0, sbw, sbh); - fc->vvcdsp.intra.intra_pred(lc, x0, y0, sbw, sbh, 1); - fc->vvcdsp.intra.intra_pred(lc, x0, y0, sbw, sbh, 2); - fc->vvcdsp.inter.put_ciip(dst1, dst1_stride, w_c, h_c, inter1, inter1_stride, intra_weight); - fc->vvcdsp.inter.put_ciip(dst2, dst2_stride, w_c, h_c, inter2, inter2_stride, intra_weight); - + for (int c_idx = c_start; c_idx <= c_end; c_idx++) { + uint8_t *dst = POS(c_idx, x0, y0); + const ptrdiff_t dst_stride = fc->frame->linesize[c_idx]; + const int hs = fc->ps.sps->hshift[c_idx]; + const int vs = fc->ps.sps->vshift[c_idx]; + const int x = x0 >> hs; + const int y = y0 >> vs; + const int w = sbw >> hs; + const int h = sbh >> vs; + const int is_luma = !c_idx; + const int do_ciip = lc->cu->ciip_flag && (is_luma || (w > 2)); + uint8_t *inter = do_ciip ? (uint8_t *)lc->ciip_tmp : dst; + const ptrdiff_t inter_stride = do_ciip ? (MAX_PB_SIZE * sizeof(uint16_t)) : dst_stride; + const int hf_idx = is_luma ? lc->cu->pu.mi.hpel_if_idx : 0; + const int vf_idx = is_luma ? lc->cu->pu.mi.hpel_if_idx : 0; + const int do_bdof = is_luma && sb_bdof_flag; + + if (mvf->pred_flag != PF_BI) { + const int lx = mvf->pred_flag - PF_L0; + mc_uni(lc, inter, inter_stride, ref[lx]->frame, mvf, + x, y, w, h, c_idx, hf_idx, vf_idx); + } else { + mc_bi(lc, inter, inter_stride, ref[0]->frame, ref[1]->frame, mvf, orig_mvf, + x, y, w, h, c_idx, do_bdof, hf_idx, vf_idx); + } + if (do_ciip) { + const int intra_weight = ciip_derive_intra_weight(lc, x0, y0, sbw, sbh); + fc->vvcdsp.intra.intra_pred(lc, x0, y0, sbw, sbh, c_idx); + if (!c_idx && lc->sc->sh.r->sh_lmcs_used_flag) + fc->vvcdsp.lmcs.filter(inter, inter_stride, w, h, &fc->ps.lmcs.fwd_lut); + fc->vvcdsp.inter.put_ciip(dst, dst_stride, w, h, inter, inter_stride, intra_weight); + } } } @@ -720,7 +670,6 @@ static void derive_sb_mv(VVCLocalContext *lc, MvField *mv, MvField *orig_mv, int static void pred_regular_blk(VVCLocalContext *lc, const int skip_ciip) { - const VVCFrameContext *fc = lc->fc; const CodingUnit *cu = lc->cu; PredictionUnit *pu = &lc->cu->pu; const MotionInfo *mi = &pu->mi; @@ -742,9 +691,7 @@ static void pred_regular_blk(VVCLocalContext *lc, const int skip_ciip) ff_vvc_set_neighbour_available(lc, x0, y0, sbw, sbh); derive_sb_mv(lc, &mv, &orig_mv, &sb_bdof_flag, x0, y0, sbw, sbh); - pred_regular_luma(lc, mi->hpel_if_idx, mi->hpel_if_idx, &mv, x0, y0, sbw, sbh, &orig_mv, sb_bdof_flag); - if (fc->ps.sps->r->sps_chroma_format_idc) - pred_regular_chroma(lc, &mv, x0, y0, sbw, sbh, &orig_mv, pu->dmvr_flag); + pred_regular(lc, &mv, &orig_mv, x0, y0, sbw, sbh, sb_bdof_flag, LUMA); } } } @@ -804,9 +751,9 @@ static void pred_affine_blk(VVCLocalContext *lc) if (fc->ps.sps->r->sps_chroma_format_idc) { if (!av_mod_uintp2(sby, vs) && !av_mod_uintp2(sbx, hs)) { MvField mvc; - derive_affine_mvc(&mvc, fc, mv, x, y, sbw, sbh); - pred_regular_chroma(lc, &mvc, x, y, sbw< X-Patchwork-Id: 49020 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a48:b0:1af:fc2d:ff5a with SMTP id zu8csp3924705pzb; Sun, 19 May 2024 06:42:24 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXChuTYfy2gXMNUB7i+5nGf4zc8xvlf1QQsMSNPl+K+u5Vy6u25/pmcCwjrsDGw8Ydo57J720EG4fc/RUVksKdTaFWwumHwk4sklA== X-Google-Smtp-Source: AGHT+IFXs/eBhSoLlBy24rCFuoAvMy2BYFdpdk9ymbpMq5cSpiIqvr3LctOIUnZNAQ0XzwSubVV1 X-Received: by 2002:ac2:5331:0:b0:51d:a8ce:540 with SMTP id 2adb3069b0e04-5220fd7bb24mr22107357e87.35.1716126144131; Sun, 19 May 2024 06:42:24 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 2adb3069b0e04-522036456f7si6719880e87.576.2024.05.19.06.42.23; Sun, 19 May 2024 06:42:24 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=Dt6PK4kk; 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 ADC1568CF25; Sun, 19 May 2024 16:40:14 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from SINPR02CU002.outbound.protection.outlook.com (mail-southeastasiaazolkn19011003.outbound.protection.outlook.com [52.103.65.3]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D08AB68D130 for ; Sun, 19 May 2024 16:39:54 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JcD4GwfkAY1R9MPRScEpLXo20VJpTjFcr42/wWNVnwmYZGDeZ4ZrBCVONoOgkKMGuiWTJjIxl1C7C6Iyg8k+YK7gFtu0pdUvCtl5bH4Io7tmrCFWlE6baXF0dxP9gohWegFyJ6sZMe0eC0FCD8Uh6dGZNAyn+LzpIBJyNzJbEUuWzFKs5vauJ5M45qgwPMqwpD0ZsE/tC+7jvTXLRTmAwGjZaPyLblw1zkMBRgj13v5FPhqaNYNKelUqrD0nvumCzuSOUTwFgE5kF5SHQOvoe2V9U5z94x6HHrEFJW0CKgoHal2+ud5m3If0nk1x6QOoN7k7stjjqNAAQyyOmTKURQ== 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=nvAzFc9Dtx2wLsE6ZZaFmKhJXote2+sxLTVt00dycLI=; b=jq5oD74OljYRASlB4hZRzAS0Zpz305al95keSWuwk+QxdxvwJ94BF8dtOgAyHfJYQkwf4NC2OGF9d1ODKdrwEJu7wPSjkfkDoifoQODrI+Ja3IDE6sRiWeJ9MRGMlepKQqiOSgUbkD522FuliTVp4MZ6YzEF/hLFd6jtdc7k4MDrwqxUMxVqlZVgfRrq1GzZ4UiY0nZ4+C74cuvunAHlEF6X6icJyADPQuZT2x2+gH/bTd1tV3QzYe4AASo2YgtmjTjbakzgWe9qRLoS4eakGE7ornHTCojqjmSu3+YjPtRT+lWN/uTgiqvUPX8esataBxDbFAXISA43tliNDHJPdw== 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=nvAzFc9Dtx2wLsE6ZZaFmKhJXote2+sxLTVt00dycLI=; b=Dt6PK4kkyAt1/1wi93xR9rtIUJLJ9+2XR6wqkO/QTsqZDPx9cMlPGg34gTqW3mcheiEcS3ii87vgaYBVBt+buK7NK/jwZMJrseUjrthGvVdrco2Z52TyqVEEq2nMHaXJtwCey3IXuU12qO5ibDCKC7sxncSpWJpT0zA2HqlELXaECgiLA4mcY20RGLZFtcpSTCBwtfqwmiZ5WIDPJkoexCnPAxOYTpWmJaBy89v7J7JUobnN4620b+CMrwtgSAxOmcg5vTPb6IcQSLnS+OTPpn4gSluHmZ3sSd5CPjQQP8RKFCx7F0UYpoiGtITVvs4FN9jMTyDLIJDTTkMfkyIjsg== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by TYUPR06MB6098.apcprd06.prod.outlook.com (2603:1096:400:358::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.34; Sun, 19 May 2024 13:39:37 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca%4]) with mapi id 15.20.7587.030; Sun, 19 May 2024 13:39:37 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sun, 19 May 2024 21:27:38 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240519132749.790832-1-nuomi2021@gmail.com> References: <20240519132749.790832-1-nuomi2021@gmail.com> X-TMN: [cNjlK1AytBB/1+TNysHywzcvikufmcBv] X-ClientProxiedBy: TYCP301CA0017.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:381::8) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240519132749.790832-7-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|TYUPR06MB6098:EE_ X-MS-Office365-Filtering-Correlation-Id: 99f28640-60f6-429d-aa5e-08dc7809208d X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|440099019|3412199016|1710799017; X-Microsoft-Antispam-Message-Info: Fav0iojGv21Iio5afmzPnwNglniShlUvuBjUK34ie8cehIdKAnlkxnvhSbp5mYLGaWJ7bBMGorZWMXp8Jx31njSkLEUNfCOVq4EhHWVaL022CGYPX8Et5x85mis0UE88nCjEP4KqDbSlomMlJ4yEz9WIsAF6QlTD7jkTY7ScN7wkz5i2abgDpplph8a4q+zpn0YbNf9S8HwMisPCQuCw2yWRnhI5jJhKbtiqz7XyiuwheB6boJ0tgfKEFf1y9FrPsoarTsnpq+pP4kgaJtk+onSNcvK1S+6jH5fE4gQzN+2NYLFFQV5z63VgnI8g2vAoQKdWFPiqjtCZaOR4QpphmfxqKoVyvTH5BzXIiY9a78YRmZZi+XldL14XYaeUfm9eDXwgTXq2yDdKp3fm+G1aVZQ73AWNMVv00WURnGiiCzah0R/HaNFaMiCX3AwVVFR6z8ZJkeQGR+hq1OiyNZgY0kSpHfnlPUwPuBXMtl5j9aJhoYHwG/CS6GUUi6W05ywfC/KXXm2lA5zWBjVlB1dhjlBaoY1djtUEuPfDGiF2B+RDROVU8DwFLlTkxDLoYsdtuRLjQ9aOqtjTeLAvWZo+5rkYhQ5yVCN5E4dGLBIEyrCdzvB9KrcF/n/l1WKaLCdY X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: mkFqr6RWCoMTYn5mfxKPtt9ZhglB8kv07y/gduNzGaPPKtsmlC4MFKMczm1oX051f4MuuaEm6n26NTVCNVUN1+iPJ63AgGqW0a91ml/DpjiNXPBk9uWH7Uvjb7qPtzR0fTGBav5FEf/dzg1wAR3ssz+OcOMhWumi70O5gwNTyNtdtx8bQ/mTIyUid8WTVKzqQ7JmjHaN0NRgDOAMQR9dwup+ZFd0mp+pvbRArwtCtYrHpdlmw3fgAAi2tv055t28vBGEoaj1C0Ed5fqb4ifQdnQ/IzCMP03TOgsIp/kp45A2U7udtiEa2v3eoVrZNvgC/SDXTC1NdPNLYMOeLQe/Aq5AxsutuhXPx+R47HaWrzW0l+Bq7s8Iua0W8JKy6L3bX76iJ5xA+r394b6Dqvxhvr62Yp/P57ffYIl917fBZdoChiEudKRRVBn0qEJKtxRvyMKENZJpIlJHMWKhLwaaulT+a/PaD/dYlLFqu8s5W8alg3hJKiGmB9hU+ACAK1dRdUXXrUDXjsN7v+loM6zU+xqVgsz7FgoPTX8yzlYk7y+Fictr4CeNCFzTlJNqmaZRtgkNklH0Mp5V8nWSJcvzUW4pA7LRRnbg9Hda/NA/YFhlU64PZYecsXcSaVj4zo+2N2cO+3/n+N8M3FZ5OCAzONNFMxK+Ns9y6Id2ugCX4GGEazg7O2YAhjSVyTrvK5GN+Wszi9RlcolxZ9/IEQKuwtBwDcYZrcvPgRLmIsbSN0tr3eh5J6mRTjvADOPqBMnEhHYZilwzoReYD8ReQsHIN0vWcyhWnyC2f3haZDEZZcQfX0Qp4GVS9vkNTdGEc5I5SGX6gUDOLiCXI89lZblLkgRCJgpzk8NP8g9SaenoN+bDRF+IVPgynKRz7PvSaZHHM+vz1zB2mK9AnDGgwEuKcKCCBUZEUVgvlT3RVIXAMuyaxW3wbd8u8uW2NOP16ogLwnhC2YDxvE56ItsrsKCElJSRnTlgp4YQh7Ezz9+03gIZV+O97q1AxBrUat3CyTDb9wZjdNX8GH3meQ48Axp9c6jdK3DR94obzZaUr42jp87SnEoNeK3R0W5CQpVUUWbC0SGMw8XovNr6y2/SshsBqcE0JWoXLqPJvlJAjM4LhUoKDDoSMLmn1QhD1v+22U6aKG8dXDjMFIHoXeOn6/cqFPe6T//mnopi92mPxHYcIg0x9YoM6pYayis/+FWbmm+anpnaUem5ERAPMVoAf7CR6/DWtAnPMwekdrVj+kajcQRy8Hgix5/vL4P2/wuMizL3gBG+1mx1WxRkBWCpTzplsA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 99f28640-60f6-429d-aa5e-08dc7809208d X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2024 13:39:37.7926 (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: TYUPR06MB6098 Subject: [FFmpeg-devel] [PATCH 07/18] avcodec/vvcdec: refact out VVCRefPic from RefPicList 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: QsJeAAb/xrfe --- libavcodec/vvc/ctu.c | 10 +++++----- libavcodec/vvc/dec.c | 4 ++-- libavcodec/vvc/dec.h | 10 +++++++--- libavcodec/vvc/filter.c | 22 +++++++++++----------- libavcodec/vvc/inter.c | 4 ++-- libavcodec/vvc/mvs.c | 36 ++++++++++++++++++------------------ libavcodec/vvc/refs.c | 11 ++++++----- libavcodec/vvc/thread.c | 2 +- 8 files changed, 52 insertions(+), 47 deletions(-) diff --git a/libavcodec/vvc/ctu.c b/libavcodec/vvc/ctu.c index 53f92ca10f..242caa58f7 100644 --- a/libavcodec/vvc/ctu.c +++ b/libavcodec/vvc/ctu.c @@ -1263,8 +1263,8 @@ static void derive_mmvd(const VVCLocalContext *lc, MvField *mvf, const Mv *mmvd_ const RefPicList *rpl = sc->rpl; const int poc = lc->fc->ps.ph.poc; const int diff[] = { - poc - rpl[0].list[mvf->ref_idx[0]], - poc - rpl[1].list[mvf->ref_idx[1]] + poc - rpl[L0].refs[mvf->ref_idx[L0]].poc, + poc - rpl[L1].refs[mvf->ref_idx[L1]].poc }; const int sign = FFSIGN(diff[0]) != FFSIGN(diff[1]); @@ -1275,7 +1275,7 @@ static void derive_mmvd(const VVCLocalContext *lc, MvField *mvf, const Mv *mmvd_ const int i = FFABS(diff[0]) < FFABS(diff[1]); const int o = !i; mmvd[i] = *mmvd_offset; - if (!rpl[0].isLongTerm[mvf->ref_idx[0]] && !rpl[1].isLongTerm[mvf->ref_idx[1]]) { + if (!rpl[L0].refs[mvf->ref_idx[L0]].is_lt && !rpl[L1].refs[mvf->ref_idx[L1]].is_lt) { ff_vvc_mv_scale(&mmvd[o], mmvd_offset, diff[i], diff[o]); } else { @@ -1699,8 +1699,8 @@ static void derive_dmvr_bdof_flag(const VVCLocalContext *lc, PredictionUnit *pu) pu->bdof_flag = 0; if (mi->pred_flag == PF_BI && - (poc - rpl0->list[ref_idx[L0]] == rpl1->list[ref_idx[L1]] - poc) && - !rpl0->isLongTerm[ref_idx[L0]] && !rpl1->isLongTerm[ref_idx[L1]] && + (poc - rpl0->refs[ref_idx[L0]].poc == rpl1->refs[ref_idx[L1]].poc - poc) && + !rpl0->refs[ref_idx[L0]].is_lt && !rpl1->refs[ref_idx[L1]].is_lt && !cu->ciip_flag && !mi->bcw_idx && !w->weight_flag[L0][LUMA][mi->ref_idx[L0]] && !w->weight_flag[L1][LUMA][mi->ref_idx[L1]] && diff --git a/libavcodec/vvc/dec.c b/libavcodec/vvc/dec.c index 25cdb39cab..b4c35330eb 100644 --- a/libavcodec/vvc/dec.c +++ b/libavcodec/vvc/dec.c @@ -403,8 +403,8 @@ static int8_t smvd_find(const VVCFrameContext *fc, const SliceContext *sc, int l int8_t idx = -1; int old_diff = -1; for (int i = 0; i < rsh->num_ref_idx_active[lx]; i++) { - if (!rpl->isLongTerm[i]) { - int diff = poc - rpl->list[i]; + if (!rpl->refs[i].is_lt) { + int diff = poc - rpl->refs[i].poc; if (find(idx, diff, old_diff)) { idx = i; old_diff = diff; diff --git a/libavcodec/vvc/dec.h b/libavcodec/vvc/dec.h index 4dacefc06a..205427f681 100644 --- a/libavcodec/vvc/dec.h +++ b/libavcodec/vvc/dec.h @@ -42,10 +42,14 @@ #define L0 0 #define L1 1 +typedef struct VVCRefPic { + struct VVCFrame *ref; + int poc; + int is_lt; // is long term reference +} VVCRefPic; + typedef struct RefPicList { - struct VVCFrame *ref[VVC_MAX_REF_ENTRIES]; - int list[VVC_MAX_REF_ENTRIES]; - int isLongTerm[VVC_MAX_REF_ENTRIES]; + VVCRefPic refs[VVC_MAX_REF_ENTRIES]; int nb_refs; } RefPicList; diff --git a/libavcodec/vvc/filter.c b/libavcodec/vvc/filter.c index 8f44255ce4..7844d34eac 100644 --- a/libavcodec/vvc/filter.c +++ b/libavcodec/vvc/filter.c @@ -321,9 +321,9 @@ static int boundary_strength(const VVCLocalContext *lc, const MvField *curr, con if (curr->pred_flag == PF_BI && neigh->pred_flag == PF_BI) { // same L0 and L1 - if (rpl[0].list[curr->ref_idx[0]] == neigh_rpl[0].list[neigh->ref_idx[0]] && - rpl[0].list[curr->ref_idx[0]] == rpl[1].list[curr->ref_idx[1]] && - neigh_rpl[0].list[neigh->ref_idx[0]] == neigh_rpl[1].list[neigh->ref_idx[1]]) { + if (rpl[L0].refs[curr->ref_idx[L0]].poc == neigh_rpl[L0].refs[neigh->ref_idx[L0]].poc && + rpl[L0].refs[curr->ref_idx[L0]].poc == rpl[L1].refs[curr->ref_idx[L1]].poc && + neigh_rpl[L0].refs[neigh->ref_idx[L0]].poc == neigh_rpl[L1].refs[neigh->ref_idx[L1]].poc) { if ((FFABS(neigh->mv[0].x - curr->mv[0].x) >= 8 || FFABS(neigh->mv[0].y - curr->mv[0].y) >= 8 || FFABS(neigh->mv[1].x - curr->mv[1].x) >= 8 || FFABS(neigh->mv[1].y - curr->mv[1].y) >= 8) && (FFABS(neigh->mv[1].x - curr->mv[0].x) >= 8 || FFABS(neigh->mv[1].y - curr->mv[0].y) >= 8 || @@ -331,15 +331,15 @@ static int boundary_strength(const VVCLocalContext *lc, const MvField *curr, con return 1; else return 0; - } else if (neigh_rpl[0].list[neigh->ref_idx[0]] == rpl[0].list[curr->ref_idx[0]] && - neigh_rpl[1].list[neigh->ref_idx[1]] == rpl[1].list[curr->ref_idx[1]]) { + } else if (neigh_rpl[L0].refs[neigh->ref_idx[L0]].poc == rpl[L0].refs[curr->ref_idx[L0]].poc && + neigh_rpl[L1].refs[neigh->ref_idx[L1]].poc == rpl[L1].refs[curr->ref_idx[L1]].poc) { if (FFABS(neigh->mv[0].x - curr->mv[0].x) >= 8 || FFABS(neigh->mv[0].y - curr->mv[0].y) >= 8 || FFABS(neigh->mv[1].x - curr->mv[1].x) >= 8 || FFABS(neigh->mv[1].y - curr->mv[1].y) >= 8) return 1; else return 0; - } else if (neigh_rpl[1].list[neigh->ref_idx[1]] == rpl[0].list[curr->ref_idx[0]] && - neigh_rpl[0].list[neigh->ref_idx[0]] == rpl[1].list[curr->ref_idx[1]]) { + } else if (neigh_rpl[L1].refs[neigh->ref_idx[L1]].poc == rpl[L0].refs[curr->ref_idx[L0]].poc && + neigh_rpl[L0].refs[neigh->ref_idx[L0]].poc == rpl[L1].refs[curr->ref_idx[L1]].poc) { if (FFABS(neigh->mv[1].x - curr->mv[0].x) >= 8 || FFABS(neigh->mv[1].y - curr->mv[0].y) >= 8 || FFABS(neigh->mv[0].x - curr->mv[1].x) >= 8 || FFABS(neigh->mv[0].y - curr->mv[1].y) >= 8) return 1; @@ -354,18 +354,18 @@ static int boundary_strength(const VVCLocalContext *lc, const MvField *curr, con if (curr->pred_flag & 1) { A = curr->mv[0]; - ref_A = rpl[0].list[curr->ref_idx[0]]; + ref_A = rpl[L0].refs[curr->ref_idx[L0]].poc; } else { A = curr->mv[1]; - ref_A = rpl[1].list[curr->ref_idx[1]]; + ref_A = rpl[L1].refs[curr->ref_idx[L1]].poc; } if (neigh->pred_flag & 1) { B = neigh->mv[0]; - ref_B = neigh_rpl[0].list[neigh->ref_idx[0]]; + ref_B = neigh_rpl[L0].refs[neigh->ref_idx[L0]].poc; } else { B = neigh->mv[1]; - ref_B = neigh_rpl[1].list[neigh->ref_idx[1]]; + ref_B = neigh_rpl[L1].refs[neigh->ref_idx[L1]].poc; } if (ref_A == ref_B) { diff --git a/libavcodec/vvc/inter.c b/libavcodec/vvc/inter.c index 3bf06d6d53..cd96707c02 100644 --- a/libavcodec/vvc/inter.c +++ b/libavcodec/vvc/inter.c @@ -394,7 +394,7 @@ static int pred_get_refs(const VVCLocalContext *lc, VVCFrame *ref[2], const MvF for (int mask = PF_L0; mask <= PF_L1; mask++) { if (mv->pred_flag & mask) { const int lx = mask - PF_L0; - ref[lx] = rpl[lx].ref[mv->ref_idx[lx]]; + ref[lx] = rpl[lx].refs[mv->ref_idx[lx]].ref; if (!ref[lx]) return AVERROR_INVALIDDATA; } @@ -450,7 +450,7 @@ static void pred_gpm_blk(VVCLocalContext *lc) for (int i = 0; i < 2; i++) { const MvField *mv = pu->gpm_mv + i; const int lx = mv->pred_flag - PF_L0; - VVCFrame *ref = lc->sc->rpl[lx].ref[mv->ref_idx[lx]]; + VVCFrame *ref = lc->sc->rpl[lx].refs[mv->ref_idx[lx]].ref; if (!ref) return; mc(lc, tmp[i], ref->frame, mv->mv + lx, x, y, width, height, c_idx); diff --git a/libavcodec/vvc/mvs.c b/libavcodec/vvc/mvs.c index fe7d923460..9407fbfd8a 100644 --- a/libavcodec/vvc/mvs.c +++ b/libavcodec/vvc/mvs.c @@ -88,8 +88,8 @@ static int check_mvset(Mv *mvLXCol, Mv *mvCol, const RefPicList *refPicList, int X, int refIdxLx, const RefPicList *refPicList_col, int listCol, int refidxCol) { - int cur_lt = refPicList[X].isLongTerm[refIdxLx]; - int col_lt = refPicList_col[listCol].isLongTerm[refidxCol]; + int cur_lt = refPicList[X].refs[refIdxLx].is_lt; + int col_lt = refPicList_col[listCol].refs[refidxCol].is_lt; int col_poc_diff, cur_poc_diff; if (cur_lt != col_lt) { @@ -98,8 +98,8 @@ static int check_mvset(Mv *mvLXCol, Mv *mvCol, return 0; } - col_poc_diff = colPic - refPicList_col[listCol].list[refidxCol]; - cur_poc_diff = poc - refPicList[X].list[refIdxLx]; + col_poc_diff = colPic - refPicList_col[listCol].refs[refidxCol].poc; + cur_poc_diff = poc - refPicList[X].refs[refIdxLx].poc; mv_compression(mvCol); if (cur_lt || col_poc_diff == cur_poc_diff) { @@ -126,7 +126,7 @@ int ff_vvc_no_backward_pred_flag(const VVCLocalContext *lc) for (j = 0; j < 2; j++) { for (i = 0; i < lc->sc->sh.r->num_ref_idx_active[j]; i++) { - if (rpl[j].list[i] > lc->fc->ps.ph.poc) { + if (rpl[j].refs[i].poc > lc->fc->ps.ph.poc) { check_diffpicount++; break; } @@ -1059,9 +1059,9 @@ static int sb_temporal_luma_motion_data(const VVCLocalContext *lc, const MvField colPic = ref->poc; if (a1) { - if ((a1->pred_flag & PF_L0) && colPic == rpl[0].list[a1->ref_idx[0]]) + if ((a1->pred_flag & PF_L0) && colPic == rpl[L0].refs[a1->ref_idx[L0]].poc) *temp_mv = a1->mv[0]; - else if ((a1->pred_flag & PF_L1) && colPic == rpl[1].list[a1->ref_idx[1]]) + else if ((a1->pred_flag & PF_L1) && colPic == rpl[L1].refs[a1->ref_idx[L1]].poc) *temp_mv = a1->mv[1]; ff_vvc_round_mv(temp_mv, 0, 4); } @@ -1418,16 +1418,16 @@ static int mvp_candidate(const VVCLocalContext *lc, const int x_cand, const int const MvField* tab_mvf = fc->tab.mvf; const MvField *mvf = &TAB_MVF(x_cand, y_cand); const PredFlag maskx = lx + 1; - const int poc = rpl[lx].list[ref_idx[lx]]; + const int poc = rpl[lx].refs[ref_idx[lx]].poc; int available = 0; - if ((mvf->pred_flag & maskx) && rpl[lx].list[mvf->ref_idx[lx]] == poc) { + if ((mvf->pred_flag & maskx) && rpl[lx].refs[mvf->ref_idx[lx]].poc == poc) { available = 1; *mv = mvf->mv[lx]; } else { const int ly = !lx; const PredFlag masky = ly + 1; - if ((mvf->pred_flag & masky) && rpl[ly].list[mvf->ref_idx[ly]] == poc) { + if ((mvf->pred_flag & masky) && rpl[ly].refs[mvf->ref_idx[ly]].poc == poc) { available = 1; *mv = mvf->mv[ly]; } @@ -1450,15 +1450,15 @@ static int affine_mvp_candidate(const VVCLocalContext *lc, const MvField *mvf = &TAB_MVF(x_nb, y_nb); RefPicList* rpl = lc->sc->rpl; const PredFlag maskx = lx + 1; - const int poc = rpl[lx].list[ref_idx[lx]]; + const int poc = rpl[lx].refs[ref_idx[lx]].poc; - if ((mvf->pred_flag & maskx) && rpl[lx].list[mvf->ref_idx[lx]] == poc) { + if ((mvf->pred_flag & maskx) && rpl[lx].refs[mvf->ref_idx[lx]].poc == poc) { available = 1; affine_cps_from_nb(lc, x_nb, y_nb, nbw, nbh, lx, cps, num_cp); } else { const int ly = !lx; const PredFlag masky = ly + 1; - if ((mvf->pred_flag & masky) && rpl[ly].list[mvf->ref_idx[ly]] == poc) { + if ((mvf->pred_flag & masky) && rpl[ly].refs[mvf->ref_idx[ly]].poc == poc) { available = 1; affine_cps_from_nb(lc, x_nb, y_nb, nbw, nbh, ly, cps, num_cp); } @@ -1550,7 +1550,7 @@ static int mvp_history_candidates(const VVCLocalContext *lc, { const EntryPoint* ep = lc->ep; const RefPicList* rpl = lc->sc->rpl; - const int poc = rpl[lx].list[ref_idx]; + const int poc = rpl[lx].refs[ref_idx].poc; if (ep->num_hmvp == 0) return 0; @@ -1559,7 +1559,7 @@ static int mvp_history_candidates(const VVCLocalContext *lc, for (int j = 0; j < 2; j++) { const int ly = (j ? !lx : lx); PredFlag mask = PF_L0 + ly; - if ((h->pred_flag & mask) && poc == rpl[ly].list[h->ref_idx[ly]]) { + if ((h->pred_flag & mask) && poc == rpl[ly].refs[h->ref_idx[ly]].poc) { if (mvp_lx_flag == num_cands) { *mv = h->mv[ly]; ff_vvc_round_mv(mv, amvr_shift, amvr_shift); @@ -1725,14 +1725,14 @@ static int affine_mvp_constructed_cp(NeighbourContext *ctx, 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]; - if ((mvf->pred_flag & maskx) && rpl[lx].list[mvf->ref_idx[lx]] == poc) { + const int poc = rpl[lx].refs[ref_idx].poc; + if ((mvf->pred_flag & maskx) && rpl[lx].refs[mvf->ref_idx[lx]].poc == poc) { available = 1; *cp = mvf->mv[lx]; } else { const int ly = !lx; const PredFlag masky = ly + 1; - if ((mvf->pred_flag & masky) && rpl[ly].list[mvf->ref_idx[ly]] == poc) { + if ((mvf->pred_flag & masky) && rpl[ly].refs[mvf->ref_idx[ly]].poc == poc) { available = 1; *cp = mvf->mv[ly]; } diff --git a/libavcodec/vvc/refs.c b/libavcodec/vvc/refs.c index 6694bc4c51..74c105b619 100644 --- a/libavcodec/vvc/refs.c +++ b/libavcodec/vvc/refs.c @@ -352,7 +352,8 @@ static VVCFrame *generate_missing_ref(VVCContext *s, VVCFrameContext *fc, int po static int add_candidate_ref(VVCContext *s, VVCFrameContext *fc, RefPicList *list, int poc, int ref_flag, uint8_t use_msb) { - VVCFrame *ref = find_ref_idx(s, fc, poc, use_msb); + VVCFrame *ref = find_ref_idx(s, fc, poc, use_msb); + VVCRefPic *refp = &list->refs[list->nb_refs]; if (ref == fc->ref || list->nb_refs >= VVC_MAX_REF_ENTRIES) return AVERROR_INVALIDDATA; @@ -363,9 +364,9 @@ static int add_candidate_ref(VVCContext *s, VVCFrameContext *fc, RefPicList *lis return AVERROR(ENOMEM); } - list->list[list->nb_refs] = poc; - list->ref[list->nb_refs] = ref; - list->isLongTerm[list->nb_refs] = ref_flag & VVC_FRAME_FLAG_LONG_REF; + refp->poc = poc; + refp->ref = ref; + refp->is_lt = ref_flag & VVC_FRAME_FLAG_LONG_REF; list->nb_refs++; mark_ref(ref, ref_flag); @@ -463,7 +464,7 @@ int ff_vvc_slice_rpl(VVCContext *s, VVCFrameContext *fc, SliceContext *sc) } if ((!rsh->sh_collocated_from_l0_flag) == lx && rsh->sh_collocated_ref_idx < rpl->nb_refs) - fc->ref->collocated_ref = rpl->ref[rsh->sh_collocated_ref_idx]; + fc->ref->collocated_ref = rpl->refs[rsh->sh_collocated_ref_idx].ref; } return 0; } diff --git a/libavcodec/vvc/thread.c b/libavcodec/vvc/thread.c index 3b27811db2..2654b40058 100644 --- a/libavcodec/vvc/thread.c +++ b/libavcodec/vvc/thread.c @@ -294,7 +294,7 @@ static void schedule_inter(VVCContext *s, VVCFrameContext *fc, const SliceContex for (int lx = 0; lx < 2; lx++) { for (int i = 0; i < sh->r->num_ref_idx_active[lx]; i++) { const int y = ctu->max_y[lx][i]; - VVCFrame *ref = sc->rpl[lx].ref[i]; + VVCFrame *ref = sc->rpl[lx].refs[i].ref; if (ref && y >= 0) add_progress_listener(ref, &t->listener[lx][i], t, s, VVC_PROGRESS_PIXEL, y + LUMA_EXTRA_AFTER); } From patchwork Sun May 19 13:27:39 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 49023 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a48:b0:1af:fc2d:ff5a with SMTP id zu8csp3927654pzb; Sun, 19 May 2024 06:50:09 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUrYaDyYWZzUQEzRDK0T32W3E9K9yAbxYaxeC4xRQESSPQKkDsXRlgi8yzfSrsuuTifpusOo7q3jGLw8LDwcaZwC3Akv+ZLZOUR/A== X-Google-Smtp-Source: AGHT+IFHQ11Dve+Oo51evJMFE63gkWR3bX/gxw1HTVad+7HEj3M/mIV3dH6pDNvdiT9NSSMpRWTS X-Received: by 2002:a17:906:d8cd:b0:a59:dbb0:ddcf with SMTP id a640c23a62f3a-a5a5a60c1e4mr1316709666b.0.1716126609058; Sun, 19 May 2024 06:50:09 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a5a17be6a52si1278658466b.727.2024.05.19.06.50.08; Sun, 19 May 2024 06:50:09 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=ixCA+Wp5; 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 6278C68D130; Sun, 19 May 2024 16:40:00 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from SINPR02CU002.outbound.protection.outlook.com (mail-southeastasiaazolkn19011003.outbound.protection.outlook.com [52.103.65.3]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C4DE968CAC9 for ; Sun, 19 May 2024 16:39:55 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j1yBU+PGcOh0FwJjwDQUwcCp4EvcR1qYbackdgwChmLjfLYJmy2JLZhyEgQuBsu+z8lK+FJIYmdiQui7onw+t1Cl4ht8HDT2BBk02SoUAp6Ltu9eOQ3XqbuuVAkECfmtwfyjpD+UK5DRbKoQ6u0Xy7PjI6zIJpLeZZuqgkdbPmVOMy7Ew9bBQojENkSYNf0fjbkoGJjJN0Xpaq19gfjfEhIydKLTxO+7NOiDo1HrbWARo28T6QI7HXKNg3uNFoX96nhjSbtcnfyqMfp78RG4C0ziaR7nLoePhktMhoseLc94YdLoCEmXCf4e/7aBeCWTwjGeHIZowT0tErN6d3j/HA== 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=BKYx8ntkqYVCiCIJu4q2TbtXD9pi8Th1H5JProzlz6w=; b=l+pkepBWhhCNgxoB/YS2QZs2Fgsv2ME9N3OW43dSWPmppkWom6ebFnnO/k6KvYmEMNAu8HCw3utH9TMXu+4AuwhsyXJHiqF9ErKNRU/MIVj++gmXlwwywKfAabYLiw7nTJzg4xix1WwS/9N0gXn6oHMFWXUeQamU1X6xbwf6Vu6QlX6KmjJk5lIGZ+EhpxQclb5YzK9ANNksFSXzb8yEfZYVWGqvg+dpDlJxDjga3HljWG/59SuzKTD8JINvIgn6EFKTcqIKaLF1CTPWGF66tliQPCknk4oKI6NMj8fDfI1qvLQjoImTFUxjhhLmbgwxIs/xoPDs83w4b9BcrEYHMQ== 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=BKYx8ntkqYVCiCIJu4q2TbtXD9pi8Th1H5JProzlz6w=; b=ixCA+Wp5Y0C/s15MyfFLPlz7BExxiy2peHrVqXxn4k9bbwS4yhH817vcAqiUswUr9ZqOMw4s5QjOlzqdV3c+UX9NSCyjJrJgacTQ6YxzfWekl/9D1FS8zVAK5HO+e895/8XVR2qXsVZ5fTuBJZ9E51iP/Qs6HLHhEn3Xt+Hu27Yhu1HgeXPZmLGbcBKpWZn0rRyKT39IB7BluPaVa0z28a3enGFzS3wdvJNTuU6n6yGZYcmxvfVDr/OQ4gmuslcUo8NnrzqaQkVPptzernLtO6z/Rsl80MlA5bmlSdXajl6XIcOSK549POVC6mMoW7fkfpN5fm5EULOgLQyabYkopg== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by TYUPR06MB6098.apcprd06.prod.outlook.com (2603:1096:400:358::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.34; Sun, 19 May 2024 13:39:38 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca%4]) with mapi id 15.20.7587.030; Sun, 19 May 2024 13:39:38 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sun, 19 May 2024 21:27:39 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240519132749.790832-1-nuomi2021@gmail.com> References: <20240519132749.790832-1-nuomi2021@gmail.com> X-TMN: [VRWJk6AauBmBc+bWFAeL/yqzvy1ftGA5] X-ClientProxiedBy: TYCP301CA0017.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:381::8) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240519132749.790832-8-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|TYUPR06MB6098:EE_ X-MS-Office365-Filtering-Correlation-Id: c4af293c-ff1f-4694-2d88-08dc78092107 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|440099019|3412199016|1710799017; X-Microsoft-Antispam-Message-Info: zI2MDwISdOBGqgLPvrqTZo37gFoiGCWAi1oatLk/u9KyQepD/4Sc0LjrGwVLJ8EZJgrSfxt3fgbxicSjamj6PxCQjup6yf2GLALZbq5B4KTTZkHD5FeWf8XvnS88FhCbkCAr7AsHDPep+UYkm1JNZriYlPXaszrh7uViXwVpbW0MBpR/FVyzM1VMSvUCWDz4s1txk6AlkNl0/NlCZNwPjBXiLuzpmWhEwaz3Q0NCBKV6zC6vPCtekgkvtnUFuMZPJeSNqc6bF//2wkXx2NRqasPZh52zXZ2n1Vhr463cTUk6Cma42Sm4oLi1txtX/LqXvsIMh+l5lngniL9tQOiJWsVRxlxp3t0gq8xsGnE38+1pvT0pHOD7BOf0RmzBgRVjBfQRXrcJ8q77C7cbf3NjiOGo++6JwJ4ZGMq1gyj9gL/BXrv6RU08Z/HprSbVF/M6eP0iEgrIfTJw4GGwng6/PBZuF6sMPzSJUlP5b27VN2dY6qBF73uUpMqCzgHpsDMeNr5UshLDMW5Qfw6sMraotAnK3d1UvlKaWwJLLUmrDw5CUmAQQpYrE2wX8reU8USaO2Fg17vbHZ/OU3l6zFO0zMIRPUpXsmgoByoF7a8Nu10tWXQ+Vfhs6PAQ2LDRG4nD X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: DRHU54raue6LTZF6OrR+Ywq3Aw1fjh8Ukvbq9Jv8aA9p2gJedtirlAzKlq9licNJf2pjuSSpKVB0Zu1wE7Y9j4NqK4h+/ltyAX74xPRbdEheD4137n9C4eSlmdXjhYgW9dNT9Z0ylia1r/uM7Fpm/IWjmlPtOQvjxsADybzFPgjgbsu/KziGLtLXSO6nYxbZMZIs6cWUMey5tBFT0XayAojyyQvyqIzKuwrwlQKsV+rQ56nLlTR7y8cTWFKitRKfFtFAhvH6isCt0KDHfeLAzX0cxhvqickgLvDMollCdordKFmJDfL5arkOhBkJsNhj5ReUlGpUZkVRgXW/Nzzno2pq5PhwycpjNVay45E2+3OehDm7VnurGV8xv46GJcWXWfKxlJ+Kr3xKTw2l/9z8B0ws4kwcLtb327L/ITm90c9InVwI5nsAZqMMus3tv7q1ZYgC7PBaIHzZYLBbEbhnZ+cIgnbm/ylX3tf09B9eAsu/xjCegs4diBEMnT26Apj/vCb1CoyVWBaAVeN6DG3DW1fo9wA8DToJbHS6WykGd6rqLN7DVt5gHS4zdi1B50TTJVu1yuS6tQ6+0AqkDm63iGzb5Yn00N6u7j9+dG9EQzdebs6gcAgJ2cyhNGjDIJ+5/UtErq09AohWVpAVg7xKv87AXcF06EDOqitIDfO1BxVvoQL2rffYfEBgC3+L3tC/9YsnmLap+lFlm5NIP7PH3RZ7UcJET3ExinB7emdsEybxMqMlZ8xJ2AS8zth8nYTevZ1CaXTbdgKZHRKe01ieQeAy0vyS6EFrDMwkEF4hDegKaC2hXaSTebb/vbePM7l4a2htVzK/f4jMfFxv312cyZJnQdaailSVOmJPXuRWaPjji7MbIT56ciw/84x0SC1QwC8dif6uZ6nUiiHYHIpZh/4AGgu+mqxDNWyNXLVc7xjznztT2VcRvRzg/uzM7hO3ZetcNIjyNrvWwQstb0DWo78+sCS6Sz4BzuUOqkBVowBRwLcdCRXIKmW57QS/DWlrsysHXe8FYiTQqU936JkJewJ4VcBVduuvdNnOhfAUuv2gTxNMdEFi9DWTkVcNHLU+RWUu8F688A4WvA2Wcv5PXnOO7pvjaJWqzf2l3P9zhR3c5uhsc9DCc9TWsdKQijI0uwuMmnW4TJ19vazq1Y10SDXSsci29kY2pCGcCRuqXiVSxJ+Piu+t05ijLR0l/22qVbAz6vOOfQicnNN/A3UiLxY7dittMY4qSoBDES295REOtsB3m+t5q+oDSjhTVq/DmO1GcKoeaPKN2XI0oJ2/eg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c4af293c-ff1f-4694-2d88-08dc78092107 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2024 13:39:38.5853 (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: TYUPR06MB6098 Subject: [FFmpeg-devel] [PATCH 08/18] avcodec/vvcdec: refact, pred_get_refs return VVCRefPic instead of VVCFrame 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: jpuqRUwQCQwh --- libavcodec/vvc/inter.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/libavcodec/vvc/inter.c b/libavcodec/vvc/inter.c index cd96707c02..23d9ac05e6 100644 --- a/libavcodec/vvc/inter.c +++ b/libavcodec/vvc/inter.c @@ -387,15 +387,15 @@ static void luma_prof_bi(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_ fc->vvcdsp.inter.avg(dst, dst_stride, tmp[L0], tmp[L1], block_w, block_h); } -static int pred_get_refs(const VVCLocalContext *lc, VVCFrame *ref[2], const MvField *mv) +static int pred_get_refs(const VVCLocalContext *lc, VVCRefPic *refp[2], const MvField *mv) { - const RefPicList *rpl = lc->sc->rpl; + RefPicList *rpl = lc->sc->rpl; for (int mask = PF_L0; mask <= PF_L1; mask++) { if (mv->pred_flag & mask) { const int lx = mask - PF_L0; - ref[lx] = rpl[lx].refs[mv->ref_idx[lx]].ref; - if (!ref[lx]) + refp[lx] = rpl[lx].refs + mv->ref_idx[lx]; + if (!refp[lx]->ref) return AVERROR_INVALIDDATA; } } @@ -487,9 +487,9 @@ static void pred_regular(VVCLocalContext *lc, const MvField *mvf, const MvField { const VVCFrameContext *fc = lc->fc; const int c_end = fc->ps.sps->r->sps_chroma_format_idc ? CR : LUMA; - VVCFrame *ref[2]; + VVCRefPic *refp[2]; - if (pred_get_refs(lc, ref, mvf) < 0) + if (pred_get_refs(lc, refp, mvf) < 0) return; for (int c_idx = c_start; c_idx <= c_end; c_idx++) { @@ -511,10 +511,10 @@ static void pred_regular(VVCLocalContext *lc, const MvField *mvf, const MvField if (mvf->pred_flag != PF_BI) { const int lx = mvf->pred_flag - PF_L0; - mc_uni(lc, inter, inter_stride, ref[lx]->frame, mvf, + mc_uni(lc, inter, inter_stride, refp[lx]->ref->frame, mvf, x, y, w, h, c_idx, hf_idx, vf_idx); } else { - mc_bi(lc, inter, inter_stride, ref[0]->frame, ref[1]->frame, mvf, orig_mvf, + mc_bi(lc, inter, inter_stride, refp[L0]->ref->frame, refp[L1]->ref->frame, mvf, orig_mvf, x, y, w, h, c_idx, do_bdof, hf_idx, vf_idx); } if (do_ciip) { @@ -660,10 +660,10 @@ static void derive_sb_mv(VVCLocalContext *lc, MvField *mv, MvField *orig_mv, int if (pu->bdof_flag) *sb_bdof_flag = 1; if (pu->dmvr_flag) { - VVCFrame* ref[2]; - if (pred_get_refs(lc, ref, mv) < 0) + VVCRefPic *refp[2]; + if (pred_get_refs(lc, refp, mv) < 0) return; - dmvr_mv_refine(lc, mv, orig_mv, sb_bdof_flag, ref[0]->frame, ref[1]->frame, x0, y0, sbw, sbh); + dmvr_mv_refine(lc, mv, orig_mv, sb_bdof_flag, refp[L0]->ref->frame, refp[L1]->ref->frame, x0, y0, sbw, sbh); set_dmvr_info(fc, x0, y0, sbw, sbh, mv); } } @@ -734,18 +734,18 @@ static void pred_affine_blk(VVCLocalContext *lc) uint8_t *dst0 = POS(0, x, y); const MvField *mv = ff_vvc_get_mvf(fc, x, y); - VVCFrame *ref[2]; + VVCRefPic *refp[2]; - if (pred_get_refs(lc, ref, mv) < 0) + if (pred_get_refs(lc, refp, mv) < 0) return; if (mi->pred_flag != PF_BI) { const int lx = mi->pred_flag - PF_L0; - luma_prof_uni(lc, dst0, fc->frame->linesize[0], ref[lx]->frame, + luma_prof_uni(lc, dst0, fc->frame->linesize[LUMA], refp[lx]->ref->frame, mv, x, y, sbw, sbh, pu->cb_prof_flag[lx], pu->diff_mv_x[lx], pu->diff_mv_y[lx]); } else { - luma_prof_bi(lc, dst0, fc->frame->linesize[0], ref[0]->frame, ref[1]->frame, + luma_prof_bi(lc, dst0, fc->frame->linesize[LUMA], refp[L0]->ref->frame, refp[L1]->ref->frame, mv, x, y, sbw, sbh); } if (fc->ps.sps->r->sps_chroma_format_idc) { From patchwork Sun May 19 13:27:40 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 49019 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a48:b0:1af:fc2d:ff5a with SMTP id zu8csp3924304pzb; Sun, 19 May 2024 06:41:12 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXg8Us7SzmyZD7qveQpnJUpNqKRsZXxV8r6yws/WgEHg0RDA0CHfxSfz/19C3uWnCi+f+gzGKUPHUsM1JoVJ5d+32Y7Af3pIWRGAA== X-Google-Smtp-Source: AGHT+IH61BxKk2Ji2mdNuOL59pJbuU2R1THY0WWUOmGOcEanfgQJnzUDr2/dnvMj8NLW5WbrIg7z X-Received: by 2002:a2e:82c4:0:b0:2d4:7292:92c0 with SMTP id 38308e7fff4ca-2e51ff4eb20mr165141361fa.20.1716126071999; Sun, 19 May 2024 06:41:11 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 38308e7fff4ca-2e4d163a8c1si66231181fa.344.2024.05.19.06.41.11; Sun, 19 May 2024 06:41:11 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=nEuhjDFk; 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 8C17468D180; Sun, 19 May 2024 16:40:03 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from SINPR02CU002.outbound.protection.outlook.com (mail-southeastasiaazolkn19011003.outbound.protection.outlook.com [52.103.65.3]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8428F68CFFE for ; Sun, 19 May 2024 16:39:56 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JK8T4F1AurEASsvNDiXSHoZVMAcCWDT5NA3Z4UqU1x0nebgpdtkykI4jmyScMuTyFDyQ1o6BZtIXD4NS2iYMDC5X58FSgYtCrPqywPniKbEyn6mQbw1Mke2dfjPTshrtDmW1sa7pHttgHA0/vvoSigWeLEN5/rdfDHYvfq7HxgVAOI29boqTl2wmjBWq689mVoFlu1wk2vqAMBJ+S+UKDIzpqmHm2wHxMNZGe2ipURi5f9QhIXw/5SPrDwyirNdIZvtJbJHHRTMmPm9vWoOyFf+wW0P1se8rfyp/bXLItbIQeBpkJGsRZg9S+f8oDhWPGxWRBV0oLz20atavyGvevQ== 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=om2E0K6dtZ419qMMCTol/Trsskg+JYsNqAIgeP6NFdk=; b=netViVo01m6yHJxi7fkJ49EoHwBNl2Mf3elBHE/6Ks07ZIjlnE3Pc7qFQxokZ3uwwLpwQcahkRQIJv3l1xgqkbbkjvB+kgOBkrf0KtVBZ8BT7UdXmbCHIGzEfhxyFL+NA21Awy4KvKplUbJtHEZSAicYtuHcHgsYne89hjM4SyvM3DPH4mLxt6a4acazxa6/voCuANHiaZklQ/JKXEqaQjcYMkPxFBqUjZ6+f/x/nVlMQ2r07SVcxmnvkqKKr4WtAtrIHPJiDoVX7Ad1DAFHHG9u2Yx8pBsRdS7KYydSZYZc3Agm++3bSvpE9Xvu4yEXGQwEnAFNo7W7BS7HIsLwGg== 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=om2E0K6dtZ419qMMCTol/Trsskg+JYsNqAIgeP6NFdk=; b=nEuhjDFk+e/jroDQT+kUSEmLNkhULZl/fa9pNvDTP0pucJCZ422lObDdOEGgdvdvxEsZQgm5IyQ5W450xZQ1Ck8bH96OC3zyL/GQWdBN37f8bwpocU0wcQalOcxkQs6vy6b1V11KzTG46oVBDmVkKr22krEP6sU8zNDuNZQ6sAf+MvskjtJMCIDE9zF4j8Qkcb6NHf4GMNouJYQ69Qzcg5NH0qJC/5c8UZ8yfIPC7aCO70Js7N9lSCoZt6odAwfTFAQqG+tkp8D2lipDc8lELmcb38NRAYvsz/SByQ15ULt6nQMv2D8roFFIUM2oYOjrOCpafAfFBkqHXFGXDtrbHQ== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by TYUPR06MB6098.apcprd06.prod.outlook.com (2603:1096:400:358::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.34; Sun, 19 May 2024 13:39:39 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca%4]) with mapi id 15.20.7587.030; Sun, 19 May 2024 13:39:39 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sun, 19 May 2024 21:27:40 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240519132749.790832-1-nuomi2021@gmail.com> References: <20240519132749.790832-1-nuomi2021@gmail.com> X-TMN: [eLbos/efjbpE2CLOhMwYG7oFF6H98qgg] X-ClientProxiedBy: TYCP301CA0017.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:381::8) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240519132749.790832-9-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|TYUPR06MB6098:EE_ X-MS-Office365-Filtering-Correlation-Id: de1f96f3-c69a-404f-6c11-08dc78092180 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|440099019|3412199016|1710799017; X-Microsoft-Antispam-Message-Info: kvio/UGcV3IOViDU86Lpo79tpI2XgeJ5iEQ7MmQuTB/ivSl+woTxPZMqyQvZwJvOZXunWawL7I2sRg8NEFEMiycrkGFDYkH0LijYTlpXhZtrg5+rpkE15htrfJjzMxE1nwxoPkl+lWWLRyYkzAVuv4HR5rLKk42sm5ug+C/F+NcwItojPGQcrNwi4V3dGgOySlhAqoPPDQTYyldI6TwvrOrbV8sVNGiUORb4U3z3rHzpxq1XdCbddXmj95SLe8BwTswEynbtSvZU+dPKS+1Oa/hFzYG7GlUWYlc/h7oQ0eNILF2iIDGXU2tXXSCViTFPizWRLYpYwpVXpFke47IsdUUBs1m5XO6Gq1kF6cJmQX8aQj8lrJeYZ+F6NUg1tVsq1/ufNdxEYrbw03tNeBScsp1Fal3ezHXDIe1WMehoDdcxlljTlO8asxbpO94uiLmDTjANlG30p97cdj2Y/G6UG719YUo5iOC5VpoQCCG/hRnMtEQzhsAS9rgIT5rJVOjd2wLhViRiYHfOooLxwRh4qyShI7CUKV2+4OkObdL5Zdtq2iczAy9XFXpA8cxcZr3PyVGBACjR0wwj9V6qYbxrIMaobx2lpwKc1RWv/clNaR8= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: AeM8sWeIlvidEBN7A9/tG60xH/2sxvWbZnvrBTBaDs78grppThoOHABPHPV8hwt8JvkarnoL0MiwobGYewfoL+DIdqnk23r6kJSKFAQpdBgCnznq+abtDmNoil42y0c3UXHtWpxv90+SI0ET9nATyPonkaJJsXetVW50Xbgis+hvla3a0IkGguDQ8vHPS7h8MaF4unxQfKqBuhHAn3fRs4ruIx/kdezU3Lql3CwJiTPCjTnx7LPTOaTjEpj9rjPPMhUAf3DAW16PNvkJ6ZQBnidgG3UXye9LoBhgyHeN4Q9p2s/7o0nS9rzW06fzj1G0xeZc2nidH3iC9SzuwQ2LHTC2WKu6P64gWw61w99C9oOJXDJsHISGJJ3pGNGHqUJ+aygMwpCePQDxtC1zKzz2acVYQe/488bYb6iIPfst1wtAcxbm4SbW/rRPAfrNJgy1JhB6Ly3BmLBYJOviK8NFqHPp3B5LPtI3njUfO7c0GUGMupBdpBg6hm1sV8BNBfC+Rhg/RStQypOzgIyIRufHlRY4eSyG9Zkbd6RA4V1Q2V4DA5AEhRk42U8UO2GD/fXAXsY1Ydm378JcTGU85A2xr5J0uu7slDkj5aqaf4H9vWJzZqtLKdF9icQa7G9PFTLWlHq/nSxZY+35uzGockfXPjyK5nM0F30dGr1xSpxrYK4sFHDZe+BkCawHThh7IIS7xO7rz98z1ggZzhrjeJSYiYNq6zJGw3PQnxP6buCvxeI5/OBWJ7CT6JmOiMk6/XfRxXOicBH/njKReL9qefezuPLQnAQEJoefk/nKEBPYFY0T8XlJsaw6cdhzFayZllwhFpa68/zSf1QQ+b6PgtYHiewRt+IUG2PPtoojlVTM/obYWOSewxqVR+VzQCyE8tOJuMWKEkQzdOXVRn/394O2leRxbLAq8cXY2TIBpgSn0IaqgBqd4dPaKOl7jpGYV715wFb+gLwgGzMYpLrEqNUiCaWBP28dh4PQKffgfWvHpUtpRMe2e5iXiagKyKIQL8qAFpCR2EtXJnBl4zAkqHDRp/VGA3CuKMQoVqCEAGf7m34ehTfO4K/oZtCDiD4TTr918fYV/JqtkZAibln9ImNP2oBxtCEUQOvBMvWQ8aKfZ5AmlbEAaycgkzqvyK5hSgeMxznM6eJ4m3IPO9MAM67LX2vNvXsXCflnklStS6OgVO0SH88oBUNwQ+/0IfEDikBjO2LdRe6KxWZA0gu9iUHG+Bnpkiua6jSL/OD6lxT/EgDgqXKQp0LD5hIf9nLSwczH37ijA8RQ9yEoLbBhzHvQzw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: de1f96f3-c69a-404f-6c11-08dc78092180 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2024 13:39:39.3849 (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: TYUPR06MB6098 Subject: [FFmpeg-devel] [PATCH 09/18] avcodec/vvcdec: add vvc inter filters for RPR 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: 9k1DZ5B+V5ZL --- libavcodec/vvc/data.c | 83 ++++++++++++++++++++++++++++++++++++++++- libavcodec/vvc/data.h | 10 +++-- libavcodec/vvc/inter.c | 8 ++-- tests/checkasm/vvc_mc.c | 12 +++--- 4 files changed, 98 insertions(+), 15 deletions(-) diff --git a/libavcodec/vvc/data.c b/libavcodec/vvc/data.c index ace585b663..a91e20754e 100644 --- a/libavcodec/vvc/data.c +++ b/libavcodec/vvc/data.c @@ -1732,7 +1732,7 @@ const uint8_t ff_vvc_alf_aps_class_to_filt_map[25] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, }; -const int8_t ff_vvc_inter_luma_filters[VVC_INTER_FILTER_TYPES][VVC_INTER_LUMA_FACTS][VVC_INTER_LUMA_TAPS] = { +const int8_t ff_vvc_inter_luma_filters[VVC_INTER_LUMA_FILTER_TYPES][VVC_INTER_LUMA_FACTS][VVC_INTER_LUMA_TAPS] = { { //1x, hpelIfIdx == 0, Table 27 { 0, 0, 0, 64, 0, 0, 0, 0 }, @@ -1773,6 +1773,46 @@ const int8_t ff_vvc_inter_luma_filters[VVC_INTER_FILTER_TYPES][VVC_INTER_LUMA_FA { 0, 1, -2, 4, 63, -3, 1, 0 }, }, + { + //1.5x, Table 28 + { -1, -5, 17, 42, 17, -5, -1, 0 }, + { 0, -5, 15, 41, 19, -5, -1, 0 }, + { 0, -5, 13, 40, 21, -4, -1, 0 }, + { 0, -5, 11, 39, 24, -4, -2, 1 }, + { 0, -5, 9, 38, 26, -3, -2, 1 }, + { 0, -5, 7, 38, 28, -2, -3, 1 }, + { 1, -5, 5, 36, 30, -1, -3, 1 }, + { 1, -4, 3, 35, 32, 0, -4, 1 }, + { 1, -4, 2, 33, 33, 2, -4, 1 }, + { 1, -4, 0, 32, 35, 3, -4, 1 }, + { 1, -3, -1, 30, 36, 5, -5, 1 }, + { 1, -3, -2, 28, 38, 7, -5, 0 }, + { 1, -2, -3, 26, 38, 9, -5, 0 }, + { 1, -2, -4, 24, 39, 11, -5, 0 }, + { 0, -1, -4, 21, 40, 13, -5, 0 }, + { 0, -1, -5, 19, 41, 15, -5, 0 }, + }, + + { + //2x, Table 29 + { -4, 2, 20, 28, 20, 2, -4, 0 }, + { -4, 0, 19, 29, 21, 5, -4, -2 }, + { -4, -1, 18, 29, 22, 6, -4, -2 }, + { -4, -1, 16, 29, 23, 7, -4, -2 }, + { -4, -1, 16, 28, 24, 7, -4, -2 }, + { -4, -1, 14, 28, 25, 8, -4, -2 }, + { -3, -3, 14, 27, 26, 9, -3, -3 }, + { -3, -1, 12, 28, 25, 10, -4, -3 }, + { -3, -3, 11, 27, 27, 11, -3, -3 }, + { -3, -4, 10, 25, 28, 12, -1, -3 }, + { -3, -3, 9, 26, 27, 14, -3, -3 }, + { -2, -4, 8, 25, 28, 14, -1, -4 }, + { -2, -4, 7, 24, 28, 16, -1, -4 }, + { -2, -4, 7, 23, 29, 16, -1, -4 }, + { -2, -4, 6, 22, 29, 18, -1, -4 }, + { -2, -4, 5, 21, 29, 19, 0, -4 }, + }, + { //1x, affine, Table 30 { 0, 0, 0, 64, 0, 0, 0, 0 }, @@ -1793,9 +1833,48 @@ const int8_t ff_vvc_inter_luma_filters[VVC_INTER_FILTER_TYPES][VVC_INTER_LUMA_FA { 0, 1, -2, 4, 63, -3, 1, 0 }, }, + { + //1.5x, affine, Table 31 + { 0, -6, 17, 42, 17, -5, -1, 0 }, + { 0, -5, 15, 41, 19, -5, -1, 0 }, + { 0, -5, 13, 40, 21, -4, -1, 0 }, + { 0, -5, 11, 39, 24, -4, -1, 0 }, + { 0, -5, 9, 38, 26, -3, -1, 0 }, + { 0, -5, 7, 38, 28, -2, -2, 0 }, + { 0, -4, 5, 36, 30, -1, -2, 0 }, + { 0, -3, 3, 35, 32, 0, -3, 0 }, + { 0, -3, 2, 33, 33, 2, -3, 0 }, + { 0, -3, 0, 32, 35, 3, -3, 0 }, + { 0, -2, -1, 30, 36, 5, -4, 0 }, + { 0, -2, -2, 28, 38, 7, -5, 0 }, + { 0, -1, -3, 26, 38, 9, -5, 0 }, + { 0, -1, -4, 24, 39, 11, -5, 0 }, + { 0, -1, -4, 21, 40, 13, -5, 0 }, + { 0, -1, -5, 19, 41, 15, -5, 0 }, + }, + + { + //2x, affine, Table 32 + { 0, -2, 20, 28, 20, 2, -4, 0 }, + { 0, -4, 19, 29, 21, 5, -6, 0 }, + { 0, -5, 18, 29, 22, 6, -6, 0 }, + { 0, -5, 16, 29, 23, 7, -6, 0 }, + { 0, -5, 16, 28, 24, 7, -6, 0 }, + { 0, -5, 14, 28, 25, 8, -6, 0 }, + { 0, -6, 14, 27, 26, 9, -6, 0 }, + { 0, -4, 12, 28, 25, 10, -7, 0 }, + { 0, -6, 11, 27, 27, 11, -6, 0 }, + { 0, -7, 10, 25, 28, 12, -4, 0 }, + { 0, -6, 9, 26, 27, 14, -6, 0 }, + { 0, -6, 8, 25, 28, 14, -5, 0 }, + { 0, -6, 7, 24, 28, 16, -5, 0 }, + { 0, -6, 7, 23, 29, 16, -5, 0 }, + { 0, -6, 6, 22, 29, 18, -5, 0 }, + { 0, -6, 5, 21, 29, 19, -4, 0 }, + } }; -const int8_t ff_vvc_inter_chroma_filters[VVC_INTER_FILTER_TYPES][VVC_INTER_CHROMA_FACTS][VVC_INTER_CHROMA_TAPS] = { +const int8_t ff_vvc_inter_chroma_filters[VVC_INTER_CHROMA_FILTER_TYPES][VVC_INTER_CHROMA_FACTS][VVC_INTER_CHROMA_TAPS] = { { //1x, Table 33 { 0, 64, 0, 0 }, diff --git a/libavcodec/vvc/data.h b/libavcodec/vvc/data.h index e493b9e0e6..a0512e626b 100644 --- a/libavcodec/vvc/data.h +++ b/libavcodec/vvc/data.h @@ -43,15 +43,19 @@ extern const int8_t ff_vvc_lfnst_8x8[4][2][16][48]; extern const uint8_t ff_vvc_lfnst_tr_set_index[95]; extern uint8_t ff_vvc_default_scale_m[64 * 64]; -#define VVC_INTER_FILTER_TYPES 3 +#define VVC_INTER_LUMA_FILTER_TYPE_AFFINE 4 + +#define VVC_INTER_LUMA_FILTER_TYPES 7 +#define VVC_INTER_CHROMA_FILTER_TYPES 3 + #define VVC_INTER_LUMA_FACTS 16 #define VVC_INTER_LUMA_TAPS 8 #define VVC_INTER_CHROMA_FACTS 32 #define VVC_INTER_CHROMA_TAPS 4 #define VVC_INTER_LUMA_DMVR_FACTS 16 #define VVC_INTER_LUMA_DMVR_TAPS 2 -extern const int8_t ff_vvc_inter_luma_filters[VVC_INTER_FILTER_TYPES][VVC_INTER_LUMA_FACTS][VVC_INTER_LUMA_TAPS]; -extern const int8_t ff_vvc_inter_chroma_filters[VVC_INTER_FILTER_TYPES][VVC_INTER_CHROMA_FACTS][VVC_INTER_CHROMA_TAPS]; +extern const int8_t ff_vvc_inter_luma_filters[VVC_INTER_LUMA_FILTER_TYPES][VVC_INTER_LUMA_FACTS][VVC_INTER_LUMA_TAPS]; +extern const int8_t ff_vvc_inter_chroma_filters[VVC_INTER_CHROMA_FILTER_TYPES][VVC_INTER_CHROMA_FACTS][VVC_INTER_CHROMA_TAPS]; extern const int8_t ff_vvc_inter_luma_dmvr_filters[VVC_INTER_LUMA_DMVR_FACTS][VVC_INTER_LUMA_DMVR_TAPS]; #define VVC_INTRA_LUMA_TYPES 2 diff --git a/libavcodec/vvc/inter.c b/libavcodec/vvc/inter.c index 23d9ac05e6..31c6f43916 100644 --- a/libavcodec/vvc/inter.c +++ b/libavcodec/vvc/inter.c @@ -320,8 +320,8 @@ static void luma_prof_uni(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst const Mv *mv = mvf->mv + lx; const int mx = mv->x & 0xf; const int my = mv->y & 0xf; - const int8_t *hf = ff_vvc_inter_luma_filters[2][mx]; - const int8_t *vf = ff_vvc_inter_luma_filters[2][my]; + const int8_t *hf = ff_vvc_inter_luma_filters[VVC_INTER_LUMA_FILTER_TYPE_AFFINE][mx]; + const int8_t *vf = ff_vvc_inter_luma_filters[VVC_INTER_LUMA_FILTER_TYPE_AFFINE][my]; int denom, wx, ox; const int weight_flag = derive_weight_uni(&denom, &wx, &ox, lc, mvf, LUMA); const int is_chroma = 0; @@ -368,8 +368,8 @@ static void luma_prof_bi(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_ const int oy = y_off + (mv->y >> 4); ptrdiff_t src_stride = ref[i]->linesize[0]; const uint8_t *src = ref[i]->data[0] + oy * src_stride + (ox * (1 << fc->ps.sps->pixel_shift)); - const int8_t *hf = ff_vvc_inter_luma_filters[2][mx]; - const int8_t *vf = ff_vvc_inter_luma_filters[2][my]; + const int8_t *hf = ff_vvc_inter_luma_filters[VVC_INTER_LUMA_FILTER_TYPE_AFFINE][mx]; + const int8_t *vf = ff_vvc_inter_luma_filters[VVC_INTER_LUMA_FILTER_TYPE_AFFINE][my]; MC_EMULATED_EDGE(lc->edge_emu_buffer, &src, &src_stride, ox, oy); if (!pu->cb_prof_flag[i]) { diff --git a/tests/checkasm/vvc_mc.c b/tests/checkasm/vvc_mc.c index 71087dc3dd..a5ec7b7869 100644 --- a/tests/checkasm/vvc_mc.c +++ b/tests/checkasm/vvc_mc.c @@ -134,8 +134,8 @@ static void check_put_vvc_luma_uni(void) const int idx = av_log2(w) - 1; const int mx = rnd() % VVC_INTER_LUMA_FACTS; const int my = rnd() % VVC_INTER_LUMA_FACTS; - const int8_t *hf = ff_vvc_inter_luma_filters[rnd() % VVC_INTER_FILTER_TYPES][mx]; - const int8_t *vf = ff_vvc_inter_luma_filters[rnd() % VVC_INTER_FILTER_TYPES][my]; + const int8_t *hf = ff_vvc_inter_luma_filters[rnd() % VVC_INTER_LUMA_FILTER_TYPES][mx]; + const int8_t *vf = ff_vvc_inter_luma_filters[rnd() % VVC_INTER_LUMA_FILTER_TYPES][my]; const char *type; switch ((j << 1) | i) { @@ -184,8 +184,8 @@ static void check_put_vvc_chroma(void) const int idx = av_log2(w) - 1; const int mx = rnd() % VVC_INTER_CHROMA_FACTS; const int my = rnd() % VVC_INTER_CHROMA_FACTS; - const int8_t *hf = ff_vvc_inter_chroma_filters[rnd() % VVC_INTER_FILTER_TYPES][mx]; - const int8_t *vf = ff_vvc_inter_chroma_filters[rnd() % VVC_INTER_FILTER_TYPES][my]; + const int8_t *hf = ff_vvc_inter_chroma_filters[rnd() % VVC_INTER_CHROMA_FILTER_TYPES][mx]; + const int8_t *vf = ff_vvc_inter_chroma_filters[rnd() % VVC_INTER_CHROMA_FILTER_TYPES][my]; const char *type; switch ((j << 1) | i) { case 0: type = "put_chroma_pixels"; break; // 0 0 @@ -233,8 +233,8 @@ static void check_put_vvc_chroma_uni(void) const int idx = av_log2(w) - 1; const int mx = rnd() % VVC_INTER_CHROMA_FACTS; const int my = rnd() % VVC_INTER_CHROMA_FACTS; - const int8_t *hf = ff_vvc_inter_chroma_filters[rnd() % VVC_INTER_FILTER_TYPES][mx]; - const int8_t *vf = ff_vvc_inter_chroma_filters[rnd() % VVC_INTER_FILTER_TYPES][my]; + const int8_t *hf = ff_vvc_inter_chroma_filters[rnd() % VVC_INTER_CHROMA_FILTER_TYPES][mx]; + const int8_t *vf = ff_vvc_inter_chroma_filters[rnd() % VVC_INTER_CHROMA_FILTER_TYPES][my]; const char *type; switch ((j << 1) | i) { From patchwork Sun May 19 13:27:41 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 49026 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a48:b0:1af:fc2d:ff5a with SMTP id zu8csp3927682pzb; Sun, 19 May 2024 06:50:11 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUXVY85FZ2z2Sk7igTEKoKvU/uEZptxuwmSfPlWpxbEcRHhqj5WTydYua2S7aaOJgKMJVZoU0PNDaPkuEIf6TS2TCnp2ucrmCEcJQ== X-Google-Smtp-Source: AGHT+IEfUOCOrCUFrFJJHTT9o5uPILPLouFWJ8OWcDqU1SBOeFbl4Z+jjeDai/mRQbd221vc+EAz X-Received: by 2002:a05:651c:b12:b0:2e3:9350:a7d2 with SMTP id 38308e7fff4ca-2e5205e273fmr199769111fa.52.1716126611398; Sun, 19 May 2024 06:50:11 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 38308e7fff4ca-2e715fe49dbsi10006941fa.213.2024.05.19.06.50.10; Sun, 19 May 2024 06:50:11 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=axiYnlTM; 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 8C0C968CFFE; Sun, 19 May 2024 16:40:02 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from HK2PR02CU002.outbound.protection.outlook.com (mail-eastasiaazolkn19010000.outbound.protection.outlook.com [52.103.64.0]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8ED2E68D011 for ; Sun, 19 May 2024 16:39:56 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LBD+zT0E0XvB2LOX4CM0kQvoSe1zaNWQ1mQ4R1g0v20esfqsp9GGLLWFBkAK2ZjOCuBf0liKVs55ZOsprHcghh65Tw0hYxrTzfa2yMm6+kjH5kxIt/lFXOIG6AV1/gA1LC38di6D+//nTx5+5fbHfmwBpuIU1x0pniZYWg/8rUYT+YrahvxUGn/hKl8+iwW5vk3NFbgwL83dojan30IdVpgpZvSyTVwH7t7o1GMjhiznhqAYZkM4iMfov09DOmbzxIKdXUElrnUY+HTnb06tBtJLOpBe4VdBAzLG6dr0mGw2DM6MXvYRAaejQx1WQkFe87VoJa5WfQKXwmBxGRezQQ== 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=HmV3cT1WCe4NXdE7XtV9FwVKy0EaYRnQjZWmm7fdwyk=; b=b7cdbBr9ypeWwL7t8qZaRm/CaIZtuG48eUe/5rUvPNGvFHZbxMLvCnT6QmiZN3FAZvZvmv5rrxWI1Edivfl1cQT7YtrzeQJaAufm/b7nxijES5qWYRw01w+kpwRjx6KjP+zGD2g1F/FEHCv1qTLST0TyYyJqr38Lb5vJ9zIyM65WdxLTjmsEPXZbmLz93NcQv/T37Gy5Y+cqRLV+rcrY3BvqhOdaoxeSuW8gGoe5pvO5SdVd1Bek45fEHfzN66cvVzrtkyjs4y872lKcehF6P9/MIYxNxugdFAnhZGTjGxCbVce/bXe7UJDx1AVpb7hYJQHEjSWBTwmCnAtpAsCq8w== 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=HmV3cT1WCe4NXdE7XtV9FwVKy0EaYRnQjZWmm7fdwyk=; b=axiYnlTM1TB+n/YIcE2RVzavRKQdVrLN6TuZzoZ3YUSmy1l/M6tSRB1sr5ombGjd4K9Cs9SptgisTFvUPx8yxc2uzlE8QKGAvKN+MmzNdyWCt1un2nesINSNBA4ZiPpf0m1R0SKJwXsQOuRrN0At1tqudwtVD1e9lJMfdkq2EMiqxfFKz3zvfi1lvYwn/VF5RqMWR9SaCMslODbUMWjepEQlIM/cVhQ1O/rXWqXy5s2mSHWgGhSQk0hrX/Y/oyDLVtSkVGS2CdKZoEJUDOFw9pc/Pb76rokg3HxVO0k4qWeabbTIrYUlS+i8Ru2D2aZXvfvJB99awkdnymhcouXqKQ== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by TYUPR06MB6098.apcprd06.prod.outlook.com (2603:1096:400:358::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.34; Sun, 19 May 2024 13:39:40 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca%4]) with mapi id 15.20.7587.030; Sun, 19 May 2024 13:39:40 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sun, 19 May 2024 21:27:41 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240519132749.790832-1-nuomi2021@gmail.com> References: <20240519132749.790832-1-nuomi2021@gmail.com> X-TMN: [QBPjeh3frtVgQPiq4OBWrRbJeJGc3u5g] X-ClientProxiedBy: TYCP301CA0017.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:381::8) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240519132749.790832-10-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|TYUPR06MB6098:EE_ X-MS-Office365-Filtering-Correlation-Id: de613ec4-0637-428f-60e0-08dc780921fa X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|440099019|3412199016|1710799017; X-Microsoft-Antispam-Message-Info: ERTH1T2SLKUWbfvXiBnBU1YqDWuU2pYaahlyWKCth62CVdv9EL+VjQ3Hq8d+9PzCF1juyvlZkK+T3y7EvC4v4FwNuT+YALKzmZQZm5UcC0DpBY944iJgef1X7DJeQOz5A+v8fhbKiazKT0OZ2y8FVsfk+nGCYN0XfFLZFBGs9bs+RYJYPBOlUM3waqK4gEpq8Xqi+72L65e8xe4M97x0mpGnX1MzbomQdyiiEGqcmT+XZWBc1KftcBTpT7evE/CMJSluH36gOdtw33Fp54u+crT7wKNeZ48XgkJGVExvGLcKd9ROkjvzl82OF0AagqNxqZP/kM6AJL0LMxLNah9pN4FumNDokVL9FYR1yBh6uUkm6AIsyOGF8XXIIBaZFVjwh80bTbPG3szLeFknZqoZgjVy8ss0bIyDAh63rPAFBOsh3X89/X5k8g/00QL1EJpCXifOwMyu+JA5QpKPFzAdcuaHi8FiZhqSlvwLbvOkrR1N7P26dDvzNz4axPveiRmYiLzmRofz6e8pPkROm33MdIi2m3A3DJWmLGIcbXv21kCoh716zaz/MoZ/6xrf1zdqYjCKZQHWmP+cwJ6cmgsDSgT7Og+kJult7fRjSP+3zrMnZgtwncmuztVVKsudFPDK X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: oH4jrDN5aCr5i3AlchHQrApJsaZV2ieFN5mCG5aygMCrV43+E2wO91iLZ4xR+PmlOxmRJWS79snDlDpv5OQN9BNlvlYniE5CK6ZoZn9Kr6BIleyGPHhhR5nKDhTzecoSA8MbSeZW2/3Dzrc6lgpm3yHKM0P50ToUx0jKO4IAs7+TPcbvsL/0J67t3J0zl6IMwckzJmnbcddM9igydhm/oB60Od1LCudl1nawSyPJ430xwAVF9tE3qyt9P9TywOPYnFdm/xoufMxelJLH4Q7AG3SQ0h2YkTzmT/83Ii5oDwJ2cbVI5VT+ZSXQ9prX/ey/5XWX00j1RtkY5PDUAEIVozZlLhAXrB3i+ByvlaE9uxCMpmhDK3SOpqEMc5hBaCfzQ+gZAJX8imsoETw9zdt6tTSLaBp5tNl/3r5F0q17bvneX6MalgRowDOHcSk/vhvdeUDiPydKAmfu1eoKgAYJTD7is3NQzX9hudnmrmy9NnRFsBdHk6CM06zgbAv6Iw3ZDSxDXxwfbLQ+635maq2J5GUnzmYByVBgdmnlAUE2UPePQ+FhcVo5F3Kbxn6ZLMgRBLkK5AsBRlJ2pZh3aGm+eMDWYuP4xW+/W1QDcFMpdgGHxTtsnXl4XGBILlwixMYXfbkJ3Bepi6iNLB2i8BqhISopzqFA1U9ZMOotKZKAKblpC5B2GgkmV8Fxq6YtT8sURqB7QVhbDJRNq8e46p/twcpzFbu3rfQKjy4PFzPCbJh+DzDI9ScvfV5StIpzSx0KkCAe3VjHtAdAnByJY+IkubVaDStzSbhbtk9o30RLDF/E4+293Ov3WflBpbGkwvwQ+3h1KFeqD/xMXx9CU7vP6K9NKluLHOU8P8zZY39+9Zaf6v2zsvZNpb7VqW/tOx+rL6H9VeqABeYmIFywWJ58ZPmAc5ohZ5Qm+yZ+90r1dpwzxbl/LweAEeLYu3uHUZ6DI9iIY2tXuklZhTtKtYj2aAfWJ5naksivFjRgY5AdUTaweqmA9ohZGkYjUGT02g/vXgONdzBgP2xczIzLDrYR0fKizzJZK6HFp57y7zON1/EFmqCB+vsRJK5hX2Y/ewkkLOl4vz0SzjJQ1jpGakeaKGdmsQ9l1DvRtIubDgID78YEozXbCgJECN/b1Nh2C2oLc2HiD7vAAVRF0I6GvT4gia0OfopK99n7UUoRuQb4ZRiixgZejsl6hZeNMnb0GgAsdzU0XOABekJ5MY7F9ivqCz3rHlbF+nUB8e8LxZMlbWalYIWeCY2anzP75+eOvNlgmMKQcf05PSvXHsZ+L71BKw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: de613ec4-0637-428f-60e0-08dc780921fa X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2024 13:39:40.1703 (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: TYUPR06MB6098 Subject: [FFmpeg-devel] [PATCH 10/18] avcodec/vvcdec: emulated_edge, use reference frame's sps and pps 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: dmo7kwWaAChZ a preparation for Reference Picture Resampling --- libavcodec/vvc/dec.c | 3 +++ libavcodec/vvc/dec.h | 2 ++ libavcodec/vvc/inter.c | 54 ++++++++++++++++++++++-------------------- libavcodec/vvc/refs.c | 5 ++++ 4 files changed, 38 insertions(+), 26 deletions(-) diff --git a/libavcodec/vvc/dec.c b/libavcodec/vvc/dec.c index b4c35330eb..3325133efb 100644 --- a/libavcodec/vvc/dec.c +++ b/libavcodec/vvc/dec.c @@ -560,6 +560,9 @@ static int ref_frame(VVCFrame *dst, const VVCFrame *src) if (ret < 0) return ret; + ff_refstruct_replace(&dst->sps, src->sps); + ff_refstruct_replace(&dst->pps, src->pps); + ff_refstruct_replace(&dst->progress, src->progress); ff_refstruct_replace(&dst->tab_dmvr_mvf, src->tab_dmvr_mvf); diff --git a/libavcodec/vvc/dec.h b/libavcodec/vvc/dec.h index 205427f681..6f14cc1860 100644 --- a/libavcodec/vvc/dec.h +++ b/libavcodec/vvc/dec.h @@ -60,6 +60,8 @@ typedef struct RefPicListTab { typedef struct VVCFrame { struct AVFrame *frame; + const VVCSPS *sps; ///< RefStruct reference + const VVCPPS *pps; ///< RefStruct reference struct MvField *tab_dmvr_mvf; ///< RefStruct reference RefPicListTab **rpl_tab; ///< RefStruct reference RefPicListTab *rpl; ///< RefStruct reference diff --git a/libavcodec/vvc/inter.c b/libavcodec/vvc/inter.c index 31c6f43916..f432a2dc3c 100644 --- a/libavcodec/vvc/inter.c +++ b/libavcodec/vvc/inter.c @@ -44,12 +44,12 @@ static void subpic_width_height(int *pic_width, int *pic_height, *pic_height = pps->subpic_height[subpic_idx] >> sps->vshift[is_chroma]; } -static int emulated_edge(const VVCLocalContext *lc, uint8_t *dst, const uint8_t **src, ptrdiff_t *src_stride, +static int emulated_edge(const VVCLocalContext *lc, uint8_t *dst, const uint8_t **src, ptrdiff_t *src_stride, const VVCFrame *src_frame, int x_off, int y_off, const int block_w, const int block_h, const int is_chroma) { const VVCFrameContext *fc = lc->fc; - const VVCSPS *sps = fc->ps.sps; - const VVCPPS *pps = fc->ps.pps; + const VVCSPS *sps = src_frame->sps; + const VVCPPS *pps = src_frame->pps; const int subpic_idx = lc->sc->sh.r->curr_subpic_idx; const int extra_before = is_chroma ? CHROMA_EXTRA_BEFORE : LUMA_EXTRA_BEFORE; const int extra_after = is_chroma ? CHROMA_EXTRA_AFTER : LUMA_EXTRA_AFTER; @@ -143,7 +143,7 @@ static void emulated_edge_bilinear(const VVCLocalContext *lc, uint8_t *dst, cons } #define MC_EMULATED_EDGE(dst, src, src_stride, x_off, y_off) \ - emulated_edge(lc, dst, src, src_stride, x_off, y_off, block_w, block_h, is_chroma) + emulated_edge(lc, dst, src, src_stride, ref, x_off, y_off, block_w, block_h, is_chroma) #define MC_EMULATED_EDGE_DMVR(dst, src, src_stride, x_sb, y_sb, x_off, y_off) \ emulated_edge_dmvr(lc, dst, src, src_stride, x_sb, y_sb, x_off, y_off, block_w, block_h, is_chroma) @@ -204,12 +204,12 @@ static int derive_weight(int *denom, int *w0, int *w1, int *o0, int *o1, #define INTER_FILTER(t, frac) (is_chroma ? ff_vvc_inter_chroma_filters[t][frac] : ff_vvc_inter_luma_filters[t][frac]) -static void mc(VVCLocalContext *lc, int16_t *dst, const AVFrame *ref, const Mv *mv, +static void mc(VVCLocalContext *lc, int16_t *dst, const VVCFrame *ref, const Mv *mv, int x_off, int y_off, const int block_w, const int block_h, const int c_idx) { const VVCFrameContext *fc = lc->fc; - const uint8_t *src = ref->data[c_idx]; - ptrdiff_t src_stride = ref->linesize[c_idx]; + const uint8_t *src = ref->frame->data[c_idx]; + ptrdiff_t src_stride = ref->frame->linesize[c_idx]; const int is_chroma = !!c_idx; const int hs = fc->ps.sps->hshift[c_idx]; const int vs = fc->ps.sps->vshift[c_idx]; @@ -228,12 +228,12 @@ static void mc(VVCLocalContext *lc, int16_t *dst, const AVFrame *ref, const Mv * } static void mc_uni(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, - const AVFrame *ref, const MvField *mvf, int x_off, int y_off, const int block_w, const int block_h, + const VVCFrame *ref, const MvField *mvf, int x_off, int y_off, const int block_w, const int block_h, const int c_idx, const int hf_idx, const int vf_idx) { const VVCFrameContext *fc = lc->fc; - const uint8_t *src = ref->data[c_idx]; - ptrdiff_t src_stride = ref->linesize[c_idx]; + const uint8_t *src = ref->frame->data[c_idx]; + ptrdiff_t src_stride = ref->frame->linesize[c_idx]; const int lx = mvf->pred_flag - PF_L0; const int hs = fc->ps.sps->hshift[c_idx]; const int vs = fc->ps.sps->vshift[c_idx]; @@ -261,7 +261,7 @@ static void mc_uni(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride } static void mc_bi(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, - const AVFrame *ref0, const AVFrame *ref1, const MvField *mvf, const MvField *orig_mv, + const VVCFrame *ref0, const VVCFrame *ref1, const MvField *mvf, const MvField *orig_mv, const int x_off, const int y_off, const int block_w, const int block_h, const int c_idx, const int sb_bdof_flag, const int hf_idx, const int vf_idx) { @@ -270,7 +270,7 @@ static void mc_bi(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, const int hs = fc->ps.sps->hshift[c_idx]; const int vs = fc->ps.sps->vshift[c_idx]; const int idx = av_log2(block_w) - 1; - const AVFrame *ref[] = { ref0, ref1 }; + const VVCFrame *refs[] = { ref0, ref1 }; int16_t *tmp[] = { lc->tmp + sb_bdof_flag * PROF_TEMP_OFFSET, lc->tmp1 + sb_bdof_flag * PROF_TEMP_OFFSET }; int denom, w0, w1, o0, o1; const int weight_flag = derive_weight(&denom, &w0, &w1, &o0, &o1, lc, mvf, c_idx, pu->dmvr_flag); @@ -282,8 +282,9 @@ static void mc_bi(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, const int my = av_mod_uintp2(mv->y, 4 + vs) << (is_chroma - vs); const int ox = x_off + (mv->x >> (4 + hs)); const int oy = y_off + (mv->y >> (4 + vs)); - ptrdiff_t src_stride = ref[i]->linesize[c_idx]; - const uint8_t *src = ref[i]->data[c_idx] + oy * src_stride + (ox * (1 << fc->ps.sps->pixel_shift)); + const VVCFrame *ref = refs[i]; + ptrdiff_t src_stride = ref->frame->linesize[c_idx]; + const uint8_t *src = ref->frame->data[c_idx] + oy * src_stride + (ox * (1 << fc->ps.sps->pixel_shift)); const int8_t *hf = INTER_FILTER(hf_idx, mx); const int8_t *vf = INTER_FILTER(vf_idx, my); @@ -308,12 +309,12 @@ static void mc_bi(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, } static void luma_prof_uni(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, - const AVFrame *ref, const MvField *mvf, int x_off, int y_off, const int block_w, const int block_h, + const VVCFrame *ref, const MvField *mvf, int x_off, int y_off, const int block_w, const int block_h, const int cb_prof_flag, const int16_t *diff_mv_x, const int16_t *diff_mv_y) { const VVCFrameContext *fc = lc->fc; - const uint8_t *src = ref->data[0]; - ptrdiff_t src_stride = ref->linesize[0]; + const uint8_t *src = ref->frame->data[LUMA]; + ptrdiff_t src_stride = ref->frame->linesize[LUMA]; uint16_t *prof_tmp = lc->tmp + PROF_TEMP_OFFSET; const int idx = av_log2(block_w) - 1; const int lx = mvf->pred_flag - PF_L0; @@ -347,12 +348,12 @@ static void luma_prof_uni(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst } static void luma_prof_bi(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, - const AVFrame *ref0, const AVFrame *ref1, const MvField *mvf, const int x_off, const int y_off, + const VVCFrame *ref0, const VVCFrame *ref1, const MvField *mvf, const int x_off, const int y_off, const int block_w, const int block_h) { const VVCFrameContext *fc = lc->fc; const PredictionUnit *pu = &lc->cu->pu; - const AVFrame *ref[] = { ref0, ref1 }; + const VVCFrame *refs[] = { ref0, ref1 }; int16_t *tmp[] = { lc->tmp, lc->tmp1 }; uint16_t *prof_tmp = lc->tmp2 + PROF_TEMP_OFFSET; const int idx = av_log2(block_w) - 1; @@ -366,8 +367,9 @@ static void luma_prof_bi(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_ const int my = mv->y & 0xf; const int ox = x_off + (mv->x >> 4); const int oy = y_off + (mv->y >> 4); - ptrdiff_t src_stride = ref[i]->linesize[0]; - const uint8_t *src = ref[i]->data[0] + oy * src_stride + (ox * (1 << fc->ps.sps->pixel_shift)); + const VVCFrame *ref = refs[i]; + ptrdiff_t src_stride = ref->frame->linesize[LUMA]; + const uint8_t *src = ref->frame->data[LUMA] + oy * src_stride + (ox * (1 << fc->ps.sps->pixel_shift)); const int8_t *hf = ff_vvc_inter_luma_filters[VVC_INTER_LUMA_FILTER_TYPE_AFFINE][mx]; const int8_t *vf = ff_vvc_inter_luma_filters[VVC_INTER_LUMA_FILTER_TYPE_AFFINE][my]; @@ -453,7 +455,7 @@ static void pred_gpm_blk(VVCLocalContext *lc) VVCFrame *ref = lc->sc->rpl[lx].refs[mv->ref_idx[lx]].ref; if (!ref) return; - mc(lc, tmp[i], ref->frame, mv->mv + lx, x, y, width, height, c_idx); + mc(lc, tmp[i], ref, mv->mv + lx, x, y, width, height, c_idx); } fc->vvcdsp.inter.put_gpm(dst, dst_stride, width, height, tmp[0], tmp[1], weights, step_x, step_y); } @@ -511,10 +513,10 @@ static void pred_regular(VVCLocalContext *lc, const MvField *mvf, const MvField if (mvf->pred_flag != PF_BI) { const int lx = mvf->pred_flag - PF_L0; - mc_uni(lc, inter, inter_stride, refp[lx]->ref->frame, mvf, + mc_uni(lc, inter, inter_stride, refp[lx]->ref, mvf, x, y, w, h, c_idx, hf_idx, vf_idx); } else { - mc_bi(lc, inter, inter_stride, refp[L0]->ref->frame, refp[L1]->ref->frame, mvf, orig_mvf, + mc_bi(lc, inter, inter_stride, refp[L0]->ref, refp[L1]->ref, mvf, orig_mvf, x, y, w, h, c_idx, do_bdof, hf_idx, vf_idx); } if (do_ciip) { @@ -741,11 +743,11 @@ static void pred_affine_blk(VVCLocalContext *lc) if (mi->pred_flag != PF_BI) { const int lx = mi->pred_flag - PF_L0; - luma_prof_uni(lc, dst0, fc->frame->linesize[LUMA], refp[lx]->ref->frame, + luma_prof_uni(lc, dst0, fc->frame->linesize[LUMA], refp[lx]->ref, mv, x, y, sbw, sbh, pu->cb_prof_flag[lx], pu->diff_mv_x[lx], pu->diff_mv_y[lx]); } else { - luma_prof_bi(lc, dst0, fc->frame->linesize[LUMA], refp[L0]->ref->frame, refp[L1]->ref->frame, + luma_prof_bi(lc, dst0, fc->frame->linesize[LUMA], refp[L0]->ref, refp[L1]->ref, mv, x, y, sbw, sbh); } if (fc->ps.sps->r->sps_chroma_format_idc) { diff --git a/libavcodec/vvc/refs.c b/libavcodec/vvc/refs.c index 74c105b619..954db4a8c8 100644 --- a/libavcodec/vvc/refs.c +++ b/libavcodec/vvc/refs.c @@ -52,6 +52,8 @@ void ff_vvc_unref_frame(VVCFrameContext *fc, VVCFrame *frame, int flags) frame->flags &= ~flags; if (!frame->flags) { av_frame_unref(frame->frame); + ff_refstruct_unref(&frame->sps); + ff_refstruct_unref(&frame->pps); ff_refstruct_unref(&frame->progress); ff_refstruct_unref(&frame->tab_dmvr_mvf); @@ -119,6 +121,9 @@ static VVCFrame *alloc_frame(VVCContext *s, VVCFrameContext *fc) if (frame->frame->buf[0]) continue; + frame->sps = ff_refstruct_ref_c(fc->ps.sps); + frame->pps = ff_refstruct_ref_c(fc->ps.pps); + ret = ff_thread_get_buffer(s->avctx, frame->frame, AV_GET_BUFFER_FLAG_REF); if (ret < 0) return NULL; From patchwork Sun May 19 13:27:42 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 49028 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a48:b0:1af:fc2d:ff5a with SMTP id zu8csp3947592pzb; Sun, 19 May 2024 07:35:05 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUvVS00lOWfz0QdjsU6EvPDbBkGONQhmI1cUQl7ZagmVKipRBwA6bS4yIK+kVnKnNU8jExh7pCjqZCmXE1kZfRvPSkmZBjOvnt7VQ== X-Google-Smtp-Source: AGHT+IFQ1AfxLZH3MlA7NIzgMahvjcY6UZHN/MxEXOqK5rguHt1SJQxgNJp8BHmdPrfSlJiZU7os X-Received: by 2002:a2e:7a0e:0:b0:2e2:466b:1a56 with SMTP id 38308e7fff4ca-2e52039e2c3mr208175611fa.53.1716129304615; Sun, 19 May 2024 07:35:04 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a5a1b7907f7si1297565366b.772.2024.05.19.07.35.04; Sun, 19 May 2024 07:35:04 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=NxZRuFOg; 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 2A3DB68D24D; Sun, 19 May 2024 16:40:06 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from HK2PR02CU002.outbound.protection.outlook.com (mail-eastasiaazolkn19010000.outbound.protection.outlook.com [52.103.64.0]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4ED9168CFFE for ; Sun, 19 May 2024 16:39:57 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=duwR6hjYvo5jQHMUpTY7AvjEQW+o2jpPeK6NdTnH3YqqtPD0yJcm056HB2bDMo9Je5BKAlCCMbPxTVaACmwSlb1FiQBpCVvs41qPIRSqfFzg+ry2lr5prQbuAdUap+cpuDqA9qTPb43otMfHm2krcwd1DCzmoD2Ldu/bwFm4aCS+pgDWWgvjxk9xBmbK+08o7/POD711t463kR0xb6g3TM1BjbHTMaCVsV5G6nrf8VOZ9X/OJQH25vLXrHDN1adM4lrK7w0gS8XqYWS1Cs+a5gU4ScMfM7y2Tfk7gILkP94od9MVhkB7YcICtxN/McCeol7mNm4A9g9jjUyRx8T/Iw== 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=iVo4t9gdgQhUK6feX+T64fDu6IU1faEOdS9lPC4IEGw=; b=T0RHF7lN/ruW0i6ElM9BCEBJZYY8SC5Lap4gtEMoMv74B7N0aRKKVrfHh0RsmvrHfqPDv/wr9GWaBajApvZXf+ERoRb2lIySu9KzQUHbsR2yHeiQuSfo079Oxw3ZtJPQOG6Io0vgjHn1PoHIsbFLCT7pytDgIKQYm6DEu0yGmIyir1Yo2BN0J2YnbzLS0v5Gu5eVhgbZwjJCUS3JBgpl3AM5cArCi+NPJjfywykB7EzuTXDeM9ypIna77qi+2tJXJS47Vju7aJxxXhHPXE9XPCZ3d+OaaBTx3wJfNMAwMYp6QBUBr/667YuRDFR4HBh7OsJiBV+57gwbi+qpqNocXw== 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=iVo4t9gdgQhUK6feX+T64fDu6IU1faEOdS9lPC4IEGw=; b=NxZRuFOgyqsDKFM5Eck5gzUVOZwg1h5FP3e8PiRpRqkkpv/hkSIY80hWChEO6t9epWXyFRPbe8dBn2hjenqy80ehoAl2u/vp5E3MWi7MaxTIvtEedLO9XNrZtrQyyykTOBJotpUNWio/QUx+pyC2jhIPPw02KbmYSB7Ig6NWgsdBluROiU3EPZaI+q1TZEi9r2AXQGEfSY2Dk3AYKQsvOBflYtYjlO5TQHr4cU6pc4f+O2xJef2lIQbF//+nJDAXtslO5xlh54KYfSLBMTTIjNFodCDTr9xuZX989VfU5VP42sG8yd8aXBhOckR2h4q3r0I1Z6k8XHohe1fBTFXhHA== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by TYUPR06MB6098.apcprd06.prod.outlook.com (2603:1096:400:358::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.34; Sun, 19 May 2024 13:39:41 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca%4]) with mapi id 15.20.7587.030; Sun, 19 May 2024 13:39:41 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sun, 19 May 2024 21:27:42 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240519132749.790832-1-nuomi2021@gmail.com> References: <20240519132749.790832-1-nuomi2021@gmail.com> X-TMN: [lYdLG70bc9uBjSCR5cRMd+cqVWUk05lv] X-ClientProxiedBy: TYCP301CA0017.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:381::8) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240519132749.790832-11-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|TYUPR06MB6098:EE_ X-MS-Office365-Filtering-Correlation-Id: fd0667d5-d087-4b7b-4982-08dc78092271 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|440099019|3412199016|1710799017; X-Microsoft-Antispam-Message-Info: nP4OyfaLaAkO/HcWEvKMWhzKJWRKw8x9u+D5EFXZgSzyhroYIywf3MI+JR+khfi/LwQwHUNrsFmYsyt/mGAevLDSyCb9LRRxG6CB71Vvm8HORZhbdD9I+XIZ4jYJe5360jaHPUPJgWM20hyJTZMOqkzYKRAkdPRNLWC+HPh9OPgOfuLRH+64QjGBlth11Wc5Cbp1qB5+NfEDiyRfhrZ2E7dljzOq1gWmmY1vJ5tXYqoUKUH72PxAATEmrT60uswgLwxjxEMjY8DJgSeyh1GhTKCt7JSQjuooydxK7Uhhxp2zZq4c5pBBmpOARUr0iHdrsLRVagFRdfH1IV6UbqQ8nBAJiS19+3ZNhN7ftWCTaURzvolR7Rb2aGRXPH4uVVBSJHW+9q1XcL3KzVVh8Pln1IUNYcugxO2N/tg00O4zt4x9B5b3esZYgbcRuJDSHImhHXuBWK2cjesj9iHCjddo/FIc9yI+A8bafkwD643UASpFMI8y0p8M0JVsHguJ5W4vMxVqE53N7DgfxE3NUEHRwouvR8p46uQkG0Egf1fvWi/j+let35+lGNs28Plr45e/KHjwRhfOGaRbEnsrDbPSUZUptghKRdjyxWO51xmg2ZkTyaXQrKB16iUTLSfAkwdm X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: nngE1mNVNawNr/odjZrfomdPBFiYtxB/s3lHVH05KDpbFCUOgVjAGIeoj0tBhhCchX9EknukMcs9G+G1N9RPUfqmBtUP9Dejp3zjL6KBf8dfa9zoGPffk6pGFz9Z4oL8gAKH/xxDHhinGIqwVKRIWl7uGwV4QNPmKhPCRZ5dButPyDStIL4z2Pld6IkxwWuPeFjD/zdBHHewpUlhwNdm3VZzObBXuktE8UsyWAAP95zKJ5Y1sv5qDVlB45WsSsomdaasofdoXKnvIg+TwhgBJ8MeC3N5OSIC8oUDJYAIoyJBI5l1RPyXeNaabCc9jSeSMvk/EQ0/80kVUM4AIiV1DGJf3/pdDqGtiUeavlV5fqQy4vc9SsWejzaTLZdZa8UJ5z+55aJQZPLJHHQAL6zr0jcvuEa5eugYNsUyazOehJ+StqZQWSdywLgqBZ0Qd3OctzEZfY8gZTdC1xuw6CBCsslyM5yyijZpbEkyX3GJYl9Vt5CZw4KtvhHwasmIc7k0xORwLJ/HemMgjwsxbWkSpro30qzI8+a8xDuTZiQEScdWKMX+eAw/6RK8Vi4hQDz3e/MT7Dyz3RBOq9WBlB3NWUCqromynbpI2aqiE7YcJ4INtJJE02wmF5y8w1lP94p5kI4FzSTtSRbiNzRsfxvfAhDZ+uATkd7SL9UD1kSV+jOE7WUu/2QNRbtVlX6IX/7nzEancySQI7VKmYLqoIYk17dDiUBufvCzxUavqenwvg5Tj3OEB1k5j5aCob/IF2lu3TuDs7obo/2W0ItEebSgDY3qTWogwRlSn6/ReQ8QScEHSaKHR1LqbB52wn2gNGYu/PUbTKuuk0gN9H4ojGZuqAezASbQzaRYLDijtum5ps7+p7H7rADLDiFSasN2rKCLCW1pAXBAmnUxhCAXqKk41WbkfsSJ0THg039h/l7d7Y4MDli+5X6rbtPUGes7QIefT6WKvAjYDgFc+eOs4SXyQMgDM7SOW6G0dwkNuFSpCXhZcrwsRkAkwnBdm5yMztZl/VoQl9bIzj26DOtUGvETIdV+f+8NsjB22QntM/vZSQdETrozcTdQm82c47dLQnMNCRtkVlFJ/HEmdTvVf18Id3RUXQCVpK/pH5vyrzNz/D2PXZhdV8pj62wlt55FLSh39vaK/H/+Y0iBm0JLRkBOofNlY5896HBdk611kdrVeLo+mkOsEz2hsb1c+jfYfCkhtbmtqR5xtqQEKWqHlaBFKWO7kCcJaxU731jjgMafZ8qJVfcPvAChzsEKu59Q/cikkPP0Y1WBvFOuoqDap99jwQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fd0667d5-d087-4b7b-4982-08dc78092271 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2024 13:39:40.9692 (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: TYUPR06MB6098 Subject: [FFmpeg-devel] [PATCH 11/18] avcodec/vvcdec: add RPR dsp 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: 7+7UpQ1uWzvX --- libavcodec/vvc/ctu.h | 2 + libavcodec/vvc/dsp.h | 13 +++ libavcodec/vvc/inter_template.c | 168 ++++++++++++++++++++++++++++++++ 3 files changed, 183 insertions(+) diff --git a/libavcodec/vvc/ctu.h b/libavcodec/vvc/ctu.h index 337d0e7c28..50109154aa 100644 --- a/libavcodec/vvc/ctu.h +++ b/libavcodec/vvc/ctu.h @@ -58,6 +58,8 @@ #define BILINEAR_EXTRA_AFTER 1 #define BILINEAR_EXTRA 1 +#define SCALED_INT(pos) ((pos) >> 10) + #define MAX_CONTROL_POINTS 3 #define AFFINE_MIN_BLOCK_SIZE 4 diff --git a/libavcodec/vvc/dsp.h b/libavcodec/vvc/dsp.h index 9810ac314c..1f14096c41 100644 --- a/libavcodec/vvc/dsp.h +++ b/libavcodec/vvc/dsp.h @@ -57,6 +57,19 @@ typedef struct VVCInterDSPContext { uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int denom, int wx, int ox, const int8_t *hf, const int8_t *vf, int width); + void (*put_scaled[2 /* luma, chroma */][7 /* log2(width) - 1 */])( + int16_t *dst, const uint8_t *src, ptrdiff_t src_stride, int src_height, + int x, int y, int dx, int dy, int height, const int8_t *hf, const int8_t *vf, int width); + + void (*put_uni_scaled[2 /* luma, chroma */][7 /* log2(width) - 1 */])( + uint8_t *dst, const ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int src_height, + int x, int y, int dx, int dy, int height, const int8_t *hf, const int8_t *vf, int width); + + void (*put_uni_w_scaled[2 /* luma, chroma */][7 /* log2(width) - 1 */])( + uint8_t *dst, const ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int src_height, + int x, int y, int dx, int dy, int height, int denom, int wx, int ox, const int8_t *hf, const int8_t *vf, + int width); + void (*avg)(uint8_t *dst, ptrdiff_t dst_stride, const int16_t *src0, const int16_t *src1, int width, int height); diff --git a/libavcodec/vvc/inter_template.c b/libavcodec/vvc/inter_template.c index e2fbfd4fc0..a8068f4ba8 100644 --- a/libavcodec/vvc/inter_template.c +++ b/libavcodec/vvc/inter_template.c @@ -22,6 +22,165 @@ #include "libavcodec/h26x/h2656_inter_template.c" +#define TMP_STRIDE EDGE_EMU_BUFFER_STRIDE +static void av_always_inline FUNC(put_scaled)(uint8_t *_dst, const ptrdiff_t _dst_stride, + const uint8_t *const _src, ptrdiff_t _src_stride, const int src_height, + const int _x, const int _y, const int dx, const int dy, + const int height, const int8_t *hf, const int8_t *vf, const int width, const int is_uni, const int is_chroma) +{ + int16_t tmp_array[TMP_STRIDE * MAX_PB_SIZE]; + int16_t *tmp = tmp_array; + pixel *dst = (pixel*)_dst; + int16_t *dst16 = (int16_t*)_dst; + const ptrdiff_t dst_stride = _dst_stride / sizeof(pixel); + const ptrdiff_t src_stride = _src_stride / sizeof(pixel); + const int shift = FFMAX(2, 14 - BIT_DEPTH); + const int offset = 1 << (shift - 1); + const int taps = is_chroma ? VVC_INTER_CHROMA_TAPS : VVC_INTER_LUMA_TAPS; + const int extra = is_chroma ? CHROMA_EXTRA : LUMA_EXTRA; + const int extra_before = is_chroma ? CHROMA_EXTRA_BEFORE : LUMA_EXTRA_BEFORE; + const int shift1 = 6 - is_chroma; + const int shift2 = 4 + is_chroma; + const int x0 = SCALED_INT(_x); + const int y0 = SCALED_INT(_y); + + for (int i = 0; i < width; i++) { + const int tx = _x + dx * i; + const int x = SCALED_INT(tx) - x0; + const int mx = av_mod_uintp2(tx >> shift1, shift2); + const int8_t *filter = hf + mx * taps; + const pixel *src = (pixel*)_src - extra_before * src_stride; + + for (int j = 0; j < src_height + extra; j++) { + tmp[j] = (is_chroma ? CHROMA_FILTER(src, 1) : LUMA_FILTER(src, 1)) >> (BIT_DEPTH - 8); + src += src_stride; + } + tmp += TMP_STRIDE; + } + + for (int i = 0; i < height; i++) { + const int ty = _y + dy * i; + const int x = SCALED_INT(ty) - y0; + const int mx = av_mod_uintp2(ty >> shift1, shift2); + const int8_t *filter = vf + mx * taps; + + tmp = tmp_array + extra_before; + for (int j = 0; j < width; j++) { + const int val = (is_chroma ? CHROMA_FILTER(tmp, 1) : LUMA_FILTER(tmp, 1)) >> 6; + if (is_uni) + dst[j] = av_clip_pixel((val + offset) >> shift); + else + dst16[j] = val; + tmp += TMP_STRIDE; + } + if (is_uni) + dst += dst_stride; + else + dst16 += dst_stride; + } +} + +static void FUNC(put_luma_scaled)(int16_t *_dst, + const uint8_t *_src, ptrdiff_t _src_stride, const int src_height, + const int x, const int y, const int dx, const int dy, + const int height, const int8_t *hf, const int8_t *vf, const int width) +{ + FUNC(put_scaled)((uint8_t *)_dst, MAX_PB_SIZE * sizeof(pixel), _src, _src_stride, src_height, x, y, dx, dy, height, hf, vf, width, 0, 0); +} + +static void FUNC(put_chroma_scaled)(int16_t *_dst, + const uint8_t *_src, ptrdiff_t _src_stride, const int src_height, + const int x, const int y, const int dx, const int dy, + const int height, const int8_t *hf, const int8_t *vf, const int width) +{ + FUNC(put_scaled)((uint8_t *)_dst, MAX_PB_SIZE * sizeof(pixel), _src, _src_stride, src_height, x, y, dx, dy, height, hf, vf, width, 0, 1); +} + +static void FUNC(put_uni_luma_scaled)(uint8_t *_dst, const ptrdiff_t _dst_stride, + const uint8_t *_src, ptrdiff_t _src_stride, const int src_height, + const int x, const int y, const int dx, const int dy, + const int height, const int8_t *hf, const int8_t *vf, const int width) +{ + FUNC(put_scaled)(_dst, _dst_stride, _src, _src_stride, src_height, x, y, dx, dy, height, hf, vf, width, 1, 0); +} + +static void FUNC(put_uni_chroma_scaled)(uint8_t *_dst, const ptrdiff_t _dst_stride, + const uint8_t *_src, ptrdiff_t _src_stride, const int src_height, + const int x, const int y, const int dx, const int dy, + const int height, const int8_t *hf, const int8_t *vf, const int width) +{ + FUNC(put_scaled)(_dst, _dst_stride, _src, _src_stride, src_height, x, y, dx, dy, height, hf, vf, width, 1, 1); +} + +static void av_always_inline FUNC(put_uni_w_scaled)(uint8_t *_dst, const ptrdiff_t _dst_stride, + const uint8_t *const _src, ptrdiff_t _src_stride, const int src_height, + const int _x, const int _y, const int dx, const int dy, const int denom, const int wx, const int _ox, + const int height, const int8_t *hf, const int8_t *vf, const int width, const int is_chroma) +{ + int16_t tmp_array[TMP_STRIDE * MAX_PB_SIZE]; + int16_t *tmp = tmp_array; + pixel *dst = (pixel*)_dst; + const ptrdiff_t dst_stride = _dst_stride / sizeof(pixel); + const ptrdiff_t src_stride = _src_stride / sizeof(pixel); + const int shift = FFMAX(2, 14 - BIT_DEPTH); + const int offset = 1 << (shift - 1); + const int ox = _ox * (1 << (BIT_DEPTH - 8)); + const int taps = is_chroma ? VVC_INTER_CHROMA_TAPS : VVC_INTER_LUMA_TAPS; + const int extra = is_chroma ? CHROMA_EXTRA : LUMA_EXTRA; + const int extra_before = is_chroma ? CHROMA_EXTRA_BEFORE : LUMA_EXTRA_BEFORE; + const int shift1 = 6 - is_chroma; + const int shift2 = 4 + is_chroma; + const int x0 = SCALED_INT(_x); + const int y0 = SCALED_INT(_y); + + for (int i = 0; i < width; i++) { + const int tx = _x + dx * i; + const int x = SCALED_INT(tx) - x0; + const int mx = av_mod_uintp2(tx >> shift1, shift2); + const int8_t *filter = hf + mx * taps; + const pixel *src = (pixel*)_src - extra_before * src_stride; + + for (int j = 0; j < src_height + extra; j++) { + tmp[j] = (is_chroma ? CHROMA_FILTER(src, 1) : LUMA_FILTER(src, 1)) >> (BIT_DEPTH - 8); + src += src_stride; + } + tmp += TMP_STRIDE; + } + + for (int i = 0; i < height; i++) { + const int ty = _y + dy * i; + const int x = SCALED_INT(ty) - y0; + const int mx = av_mod_uintp2(ty >> shift1, shift2); + const int8_t *filter = vf + mx * taps; + + tmp = tmp_array + extra_before; + for (int j = 0; j < width; j++) { + const int val = (is_chroma ? CHROMA_FILTER(tmp, 1) : LUMA_FILTER(tmp, 1)) >> 6; + dst[j] = av_clip_pixel(((wx * val + offset) >> shift) + ox); + tmp += TMP_STRIDE; + } + dst += dst_stride; + } +} + +static void FUNC(put_uni_luma_w_scaled)(uint8_t *_dst, const ptrdiff_t _dst_stride, + const uint8_t *_src, ptrdiff_t _src_stride, const int src_height, + const int x, const int y, const int dx, const int dy, const int denom, const int wx, const int ox, + const int height, const int8_t *hf, const int8_t *vf, const int width) +{ + FUNC(put_uni_w_scaled)(_dst, _dst_stride, _src, _src_stride, src_height, x, y, dx, dy, denom, wx, ox, height, hf, vf, width, 0); +} + +static void FUNC(put_uni_chroma_w_scaled)(uint8_t *_dst, const ptrdiff_t _dst_stride, + const uint8_t *_src, ptrdiff_t _src_stride, const int src_height, + const int x, const int y, const int dx, const int dy, const int denom, const int wx, const int ox, + const int height, const int8_t *hf, const int8_t *vf, const int width) +{ + FUNC(put_uni_w_scaled)(_dst, _dst_stride, _src, _src_stride, src_height, x, y, dx, dy, denom, wx, ox, height, hf, vf, width, 1); +} + +#undef TMP_STRIDE + static void FUNC(avg)(uint8_t *_dst, const ptrdiff_t _dst_stride, const int16_t *src0, const int16_t *src1, const int width, const int height) { @@ -440,6 +599,15 @@ static void FUNC(ff_vvc_inter_dsp_init)(VVCInterDSPContext *const inter) FUNCS(LUMA, luma); FUNCS(CHROMA, chroma); + for (int i = 0; i < FF_ARRAY_ELEMS(inter->put_scaled[LUMA]); i++) { + inter->put_scaled[LUMA][i] = FUNC(put_luma_scaled); + inter->put_scaled[CHROMA][i] = FUNC(put_chroma_scaled); + inter->put_uni_scaled[LUMA][i] = FUNC(put_uni_luma_scaled); + inter->put_uni_scaled[CHROMA][i] = FUNC(put_uni_chroma_scaled); + inter->put_uni_w_scaled[LUMA][i] = FUNC(put_uni_luma_w_scaled); + inter->put_uni_w_scaled[CHROMA][i] = FUNC(put_uni_chroma_w_scaled); + } + inter->avg = FUNC(avg); inter->w_avg = FUNC(w_avg); From patchwork Sun May 19 13:27:43 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 49022 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a48:b0:1af:fc2d:ff5a with SMTP id zu8csp3927650pzb; Sun, 19 May 2024 06:50:09 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVFK8Rkw6/yLOK+MvAHSGeUDXQMOZDidTZO65m8t6kmIWLucmC00Y+hSnzJ9fkiBUfmIh0ugAp1dNILxlAsGHtHrXBm9Z3jjLBCHA== X-Google-Smtp-Source: AGHT+IHI0OAyeG4eR00hRXCcLsqpqZGj4QlEtHI69Z1rzrJGlXqOSrQIzwUWWfriRe3ztyw/BaMC X-Received: by 2002:a2e:744:0:b0:2e7:1b8:7b77 with SMTP id 38308e7fff4ca-2e701b87d03mr55471071fa.22.1716126608698; Sun, 19 May 2024 06:50:08 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 38308e7fff4ca-2e4d1949d86si68227821fa.603.2024.05.19.06.50.08; Sun, 19 May 2024 06:50:08 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=cmJd9sGl; 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 AB6B068D222; Sun, 19 May 2024 16:40:04 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from SINPR02CU002.outbound.protection.outlook.com (mail-southeastasiaazolkn19011003.outbound.protection.outlook.com [52.103.65.3]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 74DD568D011 for ; Sun, 19 May 2024 16:39:57 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=c9VI9OyOykkUlrWN0njdh8yNAbJUC2hyUp50Stny8uxPSqPVxgOcp7wku5LAd5YtxPYJ8/zR80LYgpDcHm6VPiHuzhz5eLWOGSorsMDakKshrHFnO96jy+efoMhyTuF1IqQvbYJW8iE29SiUcN1YNBv1bS7ggDEKVXF23h0bHM7A2VXDje83Ifg/cyW7mWWMRMpVhlAsnB2F0PTqTyd/oqevL5+AUZ3FtroxFOlmZG6Liq5Rd9sLZzH+2mVWfxrAugEeUadL58TRaD/9W4PvCk5z2nWDyTEEpaNi5xDe1mxCdRhPw5oP+DA/Ksz/kBDJpPe7KyWACW+E2WaCw1LNeA== 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=DzL2llognoFT2O/u0P+aY+5BsRt8YhLqOEDAfRWNTGQ=; b=M7kq9f3GyIzdc2FnTx1+wJUsWzAg8D4cni6P0ziWul6YgIbExGjK91g13G+vnsmVeyO3jwqu5ZiDuVbgB87za8CfkJlGpDX/lXdr5zppASayycZfZkZcdwY466Y7lb7FLwVbwd1GVTpgDRl3SFrLWR0/gKT/CBJBFIHoJxViLBUua2Yjnzu5n67v/3uqe9Awaj30TrDbRzaDYmLHLlxNXu1nE1VrOujSILraraUc9dBugxZe5N1gIe/8tocVPIg8jiXT8prD5UU6Vw5Z1QXLWLT4nY4SPBcmtroIcK5IBITvbrUEkHyfB1VZxaZL6mu+gBBcPoOJDVmV1aBiaRdtfA== 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=DzL2llognoFT2O/u0P+aY+5BsRt8YhLqOEDAfRWNTGQ=; b=cmJd9sGlDfqxNlJsbdxFQAuc8afE8iC08xUQODyiu2J4RasnZqoTfzGtSnkzEtmzzy/PimIwxDKzg4u7bUfgUxdGhym3e7uE8SgItFvecV6iIWiGqRYFqJY491sCxR0jPam1KujoTE4EtNsoBIGHUy/63hjJzcaQygrkJhES2DSALN+d1Wbak45r7VzuIjY5BmSZzvfVUvQi+QG9ecd1+bdjwdGORJ6fWAquYtvD/7j9afZ7/UA4T232e4aJIJbENsHxf2lKLFUlM004U5S8Oum0mEvry/SzrwnX2Q4peIo7jfFo3BIo0rhG6SHslx3QEndEbtdIGvLPH51F6yjyXA== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by TYUPR06MB6098.apcprd06.prod.outlook.com (2603:1096:400:358::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.34; Sun, 19 May 2024 13:39:41 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca%4]) with mapi id 15.20.7587.030; Sun, 19 May 2024 13:39:41 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sun, 19 May 2024 21:27:43 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240519132749.790832-1-nuomi2021@gmail.com> References: <20240519132749.790832-1-nuomi2021@gmail.com> X-TMN: [nOnqiX+Cs0Ma10W75O+qyHZZz9v9OX0N] X-ClientProxiedBy: TYCP301CA0017.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:381::8) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240519132749.790832-12-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|TYUPR06MB6098:EE_ X-MS-Office365-Filtering-Correlation-Id: ffa269c9-c5d6-4eed-e8bb-08dc780922eb X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|440099019|3412199016|1710799017; X-Microsoft-Antispam-Message-Info: yW924WwlruaHOdaZx5GhFFE+aqW4eUYdQWLejHTbY893KqX3VqpVtRj+SZC54e0xmS3AJ1IUZbVleBWkhkFFB1Phu+Yq5CGI9/I1rw66dCzpvDhEVaLTbLQv+l+GztTw8zNnLwyjFicAtFQdkfwVqFL5yQV0v2+CdgUctjI6g07PKFr3U+6wLY6t9y0UwM5Wy5Lqtj8m1o4u3yOoMxI5twhhAvGk+aG3nsUxxrAZnG21pYkOn+gXYGLSNW2fJBGguK/O0KUJREfoPNBtON+rBl3MuB3zhQRLA4ll3YvXZEDs31cpWxOPg6bTs3nwcnHLx+pBTY8qFSJqdFcTY3O6c6VgNvT/WG7S+I7pmYGmmwrKxzr248bzTyYKoSBJEzdhdxEN9FRC7wF/J+eqS2ByxuFFDHMhorMyv1pa5FOOn5q+JNzme05EEDPKb6vM5VegXF+6NuVg+5hDws4tU2lWBwtf6Hng0NxKitvTwzA/s/WrbhS2n3nTtx3veTBLKE/tbaLYuoM7h5DHMqBwPweDj7I2uGCJKswaywVaJLMDwElA7Qk/suBhu+0MwXYgD3Pagiqmab/6uSwsswvSg0lELpyYbFUJyFTvFsFCGXZAg1Ljx1mwcJEP7SQCGud8YJke X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: avVNNR1JMEdiOlFWv19fcbsityES+ehEFluEym3Ut/zQllKOkiersI29B9NjTvmcIH6aIfAwvrUnJk5h6o77u9ycc1cPP1szPLJyQMJsFWzV3HUTN+tDF+RBtnD06va8Mrfx0tDuffa24JMnDEm001Ch5jF4XiOGuat1e9WsrobBB26o+GqeMxfJqWx1xWZ0VSiUCksjcYRbJTShGKv7+CFkW7JIn6Nt+LW6okYV5p4L/olj75fLaUmmsUuq9Zm3x+j0OPbl0rYvu4oksfMBTNR8IvbA+tF+O8LvZ9AWwUbd1EFhY0SNO9Su4kJvR6KRpldvRElZC5+EmFrWDdtQdTiAW/khKFLChX0n/qVqqAgClMONbBsLWyWJSTUSOVu1K5MviTdvJL3r1TEEEGIQJsXd0L6i2Tp+l8jeHJ6tv9+7yOteBe47qDoVlW0vRDrYygPAShPMtAQnkGFEIl+65jzeX/W4D7bioBTXRQNCw8fZSAlp/6sJtFjvysFKRkcH8usFixvAH7EjfzWNFVseXYxHPwgpN6FyBHYyUo6u7WYDUtBjKeQj/2r3cayBSdMXkaMAYiss0+vdbiOji7KoxG49KdZPgoaPy8eyZtTQUxRSJKYQxxyVV9/aNKeHc8n3GpgtWyl4j4NUv6zn5g0IGwYeCn+1k0qIwhEAuhjSZfXmOf9E4q4Gi5oq+gG6BMIvzNNueIsJq2gYbZx7r3zIJJ/vGAjPL8GKJur3Xw6FRu7AOIHGhrjAp5DRQeP9ydnahPwVwH9y/9pb8C+tTuQr4JQjwP4wLNyHxhNPrzck7X5wH+O0MFNOM7MA9KP+zeAPiWzLHnCZjYLRZ4EmAX34um/y0WSkGeV/Hm0cStWbqjezUGw2Bii1zgLJvAiN/aOxTcDF8sEkbym0xqXS/raX+D0L+rOesqEc4TqUAbfRs1CXBz26u3uhOUgVCI4tirVn+H+MyjWQJUNltQk+SUJtw7ypYoDfRUPhz+Ihkq6ZatqnqlKTCufN7v5iONV7DolNv1NZ+kSipQ2n5vj2aNuH76sGIP2IGHF1XsjTl8e/Iefoq0kYAjnWG63uq0blblOlm1WRIVb7RyQ5kTGALzdQ5rG+h7PpDcXkzZR2/u2yTN4OvAiex6LgoNw+wE7FGp9INB4/FWgEI365YgD07XuDaOb5djZ5cw3CzARAKCnnHuDizaJRLru2vK7nrB/Hng+z4NwAuDdB3e/uhLBHCwMb0SKnWmA7eE5tUU86HUfLGvMoB1DTXQbPkqtH3WwC4pZ1Mi2H+ISZdjpj/lEOyjxQjw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ffa269c9-c5d6-4eed-e8bb-08dc780922eb X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2024 13:39:41.7856 (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: TYUPR06MB6098 Subject: [FFmpeg-devel] [PATCH 12/18] avcodec/vvcdec: inter, wait reference with a diffrent resolution 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: 9H+3j5q7phXC For RPR, the current frame may reference a frame with a different resolution. Therefore, we need to consider frame scaling when we wait for reference pixels. --- libavcodec/vvc/dec.c | 5 +++++ libavcodec/vvc/dec.h | 17 +++++++++++++++++ libavcodec/vvc/refs.c | 39 +++++++++++++++++++++++++++++++++++++++ libavcodec/vvc/thread.c | 10 +++++++--- 4 files changed, 68 insertions(+), 3 deletions(-) diff --git a/libavcodec/vvc/dec.c b/libavcodec/vvc/dec.c index 3325133efb..584c7b219f 100644 --- a/libavcodec/vvc/dec.c +++ b/libavcodec/vvc/dec.c @@ -573,6 +573,11 @@ static int ref_frame(VVCFrame *dst, const VVCFrame *src) dst->poc = src->poc; dst->ctb_count = src->ctb_count; + + dst->scaling_win = src->scaling_win; + dst->ref_width = src->ref_width; + dst->ref_height = src->ref_height; + dst->flags = src->flags; dst->sequence = src->sequence; diff --git a/libavcodec/vvc/dec.h b/libavcodec/vvc/dec.h index 6f14cc1860..1e0b76f283 100644 --- a/libavcodec/vvc/dec.h +++ b/libavcodec/vvc/dec.h @@ -46,6 +46,10 @@ typedef struct VVCRefPic { struct VVCFrame *ref; int poc; int is_lt; // is long term reference + + // for RPR + int is_scaled; ///< RprConstraintsActiveFlag + int scale[2]; ///< RefPicScale[] } VVCRefPic; typedef struct RefPicList { @@ -57,6 +61,13 @@ typedef struct RefPicListTab { RefPicList refPicList[2]; } RefPicListTab; +typedef struct VVCWindow { + int16_t left_offset; + int16_t right_offset; + int16_t top_offset; + int16_t bottom_offset; +} VVCWindow; + typedef struct VVCFrame { struct AVFrame *frame; @@ -71,6 +82,12 @@ typedef struct VVCFrame { int poc; + //for RPR + VVCWindow scaling_win; ///< pps_scaling_win_left_offset * SubWithC, pps_scaling_win_right_offset * SubWithC, + ///< pps_scaling_win_top_offset * SubHeigtC, pps_scaling_win_bottom_offset * SubHiehgtC + int ref_width; ///< CurrPicScalWinWidthL + int ref_height; ///< CurrPicScalWinHeightL + struct VVCFrame *collocated_ref; struct FrameProgress *progress; ///< RefStruct reference diff --git a/libavcodec/vvc/refs.c b/libavcodec/vvc/refs.c index 954db4a8c8..fb42963034 100644 --- a/libavcodec/vvc/refs.c +++ b/libavcodec/vvc/refs.c @@ -114,10 +114,12 @@ static FrameProgress *alloc_progress(void) static VVCFrame *alloc_frame(VVCContext *s, VVCFrameContext *fc) { + const VVCSPS *sps = fc->ps.sps; const VVCPPS *pps = fc->ps.pps; for (int i = 0; i < FF_ARRAY_ELEMS(fc->DPB); i++) { int ret; VVCFrame *frame = &fc->DPB[i]; + VVCWindow *win = &frame->scaling_win; if (frame->frame->buf[0]) continue; @@ -144,6 +146,13 @@ static VVCFrame *alloc_frame(VVCContext *s, VVCFrameContext *fc) for (int j = 0; j < frame->ctb_count; j++) frame->rpl_tab[j] = frame->rpl; + win->left_offset = pps->r->pps_scaling_win_left_offset << sps->hshift[CHROMA]; + win->right_offset = pps->r->pps_scaling_win_right_offset << sps->hshift[CHROMA]; + win->top_offset = pps->r->pps_scaling_win_top_offset << sps->vshift[CHROMA]; + win->bottom_offset = pps->r->pps_scaling_win_bottom_offset << sps->vshift[CHROMA]; + frame->ref_width = pps->r->pps_pic_width_in_luma_samples - win->left_offset - win->right_offset; + frame->ref_height = pps->r->pps_pic_height_in_luma_samples - win->bottom_offset - win->top_offset; + frame->progress = alloc_progress(); if (!frame->progress) goto fail; @@ -353,6 +362,24 @@ static VVCFrame *generate_missing_ref(VVCContext *s, VVCFrameContext *fc, int po return frame; } +#define CHECK_MAX(d) (frame->ref_##d * frame->sps->r->sps_pic_##d##_max_in_luma_samples >= ref->ref_##d * (frame->pps->r->pps_pic_##d##_in_luma_samples - max)) +#define CHECK_SAMPLES(d) (frame->pps->r->pps_pic_##d##_in_luma_samples == ref->pps->r->pps_pic_##d##_in_luma_samples) +static int check_candidate_ref(const VVCFrame *frame, const VVCRefPic *refp) +{ + const VVCFrame *ref = refp->ref; + + if (refp->is_scaled) { + const int max = FFMAX(8, frame->sps->min_cb_size_y); + return frame->ref_width * 2 >= ref->ref_width && + frame->ref_height * 2 >= ref->ref_height && + frame->ref_width <= ref->ref_width * 8 && + frame->ref_height <= ref->ref_height * 8 && + CHECK_MAX(width) && CHECK_MAX(height); + } + return CHECK_SAMPLES(width) && CHECK_SAMPLES(height); +} + +#define RPR_SCALE(f) (((ref->f << 14) + (fc->ref->f >> 1)) / fc->ref->f) /* add a reference with the given poc to the list and mark it as used in DPB */ static int add_candidate_ref(VVCContext *s, VVCFrameContext *fc, RefPicList *list, int poc, int ref_flag, uint8_t use_msb) @@ -372,6 +399,18 @@ static int add_candidate_ref(VVCContext *s, VVCFrameContext *fc, RefPicList *lis refp->poc = poc; refp->ref = ref; refp->is_lt = ref_flag & VVC_FRAME_FLAG_LONG_REF; + refp->is_scaled = ref->sps->r->sps_num_subpics_minus1 != fc->ref->sps->r->sps_num_subpics_minus1|| + memcmp(&ref->scaling_win, &fc->ref->scaling_win, sizeof(ref->scaling_win)) || + ref->pps->r->pps_pic_width_in_luma_samples != fc->ref->pps->r->pps_pic_width_in_luma_samples || + ref->pps->r->pps_pic_height_in_luma_samples != fc->ref->pps->r->pps_pic_height_in_luma_samples; + + if (!check_candidate_ref(fc->ref, refp)) + return AVERROR_INVALIDDATA; + + if (refp->is_scaled) { + refp->scale[0] = RPR_SCALE(ref_width); + refp->scale[1] = RPR_SCALE(ref_height); + } list->nb_refs++; mark_ref(ref, ref_flag); diff --git a/libavcodec/vvc/thread.c b/libavcodec/vvc/thread.c index 2654b40058..8777d380bf 100644 --- a/libavcodec/vvc/thread.c +++ b/libavcodec/vvc/thread.c @@ -293,10 +293,14 @@ static void schedule_inter(VVCContext *s, VVCFrameContext *fc, const SliceContex CTU *ctu = fc->tab.ctus + rs; for (int lx = 0; lx < 2; lx++) { for (int i = 0; i < sh->r->num_ref_idx_active[lx]; i++) { - const int y = ctu->max_y[lx][i]; - VVCFrame *ref = sc->rpl[lx].refs[i].ref; - if (ref && y >= 0) + int y = ctu->max_y[lx][i]; + VVCRefPic *refp = sc->rpl[lx].refs + i; + VVCFrame *ref = refp->ref; + if (ref && y >= 0) { + if (refp->is_scaled) + y = y * refp->scale[1] >> 14; add_progress_listener(ref, &t->listener[lx][i], t, s, VVC_PROGRESS_PIXEL, y + LUMA_EXTRA_AFTER); + } } } } From patchwork Sun May 19 13:27:44 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 49024 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a48:b0:1af:fc2d:ff5a with SMTP id zu8csp3927658pzb; Sun, 19 May 2024 06:50:09 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXkJvCIAKK2PY+/KxGfOy2v0wdJ575VEWRXP44ou/aHbBj51M4nSqsu1P1ABYvc7ZYzaBxS8f64tzwdvxjwLXUrp83+3gLJla8hgg== X-Google-Smtp-Source: AGHT+IF/SCINNteAm2N/gDlQxjlokus+5kB6de80NmWWeExM+/wyl7hzaILRNY9uGwLdZHWoW1U7 X-Received: by 2002:a05:6512:54c:b0:51b:6934:1cb1 with SMTP id 2adb3069b0e04-5220fc7acd1mr15755101e87.17.1716126609297; Sun, 19 May 2024 06:50:09 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 2adb3069b0e04-521f38d3d80si7543855e87.269.2024.05.19.06.50.08; Sun, 19 May 2024 06:50:09 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=kuWbjOSr; 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 A1D0F68D26C; Sun, 19 May 2024 16:40:08 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from SINPR02CU002.outbound.protection.outlook.com (mail-southeastasiaazolkn19011003.outbound.protection.outlook.com [52.103.65.3]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 35D1A68D084 for ; Sun, 19 May 2024 16:39:58 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=G1vJdRXoobLMjc9TD/wExopm3n0fDz6EaIc/AvnMUslR7xqr0MCSsQeR9j6DXjjd/rDVHgpRe+2++jE2iGVxBUQZ4V9lUSiscawh2nvyfCZP3msD1+GnrQYiBl8519hKKRp61Yr1XeAG/AKL5BUaj274bGfDDVaNNG3joSkJLW0wJV3DDXLmVfVfX3VQCqtywUaKq9savr6NybA6M1iC6QQA4p8lPDfxyz3DsJDQeI1TGdPGaTNd76OY4HT93d8Ywo7DJZLdrLHyka/XsCqFaUkB4Cl9by/UPaHelnwhd45LJOaKTvJBll4tTKLizewVrqhfcvb6xoZ8YPFlXG1FMw== 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=JnvZDAMVDd7Cv6sd7S2HGKZtv3jax8tUdR3z9WlB+ik=; b=hsAs/+fToJTkJL3JdOyufn5hM/2KMAJYUN3VGJOjSYOv3a/3NbARm289c7GrOMhgl5LliprZmRG6iPufEq5D9jBIO+agS5jK7sERM2/KPoKCIyRSn7KWbk3kwgotmBfiavEHIHp8ON4WoMFsBuhnJ4LQaZw8Rblr/z9Z+78T7v3Mui8kuEEvytDy/85MZHRiNQ8kYtIjp+n9FgkUWYUpvGGGLJEpBu8Sv9EQ0Osoj50NgVK0Q10SYhAwW+DHiRLGVaDSMFhUzvgDN79StO8AXMrrXvkZrHWKayUVk+wBKExIaHUOkDVSonlj7pbXdujFzOSqZ3DktmlPmq17GmJg2Q== 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=JnvZDAMVDd7Cv6sd7S2HGKZtv3jax8tUdR3z9WlB+ik=; b=kuWbjOSrw5DW8Ca832npZmb7arChtdIMxWrxAEfny3hhJKaNpmkpFfv+9Hfv6qIzG8bUIDClJtUM4LCajJlSpPkl4EFWU7no9l5SI+Vn+FnnjVEJ67Ur9Wa+Xgp8tXeZXClaYA4SxII321xJCrSFAQBgWISSWEWEJp9ujDgbI0Laa7BweycVIiAz0SW6YaJ9S/uBVolP1goMslpKxj3i4vlQ+csBlhem8xTUYkHHBwxAjfrLo4vD8RztDoSSqPaBLrIYWN5C6ILx+j6a4v3i/raoUC2TZrIT568hnH472OJlwo9AEmoZsxD4qiAtQNyydLuf00k2XIaJ4ENjEVUhPg== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by TYUPR06MB6098.apcprd06.prod.outlook.com (2603:1096:400:358::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.34; Sun, 19 May 2024 13:39:42 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca%4]) with mapi id 15.20.7587.030; Sun, 19 May 2024 13:39:42 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sun, 19 May 2024 21:27:44 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240519132749.790832-1-nuomi2021@gmail.com> References: <20240519132749.790832-1-nuomi2021@gmail.com> X-TMN: [xUQ0qA0tiPphf6SpPb9pqbS90oA+ZD++] X-ClientProxiedBy: TYCP301CA0017.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:381::8) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240519132749.790832-13-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|TYUPR06MB6098:EE_ X-MS-Office365-Filtering-Correlation-Id: 4f17a4e7-14d9-4810-b59c-08dc78092369 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|440099019|3412199016|1710799017; X-Microsoft-Antispam-Message-Info: Bwj+NrDPZ+6WWI87BXWNb/r+UTlPf3PuqK962Toz3SZLrmxdD+tYKJqs7nraji7eW84jb87vMqG1BWvBXG2VNzsinIhELMM+9lWVwbJgvdKbAmW5wr5fbx4Qv6uW/g0aFsdpos23iRPAJ6frWQ5hAM6VDppAL80bNTI9ck0sL7T1CnT3KV3zZFILKNT0lg04x378KHaiZL4KbLqa85S9iew/9fhlX8HPmHQaDNDyzjC51pUwN6o21J7D1OzbFGkB61aUzkiF6f0Q1ZgFTNsw/+E5RzJNaORO8WWZJ/1n7iDcg2YxE5ng6ov4owJHxIKT+TJ9j6YcmahuvaHF/eddkESvuoa5ZCzcVeaTAWxEZ+1XRNlaP7aCVQuCCYz+tZYsEpHsoUcp4tYMPMY6j6Ejpi9gWeHMBI4NatoxW7dqu98tlXegClS2gfxYznnb+1vk6lNj7ZuEiTXyzF1r7OQTn1pC8qTVg37TFlerJlPeAWb/xv+i4Ts1Olz2T3Y8g7A5OCzU41LYyWI7YthsaqdKgWEo6app/qVUFIJFd4QReTmIL6X/75++Z7zSDWsIcCFqQrx4R+2BNZ8zVsdU7i8kK58hbD12t0zIdeF54hFjU8CLvqFIt418z9AoE+zA788i X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: nMXYE17wQar5ky7q0D7rRqCnpTnI5Ig8hKPX2jcQY+K96gs5oTA+fQIcKh0wstNxKJHUkERKHtqCGRWnVUyYVZOOBSPfw5rNcqdj2x8Nnui5ZZKwVxM1cPfcQv4W0LidUrH0mqI+GTmyIC6+CJDeIU3oi+8IaOxSRODZAjotW2LKzGRV90BO/wWGKx07csPRELbjq0XBimq4H5fvkuDjYivo4Af5kbD0lxQ99XgNBivKZYA+VxElENf86EPbRRGVXYTK18Roagt4PQRCketxE0oILNZJLhmqXzko9l0YoZU52OPklRbSDAAfsh2TQxUuVuojiS92EDbsnOsq6/d2SHCVDswZGK0qv8PQ3l444fqMLKj8WiY9TnjA8A9Vwkos4juoHhmzIxElK5zMz6xMR7zmNm5sO3En4xOFv3rNtTLfdw6jGixXf9zdsK1hMhoaGgWxKTQiXuNaKxXuG3tAq+eLgGbGCJMi9HReIVwI5M3fRAAQn1CRt1LZ+jq9svLN3gIzHZaPEeQw/9S7Bu3HrHkXdBXa+aKxr30FGDKI91ut/Kb8cysm/eeLJMKRwpuVGUxWRranUXw8JRETNQA6gxMQIDs+3f1kt+HNAjf/0MWnHkf1/6LQO26GZQCwWfopuwxoz+RXW0Ip5vcE63YkQucriCkdoIXL8OqsMA7CO2c8fJ3OOPWbxBieN2ms+nCSStvAd+JiLXz8cwDB8g4GQ9WeSk9lxOgaIsoS7SEsJTJ9MiR3WV3u6CLR2E+tyiFO83PCB/Al0VSW+v+2VSoZVz6FD7BJwj12BNpv88754wgCIw2vpayvgb2EnDHEfu499dfUEfrUTPogQBsoSp4HFNfQ6jwBdV6xm8CvVaZ9EpoEQaeU8GKmUAbODxEzjTCN5ZVVSWI/YhwWvSYz6zuRq7hv2O5sRCIbeEH42G8Ja9mJbUpv+Hv5KxphqBG13TyLSurqCXaRTAyu1en6gzefjcVrIq+w+/4IcTZRBcd5/G9UcbQ7iIGLPAX4yZ8tQaWkLsITqlf/JFX5lzpbiYXN7FHUuo0d+D6S+zIUML+y9pPEa73ENiKB9zMyuJL8aTg+hKtoVeTJKnEgpTYqLRWABw24bSAMcgMrUSSsbQyBLPdU1h+XJDLvTa3tdQJDv2V7uXMVpVoF2hv2srKGmADjIQt0vnQPSvrzkQ5v9QiJ/jOuHbSqVhvTrDMiMXK7H2r6clfIQF0XKF5Nrs5jB1WgcIeHD/OPdl9yHMSr1Iw5yvTUZHE7rSv1fXRUPrxHS2APUvJ2am5vkXwUKo5wJ0xg/g== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4f17a4e7-14d9-4810-b59c-08dc78092369 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2024 13:39:42.5780 (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: TYUPR06MB6098 Subject: [FFmpeg-devel] [PATCH 13/18] avcodec/vvcdec: fix dmvr, bdof, cb_prof for RPR 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: t/UQinE5AGza --- libavcodec/vvc/ctu.c | 18 +++++++++--------- libavcodec/vvc/mvs.c | 3 ++- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/libavcodec/vvc/ctu.c b/libavcodec/vvc/ctu.c index 242caa58f7..809510b93d 100644 --- a/libavcodec/vvc/ctu.c +++ b/libavcodec/vvc/ctu.c @@ -1689,25 +1689,25 @@ static void derive_dmvr_bdof_flag(const VVCLocalContext *lc, PredictionUnit *pu) const VVCPH *ph = &fc->ps.ph; const VVCSH *sh = &lc->sc->sh; const int poc = ph->poc; - const RefPicList *rpl0 = lc->sc->rpl + L0; - const RefPicList *rpl1 = lc->sc->rpl + L1; - const int8_t *ref_idx = pu->mi.ref_idx; const MotionInfo *mi = &pu->mi; + const int8_t *ref_idx = mi->ref_idx; + const VVCRefPic *rp0 = &lc->sc->rpl[L0].refs[ref_idx[L0]]; + const VVCRefPic *rp1 = &lc->sc->rpl[L1].refs[ref_idx[L1]]; const CodingUnit *cu = lc->cu; const PredWeightTable *w = pps->r->pps_wp_info_in_ph_flag ? &fc->ps.ph.pwt : &sh->pwt; pu->bdof_flag = 0; if (mi->pred_flag == PF_BI && - (poc - rpl0->refs[ref_idx[L0]].poc == rpl1->refs[ref_idx[L1]].poc - poc) && - !rpl0->refs[ref_idx[L0]].is_lt && !rpl1->refs[ref_idx[L1]].is_lt && + (poc - rp0->poc == rp1->poc - poc) && + !rp0->is_lt && !rp1->is_lt && !cu->ciip_flag && !mi->bcw_idx && - !w->weight_flag[L0][LUMA][mi->ref_idx[L0]] && !w->weight_flag[L1][LUMA][mi->ref_idx[L1]] && - !w->weight_flag[L0][CHROMA][mi->ref_idx[L0]] && !w->weight_flag[L1][CHROMA][mi->ref_idx[L1]] && + !w->weight_flag[L0][LUMA][ref_idx[L0]] && !w->weight_flag[L1][LUMA][ref_idx[L1]] && + !w->weight_flag[L0][CHROMA][ref_idx[L0]] && !w->weight_flag[L1][CHROMA][ref_idx[L1]] && cu->cb_width >= 8 && cu->cb_height >= 8 && - (cu->cb_width * cu->cb_height >= 128)) { - // fixme: for RprConstraintsActiveFlag + (cu->cb_width * cu->cb_height >= 128) && + !rp0->is_scaled && !rp1->is_scaled) { if (!ph->r->ph_bdof_disabled_flag && mi->motion_model_idc == MOTION_TRANSLATION && !pu->merge_subblock_flag && diff --git a/libavcodec/vvc/mvs.c b/libavcodec/vvc/mvs.c index 9407fbfd8a..e78a9b4694 100644 --- a/libavcodec/vvc/mvs.c +++ b/libavcodec/vvc/mvs.c @@ -297,7 +297,8 @@ static int derive_cb_prof_flag_lx(const VVCLocalContext *lc, const PredictionUni if (IS_SAME_MV(cp_mv, cp_mv + 1) && IS_SAME_MV(cp_mv, cp_mv + 2)) return 0; } - //fixme: RprConstraintsActiveFlag + if (lc->sc->rpl[lx].refs[mi->ref_idx[lx]].is_scaled) + return 0; return 1; } From patchwork Sun May 19 13:27:45 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 49021 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a48:b0:1af:fc2d:ff5a with SMTP id zu8csp3927634pzb; Sun, 19 May 2024 06:50:07 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCV76kW+5Oyw/gXMBdyrv4RUMXoMXLgaLo2w1CGHS5N2MLZ2u9uU9/Grt/GrQbYtuSXekGRbxCxpe3rW7VdZqj8qsSvVT+LTXD4zbw== X-Google-Smtp-Source: AGHT+IH5awf4CyoAZQXaR/DgmrdU2tp8tQH7eScR9cAaTu5crpvsvv8rCBPn2dmD2R8UP3FtF62f X-Received: by 2002:a2e:2203:0:b0:2e4:14a0:4d15 with SMTP id 38308e7fff4ca-2e5204b1e41mr181766041fa.51.1716126607061; Sun, 19 May 2024 06:50:07 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 38308e7fff4ca-2e4d194b9fesi67315951fa.637.2024.05.19.06.50.06; Sun, 19 May 2024 06:50:07 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=m6qurKV6; 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 7212068D239; Sun, 19 May 2024 16:40:07 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from HK2PR02CU002.outbound.protection.outlook.com (mail-eastasiaazolkn19010000.outbound.protection.outlook.com [52.103.64.0]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4633968D0AD for ; Sun, 19 May 2024 16:39:58 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LQJ76+jEgiUppy6yDJEShF/ewZf7r8nduLXAhY5kj8U7zVdv2Ym819QdM3dvgxTzeUK3r8A7grO8DNg6ro01MK63MR94maHdUVXrh8Q5fsLb53s0zYrzj9XZ7zrdDmQPKT5xcXg119q3Scor/kQkg1q9ZAmrtf2rpTFiqLj2EJPeUqE7VFMEmjB2icqeeaNjlHzMPUmULu70FMlyeApqTHMWyCdGRvAJ5vbNQrycL5EEzC3CraXSWzLCJbtC0U2pCI5Vs6TG4bVPQrZUIIWl0xgS2Y4UbqSvAI+tOvMeerF1nsOLXR7zHcBThyZeRDhDdNIxww1FZqNU4eRKia0jIQ== 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=IUR0hHRkwcyX19qexd0RHuyyY3WTB0TOhM6w7EM4b9k=; b=RLFoVmBSXtdHAqiJOnzZVbXID8nu7l74/+hY5t2QAenOj0POqIeAUqTqziFuAKoAlZBZtRiMi2ULOYFFlf//iUDnC+WAhxPdpi+P2pmhaSwTBO5YRx9moSJU+aFS78Dowlv5034Hq3YL8lKKAUwFdue5RWJBtq/iWw1nNJ9dlPZ0YTc44QPd1w7nwkaoC1LRg6PApGGnGrE4HmhznXmfdnHppsavnGcwrZCD5ktaFeCY+WAYdqyPL++CMGJJok9c6A//jr8pcNUWiLJEyPFOlcMjxUT978Vc926zH+wmwNMURWGTT+YyhJ2Lwtt4//mZ5kFag4A+a/BRXr+88+hEGA== 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=IUR0hHRkwcyX19qexd0RHuyyY3WTB0TOhM6w7EM4b9k=; b=m6qurKV61eyp4Zax9HDUIB4KqgT+lSU3QBSfkUPaWbxUKnoROxXmadRzBxHvFTxTKs4V+zn40Xu60lurcS4mVdvD88FK7ITi+Jkca3irNxO8M03CA9IDD7UYRjktHKdXrE9793qu+DplVvoRSVM5kZQZv6ul1ziXkjY9V4QtuNL3m1bTTb+l8Mm+be9RNWlnd/hiNVflA1Q2lKk9bYDI2CISQm5W5a18ePSCn3pJAIqbNl3Lo+KNZwUKvUS5RczOWVomiYq7Gccn7QRYp2IWe8BUJmpmWHwjcWxCvNxAj58vEOILeSpqVKcRdpPJahBYR9xnqTvxwOD/4HJu8V2pQg== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by TYUPR06MB6098.apcprd06.prod.outlook.com (2603:1096:400:358::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.34; Sun, 19 May 2024 13:39:43 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca%4]) with mapi id 15.20.7587.030; Sun, 19 May 2024 13:39:43 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sun, 19 May 2024 21:27:45 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240519132749.790832-1-nuomi2021@gmail.com> References: <20240519132749.790832-1-nuomi2021@gmail.com> X-TMN: [iASfSRYbnSfTW7CPGF4XSym/gTbQy65z] X-ClientProxiedBy: TYCP301CA0017.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:381::8) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240519132749.790832-14-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|TYUPR06MB6098:EE_ X-MS-Office365-Filtering-Correlation-Id: a6b9ff3f-7edc-45b2-0ecd-08dc780923e1 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|440099019|3412199016|1710799017; X-Microsoft-Antispam-Message-Info: /96emjFpX1ZvZQxR2xgwhiNOiSSqTcwoR7tUMYQZb1i9fL7JCfAfGy3cMmmgO2UIdtFKle4ZWmF/qrOVJzU7e9j85MbYzVr9DPhwAjy0PnKkfD9WNS1NvNL5jhXC+YZp+QRhz0nY2ZPJW6SB6b3Vu5gNd+eNq2pzhgWDzeUSG3I3icDhQAlfWUt04mUylOj2hbC02nhJtap7z79Ba6yyBGUw6IRT196RMtwKcctiPlep0jLSk5LjejEerRE+7SHfax7U467h8asfFaPSo+hz5A/y/hlgVuyW4JPDs5nGjq4HRX9mtBfOLSHL0NfCvh2YmRkq1TKOhNyXD/V96w4jQvaCAxp8EXYYRtzv0eLZGV1QYHGtdC6mktXpW5FEtxxBtOhJJWx3ibwKfcx/85zxBkuvrRP/fKPl8x7YCAMJJDj5z0FjGzkqzdVUl3WXLAIgrAbB42WYbXkt59ZaTGUdxtNgxi3RaAIlRJbankyDVmMNOzRInS8xNilBLvgf5SAAX4LhwROwTsRdWu7Qs/ERWsTmc5LH/apV7MlXTy0/6JwsQ3WaofSp/D8yNvQXSQdEGU1saDio5lNLwZDp/vF0IneF0WeKX85EbftbWaeKYJO4ghC23gVSSb5jHgvwlVgN X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 2iFZ5AHja6ihBfvxjn1BzZWKwH9xa+Q+Z3UboKfxAd98YGWvJRNN6DMlNDg6j5Fytn0ogep9VnTRp+8FZk2DihHQmuijGyRdieQp7aDXLOk1aNC/NxFDQi8Wjsw39KAGUMOXoSoWo8OAEY3jgbtJjnT3Wd/nngk/0HccorIa8+rwmmXx4L7Yhjsf40dI5qidGCL6/6EnO/SqHLhJJEzhUSaVRYtWWCr5gx1FCV/J7XUntJbe5IfYNqIuJuxZGI+3i82IPjOnAzimLydIo+0VUuan5UHGu3sN4Z+s7xlCuEsSruoFLJ0EPvTRsHIY9OCRRzgbwUEsCFwocD47jktPGPpmXRBs8gq/K1mX36ACiW20q/+fqhrl3EDZurpE9sKG7NvhCnLm/HVGwtevKveyuvFALLCx072TVEiC4u2uc81nIrTqQIykyjrf1eiFQCN4PEIwLTkPScIf9r0tETladCP75346o1bGrS5hJj25srxbJ5JzR5E0K7FSy0LJDO4RGVtM02YZkKiLia61X/OUJBIl0Hlxzw1JmZSZCHZIFBHd5IhniBk4Zh7QMD4JGzqBhC7T8tSGBX0NjayD877XlF0A+sPeaTk4wYCgry58QtaNlwnZahGUQI9LGO03ReZ9B7KyIokINCrVY5q6FZRpFEcYzOK7nzfT4ThVbj7kYyS7oJtJ+OrNo9YgGaNR/WWJ9C/j8LaRvufKI0MSumIST+cggsiC+oEMIZXMau2o6eOyaFUxHPiVPsqxjRBpJVcrmirZCEYJ2EGd/TzsYgDul1Hvme/4V9p4PNLV5OWe4m46YUxq8zGCuJYhFmxGntb6B9q935o885qpbS15LeZXHniPA9tAdS8FnQyLPvbPrlTVscUCAYPBcQQtkT4jtj5kUsZPSuZWMTR+pzVdf2Qxi1l/iQF1hf+ckAPqFXq6BdwRwk92aP3ZzOrWCi7FWRW2C6waklA/ezwtt/oStVCFfjABF8rpAO/6950VJosywpAl/Y89q+XqZNtyrE6GmaGLE9O0NlUAXD7U4AeH4pTv3/8eN09haubOH4BQtBEUXXAkTexGDDBNreni9CJuljqNtlaR2LB54T65Fm7OcJjaMnD5PjDSZrB3tKWFOLsszUj8U/9wNd7JGNTAiyA/sfIm00MBinAhCch/KtQwxc+dxnQIqsSZCUi5gyvFZeS3OVkuFZUQgIs8G+nOhIHNo6X0Yt1LWfScbYiIT3ZGkDWK4XDEikJizAqGt9kDGc5NCmgHlv+alGeo5RdRmFUAxG7nd0RccnLMQS9z8mcUF6vsPQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a6b9ff3f-7edc-45b2-0ecd-08dc780923e1 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2024 13:39:43.3534 (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: TYUPR06MB6098 Subject: [FFmpeg-devel] [PATCH 14/18] avcodec/vvcdec: refact out luma_prof from luma_prof_bi 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: sqmSG8GRVQ2Z --- libavcodec/vvc/inter.c | 52 ++++++++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 22 deletions(-) diff --git a/libavcodec/vvc/inter.c b/libavcodec/vvc/inter.c index f432a2dc3c..23b9a8af6b 100644 --- a/libavcodec/vvc/inter.c +++ b/libavcodec/vvc/inter.c @@ -347,40 +347,48 @@ static void luma_prof_uni(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst } } +static void luma_prof(VVCLocalContext *lc, int16_t *dst, const VVCFrame *ref, + const Mv *mv , const int x_off, const int y_off, const int block_w, const int block_h, const int lx) +{ + const VVCFrameContext *fc = lc->fc; + const PredictionUnit *pu = &lc->cu->pu; + const int mx = mv->x & 0xf; + const int my = mv->y & 0xf; + const int ox = x_off + (mv->x >> 4); + const int oy = y_off + (mv->y >> 4); + const int idx = av_log2(block_w) - 1; + const int is_chroma = 0; + uint16_t *prof_tmp = lc->tmp2 + PROF_TEMP_OFFSET; + ptrdiff_t src_stride = ref->frame->linesize[0]; + const uint8_t *src = ref->frame->data[0] + oy * src_stride + (ox * (1 << fc->ps.sps->pixel_shift)); + const int8_t *hf = ff_vvc_inter_luma_filters[VVC_INTER_LUMA_FILTER_TYPE_AFFINE][mx]; + const int8_t *vf = ff_vvc_inter_luma_filters[VVC_INTER_LUMA_FILTER_TYPE_AFFINE][my]; + + MC_EMULATED_EDGE(lc->edge_emu_buffer, &src, &src_stride, ox, oy); + if (!pu->cb_prof_flag[lx]) { + fc->vvcdsp.inter.put[LUMA][idx][!!my][!!mx](dst, src, src_stride, block_h, hf, vf, block_w); + } else { + fc->vvcdsp.inter.put[LUMA][idx][!!my][!!mx](prof_tmp, src, src_stride, AFFINE_MIN_BLOCK_SIZE, hf, vf, AFFINE_MIN_BLOCK_SIZE); + fc->vvcdsp.inter.fetch_samples(prof_tmp, src, src_stride, mx, my); + fc->vvcdsp.inter.apply_prof(dst, prof_tmp, pu->diff_mv_x[lx], pu->diff_mv_y[lx]); + } +} + static void luma_prof_bi(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, const VVCFrame *ref0, const VVCFrame *ref1, const MvField *mvf, const int x_off, const int y_off, const int block_w, const int block_h) { const VVCFrameContext *fc = lc->fc; - const PredictionUnit *pu = &lc->cu->pu; const VVCFrame *refs[] = { ref0, ref1 }; int16_t *tmp[] = { lc->tmp, lc->tmp1 }; - uint16_t *prof_tmp = lc->tmp2 + PROF_TEMP_OFFSET; - const int idx = av_log2(block_w) - 1; int denom, w0, w1, o0, o1; const int weight_flag = derive_weight(&denom, &w0, &w1, &o0, &o1, lc, mvf, LUMA, 0); - const int is_chroma = 0; for (int i = L0; i <= L1; i++) { - const Mv *mv = mvf->mv + i; - const int mx = mv->x & 0xf; - const int my = mv->y & 0xf; - const int ox = x_off + (mv->x >> 4); - const int oy = y_off + (mv->y >> 4); const VVCFrame *ref = refs[i]; - ptrdiff_t src_stride = ref->frame->linesize[LUMA]; - const uint8_t *src = ref->frame->data[LUMA] + oy * src_stride + (ox * (1 << fc->ps.sps->pixel_shift)); - const int8_t *hf = ff_vvc_inter_luma_filters[VVC_INTER_LUMA_FILTER_TYPE_AFFINE][mx]; - const int8_t *vf = ff_vvc_inter_luma_filters[VVC_INTER_LUMA_FILTER_TYPE_AFFINE][my]; - - MC_EMULATED_EDGE(lc->edge_emu_buffer, &src, &src_stride, ox, oy); - if (!pu->cb_prof_flag[i]) { - fc->vvcdsp.inter.put[LUMA][idx][!!my][!!mx](tmp[i], src, src_stride, block_h, hf, vf, block_w); - } else { - fc->vvcdsp.inter.put[LUMA][idx][!!my][!!mx](prof_tmp, src, src_stride, AFFINE_MIN_BLOCK_SIZE, hf, vf, AFFINE_MIN_BLOCK_SIZE); - fc->vvcdsp.inter.fetch_samples(prof_tmp, src, src_stride, mx, my); - fc->vvcdsp.inter.apply_prof(tmp[i], prof_tmp, pu->diff_mv_x[i], pu->diff_mv_y[i]); - } + const Mv *mv = mvf->mv + i; + + luma_prof(lc, tmp[i], ref, mv, x_off, y_off, block_w, block_h, i); } if (weight_flag) From patchwork Sun May 19 13:27:46 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 49027 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a48:b0:1af:fc2d:ff5a with SMTP id zu8csp3931089pzb; Sun, 19 May 2024 07:00:05 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCU/WbQEbgu2YwNnnz2ire4duy+lxE20TV3yrz3pWCyVMI19AzV3KQy4ZuwTviRxWAtTk8AN/ytQErFy6cEPN3pWMQQNaps2758DfQ== X-Google-Smtp-Source: AGHT+IE2XDBhzmBx501/agbtrrLAV9cispklfH5abDu2wkfXYkhgzXd4jfVN8xjQnHgcMlQZj0JR X-Received: by 2002:a05:6512:2104:b0:518:9b42:b846 with SMTP id 2adb3069b0e04-5221006fa19mr16237491e87.21.1716127205243; Sun, 19 May 2024 07:00:05 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a5a17bb1aedsi1230639866b.552.2024.05.19.07.00.03; Sun, 19 May 2024 07:00:05 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b="q/LVgfkO"; 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 561D668D030; Sun, 19 May 2024 16:40:11 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from SINPR02CU002.outbound.protection.outlook.com (mail-southeastasiaazolkn19011003.outbound.protection.outlook.com [52.103.65.3]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C810168D084 for ; Sun, 19 May 2024 16:39:58 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CPaxzubvr7ituzmtl7OSSbaia4k/5gY8Y6tBl+gRd+pK6RHBS+Em9KCxjdujQ3mEC6R1dSN9u/7TTOWhKBwt1dxmd7t5jBOAfLoUyMQviBKvxeRHckG9v2Rw8LUDHa/41eslZmioq2tdME6nX4DsJTCFAptDiiNdzir8F27HQmenaldVaEvvwkAtDSxoYy3qR/6H0cTS1bdmecAhNH5e9xSSz6t62WalqIIsm0aofSP80U4hEeK0UAbCUGZOvmB4mTVmxDQGuS9z6vpKx2/17SSbvdjgOY/PIZR+j11/Kgfpu2otjNqjjMCSz99MYwQclvzbFYEPAIup0wsMkiwlKA== 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=VrItx9QiTdpIHXL/KR8PkE+0IaPq7+wZ8gBPB1BjooE=; b=Gbb7+cDGZVmqREPO+VjAGrEon+RKjRMuHSXrX1Awr6CP7cVYQ2W7riQr3ec7yGj0x9cwPGkoV0fZMeUt/ftqPdyqiG2lJy27xw8ZNe1niwt1ALpuAXZoa1+NrV1dgxDT52kyUFu8sOfTtNYAveDHa0pLyTvJh0HmVaQbvCySJ8lSL5CEyu/9JQ58CfOMPOeDbzJ3QzVdPg6PzgYZ+fDjHhosjig2MLsmQkHjrL4bo4ZRA4lFrEtLg6KOtuZUtOuALKgXPz6JbgAxkoJr289knSr4m/zWRole0JMhV75tg1xFol9gf93+SKTev1y8LbhYTZFEQuoWIdauqt6NBR9g/w== 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=VrItx9QiTdpIHXL/KR8PkE+0IaPq7+wZ8gBPB1BjooE=; b=q/LVgfkOvTjWcfwMx7S1Y/BaDUIzLKu+bE/b5D3PgZp9otKrf0iq5i47iE3/l2tcBy7GYTPvUbq79zT0ASle05plau+6E1L37pbZM7hsqN2IZj39debvUT13O4XOjrnPShbV+RfC6sfvQy2CDeqyBeISrqrJ+pBPOqspAru2mqlbpHi/GlIiNldcoAId/Z5at68hi2bS38URE+KVp6SLYfaPA1CX8oiqw0QJOTbPEkb23/p9VVb1jU27/ltidkm/N9mQ5cJ0afUgTUw4nEjgE6VpVtcixqzgXtOHbmGkEOmYAgK96Ue0ISWJFRitrEI/prZ4m7FABevCfvXMdkwGCA== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by TYUPR06MB6098.apcprd06.prod.outlook.com (2603:1096:400:358::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.34; Sun, 19 May 2024 13:39:44 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca%4]) with mapi id 15.20.7587.030; Sun, 19 May 2024 13:39:44 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sun, 19 May 2024 21:27:46 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240519132749.790832-1-nuomi2021@gmail.com> References: <20240519132749.790832-1-nuomi2021@gmail.com> X-TMN: [PWKZTYmrR7d+Uyy7xq7O21pgG2r8zZ4R] X-ClientProxiedBy: TYCP301CA0017.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:381::8) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240519132749.790832-15-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|TYUPR06MB6098:EE_ X-MS-Office365-Filtering-Correlation-Id: bf09aceb-b68c-4ec7-d1b9-08dc78092456 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|440099019|3412199016|1710799017; X-Microsoft-Antispam-Message-Info: cyXluRJJDrturWLsrFrdH5o/LWFWu5TCSegHqDq/QuuEKEdzMcDsh/FEKu8N4fusIbrgoHfLTzr9ILqtLlL//Jsd6Y7PdHZL23xo3OC8EQL0pWZHThOfDbrVz7cl7Hvjp3gkAuVmLWJPt7NFUVVZlwmBPKDIxJM/iqJGbGx7YgEy/VPg3eu0cYLIB2KjG0s2qPMUGjEb9nO0fICWFSq9NaD6Lp4a3jWxytL4+tz1w3DTFoh8yHIIvYqjNwB1RU1qAym6rTLhDXJQ8xNJsHE1NmF9hfC173NPk0tQ6HvAcNQSae2j673IN/x8Urh0oOMlSVCFy33Zvhg4y/yExA532yOYVvbAM1EVS3xYXzVlilHDqPfdD6hTgMsT+D1+vca/A+hWe78AhX9Czu6d83+c3e87BFFFJA+9rS+EdmYiA2mGSzjQJJE6vWkIE/3ti8Bv4JyzpPnnhDPs24NLs2L1dSGVS9fre5IT/Sllyi4gnnGSmyvUzZGP4vBHgMq11Yv7zkGjSQIEIuMixd6OyJP8dvAmXmG+gdDgWAg5MRkqPgnsgbYnY+cC5Pek7015oZQA6VeFocETHnljkgBh/WexcmuUxk8rWrkdOSvul/Y9xp8= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: RVEfV6QD9HF/c96yXsGypPqkLX/YzgmNVQ5yzyiBLTkPA6lBAQW6CtfK4//CZmbsNtvOaeG6z/IXA+8zYozksSsPwoxrFpkx7nc8q+UqxY+PCpO9zq3/NsuiU20y4aBiJGIqclyehNXOQp9jO6ytOtfBQ84UpyKIkU3VuPr33pp0UCUzdmRsdVgXROy1mip5/Jsk7IaN+b09FyxNhAYjpdXYm/KvW8F6etDJjzj+eqYHV8nr5nGLwwkU71dFHzf2FJg5ldjSFKbQZa33fvM7/gJarhefN9UQGzW3KTsv6abmC42hC4j/HYN45Q3+kyvRZWJpetPwF8TdcK4VkdqJvyiSvo1CzyEzvxRREUXMzvDHfvKk5bsBXfpTDMTJiO6jA5zybZQ0eRktZQhN3UfouzonBV8beXBe3p+m8k7hpwezxtU3uEXCoOwbo/Ylw4xys5hGHJbIuIu75c3F6/4R0ZFO5PScg195b7jCDbgwQ3FbYyXY/zexPppiWDp5yU4/niD6BsM7mQHJ0nm7hSvFBH1w7q7vVYGPxaBEL/voHen9CWwQRGXg3Ykzmpg8qow23mfyCKROGveNwxyrTVhcz2LYvHdQ1srtZusXxYA4tRE0ppJ3JCLOItLxYhezsUBzyHQWmsC2qphAAy/llEUfnThxUW+UiPHGetveGo8jk/xSCQbzziRie29OM1Li42neOhsic5bWJ7Z+Pwos6eMQNPfiYociuv6taQq7BBiSx8Llsqt28NAonfxKa5WrGdAwPSrcXHhoPjqiHYYa9WBx0SOUQJJfjsxhdn8VBQHQcsGmuU7a7tLIuCp0HWQqARpNwI7cQups9IqD6Qb8uyZ/2kHvP0OL2sYuXVPrLL6azd5klgctDvSHXGYcth1qQuera0CG2PjA7M1NbPf1SRFXhZdnQLfMqX+jTyffYsGBV2I2gT+qfgsOk8ZjTSjXcsZedRfKCUra9AsOdVlJimaDU2BRtowjG/LskchzukSQmcO7Y2rVCzOZ5h8RvcRUZSYH8RVpdFGZOUe43l0bq1wVhr4uDZYuVmZd4vGTCcwnbQKYORKSgwnvnnuoOeX5vPrjr4EhoAv0UDhvDjxIfR+y+1Wfj3jtzRqq39e2B2/W6UZiXMYynSyfBXWqCJi/GA/d1o0PfRc53wK4aTRPgKNaLgy7UgxTfd5Cus0GfL9qRJiN55zJ79uH9G+lCI1h1D5GXKtqzKN/dVANgp6ElDu1yIl5n5+Kl+YLuCNkFuQQreTem/tNYC0JKL9m6vR5uuxMOpumFDv50YOIGoT8rQuh9A== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: bf09aceb-b68c-4ec7-d1b9-08dc78092456 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2024 13:39:44.1489 (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: TYUPR06MB6098 Subject: [FFmpeg-devel] [PATCH 15/18] avcodec/vvcdec: refact, remove hf_idx and vf_idx from mc_xxx's param list 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: kaTl0ht3VY6i --- libavcodec/vvc/inter.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/libavcodec/vvc/inter.c b/libavcodec/vvc/inter.c index 23b9a8af6b..5d553708d9 100644 --- a/libavcodec/vvc/inter.c +++ b/libavcodec/vvc/inter.c @@ -208,6 +208,7 @@ static void mc(VVCLocalContext *lc, int16_t *dst, const VVCFrame *ref, const Mv int x_off, int y_off, const int block_w, const int block_h, const int c_idx) { const VVCFrameContext *fc = lc->fc; + const PredictionUnit *pu = &lc->cu->pu; const uint8_t *src = ref->frame->data[c_idx]; ptrdiff_t src_stride = ref->frame->linesize[c_idx]; const int is_chroma = !!c_idx; @@ -216,8 +217,9 @@ static void mc(VVCLocalContext *lc, int16_t *dst, const VVCFrame *ref, const Mv const int idx = av_log2(block_w) - 1; const intptr_t mx = av_mod_uintp2(mv->x, 4 + hs) << (is_chroma - hs); const intptr_t my = av_mod_uintp2(mv->y, 4 + vs) << (is_chroma - vs); - const int8_t *hf = INTER_FILTER(0, mx); - const int8_t *vf = INTER_FILTER(0, my); + const int hpel_if_idx = (is_chroma || pu->merge_gpm_flag) ? 0 : pu->mi.hpel_if_idx; + const int8_t *hf = INTER_FILTER(hpel_if_idx, mx); + const int8_t *vf = INTER_FILTER(hpel_if_idx, my); x_off += mv->x >> (4 + hs); y_off += mv->y >> (4 + vs); @@ -229,9 +231,10 @@ static void mc(VVCLocalContext *lc, int16_t *dst, const VVCFrame *ref, const Mv static void mc_uni(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, const VVCFrame *ref, const MvField *mvf, int x_off, int y_off, const int block_w, const int block_h, - const int c_idx, const int hf_idx, const int vf_idx) + const int c_idx) { const VVCFrameContext *fc = lc->fc; + const PredictionUnit *pu = &lc->cu->pu; const uint8_t *src = ref->frame->data[c_idx]; ptrdiff_t src_stride = ref->frame->linesize[c_idx]; const int lx = mvf->pred_flag - PF_L0; @@ -242,8 +245,9 @@ static void mc_uni(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride const int is_chroma = !!c_idx; const intptr_t mx = av_mod_uintp2(mv->x, 4 + hs) << (is_chroma - hs); const intptr_t my = av_mod_uintp2(mv->y, 4 + vs) << (is_chroma - vs); - const int8_t *hf = INTER_FILTER(hf_idx, mx); - const int8_t *vf = INTER_FILTER(vf_idx, my); + const int hpel_if_idx = is_chroma ? 0 : pu->mi.hpel_if_idx; + const int8_t *hf = INTER_FILTER(hpel_if_idx, mx); + const int8_t *vf = INTER_FILTER(hpel_if_idx, my); int denom, wx, ox; x_off += mv->x >> (4 + hs); @@ -263,7 +267,7 @@ static void mc_uni(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride static void mc_bi(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, const VVCFrame *ref0, const VVCFrame *ref1, const MvField *mvf, const MvField *orig_mv, const int x_off, const int y_off, const int block_w, const int block_h, const int c_idx, - const int sb_bdof_flag, const int hf_idx, const int vf_idx) + const int sb_bdof_flag) { const VVCFrameContext *fc = lc->fc; const PredictionUnit *pu = &lc->cu->pu; @@ -275,6 +279,7 @@ static void mc_bi(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, int denom, w0, w1, o0, o1; const int weight_flag = derive_weight(&denom, &w0, &w1, &o0, &o1, lc, mvf, c_idx, pu->dmvr_flag); const int is_chroma = !!c_idx; + const int hpel_if_idx = is_chroma ? 0 : pu->mi.hpel_if_idx; for (int i = L0; i <= L1; i++) { const Mv *mv = mvf->mv + i; @@ -285,8 +290,8 @@ static void mc_bi(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, const VVCFrame *ref = refs[i]; ptrdiff_t src_stride = ref->frame->linesize[c_idx]; const uint8_t *src = ref->frame->data[c_idx] + oy * src_stride + (ox * (1 << fc->ps.sps->pixel_shift)); - const int8_t *hf = INTER_FILTER(hf_idx, mx); - const int8_t *vf = INTER_FILTER(vf_idx, my); + const int8_t *hf = INTER_FILTER(hpel_if_idx, mx); + const int8_t *vf = INTER_FILTER(hpel_if_idx, my); if (pu->dmvr_flag) { const int x_sb = x_off + (orig_mv->mv[i].x >> (4 + hs)); @@ -515,17 +520,15 @@ static void pred_regular(VVCLocalContext *lc, const MvField *mvf, const MvField const int do_ciip = lc->cu->ciip_flag && (is_luma || (w > 2)); uint8_t *inter = do_ciip ? (uint8_t *)lc->ciip_tmp : dst; const ptrdiff_t inter_stride = do_ciip ? (MAX_PB_SIZE * sizeof(uint16_t)) : dst_stride; - const int hf_idx = is_luma ? lc->cu->pu.mi.hpel_if_idx : 0; - const int vf_idx = is_luma ? lc->cu->pu.mi.hpel_if_idx : 0; const int do_bdof = is_luma && sb_bdof_flag; if (mvf->pred_flag != PF_BI) { const int lx = mvf->pred_flag - PF_L0; mc_uni(lc, inter, inter_stride, refp[lx]->ref, mvf, - x, y, w, h, c_idx, hf_idx, vf_idx); + x, y, w, h, c_idx); } else { mc_bi(lc, inter, inter_stride, refp[L0]->ref, refp[L1]->ref, mvf, orig_mvf, - x, y, w, h, c_idx, do_bdof, hf_idx, vf_idx); + x, y, w, h, c_idx, do_bdof); } if (do_ciip) { const int intra_weight = ciip_derive_intra_weight(lc, x0, y0, sbw, sbh); From patchwork Sun May 19 13:27:47 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 49025 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a48:b0:1af:fc2d:ff5a with SMTP id zu8csp3927677pzb; Sun, 19 May 2024 06:50:10 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVcQKYE1ZMIcA+oic5FrV9jt/ZWRE1m/d2mAvtHVPJPtHq4m04C/guYsqlqCtyXkgWeqsB9TNfZH3RF86QP9c8IduQ5MgiKZncQLA== X-Google-Smtp-Source: AGHT+IF1nxsug5Dlszhtck3z9azcgEfV0+CyrNRQJ6Znp7SqhvWOKm8aO0IWDl4YaEKt8mJOY+67 X-Received: by 2002:a2e:9c8e:0:b0:2df:8bef:d900 with SMTP id 38308e7fff4ca-2e51fd47d7cmr154408351fa.16.1716126610506; Sun, 19 May 2024 06:50:10 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 38308e7fff4ca-2e4d184071dsi69596081fa.525.2024.05.19.06.50.09; Sun, 19 May 2024 06:50:10 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=moy7I6KP; 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 0B66A68D2A7; Sun, 19 May 2024 16:40:10 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from HK2PR02CU002.outbound.protection.outlook.com (mail-eastasiaazolkn19010000.outbound.protection.outlook.com [52.103.64.0]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D509768D0E4 for ; Sun, 19 May 2024 16:39:58 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e1Fe5WvQ7B2FQrJJEaYmyBuLSlQxhJeUtwxlIq9oCh0VbFG4HL32hfhWOrHEaVl8lwO902rRk0c9hOgzN3R+q1T+y1Ih6VM2N5ylgSoXvvml4MFlLb2jHiFHmbdY+mZF8ClOGveJ3Mw1I6XtMO64nutHBPSBGW3nYElicUzk4mEZNuEZ4tzr30kbhuAIYzaY8jDYlqIvuf6SefLsKfJbambwcuSj2OxCQi07QBFhJFbkdu+LJgaIzVt8q/FeLHn+c1v5nKNSDdx1HtcFPCR8bs43jCgKEb6xSk6fLANe1XF+hRVHvveuNSVLP/rLOFLzqybnGoW+ENNYv2ft/6ontQ== 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=S4+jam6++w/4ODEWPgzjysAYEsIdUSxASOzakd9lvfI=; b=SrlW3qDkP/81EPthlTpcYAX3Zvd/+e0qTt8rNR0Ia1Wy/ePDpk44vay8ROp1Pos6ZkauYG9bOmLUGfjt/+fqBIeRX6XAKLmqZVnGMdPUIdBtJw+e3WMSqVextS02gTOnS1lLiPY4mFoaYxPYxdTXzBUSbmrJXNklkKGcW9bbBRD18nD0zS5RhXpxNbpgKE1/w78VEnDWSXddtKssQiDhlcTAIGKHK1CiMhQWodIy3J5wUOrV/ky4g1EkuOLeZq/2JLyGPxT5+1vy6gmbMUNuKj4lXFNr+wo7GpiKqOZObdV2a453DqyycXY3a/bVdnqFdDiUM3I9n7hFcXo6wY4New== 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=S4+jam6++w/4ODEWPgzjysAYEsIdUSxASOzakd9lvfI=; b=moy7I6KPeoSwy9gesIDivWQBnjs3nc0BIXgX4DO5FbNVrErCVKNzBnGgZc6seXQTkFd8HbZaof8g9NqtVzr0hRPB+oNsbGNQhQU2s+rfMqh6jcd3Zs3Gqmy35J0LF0TZOwkVF7GT5aexaVDHJwCDiIYaOcAc3DA1cKoiIq05X2LJ4em6IxLJr+1WZ7w+bJFa0vU4djoIvkD/yoAS4gixLkX65NjgI4vT7dxJ9DylpkMLK5D1I8BboY5hsIWrxKxitLNA9bYMBizRqpMKNfIKTF9JnLWrIhV6aVFn1EQD8hSb0FhVXFIwwmun5Zk12po3/HahzXq96uWhiElzQcATAg== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by TYUPR06MB6098.apcprd06.prod.outlook.com (2603:1096:400:358::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.34; Sun, 19 May 2024 13:39:44 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca%4]) with mapi id 15.20.7587.030; Sun, 19 May 2024 13:39:44 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sun, 19 May 2024 21:27:47 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240519132749.790832-1-nuomi2021@gmail.com> References: <20240519132749.790832-1-nuomi2021@gmail.com> X-TMN: [dDSGLkFlBT+IWQOmg2QH/aQfY9s2+j85] X-ClientProxiedBy: TYCP301CA0017.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:381::8) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240519132749.790832-16-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|TYUPR06MB6098:EE_ X-MS-Office365-Filtering-Correlation-Id: 0db1a838-235e-43fe-3601-08dc780924d1 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|440099019|3412199016|1710799017; X-Microsoft-Antispam-Message-Info: AF7eUE4l7FM5jlwpTIHx4EzmMw5gMu5xLoqgBBnxT5mL0/F2NNmx9lfNss39b7F1cmqWeqtLsEwdlDst/s5ghNaWyvEzF/raJct9EPsI69BGrgUEURkFMgeo7JD6z151v4iZRlG5wEZtN/6yT18rAKgsbPTm0f5kpuvU19sukvJjtIEEvSBCQpUGIsqwXVAAcP6+rYo/G+St7htupkeCqEoijSl5uaysg8Sf930Gp/BHe7uhA+kjKOVbKVeutAa2CY5Ti43m5MKSakPlVExSbHt7JZ4TInrTRPEHJGGWew6xAGLEk83WNYD8/7JwHoOrbm79WzM/pzlsmrRlZDyQj9EokKmTP7qGCnOk51ukCy2vhdiXs9K3NbKUNWQK+okA+JaF2DZGs9UDyk2KhGY+lCs2FexI+JTzOa8GXb1S4ZUI9ciMspAiFB1YFjSdp5KyoujvxzRrpJ6hrrrKg6bm2kS6npA8iydP3W+ISjpG7qzjdxCo02SX1HrPxxG+Lh6TUWe7bmT1huDoSYkOsvHIwHjDkk92/9+UqskYyMgmzcPThnpitgwHmove2rA0hEgDtw2V9fOIsFsGI8bjpg6Et/dGbV1uDLzLCmd6bhwTx+Ven50SPUOxgJjUtxRWTYuf X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: x/92dtVnZzQjzFVFuPxF5qVTzFQkm5VzgjTBOyu95UfDQSQ0q/CSClgIfolqDYuUMM3t3Dkc0qwrQa5SgYPkoJGZI/SRUtSxQqK9RMuFavstchRdCylIz4dO8jBCfbEec41+bN8n7XHYOB/lp+/3CqmEHzSa6F5WC1i3chDx6yyK2Xj2p/1B7EXygFw5AUXR/sc6uxqVNpjc3ygk6f/4DA/jmIfan8Q/GptyVCkrfgHsByScclvsJu/V9Ox2r5jJqZTIFFT4XybLb9w0qKg3KfYQemA7BOUbNjDYQJ1m+xxwicENegDrCtFLMhcq/ZZCUFlhN5mx4t9DaJDVpjIZy2TbZoCVVNTkiBYSiyuSzRT3NPoiPKdf1DlzBsBNh0YtgW3u93WTnB6pNUkRIuQUlY5t7QLFkC5b9JviX9iao089Bw4VHzK0Ua/9btu0PM+HCsQnTRZ6ak4gIlj1m8stVIaNkLXuE1nDorQFKybXGKgldz4/HaDbSaZ/x5mCVOJppkMr+QXuo2ndclyTua7vgjSEIQWYyIMENhys3lAsKPjYUgaFAEoq0sPayYaN/EjIMVs7eg392tGsz2mCgAWUsRWwROVMtPQGj5YEdjQvS8FZ73n1k2K98FqlBS2rfl37Eybjaz3B3o0RlgHp1Hla6+tN63Ee6LgI2I+aCNEC+pdkOnt4Gct/dsXCMrblnHMh1iVaDxbrpatSUase/jI9U5X2sUIyuaYM134QNjU59EhAIeH/aCFpyPg9nmz7XDDxIZMHn4Bztfw2RI0jSszGPYOVNDvhydXZxLaGYQx7k19ImUafVjej1QKDls7HY5gl9gQoF54l+YStD76MJvHYIfbSqwW0hiWtjBLEKYdxZeqquRGJZgDxInspYmakOu398M8nzM2ZULrp361vA4l319OKg1T19O646KBX5wSFH3Jmli2ptbKhfopcIRu5V0Xl9WzkyY4uTzs4pk3rmQBxvTp4lV67sYwjBJKD9/T/+7hQ8y29tAfojxmmgx7C2oM/nnSiyhxKgGAwCJfMYIYBEfnGYtXfiqowJ7GWR/lY6uMAywTgX2PKGZ/lArKJkzTJUutEkCbM9juOHKrulQ5lXFq0nmWeG4LVpb49nG8ZVpCCF0Tmtp7xaBfYf63IwpIOKCkq2s7O68adV1aGHlTFHw7JjpwtY6Ry6syWqZAVLJcgpoTzn8t2pWbQB3zkMX9ia9JWiWyoT5Vbppa6p49D9XlOHG00C6pVL8r7jUGJLrdyGFjlNr6cCqZ1RfVYyZLLEiToH4SOu0HOwVIMuuQfqA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0db1a838-235e-43fe-3601-08dc780924d1 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2024 13:39:44.9306 (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: TYUPR06MB6098 Subject: [FFmpeg-devel] [PATCH 16/18] avcodec/vvcdec: increase edge_emu_buffer for RPR 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: T2rwRqQDt0PM --- libavcodec/vvc/ctu.h | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/libavcodec/vvc/ctu.h b/libavcodec/vvc/ctu.h index 50109154aa..a987328d81 100644 --- a/libavcodec/vvc/ctu.h +++ b/libavcodec/vvc/ctu.h @@ -46,7 +46,8 @@ #define MAX_QP 63 #define MAX_PB_SIZE 128 -#define EDGE_EMU_BUFFER_STRIDE (MAX_PB_SIZE + 32) +#define MAX_SCALING_RATIO 8 +#define EDGE_EMU_BUFFER_STRIDE ((MAX_PB_SIZE + 32) * MAX_SCALING_RATIO) #define CHROMA_EXTRA_BEFORE 1 #define CHROMA_EXTRA_AFTER 2 @@ -375,10 +376,8 @@ typedef struct VVCLocalContext { int end_of_tiles_x; int end_of_tiles_y; - /* +7 is for subpixel interpolation, *2 for high bit depths */ - DECLARE_ALIGNED(32, uint8_t, edge_emu_buffer)[(MAX_PB_SIZE + 7) * EDGE_EMU_BUFFER_STRIDE * 2]; - /* The extended size between the new edge emu buffer is abused by SAO */ - DECLARE_ALIGNED(32, uint8_t, edge_emu_buffer2)[(MAX_PB_SIZE + 7) * EDGE_EMU_BUFFER_STRIDE * 2]; + /* *2 for high bit depths */ + DECLARE_ALIGNED(32, uint8_t, edge_emu_buffer)[EDGE_EMU_BUFFER_STRIDE * EDGE_EMU_BUFFER_STRIDE * 2]; DECLARE_ALIGNED(32, int16_t, tmp)[MAX_PB_SIZE * MAX_PB_SIZE]; DECLARE_ALIGNED(32, int16_t, tmp1)[MAX_PB_SIZE * MAX_PB_SIZE]; DECLARE_ALIGNED(32, int16_t, tmp2)[MAX_PB_SIZE * MAX_PB_SIZE]; From patchwork Sun May 19 13:27:48 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 49011 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a48:b0:1af:fc2d:ff5a with SMTP id zu8csp3924653pzb; Sun, 19 May 2024 06:42:15 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCW/cQJOm2rie5kahdkajBLRmfCX868FOuVuLqhdv2N7vgYfjVeZjFGPU8anismgBKbvt6kQDhkPnNGX5tkEcVfG7Kz+i1O4i/N/hA== X-Google-Smtp-Source: AGHT+IFa+K1FEjOgMrghBdYiAtynHx6kKBqs40SY1PSq9xMwbrA+w5t00A62TtPWmOoPorsyeSto X-Received: by 2002:a50:c30e:0:b0:575:a7e:4f82 with SMTP id 4fb4d7f45d1cf-5752b3f8acbmr3640525a12.4.1716126135110; Sun, 19 May 2024 06:42:15 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 4fb4d7f45d1cf-5769313c713si998493a12.368.2024.05.19.06.42.13; Sun, 19 May 2024 06:42:15 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=EjlkHFR1; 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 6802468D2FE; Sun, 19 May 2024 16:40:12 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from SINPR02CU002.outbound.protection.outlook.com (mail-southeastasiaazolkn19011003.outbound.protection.outlook.com [52.103.65.3]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9150E68CF47 for ; Sun, 19 May 2024 16:39:59 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ng1Ya2vbT8xkRmNq9Ds70t9uXoKTAIj7TROfllQSXKm6RUU9kZBPGC0ST4uygghCzbPlyC+2jmLILkciHMAaMZUekVxJr2EHOCjXG01EJ9IRzh0HjYjdcQBrzQ6WyQ7a3ac6M//Sf7uNy37/pCMQlKcIAbJmnKCFLIfgKhLRRq2V73N7NTQ6J1fuez54pEy04p75EB+y99j2rQSOptjwLhBVqJpcfAiTfuXA957bsG3E1lSLLrmYfvqpa2+RjW5hDVGOoDWnS8+nZ5+vzIDYBIxLWUZU2/2feZUwZRMvPyZjfdi+caK78e13Gn0J/BiivSUu9aaX9v+j3VxG19/k0Q== 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=aYKToz1Canh2CkfUNSHTfgzyrO4r/4ePZdr2i5IEqgw=; b=Awj/zMFdVrQ6wevWB89DYBHX+RWew4CKMBQqjIMlYQQ70NhNn8Tp+I2UFYUwjhrn28kgTg+lZ+rQZvwUb560N9G2rrqPdbMglF0bEMyhGPhicVgduUzhj0uCo56/W8wz8cEY2bMuViSMuKSV9J2QBxL78iXie1CpT8Kn1hrXu7sF1zqQoS8uU14rqzQ+pIjKZcwA/IJIGVL3B+gPIB5pMblrsNE+O5w0Abk3IFRfuMy6CFTMLzFkiwybxVX+iLYfHr/Fw4pHb4KzzCD7HZXt+U8IXRnsiT6+FfqGAkIbX9FSo4Kp62qCrTqGxwcyfKbyqjS3+VTuOWeiLG8rZSW4cA== 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=aYKToz1Canh2CkfUNSHTfgzyrO4r/4ePZdr2i5IEqgw=; b=EjlkHFR1TryBGsKvJZ+OmqS+OKiWYhPUFyRvSPQbZrplTZBZjgn5qBUDUS00QOaISJAPEdoiM/43DhdCBNqWR8fy6is+cQixdkk0s+f2/sRzGD+6pnA0lnNmYlv6drI13Z4jg5MGyr5b1uDhytV/x0eQ4jqZT67Im8iMpbE3IduDY8aHpnLg7sJSXiE9neQ2yUlLuSRw7oqfHiZlQDVD6nBn6wTiOlQPl7Lp6vsO8I74e7sn7AGZyuA/jWjSrUQ8/XRslLQ06pmgWKSRbyq+XAufSYeBN+aLRplP8XXOfd8pSQWAhh/nq346rtrPXFul7VdGbkPlIbbQdT8W2gczTQ== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by TYUPR06MB6098.apcprd06.prod.outlook.com (2603:1096:400:358::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.34; Sun, 19 May 2024 13:39:45 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca%4]) with mapi id 15.20.7587.030; Sun, 19 May 2024 13:39:45 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sun, 19 May 2024 21:27:48 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240519132749.790832-1-nuomi2021@gmail.com> References: <20240519132749.790832-1-nuomi2021@gmail.com> X-TMN: [Zb50zfONj3TRmC4gDKUW6agF6vipAp0D] X-ClientProxiedBy: TYCP301CA0017.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:381::8) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240519132749.790832-17-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|TYUPR06MB6098:EE_ X-MS-Office365-Filtering-Correlation-Id: 8e48cc52-4984-4ec8-94ee-08dc78092547 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|440099019|3412199016|1710799017; X-Microsoft-Antispam-Message-Info: XSNf+1SULDh85vrCMysB6fQUd6YsLIvEkf3vA3vUMe992qIEmfr6qsETcNXvYhLvTomZkOZRHTUaF7aI5ds44SDfGUBiKtxLWhrgJ3G1bbDlS5aX60SQa6CX1lyGqclT9aKDSAIJewdHuCfI+FGAAkUR+pRPSioaGyT+OHi7G2eKCy9QpH5q7VrPQFU6e+NCDX3q/DtJ42IzfRXpdBfxA+ajFEwzn9G7By/ekX16oMYSD3p7MYAx429ACWVU4JUuQyDiUvgTE2+j0L2nz0Fr2YeJdSCUnknclJWKGy5mbHLEhgSlZYt5E+BYHoiUe9UADUZ3iSlbDwfXAwmScJh+QSKUGK/SWvGj7LCYWUAOsHzPVyf1FS6SZzIR4DCqRD0vc3W6bvGRqxy7e7tDjrvGDqU7cCSvJlaJveIswoZ3PD8ZG3FMCOjVZjWyBG32SPAqiUsTeRnh/oLfAn1eAztlAgeCrrgW+jih4uFqf2v8gTKLUKRcAjbsfUG8bSh6Qk0paNc24vPUar3PTgcVt6KiUrl85yPCwGMByevzoePbL/+p3wrmLPA9wICVWUwMiqWDLp/sFlebbNPryG8MH7S2uPcteUGxxG0FVDJS5lo8UoeB6pVRPatXKxN/zo+dm2jV X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: kLxNV2CkW8hqr/BSYDnyEr0VMO43/HYYa1U2v4gxS9ly12LIdKnwOYzww7zt7Kk46KtNLtetHVfXmxbuczzpHqZoClgF4OUz3tUO63c62juIJnUIFQ3C7lJjhxwKJt3QSbl6qSpUfvddTc/MQCIbTPutP4/X8cjnxnIUSdCXqee5UlmiDQlNX8PGEgMYa5r/JZatF64RjewJuZV8j1L7D4BwvFbLM7Hb+AC+dWCfgbBaQX6kBO/yeejAneOH5zdIRmKcWCG1BwkXF1pJxKZHHKOl7SxNpGNz0IiVX9RlNtDsbBPtmlZahad9wRtXSmSEAZTKTUIfDDv9kQBEzpZJp7GeaH1B+Z//QBxerF2XpeWOmi2v6eUvoaxtvj8iU/lojykM/HmaZck0+UK5SYFQJT9+yJr7MTs9IFWKUboopeANI1TJOQ5srR19D8atPXnGYAWrKgt/ntecnkrGO0XTJAJf+XwPmms7aXGg9mWhWJDU/69SZ2ZVbH8h1ORXij2a3RtuzbXblfUwoF2jTHW4/UcR9q/zXruZ6+UiQ8ewEoW+oSodlswMEquX/I3JZ8Br7O0LGt2xYU62ksetiMPa5XTZxZkT8bxN8sG40zvEq0Qu3UyexaPn1oAXzsSBPy96AvZlzBHUjJ3CBAGye4l3PL5tn8upiNIq2ZEalDBtOWsViUD4K/jubF2bHCC2TutBe212AWNlf/DRA4VCMRukpIwWvoP/uJ2a1lbckNuQB1kxLCUa82sRbH8MbUHR2MPWlTFQu46/3W/eEKcs6SuuJZDRnl1BJY7O55p6COkmCo5MyqRgCfBclzNaPUWUkMxN5q1UYbNDaRu12O+0dtM26jm9ydpKP5w2iXSdvAAxsghyBC1YeLAMCQD9tJpxWJ7dZYncYywv8sxv4zFFK6kedweTmCmEeUzPEv/HI3rCn7RXPnCgWgBfb3p33eaGhV54wfa/DWj3gOt3Qq2+/iZKpvT2unvPTn943fV7blb3mlEYEgutP5KF4N0R3xA7t5vmB5GrbGJmE9FAAGY5HbXHIbHloQo+dBrLIr7gGYwEVmuPXhXuOSbkTh/7ebfcsrRqD6l58hSfjA04zN5dYI5TxTwmnlzys7hzcjw2rZkdUr85o3dHhC0pYxR4OkKSR+kwBcVj0LH7f/gz98tbgAi6Us4OX2Nj6HvLA1wr+GT6LtdRpxD8Szfc/Wp6ChlRyds1dh77IA/GWB/tc+fB9OfemaQo4QQLJFPhKBbj0xXlmaedMZ6vs/wXegTLLqkB6XhwnM92nI6RtT0Z5hM1a5BQAQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8e48cc52-4984-4ec8-94ee-08dc78092547 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2024 13:39:45.7135 (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: TYUPR06MB6098 Subject: [FFmpeg-devel] [PATCH 17/18] avcodec/vvcdec: support Reference Picture Resampling 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: Wk/ucphZHJwd passed clips: RPR_A_Alibaba_4.bit RPR_B_Alibaba_3.bit RPR_C_Alibaba_3.bit RPR_D_Qualcomm_1.bit VVC_HDR_UHDTV1_OpenGOP_Max3840x2160_50fps_HLG10_res_change_with_RPR.ts --- libavcodec/vvc/inter.c | 190 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 173 insertions(+), 17 deletions(-) diff --git a/libavcodec/vvc/inter.c b/libavcodec/vvc/inter.c index 5d553708d9..e1011b4fa1 100644 --- a/libavcodec/vvc/inter.c +++ b/libavcodec/vvc/inter.c @@ -313,6 +313,141 @@ static void mc_bi(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, fc->vvcdsp.inter.avg(dst, dst_stride, tmp[L0], tmp[L1], block_w, block_h); } +static const int8_t* inter_filter_scaled(const int scale, const int is_chroma, const int is_affine) +{ +#define SCALE_THRESHOLD_1 20480 +#define SCALE_THRESHOLD_2 28672 + + const int i = (scale > SCALE_THRESHOLD_2) + (scale > SCALE_THRESHOLD_1); + + if (!is_chroma) { + if (!is_affine) + return &ff_vvc_inter_luma_filters[i + !!i][0][0]; //hpel 1 is not needed for scaled + return &ff_vvc_inter_luma_filters[VVC_INTER_LUMA_FILTER_TYPE_AFFINE + i][0][0]; + } + + return &ff_vvc_inter_chroma_filters[i][0][0]; +} +#define INTER_FILTER_SCALED(scale) inter_filter_scaled(scale, is_chroma, is_affine) + +#define SCALED_CHROMA_ADDIN(scale, collocated_flag) (is_chroma ? (collocated_flag ? 0 : 8 * (scale - (1 << 14))) : 0) +#define SCALED_REF_SB(off, scaling_off, ref_mv, scale, add, shift) ((((off - (scaling_off << shift)) << (4 + shift)) + ref_mv) * scale + add) +#define SCALED_REF(ref_sb, offset, shift) (FFSIGN(ref_sb) * ((FFABS(ref_sb) + (128 << is_chroma)) >> (8 + is_chroma)) + (offset << (10 - shift)) + (32 >> is_chroma)) +#define SCALED_STEP(scale) ((scale + 8) >> 4) + +static void scaled_ref_pos_and_step(const VVCLocalContext *lc, const VVCRefPic *refp, const Mv *mv, const int x_off, const int y_off, const int c_idx, + int *x, int *y, int *dx, int *dy) +{ + const VVCFrameContext *fc = lc->fc; + const VVCSPS *sps = fc->ps.sps; + const int is_chroma = !!c_idx; + const int hs = sps->hshift[c_idx]; + const int vs = sps->vshift[c_idx]; + const int left_offset = fc->ref->scaling_win.left_offset; + const int top_offset = fc->ref->scaling_win.top_offset; + const int addx = SCALED_CHROMA_ADDIN(refp->scale[0], sps->r->sps_chroma_horizontal_collocated_flag); + const int addy = SCALED_CHROMA_ADDIN(refp->scale[1], sps->r->sps_chroma_vertical_collocated_flag); + const int refx_sb = SCALED_REF_SB(x_off, left_offset, mv->x, refp->scale[0], addx, hs); + const int refy_sb = SCALED_REF_SB(y_off, top_offset, mv->y, refp->scale[1], addy, vs); + + *x = SCALED_REF(refx_sb, left_offset, hs); + *y = SCALED_REF(refy_sb, top_offset, vs); + *dx = SCALED_STEP(refp->scale[0]); + *dy = SCALED_STEP(refp->scale[1]); +} + +static void emulated_edge_scaled(VVCLocalContext *lc, const uint8_t **src, ptrdiff_t *src_stride, int *src_height, + const VVCFrame *ref, const int x, const int y, const int dx, const int dy, + const int block_w, const int block_h, const int is_chroma) +{ + const VVCFrameContext *fc = lc->fc; + const int x0 = SCALED_INT(x); + const int y0 = SCALED_INT(y); + const int x_end = SCALED_INT(x + block_w * dx); + const int y_end = SCALED_INT(y + block_h * dy); + const int x_last = SCALED_INT(x + (block_w - 1) * dx); + const int y_last = SCALED_INT(y + (block_h - 1) * dy); + const int src_width = x_end - x0 + (x_end == x_last); + + *src_height = y_end - y0 + (y_end == y_last); + + *src += y0 * *src_stride + (x0 * (1 << fc->ps.sps->pixel_shift)); + + emulated_edge(lc, lc->edge_emu_buffer, src, src_stride, ref, x0, y0, src_width, *src_height, is_chroma); +} + +static void mc_scaled(VVCLocalContext *lc, int16_t *dst, const VVCRefPic *refp, const Mv *mv, + int x_off, int y_off, const int block_w, const int block_h, const int c_idx) +{ + const VVCFrameContext *fc = lc->fc; + const PredictionUnit *pu = &lc->cu->pu; + const uint8_t *src = refp->ref->frame->data[c_idx]; + ptrdiff_t src_stride = refp->ref->frame->linesize[c_idx]; + const int is_affine = pu->inter_affine_flag; + const int is_chroma = !!c_idx; + const int idx = av_log2(block_w) - 1; + const int8_t *hf = INTER_FILTER_SCALED(refp->scale[0]); + const int8_t *vf = INTER_FILTER_SCALED(refp->scale[1]); + int x, y, dx, dy, src_height; + + scaled_ref_pos_and_step(lc, refp, mv, x_off, y_off, c_idx, &x, &y, &dx, &dy); + emulated_edge_scaled(lc, &src, &src_stride, &src_height, refp->ref, x, y, dx, dy, block_w, block_h, is_chroma); + fc->vvcdsp.inter.put_scaled[is_chroma][idx](dst, src, src_stride, src_height, x, y, dx, dy, block_h, hf, vf, block_w); +} + +static void mc_uni_scaled(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, const VVCRefPic *refp, + const MvField *mvf, const int x_off, const int y_off, const int block_w, const int block_h, const int c_idx) +{ + const VVCFrameContext *fc = lc->fc; + const PredictionUnit *pu = &lc->cu->pu; + const uint8_t *src = refp->ref->frame->data[c_idx]; + ptrdiff_t src_stride = refp->ref->frame->linesize[c_idx]; + const int lx = mvf->pred_flag - PF_L0; + const Mv *mv = &mvf->mv[lx]; + const int is_affine = pu->inter_affine_flag; + const int is_chroma = !!c_idx; + const int idx = av_log2(block_w) - 1; + const int8_t *hf = INTER_FILTER_SCALED(refp->scale[0]); + const int8_t *vf = INTER_FILTER_SCALED(refp->scale[1]); + int denom, wx, ox, x, y, dx, dy, src_height; + + scaled_ref_pos_and_step(lc, refp, mv, x_off, y_off, c_idx, &x, &y, &dx, &dy); + emulated_edge_scaled(lc, &src, &src_stride, &src_height, refp->ref, x, y, dx, dy, block_w, block_h, is_chroma); + + if (derive_weight_uni(&denom, &wx, &ox, lc, mvf, c_idx)) { + fc->vvcdsp.inter.put_uni_w_scaled[is_chroma][idx](dst, dst_stride, src, src_stride, src_height, + x, y, dx, dy, block_h, denom, wx, ox, hf, vf, block_w); + } else { + fc->vvcdsp.inter.put_uni_scaled[is_chroma][idx](dst, dst_stride, src, src_stride, src_height, + x, y, dx, dy, block_h, hf, vf, block_w); + } +} + +static void mc_bi_scaled(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, + const VVCRefPic *refp0, const VVCRefPic *refp1, const MvField *mvf, + const int x_off, const int y_off, const int block_w, const int block_h, const int c_idx) +{ + int denom, w0, w1, o0, o1; + const VVCFrameContext *fc = lc->fc; + const int weight_flag = derive_weight(&denom, &w0, &w1, &o0, &o1, lc, mvf, c_idx, lc->cu->pu.dmvr_flag); + const VVCRefPic *refps[] = { refp0, refp1 }; + int16_t *tmp[] = { lc->tmp, lc->tmp1 }; + + for (int i = L0; i <= L1; i++) { + const Mv *mv = mvf->mv + i; + const VVCRefPic *refp = refps[i]; + + if (refp->is_scaled) + mc_scaled(lc, tmp[i], refp, mv, x_off, y_off, block_w, block_h, c_idx); + else + mc(lc, tmp[i], refp->ref, mv, x_off, y_off, block_w, block_h, c_idx); + } + if (weight_flag) + fc->vvcdsp.inter.w_avg(dst, dst_stride, tmp[L0], tmp[L1], block_w, block_h, denom, w0, w1, o0, o1); + else + fc->vvcdsp.inter.avg(dst, dst_stride, tmp[L0], tmp[L1], block_w, block_h); +} + static void luma_prof_uni(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, const VVCFrame *ref, const MvField *mvf, int x_off, int y_off, const int block_w, const int block_h, const int cb_prof_flag, const int16_t *diff_mv_x, const int16_t *diff_mv_y) @@ -380,20 +515,23 @@ static void luma_prof(VVCLocalContext *lc, int16_t *dst, const VVCFrame *ref, } static void luma_prof_bi(VVCLocalContext *lc, uint8_t *dst, const ptrdiff_t dst_stride, - const VVCFrame *ref0, const VVCFrame *ref1, const MvField *mvf, const int x_off, const int y_off, + const VVCRefPic *ref0, const VVCRefPic *ref1, const MvField *mvf, const int x_off, const int y_off, const int block_w, const int block_h) { const VVCFrameContext *fc = lc->fc; - const VVCFrame *refs[] = { ref0, ref1 }; + const VVCRefPic *refps[] = { ref0, ref1 }; int16_t *tmp[] = { lc->tmp, lc->tmp1 }; int denom, w0, w1, o0, o1; const int weight_flag = derive_weight(&denom, &w0, &w1, &o0, &o1, lc, mvf, LUMA, 0); for (int i = L0; i <= L1; i++) { - const VVCFrame *ref = refs[i]; - const Mv *mv = mvf->mv + i; + const VVCRefPic *refp = refps[i]; + const Mv *mv = mvf->mv + i; - luma_prof(lc, tmp[i], ref, mv, x_off, y_off, block_w, block_h, i); + if (refp->is_scaled) + mc_scaled(lc, tmp[i], refp, mv, x_off, y_off, block_w, block_h, LUMA); + else + luma_prof(lc, tmp[i], refp->ref, mv, x_off, y_off, block_w, block_h, i); } if (weight_flag) @@ -465,10 +603,13 @@ static void pred_gpm_blk(VVCLocalContext *lc) for (int i = 0; i < 2; i++) { const MvField *mv = pu->gpm_mv + i; const int lx = mv->pred_flag - PF_L0; - VVCFrame *ref = lc->sc->rpl[lx].refs[mv->ref_idx[lx]].ref; - if (!ref) + VVCRefPic *refp = lc->sc->rpl[lx].refs + mv->ref_idx[lx]; + if (!refp->ref) return; - mc(lc, tmp[i], ref, mv->mv + lx, x, y, width, height, c_idx); + if (refp->is_scaled) + mc_scaled(lc, tmp[i], refp, mv->mv + lx, x, y, width, height, c_idx); + else + mc(lc, tmp[i], refp->ref, mv->mv + lx, x, y, width, height, c_idx); } fc->vvcdsp.inter.put_gpm(dst, dst_stride, width, height, tmp[0], tmp[1], weights, step_x, step_y); } @@ -524,11 +665,22 @@ static void pred_regular(VVCLocalContext *lc, const MvField *mvf, const MvField if (mvf->pred_flag != PF_BI) { const int lx = mvf->pred_flag - PF_L0; - mc_uni(lc, inter, inter_stride, refp[lx]->ref, mvf, - x, y, w, h, c_idx); + + if (refp[lx]->is_scaled) { + mc_uni_scaled(lc, inter, inter_stride, refp[lx], mvf, + x, y, w, h, c_idx); + } else { + mc_uni(lc, inter, inter_stride, refp[lx]->ref, mvf, + x, y, w, h, c_idx); + } } else { - mc_bi(lc, inter, inter_stride, refp[L0]->ref, refp[L1]->ref, mvf, orig_mvf, - x, y, w, h, c_idx, do_bdof); + if (refp[L0]->is_scaled || refp[L1]->is_scaled) { + mc_bi_scaled(lc, inter, inter_stride, refp[L0], refp[L1], mvf, + x, y, w, h, c_idx); + } else { + mc_bi(lc, inter, inter_stride, refp[L0]->ref, refp[L1]->ref, mvf, orig_mvf, + x, y, w, h, c_idx, do_bdof); + } } if (do_ciip) { const int intra_weight = ciip_derive_intra_weight(lc, x0, y0, sbw, sbh); @@ -739,6 +891,7 @@ static void pred_affine_blk(VVCLocalContext *lc) const int sbh = cu->cb_height / mi->num_sb_y; const int hs = fc->ps.sps->hshift[1]; const int vs = fc->ps.sps->vshift[1]; + const int dst_stride = fc->frame->linesize[LUMA]; for (int sby = 0; sby < mi->num_sb_y; sby++) { for (int sbx = 0; sbx < mi->num_sb_x; sbx++) { @@ -754,12 +907,15 @@ static void pred_affine_blk(VVCLocalContext *lc) if (mi->pred_flag != PF_BI) { const int lx = mi->pred_flag - PF_L0; - luma_prof_uni(lc, dst0, fc->frame->linesize[LUMA], refp[lx]->ref, - mv, x, y, sbw, sbh, pu->cb_prof_flag[lx], - pu->diff_mv_x[lx], pu->diff_mv_y[lx]); + if (refp[lx]->is_scaled) { + mc_uni_scaled(lc, dst0, dst_stride, refp[lx], mv, x, y, sbw, sbh, LUMA); + } else { + luma_prof_uni(lc, dst0, dst_stride, refp[lx]->ref, + mv, x, y, sbw, sbh, pu->cb_prof_flag[lx], + pu->diff_mv_x[lx], pu->diff_mv_y[lx]); + } } else { - luma_prof_bi(lc, dst0, fc->frame->linesize[LUMA], refp[L0]->ref, refp[L1]->ref, - mv, x, y, sbw, sbh); + luma_prof_bi(lc, dst0, dst_stride, refp[L0], refp[L1], mv, x, y, sbw, sbh); } if (fc->ps.sps->r->sps_chroma_format_idc) { if (!av_mod_uintp2(sby, vs) && !av_mod_uintp2(sbx, hs)) { From patchwork Sun May 19 13:27:49 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 49017 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a48:b0:1af:fc2d:ff5a with SMTP id zu8csp3924068pzb; Sun, 19 May 2024 06:40:35 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWG3mx+nTZKcvd0F31P605B/fFGkEMaZ0/EEItgJq/NLnbWZCDSnwMDBy3LZLU6lnff8HXrW8WCodTVX/jEngAksIxPQLMcNJKZRg== X-Google-Smtp-Source: AGHT+IHvQTPlHyHpYoyjJdtHYGjxDpcytE4MV3gMypjjPUQToQ94YYihKjuwaECW2TonP4UlfD8u X-Received: by 2002:ac2:46e5:0:b0:523:a924:3268 with SMTP id 2adb3069b0e04-523a92433d8mr7069560e87.6.1716126035040; Sun, 19 May 2024 06:40:35 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 4fb4d7f45d1cf-574ec18ff33si5920999a12.60.2024.05.19.06.40.34; Sun, 19 May 2024 06:40:35 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=W9QylyRe; 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 4E93768D084; Sun, 19 May 2024 16:39:59 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from APC01-SG2-obe.outbound.protection.outlook.com (mail-sgaapc01olkn2028.outbound.protection.outlook.com [40.92.53.28]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B99F368CFDA for ; Sun, 19 May 2024 16:39:50 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=K4zFBzzk328eHgf2wvZqGeptM3h84TVcYcZHUIjbjMdIf7O4MUTWoChGoqFuHcQTaZ3M7Ulg+zOlao2JmmX/2A2/uue6kzVirQT2i0aTZnat/SfwAaRAZOKcUETPUeT7hrBlzmenLXhPXQWqWBJhVondeYz9FT+a9dZeDbxgQwXvolYN+xcPwjmEBYXuGgSCfvG7iFAj90R8Tw9wTMCjWY0i0l/cLtEEDa0gebM2B5aRkniMuSLV3HAeq4uU/eqHFpJPiloSInntdr4kzs5qbBNn50BabJn4H0ldKxJBR858scJYJGG12adGppmR1YVA5XYADvzdjPsz2B9vGpyK1A== 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=aE2Cg+MWugg+/B1CGXu6bUbrP1YFjdBCRno18TFS4ug=; b=cBO0d945tTiZxmgBnKYBroazQS0KAGEgRfiYZPD/5FySte3fu5JF93+44HtS9T2FZgV4w1g5EObG20+CLuI8qNyDlTqIcSM8gQYu2gJI5wlNXCnip1vepAs9SMVAE1AncKDn+F52zFfu6tL/jjh9/AKj3xC9SOFZr8Q96rOXDSrLv8M7kXVx9tYYg0af8jVx8g722Heir1hq2IliQ6czdKJc3kaps20z/qvRK9mrKDuC1jrhlslgLlO68VGeC0T/kPWfF1w5p9msGY1LeOG18uziSt/Eoiv0YdN2/CWPTisBacc69fauH+DW94C8tqRxWq5v1rcGgG3ncBpWSMYr/Q== 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=aE2Cg+MWugg+/B1CGXu6bUbrP1YFjdBCRno18TFS4ug=; b=W9QylyReSZjVUfAEn33wBdisx4DkO3c77+hm52PHtzHPGLMe6dqkJ37AC1LIq+hEqzSWe7Zn6Hwk3bBgcNg67ppLBAu4omZOyGIlu6bnRABjTEOHqNQ9ZqVeobJ5EWkIGqgy2wlbYLrkZLa123uqAVL4ePD3iDwTrRv3D1foUYdBnGtBwZXjoC/SF+c6yXcGd6R3uV3ccCBFyc8lGC7N600eGJwH3/3HGdCklCNNHKoX6hM3MGpAgExu/CF49xckVrs0mhEoByrgsET6yFQbL7n+4+pqfWiLn6MO9Z4ojOnu5ark1w5rZNbjjvZCgEwoC7OF2pnPDGdl8mrRIVwRCQ== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by OS8PR06MB7340.apcprd06.prod.outlook.com (2603:1096:604:285::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.34; Sun, 19 May 2024 13:39:46 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::81f7:9125:583a:1cca%4]) with mapi id 15.20.7587.030; Sun, 19 May 2024 13:39:46 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sun, 19 May 2024 21:27:49 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240519132749.790832-1-nuomi2021@gmail.com> References: <20240519132749.790832-1-nuomi2021@gmail.com> X-TMN: [2yKV4vjo6sSyDMOJy5kz2O+WT8N8AyuC] X-ClientProxiedBy: TYCP301CA0017.JPNP301.PROD.OUTLOOK.COM (2603:1096:400:381::8) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240519132749.790832-18-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|OS8PR06MB7340:EE_ X-MS-Office365-Filtering-Correlation-Id: cc47cb42-7155-4de2-01af-08dc780925c0 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|3412199016|440099019|1602099003|1710799017; X-Microsoft-Antispam-Message-Info: 9sqAXCbg49LxEi0WMFXcSr2J+FrH2IKroPLRk7X6689spuo9Ez3FognN0+lZ8NPfF/ekK/Bb8SEe4pp80tmmC/UJZ6WHAhYrV7RN31HFXIX4U/AEbrYpFmwjrhENxCOKSG8lH1YdxMTDM/P7WIK0rv6DyM0xcV6MvtFfT7yig1tnzPz6QuEyATCSTZtWseDSrMgF/UgJTK3ZJypo37blAng0V1EzyeyNIgKeC44AHMaPq1st2Al0uoNxwhZEQGkGMl7URB58lwy+IE11A1c2ZjZJAy/OaEibNTyKMRjsH+j4K/qHTN6b5GGXWD7lJq05nPkFbYcrNoyTT8cMOAXpXQKZbllmGiZbDsnYl434YiUmmy6O1egCxJ+w7xFWwjqD134GEXeLxuOkqzJmTfv3ErWBHENLIbSGk2iKeIncpAEspp4ax56CPzvZR7hAdO3v22HbUhTI4z5ZywftjyememfE9jNyMcCteZjPHyJbaPkD5hH9+QT7Tc0WmV5DNoXNcZlz6DG8Ozuvhpr0q/rPkxLHhl+t6WFo4ebYFS1gakWQm44d6d5XgP5T1ZFLFLhT29LASDLG/NvXIRq/4TDcDikBZU/nwnLGu8AAt36Caj1j5JLvCl0YY4meu3Oz/jOuQE7G0PG2GolGFqJj4dEJfES2yGCgYqty5oJDlOGQvDPVLv5sz0aQhNb6T4Zvo7sa X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: fCPNax+tILpRp9yqEtOLhZc089SpXim+lmP9Jp1XUADoILOpsAFug2h9rkep5Iy8cBmLwoTLXe9DuzA1FBDvXxmLknZrGCzgZAtgB7agmPIm1oLQ4vJzZH+GIBESnEZ4iDML+82PCo8dem0rf20fBF4Xwp3sl/0YkZz4p3XUDQv3zXdBOkpUl0botOren/5FxYCR9HAGXWr85zpqgzqGxvf4dXtJhUSQJw6Su8R63EHvVU9pdD9Keq7C1xu0mmFN1y9FR9yNLqRZ0U0Drix7J/W6ZFe9vd3KFeQFl5Lp18gWl17SpXKtMrS0RKz6ocGXX4DuCEGMtZ4MpvbhBQiNJ8KOCrIZcPpp1VpPeynYQlpj4Fg1ByE5Zic/O96epPqy0RHHMeZPGsEFpX97/bq0fxq2yZtbRr5ERddqNlUS9lSKSILkaMweLMfiReSyW5NYwSHZiUqhUlPRRdzmXqsw2dd1WkSXGpqQCjiLORcTjMV1KsQXwHXrB4ic2T/WLzv0FH2K2VVprkN1v5gWJR21nF3vigLVICyTOGHv5k8vSKBtIOSj9x5ABO8G9edw/P4r0z2Rw+zY7BC7oM1dfaqR7LpJC8bTRqsoWLjF+HTeHkJBcQgKCWJxEszbyu3pT2U0unaGO/iF8imG+g3XBU/wDbKfp/lKoAlLE41pN2xnYXZwaXrM7vH/tx/4hInH4Yo/MkoO5n6+Pvqb5u4MfsoOWah3ewP1Tn9v60fiwYRANY0lWMHt0Ae/ChvdmUw+kDoTCa0Ne9HMScdfn7/tadw5w/2qCfoXFsESRFwHGPS5kiuO9q1tIIgUgfsQl/hv5JHtCKkQnAVaNRDtETwPASKd3NZUMrvVRSJ9zLIOO1U8NIN2Uex0Y20nccOb4I0ocQsPlFmKxEi/TFUWgf5FnnjFxKI6XmALrXPwglN6uPw7kfyvMxQ21jPkj3TSEgEhD+VyrzAmbFOMOBtnozH5AIym3VBry3RtBdm7N3JL47yr3Atxs2558YA5SdV3FaRLK3Rf3mL9BbyfRm6G3k18+6LG+MAfxEr9WcbzZxQscVIExGkoPFL5tY8m6ARk8UGJU6eB07fqGPmXlzbTvaKE7YvkSjDXmIOCHHXbLi5ZwMt/jie1H8dmrUw8fz8TiOs0Y/OKJEoZAUM+xYRcANrnd3jp420QyMvuFpvAIlFwY6ZGbT6S8m89k218pk1Qj7S5eDCsUiaddj00CNww6RwhXPgljIcYF/QsmdZsRDM30oKNz4ppod9P+DInI+2bvO9Lv5yXnWYFD84k/CuGoZHOxKePCQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: cc47cb42-7155-4de2-01af-08dc780925c0 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2024 13:39:46.5544 (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: OS8PR06MB7340 Subject: [FFmpeg-devel] [PATCH 18/18] Changelog: add DVB compatible information for VVC 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 4eMGlRVDQQ4V see https://dvb.org/specifications/verification-validation/vvc-test-content/ --- Changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/Changelog b/Changelog index dd25715d6b..12770e4296 100644 --- a/Changelog +++ b/Changelog @@ -10,6 +10,7 @@ version : - vf_scale supports secondary ref input and framesync options - vf_scale2ref deprecated - qsv_params option added for QSV encoders +- VVC decoder compatible with DVB test content version 7.0: