MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / readQuantSpectralCoeffs

Function readQuantSpectralCoeffs

libavcodec/atrac3.c:237–285  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

235 */
236
237static void readQuantSpectralCoeffs (GetBitContext *gb, int selector, int codingFlag, int* mantissas, int numCodes)
238{
239 int numBits, cnt, code, huffSymb;
240
241 if (selector == 1)
242 numCodes /= 2;
243
244 if (codingFlag != 0) {
245 /* constant length coding (CLC) */
246 numBits = CLCLengthTab[selector];
247
248 if (selector > 1) {
249 for (cnt = 0; cnt < numCodes; cnt++) {
250 if (numBits)
251 code = get_sbits(gb, numBits);
252 else
253 code = 0;
254 mantissas[cnt] = code;
255 }
256 } else {
257 for (cnt = 0; cnt < numCodes; cnt++) {
258 if (numBits)
259 code = get_bits(gb, numBits); //numBits is always 4 in this case
260 else
261 code = 0;
262 mantissas[cnt*2] = seTab_0[code >> 2];
263 mantissas[cnt*2+1] = seTab_0[code & 3];
264 }
265 }
266 } else {
267 /* variable length coding (VLC) */
268 if (selector != 1) {
269 for (cnt = 0; cnt < numCodes; cnt++) {
270 huffSymb = get_vlc2(gb, spectral_coeff_tab[selector-1].table, spectral_coeff_tab[selector-1].bits, 3);
271 huffSymb += 1;
272 code = huffSymb >> 1;
273 if (huffSymb & 1)
274 code = -code;
275 mantissas[cnt] = code;
276 }
277 } else {
278 for (cnt = 0; cnt < numCodes; cnt++) {
279 huffSymb = get_vlc2(gb, spectral_coeff_tab[selector-1].table, spectral_coeff_tab[selector-1].bits, 3);
280 mantissas[cnt*2] = decTable1[huffSymb*2];
281 mantissas[cnt*2+1] = decTable1[huffSymb*2+1];
282 }
283 }
284 }
285}
286
287/**
288 * Restore the quantized band spectrum coefficients

Callers 2

decodeSpectrumFunction · 0.85
decodeTonalComponentsFunction · 0.85

Calls 3

get_sbitsFunction · 0.85
get_bitsFunction · 0.85
get_vlc2Function · 0.85

Tested by

no test coverage detected