This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320C6678: Volib ECU , how to disable delay line companding?

Part Number: TMS320C6678

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  said "the PCM samples should be compressed (see muaTblUlawCmpr & muaTblAlawCmpr in the "util" component)"

and in this post  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

  • Hi,

    I've notified the RTOS team. They will post their feedback directly here.

    Please share the used sdk versions besides the volib, if any.

    Best Regards,
    Yordan
  • thank for your reply!

    sys/bios : 6.45.1.29

    CCS Version: 6.1.2

    i wait for update here

    update:

    i have two questions:

    according to volib_C66_2_1_0_1\packages\ti\mas\ecu\docs\design\ECU.pdf, Delay line compression is one of compile time options. 

    1 - according to this post , "delay-line compression is enabled and can't be disabled." i can't find volib/ecu source file for compile and rebuild libs. what's the means of option when i can't change it?!

    2 - what's benefit of delay line companding feature? (i think voice processing algorithms work on linear sample and TSIP or McBSP have hardware companding )

    thanks for attentions

    Ebi

  • update :

    multiple of compile time options enable/disable using cfgParam.config_bitfield, cfgParam.config_bitfield1 and ecuOpen() for example:

    #define ecu_ENABLE_CPD_DETECT       0x0010   /**< Enables/disable constant PCM pattern detection */
    
    #define ecu_ERL_CONFIG_BIT_0        0x0002   /**< 0/3dB ERL configuration bit 0\n
    
                                                      see table below */
    
    #define ecu_ERL_CONFIG_BIT_1        0x0004   /**< 0/3dB ERL configuration bit 1 
    
                                                  * <table align=center>
    
                                                  *   <tr>
    
                                                  *     <td><B>Bit 1</B></td>
    
                                                  *     <td><B>Bit 0</B></td>
    
                                                  *     <td><B>Minimum ERL Assumption </B></td>
    
                                                  *   </tr>
    
                                                  *   <tr>
    
                                                  *     <td>0</td>
    
                                                  *     <td>0</td>
    
                                                  *     <td>6 dB</td>
    
                                                  *   </tr>
    
                                                  *   <tr>
    
                                                  *     <td>0</td>
    
                                                  *     <td>1</td>
    
                                                  *     <td>3 dB</td>
    
                                                  *   </tr>
    
                                                  *   <tr>
    
                                                  *     <td>1</td>
    
                                                  *     <td>0</td>
    
                                                  *     <td>0 dB</td>
    
                                                  *   </tr>
    
                                                  *   <tr>
    
                                                  *     <td>1</td>
    
                                                  *     <td>1</td>
    
                                                  *     <td>Not Valid</td>
    
                                                  *   </tr>
    
                                                  * </table>
    
                                                                      */

    but i can't find macro for delay line companding !

    thanks

    Ebi

  • Ebi,

    I have looped in the developer to comment on th e implementation and the documentation question here. You should be able to hear from them soon.

    Regards,
    Rahul
  • thanks for your time!

    Ebi