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 544AC42EBD for ; Thu, 12 May 2022 12:40:25 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id F259068AD28; Thu, 12 May 2022 15:40:23 +0300 (EEST) Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-oln040092070011.outbound.protection.outlook.com [40.92.70.11]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3DFD168B373 for ; Thu, 12 May 2022 15:40:17 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SfDP1fMBDYYm7iMhbz30qqOJpHMqjcMm/yu1BbzBLdhpxaMjMZykz+NrgPGJgCxjIu+HK8fkeoBJ2MPK8i/nWlo/0/yPAbPHXM984UIkyS49TRl9i41cwWZdsqLPUj3M20IZk57Q9JPTsnPUOMIKkOVVvr52qs/iq+ErJJHLMlaxvnO9Yheu3/0gMKyBU/faHg0KDlAP99BOiip3qZaJ0oK9VNYRtfAqn4jA0S3PuGJ0TM5rbbggH2ei08kpR7NRuaTxw//MoYu1XojOdoxQ6e1nj5m454ptRMaW1/aWqmHi790l0O+Ky4xoNSIC1q7sO0j32o/Vx1C/LCTN8A16bg== 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=+I+1NKwRLPHBIo86GGYCdgiQjADhQLgXrEYXw0gSVYA=; b=kHOoc7Sw6WlPm96sd6bKu3JVHAXFsHOOXLarF3pJa306v0aoD623i+sWbKmvNZh1ZzCs5SdmKixoOQpt6y2/yngnGhaj2Bmwr735hgnnZqFetYfW3bc8pE4983UW/77aJ1FZmNOZuwT4O6jXxVpKftrxl+oZRLMHxaxU584UI7z8HBdOBPUvrD7kWNGIHFjMHHiDnoeSbBT7xHCWv/m1Td13cVI3ALehUH/WzWwYxIFCd7DjJOuAQvjdOTIiO+AuuK4hmbSRwrUZGV3XqDg0Hb78Wxh9ZZmLyT6OE7glho4Qn64hrt4sNAruY5VQMEy4tjNsEVleWBXB9FsTU3vPYQ== 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=+I+1NKwRLPHBIo86GGYCdgiQjADhQLgXrEYXw0gSVYA=; b=nS879ViJCa3RNQRmNt6mVY/QEgmOGdWrfY9Uas0GNKvX0G//5hZSDertQYAjxfZU++Cl6lgN9+O2eV0DgWO3gUkzK7LiYGy7Q7vFhbRasyfIjlt0l1mwo+5z4dPRbgE4sUlrRziyRnoL4bdqRnmqz5dMX5PT+5B2hDXRzE23G8Ou17pQo5xJlirOKQ9L4Oi+lMRLMnWYeDU3kGvtEza8HBuD+eWIVVWfXEVoXPJO0zO5eLNS4RHZ6EGqsV9lZqKsxdHsyLrJJR0NSu8jI1g+Lby+FBDsYyC23jah6u0GMBlBQspYwNkpNp+YEEfjE66FJBOC4x/5VUrBYF0WvgC28g== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by AS4PR01MB9421.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4c8::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.13; Thu, 12 May 2022 12:40:15 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%9]) with mapi id 15.20.5227.023; Thu, 12 May 2022 12:40:15 +0000 Message-ID: Date: Thu, 12 May 2022 14:40:13 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: From: Andreas Rheinhardt In-Reply-To: X-TMN: [kN8N8n0vNCIPeUouXdUpK3aQI50atZGH] X-ClientProxiedBy: ZR0P278CA0159.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:41::8) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <7f8bbac2-6aee-0dae-8783-b8e0f107f577@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: debb48ee-1f69-4c02-a217-08da34149086 X-MS-TrafficTypeDiagnostic: AS4PR01MB9421:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: EhPYMHn9LdsILkeCh28LShAKu9qkvpv/u+XWF9xANW/D/k/ShiL+te1xwbqWFfyPABdCOmkY+Pf9YhdteF3fcdyiKUbvH+2elUEjcLGw0EOuD4kQkspYWaeTA34FgUPRJK6LzP3EIUZWj3yuUi0bfqd61TNGYBRicuQyA5HAHK1yQ8MNLozKPMRPgumZAF2Xqz+mvMdaVYu7a+ga+g5SD5L4fx3T5TYyrHugaGoxTXNMpg+czojyp91u4uVPMlqPfYGhPFoOAnxif0/cq45u9kbNLBt3sSwdKa3OP5EfJzTHVJuFzBMUNbvSk/4+jnfeTLjk7EEwnXvW8Y9YnY7MKeZYZHwL/U9yF9GKG/5+B0we9r0B2gDa7V/tDScsj3aTgZUlH2YjteKZ7pZR3v0CqfhjDHzqQD4+RmeLoeoePHk9WjD8KdBYnqcZ7EpkPbNmef+s4NdevWE74RmkJcy+7NCx7Vlgt/KtQ1k52UBmEBp9fS/v4HdzJym07P67YTyO7nrGOC2hag08YwnK0XrHhRLAP27jaOXI9AeCd3jCKAcOrI5JlE73q9uCBu/f2Yh3HyXcMmpNIzcUR+5P3sFH1Q== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OTZnc1lTS3doeFVmNWdSQ0IrR3hlRS9IemlYRlBOakxIU3VjM2VpaDZWdXN4?= =?utf-8?B?TnhwZDhpcTBqdXlYSC9rZDI0OTNVdzhDVVBWa1FmdFk2azB5Qk1ZL3drU1F3?= =?utf-8?B?UXF4b0k5KzZ0WXF2ZXFVNGgxbmRvaDZCWnZyc2NsZ2FidzltNytsSWZyRFlG?= =?utf-8?B?UG9nYWdKZ081cTZLS2hYa0JHY0E0Y0p5YWo3QmJTRHB6emVIL3dvVnVmSEF3?= =?utf-8?B?Tlh6dmszaUdTOUhULzI2QXFKNTQ0YlNtNnlFU29pVy9PMFFHeEQwMmxKbmg3?= =?utf-8?B?bVo1bEF3dUlvbXRMbkh0YTJBMjF5bk5zVU9kYk9sRUhvVGJDWkdlQ1hibG5Q?= =?utf-8?B?WlU5T2gyRk5Na21Nc0VKM2xTc3pQSjNNcjMzZkRvNzB1cWYvYVBzUnNzaXVi?= =?utf-8?B?R0VNSkJxeFBxb29DWFM3UElUZlV6RXExMXc0Vm43bWhNNlBNMVk3YWdjSHow?= =?utf-8?B?REd4RDdyd2grRklMZXlaVmRNWjVyb01DT2ZlR01Ra0lvc1ZiTEVhMEs4YVRu?= =?utf-8?B?cG5rZjNoYmVTTExvZVVkTzZicEtZdnRJRGxyckxoV21ISFRIM2htR1RqKzlr?= =?utf-8?B?MXQwWkIxMzIyLzVXR0cvZFFhQmF5VklXNG9LRktEWkhoT2srekRCbktnZVRj?= =?utf-8?B?QmxkcE9kWEhxUGgrWFFrM1B5dWRsdTJNOG1SM2EwWTFsYmRjcGJHbUNPbHFt?= =?utf-8?B?cGFTR05Pc25sN3JnYTBxb0U5Ry9GYWJXMm5oelgxU09hSjdjVC9sNnFRV2ty?= =?utf-8?B?SC8yMUtGZFpyK0hSeU5XamRxT01zUjd5a1VyNVZKeHVWYWo2V3VGN0V6TlN4?= =?utf-8?B?NDBTOGRZOHFHdEdEOGZ5RFdSZjhObGNNVTJ6bEZnVk96L016RXFuRFBuNyt0?= =?utf-8?B?aFl3ODRLWUpqcE5GRGRRcGlBWWJaeXB4bmZMRmhxa3czeCt1SmVpeWJ5cWNQ?= =?utf-8?B?V0FLM2F1dXB1SnI5aWxmaFNHalVFRjlwb2tDbjhQNC9naldXNklMZm1sUHJB?= =?utf-8?B?dTRQVTRqMm9RT0dtcms0K25iVzNWVnFtSXNBeWFIdjNGTGJzNkdpc3F4MGk4?= =?utf-8?B?OE5aWExabHJKSlB6YkZDK0tmZ1BmdjNURW1QSjBENnJMRmlEM1pSbXpnQ2V3?= =?utf-8?B?aTFMN20yQmpSY09sWEp2SVRRaUdOeFkwWEt6RkRiOW00SzluT0g3VUdlTGxy?= =?utf-8?B?THdOWGNVaURmUHZnR2JFUTFtMXdDWGMyZHp0dDYyN0ZJKzM0bThKQ0w4L3ZW?= =?utf-8?B?QUUrYU02SFpOd1pWUmZ0SzBFRlpEWTZUWVI4YldtS3c5SmJ0SnFUelZ6NElZ?= =?utf-8?B?TUtSdEo5all5Uzh0UUtCalZYZmZUTTFBa2ZQUEVwWFUzMUxSODFSQld4RTVH?= =?utf-8?B?U2RTdUJXNXIyenNHVlZBaFlTVm40ampFZjA4SW0xaHZ6SytqUGpobEMyeTNp?= =?utf-8?B?Y21ZajdURThad3RNVFh1c3kvbVdhc0VmZnJKWGxHcDBzYnlVdVdPSE5NL3FB?= =?utf-8?B?V0lYUVowWG1XRHhNV1QrK2VyMnhyQnViNGs1MUx1Y0dYYmp2aUE1Z05OQXp5?= =?utf-8?B?M2FveDBabE5RMEFzdlhUejZYNC94ZWJtODc3dnFFcDVuV2ZDcEh4QzdrV2th?= =?utf-8?B?QlVZZ0huSnBBWVdWZXJxdWc0ZXlYZloxbmZJdXVtMno5ak56SUVDWmRxSXZu?= =?utf-8?B?TjZ2b3hEUCtFaklWSUF0eWY5c080OW5CV3RCRnB6RWxlQnBKbFVqM1hONkdS?= =?utf-8?B?dWpQcXRuZlBPM25BbTZvNE5nb0RvSEE5YmdXbVVidTlZYkNTcHV6b05QRjIv?= =?utf-8?B?RGd1Z3VpVytEbnpUTTRJUVdHZ1dOdUZwTEl3bmNhbVpWRVFIaThadlBxdXlC?= =?utf-8?B?RE9La25LakxkaVVjc3lPdkZuNWlYazFqSnZmVmZ3eCtVTGVHOTFZSFlQaC93?= =?utf-8?B?eGlsc1g0QklIbXJhVWlkK3RHMklPVXdJK29aa2pYNmVtWTlsYnJ1OXdkaWZW?= =?utf-8?B?WWdjRzBTNGFBPT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: debb48ee-1f69-4c02-a217-08da34149086 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 May 2022 12:40:15.7579 (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: AS4PR01MB9421 Subject: Re: [FFmpeg-devel] [PATCH 3/3] avcodec/ac3: Move non-(de|en)coder-only parts out of ac3.h 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 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: Andreas Rheinhardt: > Move AC3HeaderInfo into ac3_parser_internal.h and the rest > into a new header ac3defs.h. > > This also breaks an include cycle of ac3.h and ac3tab.h > (the latter now only needs ac3defs.h). > > Signed-off-by: Andreas Rheinhardt > --- > libavcodec/ac3.c | 1 + > libavcodec/ac3.h | 115 ---------------------------- > libavcodec/ac3_parser.c | 2 + > libavcodec/ac3_parser_internal.h | 41 +++++++++- > libavcodec/ac3dec.c | 1 + > libavcodec/ac3dec_data.c | 1 - > libavcodec/ac3defs.h | 104 +++++++++++++++++++++++++ > libavcodec/ac3dsp.c | 3 +- > libavcodec/ac3enc.c | 2 + > libavcodec/ac3enc.h | 1 + > libavcodec/ac3tab.c | 1 - > libavcodec/ac3tab.h | 2 +- > libavcodec/eac3_data.c | 2 +- > libavcodec/mips/ac3dsp_mips.c | 1 + > libavcodec/x86/ac3dsp_init.c | 1 - > libavformat/hls_sample_encryption.c | 1 + > libavformat/spdifdec.c | 2 +- > libavformat/spdifenc.c | 2 +- > 18 files changed, 159 insertions(+), 124 deletions(-) > create mode 100644 libavcodec/ac3defs.h > > diff --git a/libavcodec/ac3.c b/libavcodec/ac3.c > index 01fb3b3d7a..60491d1a7a 100644 > --- a/libavcodec/ac3.c > +++ b/libavcodec/ac3.c > @@ -28,6 +28,7 @@ > #include "libavutil/macros.h" > > #include "ac3.h" > +#include "ac3defs.h" > > /** > * Starting frequency coefficient bin for each critical band. > diff --git a/libavcodec/ac3.h b/libavcodec/ac3.h > index 8e66d47629..29f9f9df8d 100644 > --- a/libavcodec/ac3.h > +++ b/libavcodec/ac3.h > @@ -30,28 +30,8 @@ > #include > #include > > -#define EAC3_MAX_CHANNELS 16 /**< maximum number of channels in EAC3 */ > -#define AC3_MAX_CHANNELS 7 /**< maximum number of channels, including coupling channel */ > -#define CPL_CH 0 /**< coupling channel index */ > - > -#define AC3_MAX_COEFS 256 > -#define AC3_BLOCK_SIZE 256 > -#define AC3_MAX_BLOCKS 6 > -#define AC3_FRAME_SIZE (AC3_MAX_BLOCKS * 256) > -#define AC3_WINDOW_SIZE (AC3_BLOCK_SIZE * 2) > -#define AC3_CRITICAL_BANDS 50 > -#define AC3_MAX_CPL_BANDS 18 > - > #include "ac3tab.h" > > -/* exponent encoding strategy */ > -#define EXP_REUSE 0 > -#define EXP_NEW 1 > - > -#define EXP_D15 1 > -#define EXP_D25 2 > -#define EXP_D45 3 > - > #ifndef USE_FIXED > #define USE_FIXED 0 > #endif > @@ -112,58 +92,6 @@ typedef float SHORTFLOAT; > #define LEVEL_ZERO 0.0000000000000000 > #define LEVEL_ONE 1.0000000000000000 > > -/** Delta bit allocation strategy */ > -typedef enum { > - DBA_REUSE = 0, > - DBA_NEW, > - DBA_NONE, > - DBA_RESERVED > -} AC3DeltaStrategy; > - > -/** Channel mode (audio coding mode) */ > -typedef enum { > - AC3_CHMODE_DUALMONO = 0, > - AC3_CHMODE_MONO, > - AC3_CHMODE_STEREO, > - AC3_CHMODE_3F, > - AC3_CHMODE_2F1R, > - AC3_CHMODE_3F1R, > - AC3_CHMODE_2F2R, > - AC3_CHMODE_3F2R > -} AC3ChannelMode; > - > -/** Dolby Surround mode */ > -typedef enum AC3DolbySurroundMode { > - AC3_DSURMOD_NOTINDICATED = 0, > - AC3_DSURMOD_OFF, > - AC3_DSURMOD_ON, > - AC3_DSURMOD_RESERVED > -} AC3DolbySurroundMode; > - > -/** Dolby Surround EX mode */ > -typedef enum AC3DolbySurroundEXMode { > - AC3_DSUREXMOD_NOTINDICATED = 0, > - AC3_DSUREXMOD_OFF, > - AC3_DSUREXMOD_ON, > - AC3_DSUREXMOD_PLIIZ > -} AC3DolbySurroundEXMode; > - > -/** Dolby Headphone mode */ > -typedef enum AC3DolbyHeadphoneMode { > - AC3_DHEADPHONMOD_NOTINDICATED = 0, > - AC3_DHEADPHONMOD_OFF, > - AC3_DHEADPHONMOD_ON, > - AC3_DHEADPHONMOD_RESERVED > -} AC3DolbyHeadphoneMode; > - > -/** Preferred Stereo Downmix mode */ > -typedef enum AC3PreferredStereoDownmixMode { > - AC3_DMIXMOD_NOTINDICATED = 0, > - AC3_DMIXMOD_LTRT, > - AC3_DMIXMOD_LORO, > - AC3_DMIXMOD_DPLII // reserved value in A/52, but used by encoders to indicate DPL2 > -} AC3PreferredStereoDownmixMode; > - > typedef struct AC3BitAllocParameters { > int sr_code; > int sr_shift; > @@ -171,49 +99,6 @@ typedef struct AC3BitAllocParameters { > int cpl_fast_leak, cpl_slow_leak; > } AC3BitAllocParameters; > > -/** > - * @struct AC3HeaderInfo > - * Coded AC-3 header values up to the lfeon element, plus derived values. > - */ > -typedef struct AC3HeaderInfo { > - /** @name Coded elements > - * @{ > - */ > - uint16_t sync_word; > - uint16_t crc1; > - uint8_t sr_code; > - uint8_t bitstream_id; > - uint8_t bitstream_mode; > - uint8_t channel_mode; > - uint8_t lfe_on; > - uint8_t frame_type; > - int substreamid; ///< substream identification > - int center_mix_level; ///< Center mix level index > - int surround_mix_level; ///< Surround mix level index > - uint16_t channel_map; > - int num_blocks; ///< number of audio blocks > - int dolby_surround_mode; > - /** @} */ > - > - /** @name Derived values > - * @{ > - */ > - uint8_t sr_shift; > - uint16_t sample_rate; > - uint32_t bit_rate; > - uint8_t channels; > - uint16_t frame_size; > - uint64_t channel_layout; > - /** @} */ > -} AC3HeaderInfo; > - > -typedef enum { > - EAC3_FRAME_TYPE_INDEPENDENT = 0, > - EAC3_FRAME_TYPE_DEPENDENT, > - EAC3_FRAME_TYPE_AC3_CONVERT, > - EAC3_FRAME_TYPE_RESERVED > -} EAC3FrameType; > - > /** > * Calculate the log power-spectral density of the input signal. > * This gives a rough estimate of signal power in the frequency domain by using > diff --git a/libavcodec/ac3_parser.c b/libavcodec/ac3_parser.c > index 86e8d417eb..119b1598c5 100644 > --- a/libavcodec/ac3_parser.c > +++ b/libavcodec/ac3_parser.c > @@ -25,6 +25,8 @@ > > #include "libavutil/channel_layout.h" > #include "parser.h" > +#include "ac3defs.h" > +#include "ac3tab.h" > #include "ac3_parser.h" > #include "ac3_parser_internal.h" > #include "aac_ac3_parser.h" > diff --git a/libavcodec/ac3_parser_internal.h b/libavcodec/ac3_parser_internal.h > index 3648802a73..dd57dc95a6 100644 > --- a/libavcodec/ac3_parser_internal.h > +++ b/libavcodec/ac3_parser_internal.h > @@ -21,9 +21,48 @@ > #ifndef AVCODEC_AC3_PARSER_INTERNAL_H > #define AVCODEC_AC3_PARSER_INTERNAL_H > > -#include "ac3.h" > +#include > +#include > + > +#include "ac3defs.h" > #include "get_bits.h" > > +/** > + * @struct AC3HeaderInfo > + * Coded AC-3 header values up to the lfeon element, plus derived values. > + */ > +typedef struct AC3HeaderInfo { > + /** @name Coded elements > + * @{ > + */ > + uint16_t sync_word; > + uint16_t crc1; > + uint8_t sr_code; > + uint8_t bitstream_id; > + uint8_t bitstream_mode; > + uint8_t channel_mode; > + uint8_t lfe_on; > + uint8_t frame_type; > + int substreamid; ///< substream identification > + int center_mix_level; ///< Center mix level index > + int surround_mix_level; ///< Surround mix level index > + uint16_t channel_map; > + int num_blocks; ///< number of audio blocks > + int dolby_surround_mode; > + /** @} */ > + > + /** @name Derived values > + * @{ > + */ > + uint8_t sr_shift; > + uint16_t sample_rate; > + uint32_t bit_rate; > + uint8_t channels; > + uint16_t frame_size; > + uint64_t channel_layout; > + /** @} */ > +} AC3HeaderInfo; > + > /** > * Parse AC-3 frame header. > * Parse the header up to the lfeon element, which is the first 52 or 54 bits > diff --git a/libavcodec/ac3dec.c b/libavcodec/ac3dec.c > index fe330d0d3b..ad2b3615c8 100644 > --- a/libavcodec/ac3dec.c > +++ b/libavcodec/ac3dec.c > @@ -43,6 +43,7 @@ > #include "ac3_parser_internal.h" > #include "ac3dec.h" > #include "ac3dec_data.h" > +#include "ac3defs.h" > #include "kbdwin.h" > > /** > diff --git a/libavcodec/ac3dec_data.c b/libavcodec/ac3dec_data.c > index d0a9b1ec40..a3794ab223 100644 > --- a/libavcodec/ac3dec_data.c > +++ b/libavcodec/ac3dec_data.c > @@ -25,7 +25,6 @@ > */ > > #include "ac3dec_data.h" > -#include "ac3.h" > > /** > * Table used to ungroup 3 values stored in 5 bits. > diff --git a/libavcodec/ac3defs.h b/libavcodec/ac3defs.h > new file mode 100644 > index 0000000000..ff92f0ac4a > --- /dev/null > +++ b/libavcodec/ac3defs.h > @@ -0,0 +1,104 @@ > +/* > + * Common AC-3 definitions > + * Copyright (c) 2000, 2001, 2002 Fabrice Bellard > + * > + * This file is part of FFmpeg. > + * > + * FFmpeg is free software; you can redistribute it and/or > + * modify it under the terms of the GNU Lesser General Public > + * License as published by the Free Software Foundation; either > + * version 2.1 of the License, or (at your option) any later version. > + * > + * FFmpeg is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + * Lesser General Public License for more details. > + * > + * You should have received a copy of the GNU Lesser General Public > + * License along with FFmpeg; if not, write to the Free Software > + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA > + */ > + > +#ifndef AVCODEC_AC3DEFS_H > +#define AVCODEC_AC3DEFS_H > + > +#define EAC3_MAX_CHANNELS 16 /**< maximum number of channels in EAC3 */ > +#define AC3_MAX_CHANNELS 7 /**< maximum number of channels, including coupling channel */ > +#define CPL_CH 0 /**< coupling channel index */ > + > +#define AC3_MAX_COEFS 256 > +#define AC3_BLOCK_SIZE 256 > +#define AC3_MAX_BLOCKS 6 > +#define AC3_FRAME_SIZE (AC3_MAX_BLOCKS * 256) > +#define AC3_WINDOW_SIZE (AC3_BLOCK_SIZE * 2) > +#define AC3_CRITICAL_BANDS 50 > +#define AC3_MAX_CPL_BANDS 18 > + > +/* exponent encoding strategy */ > +#define EXP_REUSE 0 > +#define EXP_NEW 1 > + > +#define EXP_D15 1 > +#define EXP_D25 2 > +#define EXP_D45 3 > + > +/** Delta bit allocation strategy */ > +typedef enum { > + DBA_REUSE = 0, > + DBA_NEW, > + DBA_NONE, > + DBA_RESERVED > +} AC3DeltaStrategy; > + > +/** Channel mode (audio coding mode) */ > +typedef enum { > + AC3_CHMODE_DUALMONO = 0, > + AC3_CHMODE_MONO, > + AC3_CHMODE_STEREO, > + AC3_CHMODE_3F, > + AC3_CHMODE_2F1R, > + AC3_CHMODE_3F1R, > + AC3_CHMODE_2F2R, > + AC3_CHMODE_3F2R > +} AC3ChannelMode; > + > +/** Dolby Surround mode */ > +typedef enum AC3DolbySurroundMode { > + AC3_DSURMOD_NOTINDICATED = 0, > + AC3_DSURMOD_OFF, > + AC3_DSURMOD_ON, > + AC3_DSURMOD_RESERVED > +} AC3DolbySurroundMode; > + > +/** Dolby Surround EX mode */ > +typedef enum AC3DolbySurroundEXMode { > + AC3_DSUREXMOD_NOTINDICATED = 0, > + AC3_DSUREXMOD_OFF, > + AC3_DSUREXMOD_ON, > + AC3_DSUREXMOD_PLIIZ > +} AC3DolbySurroundEXMode; > + > +/** Dolby Headphone mode */ > +typedef enum AC3DolbyHeadphoneMode { > + AC3_DHEADPHONMOD_NOTINDICATED = 0, > + AC3_DHEADPHONMOD_OFF, > + AC3_DHEADPHONMOD_ON, > + AC3_DHEADPHONMOD_RESERVED > +} AC3DolbyHeadphoneMode; > + > +/** Preferred Stereo Downmix mode */ > +typedef enum AC3PreferredStereoDownmixMode { > + AC3_DMIXMOD_NOTINDICATED = 0, > + AC3_DMIXMOD_LTRT, > + AC3_DMIXMOD_LORO, > + AC3_DMIXMOD_DPLII // reserved value in A/52, but used by encoders to indicate DPL2 > +} AC3PreferredStereoDownmixMode; > + > +typedef enum { > + EAC3_FRAME_TYPE_INDEPENDENT = 0, > + EAC3_FRAME_TYPE_DEPENDENT, > + EAC3_FRAME_TYPE_AC3_CONVERT, > + EAC3_FRAME_TYPE_RESERVED > +} EAC3FrameType; > + > +#endif /* AVCODEC_AC3DEFS_H */ > diff --git a/libavcodec/ac3dsp.c b/libavcodec/ac3dsp.c > index d006ca8c0a..b41f436967 100644 > --- a/libavcodec/ac3dsp.c > +++ b/libavcodec/ac3dsp.c > @@ -29,8 +29,9 @@ > #include "libavutil/intmath.h" > #include "libavutil/mem_internal.h" > > -#include "ac3.h" > +#include "ac3defs.h" > #include "ac3dsp.h" > +#include "ac3tab.h" > #include "mathops.h" > > static void ac3_exponent_min_c(uint8_t *exp, int num_reuse_blocks, int nb_coefs) > diff --git a/libavcodec/ac3enc.c b/libavcodec/ac3enc.c > index 7efa1d122c..c57904b01b 100644 > --- a/libavcodec/ac3enc.c > +++ b/libavcodec/ac3enc.c > @@ -47,6 +47,8 @@ > #include "audiodsp.h" > #include "ac3dsp.h" > #include "ac3.h" > +#include "ac3defs.h" > +#include "ac3tab.h" > #include "fft.h" > #include "ac3enc.h" > #include "eac3enc.h" > diff --git a/libavcodec/ac3enc.h b/libavcodec/ac3enc.h > index d87ec94096..f0dc006759 100644 > --- a/libavcodec/ac3enc.h > +++ b/libavcodec/ac3enc.h > @@ -32,6 +32,7 @@ > > #include "libavutil/opt.h" > #include "ac3.h" > +#include "ac3defs.h" > #include "ac3dsp.h" > #include "avcodec.h" > #include "codec_internal.h" > diff --git a/libavcodec/ac3tab.c b/libavcodec/ac3tab.c > index 9344368a99..48c89a8ba0 100644 > --- a/libavcodec/ac3tab.c > +++ b/libavcodec/ac3tab.c > @@ -26,7 +26,6 @@ > > #include "libavutil/channel_layout.h" > > -#include "ac3.h" > #include "ac3tab.h" > > /** > diff --git a/libavcodec/ac3tab.h b/libavcodec/ac3tab.h > index 2d8d3a57f9..2531d80677 100644 > --- a/libavcodec/ac3tab.h > +++ b/libavcodec/ac3tab.h > @@ -24,7 +24,7 @@ > > #include > > -#include "ac3.h" > +#include "ac3defs.h" > > extern const uint16_t ff_ac3_frame_size_tab[38][3]; > extern const uint8_t ff_ac3_channels_tab[8]; > diff --git a/libavcodec/eac3_data.c b/libavcodec/eac3_data.c > index 2ef0e2053c..d556d35b82 100644 > --- a/libavcodec/eac3_data.c > +++ b/libavcodec/eac3_data.c > @@ -27,7 +27,7 @@ > #include > > #include "eac3_data.h" > -#include "ac3.h" > +#include "ac3defs.h" > > const uint8_t ff_eac3_bits_vs_hebap[20] = { > 0, 2, 3, 4, 5, 7, 8, 9, 3, 4, > diff --git a/libavcodec/mips/ac3dsp_mips.c b/libavcodec/mips/ac3dsp_mips.c > index e5cee16081..8f62c03aaf 100644 > --- a/libavcodec/mips/ac3dsp_mips.c > +++ b/libavcodec/mips/ac3dsp_mips.c > @@ -56,6 +56,7 @@ > #include "config.h" > #include "libavcodec/ac3dsp.h" > #include "libavcodec/ac3.h" > +#include "libavcodec/ac3tab.h" > #include "libavutil/mips/asmdefs.h" > > #if HAVE_INLINE_ASM > diff --git a/libavcodec/x86/ac3dsp_init.c b/libavcodec/x86/ac3dsp_init.c > index 923c3e0a31..5f20e6dc31 100644 > --- a/libavcodec/x86/ac3dsp_init.c > +++ b/libavcodec/x86/ac3dsp_init.c > @@ -22,7 +22,6 @@ > #include "libavutil/attributes.h" > #include "libavutil/x86/asm.h" > #include "libavutil/x86/cpu.h" > -#include "libavcodec/ac3.h" > #include "libavcodec/ac3dsp.h" > > void ff_ac3_exponent_min_mmx (uint8_t *exp, int num_reuse_blocks, int nb_coefs); > diff --git a/libavformat/hls_sample_encryption.c b/libavformat/hls_sample_encryption.c > index 08cdf964b6..089662905b 100644 > --- a/libavformat/hls_sample_encryption.c > +++ b/libavformat/hls_sample_encryption.c > @@ -33,6 +33,7 @@ > > #include "libavcodec/adts_header.h" > #include "libavcodec/adts_parser.h" > +#include "libavcodec/ac3tab.h" > #include "libavcodec/ac3_parser_internal.h" > > > diff --git a/libavformat/spdifdec.c b/libavformat/spdifdec.c > index e39a304247..2af75ca9db 100644 > --- a/libavformat/spdifdec.c > +++ b/libavformat/spdifdec.c > @@ -27,7 +27,7 @@ > > #include "libavutil/bswap.h" > > -#include "libavcodec/ac3.h" > +#include "libavcodec/ac3defs.h" > #include "libavcodec/adts_parser.h" > > #include "avformat.h" > diff --git a/libavformat/spdifenc.c b/libavformat/spdifenc.c > index 3be89328df..0a634e4232 100644 > --- a/libavformat/spdifenc.c > +++ b/libavformat/spdifenc.c > @@ -49,7 +49,7 @@ > #include "avformat.h" > #include "avio_internal.h" > #include "spdif.h" > -#include "libavcodec/ac3.h" > +#include "libavcodec/ac3defs.h" > #include "libavcodec/adts_parser.h" > #include "libavcodec/dca.h" > #include "libavcodec/dca_syncwords.h" Btw: Some of the arrays declared in ac3tab.h are only used by ac3.h. If these declarations (in particular ff_ac3_band_start_tab) were moved to ac3.h, ac3tab.h would no longer need AC3_CRITICAL_BANDS and therefore no longer need ac3.h/ac3defs.h. This is another way to break this cycle. - Andreas _______________________________________________ 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".