@ -1454,66 +1454,63 @@ dsp_cmx_send_member(struct dsp *dsp, int len, s32 *c, int members)
# ifdef CMX_CONF_DEBUG
if ( 0 ) {
# else
if ( members = = 2 ) {
if ( members = = 2 ) {
# endif
/* "other" becomes other party */
other = ( list_entry ( conf - > mlist . next ,
struct dsp_conf_member , list ) ) - > dsp ;
if ( other = = member )
other = ( list_entry ( conf - > mlist . prev ,
struct dsp_conf_member , list ) ) - > dsp ;
o_q = other - > rx_buff ; /* received data */
o_rr = ( other - > rx_R + len ) & CMX_BUFF_MASK ;
/* end of rx-pointer */
o_r = ( o_rr - rr + r ) & CMX_BUFF_MASK ;
/* start rx-pointer at current read position*/
/* -> if echo is NOT enabled */
if ( ! dsp - > echo . software ) {
/*
* - > copy other member ' s rx - data ,
* if tx - data is available , mix
*/
while ( o_r ! = o_rr & & t ! = tt ) {
* d + + = dsp_audio_mix_law [ ( p [ t ] < < 8 ) | o_q [ o_r ] ] ;
t = ( t + 1 ) & CMX_BUFF_MASK ;
o_r = ( o_r + 1 ) & CMX_BUFF_MASK ;
}
while ( o_r ! = o_rr ) {
* d + + = o_q [ o_r ] ;
o_r = ( o_r + 1 ) & CMX_BUFF_MASK ;
}
/* -> if echo is enabled */
} else {
/*
* - > mix other member ' s rx - data with echo ,
* if tx - data is available , mix
*/
while ( r ! = rr & & t ! = tt ) {
sample = dsp_audio_law_to_s32 [ p [ t ] ] +
dsp_audio_law_to_s32 [ q [ r ] ] +
dsp_audio_law_to_s32 [ o_q [ o_r ] ] ;
if ( sample < - 32768 )
sample = - 32768 ;
else if ( sample > 32767 )
sample = 32767 ;
* d + + = dsp_audio_s16_to_law [ sample & 0xffff ] ;
/* tx-data + rx_data + echo */
t = ( t + 1 ) & CMX_BUFF_MASK ;
r = ( r + 1 ) & CMX_BUFF_MASK ;
o_r = ( o_r + 1 ) & CMX_BUFF_MASK ;
}
while ( r ! = rr ) {
* d + + = dsp_audio_mix_law [ ( q [ r ] < < 8 ) | o_q [ o_r ] ] ;
r = ( r + 1 ) & CMX_BUFF_MASK ;
o_r = ( o_r + 1 ) & CMX_BUFF_MASK ;
}
/* "other" becomes other party */
other = ( list_entry ( conf - > mlist . next ,
struct dsp_conf_member , list ) ) - > dsp ;
if ( other = = member )
other = ( list_entry ( conf - > mlist . prev ,
struct dsp_conf_member , list ) ) - > dsp ;
o_q = other - > rx_buff ; /* received data */
o_rr = ( other - > rx_R + len ) & CMX_BUFF_MASK ;
/* end of rx-pointer */
o_r = ( o_rr - rr + r ) & CMX_BUFF_MASK ;
/* start rx-pointer at current read position*/
/* -> if echo is NOT enabled */
if ( ! dsp - > echo . software ) {
/*
* - > copy other member ' s rx - data ,
* if tx - data is available , mix
*/
while ( o_r ! = o_rr & & t ! = tt ) {
* d + + = dsp_audio_mix_law [ ( p [ t ] < < 8 ) | o_q [ o_r ] ] ;
t = ( t + 1 ) & CMX_BUFF_MASK ;
o_r = ( o_r + 1 ) & CMX_BUFF_MASK ;
}
while ( o_r ! = o_rr ) {
* d + + = o_q [ o_r ] ;
o_r = ( o_r + 1 ) & CMX_BUFF_MASK ;
}
/* -> if echo is enabled */
} else {
/*
* - > mix other member ' s rx - data with echo ,
* if tx - data is available , mix
*/
while ( r ! = rr & & t ! = tt ) {
sample = dsp_audio_law_to_s32 [ p [ t ] ] +
dsp_audio_law_to_s32 [ q [ r ] ] +
dsp_audio_law_to_s32 [ o_q [ o_r ] ] ;
if ( sample < - 32768 )
sample = - 32768 ;
else if ( sample > 32767 )
sample = 32767 ;
* d + + = dsp_audio_s16_to_law [ sample & 0xffff ] ;
/* tx-data + rx_data + echo */
t = ( t + 1 ) & CMX_BUFF_MASK ;
r = ( r + 1 ) & CMX_BUFF_MASK ;
o_r = ( o_r + 1 ) & CMX_BUFF_MASK ;
}
while ( r ! = rr ) {
* d + + = dsp_audio_mix_law [ ( q [ r ] < < 8 ) | o_q [ o_r ] ] ;
r = ( r + 1 ) & CMX_BUFF_MASK ;
o_r = ( o_r + 1 ) & CMX_BUFF_MASK ;
}
dsp - > tx_R = t ;
goto send_packet ;
}
# ifdef DSP_NEVER_DEFINED
dsp - > tx_R = t ;
goto send_packet ;
}
# endif
/* PROCESS DATA (three or more members) */
/* -> if echo is NOT enabled */
if ( ! dsp - > echo . software ) {