From patchwork Wed Mar 27 13:01:11 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 47537 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:9f96:b0:1a3:b6bb:3029 with SMTP id mm22csp605798pzb; Wed, 27 Mar 2024 06:04:09 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCV10355D5IoChRxzBw8EzuDMUXumvzAq8IziPOQuSfKKyf+gzNkXe+ARckzbzC1wdVES6oaKAdf2AzWfmOkWLbog4JZox/fsot9uA== X-Google-Smtp-Source: AGHT+IGke9xh2ZLbLxYzF22CYK8t8wGUUNLliWN7fr+GuS6xHXG99GbD9rqoVOS9/qJUzYMHIIeV X-Received: by 2002:a17:907:3609:b0:a4e:ed9:3b05 with SMTP id bk9-20020a170907360900b00a4e0ed93b05mr42654ejc.46.1711544649472; Wed, 27 Mar 2024 06:04: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 m9-20020a1709061ec900b00a47063487fdsi4455413ejj.332.2024.03.27.06.04.06; Wed, 27 Mar 2024 06:04: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=kcQJ4ham; 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 EF01C68D6F9; Wed, 27 Mar 2024 15:01:54 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from APC01-SG2-obe.outbound.protection.outlook.com (mail-sgaapc01olkn2027.outbound.protection.outlook.com [40.92.53.27]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id ADCB568D6DC for ; Wed, 27 Mar 2024 15:01:50 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=M1+UQbtE7YkRIFieiO5+2vojBK6UOI9B8XsEdDY4NsJGmYVx0g7MifD2HeYz1iJrPaAUS5d2dbrzG7Zqb9ejbtlXsM5r4BGsxgO2h8+m4B3kQ5sj617aPfv1JmXXNXvS1LXkPEXHYMd1jJ+aU2NAUo1hac8aSuxA0W36IWauElfyTjy9W76KvDddjbLUrauahCpuFnvavDow40YLzjTdPUSvkjs9dS93GLtBbgBfdz5jryieKDMGsD0ZvHpL8xYsXUVIZ4fkmxzpxVoPl8gF80aIb/RZY1CfeNQH0ZNf/bZx2GWpiWobQAqhHj2UTwuTuWWhwiXF8EElQyQgOOetAg== 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=A0H8bf+BPhbBRjKp78oA1AcXxhMO8hsy7FwwQITvTLiyqRTysCQr17qEfQdIWId1Giec4Ij9T87r6ovqherdIXYQvDjPh85yYh1ro7s1NP/ujLEvExTPm38IlHLNTKoRGFxtZD8zQir8gaobSRS6hWVQPUmCSiN/PhIS0Tue+51q+V2twQNABpQiaFyYKJzBZXL3Zg92CKEO79O7UtHLK+fnOYB+9I0dyMjSTIlekyNAghXefmYR/bug9j6TUMbv/ClxQq2YdJVza0QkFJZMeVLCTLgvTwNc9P6s+Wi10YG4uRXMSsdu6a2TO4CXk6/Uzx0AGsC+FbePa/FFQxNCFA== 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=kcQJ4hamdqwYu+n7r7bqBKe9fsLgyXMrN/0ICYFBGMkEkrYkPyXlYpQQW0CknoiJR9uyG/3WaXJPF33/eUQ0eOackhUxzSFGy22FQ8EUBRLhBPnQJz8wvsNbGUMZPkVMOSWbsimhlmqI3X3UAvHTestNKwoBjJb7NGHRLarAmDvkQZqr/rZ0Ub58Af6VAEkpUURmINuV2YhzcQoI+SHAczvDEQ+vEadB2unwmcT3UdGCQ6i2Gh+FkCPo5K0de1wSHzyBkaGjY/DgqcDU6o6ZHWcCg7sK068wkQF7c0YofvsaV4sLQxxnQm4Ia7tOWPQ0bXFog8Jn5ZKkQuKP1OrP0A== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by JH0PR06MB7107.apcprd06.prod.outlook.com (2603:1096:990:9b::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.33; Wed, 27 Mar 2024 13:01:32 +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.7409.031; Wed, 27 Mar 2024 13:01:32 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Mar 2024 21:01:11 +0800 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240327130112.6111-1-nuomi2021@gmail.com> References: <20240327130112.6111-1-nuomi2021@gmail.com> X-TMN: [go2tc9Vh6LC7znIWaGp8cmk6jhU/rkK2] X-ClientProxiedBy: SG2PR01CA0117.apcprd01.prod.exchangelabs.com (2603:1096:4:40::21) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240327130112.6111-16-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|JH0PR06MB7107:EE_ X-MS-Office365-Filtering-Correlation-Id: 037431c5-f443-4041-c9a6-08dc4e5e0682 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: JCby56d3/aEVzAxbc9I4wd3d/902LlQBsYJvvweseC+V09+jMaLpJqn9P0vBM0Bf6PNmOYH5iRmnMwZZ9g/Ta94aUmSl4yNVNCx0EGQBKycf6ZWvA4ZsWXDu1Dau7BqVlTAfA0idmz9kOb6MMQeF3IgMNS2eMuK5LPOIIziWsC5G+Lb8OvfFVtgILh1avoTrrg+aHWyAaGb7D3HdzDm0aSWysBtfQcY6dMQrw0m/7f1/NQUszL6iKByRmxvovyqeA1XJLGyzkjI10W51XJVVT1vwj9oii+VirkpKd5DSg4NGeoGZJfwhAVTSnon34KiD8KTVCTBVZHgHIqysDqvYeK3BDapYLwGQN7raLPbe8FloDKtEgACnAIc0znbvhrDGKBlWOdueuMxuTuXdujjBVCJOxyqwLQxGNWugaN4KStuNB37W7DrSSgP0iJ/PN5uKiKEU8cdvxyR/tPvysVweR0dDDd93rUnwaKwc0clfjgNXzm2RCHa8mutvowBT/Hucz4Va3wPHhMORC1DZrkoI0ZwwV+Ag9mNwXRfdVmB+jHWoOd6O2OO+ZbE+Ob2xI4LZZ7VSsOGE/cT+fHyzdlmvvIpCrckmWofh7dHZ5uP4jSg= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: cK974/fNmpZ/j5T9IrdATHpWI5XWq8pPcbOvpc05OPK1sIMws16z0OYabmx34z+juClsZnm094jowNTa7FzrxrHNATHdkN84JbojgpNl68jPuhyNfDOFvJbhsA/bF0hNE7g5p7bR2UwMCzYcpsUZ5EIkAtTC9QMEc1PB0l7US2numg0it+GxndGV7cr2Q1JesES2gmhP4uH3GuR1wA6ga5oBQQt+zrOAjnOcjTnCmNsdxr1AgEHDTmA+N9RJJuEKaGWOOj9pNcdpLNXv0onYDYRulFirtNM25fsp65ktQ8IZHqMYzFrhkIqtFHJh7EidxChtPE/8/kmgte+l0ELFiGIZekfgVRlBwuCpv4h9iZPNet80rFXNsweT7fpKkvAbMII4SfOOGtFzJ02MKPd5rkqv2qWfTg/jrQwvsLk+Coyw3Ff/Ncn/CnhRB79pJ+IOk/vGb3IOr9MSPDv0lk0H0kCUOoiz/yheYoeZUNtfDo7cLC75pbIQoIyPbgy6W6E4Mb6JqaskdqdXNp2PnQFzDOYPIFmLQNTCgx6RWHBK5ns/AwyHmi0PrYFrrODfnwOJsxevp6dUMkILDDvoVPc4P+otgmUAu9/FLImAivxcLorGTTbpkyeWegag+5kuW2ixstXIW/BK0fDDeZgj0cYQqPnvaBNQA7jlGeTFEGjEqkevjcPH6MGfTntppbCpOdDTjiJhPJRC34ouBhxdyaDfi0DStnNQndU3MuM0TZ+3QS3FS1KC+BEd+3Ys/Mw0iVPc1s6XtlK73GryMhL4kquwa9M4WJvMao/2EE7q3dkvYrsj741hM1KijamAY/whfHdXu5rsAuMXB2LhwKgyilnNITZkBvAe1JD7ITjFvkYGA9TNsqzyQPI0MQnlAeQ7d5Hlp7KHncSm9Gw3E/uxlPu/qxl60daguCI5qsFar3eP2aVpzicGdAHuPotYHPeqrcLQDMh73yko4hVvYYfOYgMrskoFpLntXa+px3a+4w2fb7YMNQz6ScpOM48uvAK/cxPaLBruUo9somt1yHtuxgbLyib76CJ07TG1oT3OPtT3jTK0Vn91mxrwHPcFkTO5yoPkq95P4P51eKHp4C3tt2wRblfroiGHInX5tKZNJbUsokNVbU5bh354igw/Xkn8+oYdvg6voTuFcsXYwuekH454D9ays32/XcmMskNkhdF4hswOfwzkEVWfRZUfo9t1Yzna1/SovZhOXGYZUCuL3KhBb1H+RuSQllLvsiC807zJqKWGRjiHXXvpOdqgOGUcQC/KpV1OSYWZm8k7g4mp/77ivg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 037431c5-f443-4041-c9a6-08dc4e5e0682 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2024 13:01:32.4969 (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: JH0PR06MB7107 Subject: [FFmpeg-devel] [PATCH v2 15/16] 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: twgV9pTNrd0i --- 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;