Exemplo n.º 1
0
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;

}
Exemplo n.º 2
0
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;

}