void WebRtcIsacfix_InitPitchAnalysis(PitchAnalysisStruct *State) { int k; for (k = 0; k < PITCH_CORR_LEN2+PITCH_CORR_STEP2+PITCH_MAX_LAG/2-PITCH_FRAME_LEN/2+2; k++) { State->dec_buffer16[k] = 0; } for (k = 0; k < WEBRTC_SPL_MUL_16_16(2, ALLPASSSECTIONS)+1; k++) { State->decimator_state32[k] = 0; } for (k = 0; k < QLOOKAHEAD; k++) State->inbuf[k] = 0; WebRtcIsacfix_InitPitchFilter(&(State->PFstr_wght)); WebRtcIsacfix_InitPitchFilter(&(State->PFstr)); }
int16_t WebRtcIsacfix_EncoderInit(ISACFIX_MainStruct *ISAC_main_inst, int16_t CodingMode) { int k; int16_t statusInit; ISACFIX_SubStruct *ISAC_inst; statusInit = 0; /* typecast pointer to rela structure */ ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst; /* flag encoder init */ ISAC_inst->initflag |= 2; if (CodingMode == 0) /* Adaptive mode */ ISAC_inst->ISACenc_obj.new_framelength = INITIAL_FRAMESAMPLES; else if (CodingMode == 1) /* Instantaneous mode */ ISAC_inst->ISACenc_obj.new_framelength = 480; /* default for I-mode */ else { ISAC_inst->errorcode = ISAC_DISALLOWED_CODING_MODE; statusInit = -1; } ISAC_inst->CodingMode = CodingMode; WebRtcIsacfix_InitMaskingEnc(&ISAC_inst->ISACenc_obj.maskfiltstr_obj); WebRtcIsacfix_InitPreFilterbank(&ISAC_inst->ISACenc_obj.prefiltbankstr_obj); WebRtcIsacfix_InitPitchFilter(&ISAC_inst->ISACenc_obj.pitchfiltstr_obj); WebRtcIsacfix_InitPitchAnalysis(&ISAC_inst->ISACenc_obj.pitchanalysisstr_obj); WebRtcIsacfix_InitRateModel(&ISAC_inst->ISACenc_obj.rate_data_obj); ISAC_inst->ISACenc_obj.buffer_index = 0; ISAC_inst->ISACenc_obj.frame_nb = 0; ISAC_inst->ISACenc_obj.BottleNeck = 32000; /* default for I-mode */ ISAC_inst->ISACenc_obj.MaxDelay = 10; /* default for I-mode */ ISAC_inst->ISACenc_obj.current_framesamples = 0; ISAC_inst->ISACenc_obj.s2nr = 0; ISAC_inst->ISACenc_obj.MaxBits = 0; ISAC_inst->ISACenc_obj.bitstr_seed = 4447; ISAC_inst->ISACenc_obj.payloadLimitBytes30 = STREAM_MAXW16_30MS << 1; ISAC_inst->ISACenc_obj.payloadLimitBytes60 = STREAM_MAXW16_60MS << 1; ISAC_inst->ISACenc_obj.maxPayloadBytes = STREAM_MAXW16_60MS << 1; ISAC_inst->ISACenc_obj.maxRateInBytes = STREAM_MAXW16_30MS << 1; ISAC_inst->ISACenc_obj.enforceFrameSize = 0; /* Init the bistream data area to zero */ for (k=0; k<STREAM_MAXW16_60MS; k++){ ISAC_inst->ISACenc_obj.bitstr_obj.stream[k] = 0; } #ifdef WEBRTC_ISAC_FIX_NB_CALLS_ENABLED WebRtcIsacfix_InitPostFilterbank(&ISAC_inst->ISACenc_obj.interpolatorstr_obj); #endif InitFunctionPointers(); return statusInit; }
int16_t WebRtcIsacfix_EncoderInit(ISACFIX_MainStruct *ISAC_main_inst, int16_t CodingMode) { int k; int16_t statusInit; ISACFIX_SubStruct *ISAC_inst; statusInit = 0; /* typecast pointer to rela structure */ ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst; /* flag encoder init */ ISAC_inst->initflag |= 2; if (CodingMode == 0) /* Adaptive mode */ ISAC_inst->ISACenc_obj.new_framelength = INITIAL_FRAMESAMPLES; else if (CodingMode == 1) /* Instantaneous mode */ ISAC_inst->ISACenc_obj.new_framelength = 480; /* default for I-mode */ else { ISAC_inst->errorcode = ISAC_DISALLOWED_CODING_MODE; statusInit = -1; } ISAC_inst->CodingMode = CodingMode; WebRtcIsacfix_InitMaskingEnc(&ISAC_inst->ISACenc_obj.maskfiltstr_obj); WebRtcIsacfix_InitPreFilterbank(&ISAC_inst->ISACenc_obj.prefiltbankstr_obj); WebRtcIsacfix_InitPitchFilter(&ISAC_inst->ISACenc_obj.pitchfiltstr_obj); WebRtcIsacfix_InitPitchAnalysis(&ISAC_inst->ISACenc_obj.pitchanalysisstr_obj); WebRtcIsacfix_InitBandwidthEstimator(&ISAC_inst->bwestimator_obj); WebRtcIsacfix_InitRateModel(&ISAC_inst->ISACenc_obj.rate_data_obj); ISAC_inst->ISACenc_obj.buffer_index = 0; ISAC_inst->ISACenc_obj.frame_nb = 0; ISAC_inst->ISACenc_obj.BottleNeck = 32000; /* default for I-mode */ ISAC_inst->ISACenc_obj.MaxDelay = 10; /* default for I-mode */ ISAC_inst->ISACenc_obj.current_framesamples = 0; ISAC_inst->ISACenc_obj.s2nr = 0; ISAC_inst->ISACenc_obj.MaxBits = 0; ISAC_inst->ISACenc_obj.bitstr_seed = 4447; ISAC_inst->ISACenc_obj.payloadLimitBytes30 = STREAM_MAXW16_30MS << 1; ISAC_inst->ISACenc_obj.payloadLimitBytes60 = STREAM_MAXW16_60MS << 1; ISAC_inst->ISACenc_obj.maxPayloadBytes = STREAM_MAXW16_60MS << 1; ISAC_inst->ISACenc_obj.maxRateInBytes = STREAM_MAXW16_30MS << 1; ISAC_inst->ISACenc_obj.enforceFrameSize = 0; /* Init the bistream data area to zero */ for (k=0; k<STREAM_MAXW16_60MS; k++){ ISAC_inst->ISACenc_obj.bitstr_obj.stream[k] = 0; } #ifdef WEBRTC_ISAC_FIX_NB_CALLS_ENABLED WebRtcIsacfix_InitPostFilterbank(&ISAC_inst->ISACenc_obj.interpolatorstr_obj); #endif // Initiaze function pointers. WebRtcIsacfix_AutocorrFix = WebRtcIsacfix_AutocorrC; WebRtcIsacfix_FilterMaLoopFix = WebRtcIsacfix_FilterMaLoopC; WebRtcIsacfix_CalculateResidualEnergy = WebRtcIsacfix_CalculateResidualEnergyC; WebRtcIsacfix_AllpassFilter2FixDec16 = WebRtcIsacfix_AllpassFilter2FixDec16C; WebRtcIsacfix_HighpassFilterFixDec32 = WebRtcIsacfix_HighpassFilterFixDec32C; WebRtcIsacfix_Time2Spec = WebRtcIsacfix_Time2SpecC; WebRtcIsacfix_Spec2Time = WebRtcIsacfix_Spec2TimeC; WebRtcIsacfix_MatrixProduct1 = WebRtcIsacfix_MatrixProduct1C; WebRtcIsacfix_MatrixProduct2 = WebRtcIsacfix_MatrixProduct2C; #ifdef WEBRTC_DETECT_NEON if ((WebRtc_GetCPUFeaturesARM() & kCPUFeatureNEON) != 0) { WebRtcIsacfix_InitNeon(); } #elif defined(WEBRTC_HAS_NEON) WebRtcIsacfix_InitNeon(); #endif #if defined(MIPS32_LE) WebRtcIsacfix_InitMIPS(); #endif return statusInit; }