From patchwork Thu Oct 8 14:32:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nachiket Tarate X-Patchwork-Id: 22757 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id ADD3C44AF03 for ; Thu, 8 Oct 2020 18:04:38 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8407468B85B; Thu, 8 Oct 2020 18:04:38 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from APC01-PU1-obe.outbound.protection.outlook.com (mail-oln040092254070.outbound.protection.outlook.com [40.92.254.70]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0479268B2D1 for ; Thu, 8 Oct 2020 18:04:30 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kflslNVvKREyHbcBCCkROZ00I+sdWePfJAhbaq1GDgDVp8qrbAxT9ps3IdvSGs6D1T+bYPykz0HPZwwVmmEXmbYZDrXSQM4e5YMrlsr86rOR5dq22OXNk8vCY74KrTNbifxp4Xs3oUzjLiPkI8qJwKMJoLddFLXlSYhOXvP5iAbXa4lkgAy9GXHDjpfI/J2tfKDFGaoe5b5iLzb+I8XEH1jbxEboToCUsrx76LWzB+ChP6p3JsZx3a3l+wj+3CSLDEjSu+euleiqooJ5+yrUnUI8bLS58aWx8JfkuWX0dgXFkEBEB1DoVSvMYl2w8CYH73+MiIQgfK3Sq7ysk39Hqw== 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-SenderADCheck; bh=2QEl8en1oiKJWrkkWwKd94ErpTOMzz6bSbICv293PXw=; b=H0fNpHJd6NnUaK8wY3Uc/uMvw/J3rhDD4KXdQuqx895UqYjrtypUqhDeafv/fDYDg35rvb9mPOhvhruwi5ZCj5fur8NSy7KpTsxbXBpcn1DUoaxStli4orodSWreHwmYPNmPcHsqg9SS/OInj7bqhNFo19VXOFv8eFp5rGEql2stfii9j4uZyC5p9Gsu+lxGz8b5br3/V9U6PrXkqA/mtUQiXyEKUf68QVE1YIAQ4WEXy5AdpS3GYEmVuCrK/pQKgN4Zxv/rZS7o02BzH1xXmuZVAhSbg3SYggwQ6dvoXTMtOvRUqtea6u2Ujwh9bH3T/pqcwY+sjnMJhd7Em5um0A== 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=2QEl8en1oiKJWrkkWwKd94ErpTOMzz6bSbICv293PXw=; b=olsvZo/zQHMDOn8zoq6STtbyhz+9hH7phdZyCNoL3xGA4bNPwI/ZbSgtHLcvxD4vcADOjlGZNWduyDJ/bS3i+pzC7kuseU41kcVIFV8kV6NX4RHaRp9t49vCQWDIhzDmWxNqr8tovdsLq0XatJ0A6G7xpOaZ5AWrYQBngQs82sB0fJZqAtGJn1Y15NT9qPR5QMsQlS2Bi7tMGiKpXNiM3Wv/C2ve8DI3ay3LT6POwMEb2ZRytOO+zcjmBrUCVg+Dl7/tn5cOknzN7nHzkp3/fQRtiXXfzrRpqymITbEoPfI/JxmYB+tliKXJ+Ics76/JhPQA91ZcDBQBA5CZiiN9cw== Received: from HK2APC01FT047.eop-APC01.prod.protection.outlook.com (2a01:111:e400:7ebc::46) by HK2APC01HT062.eop-APC01.prod.protection.outlook.com (2a01:111:e400:7ebc::327) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.23; Thu, 8 Oct 2020 14:32:47 +0000 Received: from SG2PR01MB2693.apcprd01.prod.exchangelabs.com (2a01:111:e400:7ebc::42) by HK2APC01FT047.mail.protection.outlook.com (2a01:111:e400:7ebc::342) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.23 via Frontend Transport; Thu, 8 Oct 2020 14:32:47 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:965250E318CCEA0974B7B46A4A928C653D12587D1FDE9CF653022802234F0F82; UpperCasedChecksum:F71465CA75108CB1140406ABA8A0C0F3A3921401DBD22D044A0C144E3E3E1305; SizeAsReceived:7409; Count:43 Received: from SG2PR01MB2693.apcprd01.prod.exchangelabs.com ([fe80::8138:eb6f:5a98:b647]) by SG2PR01MB2693.apcprd01.prod.exchangelabs.com ([fe80::8138:eb6f:5a98:b647%7]) with mapi id 15.20.3455.025; Thu, 8 Oct 2020 14:32:46 +0000 From: Nachiket Tarate To: ffmpeg-devel@ffmpeg.org Date: Thu, 8 Oct 2020 20:02:19 +0530 Message-ID: X-Mailer: git-send-email 2.17.1 X-TMN: [GrpOM1JWzLTIgQdp6NiBSKOvEW6sFgpjnSwzPS2tqmlFwyA2gb/34PzGIuOJO4sF] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To SG2PR01MB2693.apcprd01.prod.exchangelabs.com (2603:1096:4:7f::14) X-Microsoft-Original-Message-ID: <20201008143219.14025-1-nachiket.tarate@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (2401:4900:30cd:657c:f8c2:ebd8:90fd:bfb8) by BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.22 via Frontend Transport; Thu, 8 Oct 2020 14:32:44 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 43 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: 97d7fb74-d2f2-47a7-8400-08d86b9705a9 X-MS-TrafficTypeDiagnostic: HK2APC01HT062: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Iiux44+tM7gNZ69nWY7cd9QBzne2PCTBI1Eyihzh89aiPFZCUepYTII9gh2JV5eXT6Ko5DxqhkwKgY4JCvADP79C7HhV1ePttIg/3ljkd1IfL17vKhUzsx0YF434j4qEoAfE2+gz7E8TNlO/pQP+w0pzhonT12s5+PUqRASHOUjthM6O8YLE7zz91oRxuHFQgklgS533iHr3i38/Uv1sVw== X-MS-Exchange-AntiSpam-MessageData: eDM8t/0TjyVhtLO8bxT/2QiS+s+3rfJ4/BDMAnPlTZvHCtSh9mQvpNCT1B90IdhxAuDKChnKfgbC1BA0bPkP71IDugWfbcNtErh7GItHiPQvepimCS5TT/7YDZkCinlKQVCfTELcb/u7QgKlAmO2Fo6cpZY3sUwGxlEYBzbuJZ6N8IpvO5kIUmhnSjjhNrbtEdAKcHYD9ut3nerlVLsW0g== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 97d7fb74-d2f2-47a7-8400-08d86b9705a9 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2020 14:32:46.9184 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: HK2APC01FT047.eop-APC01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK2APC01HT062 Subject: [FFmpeg-devel] [PATCH] libavcodec/adts_header: add frame_length field and avpriv function to parse AAC ADTS header X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" These will be used by HLS demuxer in case of SAMPLE-AES encryption. Signed-off-by: Nachiket Tarate --- libavcodec/adts_header.c | 1 + libavcodec/adts_header.h | 1 + libavcodec/adts_parser.c | 29 ++++++++++++++++++++++++++++- libavcodec/adts_parser.h | 4 ++++ 4 files changed, 34 insertions(+), 1 deletion(-) diff --git a/libavcodec/adts_header.c b/libavcodec/adts_header.c index 0889820f8a..c6680b0fc8 100644 --- a/libavcodec/adts_header.c +++ b/libavcodec/adts_header.c @@ -66,6 +66,7 @@ int ff_adts_header_parse(GetBitContext *gbc, AACADTSHeaderInfo *hdr) hdr->sample_rate = avpriv_mpeg4audio_sample_rates[sr]; hdr->samples = (rdb + 1) * 1024; hdr->bit_rate = size * 8 * hdr->sample_rate / hdr->samples; + hdr->frame_length = size; return size; } diff --git a/libavcodec/adts_header.h b/libavcodec/adts_header.h index f615f6a9f9..c362ce46a5 100644 --- a/libavcodec/adts_header.h +++ b/libavcodec/adts_header.h @@ -34,6 +34,7 @@ typedef struct AACADTSHeaderInfo { uint8_t sampling_index; uint8_t chan_config; uint8_t num_aac_frames; + uint32_t frame_length; } AACADTSHeaderInfo; /** diff --git a/libavcodec/adts_parser.c b/libavcodec/adts_parser.c index 5c9f8ff6f2..7513b64181 100644 --- a/libavcodec/adts_parser.c +++ b/libavcodec/adts_parser.c @@ -21,7 +21,6 @@ #include #include -#include "adts_header.h" #include "adts_parser.h" int av_adts_header_parse(const uint8_t *buf, uint32_t *samples, uint8_t *frames) @@ -42,3 +41,31 @@ int av_adts_header_parse(const uint8_t *buf, uint32_t *samples, uint8_t *frames) return AVERROR(ENOSYS); #endif } + +int avpriv_adts_header_parse (AACADTSHeaderInfo **phdr, const uint8_t *buf, size_t size) +{ +#if CONFIG_ADTS_HEADER + int ret = 0; + GetBitContext gb; + + if (size < AV_AAC_ADTS_HEADER_SIZE) + return AVERROR_INVALIDDATA; + + if (!*phdr) + *phdr = av_mallocz(sizeof(AACADTSHeaderInfo)); + if (!*phdr) + return AVERROR(ENOMEM); + + ret = init_get_bits8(&gb, buf, AV_AAC_ADTS_HEADER_SIZE); + if (ret < 0) + return ret; + + ret = ff_adts_header_parse(&gb, *phdr); + if (ret < 0) + return ret; + + return 0; +#else + return AVERROR(ENOSYS); +#endif +} diff --git a/libavcodec/adts_parser.h b/libavcodec/adts_parser.h index f85becd131..faa6e47426 100644 --- a/libavcodec/adts_parser.h +++ b/libavcodec/adts_parser.h @@ -22,6 +22,8 @@ #include #include +#include "adts_header.h" + #define AV_AAC_ADTS_HEADER_SIZE 7 /** @@ -34,4 +36,6 @@ int av_adts_header_parse(const uint8_t *buf, uint32_t *samples, uint8_t *frames); +int avpriv_adts_header_parse (AACADTSHeaderInfo **phdr, const uint8_t *buf, size_t size); + #endif /* AVCODEC_ADTS_PARSER_H */