From patchwork Thu Jun 29 21:53:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 42335 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3b1e:b0:12b:9ae3:586d with SMTP id c30csp2062002pzh; Thu, 29 Jun 2023 14:52:24 -0700 (PDT) X-Google-Smtp-Source: APBJJlERd0J5HbhGAIX0t8lbDFDieVAB/lOZVGWsmU4KWTzbp16ASAAkA+b6b307WUjOBqiEhcfo X-Received: by 2002:a05:6512:1094:b0:4fa:e7e5:66e0 with SMTP id j20-20020a056512109400b004fae7e566e0mr1017150lfg.48.1688075544294; Thu, 29 Jun 2023 14:52:24 -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 f21-20020a170906561500b009887579a30bsi7774690ejq.598.2023.06.29.14.52.23; Thu, 29 Jun 2023 14:52:24 -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="LOwq/GHi"; 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 369F868C21C; Fri, 30 Jun 2023 00:52:21 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2058.outbound.protection.outlook.com [40.92.89.58]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3CE2068BEFF for ; Fri, 30 Jun 2023 00:52:14 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=goUguDw1q6VOWw1O02onrAvTduUDjvNW9BgRwiFEfRmfenz2eM0MqdrgMiseTlWnbuhzbMHFlYPdKitorrETIc4ekkhPaEjFwJinwEFT0Q6aPsW+IyFgIRCY6RHP4bqVHGY0E6L3rPF+U1GpqSFDTK5lmpu/+JwX46QjwERExieNwJR3lRyELJ4IM1qTvpzer8FeKLJSeiae2tLXysxKKS/OWCcWzGQvBzJ+cpuQB/mugL+N+QRouWHqGGawhf6x1rBvP0KDiiknSjxLv2mBtBLqaUZT2zi59DsM5NvONsdEPhgQMmkyZi69XIy9TbCqZDhWPU04dbgabrCipNx/FA== 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=u6w4vnivtkHa5OER3vLZ0L5OZm7YOQKvTtk+MbUuzqM=; b=YFO99T5JvJknFHbcVfc6UMX87uaHosHehA6FC7lB1gPlRPDmUpTQGbpnzVfyEwCd4v7Mh0M3+tlUYH30VK87W1yOwP6+b2G6NzMfwTrAGsWMqFFEj5hRIZ/ZROrew9sX2rDET7wC0/m92ixg575OYrMRPvMWurNMz3GTSjWfHxv1EKbtCkvwYu2A8vdhZDGd21sqTG7ieDEaAcLvKqbzp5sHmtJtaHbOjHBCSLDxxAH2Rrt16Yxt9I31UhGNAR5SiPu/O4KDAfFMiaDTQXkUlEqg8W8KO8HknBulaMlXowfH9lFiRplNOPTFNsqKkGfFau1gRV9obLDok5zFsLDqFw== 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=u6w4vnivtkHa5OER3vLZ0L5OZm7YOQKvTtk+MbUuzqM=; b=LOwq/GHiN5FUqS2pQDcxZFqmhh47SHJ4rqAk1GXgoY6F6nCSyQveQ+Z0+F6yKPfqKWfCZ70XWBpdHU68S26Q3dpl/bEjS7gBReU0Z2FQ7XLEs85RO8rRhbIIIYx27vZsJZREkQfjqfB4F6ZOtiM5m6Ih6aBGWC78wdSdY116sdyDMgK3LrpFfdVoHnCMLSTBqqZHJPG3JEvhCOXkfzP39BYvO4pPBgVAYF7zUvs0sJBN+Ld8pEHV1J9cE6TmnrN9+8zW7ZpKXWyteRfpE6ZW11ZZO7x8SHevkfBL84620uBx9zGR5ew+jws8XK6mNzfJm6H4ESlSd6LHLsHhik7+pQ== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by DU2P250MB0368.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:27d::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6544.19; Thu, 29 Jun 2023 21:52:12 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::a38:e93f:c7e0:f473]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::a38:e93f:c7e0:f473%7]) with mapi id 15.20.6521.026; Thu, 29 Jun 2023 21:52:12 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 29 Jun 2023 23:53:15 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 X-TMN: [LyY3OX7XBtzGXmr9OEig+RQl+Qce5OGq] X-ClientProxiedBy: FR2P281CA0142.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:98::8) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20230629215315.751015-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|DU2P250MB0368:EE_ X-MS-Office365-Filtering-Correlation-Id: fc1b2736-affb-43e1-865e-08db78eb184f X-MS-Exchange-SLBlob-MailProps: znQPCv1HvwUykhYCLh9DY0KVirLrnEbsDjOVhDYn5+k9mkZ/EVeIUFni1+GQUxRMZgLIlHXVG7iue1EmlQyALLnOYC7qkpEOtk+KP/B71WNq0jNGEVFHdsMDWj3iyrOvVfaeAuBsAFQ3pP4DWPaeY+wPte26ZHWO4Je7mvvflDmDuZscWr9jQAzA78olHR1ItCqxbu8CkAFypOg5jgE4yMkegpVLoMl5DZ8SJRZ3ZFuzg2Mpu1G5yCAmxl45kvNQkrxoLYyCwRHJzVX0eA6q7/NvK/aNdsyfhxlwAeBmqcPLxFLC09je97ddegy39QxWqFNDWJKmy+vmHf52bFVn09WUGJrX/p0AeMPF6T+lYcQqKqo/qS0fr/9fl5C7lAgK54xqBDVOyqophk+96oN+z+sw3UD2jCMdqRAVsmldpHJNeLLUAcvKwAlSKbTBFB3IsFhDYIptOk0bKTwkZtbA6TNIkc9R+f4KYRc25tKPGf75xOrcsrV0dSDeSPkWmTI3Ptsw2zTuJG72OD6dUOACX00zAITZAxpEY5HTzQYZVOLHxIojJNaXYo/UlRHHaSNEW4mWYsJF3dtjIejQnPjlI5tWZ+XmpfjAVM643Q94Pu2QpXDEnEUU0lQChJkDQZ1+DSnGagBwxApe5C9HnOATQhLC6sbGDPr8hLhBqJ0zV+AlTXUUz+8M4wuKKmgGpe1aKNf2VPodfm0T7zwqACYdxVMECyleBpzKo3m7GQWFHJ+m/lRWJ89npVtMJu3ToERDPHghJEcB9cM= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: M9R/VtMB2Nzki/4o+iYkeTfCKWyn0szYUfjAiHVdNaK3YRSH03ai8qt3K7IMzsHUObVwj/UkOTnzY3fFwPEtc6F00zRCIKVbhlbhnmbePJS2rO9qBO/2V9citQ9S+qCtGXpYRTD71TovFsz6Rvf89e8ykd9yoYloIHRoCUp4pRA69kRQ8qAQoW6n6sYp9yw5QakQahLgvH4qXILakXKTcKaneKFIFnLu0fkCTjrXWiKzfmE7Pw8oNo0TPnQV3RjpFb3vylR5JXc84I7wYZWyF9YQ6/+XL3RlsE0ZRTTmCt59BxhEx0Nu2erKGdwI3i/g0/VIcmBoMJFr8+Iiy5ZYBE5E0ymwLcHZCFDjDxOMG7IZA9uMw7ISet/DeUf8WcaKJ0C9kqwk6untloepWyllTjh0SeiGTPcF6oaVGAZRZfPcGxejSg1Q5T+TRqOMoM5ZQnCjCIXN3qr/Wsul1gQeIxp0rcpeWRSLw6tkjDQSKrPwUizgTOCCOxIuHOwzoKzOWy0Ko0/pLBsUsCX/8RMbDHBW3ptzlt+SXUaV+5HE6/Cn3AylyJlll4TSWUZmUdV+i/MVQIkjh1OkcfQUQwnad2ohhO4kkYwFtC2hWAOgVbOy7HpSr9ESMgUqGC8l+U+T X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: IaC7chaWCp/OV6g7RprzYCrcfwmBB6yHy0qeKxg0hOwC01y35Py5Maym/ml1wgPZPFOrvTKgXLVkaUTMR0XI/ImjmVZueqv9obVzQYnOY/jCst2SAsv7882fwcpeo7h3Bmpgjpe+HnId8FlPrRVNhcQzCk91iDYmpiUBIusd7ctU1QeT0oNCIXOm3mT26dVmRbEBG4yo0EsNGDegnRacpOa9IPRZzNRHTuqFtkX9NBESPhAdh8bp/fPV1ylqN95RwW3PmQRWNZwParx9v8VueJi57rB1vRTbJjDwkn1LsS/jXwIgnqNsuvGyqkJdpHz8UcZBuZKWU6DBsDEVWjLXDWDYyetWXvj9numUF8oFmP2UAs2FxHCOlDeM7bEMzGlLNi+oRn9J/XqG5UBlzQ1m8FKesOPiCrEiB6LD2zFVpfkSzO4TsvXjuh5AOkjLRqniDiQ2OQ6frR4Y45rx1JMqbDkNDIiwaKInyMAgsWoTeeOXfbeiCVxUqbEpIVVLjkLy7/2szZh3aYlseFCeXtLKDF3AGU/4ZkHa/I0vTzxnxY/eBLUvTN7TmcKuxND+/zNYXyf4t5g/cDWJDl0wZFVYf4+Ix8ZPvdg9VzMZDRxLQfkwCsrWTV6i7dkS6jna2EzhXCE1eVX9y0jOTSlc/p5NJ0GUbUFmL4lz1l4enDEC38gaoeX4Tv/ZILKINnhSFrM09CpfPo/LAb+CatybpFtuySN1JOBHbcxrNRM7cLIyQ7ycCBVAqb98bofymCfoDAEGZ0lioUzSClkSnSK0WJJ+SjlmNCDboh8rBy0FBQwimz/byVlxSNIfXSTAJ7ScjLxUJRKDFbseVRoErYaIsg0a0kBxmsVHzA2+z6jHH/GRMtcBUimKPHabYElAb+P0VR+hPI2xFzb0EAYVqlWntk9fqdMOuJMng4zOnkWSGkk1aXJRgrSlyuMwwZn6pAm0SIouytPjds2W51bzpFP1t0vYnH1i8G7yBlUbh40jvEIG4TYAW39ytni6oTp5Qn+QclDd8w4sHSsPlDaKYJLJhyv38ov4cgmoVhcsU6kzknlXw/I6DtgXMcgFWQx2NsCcpzIUT0Woh1JaZ8qO4z7ghDeTJcYuijr+1kg8xY+JV+6iLncdmCxiDFrf9li75osuauDrCo9HxnOMtHuGx/qA6qK+N/A4zIYeWZgoZsBl2B6/jwxxz8mwrGz6iQZpyB7q08tz4NhyTzpqEBbyRCosKXQWBCZlHv2UU2jdAvUJofeZSc+de5czGe50wxsonWjgySZB X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fc1b2736-affb-43e1-865e-08db78eb184f X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jun 2023 21:52:12.6608 (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: DU2P250MB0368 Subject: [FFmpeg-devel] [PATCH] avcodec/vvc_parser: Don't store state unnecessarily 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 3cb3XCfd6rM0 VVCParserContext.au_info is only used once (and in a read-only manner); but this happens immediately after au_info has been completely overwritten. Therefore one can just the src structure used to overwrite au_info directly and remove au_info. This also means that the whole referencing and unreferncing of au_info (which duplicates AVBufferRefs CodedBitstreamH266Context and is therefore of dubious gain) can be removed, as can the AVBufferRef* contained in PuInfo; this also removes a certain uglyness: Sometimes these AVBufferRef* were ownership pointers and sometimes not. Signed-off-by: Andreas Rheinhardt --- libavcodec/vvc_parser.c | 63 +---------------------------------------- 1 file changed, 1 insertion(+), 62 deletions(-) diff --git a/libavcodec/vvc_parser.c b/libavcodec/vvc_parser.c index efea833565..69696eef57 100644 --- a/libavcodec/vvc_parser.c +++ b/libavcodec/vvc_parser.c @@ -29,11 +29,6 @@ #define IS_H266_SLICE(nut) (nut <= VVC_RASL_NUT || (nut >= VVC_IDR_W_RADL && nut <= VVC_GDR_NUT)) typedef struct PuInfo { - AVBufferRef *sps_ref; - AVBufferRef *pps_ref; - AVBufferRef *slice_ref; - AVBufferRef *ph_ref; - const H266RawPPS *pps; const H266RawSPS *sps; const H266RawPH *ph; @@ -53,7 +48,6 @@ typedef struct VVCParserContext { CodedBitstreamFragment picture_unit; - PuInfo au_info; AVPacket au; AVPacket last_au; @@ -150,41 +144,6 @@ static int get_pict_type(const CodedBitstreamFragment *pu) return has_p ? AV_PICTURE_TYPE_P : AV_PICTURE_TYPE_I; } -static void pu_info_unref(PuInfo *info) -{ - av_buffer_unref(&info->slice_ref); - av_buffer_unref(&info->ph_ref); - av_buffer_unref(&info->pps_ref); - av_buffer_unref(&info->sps_ref); - info->slice = NULL; - info->ph = NULL; - info->pps = NULL; - info->sps = NULL; - info->pic_type = AV_PICTURE_TYPE_NONE; -} - -static int pu_info_ref(PuInfo *dest, const PuInfo *src) -{ - pu_info_unref(dest); - dest->sps_ref = av_buffer_ref(src->sps_ref); - dest->pps_ref = av_buffer_ref(src->pps_ref); - if (src->ph_ref) - dest->ph_ref = av_buffer_ref(src->ph_ref); - dest->slice_ref = av_buffer_ref(src->slice_ref); - if (!dest->sps_ref || !dest->pps_ref || (src->ph_ref && !dest->ph_ref) - || !dest->slice_ref) { - pu_info_unref(dest); - return AVERROR(ENOMEM); - } - - dest->sps = src->sps; - dest->pps = src->pps; - dest->ph = src->ph; - dest->slice = src->slice; - dest->pic_type = src->pic_type; - return 0; -} - static void set_parser_ctx(AVCodecParserContext *s, AVCodecContext *avctx, const PuInfo *pu) { @@ -241,20 +200,6 @@ static void set_parser_ctx(AVCodecParserContext *s, AVCodecContext *avctx, } } -static int set_ctx(AVCodecParserContext *s, AVCodecContext *avctx, - const PuInfo *next_pu) -{ - VVCParserContext *ctx = s->priv_data; - - int ret = pu_info_ref(&ctx->au_info, next_pu); - if (ret < 0) - return ret; - - set_parser_ctx(s, avctx, &ctx->au_info); - - return 0; -} - //8.3.1 Decoding process for picture order count. //VTM did not follow the spec, and it's much simpler than spec. //We follow the VTM. @@ -338,10 +283,8 @@ static int get_pu_info(PuInfo *info, const CodedBitstreamH266Context *h266, continue; if ( nal->nal_unit_type == VVC_PH_NUT ) { info->ph = pu->units[i].content; - info->ph_ref = pu->units[i].content_ref; } else if (IS_H266_SLICE(nal->nal_unit_type)) { info->slice = pu->units[i].content; - info->slice_ref = pu->units[i].content_ref; if (info->slice->header.sh_picture_header_in_slice_header_flag) info->ph = &info->slice->header.sh_picture_header; if (!info->ph) { @@ -365,7 +308,6 @@ static int get_pu_info(PuInfo *info, const CodedBitstreamH266Context *h266, ret = AVERROR_INVALIDDATA; goto error; } - info->pps_ref = h266->pps_ref[info->ph->ph_pic_parameter_set_id]; info->sps = h266->sps[info->pps->pps_seq_parameter_set_id]; if (!info->sps) { av_log(logctx, AV_LOG_ERROR, "SPS id %d is not avaliable.\n", @@ -373,7 +315,6 @@ static int get_pu_info(PuInfo *info, const CodedBitstreamH266Context *h266, ret = AVERROR_INVALIDDATA; goto error; } - info->sps_ref = h266->sps_ref[info->pps->pps_seq_parameter_set_id]; info->pic_type = get_pict_type(pu); return 0; error: @@ -430,8 +371,7 @@ static int parse_nal_units(AVCodecParserContext *s, const uint8_t *buf, goto end; } if (is_au_start(ctx, &info, avctx)) { - if ((ret = set_ctx(s, avctx, &info)) < 0) - goto end; + set_parser_ctx(s, avctx, &info); av_packet_move_ref(&ctx->last_au, &ctx->au); } else { ret = 1; //not a completed au @@ -560,7 +500,6 @@ static void vvc_parser_close(AVCodecParserContext *s) { VVCParserContext *ctx = s->priv_data; - pu_info_unref(&ctx->au_info); av_packet_unref(&ctx->au); av_packet_unref(&ctx->last_au); ff_cbs_fragment_free(&ctx->picture_unit);