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 CCCEE48E64 for ; Mon, 29 Jan 2024 14:56:03 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 89C6868D221; Mon, 29 Jan 2024 16:55:18 +0200 (EET) 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 53B4C68D220 for ; Mon, 29 Jan 2024 16:55:11 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PodDzaRx+6jt3nXzccu+bUl+k0GBP7sr50DMUpm49oU3LcvZ93zVXjcIfrBqeEMedBKIQYn6imjxcNh1I/aG26du2Kk8diEDkLhHnuU0hXZgYRaB8l0x5XHg4aGkTLt9HAx3TiRq6JyFNS9p51oAueDIToUNLrLjenHCvsST3yvA6UjfJ0/Cvja9hNyYUKFQEuYNMrAfnUxb39t4QoeRgoqWwYv5VsDU9LzydTrJzgdsWMiubRTW0Diod69NFZD3D7mUXBe49zd8bmSsxKW4w3LPVZbE2xwyh1x2HhE0X3ZfCAuOPLqfI8I1hp14zzgXyUt320Q190wAiKtD5sk8zg== 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=xOZZRHDYD/OEH+YscTPOdZP6Lj7h/4724CFU1yDDs7Y=; b=SwxomdN/oFWZUZGjZZJ+DlHc7LOx1BWEyDvdYI2ZrnWc//cAIg970TJL5c1gLd6N6xV2mdApKWQ4fP4XIRiI/EEq+mPunFGzI5cFavttaKkJlKmJaItR2OOlKEGbgiPesP2pFnUDJ8bXfJjuNpWat5jbVNV7XvYM9KGt/wYJlP73ZeR/jXudwK8bstoKZEWjS4CVqCBTHn4DMcQ9j3D5r2nm8kynagEbilu3uXZmgdapQjsneKL9b3NmC78TaLvbEn61VAuBwt+t5156JXC36NGXtBcbVLTN9zrjkNrrObKb+tx8TUPuigYY7cvgKo15y9JUPLtol0Cy7ezXkMHttQ== 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=xOZZRHDYD/OEH+YscTPOdZP6Lj7h/4724CFU1yDDs7Y=; b=ocJr2bQqVdLgaHoJjh6mXIKXuyruD2Jmk3NwkLQFbzl72ZFtw+v9alsskPAoDpIUcFCoU9wmrdViWa1NIkSOmxdImdeSdfEVhj0DMGLcbRu/hwyCvAUl2a2OW0QusEAAQQz+d8NGvR180RKw+3xw/DrQxFUSQFLEs6jYEPd/5BwiQbt3UQgRnC/OiihCIT42UVpup8fUh0IHW2h84NOxz0HyAppDniPePCZ136SHvBDiPEekuzr9iS7xjBzQ2/9KaqT6fWc8a0wa5rpCBEIRz6F4CuVj18QxWD8tVRjP0dlBTJel7ElPOsqOGGLa6CHqj7m9Sg7t9oYxDX3+Jq38ZQ== 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:54 +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:54 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Mon, 29 Jan 2024 22:54:31 +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: [Yo7bHaKs1ClCWfhZxfYwPp61ic1VJcB2] 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-6-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: 2cf56393-effc-4408-2d83-08dc20da4117 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XKMPxGMk0ZMv0/+bjqx7Q2/JirZokkorWPnJMGOagPiVH5c7tyUC4p3+A2DA7rMZOgncqT55VtpkbXLeqCX/EuufsBK7uOoiYoo/uareis7hVoZcQQn5Pngz3IBnuAHTKsPVX3En1kiMwbmlzezRs9qvdgLN0/mxKTPDbdGgP3fVr0AMKJJpoZTjke9bdZUS863hYAxHGJitn2dVB2q2jXQXgqKkAHkID3CkcU2VlNMfcFtGugzv59sJmDUhY1aNLL/MqG2hZ7DZ/h7y2u/zpK1g2Bd+6PRgRLCFFFqmLWZEHWE3A4IMXJ8U9Ed6BENRCgCa6F8kPpca5zdqMC+D5IKEnA2IBe+iFykFpm2vp9S5bH1Edx2EYO5mOZRg96oUmx9+tD/tCDy9J1c0TZRxZemSnclVnw5KIhANwUmffmLM8rgZPL3vkFzSNIX7J4mxifrNvtfrPdm+yYkSR1Bclj3GdNbfMsB2WFjWaSwqUnCaE2o8S27zSgUOPGc4bIBRHhjQD/SZ//0ojjKK2o5gIasPdZ/TQ1WSCK4mIxrawW9Y+Tg+IFeK86apzZIgzL8yi7Q4qY0uhK4zm/wxzmpHcry+8CFByCHmrFwwJ3jHlwC2jwlfivvfaGhWxuu13mYM X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?lsgz2AUykvA3z4F4357tnR9DI9nE3Z9BbMHGXixAPZ4rGrH3VYTZps7kkZy9?= =?us-ascii?Q?iTpks3EIFLdbOeNnoh7EVkaxgPC8iRedjwl+eOvm/m9ZyyX348Gww9WaUm16?= =?us-ascii?Q?QuQlNZ4HIAjY+msoXRgeFCv3FWjLIQTknS3l3NNa9O/0qHiyW7b6UQ7VU2py?= =?us-ascii?Q?92oB5D1K3rGgLBqhUS3iz8RWvO3Yh6u9iKmCFz0IOfhPJIGWuzqRshCt1ttV?= =?us-ascii?Q?LSQovdbJl/sOXvUYFke8K7IEpEvu2Ck7QiPbf9aTDhyU4ecBcvQpN0hmrbJx?= =?us-ascii?Q?ORDqEDnmkr+DAee80k4Q1Ub/6mQYeXeIDI6NKdtB5DRS/I0QCcKL6GOAP4eD?= =?us-ascii?Q?5QgwGSYA4FurXWAI6yiaWx4MBWJjSaPhmWYfcZbln5LhBLc2fcQtkIbywjwJ?= =?us-ascii?Q?CWQuT+2bKI0dKHdhnwxF+Rb9yhtoapJXHra8IcppIFXtE8nVCj5wt12OWGhq?= =?us-ascii?Q?qBLRRNO1bcg9hzVX4aeZ7SBaGMtLedfXyG3/r+OX8p42XGdSRchkaP9OhSls?= =?us-ascii?Q?Pv/LnIrtKcd7OUmEWcSIw1XykbfCA0axcR3/HPSiRoBW0HqsGeViYuu76lcC?= =?us-ascii?Q?o/R0WDD8UevwdCcCjmz22Z3Xsq2v1H9M4chYuwM+RKdGGrAQ6jiIy6bbdWsf?= =?us-ascii?Q?mOYJ1S8NLGoFD03GDQYH7dznScamchFBWoCdvYSNKatQNJg01y8q2pXctXfo?= =?us-ascii?Q?G/auKUG+cTCcgnhW28+a/mkUY8Pm8aNzUKloc1DIcOYOo1r+QFicv2SxvytI?= =?us-ascii?Q?Fzy0jko3ed9biXIirEEkeBAu6zv0Jl/LgoKBeEVk23fjiQX/WuNIOPJ3UorT?= =?us-ascii?Q?OWuO2THzZRHjg2W4pH5N3LKFSJVA5WEO1O4GOEBWKz8YZL6p7pI8s4IDmnB5?= =?us-ascii?Q?Uem+wtYwHymAqc+ORFiL6G2vugpJCQuMjDq0qQMCynpTj2nAukZRv6Ka2S2g?= =?us-ascii?Q?mUTS2fFAsAIvzX8KMOO7N/QCb2u35G+mNoxyDEjYF8uL/AJtkZxe8g/NE8J3?= =?us-ascii?Q?2xj7CPZAgQSMm5vF7zLW8DXK3Js164+Pur9a87GiyFhyWzvaRmS/7Y3FPJ+a?= =?us-ascii?Q?jG96gJaXVhnaeW9SB1vVu5Gp0n0N5N+H6HCq6FlSYecGgi+gcqU05MW6t4p6?= =?us-ascii?Q?Woi9JAJ1z2a0aUyyeEyQwHLnOJbPFvy4m0jUamnnAc2y2VnyiM1PUh9/RoWe?= =?us-ascii?Q?7X59MuCL473Hr56o/FPUm8fffQ1ZJu5ckeUetF8eitwegUfbFuHMnsUlq1O5?= =?us-ascii?Q?rANYQU4N3gReU+75xocz?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2cf56393-effc-4408-2d83-08dc20da4117 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:54.8752 (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 5/6] avformat/mpegtsenc: refact out h26x_prefix_aud 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 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: --- libavformat/mpegtsenc.c | 45 +++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c index 3872be0f46..7bc3feaef1 100644 --- a/libavformat/mpegtsenc.c +++ b/libavformat/mpegtsenc.c @@ -1834,6 +1834,21 @@ static int opus_get_packet_samples(AVFormatContext *s, AVPacket *pkt) return duration; } +static uint8_t *h26x_prefix_aud(const uint8_t *aud, const int aud_size, + const uint8_t *extra_data, const int extra_size, AVPacket *pkt, int *size) +{ + const int sz = 4; //start code size + uint8_t *data = av_malloc(pkt->size + sz + aud_size + extra_size); + if (!data) + return NULL; + AV_WB32(data, 0x00000001); + memcpy(data + sz, aud, aud_size); + memcpy(data + sz + aud_size, extra_data, extra_size); + memcpy(data + sz + aud_size + extra_size, pkt->data, pkt->size); + *size = pkt->size + sz + aud_size + extra_size; + return data; +} + #define H264_NAL_TYPE(state) (state & 0x1f) #define HEVC_NAL_TYPE(state) ((state & 0x7e) >> 1) static int mpegts_write_packet_internal(AVFormatContext *s, AVPacket *pkt) @@ -1915,16 +1930,14 @@ static int mpegts_write_packet_internal(AVFormatContext *s, AVPacket *pkt) if (!found_aud) { /* Prefix 'buf' with the missing AUD, and extradata if needed. */ - data = av_malloc(pkt->size + 6 + extradd); + const uint8_t aud[] = { + H264_NAL_AUD, + 0xf0, // any slice type (0xe) + rbsp stop one bit + }; + buf = data = h26x_prefix_aud(aud, FF_ARRAY_ELEMS(aud), + st->codecpar->extradata, extradd, pkt, &size); if (!data) return AVERROR(ENOMEM); - memcpy(data + 6, st->codecpar->extradata, extradd); - memcpy(data + 6 + extradd, pkt->data, pkt->size); - AV_WB32(data, 0x00000001); - data[4] = H264_NAL_AUD; - data[5] = 0xf0; // any slice type (0xe) + rbsp stop one bit - buf = data; - size = pkt->size + 6 + extradd; } else if (extradd != 0) { /* Move the AUD up to the beginning of the frame, where the H.264 * spec requires it to appear. Emit the extradata after it. */ @@ -1999,17 +2012,15 @@ static int mpegts_write_packet_internal(AVFormatContext *s, AVPacket *pkt) if (nal_type < HEVC_NAL_BLA_W_LP || nal_type >= HEVC_NAL_RSV_VCL24) extradd = 0; if (nal_type != HEVC_NAL_AUD) { // AUD NAL - data = av_malloc(pkt->size + 7 + extradd); + const uint8_t aud[] = { + (HEVC_NAL_AUD << 1), + 0x01, + 0x50, // any slice type (0x4) + rbsp stop one bit + }; + buf = data = h26x_prefix_aud(aud, FF_ARRAY_ELEMS(aud), + st->codecpar->extradata, extradd, pkt, &size); if (!data) return AVERROR(ENOMEM); - memcpy(data + 7, st->codecpar->extradata, extradd); - memcpy(data + 7 + extradd, pkt->data, pkt->size); - AV_WB32(data, 0x00000001); - data[4] = (HEVC_NAL_AUD << 1); - data[5] = 1; - data[6] = 0x50; // any slice type (0x4) + rbsp stop one bit - buf = data; - size = pkt->size + 7 + extradd; } } else if (st->codecpar->codec_id == AV_CODEC_ID_OPUS) { if (pkt->size < 2) { -- 2.25.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".