Mercurial > libavcodec.hg
comparison aac.h @ 7578:a05954c505ab libavcodec
More OKed sections of AAC decoder code
author | superdump |
---|---|
date | Fri, 15 Aug 2008 00:05:09 +0000 |
parents | 4fca7939ad48 |
children | c49ab52db74c |
comparison
equal
deleted
inserted
replaced
7577:ed956c3c2cf3 | 7578:a05954c505ab |
---|---|
133 }; | 133 }; |
134 | 134 |
135 /** | 135 /** |
136 * Individual Channel Stream | 136 * Individual Channel Stream |
137 */ | 137 */ |
138 typedef struct { | |
139 uint8_t max_sfb; ///< number of scalefactor bands per group | |
140 enum WindowSequence window_sequence[2]; | |
141 uint8_t use_kb_window[2]; ///< If set, use Kaiser-Bessel window, otherwise use a sinus window. | |
142 int num_window_groups; | |
143 uint8_t group_len[8]; | |
144 const uint16_t *swb_offset; ///< table of offsets to the lowest spectral coefficient of a scalefactor band, sfb, for a particular window | |
145 int num_swb; ///< number of scalefactor window bands | |
146 int num_windows; | |
147 int tns_max_bands; | |
148 } IndividualChannelStream; | |
138 | 149 |
139 /** | 150 /** |
140 * Dynamic Range Control - decoded from the bitstream but not processed further. | 151 * Dynamic Range Control - decoded from the bitstream but not processed further. |
141 */ | 152 */ |
142 typedef struct { | 153 typedef struct { |
161 | 172 |
162 /** | 173 /** |
163 * coupling parameters | 174 * coupling parameters |
164 */ | 175 */ |
165 typedef struct { | 176 typedef struct { |
177 enum CouplingPoint coupling_point; ///< The point during decoding at which coupling is applied. | |
178 int num_coupled; ///< number of target elements | |
179 enum RawDataBlockType type[8]; ///< Type of channel element to be coupled - SCE or CPE. | |
180 int id_select[8]; ///< element id | |
181 int ch_select[8]; /**< [0] shared list of gains; [1] list of gains for left channel; | |
182 * [2] list of gains for right channel; [3] lists of gains for both channels | |
183 */ | |
184 float gain[16][120]; | |
185 } ChannelCoupling; | |
186 | |
187 /** | |
188 * Single Channel Element - used for both SCE and LFE elements. | |
189 */ | |
190 typedef struct { | |
191 IndividualChannelStream ics; | |
192 TemporalNoiseShaping tns; | |
193 enum BandType band_type[120]; ///< band types | |
194 int band_type_run_end[120]; ///< band type run end points | |
195 float sf[120]; ///< scalefactors | |
196 DECLARE_ALIGNED_16(float, coeffs[1024]); ///< coefficients for IMDCT | |
197 DECLARE_ALIGNED_16(float, saved[1024]); ///< overlap | |
198 DECLARE_ALIGNED_16(float, ret[1024]); ///< PCM output | |
199 } SingleChannelElement; | |
200 | |
201 /** | |
202 * channel element - generic struct for SCE/CPE/CCE/LFE | |
203 */ | |
204 typedef struct { | |
205 // CPE specific | |
206 uint8_t ms_mask[120]; ///< Set if mid/side stereo is used for each scalefactor window band | |
207 // shared | |
208 SingleChannelElement ch[2]; | |
209 // CCE specific | |
210 ChannelCoupling coup; | |
211 } ChannelElement; | |
166 | 212 |
167 /** | 213 /** |
168 * main AAC context | 214 * main AAC context |
169 */ | 215 */ |
170 typedef struct { | 216 typedef struct { |