From patchwork Tue Jan 30 12:49:00 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 45903 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:8786:b0:199:de12:6fa6 with SMTP id ph6csp2130791pzb; Tue, 30 Jan 2024 04:51:21 -0800 (PST) X-Google-Smtp-Source: AGHT+IFSOSOQiN4+NFVoXUy/3loztUtm9GGOUyhhWupqE/UktGbOxygNYe9EOf3ghxuChOWW9sTq X-Received: by 2002:a50:ee11:0:b0:55e:ec08:acdd with SMTP id g17-20020a50ee11000000b0055eec08acddmr4418177eds.4.1706619080991; Tue, 30 Jan 2024 04:51:20 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 13-20020a0564021f4d00b0055f4253b128si566815edz.593.2024.01.30.04.51.19; Tue, 30 Jan 2024 04:51:20 -0800 (PST) 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=rHv1EpXf; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 915EC68D358; Tue, 30 Jan 2024 14:51:03 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from APC01-TYZ-obe.outbound.protection.outlook.com (mail-tyzapc01olkn2015.outbound.protection.outlook.com [40.92.107.15]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C6FE568D347 for ; Tue, 30 Jan 2024 14:50:55 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JFpAyVsszxVOSmo34owmerehd46hd/StwvMV+t75uoekbxKpITLWZ9BekLBdscWemDbubxR4jaL1BiB8EMSfG0n5bH4lUzJhiIibpzpf1SQrpp8tZWjEWUyRySvM8UlGTSuDVJ71sKfMEY8inXZw+xU07gsghknxEt2Vlm2kRgxqAAOZxRGn6nRlNpb9U9u7xzUyiT6L1bRHsqSIA8kPDs2WiVDuFQO5/13WLMvRtOOicbWFblDWQ8fjNeb+7HVz27FoiM8FrNKvIhgW295nZfDFne2R66nDXFar9pB/MxHG7GvLbksJ2z7yBPg+j+hjutpVUDtAQ7sMJyOVj51A9A== 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=Pb4T+6T3Yq7IDyYduLenPAAxpfjP1HBP+230kDS5V5w=; b=BCGU5dUWAUzR+HoxrcleINnwX237/DZ61c5Z2tkSAiuCdYnL23daaC/DExOB6SuczF8SbpheRS1/6/Nff3ARmusdm43uNauD2KhNWJCjfAEvN5fMcEGcGN4L91KD3YguRn0MB+fUWRPADUF8rOTEWeRX9Al1LNBmQF02pIVB3NkRS8fXSQM4VZNkVdDiP7/h2wXv9FoG1IUg27s4IVXLK0nOie4dNwH++b2agHGE1L+nREcYsbAnA8oP0Gjej7t994AkM0ynD0JtSjsQSntOt6sAyDpBT5FxbHpO168GrlPbMcyuuFpdgeelGm4AQDSQFOT8nC6D2qfUIshOLj6Mqw== 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=Pb4T+6T3Yq7IDyYduLenPAAxpfjP1HBP+230kDS5V5w=; b=rHv1EpXf5WXhK0xHibNd9O/jAS46CMtlJgHQ3100jfAj6ck6KPnxl/THRpi1yWN9JeSQPb6YCUy4VPafsyHrhFB60YzaIREnULt9/HbMOybntcR4KYCyBb/A03KBWYyGjOR2qTqqRFwgJrHza7/TBIpd24cjk++/dws7oOl0wA8ghE+Jiay1fbWWICCL8ClUnSYp1LfzsNVxQiiE34uGfC2eA+LKr6sx6Vd1+q0oQvXZlKzWFQUKV4ua0zf0dVqexLjzHEbjG3cbQWToHK8RUrtI47dX6MxwJqY5WotmKa5r53sLpE9bT0RGPhv3SgXiSZGBhZTEhqzOng/n7Im27Q== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by TYZPR06MB7274.apcprd06.prod.outlook.com (2603:1096:405:ab::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.32; Tue, 30 Jan 2024 12:50:46 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::e139:fd7a:1b66:a3f7]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::e139:fd7a:1b66:a3f7%7]) with mapi id 15.20.7228.029; Tue, 30 Jan 2024 12:50:46 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Tue, 30 Jan 2024 20:49:00 +0800 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240130124903.16892-1-nuomi2021@gmail.com> References: <20240130124903.16892-1-nuomi2021@gmail.com> X-TMN: [KDeF/uVXwwBJ+sbZMliXGvcokxPlzTjE] X-ClientProxiedBy: SI2PR02CA0035.apcprd02.prod.outlook.com (2603:1096:4:195::22) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240130124903.16892-4-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|TYZPR06MB7274:EE_ X-MS-Office365-Filtering-Correlation-Id: 5f077196-0c09-4863-29b1-08dc2192141c X-MS-Exchange-SLBlob-MailProps: Vs63Iqe4sQmENacaprcsf8K7uW5aY0aB1ulir33xJ1OSYflJceSf65ORPvpbFzmv4bfTrjXtyEUnkZIGPCNz9M6dkalqdfgD7IKCYwXRi2XAiZbfr6Ks+iveD0Vn0FVIIvQt2z+mTit/+vYQIz+Eq37abFYZVle1nPV54BAbS5p270Y1/YoPN900KOKAkhFcDFIToyBKxnYTpbBrIFbXd2ra423FTUyESatrs5hj/X/UzNyrVXmL7Ur9te0q2tmrkRe6DZO0yUO2/mZnaT83goMYWPmJczyOOIwa2ZXcCtCgMfi6QBsNRf501vMdXWgKGfblKmUGHY7bkw6/Lr3UhTctPjbcwY/fqk1G7F3FlMCcRUujBT2hXHZ8/UftZ+KUgszbpZpXw2T5YnjH8Y+9xXc7toOUlmt1ZqCMcy1dkwS/aAjDoAB1RgP9XPh4CiDSFqjbCCzv1ZJnFwyUdxTflvaWABANRgqXulqHWySs6PCnkVgVhGDx/UAFHKRdh6xYtMx38So2jHFn9IZb2F4WtFZoB2Wy8hx6zWg+hnZl6RImaxCOOAzmdxnhiTOyvAEcLVDy3CfYfQC6b3/b1hIh18FDx8axrhoULTyDg8wEM4qa9Ni88yuxo0Tr5RSyoPAvEgrCSe/CYWh8HyyG45TlMemcjA9muabxcR5hPdRRa3+cJCMwdAOZPGQ7K1d/3TYY+PnN18g7n+clHGpEFGQQC/8kwZBveMg4+v/I7ps5dMU= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5qRmsY1CCIs6+JmVJY9q6k1OobMu/9B/O5adKVwM/fez4LmbThq9fJuAZjFakMP3tMzbN8eCoFe/JFcY2QFQuZ8ew27MftnEKWr4jKiKwSQST2b8O9bPattnOcKNPH2WNqLNgKjC3veL5ZnrhfTXWLAs/oCH008Tv3FFJaVvcTr4CvIZdFMBrr/rzrGLIGyZTmEghrLSl4f1eLZ/heS3SS3NUc7WQ/60CvcGpNBRLEz+mwURTAWAHSQbqr4OfKIHehL5M7KMYixpHIGLnhGKmY6qPatpC0TmGUcT41kcQlXvyLkpjif7BQvKsNg6xqpgZV8QyYHjjMS2QqX6uMuhzwUaFgvIcQad/4bzClcgUTWXBRv1HtVEpMo6Nse3Sb2qmcmPsSwUbr7so4YCa9g1Yq6v2w2qytNieWhFsqufKt8kDsnqfIovFN5rGKJy9vmfLFkjss506wUmBSHvguaDai2jsTfA4iUrG6A3zG4hkJwEEtfPQj3lItAiEue/S46dBtNn6Pih0a1WzmPWu2KdmDP73HgqK+zf6N3DqeMbzyfGCujT7YPCianQP0t8Y29ehVln+dAxSoDRMpX2QWN6ByA8inswlSfBqRKaEcWGIRB74iXaPvMjlfK+sxEUaA8T X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 9bP1Tu4GqFYgUYsPFblq0ABP+SycWQUAYke0NLizB9NN02XlPSwwlobhq7vqOZC8/OhtHkn7L3OV58XzyiRzSmqmnxFpnHGuchdwzLanVtwyeZxBhpkHtS31zCa+64fnG2vhPsluYDW+BplUiqdiLvUfje5/NCShzySI+7REsW5eZx/xa2j8QEqbmmClG8QVK/U+vTd0mh53bjPcyiWWpAQFpK2lDRLxumGd14n0mLafMTig6L7rsuyjGMEbfM7Alml4c01K+psPYhJjvoHEN91QK9P8CV7PgkUhVvK82FLzs6ONnZG5mC5Sjmj38BVwlZQiu/RV9UypCdnQdZqHSMfZxgnS5EwLVHowQOGa4n/GpdjGOidLUfU0xSO/zzr260DMCdjtYPoZZTEwCre+SpnzEoYVGaNZEtyWbyfRshOcP+JNSXFHGiBiVmCndgfloYiFUUnU+mL2WU/7mx8dZd2pcm3GRu2da7K46HPXvDpYeIE2Xjgnw/lqs2u0g+82Ve1rxs/t8yZnEW0oLYRGLUFRZT9InutOd+dnDNWn8O4ixsgs2AV1bNPwKu/dG1aQ3t0da257AH0k3FCbweOrPF2qpp2DYwUSmD5JWNHjJ62SGuojEPcVB9MZq0YzcbTCyFEP2gG4JYe1LRUhZ0BvoR2bweNXTGCTnxXA8rUDKI9o9EAH53bC+EnS2ScnHNAt86EYGDVU+8NTucPkczo+AyQTAJBK34y4utV5fLQJOcITwx9vzVqH7KM8Z1snWH9/LeRzj6UNFNusZ3fKGpxFDoo/V9TMrjoVmQZpjoLNGYwbte6WtuFtUG9yKyjDrG/64vq+Lc1n1P391RWlyEA3/vUEXT0cXMnfiVRA/tQJH53nP7mZ91K155erjVOkVBhTbMwwY1rqBQoKXAtQcrijJ4tb0JFG3GOA4fXBrVSiwcCgnDk2O5cYQ1YxINz3kLVCnhjoRBwvDFaaSE23oSfaL3WLJkSPZaAAHmlTXLG9h0NWXeQFj37itecwmRT4QZ6yvlKcvIpjq8Gjx5PFm7lneiXsYNGGYsKEVFpQ5KDjWDZyOQeMOUe+U4SfQtj4auCRf7QlQ+FHSySfQc8PsHNU5F47nfLx4DyjD3QbqRsufmZf/1JzmP1KD0HU8hoXOnzhuqPl927B+qDuSXTi+KgKaceV9f8eFUtIk4W36TiBZ7jCcqdCMrQygzbQJucp35vhwf3yeOM/5NAxB2A4lowzogABXrygAlOnvmTzzK//kqi5IMVgDlu1gu2f2L7rBwpm X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5f077196-0c09-4863-29b1-08dc2192141c X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2024 12:50:46.7608 (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: TYZPR06MB7274 Subject: [FFmpeg-devel] [PATCH v5 3/6] avformat/mpegtsenc: refact, move h264, hevc startcode checking to check_h26x_startcode 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: vWvfW/xojZvH --- libavformat/mpegtsenc.c | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c index 4e5c264d2a..5e089f2866 100644 --- a/libavformat/mpegtsenc.c +++ b/libavformat/mpegtsenc.c @@ -1759,16 +1759,16 @@ static void mpegts_write_pes(AVFormatContext *s, AVStream *st, ts_st->prev_payload_key = key; } -int ff_check_h264_startcode(AVFormatContext *s, const AVStream *st, const AVPacket *pkt) +static int check_h26x_startcode(AVFormatContext *s, const AVStream *st, const AVPacket *pkt, const char *codec) { if (pkt->size < 5 || AV_RB32(pkt->data) != 0x0000001 && AV_RB24(pkt->data) != 0x000001) { if (!st->nb_frames) { - av_log(s, AV_LOG_ERROR, "H.264 bitstream malformed, " - "no startcode found, use the video bitstream filter 'h264_mp4toannexb' to fix it " - "('-bsf:v h264_mp4toannexb' option with ffmpeg)\n"); + av_log(s, AV_LOG_ERROR, "%s bitstream malformed, " + "no startcode found, use the video bitstream filter '%s_mp4toannexb' to fix it " + "('-bsf:v %s_mp4toannexb' option with ffmpeg)\n", codec, codec, codec); return AVERROR_INVALIDDATA; } - av_log(s, AV_LOG_WARNING, "H.264 bitstream error, startcode missing, size %d", pkt->size); + av_log(s, AV_LOG_WARNING, "%s bitstream error, startcode missing, size %d", codec, pkt->size); if (pkt->size) av_log(s, AV_LOG_WARNING, " data %08"PRIX32, AV_RB32(pkt->data)); av_log(s, AV_LOG_WARNING, "\n"); @@ -1776,19 +1776,9 @@ int ff_check_h264_startcode(AVFormatContext *s, const AVStream *st, const AVPack return 0; } -static int check_hevc_startcode(AVFormatContext *s, const AVStream *st, const AVPacket *pkt) +int ff_check_h264_startcode(AVFormatContext *s, const AVStream *st, const AVPacket *pkt) { - if (pkt->size < 5 || AV_RB32(pkt->data) != 0x0000001 && AV_RB24(pkt->data) != 0x000001) { - if (!st->nb_frames) { - av_log(s, AV_LOG_ERROR, "HEVC bitstream malformed, no startcode found\n"); - return AVERROR_PATCHWELCOME; - } - av_log(s, AV_LOG_WARNING, "HEVC bitstream error, startcode missing, size %d", pkt->size); - if (pkt->size) - av_log(s, AV_LOG_WARNING, " data %08"PRIX32, AV_RB32(pkt->data)); - av_log(s, AV_LOG_WARNING, "\n"); - } - return 0; + return check_h26x_startcode(s, st, pkt, "h264"); } /* Based on GStreamer's gst-plugins-base/ext/ogg/gstoggstream.c @@ -1985,7 +1975,7 @@ static int mpegts_write_packet_internal(AVFormatContext *s, AVPacket *pkt) const uint8_t *p = buf, *buf_end = p + size; uint32_t state = -1; int extradd = (pkt->flags & AV_PKT_FLAG_KEY) ? st->codecpar->extradata_size : 0; - int ret = check_hevc_startcode(s, st, pkt); + int ret = check_h26x_startcode(s, st, pkt, "hevc"); if (ret < 0) return ret;