From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 61CDC49776 for ; Sun, 19 May 2024 13:39:55 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BB91468CF29; Sun, 19 May 2024 16:39:50 +0300 (EEST) 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: =?us-ascii?Q?w0CiRDJUKavQ39t9/c39cCtL5FcsrfNPgG/rOVntZKvIGA+txXcgr2yNpmcU?= =?us-ascii?Q?u6ZxljA31ANn93v+JcxwrQXotB0e7TrJ+IvrkWbVuV6KZHBmWLnAwCQtx9JP?= =?us-ascii?Q?j0f2GNmy3LWTWIXev4915o8zZa6ctiLxZt5Qc1jX20e3qfuqIqmE06jFJRGp?= =?us-ascii?Q?qzB0MXpbXJT/hQ+Vn+W5MqIzsDF5U7IfmHjCgdnP0EWgNK6jslxiVP6VXbtQ?= =?us-ascii?Q?UkaNt4DHUEsE3PUttX0HmR4V7fhOIAPoubfmdLDmXd6B0NBjzHMcmFeDQ9c3?= =?us-ascii?Q?ENfUvgZO5GXeDaQPST55Vi+uUO264vKoTJSkqaI5JClKCmfAaWKCUfJ6Gezf?= =?us-ascii?Q?muLPC3TY85lAQUWasQXgu1s0phI2eTkVG0epwqJPyFmw5XCQhJL5FZQe6n1d?= =?us-ascii?Q?fKkn2lU81rb9mc5BJ8PoGCC5V4T8SIWTmexGeZcdkvY2m2WYeYh7jKjnG4g7?= =?us-ascii?Q?b+8KEnnNHRwa0gTE6HJPRaH7WjCfBUWXeHK3xDzlCKdQs/KWng/RaEN210hx?= =?us-ascii?Q?zeGkE1+sG+u5c55T1EbOVPRxEAEqKwDYdznk2TclOfP59BfeYIihbuU6iqu3?= =?us-ascii?Q?1TWq90Hp8/ijtWxIVP0dpilyXocckMR/gctLZrDQakt6ifAaDf+ZQo+lUJyi?= =?us-ascii?Q?RoTunDFOI3M491QJZef42pfkD07kQR4bc0a6WG5P9JQ7u1gfpuOlOd0oddAi?= =?us-ascii?Q?UiFjFiWjBgKJoQo8S24ba3gm7ChZMzq1uvBfy61048KSHP52Yzdzsy5CPc4x?= =?us-ascii?Q?F8l7DggBo5tRT6rLPAVMAOFncUfoYs89zG/BtNyHyUpBC1bHVxtFPL6inXb7?= =?us-ascii?Q?peJKd52a6Nw4q0M4VkEZ2tLzC+RvktmxPsXwqwupkT2qTHM7rc2w6v6QSK4+?= =?us-ascii?Q?7r11UEGs1CF4DVrcKqlJuBSURZhO6WlkxadIChpx4cddAX7BZB7V/VyrZg38?= =?us-ascii?Q?P8MAFPVTRYXJ8Mu/gexDzlPYEcQioy4eO748cTG9vCDB9GXYyMomJPOjNYnd?= =?us-ascii?Q?6dKOJ1dl/sPA0PN39HFjWqAQux4DmaEb9wAe4y5/z4+FX3Xe/tpdN4nXPW6w?= =?us-ascii?Q?YL1PFssi57962b2fFEtpFo8s53C2jKyT1esL+uHnbUIprijewPeHekG2k3kS?= =?us-ascii?Q?wfOnraQGKVWyawds2QrVvZ/dlhpNsG/rDHW5J+8nFd8ytKZr/H/hXNgGsjiC?= =?us-ascii?Q?h9bbqWdj+LBUPtXq0q7MGfCPYqJuE/hbzy9tJhUmtQZeX9pRJT40gkAqkw+6?= =?us-ascii?Q?gLMQ4FzGZTEs7zcyGcQgQVVKsFYh4ovi9QAgkBbMeQ=3D=3D?= 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: --- 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; -- 2.34.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".