From patchwork Mon Jan 29 14:54:28 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 45882 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:8786:b0:199:de12:6fa6 with SMTP id ph6csp1573515pzb; Mon, 29 Jan 2024 06:55:16 -0800 (PST) X-Google-Smtp-Source: AGHT+IG7JRYh7hh+nNXIYAWQFc0WIlVLR9VwtDhN1el/K0ovA9pt6Y9YqbheHJ1QyKyi7KY2BmkC X-Received: by 2002:a17:907:9485:b0:a30:d454:58a0 with SMTP id dm5-20020a170907948500b00a30d45458a0mr6036375ejc.5.1706540116386; Mon, 29 Jan 2024 06:55:16 -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 v14-20020a1709063bce00b00a310231005dsi3472749ejf.637.2024.01.29.06.55.15; Mon, 29 Jan 2024 06:55:16 -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=qMGPma+H; 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 6D8BB68D202; Mon, 29 Jan 2024 16:55:06 +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 344FC68D164 for ; Mon, 29 Jan 2024 16:55:00 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mWXh+B37E8NKG11rcBjJyPRRJvnpOsi6JI+Ol497CUFCySf+zgQKkXMZPpFfmmPLNpsSpltW9xFodJYGvtEqmXle+xipSpQe+1kQ6NqnfJdmRinZz7TDfZ/tQa24TZxQr/gt6cMR40zLzGrZLkkpw7iOdM4H1XTUaJdfrzWJSMB1IA/mILNrN5Ykc5gPdfF/EvoloCLbkvv+uLoaTW87cIpFXQYACUv5LWVf4k3wCoroIDOViqYl8yKJMBDxvr73L/uI1xBnNRTjOQRNAi/73oaK72giE1NaoFuKGi6j6EYAunuqPIn9AYKwQ5IANYT5NmHekq4pmI6SzSEFKgMAOw== 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=l4LjObjmA5n/06oN7f6DOnVd8fANF0gDN1CEocYblpU=; b=a+rhcUMjhMN32PuqNhwb4TzCy8MSuI/BAH2GRvUjR0G6e8KVDXGjZ3cTEPWZ23r1D/Hdq0+9IRh3mDLGYJo1bn6eOSJwSixbmTARdWMSvkddEMGXZ9qvRnVWV5vpB4iDMJku52GEAerO3DEQ6dGVbL6ZSxE+nVqK9m+Ho2BduiKjNfzJS1Dd8vKzBeiegUKFTLlts4fYFwmdQ6Zto22H9X45vBKioTl1EVInBuDo2xjfzPB/rUzyW2mpJC6puOFc4WILnMP65nG8OYfrHJ892rDnjvK9Eq7wTzcVS3+7/ae5WjooKy6D2nK16B4cZTZWLpX0p66j3k0dzf3Vkgz6Tg== 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=l4LjObjmA5n/06oN7f6DOnVd8fANF0gDN1CEocYblpU=; b=qMGPma+HGhnFUq3fRsRYUTueh9ywnI3y2xXDJJt3eumT1ALABXhES0CZikFvJF0oI3Kx5mPGeLroFABIAWzNass/p+lCZYiba4HDyZlfRJNn/dqy01EhIQXlXk5b+/HAFaX95tDSmpclKeJ45sFmC0LO2cgnt5N0NOmtdojLf8ZEZtVdAH/LQWAUs3b0s0EbiYFjLKhGt7TyDsrfsA13TCuK1TkU78AFyQ3r2+g4pCxq5FolxRQtDp4YL9ptUvph0JIkqy8TKNFxAStfkr+t3dIV1PZwP2rkPNER1Xs87hCXSUC4FmIYkihE4DhlsQsxyR9iskj3+jNg7j+P18cP2Q== 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:52 +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:52 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Mon, 29 Jan 2024 22:54:28 +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: [J3eAKbyyjEMjFyuMcBg4NiIJGgSmKBMG] 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-3-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: 6975ed14-fc45-4a06-c6bb-08dc20da3fb5 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XOq8w5FKBQUBVB41GdwxUbq9eBGoJdNIqkeMKJCqDdQAPC5w/PeXugu/sfbPNS9uuOIgpqkBlUYmETd/Mj7VCll8Il7y95JWHzn7b9arOamAJ1llkiYK2boqHVrS+l0mv2hJlKKKshB1fHAiMeILOxpILKIt7jnSfMAo7/KCG/e7/n1VmFc7vUFnSHAaVOyOCkOT09BfrR6ziimlWvdkTUqltSBORFuaIiiRqRa96NbisfzqqxjYRMmgL8GzKmOYy6EuMSWgq7JhFQsUQSwWsxO8huS8i4q4UQ8aA2y4hliyQAV2fM8xQ0IBQDskbz7CwuOugdMym4HmEqwhnbroSE2sU0MK8VODJ2W4kxnEo6Sel57b9scDvSdcH4KLcpuKdjkiuDgV6IJMcQrmti0eahMV4TCudZ7SshKvsduHZCOGOMqY1qw7JM1npPaO2bPlIDkxTKRcF4RKQepJBR48ABJIlmyljxjmbubKoZ0zsNTaOHAY1mRMUfmTLKXrn/Jizre5spTqfyP40FoJPtVaRs49BUNvuZ+Vv+PnuGkMCBk7PQqOcJp3TDfqDuOIg3hXhpfylJQY5kXVfoThLfGWdRFCJaHLXc0PwR8yxeXVYFS/yg3M379ztH0Nxs8r+O42 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: KcSor/GZxlgKZVlezbcpAcZcf/OZBESHeOftmh/4Bbj73Ghf2JZim3yoJkjfH4YBvX3us+RoPgCiIdrkXXtmpkjS5COy/U2JvqRQou3/8iy8xe88OP7j0qLPf0S/hfb1gO/T0UbbkqPck27GWAzDl5IwA8ylFKKOnI2XRG24eqrLpZvkTEgBOOdbHV02iDWC1dj0gnMJfiAxvR+Vk1YQ40digpqFcAbwulXbmGVVbpa2AKb/gJfvz76yGpgZJkJzsUgPjFWUCfrHey14H8eDidAsD12NI3NexXop4vVQRyXGKxoVOIu517Rt+B3yUffxva4IAPw7kqJcDMY6VjhovkBNWrfE7Xlr1bt2OLjKLirHsXGXlFrE0jaZoo2bj6DRekVKTXXZuHHxOX+GyrtaXu/yJtpwyPIpIdCPLe+Lpw4s2lEQ41RJdq0gsTbOMt5bidMGJ/quD5h5hFkBJajF8u84FHDmnMpYagkkXo3I7IfJ+WUInDtAE3wX3z0LdC8m4iAQPtmxzFnsp2t12/TtT507N189B6Urf6T2ZEPpjMiTCRd+FPpMv3ocRfKzp/mPXNrqKA8+QQUZQNxvpYkPys4iLqqDAaLjTlShVKNJ6LjSerOZDRO76k/WmcZ+wFQ/zv1KIFKvhoCOxds5A+DfBMqfCqG8HUyx9xJ4gSYFjnC3k2BeRlGHZGJaG/IvjRKIzz+gHcahCjPjmIqRwVgC7j2Kr2kGrxzxvN6rJevjiqaf+JWVfHPSzFcid18htnKBb9E/X6E2zOXBVNtJLsyQ3EmYAq9Onx07zuyv1EiCVMFy513B5HkLSeWTglB4mg3+l9KZq+54TJl6ntHdtCkpHRY1xr9OpIy3fgpWzI6O5Nr9zm5md3hEB278cX9MatDgP9Ykb2XJAVVJ7kxX5Ep9gV7fb//DHUZl31M5lPl4eDTSZnJCdU/bquGH+wLsNY8K3qaT3ucJI4KIO8YKApPMhbMnO3R9Xf/hDIshchaMO8SsA7KGmB33XJQekVdNUU05VyqPSqsroOlJc4EdrOEn6hktRVIQjaTrXThRg1UkxTuLI43PDXV0rew0kkwE3impim9glGOc4JdZY8EzxDk02tgt7nFucLekGQZdnR7t/gZNMH9Uhtoig0pa5S6ShqAsTF9f0oQY2MT4gbmLfRt36GOHE2sdl3eI4T6ODQfD8O9kYz71/shkFpUtl4DCsLZI1am44nSXMh9DBNNmWth9XKPAGYLkl/KQotYVrGSeWvmkr1sgZfNfnU16ztf5a9Lw X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6975ed14-fc45-4a06-c6bb-08dc20da3fb5 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:52.5798 (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 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: M20owXlykmfp --- libavformat/mpegtsenc.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c index 84edd418f0..4e5c264d2a 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; + const struct Entry { + enum AVCodecID id; + const char *bsf_name; + uint8_t mask; + uint8_t value; + } list[] = { + { AV_CODEC_ID_H264, "h264_mp4toannexb", 0xff, 0x01 /* configurationVersion in AVCDecoderConfigurationRecord */}, + { AV_CODEC_ID_HEVC, "hevc_mp4toannexb", 0xff, 0x01 /* configurationVersion in HEVCDecoderConfigurationRecord */}, + }; - 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++) { + const 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->mask == e->value)))) + return ff_stream_add_bitstream_filter(st, e->bsf_name, NULL); } - - return ret; + return 1; } #define OFFSET(x) offsetof(MpegTSWrite, x)