Hi to all
i succeed to removing line echo using ECU with delay line compression enabled. in our project we are using linear samples only and we haven't pcm (alaw or ulaw) samples and encoding sample to pcm consume cpu time !
according to volib_C66_2_1_0_1 chm document ecuSendIn routine accepts frames of linear PCM samples for both the TX and RX paths.
i try to change config:
ecu_inst[IndexStrm].ecuCfg.y2x_delay = 160; /*One frame default y2x delay */ ecu_inst[IndexStrm].ecuCfg.samples_per_frame = 10 * 8; /* 10ms default frame duration */ ecu_inst[IndexStrm].ecuCfg.pcm_zero = (0x0); //EA:ecu_cmpand 0x55D5->0x0 A-law zero:0x55D5 , U-law zero:0xFFFF ecu_inst[IndexStrm].ecuCfg.pcm_expand_tbl = NULL;//EA:ecu_cmpand &muaTblAlaw ->NULL cfgParam.filter_length = SIU_MAX_ECU_FILTER_LENGTH; /* 128ms default ECU tail */
and
ecuContext_t ecuContext = { (vfnptr) DebugInfo, /* Void function pointer to SIU exception handler */ NULL, /* Debug streaming function pointer */ NULL, NULL, /* Search filter swapping function */ NULL, /* Send out function pointer */ NULL, /* Receive out function pointer */ SIU_MAX_FRAME_LENGTH, /* Maximum number of samples per frame */ SIU_MAX_ECU_FILTER_LENGTH, /* Maximum filter length in taps */ SIU_MAX_ECU_FLTSEG_LENGTH, /* Maximum filter segment buffer length in taps */ SIU_MAX_ECU_FLTSEG, /* Maximum allowed active filter segments */ SIU_MAX_SYSTEM_DELAY + SIU_MAX_FRAME_LENGTH, /* Maximum y2x delay in samples */ 1L, /* EA:ecu_cmpand 0->1 Bitfield representing those portions of the * delay line already expanded. */ NULL, /* Pointer to base of the scratch delay line */ NULL, /* TDM aligned pointer within scratch delay line */ NULL, /* TDM aligned pointer within packed delay line */ };
echo cancellation work correctly ( 10% echo) but FG filter don't converged (from output of ecuGetPerformance and ecu_CTRL0_BIT_CONVERGED macro )
in this post CharlieF said "the PCM samples should be compressed (see muaTblUlawCmpr & muaTblAlawCmpr in the "util" component)"
and in this post Garrett Ding repeat that!
anybody can please confirm ecuSendIn accepts frames of linear PCM samples or chm document is wrong?
i check output of ecuGetPerformance and ecu_VERF_DLINE_COMPRESS macro and seem delay line compress enabled in volib_C66_2_1_0_1 too.
how can i disable delay line compress? (i think ecuSendIn decode pcm sample to linear using ecuCfg.pcm_expand_tbl (sample by sample in loop !!!) and this work consume cpu time too)
thanks a lot
Ebi