From patchwork Mon Mar 18 14:16:25 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 47178 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:958e:b0:1a3:31a3:7958 with SMTP id iu14csp1043175pzb; Mon, 18 Mar 2024 07:19:41 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWELccq4i5YDb3ZiSEG2NZbiEkejePOdOkqiOyiYfD3rJZMYWMlw8hRt62xcPR6vbESM5kDSCPJ+1rXwGBzO6z7b7zraV9AH8+GGw== X-Google-Smtp-Source: AGHT+IGV344l686NKPfBipXmkdmalDRfS8ooDKn2YWos3u3lK8hNE+QfZGor/CRIuZuYfbib+g4J X-Received: by 2002:a17:906:528d:b0:a45:b91f:2f95 with SMTP id c13-20020a170906528d00b00a45b91f2f95mr7955115ejm.72.1710771581514; Mon, 18 Mar 2024 07:19:41 -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 kl8-20020a170907994800b00a46c744c6b0si671232ejc.85.2024.03.18.07.19.41; Mon, 18 Mar 2024 07:19:41 -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=ExPIufkM; 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 E876768D2F1; Mon, 18 Mar 2024 16:17:29 +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-tyzapc01olkn2032.outbound.protection.outlook.com [40.92.107.32]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3AE2068D2D6 for ; Mon, 18 Mar 2024 16:17:24 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BneZayw1387segFvwu9ZEMm2AQH9eBSJsSH/mD+mFpMfPoPqmHDPNVonC2nnZFbpwmjQJQ+qCCgZvHvoxz/Js0HINB4I5yK9Gmv68UtLqA1uMdC21bqMr5viPXFrhY8rlxwk9QoPfNgHbevzwCj/HWp74NRui366BqQct4EPOqU3IkD5b/MPCcZTfjokA3QeVBPiULbe11ytjTqnmKO5cDamP74m4n81FHj1ZpQIxza17G5QIF86DPrMRQLjhT2NZ51SnyM18UIlKHeVb3phxkr5VhSGWSYQwqy5N1HMZXPIpjm30z4tDal9MzNSviQeOe2qWk7S5kxwfMk8bZhLbA== 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=7qcEyv/WK9ZKtLc3JvWNnZQbtJvCmf0kidKBjd9iO0o=; b=DbK73fURDQ0ZUfsfaEM26j65N0bn5tndsgIbU2KZnUVn+bEL9Gm/Q9jzdDduUrHP3EstCqv+3y0L4mYI41+IZVTLCogIdHx6cP2K0COfkbXyjJEWtaz9L9gW4HPeiDpCG+LDGwYhB9NQHB+eAezFjv8EOqb7C+45WI4+OE03WCuso2MIaGCyccfWr2o9D5wim3o93hLfOEJiXZMBw5KpChY4UZdZK9swnrHFIne8cbwJjzXe5Ke5nTe0tnnIVZjiUYTXCPSlqoqSUVbNXX6czvhVwZji8IS5AE5WQ0dggoSwHgbnNrKClf7s1udWAv4E/XThSvnMnZFzSuE3VJbTCQ== 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=7qcEyv/WK9ZKtLc3JvWNnZQbtJvCmf0kidKBjd9iO0o=; b=ExPIufkMoSTTEImZMFU7AY12BghL2WQH0sw/xWAOHYdd1b+nqIqFUSoUHx4gNDA2N1g9fSWm/ep6ACRcK9WqXHHU1Knley/d1PKc8f5RatTBnW7zldccn9rF4YD6/2s9FQbWBSOFYitC52KqJg2T7cU6PG/VsrU82fWwKk0d/yNCEzFdlmil5NWIRg9usWmpCxcaaqDKs2cNl7mxcVe9ohsPMHvAD5Z4SFqFu9ypgSHBGG1ypk40873v0BoR7THgf4Y+qe93vCnF7vIdYuBmRMkMtIxuj3Ludy3NNiTyXZ3xHjhIfwgWGUYotdLnDr210rrk7devvcSNFDjjRJ2JBA== 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:08 +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:08 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Mon, 18 Mar 2024 22:16:25 +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: [YTjnDSpjyhKjYIW6Vp9C+etNqoiAmN3e] 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-14-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: fdabcd08-f199-4fb7-81f2-08dc47561872 X-MS-Exchange-SLBlob-MailProps: znQPCv1HvwVyACnTOSFL5RJO0O1WevBvFLcdwvZkg4nrnjAU7cV0GId0YmiUqSeK+1UpekEI6GB4MFB3/s7edbA2+aDbsPnECF8gcS1vtcB1Yt+GnL6bePLz1ig/X1E2uUUq0Pt1xc/8iLE2to94kRkaNY67ZUzVH7vQFe5cLu5wssRK8fcxIRkUk6Wp+dq66Y37pe9lsGUZmq38UKRyw1GjXDMjvwYDd2Pu1rk9TIgR2mOfvshAYhtwUscHvUvBSzRECi2cLsqZfI4yQCHssGQfafVw6WYR2a13WScY8+lfbr3OiW31ZIPMfLAaSCISMH/C3xk2Ex62c4iumJvSJku+gOws2kNBhEiWrkBeqVKRauR2d9sUDQQ9LyCvfstgO5/nZX/bQfhtBb9WPmuNYd4aZCeZpNaAxhmFwVehDVVKFLkRNWqrBzdPPcjUOeGl2PAh57BX9dc+xJfE/fMnoCqXg7qqGKd0+YC3Kk9ROQ8Pcg27xr1qOznS4ST2laOZMIq4YTMFOymxGTGng/FwkDRzgeUxTX3iNLC27+YdcwwkOluzU+Jlykyv7ZfPSjoehql0ZXz1KjDQKGBhxwgRrY53pGl4S2k8LNBxYedj/H83xI2vqFbP+fh078vIjj6Xs0P639SoVQrnlOTuXmRCvtqa5I1yWZ/0nHTT57QUEVZ+FbyTp6npAvDtwW5ZFHuON94cIvsSHa/MdDdhgMVsYbDvbWw0+GNTVsOMgMiDdCZBJnGd2H7G6G9b99XawDw3MpnloFvpj7c= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NaSVTrHl6Dd++MujxcRwxh8UN9icDfyWsd5rreU9Lh2T4WKsLhNQx5/WftUsEpAtqGqQmyznSkGubG91xgKZN9mT6+t90dPYu7wburLzDW8DAsbnzmDnmlbXbgVPMQ2bapPkz83j/uJlmFE+9BSvbozxVsgpZo75QUEi0k4IKvefgx7vnvns3HMudGuM/8H3vpZqjSxWhhlr0oLNqU7YKHfirh3NY5LneZ8Tc0988abJli+LX2OE+q36foVhwrJRTDF4ublJLxxgzLfGoaAKncfWwUpQB4D1Y0oTKgB+mOfrpVqUR0muc2QytyWfA0l48eo/ncjaOk9EuTo+hKTNj7RKGmStdIBubDmbFVakxEe1pPew12H9rwba/b4/g+ZtMdvU+0cf6gxN15Nx6a+/e8DsWurcW+L8/zJOJx4fIuuSC9TfS2dQPBO20gU5/+3hl98A8POvxsrZjoENldMVtAK9mUjnwvoGMVWwmI//qFI3sQB80CuF7i99uEEyx9zdhDbHCG2qUqIOT2TLh+FYMMXrV9pCR2SzrhYMOUkY6aTXpcOVbkUOcG54dJX2M70W5Fscirhqp/s5DN5tFrVdp1R5IYbxcY+kAsq2ss3oqZM= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: NDTIz3SJPH3+FtUbvF1oKjXisRwKtrV411Otg9s8PTYc/BUNejaOLhINGRjuJlV5YMlcTIVCeKrYQkE0Udnkn306seAfeyOCRr2Ovn+07S3ajeGY/v5V3tbnYFufzyoRI+NETL6j+8e0p9JXZmHPTA5jFGYHRFpSqhXp3BFbhppYo+SpG/So+5M1Qf9M+iZLXSe5N8+Hl+/cdDCb5TycZNTp/3Loxtd6abQBUrTYxChMCoqA2Q5T7XH+kG5mtR5tQw+fBFLY60oUGu+0wtmTKULjJONaXMvDcLlh7uPgvE79deZDcdWXjq01lINicaGnrUvEfZ6rWW2aYrg+4Jyem8VGyPvVOxK39DabYFbSyDHv9G4onr9my4CFoPG4RgxYkvnwc1Lq50e/WSsBmpAXVJ+R9fQQjTunWLf780qFbTQm2ija4gK3pC8ezSBgpZ4IscT1RC6HZDtCXV19mxvinPl7SQwwlos8hBgh8NLQSfalIlmpgtq43jwLQ41ufrQer1v0NeJ+hhWkuRuuV8yGjagoGP2RzB6DISZGJmaa61yBeAyAfmI5f2BCjNw2ccPtGJxEmf6UEsBNFtCzvdm1r18FsRHDCIxXkZWqS4/EO1JdzNCkR77Em8xqGenjJEnAx+KC5BjbWqNIAn/ayPHD3uNfTuQiu/sSd7/eRd5rOdJd1Nxk6TppWF5bwX2YpQfqMY99xctyLRYqx53j0Nzi0oC60mGZDo9i3kWB4ZmOIUgqwEqBS2oswIBVAAKsjcR9FDh5GGrXh9Xic9C7EZAenlx8vin7RmwWl2Dk89STwFpOE2oWQyXrywMDkuXOAIqBsAd87jzAwPmejIxeoCCGHrtBqS/zQkXd2AzaFAl8WoUSX0sOZSVDQlappZMLhoMut88/DO5ufMNN4aPKk3WPT06fqNc+ZOhAEP7na1A2e+o9pjoOUUA9xW6T3G1QKo5TOx2YgNNcWSCzyLJ4EDyKN1reOr7BBCOAPzhcOVIjxiiIgYGkzs1kQscVNcHFiwT4M4eZ2IpRSk1WDKF9BYRXvTXyyKwPyG5N1GHXoW2cqA2FEaRDPOHKhQ4NZGMDYTF2Uj3x4Hsu8ZN4I7VetirBQ9a7LIq3WZ45OqE4FPMeHZTDkSjTnSTT/zuta7xOA9mg42EN+xoBJLoKViLIlqZHrSAkoG6RceON+QLE4Yiv7b2VYfRgHmFRlphKJkp4HehDeOGzgpIzBcZz6RzHdaTH2YyJjaHbc+Xl/vBTPkY5DTNwhv3txcAK02gsZBZ2lGQrJNg9bLr+Uq+eLKaFhsYnOQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fdabcd08-f199-4fb7-81f2-08dc47561872 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:08.5168 (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 13/14] avcodec/vvcdec: mvs, support subpicture 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: ryqfhClAAJZK --- libavcodec/vvc/vvc_mvs.c | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/libavcodec/vvc/vvc_mvs.c b/libavcodec/vvc/vvc_mvs.c index cf92202b5b..37a2d0a228 100644 --- a/libavcodec/vvc/vvc_mvs.c +++ b/libavcodec/vvc/vvc_mvs.c @@ -200,10 +200,12 @@ static int derive_temporal_colocated_mvs(const VVCLocalContext *lc, MvField temp static int temporal_luma_motion_vector(const VVCLocalContext *lc, const int refIdxLx, Mv *mvLXCol, const int X, int check_center, int sb_flag) { - const VVCFrameContext *fc = lc->fc; - const VVCSPS *sps = fc->ps.sps; - const CodingUnit *cu = lc->cu; - int x, y, colPic, availableFlagLXCol = 0; + const VVCFrameContext *fc = lc->fc; + const VVCSPS *sps = fc->ps.sps; + const VVCPPS *pps = fc->ps.pps; + const CodingUnit *cu = lc->cu; + const int subpic_idx = lc->sc->sh.r->curr_subpic_idx; + int x, y, x_end, y_end, colPic, availableFlagLXCol = 0; int min_pu_width = fc->ps.pps->min_pu_width; VVCFrame *ref = fc->ref->collocated_ref; MvField *tab_mvf; @@ -224,10 +226,12 @@ static int temporal_luma_motion_vector(const VVCLocalContext *lc, x = cu->x0 + cu->cb_width; y = cu->y0 + cu->cb_height; + x_end = pps->subpic_x[subpic_idx] + pps->subpic_width[subpic_idx]; + y_end = pps->subpic_y[subpic_idx] + pps->subpic_height[subpic_idx]; + if (tab_mvf && (cu->y0 >> sps->ctb_log2_size_y) == (y >> sps->ctb_log2_size_y) && - y < fc->ps.pps->height && - x < fc->ps.pps->width) { + x < x_end && y < y_end) { x &= ~7; y &= ~7; temp_col = TAB_MVF(x, y); @@ -991,13 +995,18 @@ static av_always_inline int compare_pf_ref_idx(const MvField *A, const struct Mv return 1; } -static av_always_inline void sb_clip_location(const VVCFrameContext *fc, +static av_always_inline void sb_clip_location(const VVCLocalContext *lc, const int x_ctb, const int y_ctb, const Mv* temp_mv, int *x, int *y) { - const VVCPPS *pps = fc->ps.pps; - const int ctb_log2_size = fc->ps.sps->ctb_log2_size_y; - *y = av_clip(*y + temp_mv->y, y_ctb, FFMIN(pps->height - 1, y_ctb + (1 << ctb_log2_size) - 1)) & ~7; - *x = av_clip(*x + temp_mv->x, x_ctb, FFMIN(pps->width - 1, x_ctb + (1 << ctb_log2_size) + 3)) & ~7; + const VVCFrameContext *fc = lc->fc; + const VVCPPS *pps = fc->ps.pps; + const int ctb_log2_size = fc->ps.sps->ctb_log2_size_y; + const int subpic_idx = lc->sc->sh.r->curr_subpic_idx; + const int x_end = pps->subpic_x[subpic_idx] + pps->subpic_width[subpic_idx]; + const int y_end = pps->subpic_y[subpic_idx] + pps->subpic_height[subpic_idx]; + + *x = av_clip(*x + temp_mv->x, x_ctb, FFMIN(x_end - 1, x_ctb + (1 << ctb_log2_size) + 3)) & ~7; + *y = av_clip(*y + temp_mv->y, y_ctb, FFMIN(y_end - 1, y_ctb + (1 << ctb_log2_size) - 1)) & ~7; } static void sb_temproal_luma_motion(const VVCLocalContext *lc, @@ -1015,7 +1024,7 @@ static void sb_temproal_luma_motion(const VVCLocalContext *lc, int colPic = ref->poc; int X = 0; - sb_clip_location(fc, x_ctb, y_ctb, temp_mv, &x, &y); + sb_clip_location(lc, x_ctb, y_ctb, temp_mv, &x, &y); temp_col = TAB_MVF(x, y); mvLXCol = mv + 0;