91 slen0 = (int)
SFLenTab[sis->sfCompress][0];
92 slen1 = (int)
SFLenTab[sis->sfCompress][1];
94 if (sis->blockType == 2) {
96 if (sis->mixedBlock) {
98 for (sfb = 0; sfb < 8; sfb++)
99 sfis->l[sfb] = (
char)
GetBits(bsi, slen0);
106 for ( ; sfb < 6; sfb++) {
107 sfis->s[sfb][0] = (char)
GetBits(bsi, slen0);
108 sfis->s[sfb][1] = (char)
GetBits(bsi, slen0);
109 sfis->s[sfb][2] = (char)
GetBits(bsi, slen0);
112 for ( ; sfb < 12; sfb++) {
113 sfis->s[sfb][0] = (char)
GetBits(bsi, slen1);
114 sfis->s[sfb][1] = (char)
GetBits(bsi, slen1);
115 sfis->s[sfb][2] = (char)
GetBits(bsi, slen1);
119 sfis->s[12][0] = sfis->s[12][1] = sfis->s[12][2] = 0;
124 for (sfb = 0; sfb < 11; sfb++)
125 sfis->l[sfb] = (
char)
GetBits(bsi, slen0);
126 for (sfb = 11; sfb < 21; sfb++)
127 sfis->l[sfb] = (
char)
GetBits(bsi, slen1);
135 if(scfsi[0])
for( ; sfb < 6 ; sfb++) sfis->l[sfb] = sfisGr0->l[sfb];
136 else for( ; sfb < 6 ; sfb++) sfis->l[sfb] = (
char)
GetBits(bsi, slen0);
137 if(scfsi[1])
for( ; sfb <11 ; sfb++) sfis->l[sfb] = sfisGr0->l[sfb];
138 else for( ; sfb <11 ; sfb++) sfis->l[sfb] = (
char)
GetBits(bsi, slen0);
139 if(scfsi[2])
for( ; sfb <16 ; sfb++) sfis->l[sfb] = sfisGr0->l[sfb];
140 else for( ; sfb <16 ; sfb++) sfis->l[sfb] = (
char)
GetBits(bsi, slen1);
141 if(scfsi[3])
for( ; sfb <21 ; sfb++) sfis->l[sfb] = sfisGr0->l[sfb];
142 else for( ; sfb <21 ; sfb++) sfis->l[sfb] = (
char)
GetBits(bsi, slen1);
216 int i, sfb, sfcIdx, btIdx, nrIdx;
218 int sfCompress, preFlag, intensityScale;
220 sfCompress = sis->sfCompress;
225 if (! ((modeExt & 0x01) && (ch == 1)) ) {
227 if (sfCompress < 400) {
229 slen[0] = (sfCompress >> 4) / 5;
230 slen[1]= (sfCompress >> 4) % 5;
231 slen[2]= (sfCompress & 0x0f) >> 2;
232 slen[3]= (sfCompress & 0x03);
234 }
else if (sfCompress < 500) {
237 slen[0] = (sfCompress >> 2) / 5;
238 slen[1]= (sfCompress >> 2) % 5;
239 slen[2]= (sfCompress & 0x03);
245 slen[0] = sfCompress / 3;
246 slen[1] = sfCompress % 3;
247 slen[2] = slen[3] = 0;
248 if (sis->mixedBlock) {
258 intensityScale = sfCompress & 0x01;
260 if (sfCompress < 180) {
262 slen[0] = (sfCompress / 36);
263 slen[1] = (sfCompress % 36) / 6;
264 slen[2] = (sfCompress % 36) % 6;
267 }
else if (sfCompress < 244) {
270 slen[0] = (sfCompress & 0x3f) >> 4;
271 slen[1] = (sfCompress & 0x0f) >> 2;
272 slen[2] = (sfCompress & 0x03);
278 slen[0] = (sfCompress / 3);
279 slen[1] = (sfCompress % 3);
280 slen[2] = slen[3] = 0;
287 if (sis->blockType == 2)
288 btIdx = (sis->mixedBlock ? 2 : 1);
289 for (i = 0; i < 4; i++)
290 nr[i] = (
int)
NRTab[sfcIdx][btIdx][i];
293 if( (modeExt & 0x01) && (ch == 1) ) {
294 for (i = 0; i < 4; i++) {
295 sfjs->slen[i] = slen[i];
298 sfjs->intensityScale = intensityScale;
300 sis->preFlag = preFlag;
303 if(sis->blockType == 2) {
304 if(sis->mixedBlock) {
306 for (sfb=0; sfb < 6; sfb++) {
307 sfis->l[sfb] = (char)
GetBits(bsi, slen[0]);
318 for ( ; nrIdx <= 3; nrIdx++) {
319 for (i=0; i < nr[nrIdx]; i++, sfb++) {
320 sfis->s[sfb][0] = (char)
GetBits(bsi, slen[nrIdx]);
321 sfis->s[sfb][1] = (char)
GetBits(bsi, slen[nrIdx]);
322 sfis->s[sfb][2] = (char)
GetBits(bsi, slen[nrIdx]);
326 sfis->s[12][0] = sfis->s[12][1] = sfis->s[12][2] = 0;
330 for (nrIdx = 0; nrIdx <= 3; nrIdx++) {
331 for(i=0; i < nr[nrIdx]; i++, sfb++) {
332 sfis->l[sfb] = (char)
GetBits(bsi, slen[nrIdx]);
336 sfis->l[21] = sfis->l[22] = 0;
360 const unsigned char *startBuf;
367 if (!mp3DecInfo || !mp3DecInfo->FrameHeaderPS || !mp3DecInfo->SideInfoPS || !mp3DecInfo->ScaleFactorInfoPS)
370 si = ((
SideInfo *)(mp3DecInfo->SideInfoPS));
375 bsi = &bitStreamInfo;
388 buf += (bitsUsed + *bitOffset) >> 3;
389 *bitOffset = (bitsUsed + *bitOffset) & 0x07;
391 return (buf - startBuf);
static void UnpackSFMPEG1(BitStreamInfo *bsi, SideInfoSub *sis, ScaleFactorInfoSub *sfis, int32_t *scfsi, int gr, ScaleFactorInfoSub *sfisGr0) FL_NOEXCEPT
static void UnpackSFMPEG2(BitStreamInfo *bsi, SideInfoSub *sis, ScaleFactorInfoSub *sfis, int gr, int ch, int modeExt, ScaleFactorJS *sfjs) FL_NOEXCEPT