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 9BBE44A3C8 for ; Wed, 27 Mar 2024 13:03:43 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9B8AB68D6F0; Wed, 27 Mar 2024 15:01:52 +0200 (EET) 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 AE02268D6C8 for ; Wed, 27 Mar 2024 15:01:49 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JSxbNoyoBo1PZK8rZhwrIIJtjDdyoAUmeCgXuF6QXFamV8n6jzhLfNSxzhMFlVKdo6XRDCru1+c2Rj6r0r7fR6UjIl9MEoE3+fsMNSAUR2CvYvlokvoIvTBdD0xe0mGx4Ro5XzTDGP0hxX5FRGe130RKINHHb7Xx3aQMc6TZVl01/pg2LOVTkuE+JUL5fQOYUktPbvFLCiz3uaSm0TpmpGsaJduAptxXWx/jkdkAhnkaFaBbGnfzd9WLMLABhFSEU0hTtKT1+MWiYDW9qBCoec8S0WvtsV6q32fsjHiO9kD9uoU5jjxqc+Ll+US7h1WVVkeJLUbwPcOKXtJw7VsvhA== 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=/YrsaOODjaGwZ0MqBEKUT7x/FraiYbZpemgFbJfY04M=; b=DHKfpMqbokJcXkAggxbeELTdOOpgUL5VJJW1tLbFtX31YB0uscOpd7dhpMb69JlYuNwc5gX8rPHz9rLEl/GCSwmauk0XhCgD+ysfyOImeF5pxcmmxQ/QQuRxRFtVXOus5UcrULwWyhpxOONEK1ICBI0QkluezMK2ljRSTDqjovA3z2l081PaD4uAfhSDN1pVn9M2u9Zb+TqmUNu1udwb/PChGgPmNghsJjaOsSHrg51kPY+mxuvncrMn0ZRhtGnPmma5uapt8soHVbBHt2uD119idXW8qFHDhqCBs+icZvsXekPTj78r0sVsUQLljFXV32UEowrvOs9XM/c9caNEMw== 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=/YrsaOODjaGwZ0MqBEKUT7x/FraiYbZpemgFbJfY04M=; b=YLsJLyKup0aB5wTry5oLtj8c5cVFP+sAQ/DI7OEcMDVXHowkP6M634xIlC3I+pShqmuUrD51SYExxBcjeUxgtGLPyG5skTNJV3SbHrZyfFJojvurWsWGLMeHNrNirR5eLyxi1jSpnJozoyBe8n2Woj3hZrMcKSCBba4tFVT0dHddxzH2uFxXpsgJjVFJfX1t13sXywCx2oAMJNO8zOO4BaCKyrSNazR5aR+/4fX+z569BdEOgl+CSGq23Y6xUNUxsKJ7CNfhsfj8wF/7pfq1FgQnLc/NncKqV5vHEZS6GQXDtQ5nLq4V+FOVC3cdCQ3d0yKa1PE0WWFDWr78aOBfoA== 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:30 +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:30 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Mar 2024 21:01:09 +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: [/14mBAOjYU09V1eplwCNuE+s5qsGLhEL] 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-14-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: 0ebf0468-8b45-4a11-dccb-08dc4e5e0560 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TfcRFSI2CSjpPiS140zVGTOAjoVD6wittmysYfal4oMpcNC4CAYzHO7tm7UfYLEaHz05epeuPswcyMNuFa/c8YEcTDhXmLADFVSIh2CqhfjS33dgSRvzJyyRdMG3zgxdP91kf+76+KaZhfJl4qq7NjLwpPMkLeAgjfTk3qInGiQdwkJjpzPXiM+TXPaZVLK/Z04AkwXX+SlPXunmvwZuP3c1l9lW1SMLr7R5t6/SXrDqqno09MCpuYDwFJSfWETjDtCMfbfBMeuj24xQhzONm0Lx2Bg8/o7JF6hmo9ENqMZcdKi4fJ4Jy0UE4vFIGr4CeSbDFukihB9VEAB8XiOfJi8ws3tSWQzcIA9eGdiK2XVCdB7KyVl8z3/JRR2smWTzPK+zbsVxrsW8EXcqhPSfWO98IHL2mngOI1Fi+VU45OLkfoybl8WvfWXwxCH9m6de+czQxcI8x9vh8KgM7/l9g6BF6XsJJrCFrmN71SE3Uok6t4ZTOTp/skNmcqRbB9POKcmJT2+llMhR9iDAJrcV8hB97vS2y1BKX0T5kK47yT6bM3OE4kYii0mBuyISdYH/T69wh+WapNlUeMGhaXPPopnR94oCPxGOHLJ10grfD/M9ZfQn73WArhoYDe631HXS X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?zyXn+ODrzDLO5nLwl0ylpAn85z/Ub6EjPAAdhQX8utUzyTFxpE/DRi00DY4Y?= =?us-ascii?Q?+cpQabjqhGCwPRLAoXq/4iAFIOvL2YUlbsO4hxmZz1SqkzOt+yw+YkpSj1QO?= =?us-ascii?Q?xVJeaUfy+nwJtDbcSSt03nUSFwVOYRhYSNYvlFb9vOA9onfzD+zz8i/cQH1w?= =?us-ascii?Q?deKkxcw1y7LnzcNJ/fD7C+GqzJ22Dt7yxyXtsDzpTZ0BpHZCxBgvGcL4/nzQ?= =?us-ascii?Q?kM0oFZYZla/Y+MygOqgdzXeyz7GGTCojZtSIXhJbLEKVdputqu18F/bByuwf?= =?us-ascii?Q?KnRjvtpxEqTBOeTao9rVQEz18B+N9D7cgy8Jceurqm8ArLBrjOqoMWaIA9CS?= =?us-ascii?Q?KCR7FYkMkJY2FP4XBY3D/NdY6ZfL+ielHDtYH5Qblrcf98fPrlzGBHQlhamB?= =?us-ascii?Q?VoS3CUBqgmoq3lpO5cnwxpKwIzhbPN+Le0nwgo/MHAVV0jWMET+ZGMq1XYtk?= =?us-ascii?Q?JGoHWpQrxKp4+iK9YaVxjcXbMuVwZL8ZZ+nIb991LAI5zKGVd7KZXCb6afRd?= =?us-ascii?Q?wHxsNzQ63aSG3WoDKhHSZVuDBJ4DOhCqq2tf+mqXgpEmdDA+BRhRRv03mHjU?= =?us-ascii?Q?kZqz4B+KOVS/Y9eqNis7MVZEASWdFmZs6oKxU3Rzun2VHBa3YdKp9WdfL0Rp?= =?us-ascii?Q?AdAY5oRt3DQwOJIJuX3yvyOHSI5tW5nN1IdjeI1ryvpMMhJ5ZP4Bp3Bb/NCH?= =?us-ascii?Q?NOHYjzj+xmMRml2wUGOlKiAOhFVnnezxDALOZEsDvE9LcK2FYzRvni0DIfEX?= =?us-ascii?Q?DsObGHzBPVMlqN3unrIkjSQ+AMoaaD6g7X94MKRIIMX/7pDgmYDbn+gjFA0R?= =?us-ascii?Q?feCJp/cR7y8H6v4vWuutzJKon+xnkIrwqTErG+TFUk8bzxUvGOTMUQZT3PDo?= =?us-ascii?Q?mp4ayK+Fl2SR7hIPabuyTw5zCEqAWokaSJT5t9ehuPiU4skTSLAynovIoro2?= =?us-ascii?Q?aQQ9s/e08lQ2UE6Xqbj++dAYdFX3T+CYaBhUDkWGdUkZkP1yJp8IR3zJx97M?= =?us-ascii?Q?TNJ9N7mjEIwXGW1nnFAkiYG1EzX8SD+YwWph+Y9e7RcCPSpGUJkyGsy3AyPT?= =?us-ascii?Q?SMZmxK15QdSevcNxUGHyGal3grOL7rh2JZLSNYbaFhyWbtWIKHvzo3CjtSHR?= =?us-ascii?Q?swSg1XlYa8szNiAZxZN5G+T2LtKLIxlW0xNfxcaqj2FsSJ3mlVh2atjW9JUT?= =?us-ascii?Q?u/6P1P0ee5BY5glzeTqJtyoy/c0QVwPS9o+GdNUSH1qDGsh900jTCUY2V1Nu?= =?us-ascii?Q?0/hOkXW8t8O3cNCjLS0DSdnKKvs+FZD5XIu1hCr9Bg=3D=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0ebf0468-8b45-4a11-dccb-08dc4e5e0560 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:30.5975 (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 13/16] avcodec/vvcdec: sao, 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 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/vvc_filter.c | 40 +++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/libavcodec/vvc/vvc_filter.c b/libavcodec/vvc/vvc_filter.c index 1a3cd02a9f..6b4c2050c7 100644 --- a/libavcodec/vvc/vvc_filter.c +++ b/libavcodec/vvc/vvc_filter.c @@ -166,39 +166,53 @@ void ff_vvc_sao_filter(VVCLocalContext *lc, int x, int y) uint8_t horiz_edge[] = { 0, 0 }; uint8_t diag_edge[] = { 0, 0, 0, 0 }; uint8_t tile_edge[] = { 0, 0, 0, 0 }; + uint8_t subpic_edge[] = { 0, 0, 0, 0 }; + const int subpic_idx = lc->sc->sh.r->curr_subpic_idx; const uint8_t lfase = fc->ps.pps->r->pps_loop_filter_across_slices_enabled_flag; const uint8_t no_tile_filter = fc->ps.pps->r->num_tiles_in_pic > 1 && !fc->ps.pps->r->pps_loop_filter_across_tiles_enabled_flag; - const uint8_t restore = no_tile_filter || !lfase; + const uint8_t no_subpic_filter = fc->ps.sps->r->sps_num_subpics_minus1 && + !fc->ps.sps->r->sps_loop_filter_across_subpic_enabled_flag[subpic_idx]; + const uint8_t restore = no_subpic_filter || no_tile_filter || !lfase; if (restore) { if (!edges[LEFT]) { - tile_edge[LEFT] = no_tile_filter && fc->ps.pps->ctb_to_col_bd[rx] == rx; - vert_edge[0] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx - 1, ry)) || tile_edge[LEFT]; + tile_edge[LEFT] = no_tile_filter && fc->ps.pps->ctb_to_col_bd[rx] == rx; + subpic_edge[LEFT] = no_subpic_filter && fc->ps.sps->r->sps_subpic_ctu_top_left_x[subpic_idx] == rx; + vert_edge[0] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx - 1, ry)) || tile_edge[LEFT] || subpic_edge[LEFT]; } if (!edges[RIGHT]) { - tile_edge[RIGHT] = no_tile_filter && fc->ps.pps->ctb_to_col_bd[rx] != fc->ps.pps->ctb_to_col_bd[rx + 1]; - vert_edge[1] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx + 1, ry)) || tile_edge[RIGHT]; + tile_edge[RIGHT] = no_tile_filter && fc->ps.pps->ctb_to_col_bd[rx] != fc->ps.pps->ctb_to_col_bd[rx + 1]; + subpic_edge[RIGHT] = no_subpic_filter && + fc->ps.sps->r->sps_subpic_ctu_top_left_x[subpic_idx] + fc->ps.sps->r->sps_subpic_width_minus1[subpic_idx] == rx; + vert_edge[1] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx + 1, ry)) || tile_edge[RIGHT] || subpic_edge[RIGHT]; } if (!edges[TOP]) { - tile_edge[TOP] = no_tile_filter && fc->ps.pps->ctb_to_row_bd[ry] == ry; - horiz_edge[0] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx, ry - 1)) || tile_edge[TOP]; + tile_edge[TOP] = no_tile_filter && fc->ps.pps->ctb_to_row_bd[ry] == ry; + subpic_edge[TOP] = no_subpic_filter && fc->ps.sps->r->sps_subpic_ctu_top_left_y[subpic_idx] == ry; + horiz_edge[0] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx, ry - 1)) || tile_edge[TOP] || subpic_edge[TOP]; } if (!edges[BOTTOM]) { - tile_edge[BOTTOM] = no_tile_filter && fc->ps.pps->ctb_to_row_bd[ry] != fc->ps.pps->ctb_to_row_bd[ry + 1]; - horiz_edge[1] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx, ry + 1)) || tile_edge[BOTTOM]; + tile_edge[BOTTOM] = no_tile_filter && fc->ps.pps->ctb_to_row_bd[ry] != fc->ps.pps->ctb_to_row_bd[ry + 1]; + subpic_edge[BOTTOM] = no_subpic_filter && + fc->ps.sps->r->sps_subpic_ctu_top_left_y[subpic_idx] + fc->ps.sps->r->sps_subpic_height_minus1[subpic_idx] == ry; + horiz_edge[1] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx, ry + 1)) || tile_edge[BOTTOM] || subpic_edge[BOTTOM]; } if (!edges[LEFT] && !edges[TOP]) { - diag_edge[0] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx - 1, ry - 1)) || tile_edge[LEFT] || tile_edge[TOP]; + diag_edge[0] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx - 1, ry - 1)) || + tile_edge[LEFT] || tile_edge[TOP] || subpic_edge[LEFT] || subpic_edge[TOP]; } if (!edges[TOP] && !edges[RIGHT]) { - diag_edge[1] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx + 1, ry - 1)) || tile_edge[RIGHT] || tile_edge[TOP]; + diag_edge[1] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx + 1, ry - 1)) || + tile_edge[RIGHT] || tile_edge[TOP] || subpic_edge[TOP] || subpic_edge[RIGHT]; } if (!edges[RIGHT] && !edges[BOTTOM]) { - diag_edge[2] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx + 1, ry + 1)) || tile_edge[RIGHT] || tile_edge[BOTTOM]; + diag_edge[2] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx + 1, ry + 1)) || + tile_edge[RIGHT] || tile_edge[BOTTOM] || subpic_edge[RIGHT] || subpic_edge[BOTTOM]; } if (!edges[LEFT] && !edges[BOTTOM]) { - diag_edge[3] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx - 1, ry + 1)) || tile_edge[LEFT] || tile_edge[BOTTOM]; + diag_edge[3] = (!lfase && CTB(fc->tab.slice_idx, rx, ry) != CTB(fc->tab.slice_idx, rx - 1, ry + 1)) || + tile_edge[LEFT] || tile_edge[BOTTOM] || subpic_edge[LEFT] || subpic_edge[BOTTOM]; } } -- 2.25.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".