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 8EFCB496EB for ; Sun, 18 Feb 2024 02:42:49 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CC73768D31C; Sun, 18 Feb 2024 04:42:46 +0200 (EET) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2075.outbound.protection.outlook.com [40.92.89.75]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id ACBC168D1C0 for ; Sun, 18 Feb 2024 04:42:39 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ihSgtesDE54HYK6C7DKGd0sDSfOO7ZhYXr0AcD3nvndRo9DOo1H9RdhWEe+dj3n4QSfTmtqsClbn4A2lZ8ugV4X4GQa2PQQFaIiBLiRJH+9ObltpeWFcNvaE/FReZCA1N/aBZJupNXKeD9nU5M6J76LVXdsmfgI589aPtWMGQ6CSvxLwvZNE+SsdaZDdFjcs84ODwWWQFJ6ODeO/13BwK+oFJmXokwsZFRORjxF0S6eLsIh5gey5xDi96W8OFk90KWt0u4tP1SOYNVUYkf/Oi07xWOFt1WuInfKedGDkhCFfCZNDyakoXfDhnlez7l81IxwbFf939X4o7i+Q/wCKLQ== 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=KsouwisGM3iuQnokY2lRcKIv0FUQ18GJEOHza6pLG/s=; b=VzQ+AV8rIKMzwcyKNFlSmATsAW+LPK/GSfAmRURsSCwA6lLsYVGQ+Xoa4SEnxICV7IaynYRDk9nPdKcLxWjbMP8Xx+FAf8gFb5TO81zC3fcDuBEP70d2EnN3zmlTh2oNO+caTtljUknYHbvR84Jm6mZ1E8BGtA1NVN0FD8o7meUG9KAkt9QuaSi2jV6DGYDzl+KImSl64E4usEwMU7FSJbpnSwxtS/2AKrGTjfAvw1cYxV30q/qtwAoUSP/YLgixuwMZaqRIeIyLjyKETGM7wFLOrHiY2tiyT1nteRhxgYVLsKYBuU6xxq0BGrWNFrIxPO+GCL3sDkJdu8PJ0bfWfw== 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=KsouwisGM3iuQnokY2lRcKIv0FUQ18GJEOHza6pLG/s=; b=dpnusvW36al6jehSxsyauKzwmL7ZRPdM136HEXwrUjn/uHXocWVxofmi18+uWqqtXiTktJe/oM37U7ij2Qx2J5f/BP7In1uft6k1m7bQD8+y/pYt562ougDfiOaNBv23/NSXujyprPYAFWb0xIVVhcHCENtAP7zmcjohQlzrA15GuEMiPNS6nahutLOG/s50Po3DX1YIvohjk/QdknYp3JLI4Jj8I/dJznHBvsBQ3/3hGlIhLvtTzO7p9rlB9JQsfemFj2UbNRaA584fktb/4xUoAkREFrQq/uLP0Hl0BPd8OwxAYQjs8i330MSoO8HmqetEzwoXmaaKbGbCxbIZKQ== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AS8P250MB0054.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:359::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.32; Sun, 18 Feb 2024 02:42:38 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d%5]) with mapi id 15.20.7292.033; Sun, 18 Feb 2024 02:42:38 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 18 Feb 2024 03:44:24 +0100 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [UdJv6+2Wqw3YXhUc+/X4bGQZ5CM9gBmhgR/ajIg8pgw=] X-ClientProxiedBy: ZR2P278CA0034.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:47::15) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240218024427.3103449-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|AS8P250MB0054:EE_ X-MS-Office365-Filtering-Correlation-Id: 6cbc292b-1be4-41ff-75ec-08dc302b44e6 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jCFgWwv5U2hR2E0w/wANXIkd6ZfgVmgrm0AGsEm9ImvTvc5nHwGZ07RoFPzdGYYvDqj4IDYzwAnY0P8P4tudgmpD+y/l63uR69xxmLViqW74kqc4EVOpU74ArADxNTtKgeFr8mD4Li/WX6x0rmEf1iR5gCqvGVOqm+KLfhXbCVcJNlYFW2yzHQnMdMM8UGUYXz2VlwC5kZ2cpItE+v5e0B7vh7gBlG5CCwZO/ou719dgi6s2rdtDahaH8iCeWYQuv01HwG6sLwBlT6M3jdY87MYeWHM4MB9Lyk1/ck6izSaG47uk3vIFrlU94zSc++r4Q+rY2ucdNxvv1wo8Z0Wesk9381XyJq3jE52yybTfrqtePMS5g33pE7/jUJQzE+ODeFZbLFfkuSqxAHr8DSi23S4KR+of9aXzChSB0EUIWI4HPhQOKBJZE82cIjaxt1GqpiybLS10+tHEadrTYxii1u5ywdG4FM1HvyQS8sHmLsM+eKQWUJ+Ami9rcvN791z/0GZXTFlR1R4PF8eVeHLatu91+6ARxf5G51Ecr+KI0bCaRCiR4m/G6S17t4tEhlUZyXSoiRHghw2x90Vhk6Yh9oSGbdKdv0+RXM/cuEMqu3otR4ckBseHKCiZ/rWCuUQx X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?8vbJ8ji0tWcwqlhfoAiUnwQuEQ5CZC7IHL5a7pIh7XD2aprXHUrG38u7Nri9?= =?us-ascii?Q?fjYZWwvTQMJbYdM6BgvTISbgtTaygm+I8dhpFpSUm+CaBjrAwwTtN9FA/BH+?= =?us-ascii?Q?07dadrEsM3Fw6A+jPNgGIrKQVLSwWZz9Kxfti4+Bfpy7T0t9JIK/rMRqVK+Y?= =?us-ascii?Q?TlW+MeO/MUdNvEoaf6+JqH9SObg94VIhuPgFoMMzuS9POhfnN+cpImeoLPfB?= =?us-ascii?Q?/AD+uhu8G+5rYES1E+8OlZfDe79iDd939RSA/wXpxQIovoDS2LpAHpLl5tKi?= =?us-ascii?Q?Aj8hTsgLUyQ5H+xX/QtHIr8Rq5t0oypcxaupufAB2EAwKZ6+sjjNDIXn0zAQ?= =?us-ascii?Q?vMB181WDvXzX5RLYSYv92f8Lx7usk9GIffkSU67A/vaC2KwzFrecw/L5UIpe?= =?us-ascii?Q?VWfcnGxsnEtwrYr+jUTlouzXyJGWdf0I4HSjdg/Bo0cuRbAQb4OD7M8TtCy2?= =?us-ascii?Q?nWAkHQ3XzWsp3Mx1qx9GGIQ/VgETYMZ1V0I7JasicE6QwIOz3kiKqKXAW4jm?= =?us-ascii?Q?q7ULsrXm2ekepV/yfOgp0y89IKRbaTWPGEGRROuyt4sMPdv4cR2idcZfONZX?= =?us-ascii?Q?RXNr9gsELLo2XWVI9neQEiBOBfrpPLFEbzNP6VR7O1++tGZY+36UV+8tbjyF?= =?us-ascii?Q?rTajESCWYNJB+D/FF0HWkR/h+tO18sao6y9B/386UtI5/GzO+T9ZJXxL3g5/?= =?us-ascii?Q?qLcJ6y4bca9GnSXCkk4l8HIwXve3pAGMo3MdP+4l4C5QmBYyo9SDEHanm/2w?= =?us-ascii?Q?76rCW3NVTmhzKkyMdIUYU5b9DxysGgktYX0jGVa4EvRbyc89YIcBKcOUCXzt?= =?us-ascii?Q?UBPFhkqFwB4sJxyTPrZuryiahm2td3t3EfbUTOIeJexxG82TbOBjYumGT+t3?= =?us-ascii?Q?cVUj/J3rLksH1KGDc9tjV9yjfZVxhi+RWKurEVpXh7+rfUZmri9wLlI4W9PU?= =?us-ascii?Q?qee2+onBWFGFwPC9YScgNJ0/pSkMxNYh3QG30yWJw7iGvwQFB7Sgj8ij4Jgt?= =?us-ascii?Q?X06cSth6H5bMC8y+9qpGvRrUICsYkmTY+NtH83SFlqlJatCIEXwRZib4VDoA?= =?us-ascii?Q?+oP2XyZ3h/OTSg7O4AzjGY24j1EaoSvP2f8MmqTlFB3XZ3DoTZM+29Rb5SUt?= =?us-ascii?Q?g++jZgXUrxManHZPhQixBaUqQp61DvoKlCNcYP8xtiPPhnFS6vol3pn+7dUF?= =?us-ascii?Q?5vziriBNcehBp0xVQkFxoZ1m47ZT18kyNFZyG1JGdA6Jp/M2BWWxVvsVLTIo?= =?us-ascii?Q?jQOJUvjngjOajvZ0UDoI3REBRhqlJrQ7pxGPlUdSnQ=3D=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6cbc292b-1be4-41ff-75ec-08dc302b44e6 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Feb 2024 02:42:37.9446 (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: AS8P250MB0054 Subject: [FFmpeg-devel] [PATCH 2/5] avcodec/bsf/hevc_mp4toannexb: Factor creating new extradata out 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 is in preparation for the next commit. Signed-off-by: Andreas Rheinhardt --- libavcodec/bsf/hevc_mp4toannexb.c | 64 ++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 23 deletions(-) diff --git a/libavcodec/bsf/hevc_mp4toannexb.c b/libavcodec/bsf/hevc_mp4toannexb.c index c0df2b79a6..a695cba370 100644 --- a/libavcodec/bsf/hevc_mp4toannexb.c +++ b/libavcodec/bsf/hevc_mp4toannexb.c @@ -37,38 +37,32 @@ typedef struct HEVCBSFContext { int extradata_parsed; } HEVCBSFContext; -static int hevc_extradata_to_annexb(AVBSFContext *ctx) +static int hevc_extradata_to_annexb_internal(void *logctx, GetByteContext *gb, + uint8_t **new_extradatap, + size_t *new_extradata_sizep) { - GetByteContext gb; - int length_size, num_arrays, i, j; - int ret = 0; - + int num_arrays = bytestream2_get_byte(gb); uint8_t *new_extradata = NULL; - size_t new_extradata_size = 0; - - bytestream2_init(&gb, ctx->par_in->extradata, ctx->par_in->extradata_size); - - bytestream2_skip(&gb, 21); - length_size = (bytestream2_get_byte(&gb) & 3) + 1; - num_arrays = bytestream2_get_byte(&gb); + size_t new_extradata_size = 0; + int ret; - for (i = 0; i < num_arrays; i++) { - int type = bytestream2_get_byte(&gb) & 0x3f; - int cnt = bytestream2_get_be16(&gb); + for (int i = 0; i < num_arrays; i++) { + int type = bytestream2_get_byte(gb) & 0x3f; + int cnt = bytestream2_get_be16(gb); if (!(type == HEVC_NAL_VPS || type == HEVC_NAL_SPS || type == HEVC_NAL_PPS || type == HEVC_NAL_SEI_PREFIX || type == HEVC_NAL_SEI_SUFFIX)) { - av_log(ctx, AV_LOG_ERROR, "Invalid NAL unit type in extradata: %d\n", + av_log(logctx, AV_LOG_ERROR, "Invalid NAL unit type in extradata: %d\n", type); ret = AVERROR_INVALIDDATA; goto fail; } - for (j = 0; j < cnt; j++) { - const int nalu_len = bytestream2_get_be16(&gb); + for (int j = 0; j < cnt; j++) { + const int nalu_len = bytestream2_get_be16(gb); if (!nalu_len || - nalu_len > bytestream2_get_bytes_left(&gb) || + nalu_len > bytestream2_get_bytes_left(gb) || 4 + nalu_len > FFMIN(INT_MAX, SIZE_MAX) - AV_INPUT_BUFFER_PADDING_SIZE - new_extradata_size) { ret = AVERROR_INVALIDDATA; goto fail; @@ -78,11 +72,38 @@ static int hevc_extradata_to_annexb(AVBSFContext *ctx) goto fail; AV_WB32(new_extradata + new_extradata_size, 1); // add the startcode - bytestream2_get_buffer(&gb, new_extradata + new_extradata_size + 4, nalu_len); + bytestream2_get_buffer(gb, new_extradata + new_extradata_size + 4, nalu_len); new_extradata_size += 4 + nalu_len; memset(new_extradata + new_extradata_size, 0, AV_INPUT_BUFFER_PADDING_SIZE); } } + *new_extradatap = new_extradata; + *new_extradata_sizep = new_extradata_size; + + return 0; +fail: + av_freep(&new_extradata); + return ret; +} + +static int hevc_extradata_to_annexb(AVBSFContext *ctx) +{ + GetByteContext gb; + int length_size; + int ret = 0; + + uint8_t *new_extradata = NULL; + size_t new_extradata_size; + + bytestream2_init(&gb, ctx->par_in->extradata, ctx->par_in->extradata_size); + + bytestream2_skip(&gb, 21); + length_size = (bytestream2_get_byte(&gb) & 3) + 1; + + ret = hevc_extradata_to_annexb_internal(ctx, &gb, &new_extradata, + &new_extradata_size); + if (ret < 0) + return ret; av_freep(&ctx->par_out->extradata); ctx->par_out->extradata = new_extradata; @@ -92,9 +113,6 @@ static int hevc_extradata_to_annexb(AVBSFContext *ctx) av_log(ctx, AV_LOG_WARNING, "No parameter sets in the extradata\n"); return length_size; -fail: - av_freep(&new_extradata); - return ret; } static int hevc_mp4toannexb_init(AVBSFContext *ctx) -- 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".