📄 coder.h.svn-base
字号:
unsigned char icsResBit; unsigned char winSequence; unsigned char winShape; unsigned char maxSFB; unsigned char sfGroup; unsigned char predictorDataPresent; unsigned char predictorReset; unsigned char predictorResetGroupNum; unsigned char predictionUsed[MAX_PRED_SFB]; unsigned char numWinGroup; unsigned char winGroupLen[MAX_WIN_GROUPS];} ICSInfo;typedef struct _ADTSHeader { /* fixed */ unsigned char id; /* MPEG bit - should be 1 */ unsigned char layer; /* MPEG layer - should be 0 */ unsigned char protectBit; /* 0 = CRC word follows, 1 = no CRC word */ unsigned char profile; /* 0 = main, 1 = LC, 2 = SSR, 3 = reserved */ unsigned char sampRateIdx; /* sample rate index range = [0, 11] */ unsigned char privateBit; /* ignore */ unsigned char channelConfig; /* 0 = implicit, >0 = use default table */ unsigned char origCopy; /* 0 = copy, 1 = original */ unsigned char home; /* ignore */ /* variable */ unsigned char copyBit; /* 1 bit of the 72-bit copyright ID (transmitted as 1 bit per frame) */ unsigned char copyStart; /* 1 = this bit starts the 72-bit ID, 0 = it does not */ int frameLength; /* length of frame */ int bufferFull; /* number of 32-bit words left in enc buffer, 0x7FF = VBR */ unsigned char numRawDataBlocks; /* number of raw data blocks in frame */ /* CRC */ int crcCheckWord; /* 16-bit CRC check word (present if protectBit == 0) */} ADTSHeader;typedef struct _ADIFHeader { unsigned char copyBit; /* 0 = no copyright ID, 1 = 72-bit copyright ID follows immediately */ unsigned char origCopy; /* 0 = copy, 1 = original */ unsigned char home; /* ignore */ unsigned char bsType; /* bitstream type: 0 = CBR, 1 = VBR */ int bitRate; /* bitRate: CBR = bits/sec, VBR = peak bits/frame, 0 = unknown */ unsigned char numPCE; /* number of program config elements (max = 16) */ int bufferFull; /* bits left in bit reservoir */ unsigned char copyID[ADIF_COPYID_SIZE]; /* optional 72-bit copyright ID */} ADIFHeader;/* sizeof(ProgConfigElement) = 82 bytes (if KEEP_PCE_COMMENTS not defined) */typedef struct _ProgConfigElement { unsigned char elemInstTag; /* element instance tag */ unsigned char profile; /* 0 = main, 1 = LC, 2 = SSR, 3 = reserved */ unsigned char sampRateIdx; /* sample rate index range = [0, 11] */ unsigned char numFCE; /* number of front channel elements (max = 15) */ unsigned char numSCE; /* number of side channel elements (max = 15) */ unsigned char numBCE; /* number of back channel elements (max = 15) */ unsigned char numLCE; /* number of LFE channel elements (max = 3) */ unsigned char numADE; /* number of associated data elements (max = 7) */ unsigned char numCCE; /* number of valid channel coupling elements (max = 15) */ unsigned char monoMixdown; /* mono mixdown: bit 4 = present flag, bits 3-0 = element number */ unsigned char stereoMixdown; /* stereo mixdown: bit 4 = present flag, bits 3-0 = element number */ unsigned char matrixMixdown; /* matrix mixdown: bit 4 = present flag, bit 3 = unused, bits 2-1 = index, bit 0 = pseudo-surround enable */ unsigned char fce[MAX_NUM_FCE]; /* front element channel pair: bit 4 = SCE/CPE flag, bits 3-0 = inst tag */ unsigned char sce[MAX_NUM_SCE]; /* side element channel pair: bit 4 = SCE/CPE flag, bits 3-0 = inst tag */ unsigned char bce[MAX_NUM_BCE]; /* back element channel pair: bit 4 = SCE/CPE flag, bits 3-0 = inst tag */ unsigned char lce[MAX_NUM_LCE]; /* instance tag for LFE elements */ unsigned char ade[MAX_NUM_ADE]; /* instance tag for ADE elements */ unsigned char cce[MAX_NUM_BCE]; /* channel coupling elements: bit 4 = switching flag, bits 3-0 = inst tag */#ifdef KEEP_PCE_COMMENTS /* make this optional - if not enabled, decoder will just skip comments */ unsigned char commentBytes; unsigned char commentField[MAX_COMMENT_BYTES];#endif} ProgConfigElement;/* state info struct for baseline (MPEG-4 LC) decoding */typedef struct _PSInfoBase { /* header information */ ADTSHeader fhADTS; ADIFHeader fhADIF; ProgConfigElement pce[MAX_NUM_PCE_ADIF]; int dataCount; unsigned char dataBuf[DATA_BUF_SIZE]; int fillCount; unsigned char fillBuf[FILL_BUF_SIZE]; /* state information which is the same throughout whole frame */ int nChans; int useImpChanMap; int sampRateIdx; /* state information which can be overwritten by subsequent elements within frame */ ICSInfo icsInfo[MAX_NCHANS_ELEM]; int commonWin; short scaleFactors[MAX_NCHANS_ELEM][MAX_SF_BANDS]; unsigned char sfbCodeBook[MAX_NCHANS_ELEM][MAX_SF_BANDS]; int msMaskPresent; unsigned char msMaskBits[MAX_MS_MASK_BYTES]; int pnsUsed[MAX_NCHANS_ELEM]; int pnsLastVal; int intensityUsed[MAX_NCHANS_ELEM]; PulseInfo pulseInfo[MAX_NCHANS_ELEM]; TNSInfo tnsInfo[MAX_NCHANS_ELEM]; int tnsLPCBuf[MAX_TNS_ORDER]; int tnsWorkBuf[MAX_TNS_ORDER]; GainControlInfo gainControlInfo[MAX_NCHANS_ELEM]; int gbCurrent[MAX_NCHANS_ELEM]; int coef[MAX_NCHANS_ELEM][AAC_MAX_NSAMPS];#ifdef AAC_ENABLE_SBR int sbrWorkBuf[MAX_NCHANS_ELEM][AAC_MAX_NSAMPS];#endif /* state information which must be saved for each element and used in next frame */ int overlap[AAC_MAX_NCHANS][AAC_MAX_NSAMPS]; int prevWinShape[AAC_MAX_NCHANS];} PSInfoBase;/* private implementation-specific functions *//* decelmnt.c */int DecodeProgramConfigElement(ProgConfigElement *pce, BitStreamInfo *bsi);/* huffman.c */int DecodeHuffmanScalar(const signed short *huffTab, const HuffInfo *huffTabInfo, unsigned int bitBuf, signed int *val);void DecodeSpectrumLong(PSInfoBase *psi, BitStreamInfo *bsi, int ch);void DecodeSpectrumShort(PSInfoBase *psi, BitStreamInfo *bsi, int ch);/* noiseless.c */void DecodeICSInfo(BitStreamInfo *bsi, ICSInfo *icsInfo, int sampRateIdx);/* dct4.c */void DCT4(int tabidx, int *coef, int gb);/* fft.c */void R4FFT(int tabidx, int *x);/* sbrimdct.c */void DecWindowOverlapNoClip(int *buf0, int *over0, int *out0, int winTypeCurr, int winTypePrev);void DecWindowOverlapLongStartNoClip(int *buf0, int *over0, int *out0, int winTypeCurr, int winTypePrev);void DecWindowOverlapLongStopNoClip(int *buf0, int *over0, int *out0, int winTypeCurr, int winTypePrev);void DecWindowOverlapShortNoClip(int *buf0, int *over0, int *out0, int winTypeCurr, int winTypePrev);/* hufftabs.c */extern const HuffInfo huffTabSpecInfo[11];extern const signed short huffTabSpec[1241];extern const HuffInfo huffTabScaleFactInfo; extern const signed short huffTabScaleFact[121];/* trigtabs.c */extern const int cos4sin4tabOffset[NUM_IMDCT_SIZES];extern const int sinWindowOffset[NUM_IMDCT_SIZES];extern const int kbdWindowOffset[NUM_IMDCT_SIZES];extern const unsigned char bitrevtab[17 + 129];extern const int bitrevtabOffset[NUM_IMDCT_SIZES];#ifdef HELIX_CONFIG_AAC_GENERATE_TRIGTABS_FLOAT/* trigtabs_fltgen.c */extern int cos4sin4tab[128 + 1024];extern int cos1sin1tab[514];extern int sinWindow[128 + 1024];extern int kbdWindow[128 + 1024];extern int twidTabEven[4*6 + 16*6 + 64*6];extern int twidTabOdd[8*6 + 32*6 + 128*6];#else/* trigtabs.c */extern const int cos4sin4tab[128 + 1024];extern const int cos1sin1tab[514];extern const int sinWindow[128 + 1024];extern const int kbdWindow[128 + 1024];extern const int twidTabEven[4*6 + 16*6 + 64*6];extern const int twidTabOdd[8*6 + 32*6 + 128*6];#endif#endif /* _CODER_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -