dahdi: When DACS is enabled, hold a pointer directly to the crossed channel.

This both removes the need to reference the 'chans'
__dahdi_process_putaudio_chunk and __dahdi_process_getaudio_chunk, and
allows the dahdi_receive / dahdi_transmit logic to be streamlined.  DACS
channels can no longer be echocanceled if crossed.  However, if a
channel was DACSed with dahi_cfg it couldn't have been echocanceled
anyway since the echo cancelers are disabled on the channel by default.

This change was originally contained in a patch kpfleming had floating
around. I split it up and merged it.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Signed-off-by: Kevin P. Fleming <kpfleming@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9603 a0bf4364-ded3-4de4-8d8a-66a801d63aff
This commit is contained in:
Shaun Ruffell
2011-01-03 18:27:49 +00:00
parent 7c49f372c2
commit 88345e505a
2 changed files with 66 additions and 79 deletions

View File

@@ -432,6 +432,9 @@ struct dahdi_chan {
u_char sreadchunk[DAHDI_MAX_CHUNKSIZE]; /*!< Preallocated static area */
short *readchunkpreec;
/* Channel from which to read when DACSed. */
struct dahdi_chan *dacs_chan;
/*! Pointer to tx and rx gain tables */
const u_char *rxgain;
const u_char *txgain;
@@ -529,7 +532,7 @@ struct dahdi_chan {
short conflast[DAHDI_MAX_CHUNKSIZE]; /*!< Last conference sample -- base part of channel */
short conflast1[DAHDI_MAX_CHUNKSIZE]; /*!< Last conference sample -- pseudo part of channel */
short conflast2[DAHDI_MAX_CHUNKSIZE]; /*!< Previous last conference sample -- pseudo part of channel */
/*! The echo canceler module that should be used to create an
instance when this channel needs one */