50static const char preTab[22] = { 0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,3,3,3,2,0 };
59{ 0x00000000, 0x10000000, 0x285145f3, 0x453a5cdb,
60 0x0cb2ff53, 0x111989d6, 0x15ce31c8, 0x1ac7f203,
61 0x20000000, 0x257106b9, 0x2b16b4a3, 0x30ed74b4,
62 0x36f23fa5, 0x3d227bd3, 0x437be656, 0x49fc823c, },
64{ 0x00000000, 0x0d744fcd, 0x21e71f26, 0x3a36abd9,
65 0x0aadc084, 0x0e610e6e, 0x12560c1d, 0x168523cf,
66 0x1ae89f99, 0x1f7c03a4, 0x243bae49, 0x29249c67,
67 0x2e34420f, 0x33686f85, 0x38bf3dff, 0x3e370182, },
69{ 0x00000000, 0x0b504f33, 0x1c823e07, 0x30f39a55,
70 0x08facd62, 0x0c176319, 0x0f6b3522, 0x12efe2ad,
71 0x16a09e66, 0x1a79a317, 0x1e77e301, 0x2298d5b4,
72 0x26da56fc, 0x2b3a902a, 0x2fb7e7e7, 0x3450f650, },
74{ 0x00000000, 0x09837f05, 0x17f910d7, 0x2929c7a9,
75 0x078d0dfa, 0x0a2ae661, 0x0cf73154, 0x0fec91cb,
76 0x1306fe0a, 0x16434a6c, 0x199ee595, 0x1d17ae3d,
77 0x20abd76a, 0x2459d551, 0x28204fbb, 0x2bfe1808, },
82 0x1428a2fa, 0x15db1bd6, 0x1796302c, 0x19598d85,
83 0x1b24e8bb, 0x1cf7fcfa, 0x1ed28af2, 0x20b4582a,
84 0x229d2e6e, 0x248cdb55, 0x26832fda, 0x28800000,
85 0x2a832287, 0x2c8c70a8, 0x2e9bc5d8, 0x30b0ff99,
86 0x32cbfd4a, 0x34eca001, 0x3712ca62, 0x393e6088,
87 0x3b6f47e0, 0x3da56717, 0x3fe0a5fc, 0x4220ed72,
88 0x44662758, 0x46b03e7c, 0x48ff1e87, 0x4b52b3f3,
89 0x4daaebfd, 0x5007b497, 0x5268fc62, 0x54ceb29c,
90 0x5738c721, 0x59a72a59, 0x5c19cd35, 0x5e90a129,
91 0x610b9821, 0x638aa47f, 0x660db90f, 0x6894c90b,
92 0x6b1fc80c, 0x6daeaa0d, 0x70416360, 0x72d7e8b0,
93 0x75722ef9, 0x78102b85, 0x7ab1d3ec, 0x7d571e09,
248 int cbEndL, cbStartS, cbEndS;
249 int nSamps, nonZero, sfactMultiplier, gbMask;
250 int globalGain, gainI;
257 cbEndL = (fh->
ver ==
MPEG1 ? 8 : 6);
270 cbMax[2] = cbMax[1] = cbMax[0] = 0;
290 for (cb = 0; cb < cbEndL; cb++) {
294 gainI = 210 - globalGain + sfactMultiplier * (sfis->
l[cb] + (sis->
preFlag ? (int)preTab[cb] : 0));
296 nonZero |= DequantBlock(sampleBuf + i, sampleBuf + i, nSamps, gainI);
304 if (i >= *nonZeroBound)
316 return CLZ(gbMask) - 1;
319 cbMax[2] = cbMax[1] = cbMax[0] = cbStartS;
320 for (cb = cbStartS; cb < cbEndS; cb++) {
323 for (w = 0; w < 3; w++) {
325 gainI = 210 - globalGain + 8*sis->
subBlockGain[w] + sfactMultiplier*(sfis->
s[cb][w]);
327 nonZero |= DequantBlock(sampleBuf + i + nSamps*w, workBuf + nSamps*w, nSamps, gainI);
336 buf = (
ARRAY3 *)(sampleBuf + i);
338 for (j = 0; j < nSamps; j++) {
339 buf[j][0] = workBuf[0*nSamps + j];
340 buf[j][1] = workBuf[1*nSamps + j];
341 buf[j][2] = workBuf[2*nSamps + j];
346 if (i >= *nonZeroBound)
363 cbi->
cbEndS[0] = cbMax[0];
364 cbi->
cbEndS[1] = cbMax[1];
365 cbi->
cbEndS[2] = cbMax[2];
371 return CLZ(gbMask) - 1;