dahdi: Add compile time DAHDI_ECHOCAN_PROCESS_TX option.
Add optional interface to allow software echo cans to process the transmitted samples. Can be used for things like DC removal. I used the following patches uploaded by biohumanoid but changed the name of 'echocan_hpf_tx' to 'echoan_process_tx and put the changes behind a compile time option. (issue #13562) Reported by: biohumanoid Patches: kernel.h.patch uploaded by biohumanoid (license 459) dahdi-base.c.#2.patch uploaded by biohumanoid (license 459) Signed-off-by: Shaun Ruffell <sruffell@digium.com> Acked-by: Kinsey Moore <kmoore@digium.com> Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com> git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9442 a0bf4364-ded3-4de4-8d8a-66a801d63aff
This commit is contained in:
parent
5b08a20526
commit
2ba1b4c201
@ -2330,6 +2330,21 @@ static ssize_t dahdi_chan_write(struct file *file, const char __user *usrbuf,
|
|||||||
}
|
}
|
||||||
chan->writen[res] = amnt;
|
chan->writen[res] = amnt;
|
||||||
}
|
}
|
||||||
|
#ifdef CONFIG_DAHDI_ECHOCAN_PROCESS_TX
|
||||||
|
if ((chan->ec_state) &&
|
||||||
|
(ECHO_MODE_ACTIVE == chan->ec_state->status.mode) &&
|
||||||
|
(chan->ec_state->ops->echocan_process_tx)) {
|
||||||
|
struct ec_state *const ec_state = chan->ec_state;
|
||||||
|
for (x = 0; x < chan->writen[res]; ++x) {
|
||||||
|
short tx;
|
||||||
|
tx = DAHDI_XLAW(chan->writebuf[res][x], chan);
|
||||||
|
ec_state->ops->echocan_process_tx(ec_state,
|
||||||
|
&tx, 1);
|
||||||
|
chan->writebuf[res][x] = DAHDI_LIN2X((int) tx,
|
||||||
|
chan);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
chan->writeidx[res] = 0;
|
chan->writeidx[res] = 0;
|
||||||
if (chan->flags & DAHDI_FLAG_FCS)
|
if (chan->flags & DAHDI_FLAG_FCS)
|
||||||
calc_fcs(chan, res);
|
calc_fcs(chan, res);
|
||||||
|
@ -126,6 +126,13 @@
|
|||||||
*/
|
*/
|
||||||
/* #define CONFIG_DAHDI_NO_ECHOCAN_DISABLE */
|
/* #define CONFIG_DAHDI_NO_ECHOCAN_DISABLE */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define if you would like to allow software echocans to process the tx audio
|
||||||
|
* in addition to the rx audio. Used for things like DC removal.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
/* #define CONFIG_DAHDI_ECHOCAN_PROCESS_TX */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Uncomment if you happen have an early TDM400P Rev H which
|
* Uncomment if you happen have an early TDM400P Rev H which
|
||||||
* sometimes forgets its PCI ID to have wcfxs match essentially all
|
* sometimes forgets its PCI ID to have wcfxs match essentially all
|
||||||
|
@ -257,6 +257,15 @@ struct dahdi_echocan_ops {
|
|||||||
* \return Nothing.
|
* \return Nothing.
|
||||||
*/
|
*/
|
||||||
void (*echocan_NLP_toggle)(struct dahdi_echocan_state *ec, unsigned int enable);
|
void (*echocan_NLP_toggle)(struct dahdi_echocan_state *ec, unsigned int enable);
|
||||||
|
|
||||||
|
#ifdef CONFIG_DAHDI_ECHOCAN_PROCESS_TX
|
||||||
|
/*! \brief Process an array of TX audio samples.
|
||||||
|
*
|
||||||
|
* \return Nothing.
|
||||||
|
*/
|
||||||
|
void (*echocan_process_tx)(struct dahdi_echocan_state *ec,
|
||||||
|
short *tx, u32 size);
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
/*! A factory for creating instances of software echo cancelers to be used on DAHDI channels. */
|
/*! A factory for creating instances of software echo cancelers to be used on DAHDI channels. */
|
||||||
|
Loading…
Reference in New Issue
Block a user