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 6E10748F5B for ; Tue, 30 Jan 2024 12:51:37 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C7BB968D365; Tue, 30 Jan 2024 14:51:07 +0200 (EET) Received: from APC01-TYZ-obe.outbound.protection.outlook.com (mail-tyzapc01olkn2015.outbound.protection.outlook.com [40.92.107.15]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 583A568D359 for ; Tue, 30 Jan 2024 14:51:01 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NPeORpbk8lAcn1XMGI4ffgAKN6gN55IxAkUJpUBOQ6bNIKt5JApNEQVwZ+O4TRPL+PyFsOIaQwLp2ZrFfTOF2SihG+uXwJQPuJ6B/jFNqFbqDvQKe7Ox8b4Vwn4RRdTApQedNPXsulYQYFcN9OXVmVNx4rWjtZqt61Lbcwf3qbVnuyt5HqK0aIe0MYwvA+kiIJgJxG90nkrSCjX2PGIGMLl76aWoIQKY+LRSF7MRwzd2hZhw6XCPM24oc/iBo1JfwdRIZrEbEdCsJBTzJTmGxRU9qfjqvm4EvIG95V/nnOSpj1bFLBjqRUPiTuTSVDcpBPQxIRXIaHAmxkOpeBvVuA== 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=QXcI8IOIB3vzCumj+XpXMGapFJPPA/coxBrxBd296LTyOrKikpws0lWGrIZZdbI9wLRGgDWRUIf21v8Tge1KS74p6dGAQVYVHLdb2CC7A00xIV0wFgDzuVCc/ZrPbPSYhwTD7gkqRhREebX3EWiuyGrBSpkpA7FzJDkr30xlL6vsVI7f+JtQATn/D8XlkIb4aAlHHQxZQ4nVbic3EUGr20ZTToD8m5OmRFxq40+ROId2kDaqYoeJzFCpdF6KExhbv//uvJmgqlYQEh+VGwxepfcbIQ/TASCjQ4Bvb1fCfuAO88QwiuRKfee/X0W5DKErbFIxVM0bT/AkalwybyLU+g== 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=n7j4pFV/J4O5NvY163u+Gwe3Z/PkCnnQIl8y6ovjACyxnLxktt+Az0SHxPPzw7ryKyTV5a27jENDebEAbHDeT+1Y61dDtoCqbgVUFZYvyShV3006Mkz+k6O355g4/idWYs2rN2IL5O8XXv+4c7Mqp02AKMiIhsG5GHiUYDxL0Z7WU5v77uC6QCq6+IeM+RPk8H5pekSuoIFThuPySbnx+LkWdqMEMM8P/hji/cKpQpBslCOqWpSPhyIYE+WKWf688IC7qla+8ezkSpux6pWpI7sEPFsBq1T/KNFKLlUs8mMIH70uiKc5Ix6rkikBx9KTVCCgSNEbpyLS5Hw5jIdAlw== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by TYZPR06MB7274.apcprd06.prod.outlook.com (2603:1096:405:ab::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.32; Tue, 30 Jan 2024 12:50:48 +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; Tue, 30 Jan 2024 12:50:48 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Tue, 30 Jan 2024 20:49:02 +0800 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240130124903.16892-1-nuomi2021@gmail.com> References: <20240130124903.16892-1-nuomi2021@gmail.com> X-TMN: [Hz0UiovTKQ8g0hPiuH0xDGgrUkniZLnv] X-ClientProxiedBy: SI2PR02CA0035.apcprd02.prod.outlook.com (2603:1096:4:195::22) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240130124903.16892-6-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|TYZPR06MB7274:EE_ X-MS-Office365-Filtering-Correlation-Id: 2f4f0c5f-051a-4cc3-e686-08dc21921526 X-MS-Exchange-SLBlob-MailProps: znQPCv1HvwUOfv/FaQKFvjfX5nGwqybwiJWaiom+51qabi7Og2uloEiWedtAfBOVoRaiDD+GUgtGbiNNvVS36+C8q52fr/NtNxFHupzxTcNFLdt4cSX7OoCUyKzkgFbRcc1b4znJX5dmJQblyQiDFyj8MLI8EE3TpitqHLwrsW9XHkn/xkQXNdF2NhvwTJjW0VsQoV1OKJGbZ/jXMhHXsra7c3qFOyLhsACEyssLJZPSZcqV1R/FnGUmcmiKMr0krdNnh6RGpJ+JjpN6H5I7MXkguT4oa8K/da8lX9xewIPlMApCEH/yVYOCIk6DCZaYGSaIAJr3YoRGp98cPeJyt3xyyqYAZAHCuJjlpE+q/8zM6i/335ArP/voXqn5m1piPAwh4I1i63za+vBjPPrQZD4HpDxhzyWoufxcnJK4BvosUkAgKurnHUeJNRiNqGFdoqdis9uy1J9gH7rj1TgGb8OxseK4CeAAW7VcMCdHvpzDqv1MSPKV0V+mcIGDBlkU7JL9LLEBYuxbW//Pf3L7BkX7bNMZlwm46XNMEjPbl50PCYRKYQIbf4ieK4L8NIvAcMa1NIbjxtjAOF3R0Wtd9carbPjg+qob4B3d0gHIcfwl+HUnPU/a9K0378Zq9Mnsr7x8KlSaF6K+f0P25O2Pq2V3rQX+RlOP3ZDASDR+TZf/QxOJL2DBnCqEB7fm6NxhfGunvs5IPznTP0I+Kuz9GyDuG+SStD3Hv+5L9Rib8CcizIeclkwTwxVMaNyBDn7R0UUzo6TeO5I= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Nqxi1aKB5IJBp0kuxVObjTvRc4ay5IOQMEKnhbEtLwP0OhhizRqtRKHre5ws2m2Ujg2zO3VqqcPsPby/qMkDt7cKhrvkCT/KU8UbTtXQ8tI9SccY+5U8Sae3kQQiC1IWUdrlfzuIjdyzW7UbxWxf8LE0MC7DF6CYPfDvXuLiAeBO1Cm0OPjyn/rO0Jfci7qr+JbgsMQEaZfuvmxTan509veKJvwQnTtqixWbF/QW5u1dMVdwrr78RrS75XsNBHlLMzlqMw4t+I3yCOje9smRbxNYaoSD/ytnWzJd4wubXX41p5cHOEpYLlcbIqxr0XsXsfcoHvYn9TnF3NQJshztrrMp4gUIVAGSwJqazkBHDeOsP6ypcNLpv1YE7qyZ0aRrgz19PUIdUAfuwWNVe6i1VG/PLQu0Sb9ltkS7DDppv3svlnztBGKxJYvEy04LTMh1HVnN7H97yR7dM5ywjUJf0rS8UMnM5gmuxntBvTKxIBxXBw/RMtDeSE1tO+YK4EWKuufc5A0urnMstfsb8N9BDG4+7OBFsrHTjhAqjW9EqJMoN/we7QPY9PKx6c1/ktaOPm4JVJ9b6WOZErGeng3E0Px3GEbkuiYgwt2QajuU7OfMXYuFDZW/2DQQrYj4kkBG X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?wHSTUIxH8kPkBuFVtbiQ1xgEhYLKwIVJv5CLlFf30RhlvK2ORcPuTGzAMQ0t?= =?us-ascii?Q?5GXI2PL7ivshPBK4Q+ZkxtWSkGlVRF2DvjeJObNmcskccEu5tuK0UYHvTgNS?= =?us-ascii?Q?7D5q1kH0pLnGp/q2S5a81D1aNl4DUcm563hpjlOcOqMxJiCrLWwqobMrsQcW?= =?us-ascii?Q?RK3Dx3MFR6FkpJVvB90OapXKMrQQI37kau7W1IoSSzxIs2MG9M9yO/MkdGOK?= =?us-ascii?Q?mGa/XVKaz1+Hws17O+AJQo9Rmt1WgLPRSlq3VBa6CG7Eb2gyvXWZ+NsoL5VI?= =?us-ascii?Q?IkCtiF/h6oKVrxI9V5qu3Hfh4F0JjXDa+wLPZFb+ly3DgvSbdZNVOTaTgyLJ?= =?us-ascii?Q?O+xk4NFSrXPmpNrp1PzHQFm+grrbU438m6SlolxqGf62miAuVhKIi02Oalkr?= =?us-ascii?Q?2fiPLs86YL+8GOO16RZT7KPtQLRL/hS0Pvl0e0j2bTEcgYuKhJYc1Dpil1de?= =?us-ascii?Q?Eq9VWz4AmDUmw/S9f14FxAzAo7CBHHEuuU1YQag6eGXPG3k0hOqBT/x0+AjB?= =?us-ascii?Q?NCoTKzU9dmZGNkYNeZCbi2nYsSU5wa13u/NUFq7h4cjqZrymbDc3RFi1nX9E?= =?us-ascii?Q?tmTGATcLRMAY8ubHf3Zh4HePA9KIb/Qtifb+vFVMn28qcgndznMXua3x8Pxu?= =?us-ascii?Q?2338PTWRS7rRhqDm3HDfWTMvT5Hc8zszeiODDrrsCLoMbPowhWRgmSPcBVH1?= =?us-ascii?Q?opO23bhVcAhoer1nmuqmVBT2bo65BhfMAXyPlZIeT4NUsX02bomjUXBtr5fd?= =?us-ascii?Q?xWm0CTcY5bClCaLgR1x+9lg8mP8zEqlwLOS+urA/u2KodNBL6anGSvolzMLB?= =?us-ascii?Q?ONyM5H1PUUA+cPg3ByhkSbT2Rr32yPqDnG+6/OnJAa2CFOyt0PMCHSJDjUzB?= =?us-ascii?Q?scGSkwGG8TgfzRJ+FeE/YB9QH9x/SSjKKTfQksHeBUS+2hCFAfO7oM6tVOFl?= =?us-ascii?Q?prcb+tMuViTHxFDvl5eK7vjI+ROoirHpmugQD/OsLxuEyJs+7CBRsHxUrhyz?= =?us-ascii?Q?8685atdzlbS87r6McKo1nlX/xNBSa1WF3LcCiMHkIf0e3y+OjAi5SRmbGJBw?= =?us-ascii?Q?yYdsq5McUUPBjAliWq1tej+n5oSIQCy+jK8nCSYtbsJTbYDTcM86Nt3P+b8q?= =?us-ascii?Q?cb3wkpHNopBnMWZ5x1thobm2Hp330yqg7Ggus4x8BgHsr7See5ll2ypriFUK?= =?us-ascii?Q?B6d/Xly6gWh1KCkiGCcDzBeq0h58Owh4BCOECxdG8XdehGWohXW+AK948RxX?= =?us-ascii?Q?w24E8un8GIRqHJuJJ3dN?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2f4f0c5f-051a-4cc3-e686-08dc21921526 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2024 12:50:48.5308 (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: TYZPR06MB7274 Subject: [FFmpeg-devel] [PATCH v5 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".