int createInvFiltDetector (HANDLE_SBR_INV_FILT_EST hInvFilt, int* freqBandTableDetector, int numDetectorBands, int numberOfEstimatesPerFrame, unsigned int useSpeechConfig ) { int i; memset( hInvFilt,0,sizeof(SBR_INV_FILT_EST)); if (useSpeechConfig) { hInvFilt->detectorParams=&detectorParamsAACSpeech; } else { hInvFilt->detectorParams=&detectorParamsAAC; } hInvFilt->noDetectorBandsMax = numDetectorBands; /* hInvFilt->detectorValues[] hInvFilt->prevInvfMode[] hInvFilt->prevRegionOrig[] hInvFilt->prevRegionSbr[] */ for(i=0; i<hInvFilt->noDetectorBandsMax; i++) { memset(&hInvFilt->detectorValues[i],0,sizeof(DETECTOR_VALUES)); hInvFilt->prevInvfMode[i] = INVF_OFF; hInvFilt->prevRegionOrig[i] = 0; hInvFilt->prevRegionSbr[i] = 0; } resetInvFiltDetector(hInvFilt, freqBandTableDetector, hInvFilt->noDetectorBandsMax); return (0); }
int createInvFiltDetector (HANDLE_SBR_INV_FILT_EST hInvFilt, int* freqBandTableDetector, int numDetectorBands, int numberOfEstimatesPerFrame, unsigned int useSpeechConfig ) { int i; COUNT_sub_start("createInvFiltDetector"); DETECTOR_PARAMETERS _detectorParamsAAC = { quantStepsSbr, quantStepsOrig, nrgBorders, 4, 4, 4, { {INVF_MID_LEVEL, INVF_LOW_LEVEL, INVF_OFF, INVF_OFF, INVF_OFF}, {INVF_MID_LEVEL, INVF_LOW_LEVEL, INVF_OFF, INVF_OFF, INVF_OFF}, {INVF_HIGH_LEVEL, INVF_MID_LEVEL, INVF_LOW_LEVEL, INVF_OFF, INVF_OFF}, {INVF_HIGH_LEVEL, INVF_HIGH_LEVEL, INVF_MID_LEVEL, INVF_OFF, INVF_OFF}, {INVF_HIGH_LEVEL, INVF_HIGH_LEVEL, INVF_MID_LEVEL, INVF_OFF, INVF_OFF} }, { {INVF_LOW_LEVEL, INVF_LOW_LEVEL, INVF_LOW_LEVEL, INVF_OFF, INVF_OFF}, {INVF_LOW_LEVEL, INVF_LOW_LEVEL, INVF_LOW_LEVEL, INVF_OFF, INVF_OFF}, {INVF_HIGH_LEVEL, INVF_MID_LEVEL, INVF_MID_LEVEL, INVF_OFF, INVF_OFF}, {INVF_HIGH_LEVEL, INVF_HIGH_LEVEL, INVF_MID_LEVEL, INVF_OFF, INVF_OFF}, {INVF_HIGH_LEVEL, INVF_HIGH_LEVEL, INVF_MID_LEVEL, INVF_OFF, INVF_OFF} }, {-4, -3, -2, -1, 0} }; detectorParamsAAC = _detectorParamsAAC; DETECTOR_PARAMETERS _detectorParamsAACSpeech = { quantStepsSbr, quantStepsOrig, nrgBorders, 4, 4, 4, { {INVF_MID_LEVEL, INVF_MID_LEVEL, INVF_LOW_LEVEL, INVF_OFF, INVF_OFF}, {INVF_MID_LEVEL, INVF_MID_LEVEL, INVF_LOW_LEVEL, INVF_OFF, INVF_OFF}, {INVF_HIGH_LEVEL, INVF_MID_LEVEL, INVF_MID_LEVEL, INVF_OFF, INVF_OFF}, {INVF_HIGH_LEVEL, INVF_HIGH_LEVEL, INVF_MID_LEVEL, INVF_OFF, INVF_OFF}, {INVF_HIGH_LEVEL, INVF_HIGH_LEVEL, INVF_MID_LEVEL, INVF_OFF, INVF_OFF} }, { {INVF_MID_LEVEL, INVF_MID_LEVEL, INVF_LOW_LEVEL, INVF_OFF, INVF_OFF}, {INVF_MID_LEVEL, INVF_MID_LEVEL, INVF_LOW_LEVEL, INVF_OFF, INVF_OFF}, {INVF_HIGH_LEVEL, INVF_MID_LEVEL, INVF_MID_LEVEL, INVF_OFF, INVF_OFF}, {INVF_HIGH_LEVEL, INVF_HIGH_LEVEL, INVF_MID_LEVEL, INVF_OFF, INVF_OFF}, {INVF_HIGH_LEVEL, INVF_HIGH_LEVEL, INVF_MID_LEVEL, INVF_OFF, INVF_OFF} }, {-4, -3, -2, -1, 0} }; detectorParamsAACSpeech = _detectorParamsAACSpeech; FUNC(2); LOOP(1); PTR_INIT(1); MOVE(1); STORE(sizeof(SBR_INV_FILT_EST)); memset( hInvFilt,0,sizeof(SBR_INV_FILT_EST)); BRANCH(1); if (useSpeechConfig) { INDIRECT(1); PTR_INIT(1); hInvFilt->detectorParams=&detectorParamsAACSpeech; } else { INDIRECT(1); PTR_INIT(1); hInvFilt->detectorParams=&detectorParamsAAC; } INDIRECT(1); MOVE(1); hInvFilt->noDetectorBandsMax = numDetectorBands; PTR_INIT(4); /* hInvFilt->detectorValues[] hInvFilt->prevInvfMode[] hInvFilt->prevRegionOrig[] hInvFilt->prevRegionSbr[] */ LOOP(1); for(i=0;i<hInvFilt->noDetectorBandsMax;i++){ FUNC(2); LOOP(1); PTR_INIT(1); MOVE(1); STORE(sizeof(DETECTOR_VALUES)); memset(&hInvFilt->detectorValues[i],0,sizeof(DETECTOR_VALUES)); MOVE(3); hInvFilt->prevInvfMode[i] = INVF_OFF; hInvFilt->prevRegionOrig[i] = 0; hInvFilt->prevRegionSbr[i] = 0; } INDIRECT(1); FUNC(3); resetInvFiltDetector(hInvFilt, freqBandTableDetector, hInvFilt->noDetectorBandsMax); COUNT_sub_end(); return (0); }