Home | History | Annotate | Download | only in src

Lines Matching refs:pRvlc

114 void rvlcInit (CErRvlcInfo            *pRvlc,
127 pRvlc->numDecodedEscapeWordsEsc = 0;
128 pRvlc->numDecodedEscapeWordsFwd = 0;
129 pRvlc->numDecodedEscapeWordsBwd = 0;
131 pRvlc->intensity_used = 0;
132 pRvlc->errorLogRvlc = 0;
134 pRvlc->conceal_max = CONCEAL_MAX_INIT;
135 pRvlc->conceal_min = CONCEAL_MIN_INIT;
137 pRvlc->conceal_max_esc = CONCEAL_MAX_INIT;
138 pRvlc->conceal_min_esc = CONCEAL_MIN_INIT;
140 pRvlc->pHuffTreeRvlcEscape = aHuffTreeRvlcEscape;
141 pRvlc->pHuffTreeRvlCodewds = aHuffTreeRvlCodewds;
154 pRvlc->bitstreamIndexRvlFwd = FDKgetBitCnt(bs); /* first bit within RVL coded block as start address for forward decoding */
155 pRvlc->bitstreamIndexRvlBwd = FDKgetBitCnt(bs) + pRvlc->length_of_rvlc_sf - 1; /* last bit within RVL coded block as start address for backward decoding */
158 FDKpushFor (bs, pRvlc->length_of_rvlc_sf);
160 if ( pRvlc->sf_escapes_present != 0 ) {
164 pRvlc->bitstreamIndexEsc = FDKgetBitCnt(bs);
169 FDKpushFor (bs, pRvlc->length_of_rvlc_escapes);
173 DebugOutputInit(pRvlc,pAacDecoderChannelInfo);
193 void rvlcCheckIntensityCb (CErRvlcInfo *pRvlc,
198 pRvlc->intensity_used = 0;
200 for (group=0; group < pRvlc->numWindowGroups; group++) {
201 for (band=0; band < pRvlc->maxSfbTransmitted; band++) {
204 pRvlc->intensity_used = 1;
225 SCHAR rvlcDecodeEscapeWord (CErRvlcInfo *pRvlc,
238 pEscTree = pRvlc->pHuffTreeRvlcEscape;
239 pBitstreamIndexEsc = &(pRvlc->bitstreamIndexEsc);
254 pRvlc->length_of_rvlc_escapes -= (MAX_LEN_RVLC_ESCAPE_WORD - i);
256 if (pRvlc->length_of_rvlc_escapes < 0) {
257 pRvlc->errorLogRvlc |= RVLC_ERROR_ALL_ESCAPE_WORDS_INVALID;
268 pRvlc->errorLogRvlc |= RVLC_ERROR_ALL_ESCAPE_WORDS_INVALID;
300 void rvlcDecodeEscapes (CErRvlcInfo *pRvlc,
308 pEscBitCntSum = &(pRvlc->length_of_rvlc_escapes);
312 escWord = rvlcDecodeEscapeWord(pRvlc, bs);
320 pRvlc->errorLogRvlc |= RVLC_ERROR_ALL_ESCAPE_WORDS_INVALID;
321 pRvlc->numDecodedEscapeWordsEsc = escCnt;
327 pRvlc->numDecodedEscapeWordsEsc = escCnt;
344 SCHAR decodeRVLCodeword (HANDLE_FDK_BITSTREAM bs, CErRvlcInfo *pRvlc)
352 const UINT *pRvlCodeTree = pRvlc->pHuffTreeRvlCodewds;
353 UCHAR direction = pRvlc->direction;
354 USHORT *pBitstrIndxRvl = pRvlc->pBitstrIndxRvl_RVL;
369 *pRvlc->pRvlBitCnt_RVL -= (MAX_LEN_RVLC_CODE_WORD - i);
372 if (*pRvlc->pRvlBitCnt_RVL < 0) {
374 pRvlc->errorLogRvlc |= RVLC_ERROR_RVL_SUM_BIT_COUNTER_BELOW_ZERO_FWD; }
376 pRvlc->errorLogRvlc |= RVLC_ERROR_RVL_SUM_BIT_COUNTER_BELOW_ZERO_BWD; }
383 pRvlc->errorLogRvlc |= RVLC_ERROR_FORBIDDEN_CW_DETECTED_FWD;
386 pRvlc->errorLogRvlc |= RVLC_ERROR_FORBIDDEN_CW_DETECTED_BWD;
415 void rvlcDecodeForward (CErRvlcInfo *pRvlc,
431 UCHAR* pEscFwdCnt = &(pRvlc->numDecodedEscapeWordsFwd);
433 pRvlc->pRvlBitCnt_RVL = &(pRvlc->length_of_rvlc_sf_fwd);
434 pRvlc->pBitstrIndxRvl_RVL = &(pRvlc->bitstreamIndexRvlFwd);
437 pRvlc->direction = FWD;
438 pRvlc->noise_used = 0;
439 pRvlc->sf_used = 0;
440 pRvlc->lastScf = 0;
441 pRvlc->lastNrg = 0;
442 pRvlc->lastIs = 0;
444 rvlcCheckIntensityCb(pRvlc,pAacDecoderChannelInfo);
447 for (group=0; group < pRvlc->numWindowGroups; group++) {
448 for (band=0; band < pRvlc->maxSfbTransmitted; band++) {
460 dpcm = decodeRVLCodeword(bs, pRvlc);
462 pRvlc->conceal_max = bnds;
467 if (pRvlc->length_of_rvlc_escapes) {
468 pRvlc->conceal_max = bnds;
479 if (pRvlc->conceal_max_esc == CONCEAL_MAX_INIT) {
480 pRvlc->conceal_max_esc = bnds;
486 pRvlc->lastIs = position;
490 if (pRvlc->noise_used == 0) {
491 pRvlc->noise_used = 1;
492 pRvlc->first_noise_band = bnds;
493 noisenrg += pRvlc->dpcm_noise_nrg;
495 pRvlc->lastNrg = noisenrg;
498 dpcm = decodeRVLCodeword(bs, pRvlc);
500 pRvlc->conceal_max = bnds;
505 if (pRvlc->length_of_rvlc_escapes) {
506 pRvlc->conceal_max = bnds;
517 if (pRvlc->conceal_max_esc == CONCEAL_MAX_INIT) {
518 pRvlc->conceal_max_esc = bnds;
524 pRvlc->lastNrg = noisenrg;
530 pRvlc->sf_used = 1;
531 dpcm = decodeRVLCodeword(bs, pRvlc);
533 pRvlc->conceal_max = bnds;
538 if (pRvlc->length_of_rvlc_escapes) {
539 pRvlc->conceal_max = bnds;
549 if (pRvlc->conceal_max_esc == CONCEAL_MAX_INIT) {
550 pRvlc->conceal_max_esc = bnds;
556 pRvlc->lastScf = factor;
563 if (pRvlc->intensity_used) {
564 dpcm = decodeRVLCodeword(bs, pRvlc); /* dpcm_is_last_position */
566 pRvlc->conceal_max = bnds;
571 if (pRvlc->length_of_rvlc_escapes) {
572 pRvlc->conceal_max = bnds;
583 if (pRvlc->conceal_max_esc == CONCEAL_MAX_INIT) {
584 pRvlc->conceal_max_esc = bnds;
588 pRvlc->dpcm_is_last_position = dpcm;
606 void rvlcDecodeBackward (CErRvlcInfo *pRvlc,
611 SHORT bnds = pRvlc->maxSfbTransmitted-1;
613 SHORT factor = pRvlc->rev_global_gain - SF_OFFSET;
614 SHORT position = pRvlc->dpcm_is_last_position - SF_OFFSET;
615 SHORT noisenrg = pRvlc->rev_global_gain + pRvlc->dpcm_noise_last_position - SF_OFFSET - 90 - 256;
619 UCHAR *pEscEscCnt = &(pRvlc->numDecodedEscapeWordsEsc);
620 UCHAR *pEscBwdCnt = &(pRvlc->numDecodedEscapeWordsBwd);
622 pRvlc->pRvlBitCnt_RVL = &(pRvlc->length_of_rvlc_sf_bwd);
623 pRvlc->pBitstrIndxRvl_RVL = &(pRvlc->bitstreamIndexRvlBwd);
626 pRvlc->direction = BWD;
628 pRvlc->firstScf = 0;
629 pRvlc->firstNrg = 0;
630 pRvlc->firstIs = 0;
633 if (pRvlc->intensity_used) {
634 dpcm = decodeRVLCodeword(bs, pRvlc); /* dpcm_is_last_position */
636 pRvlc->dpcm_is_last_position = 0;
637 pRvlc->conceal_min = bnds;
642 if (pRvlc->length_of_rvlc_escapes) {
643 pRvlc->conceal_min = bnds;
654 if (pRvlc->conceal_min_esc == CONCEAL_MIN_INIT) {
655 pRvlc->conceal_min_esc = bnds;
659 pRvlc->dpcm_is_last_position = dpcm;
663 for (group=pRvlc->numWindowGroups-1; group >= 0; group--) {
664 for (band=pRvlc->maxSfbTransmitted-1; band >= 0; band--) {
666 if ((band == 0) && (pRvlc->numWindowGroups != 1))
667 offset = 16 - pRvlc->maxSfbTransmitted + 1;
680 dpcm = decodeRVLCodeword(bs, pRvlc);
683 pRvlc->conceal_min = FDKmax(0,bnds-offset);
688 if (pRvlc->length_of_rvlc_escapes) {
690 pRvlc->conceal_min = FDKmax(0,bnds-offset);
701 if (pRvlc->conceal_min_esc == CONCEAL_MIN_INIT) {
702 pRvlc->conceal_min_esc = FDKmax(0,bnds-offset);
708 pRvlc->firstIs = position;
712 if ( bnds == pRvlc->first_noise_band ) {
713 pScfBwd[bnds] = pRvlc->dpcm_noise_nrg + pAacDecoderChannelInfo->pDynData->RawDataInfo.GlobalGain - SF_OFFSET - 90 - 256;
714 pRvlc->firstNrg = pScfBwd[bnds];
717 dpcm = decodeRVLCodeword(bs, pRvlc);
720 pRvlc->conceal_min = FDKmax(0,bnds-offset);
725 if (pRvlc->length_of_rvlc_escapes) {
727 pRvlc->conceal_min = FDKmax(0,bnds-offset);
738 if (pRvlc->conceal_min_esc == CONCEAL_MIN_INIT) {
739 pRvlc->conceal_min_esc = FDKmax(0,bnds-offset);
745 pRvlc->firstNrg = noisenrg;
750 dpcm = decodeRVLCodeword(bs, pRvlc);
753 pRvlc->conceal_min = FDKmax(0,bnds-offset);
758 if (pRvlc->length_of_rvlc_escapes) {
760 pRvlc->conceal_min = FDKmax(0,bnds-offset);
771 if (pRvlc->conceal_min_esc == CONCEAL_MIN_INIT) {
772 pRvlc->conceal_min_esc = FDKmax(0,bnds-offset);
778 pRvlc->firstScf = factor;
801 CErRvlcInfo *pRvlc = &pAacDecoderChannelInfo->pComData->overlay.aac.erRvlcInfo;
828 if (pRvlc->errorLogRvlc & RVLC_ERROR_FORBIDDEN_CW_DETECTED_FWD)
831 if (pRvlc->errorLogRvlc & RVLC_ERROR_FORBIDDEN_CW_DETECTED_BWD)
835 if (pRvlc->length_of_rvlc_sf_fwd)
839 if (pRvlc->length_of_rvlc_sf_bwd)
843 if (pRvlc->sf_escapes_present)
844 if (pRvlc->length_of_rvlc_escapes)
847 if (pRvlc->sf_used) {
849 if (pRvlc->firstScf != (pAacDecoderChannelInfo->pDynData->RawDataInfo.GlobalGain - SF_OFFSET) )
853 if (pRvlc->lastScf != (pRvlc->rev_global_gain - SF_OFFSET) )
857 if (pRvlc->noise_used) {
859 if (pRvlc->firstNrg != (pAacDecoderChannelInfo->pDynData->RawDataInfo.GlobalGain + pRvlc->dpcm_noise_nrg - SF_OFFSET -90 - 256) )
863 if (pRvlc->lastNrg != (pRvlc->rev_global_gain + pRvlc->dpcm_noise_last_position - SF_OFFSET - 90 - 256) )
867 if (pRvlc->intensity_used) {
869 if (pRvlc->firstIs != (-SF_OFFSET) )
873 if (pRvlc->lastIs != (pRvlc->dpcm_is_last_position - SF_OFFSET) )
878 if ((pRvlc->numDecodedEscapeWordsFwd != pRvlc->numDecodedEscapeWordsEsc) && (pRvlc->conceal_max == CONCEAL_MAX_INIT)) {
883 if ((pRvlc->numDecodedEscapeWordsBwd != pRvlc->numDecodedEscapeWordsEsc) && (pRvlc->conceal_min == CONCEAL_MIN_INIT)) {
888 conceal_max = pRvlc->conceal_max;
889 conceal_min = pRvlc->conceal_min;
894 ( (pRvlc->conceal_max == CONCEAL_MAX_INIT)
895 && (pRvlc->numDecodedEscapeWordsFwd != pRvlc->numDecodedEscapeWordsEsc)
900 ( (pRvlc->conceal_min == CONCEAL_MIN_INIT)
901 && (pRvlc->numDecodedEscapeWordsBwd != pRvlc->numDecodedEscapeWordsEsc)
904 || ( (pRvlc->conceal_max == CONCEAL_MAX_INIT)
905 && ((pRvlc->rev_global_gain - SF_OFFSET - pRvlc->lastScf) < -15)
907 || ( (pRvlc->conceal_min == CONCEAL_MIN_INIT)
908 && ((pAacDecoderChannelInfo->pDynData->RawDataInfo.GlobalGain - SF_OFFSET - pRvlc->firstScf) < -15)
911 if ((pRvlc->conceal_max == CONCEAL_MAX_INIT) || (pRvlc->conceal_min == CONCEAL_MIN_INIT)) {
912 pRvlc->conceal_max = 0;
913 pRvlc->conceal_min = FDKmax(0, (pRvlc->numWindowGroups-1)*16+pRvlc->maxSfbTransmitted-1);
916 pRvlc->conceal_max = FDKmin(pRvlc->conceal_max,pRvlc->conceal_max_esc);
917 pRvlc->conceal_min = FDKmax(pRvlc->conceal_min,pRvlc->conceal_min_esc);
935 lastSfbIndex = (pRvlc->numWindowGroups > 1) ? 16 : 64;
937 for (group=0; group < pRvlc->numWindowGroups; group++) {
938 for (band=0; band<pRvlc->maxSfbTransmitted; band++) {
944 for (group=0; group < pRvlc->numWindowGroups; group++)
946 for (band=0; band<pRvlc->maxSfbTransmitted; band++) {
965 if ( ((pRvlc->conceal_min != CONCEAL_MIN_INIT) || (pRvlc->conceal_max != CONCEAL_MAX_INIT)) && (pRvlc->conceal_min <= pRvlc->conceal_max)
967 && pRvlc->sf_concealment && ConcealStatus )
979 if ( (pRvlc->conceal_min <= pRvlc->conceal_max) && ((pRvlc->conceal_min != CONCEAL_MIN_INIT) || (pRvlc->conceal_max != CONCEAL_MAX_INIT))
980 && !(pAacDecoderStaticChannelInfo->concealmentInfo.rvlcPreviousScaleFactorOK && pRvlc->sf_concealment && (pAacDecoderStaticChannelInfo->concealmentInfo.rvlcPreviousBlockType == currentBlockType))
992 if ( (pRvlc->conceal_min <= pRvlc->conceal_max) && ((ErrorStatusLastScf && ErrorStatusFirstScf)
1005 if ( (pRvlc->conceal_min <= pRvlc->conceal_max) && pAacDecoderStaticChannelInfo->concealmentInfo.rvlcPreviousScaleFactorOK && pRvlc->sf_concealment
1018 for (group=0; group < pRvlc->numWindowGroups; group++) {
1019 for (band=0; band<pRvlc->maxSfbTransmitted; band++) {
1031 DebugOutputDistortedBitstreams(pRvlc,pAacDecoderChannelInfo,ErrorStatusLengthFwd,ErrorStatusLengthBwd,
1056 CErRvlcInfo *pRvlc = &pAacDecoderChannelInfo->pComData->overlay.aac.erRvlcInfo;
1061 pRvlc->numWindowGroups = GetWindowGroups(&pAacDecoderChannelInfo->icsInfo);
1062 pRvlc->maxSfbTransmitted = GetScaleFactorBandsTransmitted(&pAacDecoderChannelInfo->icsInfo);
1063 pRvlc->noise_used = 0; /* noise detection */
1064 pRvlc->dpcm_noise_nrg = 0; /* only for debugging */
1065 pRvlc->dpcm_noise_last_position = 0; /* only for debugging */
1066 pRvlc->length_of_rvlc_escapes = -1; /* default value is used for error detection and concealment */
1069 pRvlc->sf_concealment = FDKreadBits(bs,1); /* #1 */
1070 pRvlc->rev_global_gain = FDKreadBits(bs,8); /* #2 */
1073 pRvlc->length_of_rvlc_sf = FDKreadBits(bs,11); /* #3 */
1076 pRvlc->length_of_rvlc_sf = FDKreadBits(bs,9); /* #3 */
1080 for (group = 0; group < pRvlc->numWindowGroups; group++) {
1081 for (band=0; band < pRvlc->maxSfbTransmitted; band++) {
1083 pRvlc->noise_used = 1;
1089 if (pRvlc->noise_used)
1090 pRvlc->dpcm_noise_nrg = FDKreadBits(bs, 9); /* #4 PNS */
1092 pRvlc->sf_escapes_present = FDKreadBits(bs, 1); /* #5 */
1094 if ( pRvlc->sf_escapes_present) {
1095 pRvlc->length_of_rvlc_escapes = FDKreadBits(bs, 8); /* #6 */
1098 if (pRvlc->noise_used) {
1099 pRvlc->dpcm_noise_last_position = FDKreadBits(bs, 9); /* #7 PNS */
1100 pRvlc->length_of_rvlc_sf -= 9;
1103 pRvlc->length_of_rvlc_sf_fwd = pRvlc->length_of_rvlc_sf;
1104 pRvlc->length_of_rvlc_sf_bwd = pRvlc->length_of_rvlc_sf;
1132 CErRvlcInfo *pRvlc = &pAacDecoderChannelInfo->pComData->overlay.aac.erRvlcInfo;
1136 rvlcInit(pRvlc,pAacDecoderChannelInfo,bs);
1142 GenerateSingleBitError(pRvlc,
1143 &(pRvlc->bitstreamIndexRvlFwd),
1144 pRvlc->length_of_rvlc_sf,
1149 if (pRvlc->sf_escapes_present)
1150 GenerateSingleBitError(pRvlc,
1151 &(pRvlc->bitstreamIndexEsc),
1152 pRvlc->length_of_rvlc_escapes,
1156 if ( pRvlc->sf_escapes_present)
1157 rvlcDecodeEscapes(pRvlc, pAacDecoderChannelInfo->pComData->overlay.aac.aRvlcScfEsc, bs);
1159 rvlcDecodeForward(pRvlc,pAacDecoderChannelInfo, bs);
1160 rvlcDecodeBackward(pRvlc,pAacDecoderChannelInfo, bs);
1163 pAacDecoderChannelInfo->pDynData->specificTo.aac.rvlcIntensityUsed = pRvlc->intensity_used;
1164 pAacDecoderChannelInfo->data.aac.PnsData.PnsActive = pRvlc->noise_used;