Mercurial > libavcodec.hg
comparison ac3dec.h @ 7021:49afffc0dc60 libavcodec
cosmetics: reorder decode context fields into logical groups
author | jbr |
---|---|
date | Sat, 07 Jun 2008 22:30:22 +0000 |
parents | 40a2db8dbaa2 |
children | b4753ad6e34d |
comparison
equal
deleted
inserted
replaced
7020:40a2db8dbaa2 | 7021:49afffc0dc60 |
---|---|
39 #define CPL_CH 0 | 39 #define CPL_CH 0 |
40 | 40 |
41 #define AC3_OUTPUT_LFEON 8 | 41 #define AC3_OUTPUT_LFEON 8 |
42 | 42 |
43 typedef struct { | 43 typedef struct { |
44 AVCodecContext *avctx; ///< parent context | |
45 GetBitContext gbc; ///< bitstream reader | |
46 uint8_t *input_buffer; ///< temp buffer to prevent overread | |
47 | |
48 ///@defgroup bsi bit stream information | |
49 ///@{ | |
50 int frame_type; ///< frame type (strmtyp) | |
51 int substreamid; ///< substream identification | |
52 int frame_size; ///< current frame size, in bytes | |
53 int bit_rate; ///< stream bit rate, in bits-per-second | |
54 int sample_rate; ///< sample frequency, in Hz | |
44 int num_blocks; ///< number of audio blocks | 55 int num_blocks; ///< number of audio blocks |
45 int channel_mode; ///< channel mode (acmod) | 56 int channel_mode; ///< channel mode (acmod) |
46 int block_switch[AC3_MAX_CHANNELS]; ///< block switch flags | 57 int lfe_on; ///< lfe channel in use |
47 int dither_flag[AC3_MAX_CHANNELS]; ///< dither flags | 58 int center_mix_level; ///< Center mix level index |
48 int dither_all; ///< true if all channels are dithered | 59 int surround_mix_level; ///< Surround mix level index |
60 ///@} | |
61 | |
62 ///@defgroup cpl standard coupling | |
49 int cpl_in_use; ///< coupling in use | 63 int cpl_in_use; ///< coupling in use |
50 int channel_in_cpl[AC3_MAX_CHANNELS]; ///< channel in coupling | 64 int channel_in_cpl[AC3_MAX_CHANNELS]; ///< channel in coupling |
51 int phase_flags_in_use; ///< phase flags in use | 65 int phase_flags_in_use; ///< phase flags in use |
52 int phase_flags[18]; ///< phase flags | 66 int phase_flags[18]; ///< phase flags |
67 int num_cpl_subbands; ///< number of coupling sub bands | |
68 int num_cpl_bands; ///< number of coupling bands | |
53 int cpl_band_struct[18]; ///< coupling band structure | 69 int cpl_band_struct[18]; ///< coupling band structure |
70 int cpl_coords[AC3_MAX_CHANNELS][18]; ///< coupling coordinates | |
71 ///@} | |
72 | |
73 ///@defgroup channel channel | |
74 int fbw_channels; ///< number of full-bandwidth channels | |
75 int channels; ///< number of total channels | |
76 int lfe_ch; ///< index of LFE channel | |
77 float downmix_coeffs[AC3_MAX_CHANNELS][2]; ///< stereo downmix coefficients | |
78 float downmix_coeff_adjust[2]; ///< adjustment needed for each output channel when downmixing | |
79 int downmixed; ///< indicates if coeffs are currently downmixed | |
80 int output_mode; ///< output channel configuration | |
81 int out_channels; ///< number of output channels | |
82 ///@} | |
83 | |
84 ///@defgroup dynrng dynamic range | |
85 float dynamic_range[2]; ///< dynamic range | |
86 ///@} | |
87 | |
88 ///@defgroup bandwidth bandwidth | |
89 int start_freq[AC3_MAX_CHANNELS]; ///< start frequency bin | |
90 int end_freq[AC3_MAX_CHANNELS]; ///< end frequency bin | |
91 ///@} | |
92 | |
93 ///@defgroup rematrixing rematrixing | |
54 int num_rematrixing_bands; ///< number of rematrixing bands | 94 int num_rematrixing_bands; ///< number of rematrixing bands |
55 int rematrixing_flags[4]; ///< rematrixing flags | 95 int rematrixing_flags[4]; ///< rematrixing flags |
96 ///@} | |
97 | |
98 ///@defgroup exponents exponents | |
99 int num_exp_groups[AC3_MAX_CHANNELS]; ///< Number of exponent groups | |
100 int8_t dexps[AC3_MAX_CHANNELS][256]; ///< decoded exponents | |
56 int exp_strategy[AC3_MAX_CHANNELS]; ///< exponent strategies | 101 int exp_strategy[AC3_MAX_CHANNELS]; ///< exponent strategies |
102 ///@} | |
103 | |
104 ///@defgroup bitalloc bit allocation | |
105 AC3BitAllocParameters bit_alloc_params; ///< bit allocation parameters | |
57 int snr_offset[AC3_MAX_CHANNELS]; ///< signal-to-noise ratio offsets | 106 int snr_offset[AC3_MAX_CHANNELS]; ///< signal-to-noise ratio offsets |
58 int fast_gain[AC3_MAX_CHANNELS]; ///< fast gain values (signal-to-mask ratio) | 107 int fast_gain[AC3_MAX_CHANNELS]; ///< fast gain values (signal-to-mask ratio) |
108 uint8_t bap[AC3_MAX_CHANNELS][256]; ///< bit allocation pointers | |
109 int16_t psd[AC3_MAX_CHANNELS][256]; ///< scaled exponents | |
110 int16_t band_psd[AC3_MAX_CHANNELS][50]; ///< interpolated exponents | |
111 int16_t mask[AC3_MAX_CHANNELS][50]; ///< masking curve values | |
59 int dba_mode[AC3_MAX_CHANNELS]; ///< delta bit allocation mode | 112 int dba_mode[AC3_MAX_CHANNELS]; ///< delta bit allocation mode |
60 int dba_nsegs[AC3_MAX_CHANNELS]; ///< number of delta segments | 113 int dba_nsegs[AC3_MAX_CHANNELS]; ///< number of delta segments |
61 uint8_t dba_offsets[AC3_MAX_CHANNELS][8]; ///< delta segment offsets | 114 uint8_t dba_offsets[AC3_MAX_CHANNELS][8]; ///< delta segment offsets |
62 uint8_t dba_lengths[AC3_MAX_CHANNELS][8]; ///< delta segment lengths | 115 uint8_t dba_lengths[AC3_MAX_CHANNELS][8]; ///< delta segment lengths |
63 uint8_t dba_values[AC3_MAX_CHANNELS][8]; ///< delta values for each segment | 116 uint8_t dba_values[AC3_MAX_CHANNELS][8]; ///< delta values for each segment |
117 ///@} | |
64 | 118 |
65 int sample_rate; ///< sample frequency, in Hz | 119 ///@defgroup dithering zero-mantissa dithering |
66 int bit_rate; ///< stream bit rate, in bits-per-second | 120 int dither_all; ///< true if all channels are dithered |
67 int frame_type; ///< frame type (strmtyp) | 121 int dither_flag[AC3_MAX_CHANNELS]; ///< dither flags |
68 int substreamid; ///< substream identification | 122 AVRandomState dith_state; ///< for dither generation |
69 int frame_size; ///< current frame size, in bytes | 123 ///@} |
70 | 124 |
71 int channels; ///< number of total channels | 125 ///@defgroup imdct IMDCT |
72 int fbw_channels; ///< number of full-bandwidth channels | 126 int block_switch[AC3_MAX_CHANNELS]; ///< block switch flags |
73 int lfe_on; ///< lfe channel in use | |
74 int lfe_ch; ///< index of LFE channel | |
75 int output_mode; ///< output channel configuration | |
76 int out_channels; ///< number of output channels | |
77 | |
78 int center_mix_level; ///< Center mix level index | |
79 int surround_mix_level; ///< Surround mix level index | |
80 float downmix_coeffs[AC3_MAX_CHANNELS][2]; ///< stereo downmix coefficients | |
81 float downmix_coeff_adjust[2]; ///< adjustment needed for each output channel when downmixing | |
82 float dynamic_range[2]; ///< dynamic range | |
83 int cpl_coords[AC3_MAX_CHANNELS][18]; ///< coupling coordinates | |
84 int num_cpl_bands; ///< number of coupling bands | |
85 int num_cpl_subbands; ///< number of coupling sub bands | |
86 int start_freq[AC3_MAX_CHANNELS]; ///< start frequency bin | |
87 int end_freq[AC3_MAX_CHANNELS]; ///< end frequency bin | |
88 AC3BitAllocParameters bit_alloc_params; ///< bit allocation parameters | |
89 | |
90 int num_exp_groups[AC3_MAX_CHANNELS]; ///< Number of exponent groups | |
91 int8_t dexps[AC3_MAX_CHANNELS][256]; ///< decoded exponents | |
92 uint8_t bap[AC3_MAX_CHANNELS][256]; ///< bit allocation pointers | |
93 int16_t psd[AC3_MAX_CHANNELS][256]; ///< scaled exponents | |
94 int16_t band_psd[AC3_MAX_CHANNELS][50]; ///< interpolated exponents | |
95 int16_t mask[AC3_MAX_CHANNELS][50]; ///< masking curve values | |
96 | |
97 int fixed_coeffs[AC3_MAX_CHANNELS][256]; ///> fixed-point transform coefficients | |
98 DECLARE_ALIGNED_16(float, transform_coeffs[AC3_MAX_CHANNELS][256]); ///< transform coefficients | |
99 int downmixed; ///< indicates if coeffs are currently downmixed | |
100 | |
101 /* For IMDCT. */ | |
102 MDCTContext imdct_512; ///< for 512 sample IMDCT | 127 MDCTContext imdct_512; ///< for 512 sample IMDCT |
103 MDCTContext imdct_256; ///< for 256 sample IMDCT | 128 MDCTContext imdct_256; ///< for 256 sample IMDCT |
129 ///@} | |
130 | |
131 ///@defgroup opt optimization | |
104 DSPContext dsp; ///< for optimization | 132 DSPContext dsp; ///< for optimization |
105 float add_bias; ///< offset for float_to_int16 conversion | 133 float add_bias; ///< offset for float_to_int16 conversion |
106 float mul_bias; ///< scaling for float_to_int16 conversion | 134 float mul_bias; ///< scaling for float_to_int16 conversion |
135 ///@} | |
107 | 136 |
137 int fixed_coeffs[AC3_MAX_CHANNELS][256]; ///> fixed-point transform coefficients | |
138 | |
139 ///@defgroup arrays aligned arrays | |
140 DECLARE_ALIGNED_16(float, transform_coeffs[AC3_MAX_CHANNELS][256]); ///< transform coefficients | |
141 DECLARE_ALIGNED_16(float, delay[AC3_MAX_CHANNELS][256]); ///< delay - added to the next block | |
142 DECLARE_ALIGNED_16(float, window[256]); ///< window coefficients | |
143 DECLARE_ALIGNED_16(float, tmp_output[512]); ///< temporary storage for output before windowing | |
144 DECLARE_ALIGNED_16(float, tmp_imdct[256]); ///< temporary storage for imdct transform | |
108 DECLARE_ALIGNED_16(float, output[AC3_MAX_CHANNELS][256]); ///< output after imdct transform and windowing | 145 DECLARE_ALIGNED_16(float, output[AC3_MAX_CHANNELS][256]); ///< output after imdct transform and windowing |
109 DECLARE_ALIGNED_16(short, int_output[AC3_MAX_CHANNELS-1][256]); ///< final 16-bit integer output | 146 DECLARE_ALIGNED_16(short, int_output[AC3_MAX_CHANNELS-1][256]); ///< final 16-bit integer output |
110 DECLARE_ALIGNED_16(float, delay[AC3_MAX_CHANNELS][256]); ///< delay - added to the next block | 147 ///@} |
111 DECLARE_ALIGNED_16(float, tmp_imdct[256]); ///< temporary storage for imdct transform | |
112 DECLARE_ALIGNED_16(float, tmp_output[512]); ///< temporary storage for output before windowing | |
113 DECLARE_ALIGNED_16(float, window[256]); ///< window coefficients | |
114 | |
115 /* Miscellaneous. */ | |
116 GetBitContext gbc; ///< bitstream reader | |
117 AVRandomState dith_state; ///< for dither generation | |
118 AVCodecContext *avctx; ///< parent context | |
119 uint8_t *input_buffer; ///< temp buffer to prevent overread | |
120 } AC3DecodeContext; | 148 } AC3DecodeContext; |
121 | 149 |
122 #endif /* FFMPEG_AC3DEC_H */ | 150 #endif /* FFMPEG_AC3DEC_H */ |