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 3E78945EB2 for ; Sun, 16 Jul 2023 21:17:43 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A233468C63B; Mon, 17 Jul 2023 00:17:40 +0300 (EEST) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04olkn2082.outbound.protection.outlook.com [40.92.75.82]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EC8F3680969 for ; Mon, 17 Jul 2023 00:17:33 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lH1MT8f2RRwxk0nVrkXV1AgY4VFRbeX8ur/K5uMhUumiP0aOJlkptRxDUkqlTzieM6GVtyla4VHXGZDr0Qq5To+jezteih3XOyRbLWrqSumn/p6Vf4kfn+F33QCl2Y+LdiVVEn74nW0KQnO9uKK89KgdLsN3/TjFZhdQrxhFLld3Fu2D8XZrNz/Z16GlCo2u2JcVz99Kh9TeTM5LZE0wJTRYFKVHOUaqv7X6mfxkNQfINnceaQKZtZiDdfqjfxKW7Tj2C1Sf8wdl7lx6kDKlP8NxP+AebdVzgevOF3NFLJNBfYKJREz8qdkr2UNtXRXuSnXKmMavFQMAPH0YYT9n0g== 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=/Lvijv4Sh0T7NRtsokxfIgb7LC8z0o9kmrk1Ngd6Ysg=; b=XDJKdwdloZJPKke2aghZmMtiwKTor6DRGjIyM8G26lknzrE/6MXx7QIKskLazXBJaLt9kINn9FeIQOaxKqhYVf462jCh49Dvpoyl3yeFcoYA4Bk/DkrF6OcAYhZJUvKXTsWyBXm1aPGI/7r7gKnt9+G64gFPKfzQkF0sm6vuIWxh840FXEFstXZj49sRUqqYxG8q04DkadE95agtZyjnyW08wclBrBRExiqZzzi3fysvuI4vvEs/TKLnV+tFlJ3rxLSd+rrxIN+kVyk1mbGj9QHIcgN20oQZZXuCisoJ6YXjIJQNESiyUua02+GPO2cW2ctknvcOzNz3qc1+2LNLRQ== 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=/Lvijv4Sh0T7NRtsokxfIgb7LC8z0o9kmrk1Ngd6Ysg=; b=YLEyd/jIGZm8GT63pHb/XCvKZgZdIrI8JwAdZUDvBwHLQ/YueOmKnj6XG89tP67mno8sJm2v19ZYZhRguP7Kpq97xEVOoP90b/hUvQrpF9Ni/IcBsxEUqcpF2XbDbLsQHfKXey5dvKHtqtfzuhpESPG23KbAKhaywESrdrZ8rZFDX7v+aWzRKvVeGwyjAHJfDNGCXm+ViGdmugPdJKrsgl1hffmcr8nkQf8oQIcjYEW0cMEJ7HonbnW27h76JANUkQH/KEok4Lg3h3jIwcND0Al0tWFLBwDhY/1IryvZFQJUcneDPygWzyKWJ1Ge9DGpL9EXGdulzcYL+RxYWHkq1Q== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by PR3P250MB0273.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:17c::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6588.31; Sun, 16 Jul 2023 21:17:32 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::7ae2:75ad:dea0:86f8]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::7ae2:75ad:dea0:86f8%4]) with mapi id 15.20.6588.028; Sun, 16 Jul 2023 21:17:32 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 16 Jul 2023 23:18:36 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 X-TMN: [NgPbVFUUNfqhespcqomcjMsUWLnLOZvM] X-ClientProxiedBy: FR3P281CA0160.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a2::15) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230716211836.352691-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|PR3P250MB0273:EE_ X-MS-Office365-Filtering-Correlation-Id: 300656a5-cf8e-4781-9531-08db8642115f X-MS-Exchange-SLBlob-MailProps: znQPCv1HvwXGRChVmSx2BwWQ47G+NNdjOejeRJwW21KKr8sYj7kDH/3kSzBc+opJDK794obzZDZebRAg6sDrbOE04geTODa6Ee2FgyIWM1Crjdby1N32XxC1rKZ9wxZxX3jEGvHqvcDeKgRf8JWKsBElbAz/SLO8uJHGRn57IBtg4Rj9w3IMhD97lERxojgpjkCWcJKhaSwdUf1Fv/xREHp74Un7tsIwB/nABEgWtTb5yzvjrLn35b7T/7KhVPTDFc1Fsf/Q5db6LOEQj1nIOrBSAb2NIvisDFT802q10lBbbzTfUMVSmlqtMhOf7fTJm5qC76V1xczGJkcLd4ks4dW7wqbGRZcFxmJm865nxcE6DUiB5R+dEAgWzjbILT7+8XZE93fLtPjFobGlo68BfDRgYks/oKDUxEl4/GtJQtDVsiNFMWRmP1EwS8fW7I+4oYotQo1T/E9JGGxRn1IUjDEXdl+jngXUNLFsysNE+Sb5YQZMXKmGvxGaPa30t1xbcZ1t5gTreJ7YcTyD9iJ8TmiWIFSwz3UjPhK/M9byUZtlJgsvOgkk4uCwd5fToEnVsnKaN1JgEUodk5XAZUTrmpff55Vg28NIQ49sXYKaUINWPmRhfphbyH6gpK4XE6ITSOJNIh2p58ke2tSHEA0EHCElsEqHMp9vcjxd8McHzlvebYxeRWZHNkTEri87tAoyQEbk9Km1ZHz96aklgG+874zwt7A2rSGlwfZC38wxCpF5tlXQsWyE/csAN+dvSkgvHCZOI9ibGUo= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XxgMxwkCnUFDYjYSakx7gXhCjWu3PRLw+46sigDzhqVSAlZemVafI6hS+gf08LOIaTuwIDcEukdok9sPwl0otCLC/RULtdjWfBTA8ARCV4mNGZrUojxOUdcQ6isq6d893eNsEH9E+FtNFhTiDLO81mI30shxf+AmCm51I1BQdRxovuNlh36eLqRDoIRx7L4IVMXM8o7fTDyIINaMp2YLbO060eaO1Gyj7mO0YA5Nkc6PZsyM04DwZXt/Njo4fYVckXKNkCAVR7ybi5kCNnV+fAsk7roEIdjkR+FOG6FbQnCXk9qwKB9P6mWkYvfEd0rAinBdPCIaGUIExicD/lrrpYjsuc+REIruDa81Ul6j8g1ngcSA6O8+6q6LwjWTjY8recR6VL4xRdT9c7wyb9vyiku+/DkTkaKXme0YK9dkQ/aWb3CfIo5hpxMmzh4vuGP/c6NnSccfXkOID4eXieMG1cwG216rnbfCI5PQ+1qhwkHdJAHTxsRjgfUWbD2lhRCKzBAjlycOx/KWfyWJ8bZ9jxD2vAPCIv0LirktN6UbgbnVJk6KAqUOa+IF+jsETg0axXVTimlZJIvgANAt7A9fiOfUmUvT8lCi0BGCs3hIaKXUF0Sec9a11zLOG4uQuGzx X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?IOnFb9/nQu8wXiz3Kp25ZzmbUdcbFA10BxwDyslrArnWjVnP9zf9kl/91SXp?= =?us-ascii?Q?DR4i4Rtv2uFsBkmiQR2gpnMhPPBV6el6/6BrD2W5xq9zkxPw/Y788SYEb8wA?= =?us-ascii?Q?y4XHQpI7t+TM0HzGkli46GTYMHpsiYdevqYgDUJ47ZHULjqiN/bbkVYswqJR?= =?us-ascii?Q?NC9qu6nrmuCK2sbJNp9/bzJY4uJSj4PwYG31R52b5yIqU6QtlO6DNbXYt7Aq?= =?us-ascii?Q?wAJ4cvNeIPFM1Uw38CHdhI6Lx0f3jXwvYuxVB0hpI8q5paN65JbjFQW4bwMo?= =?us-ascii?Q?7UhdUZi+3VAeo6zz3cJGrWJhaP/uMhckFdF0csouKCYVajz79X28SzCIHDVH?= =?us-ascii?Q?fJukeNN0MmKimcpL7LiO9putY3GOK2ZZdwCfdxRjwNP2QERxUW3HP6CLc0nz?= =?us-ascii?Q?QnZT2kDoj/TsTcBNsoeBxzLTW/rOim/QENOTTOXzkCJKE+onvLa3aHYTkOpw?= =?us-ascii?Q?4tTzbOPC3lNNv9kx5ox+IHywdMyCkfr5Vg0IWqpv/7neMKPJh2Zt+Vb+41CB?= =?us-ascii?Q?U32JZF1g34AsCRC/2j/pudtzyC3HguTzMwcdVdYhrXNqrMlzxyqgIvPztZEI?= =?us-ascii?Q?6QhhkNo3mWXgUIpCM6XYCotRpudpTo92JxfyJEXpnWu8oycX6NwIbZrZ6lZc?= =?us-ascii?Q?BQn3ImpiM87Oj5Smvsb0SHT6GLNagdt2XTunsL1G48weZfsA6mVEtSEVkDTK?= =?us-ascii?Q?/gd4Qg7uO5AIMJlFdRO6dzB16SlhVKfkv821qwOYUj/wOuvDO4aTxWJMKeqJ?= =?us-ascii?Q?fyHl9XIsrmGZiC0LVWlmTSMycGdg4j07vsapyCidUXeyKSAK2XgYRDoynhqU?= =?us-ascii?Q?XWdUx935xinAbVwQIFdOVPJDlX1u6ZLCyrE4jU3UFeVFoCnikl5aQpY1Fu/2?= =?us-ascii?Q?ZuPlivD9nAT7zFlHNYUpxJupujuPk/cVPwYPx7j4w9yWa/KdpnP/BoCrkGCt?= =?us-ascii?Q?NFslpZlohIZSvgqjWfVyqsHNMmxVsSSZY7a2U5zU3FzQqM5kUKxlBHMTH+lJ?= =?us-ascii?Q?bq/p88qUXFCkAtmuWUJZPrGXhMl88vP/LmGfCMqLag1Se0u97KBo3nHV6y4X?= =?us-ascii?Q?EDA2Zsu4y8v0P0DRz2deWguIJXhSfFXoiOkBDW7k5P8kadIXdHF/TqywGd8w?= =?us-ascii?Q?iqqn8DGRpVzyxbxC1GIKjq4EC5NJiYB2Nh5PpsxrRBSXskWBQe+fT+MEOS1B?= =?us-ascii?Q?NpIFoiTNXRIhd8LwpL8P2zVvcXB3KAfn8LOXp/cVgiZfMM6U8UjN7APwwRLV?= =?us-ascii?Q?B3gX9TDVtKaiRrK5xiKx?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 300656a5-cf8e-4781-9531-08db8642115f X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jul 2023 21:17:32.3602 (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: PR3P250MB0273 Subject: [FFmpeg-devel] [PATCH] avcodec/cbs_h2645: Replace parameter sets generically 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: This avoids having a function for each type of parameter set for each of the modules. Signed-off-by: Andreas Rheinhardt --- libavcodec/cbs_h2645.c | 134 ++++++++++++++++++++++------------------- 1 file changed, 72 insertions(+), 62 deletions(-) diff --git a/libavcodec/cbs_h2645.c b/libavcodec/cbs_h2645.c index 34c5d1d372..5bbd74b977 100644 --- a/libavcodec/cbs_h2645.c +++ b/libavcodec/cbs_h2645.c @@ -736,55 +736,65 @@ static int cbs_h2645_split_fragment(CodedBitstreamContext *ctx, return 0; } -#define cbs_h2645_replace_ps(h26n, ps_name, ps_var, id_element) \ -static int cbs_h26 ## h26n ## _replace_ ## ps_var(CodedBitstreamContext *ctx, \ - CodedBitstreamUnit *unit) \ -{ \ - CodedBitstreamH26 ## h26n ## Context *priv = ctx->priv_data; \ - H26 ## h26n ## Raw ## ps_name *ps_var = unit->content; \ - unsigned int id = ps_var->id_element; \ - int err = ff_cbs_make_unit_refcounted(ctx, unit); \ - if (err < 0) \ - return err; \ - if (priv->ps_var[id] == priv->active_ ## ps_var) \ - priv->active_ ## ps_var = NULL ; \ - av_buffer_unref(&priv->ps_var ## _ref[id]); \ - av_assert0(unit->content_ref); \ - priv->ps_var ## _ref[id] = av_buffer_ref(unit->content_ref); \ - if (!priv->ps_var ## _ref[id]) \ - return AVERROR(ENOMEM); \ - priv->ps_var[id] = (H26 ## h26n ## Raw ## ps_name *)priv->ps_var ## _ref[id]->data; \ - return 0; \ +typedef struct PSOffsets { + unsigned id_element_offset; //< relative to the raw parameter set struct; must refer to uint8_t + unsigned ps_array_offset; //< relative to CodedBitstreamH26*Context + unsigned ps_ref_array_offset; //< relative to CodedBitstreamH26*Context + unsigned active_ps_offset; //< Zero means that active PS is unused +} PSOffsets; + +#define CBS_H26456_OFFSET_TABLE(MODULE, module, PS_NAME, ps_var, id_element, _active_ps_offset) \ +static const PSOffsets module ## _ ## ps_var ## _offsets = { \ + .id_element_offset = offsetof(MODULE ## Raw ## PS_NAME, id_element), \ + .ps_array_offset = offsetof(CodedBitstream ## MODULE ## Context, ps_var), \ + .ps_ref_array_offset = offsetof(CodedBitstream ## MODULE ## Context, ps_var ## _ref), \ + .active_ps_offset = _active_ps_offset, \ } -cbs_h2645_replace_ps(4, SPS, sps, seq_parameter_set_id) -cbs_h2645_replace_ps(4, PPS, pps, pic_parameter_set_id) -cbs_h2645_replace_ps(5, VPS, vps, vps_video_parameter_set_id) -cbs_h2645_replace_ps(5, SPS, sps, sps_seq_parameter_set_id) -cbs_h2645_replace_ps(5, PPS, pps, pps_pic_parameter_set_id) - -#define cbs_h266_replace_ps(h26n, ps_name, ps_var, id_element) \ -static int cbs_h26 ## h26n ## _replace_ ## ps_var(CodedBitstreamContext *ctx, \ - CodedBitstreamUnit *unit) \ -{ \ - CodedBitstreamH26 ## h26n ## Context *priv = ctx->priv_data; \ - H26 ## h26n ## Raw ## ps_name *ps_var = unit->content; \ - unsigned int id = ps_var->id_element; \ - int err = ff_cbs_make_unit_refcounted(ctx, unit); \ - if (err < 0) \ - return err; \ - av_buffer_unref(&priv->ps_var ## _ref[id]); \ - av_assert0(unit->content_ref); \ - priv->ps_var ## _ref[id] = av_buffer_ref(unit->content_ref); \ - if (!priv->ps_var ## _ref[id]) \ - return AVERROR(ENOMEM); \ - priv->ps_var[id] = (H26 ## h26n ## Raw ## ps_name *)priv->ps_var ## _ref[id]->data; \ - return 0; \ -} +#define CBS_H2645_OFFSET_TABLE(h26n, PS_NAME, ps_var, id_element) \ + CBS_H26456_OFFSET_TABLE(H26 ## h26n, h26 ## h26n, PS_NAME, ps_var, id_element, \ + offsetof(CodedBitstreamH26 ## h26n ## Context, active_ ## ps_var)) + +CBS_H2645_OFFSET_TABLE(4, SPS, sps, seq_parameter_set_id); +CBS_H2645_OFFSET_TABLE(4, PPS, pps, pic_parameter_set_id); +CBS_H2645_OFFSET_TABLE(5, VPS, vps, vps_video_parameter_set_id); +CBS_H2645_OFFSET_TABLE(5, SPS, sps, sps_seq_parameter_set_id); +CBS_H2645_OFFSET_TABLE(5, PPS, pps, pps_pic_parameter_set_id); + +#define CBS_H266_OFFSET_TABLE(PS_NAME, ps_var, id_element) \ + CBS_H26456_OFFSET_TABLE(H266, h266, PS_NAME, ps_var, id_element, 0) + +CBS_H266_OFFSET_TABLE(VPS, vps, vps_video_parameter_set_id); +CBS_H266_OFFSET_TABLE(SPS, sps, sps_seq_parameter_set_id); +CBS_H266_OFFSET_TABLE(PPS, pps, pps_pic_parameter_set_id); + +static int cbs_h26456_replace_ps(CodedBitstreamContext *ctx, CodedBitstreamUnit *unit, + const PSOffsets *offsets) +{ + int err = ff_cbs_make_unit_refcounted(ctx, unit); + unsigned char *priv = ctx->priv_data; + struct ps **ps_array = (struct ps **)(priv + offsets->ps_array_offset); + AVBufferRef **ps_ref_array = (AVBufferRef**)(priv + offsets->ps_ref_array_offset); + unsigned id; + + if (err < 0) + return err; -cbs_h266_replace_ps(6, VPS, vps, vps_video_parameter_set_id) -cbs_h266_replace_ps(6, SPS, sps, sps_seq_parameter_set_id) -cbs_h266_replace_ps(6, PPS, pps, pps_pic_parameter_set_id) + id = *((const uint8_t*)unit->content + offsets->id_element_offset); + if (offsets->active_ps_offset) { + const struct ps **active_ps = (const struct ps**)(priv + offsets->active_ps_offset); + if (*active_ps == ps_array[id]) + memcpy(active_ps, &(struct ps *){ NULL }, sizeof(*active_ps)); + } + av_assert0(unit->content_ref); + err = av_buffer_replace(&ps_ref_array[id], unit->content_ref); + if (err < 0) + return err; + + ps_array[id] = (struct ps *)ps_ref_array[id]->data; + + return 0; +} static int cbs_h266_replace_ph(CodedBitstreamContext *ctx, CodedBitstreamUnit *unit, @@ -827,7 +837,7 @@ static int cbs_h264_read_nal_unit(CodedBitstreamContext *ctx, if (err < 0) return err; - err = cbs_h264_replace_sps(ctx, unit); + err = cbs_h26456_replace_ps(ctx, unit, &h264_sps_offsets); if (err < 0) return err; } @@ -849,7 +859,7 @@ static int cbs_h264_read_nal_unit(CodedBitstreamContext *ctx, if (err < 0) return err; - err = cbs_h264_replace_pps(ctx, unit); + err = cbs_h26456_replace_ps(ctx, unit, &h264_pps_offsets); if (err < 0) return err; } @@ -946,7 +956,7 @@ static int cbs_h265_read_nal_unit(CodedBitstreamContext *ctx, if (err < 0) return err; - err = cbs_h265_replace_vps(ctx, unit); + err = cbs_h26456_replace_ps(ctx, unit, &h265_vps_offsets); if (err < 0) return err; } @@ -959,7 +969,7 @@ static int cbs_h265_read_nal_unit(CodedBitstreamContext *ctx, if (err < 0) return err; - err = cbs_h265_replace_sps(ctx, unit); + err = cbs_h26456_replace_ps(ctx, unit, &h265_sps_offsets); if (err < 0) return err; } @@ -973,7 +983,7 @@ static int cbs_h265_read_nal_unit(CodedBitstreamContext *ctx, if (err < 0) return err; - err = cbs_h265_replace_pps(ctx, unit); + err = cbs_h26456_replace_ps(ctx, unit, &h265_pps_offsets); if (err < 0) return err; } @@ -1083,7 +1093,7 @@ static int cbs_h266_read_nal_unit(CodedBitstreamContext *ctx, if (err < 0) return err; - err = cbs_h266_replace_vps(ctx, unit); + err = cbs_h26456_replace_ps(ctx, unit, &h266_vps_offsets); if (err < 0) return err; } @@ -1096,7 +1106,7 @@ static int cbs_h266_read_nal_unit(CodedBitstreamContext *ctx, if (err < 0) return err; - err = cbs_h266_replace_sps(ctx, unit); + err = cbs_h26456_replace_ps(ctx, unit, &h266_sps_offsets); if (err < 0) return err; } @@ -1110,7 +1120,7 @@ static int cbs_h266_read_nal_unit(CodedBitstreamContext *ctx, if (err < 0) return err; - err = cbs_h266_replace_pps(ctx, unit); + err = cbs_h26456_replace_ps(ctx, unit, &h266_pps_offsets); if (err < 0) return err; } @@ -1273,7 +1283,7 @@ static int cbs_h264_write_nal_unit(CodedBitstreamContext *ctx, if (err < 0) return err; - err = cbs_h264_replace_sps(ctx, unit); + err = cbs_h26456_replace_ps(ctx, unit, &h264_sps_offsets); if (err < 0) return err; } @@ -1297,7 +1307,7 @@ static int cbs_h264_write_nal_unit(CodedBitstreamContext *ctx, if (err < 0) return err; - err = cbs_h264_replace_pps(ctx, unit); + err = cbs_h26456_replace_ps(ctx, unit, &h264_pps_offsets); if (err < 0) return err; } @@ -1390,7 +1400,7 @@ static int cbs_h265_write_nal_unit(CodedBitstreamContext *ctx, if (err < 0) return err; - err = cbs_h265_replace_vps(ctx, unit); + err = cbs_h26456_replace_ps(ctx, unit, &h265_vps_offsets); if (err < 0) return err; } @@ -1404,7 +1414,7 @@ static int cbs_h265_write_nal_unit(CodedBitstreamContext *ctx, if (err < 0) return err; - err = cbs_h265_replace_sps(ctx, unit); + err = cbs_h26456_replace_ps(ctx, unit, &h265_sps_offsets); if (err < 0) return err; } @@ -1418,7 +1428,7 @@ static int cbs_h265_write_nal_unit(CodedBitstreamContext *ctx, if (err < 0) return err; - err = cbs_h265_replace_pps(ctx, unit); + err = cbs_h26456_replace_ps(ctx, unit, &h265_pps_offsets); if (err < 0) return err; } @@ -1645,7 +1655,7 @@ static int cbs_h266_write_nal_unit(CodedBitstreamContext *ctx, if (err < 0) return err; - err = cbs_h266_replace_vps(ctx, unit); + err = cbs_h26456_replace_ps(ctx, unit, &h266_vps_offsets); if (err < 0) return err; } @@ -1658,7 +1668,7 @@ static int cbs_h266_write_nal_unit(CodedBitstreamContext *ctx, if (err < 0) return err; - err = cbs_h266_replace_sps(ctx, unit); + err = cbs_h26456_replace_ps(ctx, unit, &h266_sps_offsets); if (err < 0) return err; } @@ -1672,7 +1682,7 @@ static int cbs_h266_write_nal_unit(CodedBitstreamContext *ctx, if (err < 0) return err; - err = cbs_h266_replace_pps(ctx, unit); + err = cbs_h26456_replace_ps(ctx, unit, &h266_pps_offsets); if (err < 0) return err; } -- 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".