From patchwork Mon Jan 29 14:54:29 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 45884 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:8786:b0:199:de12:6fa6 with SMTP id ph6csp1573677pzb; Mon, 29 Jan 2024 06:55:37 -0800 (PST) X-Google-Smtp-Source: AGHT+IFQtPHFEb7ZJBRsLaU0oRJr553W9gupLM3jNeoQqpTiTdf8IxsxhFhFGrDSX3j4IHxqbLzb X-Received: by 2002:a17:907:987c:b0:a31:1c94:3431 with SMTP id ko28-20020a170907987c00b00a311c943431mr4439222ejc.46.1706540137336; Mon, 29 Jan 2024 06:55:37 -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 lu44-20020a170906faec00b00a35fe2c3d06si91137ejb.502.2024.01.29.06.55.36; Mon, 29 Jan 2024 06:55:37 -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=mnGlK0AQ; 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 9A60F68D214; Mon, 29 Jan 2024 16:55:12 +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-tyzapc01olkn2059.outbound.protection.outlook.com [40.92.107.59]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BF5B368D20F for ; Mon, 29 Jan 2024 16:55:05 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aFig7lY/fWX++HQ/Qs9jw+F7bQSnpnMTQ1EW0G08x3OA2dKAozr+Jhj96ZQUUxt6aysmRyPu2+WihP2aCLuI/O+C4d2LP8D/0+i3IixErPfjb87Gx24USsH0zV6C02hGO5qF6OvM7Geh23dDc2ZoRUfQaWiASPITByU9Re4YvF6v1z4rDHbkb5LLO9y4KaLr3NeUgbwsn9P8NuMcxykORZWWb20Hs3z5OJOu8tWTcI9LTWdcM62/EzYszMtKJHK3QRgiFCQhDNkFfgUTPbPlXrreSjd8S4FADuoHtseeGBH23Fa7QaTy+5Id643W2Ey/CWn9/tqI/ltU47nxq+wGtg== 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=AO0EXtnVfLg6kEXCS0Y0olPPEAglK8TV/kdAQgcySC9QNuf2WV+n27h2ZnXrZ/ItgLKuv9pSu2lrvxGkZ5vqk0Kvnc1P78l8oV0cm7k90zRm5ONsWSfZs0K5PZvRE28rCnLpNbeKeKvNv0fWPiDZZ0uBTTA4HYR3zhDgSJYQRdkPCYwECYjsdwRi0+FVShD35dUmU8h1jyDLoX90N6lVa1ff1PcmKlZms7YP72NGgQ83PB3j9cERYV8numWLIpAWCmodncQvgQsyXo35lR4DWeR4Blp8l0MvgMUpj1ouWUzTyx54LlxXAyurpskvzUWYfXOP5+XJMsOT/M+G0wVxEw== 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=mnGlK0AQ+WLcXRFSZGgJc69GfXRvwHmsXF2BPOX33DC9oRQRspnrTUL/CH4iL6FrVBzdmVHRZV+tpFwJ+ZayNDA2AspMcqyQnBazKaKLCOAaYCMirfhvfC9HZokz6iFDlbzitmEpDaZwDO+q8aK9ChYaDou9Rv+vRBXglnm9aU/OFUxoh4bbM/xUirWtjdnRHJm65qL4A8nJ3HIHh7TqM97kUVQUS8SaB2kkQVuGAZyjx9v6gy9wdAb+IG/Me0vm2QAFTCgBiAH8LU3HhjCvXVGxY5SzTlMJnvN26cz4kM2/Fa8b7JhDzh3hjO4KSNIqnpBUmcTwo2RwCFHGIimuxw== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by SEZPR06MB6383.apcprd06.prod.outlook.com (2603:1096:101:12c::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.32; Mon, 29 Jan 2024 14:54:53 +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; Mon, 29 Jan 2024 14:54:53 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Mon, 29 Jan 2024 22:54:29 +0800 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240129145432.9053-1-nuomi2021@gmail.com> References: <20240129145432.9053-1-nuomi2021@gmail.com> X-TMN: [xniwsNjicVfxZwMyMG4bfvCezulJZrsN] X-ClientProxiedBy: TYCP286CA0232.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c7::18) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240129145432.9053-4-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|SEZPR06MB6383:EE_ X-MS-Office365-Filtering-Correlation-Id: c0998d73-ab8c-4051-2fed-08dc20da402d X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: O5VrpF+PxoMIQhK3XBZqSS0wn2MXzyPbgi2v7GECKPWvYIRFg+MabIT39rAA2/TeIt+8jBf2HOOG3oIdMkePx7wrHOA9ie4sbVv7olAA+q0jkhGlP1Gbza0uwvBin2Gl3P2GB7ahnVNcqwA6tX8J3DaZBJTBBIVRUYwPr6MqAh3vkgChweoCUw5SwTQho8nKBqbmeWEQRS+5PmHKyWjcDmYkPwkTrGm15S5e7EK5ahNb7s1HcOBs1vCSgRo93d4XMiQgfCFKzYye5AClI+v1J5Xl4vRHD93NWhGQ1iTDhs2C9Cxc51pHhpx+CFOfVejdtokJ7abxV1cQ8cQ49sTjVpBumGCJKcMi+EODaFxLsr5TFBLtaPzrv9CMEZG2Yhzw5L9fKamlQ52q9AOa7p0NqRsluOj1oEb9xO62f6VDVm9eNwQ0mK3d+Gnn3KlM/z7Upe4zDN2Uc8Afe/VskyQHJGeQt4EpFGUwqDJBUh6SZedggYZIb2axRCLzlwfDjpTy2r/yRKf4nP/hzeOL8DF6/hZHp0Mvfgxn1BfXRhkMLb9C1Dit66iUmcyKjyRmRzV4hYjrJUaO49sa8Oa8DVYJ3qrvbElxeE4lPo96YUgi6dfUUv5SMrTXNnej/2N2PlPp X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 95ABmo3zzdM7aftasXTAW8R2HOSGuNBVw6wBKDhtehFs1hWML51ym2qAeXH11Oe4qTRtXWUnxdTAq0jPVtVpTk07sUvdzK9uJdaxZSkwmWwekqXwde4J1Xli1MlY4pmp2muhM+CpOPKjYHInIcehN/G+pBB45ES70IRwNjVfw4rwdoofZhjFWQst7ldhybgGqYv0nAoQzmUZqsMNFLHgNws+LDAknPlJElEHXlFvJ2SpdZWnn7nlbXwXSt+bKF9ZpgalqJPhIx21RMO5WWuxaih5UPTcDtPTktHTqovxNjmaqtN3R9v3q4A4paeZOFF2DIxv1l6nlMgOOciAIdgY+DMdLJ244lKxXrb/bVgvZIQ6nfKSDY7sQi6Kc3nMGiQ0j+Wcn4k5QRi4d7tAUOiYccVd6h+PhyC5JmhWmAOqj6RM96AN9VgeJrx0OHC67uAyxTzNHLM81LuC991CpB1Ik6mNyBgIGomCYnQigRCFbPH0RnsSmxrcDK1jaDcpGMUYW6eFzIonf/vZXGdHzZmqhABJMzR1WlcJoMeNjOTxAw8q4Hi/b8eyAuDnZIYk7DPmEp/MelMuaP4u8JEDOwE0jYbWo7EGWtBwGlbXxx+R4Htwmw4ie9JfYoM9joqGzPzuUq3qZTCdWnCoL1IHk7VYYaRivHByK2QpmuosRojk1XUl8CSX6jKUq9ri58ckNB/GsEYCSFYcrEfwXSj4MKW1oKxQTAmF6MSEYVnM53JA3FCj0o+CY1bvNezWidLSzOB2eDmkSUFLrM1mgsqzmWFbgocw24SXt2+vRzh/uorbHN6b9rF7sKUD4CquSTtTaBFQbv04O+HWfrPUuOY9Dp2VUA8vzQRWgTVm/nGABEDIKB3paIbRZl7N7agyOIKCQsaEZeTHQN1N/RLFbWKEyFZ8TzlvjKgZOA4HMTifWDws/n49m1Mo8BIwPv64jq+RYY5MAKdiOe7LioGY0SZwrDxoo16JclNRir4YfJQreHVfEteYblj9Rlaf7LCxauH7MO7tKsjo7bVZMgWnoRBkJ0bucySGNNSUCxajPbL5Toi83JQkgNi/HY3OPJzsqLtt26WuLSEaOO+AbF0uYA4fVoUkv1Qr1uGQjUio0GtezDBtup9WzdVXC9pFBlnKv7jRo+MZzS/2Y62JtTeSfwvNOGiz+6oZE8FZjP3qfk2BoUyqno674a3091DWuZxU9IeUIDZIC+tZTQLHex+8hZ+FfUzlI8s1a1cdD7QjEW0Qf6dPHyYXqiC/W6Jn3/EpeZBOVuk5 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c0998d73-ab8c-4051-2fed-08dc20da402d X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jan 2024 14:54:53.3353 (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: SEZPR06MB6383 Subject: [FFmpeg-devel] [PATCH v4 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: ApQisEOEfQAz --- 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;