FastLED 3.9.15
Loading...
Searching...
No Matches

◆ UnpackScaleFactors()

int fl::third_party::UnpackScaleFactors ( MP3DecInfo * mp3DecInfo,
const unsigned char * buf,
int * bitOffset,
int bitsAvail,
int gr,
int ch )

Definition at line 357 of file scalfact.hpp.

358{
359 int bitsUsed;
360 const unsigned char *startBuf;
361 BitStreamInfo bitStreamInfo, *bsi;
362 FrameHeader *fh;
363 SideInfo *si;
364 ScaleFactorInfo *sfi;
365
366 /* validate pointers */
367 if (!mp3DecInfo || !mp3DecInfo->FrameHeaderPS || !mp3DecInfo->SideInfoPS || !mp3DecInfo->ScaleFactorInfoPS)
368 return -1;
369 fh = ((FrameHeader *)(mp3DecInfo->FrameHeaderPS));
370 si = ((SideInfo *)(mp3DecInfo->SideInfoPS));
371 sfi = ((ScaleFactorInfo *)(mp3DecInfo->ScaleFactorInfoPS));
372
373 /* init GetBits reader */
374 startBuf = buf;
375 bsi = &bitStreamInfo;
376 SetBitstreamPointer(bsi, (bitsAvail + *bitOffset + 7) / 8, buf);
377 if (*bitOffset)
378 GetBits(bsi, *bitOffset);
379
380 if (fh->ver == MPEG1)
381 UnpackSFMPEG1(bsi, &si->sis[gr][ch], &sfi->sfis[gr][ch], si->scfsi[ch], gr, &sfi->sfis[0][ch]);
382 else
383 UnpackSFMPEG2(bsi, &si->sis[gr][ch], &sfi->sfis[gr][ch], gr, ch, fh->modeExt, &sfi->sfjs);
384
385 mp3DecInfo->part23Length[gr][ch] = si->sis[gr][ch].part23Length;
386
387 bitsUsed = CalcBitsUsed(bsi, buf, *bitOffset);
388 buf += (bitsUsed + *bitOffset) >> 3;
389 *bitOffset = (bitsUsed + *bitOffset) & 0x07;
390
391 return (buf - startBuf);
392}
int part23Length[MAX_NGRAN][MAX_NCHAN]
Definition mp3common.h:96
void * FrameHeaderPS
Definition mp3common.h:68
void * ScaleFactorInfoPS
Definition mp3common.h:70
void * SideInfoPS
Definition mp3common.h:69
@ MPEG1
Definition mp3dec.h:83
struct fl::third_party::_BitStreamInfo BitStreamInfo
struct fl::third_party::_FrameHeader FrameHeader
uint32_t GetBits(BitStreamInfo *bsi, int32_t nBits) FL_NOEXCEPT
void SetBitstreamPointer(BitStreamInfo *bsi, int32_t nBytes, const unsigned char *buf) FL_NOEXCEPT
Definition bitstream.hpp:65
struct fl::third_party::_SideInfo SideInfo
static void UnpackSFMPEG1(BitStreamInfo *bsi, SideInfoSub *sis, ScaleFactorInfoSub *sfis, int32_t *scfsi, int gr, ScaleFactorInfoSub *sfisGr0) FL_NOEXCEPT
Definition scalfact.hpp:85
struct fl::third_party::_ScaleFactorInfo ScaleFactorInfo
static void UnpackSFMPEG2(BitStreamInfo *bsi, SideInfoSub *sis, ScaleFactorInfoSub *sfis, int gr, int ch, int modeExt, ScaleFactorJS *sfjs) FL_NOEXCEPT
Definition scalfact.hpp:212
int32_t CalcBitsUsed(BitStreamInfo *bsi, const unsigned char *startBuf, int32_t startOffset) FL_NOEXCEPT
ScaleFactorInfoSub sfis[MAX_NGRAN][MAX_NCHAN]
Definition coder.h:270
SideInfoSub sis[MAX_NGRAN][MAX_NCHAN]
Definition coder.h:200
int32_t scfsi[MAX_NCHAN][MAX_SCFBD]
Definition coder.h:198

References CalcBitsUsed(), FL_NOEXCEPT, GetBits(), fl::third_party::_FrameHeader::modeExt, MPEG1, fl::third_party::_SideInfoSub::part23Length, fl::third_party::_SideInfo::scfsi, SetBitstreamPointer(), fl::third_party::_ScaleFactorInfo::sfis, fl::third_party::_ScaleFactorInfo::sfjs, fl::third_party::_SideInfo::sis, UnpackSFMPEG1(), UnpackSFMPEG2(), and fl::third_party::_FrameHeader::ver.

Referenced by MP3Decode().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: