287 int offset, bitOffset, mainBits, gr, ch, fhBytes, siBytes, freeFrameBytes;
288 int prevBitOffset, sfBlockBits, huffBlockBits;
289 unsigned char *mainPtr;
306 time = systime_get();
311 MP3ClearBadFrame(mp3DecInfo, outbuf);
315 *bytesLeft -= (fhBytes + siBytes);
317 time = systime_get() - time;
318 printf(
"UnpackSideInfo: %i ms\n", time);
327 mp3DecInfo->
freeBitrateSlots = MP3FindFreeSync(*inbuf, *inbuf - fhBytes - siBytes, *bytesLeft);
329 MP3ClearBadFrame(mp3DecInfo, outbuf);
345 mp3DecInfo->
nSlots = *bytesLeft;
348 MP3ClearBadFrame(mp3DecInfo, outbuf);
355 *inbuf += mp3DecInfo->
nSlots;
356 *bytesLeft -= (mp3DecInfo->
nSlots);
359 if (mp3DecInfo->
nSlots > *bytesLeft) {
360 MP3ClearBadFrame(mp3DecInfo, outbuf);
365 time = systime_get();
374 *inbuf += mp3DecInfo->
nSlots;
375 *bytesLeft -= (mp3DecInfo->
nSlots);
381 *inbuf += mp3DecInfo->
nSlots;
382 *bytesLeft -= (mp3DecInfo->
nSlots);
383 MP3ClearBadFrame(mp3DecInfo, outbuf);
387 time = systime_get() - time;
388 printf(
"data buffer filling: %i ms\n", time);
396 for (gr = 0; gr < mp3DecInfo->
nGrans; gr++) {
397 for (ch = 0; ch < mp3DecInfo->
nChans; ch++) {
400 time = systime_get();
403 prevBitOffset = bitOffset;
406 time = systime_get() - time;
407 printf(
"UnpackScaleFactors: %i ms\n", time);
410 sfBlockBits = 8*offset - prevBitOffset + bitOffset;
411 huffBlockBits = mp3DecInfo->
part23Length[gr][ch] - sfBlockBits;
413 mainBits -= sfBlockBits;
415 if (offset < 0 || mainBits < huffBlockBits) {
416 MP3ClearBadFrame(mp3DecInfo, outbuf);
421 time = systime_get();
424 prevBitOffset = bitOffset;
425 offset =
DecodeHuffman(mp3DecInfo, mainPtr, &bitOffset, huffBlockBits, gr, ch);
427 MP3ClearBadFrame(mp3DecInfo, outbuf);
431 time = systime_get() - time;
432 printf(
"Huffman: %i ms\n", time);
436 mainBits -= (8*offset - prevBitOffset + bitOffset);
440 time = systime_get();
444 MP3ClearBadFrame(mp3DecInfo, outbuf);
448 time = systime_get() - time;
449 printf(
"Dequantize: %i ms\n", time);
453 for (ch = 0; ch < mp3DecInfo->
nChans; ch++)
456 time = systime_get();
458 if (
IMDCT(mp3DecInfo, gr, ch) < 0) {
459 MP3ClearBadFrame(mp3DecInfo, outbuf);
463 time = systime_get() - time;
464 printf(
"IMDCT: %i ms\n", time);
469 time = systime_get();
473 MP3ClearBadFrame(mp3DecInfo, outbuf);
477 time = systime_get() - time;
478 printf(
"Subband: %i ms\n", time);