From patchwork Sat Jan 27 04:15:08 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 45853 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:8786:b0:199:de12:6fa6 with SMTP id ph6csp370543pzb; Fri, 26 Jan 2024 20:15:52 -0800 (PST) X-Google-Smtp-Source: AGHT+IGfAX/+19XZ/8uFse8fV6G15uY2DwnkUHINDEIFewEe1ueKPF2o18XFKvKcCRcb9Y4drZj1 X-Received: by 2002:a17:906:8888:b0:a35:2758:2278 with SMTP id ak8-20020a170906888800b00a3527582278mr363520ejc.10.1706328952054; Fri, 26 Jan 2024 20:15:52 -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 j5-20020a170906830500b00a353eb581e9si221599ejx.70.2024.01.26.20.15.51; Fri, 26 Jan 2024 20:15:52 -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=qPHC0mPX; 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 E46E968D15D; Sat, 27 Jan 2024 06:15:35 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from APC01-PSA-obe.outbound.protection.outlook.com (mail-psaapc01olkn2042.outbound.protection.outlook.com [40.92.52.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7FFC568D154 for ; Sat, 27 Jan 2024 06:15:28 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BGGTJ95jOhG471lcAv5IZwXplXb+zQnnUUUMCEBK1oOV+7jp92qOL962GBIEvrNseKN8yTST1gPEE69G3bEl7XuvHwSC9xLv938YDp/fMKaqyo9K25LcVpQ5iTqpwdAKl/q5bGTV9BHVBYrvq3pMmwyPhT8ku6p9PlgCiypChWFdJ/C+Qh2Or0QJe6bj8Zc77J8QBJ2HAJdSF1MQxtjSRhlprQN3AIGF14vXOzpgAhl2okh2763E4qPBh6Nli8V1kuoyxvgSfheLGEZlzuBDxNJxTTk3x4dw2cbLqWEy7OcgUSNG88LAmh0rPxKoqpcxApDZvPEZMJQrOL9usUr/gw== 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=Mxv2+KuPneFh+G2G3cpQYne8Lqf27tR2FBX9LWSan0w=; b=j8cAv/vx/nXjexbad5o+iUFZs97CqoKO9Tgt/aDaI+SyQIcg3AXaZzGeXUYA2b0B81StPAtFIXTdChu03GS0vwRGaN51QkB1v94RVreXHORamQURjJdE1ykkkaS0UNJsSWJ+qci0YMl2+LUXyoY908wDd/j02x3L13JMbyjf+6vALQ2C1YkwZ27D7EmeKLp4K7d2SZlPADI//tKXW9CBkz+4Tmv1T39T54YALSMY1UJr0Ytd8120YFHSEdcZfWkTJ8urUF/xgQG4wuAGLM5DJCDlN4XieVGzLkfsQjCbCA+W50TlxyuJadBY2ui+M0Oja8z2qTGuiy3Kl9VZAtnvaw== 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=Mxv2+KuPneFh+G2G3cpQYne8Lqf27tR2FBX9LWSan0w=; b=qPHC0mPX9HQNVJZqW4ywF2VGedoKlrp8NeirANfxUsTT0DIH8Rg7mVeJd1tkNHH66zFrBjh+jFXC4RP75X8WmWoe591AXrbziNhEuxdsmvolcqGrwOa+eGysbN/1ihfMmwmLbHxA7OwqyeDOUGcOjRYL0VTgvMtNvhR4y8t+jwOzBHW2hZdt2rUzhyCzDDQ/tfT29YA2HS4EvOgdi8Dx/UzNdfOokjiwyiTf3sfP0SOqd48oMx2t+F91MGSHqRZADtciMGOjehWbEOKejKEH2y1l9RNZQlAFoWVtZcQczBxmBlxCO6QcxyXo/4hRjAVfgitFz8O0J5E4JvpE6UDTrw== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by PUZPR06MB6068.apcprd06.prod.outlook.com (2603:1096:301:112::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.28; Sat, 27 Jan 2024 04:15:17 +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.028; Sat, 27 Jan 2024 04:15:17 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sat, 27 Jan 2024 12:15:08 +0800 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240127041512.14079-1-nuomi2021@gmail.com> References: <20240127041512.14079-1-nuomi2021@gmail.com> X-TMN: [SYuf6cTbmtIBQEUQZaWJx+eikUqEDmb6] X-ClientProxiedBy: TYCP286CA0165.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:383::11) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240127041512.14079-3-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|PUZPR06MB6068:EE_ X-MS-Office365-Filtering-Correlation-Id: 6770f2ca-3f97-4c23-a769-08dc1eee91a4 X-MS-Exchange-SLBlob-MailProps: Vs63Iqe4sQlWSIg1UbM9To69ipPieoVEYZ2W6zxBBcjEOAHxgeolSDd6zpTYmcLiwR6AbGgkxRuhclWTzb9qQpIfsDHdT0XdIXHiROAeIcFwsWlRRQebjOCz8FQUD+b9GsNmm9nBbGwohM6SYba148wyZ4gvN3gV+lsd4M+TuWy1CyQj0uRAL+tCz/F+Tvie3w4kwtst8AVCkOnegO5zPCh8K7xyl/jVcKigTlE7+D8RL3b1/bOAUFuq/i8zndYGmUyMHYkXBTYvKIPvE0cCKMjQTW+AQeBbrB0EuE3kdGhJUMtp+Y5m/kM7GrUm8PWNP3m/WpnTGmhXYHSt8o3mFsb+Vtj9tuWxj8h16ooTai0A026qECsArHwTwCiMP9WJBQS1C2pZnPVhXxK4gqid4LQEGyqMsgYnquA5lyC3uZwISMytHT+Y32HbPaVWRk5z/632F+QgBNlInVn8dqu3A/G76uqSp2Drd9CL8+kgQynxkhSDy9wENSK220Bj6aE5fbODjSba0xbe3lL5Qa8lKz1FBXt8VLiinous3i9j5ylPk4Rt/Illa9d634kr6BdASGbTF42NCojghJ9x1/Amp7D3jDcppZ9tFyCy0RUJ1A5bhPZxKW6B4JpFwl0EY+7S5eZsOFmJRg5bU1ueozAMF6j/PuTEg2gSyjzq+rUHykiC1P4xM33W78RuL3/EvSZ5yo6pk8rsWlSE2QqtSOtsq/kScOgM2Jlk2Z7G9IzomkU= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ssMWA/jYYQN5z5m92SHUyLr16ZU2OvT4V0Ht+fHfzcOv9d+QGnBhVLviW3MJXpAKBfSJ5azshKNM9JMCDybf+aLkEILXe57ikE+Hca5pVFJDgb+NrFAmhHlVjCAMYAyXGAIuU+wBpeTD3kqlT7j74dyhPcCaVOK49Q4uQP/EqdXv2blDp6AlTfPRGZtx+F1LKyuSRDsih15dzbgfMAt1vdnqu8k50lpUw59BpPjlqfTCsxilNBrjcH0VPM+XuA4b1TJGLraSHNkcl6rSxN3riBJqXNXb/6p3kUtbo6+0kiCtBzVU2AFKedzNlAVMNzvZIKPcCgnfE6A2CMDdb1i6lKF0yVIqDeyn5I9LwDp+Xv1ATLahILe+QxxTwnfj065Y12QWYFolMRlgV5OZeD3Yl2rEHMCNHUcjtiAFuylS7+66B9uCps7gVu6znbJ23H4ZhQJOAhxG5UvaWyAU1Dd41H6EUN1J0CWA5jW8IuoQ7lsDjubTapMZhJ6ESS24lFT8/UOiXxWvcj68GhD1XfH4ZpU3l8DPyj48pfLalmjo1IsqYUASUkKWFEkxnSKDX32MPftObSAIUWnrlNiJvI89I4KU0Ab3DSZEaNjJghJ9Eu0= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: TLSFNpornC1N0VXwhKIyJ/SLPUSxVB8u1z36jYFPmw1wXkCn1+EqW8U2TXuTpdBRZZqYh/oVx2DHqhgsECg9Lqz0/7/iPqH4m3fmpd3jJsJ9zWuKpkAOyhrX4WdisAHc5FyVWump4t8MTIG0kz3oz1xBlDopmZPd5/a709c7sVsScoCkKnKFR6EJmgd2qb6rWYo3dEJfuaQLg51dTrXqwfbjAntEQ3ENf2L0U+HjYkvsnxHP1Q961ZNg/BM+nNGlJMl+GFOM4XFrLSB4piOHe/SWIeOTjJ5cgyXwyVghXnX7F1tALPibfBD3B79mRCwj9vw/LH3yMratD5GcUWTHfYR7h3jxxja4ODMb5ZR+gw7arnpkzHMLK7CMxeR2WMISGFDr44fWPdiCkzqGgCARv8OwfAITtzbfBKi4u+a6cCi+q+pv00wLXQyb3lPXH+0CJ8JCYmzqukGdQSyH2iopUi/C0ohWoMk62QEXF+Y0wV0A7OaOlnJzRWBMOEnhjdISeFSaYRLGCvZM6QDeZV7BZ9oW5RSS/+wuTuh7mRKQI6V8+Ixn20M7GLJOlthCPtrdBtUiUl/Gk16LHtZmQyOtBgFXYSh2vTdIwHvbUzfxI7JhMVwSeZkygjAlWgAYc/d6FsFiLnItD0d6kJ4bVkag8fJQet+5/CFtk/JVzad0PnaHlprQAajIZ7PZ5Nz3TIybrISyb+SwPwN4M2euPpCXXL1ySpaoTiJRL8Pc+AbUJ20Qtb04vW/8QL6ka1RjxJDlU9N944NJkNwljng3BPwE6LLskwZA34OPqr+QWAo/01bi8nbZLkUsFLsDTqZ2zqWIg1nqnVjbJrc3iF73jTTheQufgJESb5ZQwzaylNE45kuh/aoe4orqcLlASbwnRy78ILZ+V46zWpVE1mOyOoy3LTeigqZljBPohWPNvjORxo0BzWG1Yb9aXQA1N5j9GVFDr05YRyt54CL0PxoaQi7a8kXID0upsBBh5UoJlzWxbsQSBkxdJxBX9uyFaQ+zhiSYArChJ+3Co+WJzJXYNGgPNwBlE/XxHPjj8EnK73vS9VXmHJHW9MTfy0HQFJg7kVb+x+BK5eCsOL2T4JpXLDyTwjWfJRs3qgG+64pmnE2/2D1p7wCrXAkrY/dSWrEloU+eOQV0E7L5sHtAokN6GbMOhw1QNIXVAIiSHjl3Bo6hUkCGtLNNbwhY1aqtQH7wXbqHymGktLlF8yN6ygAvfSKile6LTOS03vrfjrm8k7ET01muW49hPGQkde6RC70CkzAZ X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6770f2ca-3f97-4c23-a769-08dc1eee91a4 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2024 04:15:17.6849 (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: PUZPR06MB6068 Subject: [FFmpeg-devel] [PATCH v3 2/6] avformat/mpegtsenc: refact mpegts_check_bitstream to loop up table 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: jVbeLHV1Ggjr --- libavformat/mpegtsenc.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c index 84edd418f0..418fa08ad5 100644 --- a/libavformat/mpegtsenc.c +++ b/libavformat/mpegtsenc.c @@ -2257,23 +2257,26 @@ static void mpegts_deinit(AVFormatContext *s) static int mpegts_check_bitstream(AVFormatContext *s, AVStream *st, const AVPacket *pkt) { - int ret = 1; + struct Entry { + enum AVCodecID id; + const char *bsf_name; + uint8_t m; + uint8_t v; + } list[] = { + { AV_CODEC_ID_H264, "h264_mp4toannexb", 0xff, 0x01 }, + { AV_CODEC_ID_HEVC, "hevc_mp4toannexb", 0xff, 0x01 }, + }; - if (st->codecpar->codec_id == AV_CODEC_ID_H264) { - if (pkt->size >= 5 && AV_RB32(pkt->data) != 0x0000001 && - (AV_RB24(pkt->data) != 0x000001 || - (st->codecpar->extradata_size > 0 && - st->codecpar->extradata[0] == 1))) - ret = ff_stream_add_bitstream_filter(st, "h264_mp4toannexb", NULL); - } else if (st->codecpar->codec_id == AV_CODEC_ID_HEVC) { - if (pkt->size >= 5 && AV_RB32(pkt->data) != 0x0000001 && - (AV_RB24(pkt->data) != 0x000001 || - (st->codecpar->extradata_size > 0 && - st->codecpar->extradata[0] == 1))) - ret = ff_stream_add_bitstream_filter(st, "hevc_mp4toannexb", NULL); + for (int i = 0; i < FF_ARRAY_ELEMS(list); i++) { + struct Entry *e = list + i; + if (e->id == st->codecpar->codec_id && + pkt->size >= 5 && AV_RB32(pkt->data) != 0x0000001 && + (AV_RB24(pkt->data) != 0x000001 || + (st->codecpar->extradata_size > 0 && + (st->codecpar->extradata[0] & e->m == e->v)))) + return ff_stream_add_bitstream_filter(st, e->bsf_name, NULL); } - - return ret; + return 1; } #define OFFSET(x) offsetof(MpegTSWrite, x)