int dynBitCount(const short *quantSpectrum, const unsigned short *maxValueInSfb, const signed short *scalefac, const int blockType, const int sfbCnt, const int maxSfbPerGroup, const int sfbPerGroup, const int *sfbOffset, SECTION_DATA *sectionData) { int bitLookUp[MAX_SFB_LONG][CODE_BOOK_ESC_NDX + 1]; int mergeGainLookUp[MAX_SFB_LONG]; COUNT_sub_start("dynBitCount"); INDIRECT(3); MOVE(3); sectionData->blockType = blockType; sectionData->sfbCnt = sfbCnt; sectionData->sfbPerGroup = sfbPerGroup; INDIRECT(1); DIV(1); STORE(1); sectionData->noOfGroups = sfbCnt / sfbPerGroup; MOVE(1); sectionData->maxSfbPerGroup = maxSfbPerGroup; FUNC(7); noiselessCounter(sectionData, mergeGainLookUp, bitLookUp, quantSpectrum, maxValueInSfb, sfbOffset, blockType); FUNC(3); scfCount(scalefac, maxValueInSfb, sectionData); INDIRECT(3); ADD(2); /* counting post-operations */ COUNT_sub_end(); return (sectionData->huffmanBits + sectionData->sideInfoBits + sectionData->scalefacBits); }
Word16 dynBitCount(const Word16 *quantSpectrum, const UWord16 *maxValueInSfb, const Word16 *scalefac, const Word16 blockType, const Word16 sfbCnt, const Word16 maxSfbPerGroup, const Word16 sfbPerGroup, const Word16 *sfbOffset, SECTION_DATA *sectionData) { sectionData->blockType = blockType; sectionData->sfbCnt = sfbCnt; sectionData->sfbPerGroup = sfbPerGroup; if(sfbPerGroup) sectionData->noOfGroups = sfbCnt/sfbPerGroup; else sectionData->noOfGroups = 0x7fff; sectionData->maxSfbPerGroup = maxSfbPerGroup; noiselessCounter(sectionData, sectionData->mergeGainLookUp, (lookUpTable)sectionData->bitLookUp, quantSpectrum, maxValueInSfb, sfbOffset, blockType); scfCount(scalefac, maxValueInSfb, sectionData); return (sectionData->huffmanBits + sectionData->sideInfoBits + sectionData->scalefacBits); }