From patchwork Fri Oct 2 13:05:08 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nachiket Tarate X-Patchwork-Id: 22686 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 DE7CC44B6E0 for ; Fri, 2 Oct 2020 16:05:45 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C462968A173; Fri, 2 Oct 2020 16:05:45 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from APC01-SG2-obe.outbound.protection.outlook.com (mail-oln040092253029.outbound.protection.outlook.com [40.92.253.29]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2D5406880D5 for ; Fri, 2 Oct 2020 16:05:39 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=X4sfR5DDecVuRtBWuhvv7RTLLKugK3WAxd1KCVpjcL02TO5Xjbl9kJXz1FUdlzJNY/+sz/vP1ulxKEwMarwI3xbpXdM59kH6ZhNp3cJSfIreyN3xgl61WxbS08omSL9MQGOcv0yzjwfUwZG3QyfRyjXYMaXobC4hcuA5sp+ykp0sqnWqZHfnnm5e31nG0ozhXlXocBC7YXrhr9pD5hq4GcDGwfS4EEcyKuvMYRUoumn9NYLWq1OfyVlgQKQ4s/3M9DxAJ6+7u2nji3xOIFHZ8jxr727IdYcZn3tFHhxkxm+BRzu+lDjVuYhW6L4BVYonZ7M4ET2oz4Ui2CDmdB/c5g== 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=HpO2qTcqihGGIpC/raN3R4hoT50QqketoIbHHj8J0lE=; b=AoHK9r0Kcyt9msJw3N8y2o81LVOOdZG2Gj/ztz35OQ9Z80iydDEDg32fOsPbzgwK55Zx+caOwdJrYeoCNyC/zXH5pSXJ4jMAYAgvUxOfNa6ZdyF9MaUP2mwYoGVzVNVZBXNa8QS2ucJVLrwoBXrAfxxImCKqNXdkgvXldETeTAToZ4HyjG9OSHA2NLzyup6ssQvzvh/w7FGKTcrIxG6oO6b58N9ZUqu/DjoGqrJayF94iYmEr1Z1+82L2FNQj1r3B8rAlLNv+tA72Os0wOBonLC0ts52FOnSOAJY7Lj97WDugIi9Rf4AQt1LVPaxJ0q/Y7sGNELfQgYOOeOqwwkY5Q== 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=HpO2qTcqihGGIpC/raN3R4hoT50QqketoIbHHj8J0lE=; b=FNY26J0jMfsRaxNK46208ecelBPPTwJh9206Ht+AQClN82YMkZRzPaW2Axs7LYqmDOHqEewIr3aD8KAL2dsT4Uqd/vDz/A2656SAc5xaYlU+xg/kWORAgYcFQSFvRo8zO8/8PX/9N26+E56UswnSkIrNwsbT21MHnPxtSPd0rsEql9qQQzRwpsEcxoAr+v1PnfCYdpQtrubjg5BzLaayTR3RV3Et+gyU3l1BA3AIr0Iqin7FBKm5oLHS8uVYQhMjKZnmH++RZvkWH4dkQ01KbhkXFz1wzcdVTDIMdp8372H+t0rbTrCggrKLl1ceFynrNPzco0NfwjxI+XslQQoxkA== Received: from PU1APC01FT047.eop-APC01.prod.protection.outlook.com (2a01:111:e400:7ebe::52) by PU1APC01HT067.eop-APC01.prod.protection.outlook.com (2a01:111:e400:7ebe::283) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3433.34; Fri, 2 Oct 2020 13:05:35 +0000 Received: from SG2PR01MB2693.apcprd01.prod.exchangelabs.com (2a01:111:e400:7ebe::52) by PU1APC01FT047.mail.protection.outlook.com (2a01:111:e400:7ebe::279) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3433.34 via Frontend Transport; Fri, 2 Oct 2020 13:05:35 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:7FB3F28A3287A1CD2C0B45A63A7BF73C9EDEFD114C12CDEC34357C65DF9B7A2A; UpperCasedChecksum:2DB8024164F44FACDB93FFF5152FEC562197F2C01D11F17F50DFEE73DFB04DAE; SizeAsReceived:7424; 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.3433.034; Fri, 2 Oct 2020 13:05:35 +0000 From: Nachiket Tarate To: ffmpeg-devel@ffmpeg.org Date: Fri, 2 Oct 2020 18:35:08 +0530 Message-ID: X-Mailer: git-send-email 2.17.1 X-TMN: [j96q0S7Z7dujusFySIIc6BlZXhcQqBBLSNM+Y0zlpYbN1eMQTxFP4mymxhTbq7J+WYfSj/fHM5E=] X-ClientProxiedBy: BM1PR0101CA0003.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:18::13) To SG2PR01MB2693.apcprd01.prod.exchangelabs.com (2603:1096:4:7f::14) X-Microsoft-Original-Message-ID: <20201002130508.4035-1-nachiket.tarate@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (2401:4900:30c8:e762:4473:a462:4c6d:29b9) by BM1PR0101CA0003.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:18::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3433.32 via Frontend Transport; Fri, 2 Oct 2020 13:05:32 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 43 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: 177dce7f-bc44-4953-1adc-08d866d3d8ac X-MS-TrafficTypeDiagnostic: PU1APC01HT067: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ggbm51oGQT3woQU4r7Ts9DEAPRA2DALvofR2Gk8RBaX3iKd+Ri9RZ7izROkhuzXoQOa7nK21HAnOIAdbKqjaEZ1HPRW+0DWWQhyRKd/EtAZ8vYOfIR2C1kRzrPEycJDu69nLQchlFfci3+/I+7QaJ26IOs+v/zt3AlgmgF45tYI22IpInLcmR25PD77ina6VlI31iTCCtEdS9n18FxlZ4w== X-MS-Exchange-AntiSpam-MessageData: UOYj++EqW+7pCj1H3o49jGALmxxCyqSdSm4Y+IuJLT6cIk38dqHwQez9EU5DPTWTNi9O99kWfOc/APNMwrkL97OuKwEMn1Xaiq84uAmDiBPZTai3LRDTVS3LEty8BioYJ3+wDu/4FFX51gVE0WVs+50U+WX3MM4GLQEaraFSynzlEWumIXKg+8rhzOFhQzVFjKagmbtDoILc8fdtWiAkIQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 177dce7f-bc44-4953-1adc-08d866d3d8ac X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Oct 2020 13:05:35.8530 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: PU1APC01FT047.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: PU1APC01HT067 Subject: [FFmpeg-devel] [PATCH 1/2] 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 for SAMPLE-AES decryption. Signed-off-by: Nachiket Tarate --- libavcodec/adts_header.c | 18 ++++++++++++++++++ libavcodec/adts_header.h | 4 ++++ 2 files changed, 22 insertions(+) diff --git a/libavcodec/adts_header.c b/libavcodec/adts_header.c index 0889820f8a..006455b110 100644 --- a/libavcodec/adts_header.c +++ b/libavcodec/adts_header.c @@ -3,6 +3,7 @@ * Copyright (c) 2003 Fabrice Bellard * Copyright (c) 2003 Michael Niedermayer * Copyright (c) 2009 Alex Converse + * Copyright (c) 2020 Nachiket Tarate * * This file is part of FFmpeg. * @@ -66,6 +67,23 @@ 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; } + +int avpriv_adts_header_parse (AACADTSHeaderInfo *hdr, const uint8_t *buf, size_t size) +{ + int ret = 0; + GetBitContext gb; + if (size < AV_AAC_ADTS_HEADER_SIZE) + return AVERROR_INVALIDDATA; + ret = init_get_bits8(&gb, buf, AV_AAC_ADTS_HEADER_SIZE); + if (ret < 0) + return ret; + ret = ff_adts_header_parse(&gb, hdr); + if (ret < 0) + return ret; + return 0; +} + diff --git a/libavcodec/adts_header.h b/libavcodec/adts_header.h index f615f6a9f9..d33bd61818 100644 --- a/libavcodec/adts_header.h +++ b/libavcodec/adts_header.h @@ -2,6 +2,7 @@ * AAC ADTS header decoding prototypes and structures * Copyright (c) 2003 Fabrice Bellard * Copyright (c) 2003 Michael Niedermayer + * Copyright (c) 2020 Nachiket Tarate * * This file is part of FFmpeg. * @@ -34,6 +35,7 @@ typedef struct AACADTSHeaderInfo { uint8_t sampling_index; uint8_t chan_config; uint8_t num_aac_frames; + uint32_t frame_length; } AACADTSHeaderInfo; /** @@ -47,4 +49,6 @@ typedef struct AACADTSHeaderInfo { */ int ff_adts_header_parse(GetBitContext *gbc, AACADTSHeaderInfo *hdr); +int avpriv_adts_header_parse (AACADTSHeaderInfo *hdr, const uint8_t *buf, size_t size); + #endif /* AVCODEC_ADTS_HEADER_H */ From patchwork Fri Oct 2 13:10:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nachiket Tarate X-Patchwork-Id: 22688 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 A5F0B44BD0E for ; Fri, 2 Oct 2020 16:10:42 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7B23668A0F0; Fri, 2 Oct 2020 16:10:42 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from APC01-SG2-obe.outbound.protection.outlook.com (mail-oln040092253015.outbound.protection.outlook.com [40.92.253.15]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 092CB6806AA for ; Fri, 2 Oct 2020 16:10:35 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L03j7muMEIKGQcqh0uS35ZE0q7jK0zroxZIwphVF2z2xfCEMn6S3dZoPNAn7LulMo1xHL9frTTKYtlAoQmgfU9IT7a4WJ1RXuchnvIDl42CZBDLbFK8EJGmUljHhD5f/a5u71rDdGKs5rSxhK/uc+UpGp5q0s7h9Ri/edZj+mkc5PC0vTuKvR1Qej4MGWi5n4YlrvZePf1gUHCxEw2KasMHHTVeo6dU4HCS7KzFTlP7bjcuTmQQc9Qsf2lIVJPznGSI2p3gI+JB0BJ6O26daywFwo99vqBi/gkSd+12m5VRaEfHMmhAS67qULrRGCHEuWfc6Y7bvTiHmRUHzq+60og== 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=/qmuyN+OnEJJVL16Utbd4BlMrJkaBC6lKCtUCG8t7SA=; b=FNdAVkRgdWjtJNvR2ilSLvvRYd1bBAOiumjD5hn0S2ImIrpNRLjNimYoLhDX5/9tNTb+9HlYWbdeMQXuos/UeFMP0izT7byAGToWOQ+23DzCSkAq6AGQpU3U0S/gbqDctHz9gvnUXrK4WzrHQJSuthWuOHF/Py21+DeOvhMTmCCbgDpivuDZV/sBKW1u0lHIw/5j6J44MRY0IUZhxVO14V0bDssCKmxO3VqI/hGvIZ4E5iKojzXLBZGvGQBtnTnXdhhiHgUavfzT5SjDMgVs1r5f1l2Q276Ds42hVn5/1BxHtOG9IdtqLCgbgbLtsqFzRw76LOsHEiCly+RHTB8uwg== 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=/qmuyN+OnEJJVL16Utbd4BlMrJkaBC6lKCtUCG8t7SA=; b=L8eq7Wb4QkNrEg0CNpY3zul+DWQN451r21nQHSomLM6ZAnz6lhshUk+MFQoelQzuQKznb3iV6bVFf6eceh7g5P5RWWnp3QLKe8wP5FZ03YEDEkw2gXYOZbP9X2Po0A7LPYRleDJYh+XB7xSffFXTdPFvdF20/Px9n2KV1iAFmkXOxWEduAVhla9KhnVaRutRzGU1h6XhJEdFzQA27YdB/j5K3IA7khY6WE1NUhtaJJmvfG/+SfFzd8fexrFGcqQGjhT6k5Txi/P2D3SmJH2v3V3euANQ24A4AWVozQS3kO8PxRp3tnySJWbEN4Cm0O/PxB7laeLX1Frq5XUBxkjdvg== Received: from PU1APC01FT046.eop-APC01.prod.protection.outlook.com (2a01:111:e400:7ebe::53) by PU1APC01HT027.eop-APC01.prod.protection.outlook.com (2a01:111:e400:7ebe::324) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3433.34; Fri, 2 Oct 2020 13:10:32 +0000 Received: from SG2PR01MB2693.apcprd01.prod.exchangelabs.com (2a01:111:e400:7ebe::52) by PU1APC01FT046.mail.protection.outlook.com (2a01:111:e400:7ebe::343) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3433.34 via Frontend Transport; Fri, 2 Oct 2020 13:10:32 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:0E882D642D3724400B514F480D80F213E950FA2E1FA6A65D58B8B5E159AE1DE8; UpperCasedChecksum:CBC7F6053C2C490432D29B127CC0D62B92D70CF2124288B215EE2E9ADF8C9E55; SizeAsReceived:7388; 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.3433.034; Fri, 2 Oct 2020 13:10:31 +0000 From: Nachiket Tarate To: ffmpeg-devel@ffmpeg.org Date: Fri, 2 Oct 2020 18:40:06 +0530 Message-ID: X-Mailer: git-send-email 2.17.1 X-TMN: [qzAkJnJHWwc2ITdKUo+uxtQU5IG+Sppiym3rOFPQn5BBbnG1emsNPjaNKnSFCzjZf5/SIw+5z0U=] X-ClientProxiedBy: BM1PR01CA0085.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:1::25) To SG2PR01MB2693.apcprd01.prod.exchangelabs.com (2603:1096:4:7f::14) X-Microsoft-Original-Message-ID: <20201002131006.4178-1-nachiket.tarate@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (2401:4900:30c8:e762:4473:a462:4c6d:29b9) by BM1PR01CA0085.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:1::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3433.32 via Frontend Transport; Fri, 2 Oct 2020 13:10:31 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 43 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: 172bb862-c049-4d15-7cba-08d866d48a7c X-MS-TrafficTypeDiagnostic: PU1APC01HT027: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: HFrmBZDP2p41YiWgwMpz+wHzKvaPdludL8ZQpNwVxu547IhXunGQp6mEdIII4atg+WHRzejOkOCb5FC/xVYj6UwCogHmuYqLUaEcyk9tXsegl71IuALT38/YsByAP31fsQLeE+jakrMrQ0dGkMuxvzmh2CusgCiwVj0EYK2rG8puOo1qTK1YtkF0bVgHhEis6kgyC7cQHgEznBwDWsbZBw== X-MS-Exchange-AntiSpam-MessageData: +Qpe7oZDwrJfvTGkggZtx5qmn84DsqeXFaFcKIzCzZyfOfNetdV1ud4K7ZoMgd6zWr2jWqonp5kHDH0BXQC+3tKxcwWJmTyJltjoOjCvzGiOUlPya+afYj86Stz+rS2RUUJdvrzmH8yl0R4WMmeEd/A+UKM6hv9kJEkrFWlx63aOKvtrINDMYaDszs7sCHRM+mjSkwhCYyQZQHV6juqA6Q== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 172bb862-c049-4d15-7cba-08d866d48a7c X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Oct 2020 13:10:31.8717 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: PU1APC01FT046.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: PU1APC01HT027 Subject: [FFmpeg-devel] [PATCH 2/2] libavcodec/ac3_parser: add avpriv function to parse EC3SpecificBox (dec3) 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" This will be used by HLS demuxer for SAMPLE-AES decryption. Signed-off-by: Nachiket Tarate --- libavcodec/ac3_parser.c | 47 ++++++++++++++++++++++++++++++++ libavcodec/ac3_parser_internal.h | 4 +++ 2 files changed, 51 insertions(+) diff --git a/libavcodec/ac3_parser.c b/libavcodec/ac3_parser.c index ba171653ef..a8fdde0ff9 100644 --- a/libavcodec/ac3_parser.c +++ b/libavcodec/ac3_parser.c @@ -2,6 +2,7 @@ * AC-3 parser * Copyright (c) 2003 Fabrice Bellard * Copyright (c) 2003 Michael Niedermayer + * Copyright (c) 2020 Nachiket Tarate * * This file is part of FFmpeg. * @@ -172,6 +173,47 @@ int avpriv_ac3_parse_header(AC3HeaderInfo **phdr, const uint8_t *buf, return get_bits_count(&gb); } +/* + * Parse 'dec3' EC3SpecificBox + */ +int avpriv_eac3_parse_dec3(AC3HeaderInfo **phdr, const uint8_t *buf, size_t size) +{ + GetBitContext gb; + AC3HeaderInfo *hdr; + int err; + + int data_rate, fscod, acmod, lfeon; + + if (!*phdr) + *phdr = av_mallocz(sizeof(AC3HeaderInfo)); + if (!*phdr) + return AVERROR(ENOMEM); + hdr = *phdr; + + err = init_get_bits8(&gb, buf, size); + if (err < 0) + return AVERROR_INVALIDDATA; + + data_rate = get_bits(&gb, 13); + skip_bits(&gb, 3); + fscod = get_bits(&gb, 2); + skip_bits(&gb, 10); + acmod = get_bits(&gb, 3); + lfeon = get_bits(&gb, 1); + + hdr->sample_rate = ff_ac3_sample_rate_tab[fscod]; + + hdr->channels = ff_ac3_channels_tab[acmod] + lfeon; + + hdr->channel_layout = avpriv_ac3_channel_layout_tab[acmod]; + if (lfeon) + hdr->channel_layout |= AV_CH_LOW_FREQUENCY; + + hdr->bit_rate = data_rate*1000; + + return 0; +} + int av_ac3_parse_header(const uint8_t *buf, size_t size, uint8_t *bitstream_id, uint16_t *frame_size) { @@ -256,6 +298,11 @@ int avpriv_ac3_parse_header(AC3HeaderInfo **phdr, const uint8_t *buf, return AVERROR(ENOSYS); } +int avpriv_eac3_parse_dec3(AC3HeaderInfo **phdr, const uint8_t *buf, size_t size) +{ + return AVERROR(ENOSYS); +} + int av_ac3_parse_header(const uint8_t *buf, size_t size, uint8_t *bitstream_id, uint16_t *frame_size) { diff --git a/libavcodec/ac3_parser_internal.h b/libavcodec/ac3_parser_internal.h index 3648802a73..0388a5bb5e 100644 --- a/libavcodec/ac3_parser_internal.h +++ b/libavcodec/ac3_parser_internal.h @@ -38,5 +38,9 @@ int ff_ac3_parse_header(GetBitContext *gbc, AC3HeaderInfo *hdr); int avpriv_ac3_parse_header(AC3HeaderInfo **hdr, const uint8_t *buf, size_t size); +/* + * Parse 'dec3' EC3SpecificBox + */ +int avpriv_eac3_parse_dec3(AC3HeaderInfo **phdr, const uint8_t *buf, size_t size); #endif /* AVCODEC_AC3_PARSER_INTERNAL_H */