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 7FE7C45483 for ; Sat, 27 Jan 2024 04:16:15 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9E0EB68D17F; Sat, 27 Jan 2024 06:15:44 +0200 (EET) Received: from APC01-PSA-obe.outbound.protection.outlook.com (mail-psaapc01olkn2067.outbound.protection.outlook.com [40.92.52.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C0C5168D17D for ; Sat, 27 Jan 2024 06:15:37 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gwXMQosJ7Eao52Hjpcvtsmg9Pfr+ZNrLgviknBMShpIUNdeQbrvd6bSF27wbTK2xTuM+aq+qitTRoNC4tSfY3kMvPbX1cCEPum57m4roWR/M+YSxNt5PLTRww2Ea7Fw0Wl2SO7NtyWcrdM2+np1fvpQ+9gABVIXCFKeHnm5y7XFVZ0b3yihqpzYiKwQUErewNEKuoVSY4ItfuMG0hPvVx2GJZiraYygeVZXTtJCuf3BqvLAuNRIm6r5qfEgwdtFlwWYwMgDv/5ze4usUu0H9XvXLY+6Wahm5lFNa09SQsT5lkrPbaO3+CLCvk5YN9bQqo9M1bK12kpEwNxsv7ocY0w== 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=H/8fTRIZULQ9pSCJRsxvxERy3WqcZrmlcAuKtDK4tTM=; b=hXDlwlPjik1CzI0YrM8RcKlcIjiCHozzswrrFXZQumz71n4j2wPRDPbzcKTx+O8pDCpt4GHp4pboxH/fk7lreinzGWEBM695Y1+q21Rgx2CMjspsU7PhykMdhnBeSadeXt/iWGYVfsx73vHlbw4rJzG74oJP2fMOIpSiNBE6fWyAclkDP18aPrvp/Xx7WT7QshlioSyBEnHXJABRJXFqpnuCyROuIMXEpEGFT0v8AnfS+UXS6zetqx7iEOB3JhjBIWJRswTDJWYsmKLI7UVinYZ4wQ/6okgNr62No5yUmFlxaJItfG1G9lkyxcighCnVJIFh0oN2LLxma9cK2hPIPQ== 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=H/8fTRIZULQ9pSCJRsxvxERy3WqcZrmlcAuKtDK4tTM=; b=A81Uo5HJGLMwKqTSNnumk2WJxv99RymWgxDsWm13mvOVIhDO+Wl0id74AHFascGwawjHNS5v4f7f4IaIZdX7aUz2IBr8WJjvZx0lNzafWqnQsaVvN2PVEtuDoR+Uh0HUKPfaNKldnNkLGXrX24BtAL7yoahQyfwITeREzluPf6OCyRj1DZJYv6yH3vUlpp4mFUkPn4vSJ08iA0nEB2ksTu/t9ygihe6wellmZl1w48ohvSx9DjsJmVXAZUlHffzm/6lR8/2rXAqLhJ1KUffYjebBNMJ5axw9xuFPZcE3yRxTqTA/hShrwVrlp6BjJnp5/AfCDd+wGBBfKBPcNIQE2Q== 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:19 +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:19 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sat, 27 Jan 2024 12:15:11 +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: [a3JSRsq+dfekrXTu1dBTP1o5mCUA1AwK] 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-6-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: 4abf614e-99a2-4efc-a101-08dc1eee92d9 X-MS-Exchange-SLBlob-MailProps: znQPCv1HvwXO1xbyOgO7FIf1KJkfnrOvh5WdK17e9S9I3kfkzF+gGnKmUR1s4ncUEKhdc51tiJEBg2pKlKyPDCzPe9QNr9sjbb3et1ymOxsqt6//Ap/gcOvAwZtW5V9trpuEB2l/nLxRW4Cc85yPkmPO8M6PyTu7WvImDMeVayiqB9m7w7CDUfxoUWqJtkyEUvFGfVwgF89lANfYTN7MUWUiK1G1gdYleOBw0nm9qrWd1ezuXIksDdwc6sIYndZU/RlzikarE86HaFHCXS+7PFNTRRk72YHGvlxo145kPsPWxhzWz9+Yb5mssZCR7/Z3Pb6VEhNVRl0mXCsTjKx+4Y+dQQCxbZZ7khuRH15+f2c9GcvTewztAVR+TZ4LiyqW7836VgQUrg1C0ulo75xvaJ1nNg67MKS/IqUmvdElfjVbCth1UCzyo21ABkOkFlYkvInWGqj26t7MXoN1ZfBnko4mrk+5c5YzFmasedynxCo+yBTE0gbDOzEyLb26lB6cIEZDp2mxK4L5eBU9tVqnb3RfQhWkH4sAtZbtlraQAf8lBQ6JgG1sqZt2GFNgXBlUCbbPcb/14wJdk6vg4pVQRApaUgrh4hwj+4pViPd4GV0i6SbHEFlwR7SevWy6bh3n6oihX+Ty6GlW9mRcHz8rxHouT5OudXMTYBGowUjkIm45q+OBfiMa8D1sX/qSxXnuMtxUxnpV5/uHRKewaMpnzEAXdGCNkW+RnrFVZOxOfwXi6R1pI+CqMy4Q7uAPtxFxJdSeAxTnT2A= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: oVl2jo8a4PosGOccW5YSzqFRUaH8ESsEib4liFaKcniQH+XEgEyxht5APD6eudqPA6+gqzUq2nFJwI/EJ/px4OFYY95WfKvJCQQa2uRHrwJ2LGbEArFywvmsD4gEFM18HZ/nYyburEOgRJ/WIrkSQ64GZGt13T8Et6reueWfuB3ixJDYQUDUa3LbkvE89GLBfzpr+q/YgigEMMB1BVKUgMiLVrTVMOdWMwdBnmovR3YKUMsTOzmtOGhs0hehiPl9NKsiJMB47n3LKymwrIVbQ3WDhRUy36EMeRyCe+VKz2LX48IqX1leg5gmlycvnS3DAJoFM9Omi2iQ7uCnj0KLeSh0938phCDqF+zUr/kG5yai3x8YVgla+JavH1odv+0GRtIfOq9sQMh9bW4K3TP8bMZ474kNEBlBi54qop1p8uhO6uNetd51j/ME/N1N3BL52wGkswl91JIFx0Xs0kH2IEhJPFlBgx2SkKG2ZNtPHceaY8TR3/12pFwj5k5O0/n4hwO3ivzsNV6URkY3InRggtyiie5H2VrLaWAErqVSGE+19Q0r9pPMYxDq/mpSBwTH5F6iVCscczTLqdAp2j/uuiaKk1W/ZA37yrXQE0ZwLwJFHFTgU1mBXIh+xo/VOiZj X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ZCMCGU4fFEy75YFyPGFqUipjzKmFpsm4dFs8W6Odbpnj0E8InfjuWO0VugbK?= =?us-ascii?Q?CVNpsKVYdhSVstpdqVwpEoUO/LhaTbSp3xTPMJ5XqsegKlY7YKmdu1YIL205?= =?us-ascii?Q?zbkf2eVW34rbJxf4oA8YivmL+mFMSpA61rScI+iMaXQ+Qg5vgh0SpurvPuiM?= =?us-ascii?Q?Y/30MqYwLlylwzbKH7l17O0BAcdL86pIss2+rQOlAS7nHzjuEqGJ8yDJG4MX?= =?us-ascii?Q?EsNrSHtm1mRx8YXR1Y8D1bETZ3ksn3oUifBisYn0Rhr3bXroqT/mqH/w/kJl?= =?us-ascii?Q?A8lSLWuHkB/BMCz56NTzPWuQibLjd7el30mJIe0yMKF2mV9rTd656I5XGh98?= =?us-ascii?Q?UznM9y9oOP/eAkdWgZhOzlfCfD4yFTSBdlFbxwr3ov08wl8f5FitBQ4PJ+sM?= =?us-ascii?Q?R0zhb9++ZuL9Qn0WntpSBXR578sb4BYFjZ00jdLSfm2RGprl0WjYXMj7XyDn?= =?us-ascii?Q?jWQVT6bnqPxqLFY9+SCrghQL0B5OiPkBEQ3GxIlifMB5O18XkGtRytyL4R0Y?= =?us-ascii?Q?Vu+jVeQ5ZoXAff7kh0XrgpvgQwQ8PIa6p78fQq6og8KHsnk66LWEsXuxB4Hl?= =?us-ascii?Q?CSk6sNaN968tFz9L1Aepcl5EG5VoVpuEHwZWAlrYn8Ppu/ww7T8iyGsxxtey?= =?us-ascii?Q?IsPiN7BSEIf6llYy+zxqToTelEhGsH5h6pEn1S/nqqcPkZUnhMaq2+ICGWb6?= =?us-ascii?Q?lAD/lFGfxnThf6+Dhx1KG2LPEtJXr/p6JNv9lVb/LXpe8pNwByzp31H55X2g?= =?us-ascii?Q?GDED6ujSVtAnydYoTz++jhfFZW8sbkfg2TZGtYzIZSAE3zzh7YdLS6E+3PQu?= =?us-ascii?Q?RtxcAIaGkG68BE7qvN4MPLS1iKqmUeOCKxm+VqWp0VZCDR1nbnEnmwzGXNOf?= =?us-ascii?Q?7XB8/ezFb447iJV5pm57Z7GOPFFjrvQUWN0AgLrVgO6gmyjE9+BIcXwZRGUJ?= =?us-ascii?Q?e2xy215JEDCvSQHZFr/A/CVNpcwjei0JHHrarmnbuKuQgmtJfH5RL95G2I6z?= =?us-ascii?Q?QZMKdKFVMzs0FlZuTwH+sW2yddC+Vu7Z9JK3GJyS4/h9iMDPt5j7goJZRqAy?= =?us-ascii?Q?hLIcCmedooPSzlyQH3JlvUU4mnJ85mkU4/Wm30CW9b2jr9Sqq3grWiMxqjOJ?= =?us-ascii?Q?GxmAXCv0caYcfJfy9yhzzQLnQhZsKJ7cmLZo+CcrVytmqv3KkH5CxoaFXVKT?= =?us-ascii?Q?nkvBrq5ay1sZVgSE2Kef0EfH7wGD6DuuDIoZENmT0lfeE6NziB6lcepQ2CZt?= =?us-ascii?Q?OHTIO6oR1xaRWL1OMVhw?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4abf614e-99a2-4efc-a101-08dc1eee92d9 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:19.6801 (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 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 0843516ee6..ff1c4de640 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".