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 {