static USC_Status CancelEcho(USC_Handle handle, short *pSin, short *pRin, short *pSout) { ECFP_Handle_Header *ecfp_header; USC_Handle *obj_ec; int framesize; Ipp32f r_in_32f_cur[MAX_BLOCK_SIZE]; Ipp32f s_in_32f_cur[MAX_BLOCK_SIZE]; Ipp32f s_out_32f_cur[MAX_BLOCK_SIZE]; if(handle==NULL) return USC_InvalidHandler; if(pSin==NULL) return USC_BadDataPointer; if(pRin==NULL) return USC_BadDataPointer; if(pSout==NULL) return USC_BadDataPointer; ecfp_header = (ECFP_Handle_Header*)handle; obj_ec = (USC_Handle*)((char*)handle + sizeof(ECFP_Handle_Header)); if(ecfp_header->algType == EC_SUBBAND) framesize = SUBBAND_FRAME_SIZE; else if(ecfp_header->algType == EC_FULLBAND) framesize = FULLBAND_FRAME_SIZE; else framesize = FASTSBBAND_FRAME_SIZE; ippsConvert_16s32f_Sfs((Ipp16s *)pRin, r_in_32f_cur, framesize, 0); ippsConvert_16s32f_Sfs((Ipp16s *)pSin, s_in_32f_cur, framesize, 0); ecfp_header->fun.ec_ProcessFrame(obj_ec, r_in_32f_cur, s_in_32f_cur, s_out_32f_cur); ippsConvert_32f16s_Sfs(s_out_32f_cur, (Ipp16s *)pSout, framesize, ippRndZero, 0); return USC_NoError; }
static USC_Status CancelEcho(USC_Handle handle, Ipp16s *pSin, Ipp16s *pRin, Ipp16s *pSout) { ECFP_Handle_Header *ecfp_header; USC_Handle *obj_ec; Ipp32s framesize; Ipp32f r_in_32f_cur[MAX_BLOCK_SIZE]; Ipp32f s_in_32f_cur[MAX_BLOCK_SIZE]; Ipp32f s_out_32f_cur[MAX_BLOCK_SIZE]; //Ipp64f noisePwr; //int dstFlag,j; if(handle==NULL) return USC_InvalidHandler; if(pSin==NULL) return USC_BadDataPointer; if(pRin==NULL) return USC_BadDataPointer; if(pSout==NULL) return USC_BadDataPointer; ecfp_header = (ECFP_Handle_Header*)handle; obj_ec = (USC_Handle*)((Ipp8s*)handle + ALIGN(sizeof(ECFP_Handle_Header))); framesize = FRAME_SIZE_10ms; ippsConvert_16s32f_Sfs((Ipp16s *)pRin, r_in_32f_cur, framesize, 0); ippsConvert_16s32f_Sfs((Ipp16s *)pSin, s_in_32f_cur, framesize, 0); //if (ecfp_header->dcFlag) //{ // ippsSubC_32f_I(ecfp_header->dcOffset,s_in_32f_cur, framesize); // for (j=0;j<framesize;j+=16){ // ippsFilterNoiseDetect_EC_32f64f((const Ipp32f *)&s_in_32f_cur[j],&noisePwr, // &ecfp_header->dcOffset,&dstFlag,ecfp_header->nrSin); // } //} ecfp_header->fun.ec_ProcessFrame(obj_ec, r_in_32f_cur, s_in_32f_cur, s_out_32f_cur); ippsConvert_32f16s_Sfs(s_out_32f_cur, (Ipp16s *)pSout, framesize, ippRndZero, 0); return USC_NoError; }