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 608AB476AD for ; Tue, 19 Sep 2023 19:58:49 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A1F7468C977; Tue, 19 Sep 2023 22:57:34 +0300 (EEST) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04olkn2027.outbound.protection.outlook.com [40.92.75.27]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F082068C930 for ; Tue, 19 Sep 2023 22:57:27 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WHh4ErSmXY4wAMLjyHr977HXOv+s/707lqrGOb95bEul3UX6yzUzRaOknjVqrGifrHmRqCscpo0mFnOzQnfNImK7NLwrNPEUUznhKDFqCZLmJ333G5gfty2UP5/B0Yua6VhW6YtOm71W+C2PRz0q8Crw1UIDtJEDZwFEYUveuFiCH4beJfYge2rf1e0nOfsCO7k+9znyPdhLDdtLavOeFWd2p8DCk8kEAh2erjy1Y8PUXqzR76oZ+OcDzLmKhuGO5Zq8n5dsIMqqxe1zwGCCfA//joUSfeKv49qVABESK0yLwlu92rlgIHRxoK83wGzCKiy2OWwlLdWNUspjfqC7bA== 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=zCdjJzCRCfPPYz21kuIKLqRmgtPR5IMdxthKm1bsShU=; b=nj6m8jKzQseAMjfhL7/EW4qNqWcGkE+co57JjapwRGy7Xn61GdHjSKUXmAfCq1rW/OyCrE8l2CO10i7y6yXu8q8LkhMBuifiYXiOcV29o3aT0xxO9K4wH+LJpPXkhCGyVpItnHuL35ZU+nZ06TUahG3GfWBhvD4Xea2HW5Vbgfyc3ZBzdzOTqrNK9y/O2NDtkivZamJ5hd1mVMGdiCf3ukrmIoiCXI4cXsFi57Gj2nEf1vLXebL/OoOoUxMM5b6sPdONEKH5U+lZDIDfLajDfBvEZUAFEmIHw5a4IJ9Q+4D13qi0fAEddP26nMCZ97Vk/41f1KYMpPGDETOrFi7bgA== 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=zCdjJzCRCfPPYz21kuIKLqRmgtPR5IMdxthKm1bsShU=; b=e5jxjFXbamxxWE+U2WbQbnDBfiJ79eLiKW4EHb7qm133HUoKWNyd/YM2qQvxtcJEelMrTJ4MaGZliBvDmRyyYO1rb9lDn3N9YLs8eRnHbCm8XR5+rov7d7YTbCvQLs70jXdIKtqrC+2JM9e3WTxoYG5IgEvIPKd1tRlwpr2KOl2S9eUFbPEQub39l3DZmdcbmHUCUn8rWbfvGunaSIqDeM1lZDyqjBqLzr6pTcDgoSlDE9A69mzmwJx8r0dEwBsHtQzXRm3Lz714hR7A+N3btJKSbgas2zJxJSR7MNZz8GGNwF5q7lUFhzNrUNCYzoxZ34elqq+1ZNW93AWnFLe8Dw== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AM8P250MB0215.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:326::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.26; Tue, 19 Sep 2023 19:57:27 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::5e01:aea5:d3a8:cafa]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::5e01:aea5:d3a8:cafa%3]) with mapi id 15.20.6792.026; Tue, 19 Sep 2023 19:57:27 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 19 Sep 2023 21:57:06 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [mAjYpR0SeqXIWytnlFgjAQi3vli2aes+] X-ClientProxiedBy: ZR0P278CA0086.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:22::19) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20230919195734.1005750-14-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|AM8P250MB0215:EE_ X-MS-Office365-Filtering-Correlation-Id: 5399722f-7419-48e8-1b45-08dbb94aa60b X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 32UNUM0zbPi/sF2X03fsoL3d/5NrpvmDxv1j2yQAgCJD1iyW7yqWiXLN8XqvfkS9dhmNUR7LRKqd4KFEAprKm4EsiZqR6kCdlFROxnJ70qIuvjmGqS4Uw7H0nr5w2J723hFpFVesydMU9cX2wwjbFAZB3y7LPzT+W9zLQQRWyBJyZEci/ZbJMli/qRG8z8IPbEmHEa+sOAya33qvUKiZ1YrV/9EjjKSYgz3RT7+uQJF3fmrZIvwOAkzK+CfK7HVo/lc/WrP85C2e3XjEDjBMD/lZAjjzlO7yULOJLZ313NsNPvId+s9oTKkBd29E2LHldU1D2NAMEVzuYKc0H3h1brsQ/DAMo7y10+jnWTV94rSpMUQPbR/2+wJEwhoJNHiZWzTbia3yBVrat4J+HjWAFGOD2kc9qsCEX6x0X7Fe5aSmCh7eiwi+va7UZZUndgGvGH4kCS1BdItL8b4f0lmXcdaPaIzvDT9qzveqetxJte3ip6pGREfqtPoHrcXdM8aePHSe2QBnRDJJ2mk1iwyJ+4e4OMnHy+y5guxHzoF6V5DueJ0OJ6HM+EDlN9jHoAtEAt57G1CSrCbTGoEAhr4knq09QI47E/ZDGP6ByWWJ+MKXPb7yhw4tjPq0B+7EQpxk X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?lDK0dEc9z/Ued5jqvS9jkEkfpWl9fKWlAodejX5+7vjJbBgHM/70asqr7ZtL?= =?us-ascii?Q?6hx2jdaTTEmNWOZCf2aErVG2uoJLPBeGCDQma/537R1hKfGiFm2izQurWNkx?= =?us-ascii?Q?rRw3eKa4GlpS5mTh8f1pBHhZRJfkRoOaBP/SmJqEu9WPhe1TWoUMQpCV4Guc?= =?us-ascii?Q?hEW0CmromlsMR5hEVKzPGqR27HS9xKWRwR7gkZHOiivnOWWI9tuJxgpd+6n2?= =?us-ascii?Q?ptMTTBNuKan15ecJSZyDfUfT3XlieLIph4h8ZQv5cLvYLb3qfjFMNJSOMR8v?= =?us-ascii?Q?sxE8ltRHXzU4zmTE4WDouwLDtbr+ch7Zgxb0zDMmDgaeXue1oULZBTdylHFj?= =?us-ascii?Q?HVo6P/M/CwyuVPlh1Rd9pw5s2kFquuMOtZDdLBMHzexzaL73n89UZL0TyVwg?= =?us-ascii?Q?OdMDRPomxAdmEkv/bXRFHQ6bO+Hg0bVe7/dIiSSOADmUcTA/HzbeP1gsVkFY?= =?us-ascii?Q?1p/cKMAEx7QDUjN9Lwx4ck7FUrxZ84nYgSSkeOg1Eo+SFOpC1VD5RfoTe9G7?= =?us-ascii?Q?mV3xUdzjOmn3FCThAeIM/BJtauojLg6YzfbiEAiUKO5BFHfTQGAg1tNhUAK0?= =?us-ascii?Q?ZVCcv9aPBftgTLpFG8KaoXd7+5fSHFm6P1Z4n+JMRge4jT8aUJf//SPCWGTe?= =?us-ascii?Q?5w5q+HjR6gN12CGCr77ZBnMXm4josrBrUnjfmLwn6EML/k+Ec7EYxxx+GS7w?= =?us-ascii?Q?1PFGSpUc3I6yV9wjsPyYWUk4p/BXjocJvyzfm3REUVRg8VczIrhD4NScIut1?= =?us-ascii?Q?Tvr0QqeFOFML4ZgTquIzpG9xMKUHGVOguY7OIhhty7OVyMZgvg2pll4m546q?= =?us-ascii?Q?sxwW/8vIC+hZ3zmo9dkLH6EUhllg2wa01Qc3EBH6JxE04UtaSfd4e8caH0hg?= =?us-ascii?Q?CuLcJUhutrs4TF+Pq8sW6b/oaFlFgoWDevagB0zauNmexbJuTaUcaBsHAu7g?= =?us-ascii?Q?CMrmN/6WWolJPFZM0/0KtVtahkd8jLSHvnVsdhzpOEFiQR2wEoi7quHsp/ik?= =?us-ascii?Q?vOLXKgSaZCSyvPaz9MP8Yu9qHazlH1K0kFaKGM0AhKWn5Jdns9eqrtXUjR1v?= =?us-ascii?Q?RbQ/9yijtPRDdwzACB5Ofi8ZV2FXii8KTxBYkDj4Ftfj5NEV1kAuEZhg+mEI?= =?us-ascii?Q?/atN6M1D0rgT1vcUwseockn4ZFr0pARVQfii3doT9FFzy41Vz41nKJgFZHvb?= =?us-ascii?Q?TqgIJwBdJKK6ItRqNVpmCCClZjpYEa/I8P6IZ0tlIqLbLh05+YQLZLjrf/vA?= =?us-ascii?Q?Y5eqvnTuWIBaDx3XYJ72?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5399722f-7419-48e8-1b45-08dbb94aa60b X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Sep 2023 19:57:26.9713 (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: AM8P250MB0215 Subject: [FFmpeg-devel] [PATCH 14/42] avcodec/hevcdec: Use RefStruct API for RefPicListTap buffer 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 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: Given that the RefStruct API relies on the user to know the size of the objects and does not provide a way to get it, we need to store the number of elements allocated ourselves; but this is actually better than deriving it from the size in bytes. Signed-off-by: Andreas Rheinhardt --- libavcodec/hevc_refs.c | 14 ++++++++------ libavcodec/hevcdec.c | 5 ++--- libavcodec/hevcdec.h | 3 ++- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/libavcodec/hevc_refs.c b/libavcodec/hevc_refs.c index 8f49704b54..ae464e8e6d 100644 --- a/libavcodec/hevc_refs.c +++ b/libavcodec/hevc_refs.c @@ -45,7 +45,8 @@ void ff_hevc_unref_frame(HEVCContext *s, HEVCFrame *frame, int flags) av_buffer_unref(&frame->tab_mvf_buf); frame->tab_mvf = NULL; - av_buffer_unref(&frame->rpl_buf); + ff_refstruct_unref(&frame->rpl); + frame->nb_rpl_elems = 0; av_buffer_unref(&frame->rpl_tab_buf); frame->rpl_tab = NULL; frame->refPicList = NULL; @@ -95,9 +96,10 @@ static HEVCFrame *alloc_frame(HEVCContext *s) if (ret < 0) return NULL; - frame->rpl_buf = av_buffer_allocz(s->pkt.nb_nals * sizeof(RefPicListTab)); - if (!frame->rpl_buf) + frame->rpl = ff_refstruct_allocz(s->pkt.nb_nals * sizeof(*frame->rpl)); + if (!frame->rpl) goto fail; + frame->nb_rpl_elems = s->pkt.nb_nals; frame->tab_mvf_buf = av_buffer_pool_get(s->tab_mvf_pool); if (!frame->tab_mvf_buf) @@ -110,7 +112,7 @@ static HEVCFrame *alloc_frame(HEVCContext *s) frame->rpl_tab = (RefPicListTab **)frame->rpl_tab_buf->data; frame->ctb_count = s->ps.sps->ctb_width * s->ps.sps->ctb_height; for (j = 0; j < frame->ctb_count; j++) - frame->rpl_tab[j] = (RefPicListTab *)frame->rpl_buf->data; + frame->rpl_tab[j] = frame->rpl; if (s->sei.picture_timing.picture_struct == AV_PICTURE_STRUCTURE_TOP_FIELD) frame->frame->flags |= AV_FRAME_FLAG_TOP_FIELD_FIRST; @@ -295,11 +297,11 @@ static int init_slice_rpl(HEVCContext *s) int ctb_addr_ts = s->ps.pps->ctb_addr_rs_to_ts[s->sh.slice_segment_addr]; int i; - if (s->slice_idx >= frame->rpl_buf->size / sizeof(RefPicListTab)) + if (s->slice_idx >= frame->nb_rpl_elems) return AVERROR_INVALIDDATA; for (i = ctb_addr_ts; i < ctb_count; i++) - frame->rpl_tab[i] = (RefPicListTab *)frame->rpl_buf->data + s->slice_idx; + frame->rpl_tab[i] = frame->rpl + s->slice_idx; frame->refPicList = (RefPicList *)frame->rpl_tab[ctb_addr_ts]; diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index 8316a815e7..44561de821 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -3404,9 +3404,8 @@ static int hevc_ref_frame(HEVCContext *s, HEVCFrame *dst, HEVCFrame *src) goto fail; dst->rpl_tab = src->rpl_tab; - dst->rpl_buf = av_buffer_ref(src->rpl_buf); - if (!dst->rpl_buf) - goto fail; + dst->rpl = ff_refstruct_ref(src->rpl); + dst->nb_rpl_elems = src->nb_rpl_elems; dst->poc = src->poc; dst->ctb_count = src->ctb_count; diff --git a/libavcodec/hevcdec.h b/libavcodec/hevcdec.h index 1d29fc24d7..c13406f0a8 100644 --- a/libavcodec/hevcdec.h +++ b/libavcodec/hevcdec.h @@ -417,7 +417,8 @@ typedef struct HEVCFrame { AVBufferRef *tab_mvf_buf; AVBufferRef *rpl_tab_buf; - AVBufferRef *rpl_buf; + RefPicListTab *rpl; ///< RefStruct reference + int nb_rpl_elems; void *hwaccel_picture_private; ///< RefStruct reference -- 2.34.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".