From patchwork Mon Mar 18 14:16:21 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 47174 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:958e:b0:1a3:31a3:7958 with SMTP id iu14csp1042735pzb; Mon, 18 Mar 2024 07:19:03 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXV1wNk5YKAnpgB2Drwx+ItJrWFcC65Eif1kgUbXvmJgYZR/MFCCnLQHnCOltrKthozWsK4YN/pSScOPGoZJ9vCIY37yHI1IrnlVw== X-Google-Smtp-Source: AGHT+IHx8xIQA7oamrM5LuGU9Pc8d4AmUA4WQ9XMfnt9WN4b+SSGIpfaJ+OAx0WV1M1N3nc61nnH X-Received: by 2002:a05:6402:548e:b0:568:1444:a828 with SMTP id fg14-20020a056402548e00b005681444a828mr8032641edb.37.1710771542809; Mon, 18 Mar 2024 07:19:02 -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 fe6-20020a056402390600b00568ce82af98si1782245edb.536.2024.03.18.07.19.02; Mon, 18 Mar 2024 07:19:02 -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=diEMfydp; 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 9C90668D2E1; Mon, 18 Mar 2024 16:17:25 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from APC01-TYZ-obe.outbound.protection.outlook.com (mail-tyzapc01olkn2037.outbound.protection.outlook.com [40.92.107.37]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 894EE68D2B2 for ; Mon, 18 Mar 2024 16:17:20 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KuXCfvWVqRnnDSBiAAkAhGnmYfwSqwaLSEDTATmaKnbmR2JzQnztF6hIXV+JJ2E93gd9FI06IEqDsL3Tybf7gwhPG5dUfrI2piVnt+aNqfWByRA49DztNavfh79tLxs9mGsQuXXMc7v4/us5KvKWlgcBaEB9AzuMg2k+aO/5oFldgl0yDwUhYGYv0eS9TJ5yn6utkSJebm5/tVw2SHJNlEAGf4NpfrJ5bChD6XNoPpLqbEuV0pVkMqoaEVbJBK99XkOEH38432NS1nSsubqwxwmVXofRD+nSituhkD2oG2D22zkKMxen8rw/lMPqx8KgGekhfXT07EFsE+jsKQBMzA== 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=9FlncXTUF6cSgtrQbX0+fsFsv6N1asYEpyBexJrPDFM=; b=I45owPCWLGkTlbB/vW5gURFwQundf+SAG+1ei+iFSDQskwMiSsdtNpd/wcFyHnkHUnY77dX1XWMsA3LSPR4BaXoOET+vWde/cxz9b+Og7uFUVdRZrak4pb6bi4bq4Xar2qLf9wmDf83CDBMRjoexxQ9xxPf5/rnCP5gOkAVX7Px2/ODVF8Hzo+nSmPpg1Nkm14xznKCso1+qenyod6AqnTqPUIpyQYe6pAzJ4JqXzdSvrMNVmZH/wGkBL4xzXrh0ibTJJ9QyiirvC+Fq+EUC65JtfGMaFDDA2xUxGYm3PNIoKOL1d/tFo1d1uMZGlxQBpiwXVD89cfTbvkMATgTq1g== 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=9FlncXTUF6cSgtrQbX0+fsFsv6N1asYEpyBexJrPDFM=; b=diEMfydpJn8+l6R9ZEbXVTMwDEhS9vUiDHu1Vvi2gW0EnnTllmc9f/MPGtCLQcNXhexdS1jQIqWLK98GQLJnv2JVnr9vVludhnb5XLXsZIjxqhpbBF44LxpPUiD/qRX8wdsk0YQXO3Y6w2KAwIjKQxHnSOpioXElmAZpln+Dwd71LSSudbue1JoJ5linmERkptzfgwTuv7Act+92OWxTt6XEEv3s3kfviyTCnTaUlbByUrqzpD56XBwjDJtNr+OeT1gIXUDVz18k0VAgyK9rWNsjNjcxoZZRL5P3x4zUbC8n0bTSDVrQLnrjq/o42L83LXgUJEx7z2CtjubYI0pwJA== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by JH0PR06MB6604.apcprd06.prod.outlook.com (2603:1096:990:3f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.26; Mon, 18 Mar 2024 14:17:05 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::d001:da90:518b:ec1c]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::d001:da90:518b:ec1c%3]) with mapi id 15.20.7386.025; Mon, 18 Mar 2024 14:17:05 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Mon, 18 Mar 2024 22:16:21 +0800 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240318141626.3375-1-nuomi2021@gmail.com> References: <20240318141626.3375-1-nuomi2021@gmail.com> X-TMN: [1CN+N4cwjEoodGAUG1/zV5PiwqKREBXs] X-ClientProxiedBy: TYAPR01CA0085.jpnprd01.prod.outlook.com (2603:1096:404:2c::25) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240318141626.3375-10-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|JH0PR06MB6604:EE_ X-MS-Office365-Filtering-Correlation-Id: 51b598e9-5a4e-4184-42e7-08dc4756166d X-MS-Exchange-SLBlob-MailProps: Vs63Iqe4sQndKyqL8642oOb5kiEsziF11pm6dT1qy+EaIfML+kfX+cUURD2qzk94/vMcJ0Cchq2wnfaj0vQVKpt1tUk/vReQr8h3xmmCRn2eCWUlguDd5PnH6sm2MqKO4ljJ6b+xelRXYbCAYSMWYI9nBsARbXAnJxcPjr6vwn+kGw9nkpmG3vWOlV1fEpSpJyO2hljadgLCWge/gDeHdrbc48PhPZMcEmoaFR/Ds6SvI3snMJj1+DRFx/09m2R3EzD5UOEsig7nTdOWudjtex8xNrPLGIkm4hORxelcwIuexDXLRt1HM0lcRbP3CmUAndDYB8l+4fKVMcy5hGH7+1SsCo3Z/kxx6CPBgqn1gulzw3JzCmlYiekZ7M9A2LvZWPjt2BAczgKCppZVYdQLlOLEjSQen3t3BuO4soAmV1hIAQJ3I+CR7nG/EErkDnBDYg6P7GSXRErUf3/k4KaaFX/BHdtXvc3yw+nYRTrskytdOsMe5/LemR4LMF/NOJRpB0KPyEVhY8CtCljhsH4aVeAlmYaTYhU6gyNh+eP8CcPQ/mVk2nvpCL67gxRldj3gNRfYcfFugXcIIKoCFLhB7PR3vvmR4SOtAuzJ3Fa4EUb2qnrf9xmwgopKobgLb1AXlPji7HdRXhrSpeONbeg7kHhQEtfx95ICCvt3xf+WRs78ImjAcuzO/nFj8pCUhNF3X2rlJH3qR/ScrWvSXb/9UWz2usCtfIw1y9Tuhbr9aII= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Q7/nSXR6L6z3/eEu/3XJswLEcQfzg0f4NnKrHh+6qVbpuGULpw+Ltrr0QR1Y43CXo91Or29HGLzgK7rJrGh91az3HiQXqt39aWXWhotx9KujscZZasKdvzGc9lJqXsnKX7sDMzpHKpARdXpovgNt2nVALvKNzM4nXOD6TBLU8QK4B7Aw9IyFiVg/Wz5MO8ok2EELt2p5rz9bWfd0triYZX0HD+s+qGtPJTP9+VIM+g6OIH/IvzpHvHn/nMYP+Jp3wribzl8uuw8UvGNsRvCfJZxaYQpFZNVhFaOjjlE3wdpzwDtyw2G+j8mFytA+9JVGrUXK9T47vipHnDo/F+ZYcLCKVyM6nXslbkK7gig1DfKBtHOD+dGmQFTwyW+8m16XAFCB1kVyKYYwZB/cTIWvGvSuAzXlD1K6ZYyr4fQ4WsW5gyfcOc7y+CGLvNfu28QBp0W0rRVnIIC2dOkjGwhut6SmTF0JKk5+Oq07Giy57GCqGA1KniD6I5OP6T5xARlO5Z0gTAPAxuNIcd70Ht8tBieReQ4qjGCS1nnoDD1i2plvcLi63kQBbLmupNN4SH4hVzL4J5dbPaN8YIYjalDn7Db8z7iBeEUoKl8jfiFLOYScYW3IyI+000BQ4/SwTCOk X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: xvnt7r3walumYAGMs4lBOygZWBKIGDm0rwVX08jph+pFVe0Wo59hZKDhkgZTs/YimUYNPwyZoOrMTMZbZrpdqI9hZ4jhN10Lwwe8vt5FYbPGuzxT/ydGxrPXprZUPH/ZgDYNnLX0Ygsuo4XpzgwEvW/xIHMUTR1k5eL54K6FXyLWxSA/OQu4h56DeWB6wmiT+4YyBEQEx/lrVywYCxM7tubKuLfqn8VMo53xi8cMGZYZXcpT3rjazWTHXb9JpS4+cFaowLS2nBAk/5/N4p1PamWDm7LLNEj9tDNA3/oIfmeHr/xo/D9DpbMvtEWm5jNsHTYbZ16Hv0noNdsKbwOLleG5cghESwrwaGBMlQQKnJkmdTC6DPNEZLepF8+iScMaTRmIO3xahtx6E8ytAmdTOhsjLEVRVGZnQyQeElUJ47IpKGLnadjSXmqpGd9fyZWJRd6v6oJgW5d83t4xLr6CTeuaA3g+UF4faQxwyCOnFpmacwI7xvN55k1fRsIXILbh6ZCH8NNgSD6M683KDdvO68kFzulysZ23Uy21VYhrEXfSl1n86KFANKAoNioUblAR5kGcaAK9VqvyQvztcO5z+mk/shLELKMkdFkka3qxlswO+wgkGqZEYN8XYPbhO8Nup0FNUUMU+fRMfMHD5Owh/Hk2CmCelBG9u3olGjsabtaeWxozxS95vZXAvlJlzME+iN5sBAEtTKRdlaffHxnMqxkmJx42bgTEa6eGnyexU7GLmRyzBf0GKzlSaL3Qw6eCzM72vvriUnlaxsWdA+VI3ZbB4L0C0iA/vhE0b3FSSw6blH6pr4U3TedpWmSQXRcBI5LRNpKXT7fnbRMNYYCIUbdbQeobiD3d4tMqtx3MvA7Sj6Ab0f0+iroInLyGZD/vFTA5bV4UI+n4Qwv5PuuoWAiFXZnSFrnyixsGmchxb2V2pK3sop6udN6DADHQSKKUcWUBwO91tK65weVVK5+MlrbkBQjzxi0kyYl/soQCS6U8tJpnanZD1VNjMoyy+ERhmLuilU3d+jKYDk4CjLo7E5taWRfULnpG5ByBLzjj80huAbspyCXqT2axWNjaNUs3OEkUsv06wKNDiSd/w6VgU6Lt3rQf6IlBU8ulzCvAdCQCCPrskdiShRngLS+cg7LB6zIfvT/x0ynRaZTgAOKWBDjonEKXt7KSbC8/Kbk/Fyj0lLi+Zh8mn+VnW6d7R7cR56NQlEQCplwNOnKc+1CtS9YPYDLdPAI3PeBNkU/6AG96avjRmtlfEnyWpS4vpsx2LaB9iQYuvYRtMwDf8h7A3Q== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 51b598e9-5a4e-4184-42e7-08dc4756166d X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2024 14:17:05.1041 (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: JH0PR06MB6604 Subject: [FFmpeg-devel] [PATCH 09/14] avcodec/vvcdec: refact, movie the lc->sc assignment to task_run_stage to simplify the code X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Nuo Mi Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 3L6XWowF7QCk This change also make the lc->sc assigned for run_sao --- libavcodec/vvc/vvc_thread.c | 66 ++++++++++--------------------------- 1 file changed, 17 insertions(+), 49 deletions(-) diff --git a/libavcodec/vvc/vvc_thread.c b/libavcodec/vvc/vvc_thread.c index 5d2e8c67b9..8f23b8138b 100644 --- a/libavcodec/vvc/vvc_thread.c +++ b/libavcodec/vvc/vvc_thread.c @@ -416,7 +416,6 @@ static int run_parse(VVCContext *s, VVCLocalContext *lc, VVCTask *t) const int rs = t->rs; const CTU *ctu = fc->tab.ctus + rs; - lc->sc = t->sc; lc->ep = t->ep; ret = ff_vvc_coding_tree_unit(lc, t->ctu_idx, rs, t->rx, t->ry); @@ -432,15 +431,9 @@ static int run_parse(VVCContext *s, VVCLocalContext *lc, VVCTask *t) static int run_inter(VVCContext *s, VVCLocalContext *lc, VVCTask *t) { VVCFrameContext *fc = lc->fc; - VVCFrameThread *ft = fc->ft; - const int rs = t->ry * ft->ctu_width + t->rx; - const CTU *ctu = fc->tab.ctus + rs; - const int slice_idx = fc->tab.slice_idx[rs]; + const CTU *ctu = fc->tab.ctus + t->rs; - if (slice_idx != -1) { - lc->sc = fc->slices[slice_idx]; - ff_vvc_predict_inter(lc, rs); - } + ff_vvc_predict_inter(lc, t->rs); if (ctu->has_dmvr) report_frame_progress(fc, t->ry, VVC_PROGRESS_MV); @@ -450,14 +443,7 @@ static int run_inter(VVCContext *s, VVCLocalContext *lc, VVCTask *t) static int run_recon(VVCContext *s, VVCLocalContext *lc, VVCTask *t) { - VVCFrameContext *fc = lc->fc; - const int rs = t->rs; - const int slice_idx = fc->tab.slice_idx[rs]; - - if (slice_idx != -1) { - lc->sc = fc->slices[slice_idx]; - ff_vvc_reconstruct(lc, rs, t->rx, t->ry); - } + ff_vvc_reconstruct(lc, t->rs, t->rx, t->ry); return 0; } @@ -469,13 +455,8 @@ static int run_lmcs(VVCContext *s, VVCLocalContext *lc, VVCTask *t) const int ctu_size = ft->ctu_size; const int x0 = t->rx * ctu_size; const int y0 = t->ry * ctu_size; - const int rs = t->ry * ft->ctu_width + t->rx; - const int slice_idx = fc->tab.slice_idx[rs]; - if (slice_idx != -1) { - lc->sc = fc->slices[slice_idx]; - ff_vvc_lmcs_filter(lc, x0, y0); - } + ff_vvc_lmcs_filter(lc, x0, y0); return 0; } @@ -484,18 +465,13 @@ static int run_deblock_v(VVCContext *s, VVCLocalContext *lc, VVCTask *t) { VVCFrameContext *fc = lc->fc; VVCFrameThread *ft = fc->ft; - const int rs = t->ry * ft->ctu_width + t->rx; const int ctb_size = ft->ctu_size; const int x0 = t->rx * ctb_size; const int y0 = t->ry * ctb_size; - const int slice_idx = fc->tab.slice_idx[rs]; - if (slice_idx != -1) { - lc->sc = fc->slices[slice_idx]; - if (!lc->sc->sh.r->sh_deblocking_filter_disabled_flag) { - ff_vvc_decode_neighbour(lc, x0, y0, t->rx, t->ry, rs); - ff_vvc_deblock_vertical(lc, x0, y0, rs); - } + if (!lc->sc->sh.r->sh_deblocking_filter_disabled_flag) { + ff_vvc_decode_neighbour(lc, x0, y0, t->rx, t->ry, t->rs); + ff_vvc_deblock_vertical(lc, x0, y0, t->rs); } return 0; @@ -506,20 +482,15 @@ static int run_deblock_h(VVCContext *s, VVCLocalContext *lc, VVCTask *t) VVCFrameContext *fc = lc->fc; VVCFrameThread *ft = fc->ft; const int ctb_size = ft->ctu_size; - const int rs = t->ry * ft->ctu_width + t->rx; const int x0 = t->rx * ctb_size; const int y0 = t->ry * ctb_size; - const int slice_idx = fc->tab.slice_idx[rs]; - if (slice_idx != -1) { - lc->sc = fc->slices[slice_idx]; - if (!lc->sc->sh.r->sh_deblocking_filter_disabled_flag) { - ff_vvc_decode_neighbour(lc, x0, y0, t->rx, t->ry, rs); - ff_vvc_deblock_horizontal(lc, x0, y0, rs); - } - if (fc->ps.sps->r->sps_sao_enabled_flag) - ff_vvc_sao_copy_ctb_to_hv(lc, t->rx, t->ry, t->ry == ft->ctu_height - 1); + if (!lc->sc->sh.r->sh_deblocking_filter_disabled_flag) { + ff_vvc_decode_neighbour(lc, x0, y0, t->rx, t->ry, t->rs); + ff_vvc_deblock_horizontal(lc, x0, y0, t->rs); } + if (fc->ps.sps->r->sps_sao_enabled_flag) + ff_vvc_sao_copy_ctb_to_hv(lc, t->rx, t->ry, t->ry == ft->ctu_height - 1); return 0; } @@ -528,13 +499,12 @@ static int run_sao(VVCContext *s, VVCLocalContext *lc, VVCTask *t) { VVCFrameContext *fc = lc->fc; VVCFrameThread *ft = fc->ft; - const int rs = t->ry * fc->ps.pps->ctb_width + t->rx; const int ctb_size = ft->ctu_size; const int x0 = t->rx * ctb_size; const int y0 = t->ry * ctb_size; if (fc->ps.sps->r->sps_sao_enabled_flag) { - ff_vvc_decode_neighbour(lc, x0, y0, t->rx, t->ry, rs); + ff_vvc_decode_neighbour(lc, x0, y0, t->rx, t->ry, t->rs); ff_vvc_sao_filter(lc, x0, y0); } @@ -553,12 +523,8 @@ static int run_alf(VVCContext *s, VVCLocalContext *lc, VVCTask *t) const int y0 = t->ry * ctu_size; if (fc->ps.sps->r->sps_alf_enabled_flag) { - const int slice_idx = CTB(fc->tab.slice_idx, t->rx, t->ry); - if (slice_idx != -1) { - lc->sc = fc->slices[slice_idx]; - ff_vvc_decode_neighbour(lc, x0, y0, t->rx, t->ry, t->rs); - ff_vvc_alf_filter(lc, x0, y0); - } + ff_vvc_decode_neighbour(lc, x0, y0, t->rx, t->ry, t->rs); + ff_vvc_alf_filter(lc, x0, y0); } report_frame_progress(fc, t->ry, VVC_PROGRESS_PIXEL); @@ -602,6 +568,8 @@ static void task_run_stage(VVCTask *t, VVCContext *s, VVCLocalContext *lc) av_log(s->avctx, AV_LOG_DEBUG, "frame %5d, %s(%3d, %3d)\r\n", (int)t->fc->decode_order, task_name[stage], t->rx, t->ry); #endif + lc->sc = t->sc; + if (!atomic_load(&ft->ret)) { if ((ret = run[stage](s, lc, t)) < 0) { #ifdef COMPAT_ATOMICS_WIN32_STDATOMIC_H