diff options
author | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2022-05-12 13:44:21 +0200 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2022-05-15 18:13:56 +0200 |
commit | 104abea6469dd290c77b9d3916d3dadac52d4f04 (patch) | |
tree | f93d2fe048cdf4d6f8067e3ffeba542c02df0844 /libavcodec | |
parent | cbd75ecc18db15f38f101991599f83af3ff48deb (diff) | |
download | ffmpeg-104abea6469dd290c77b9d3916d3dadac52d4f04.tar.gz |
avcodec/ac3: Move non-(de|en)coder-only parts out of ac3.h
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 <andreas.rheinhardt@outlook.com>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/ac3.c | 1 | ||||
-rw-r--r-- | libavcodec/ac3.h | 115 | ||||
-rw-r--r-- | libavcodec/ac3_parser.c | 2 | ||||
-rw-r--r-- | libavcodec/ac3_parser_internal.h | 41 | ||||
-rw-r--r-- | libavcodec/ac3dec.c | 1 | ||||
-rw-r--r-- | libavcodec/ac3dec_data.c | 1 | ||||
-rw-r--r-- | libavcodec/ac3defs.h | 104 | ||||
-rw-r--r-- | libavcodec/ac3dsp.c | 3 | ||||
-rw-r--r-- | libavcodec/ac3enc.c | 2 | ||||
-rw-r--r-- | libavcodec/ac3enc.h | 1 | ||||
-rw-r--r-- | libavcodec/ac3tab.c | 1 | ||||
-rw-r--r-- | libavcodec/ac3tab.h | 2 | ||||
-rw-r--r-- | libavcodec/eac3_data.c | 2 | ||||
-rw-r--r-- | libavcodec/mips/ac3dsp_mips.c | 1 | ||||
-rw-r--r-- | libavcodec/x86/ac3dsp_init.c | 1 |
15 files changed, 156 insertions, 122 deletions
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 <math.h> #include <stdint.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 - #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; @@ -172,49 +100,6 @@ typedef struct AC3BitAllocParameters { } 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 * the spectral envelope (exponents). The psd is also separately grouped 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,10 +21,49 @@ #ifndef AVCODEC_AC3_PARSER_INTERNAL_H #define AVCODEC_AC3_PARSER_INTERNAL_H -#include "ac3.h" +#include <stddef.h> +#include <stdint.h> + +#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 * depending on the audio coding mode. 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 <stdint.h> -#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 <stddef.h> #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); |