diff options
author | Andreas Eversberg <andreas@eversberg.eu> | 2009-05-22 07:04:49 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-05-25 03:51:34 -0400 |
commit | bc138ec4ac58bb83e2d9d5c12328d5452294c1f0 (patch) | |
tree | 059a02dfee5e813bdf21131aaa7c15085dd7f768 /drivers/isdn/mISDN/dsp_core.c | |
parent | b5df5a5c3bf0f809d854ad7156ce26b709b533c0 (diff) |
mISDN: Hardware acceleration is now possible in conjunction with audio recording
Audio recording requires software audio processing.
Both hardware and software processing is simultaniously possible now.
Signed-off-by: Andreas Eversberg <andreas@eversberg.eu>
Signed-off-by: Karsten Keil <keil@b1-systems.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/isdn/mISDN/dsp_core.c')
-rw-r--r-- | drivers/isdn/mISDN/dsp_core.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/drivers/isdn/mISDN/dsp_core.c b/drivers/isdn/mISDN/dsp_core.c index 6b4939854306..a0e0af81eb2e 100644 --- a/drivers/isdn/mISDN/dsp_core.c +++ b/drivers/isdn/mISDN/dsp_core.c | |||
@@ -203,13 +203,13 @@ dsp_rx_off_member(struct dsp *dsp) | |||
203 | else if (dsp->dtmf.software) | 203 | else if (dsp->dtmf.software) |
204 | rx_off = 0; | 204 | rx_off = 0; |
205 | /* echo in software */ | 205 | /* echo in software */ |
206 | else if (dsp->echo && dsp->pcm_slot_tx < 0) | 206 | else if (dsp->echo.software) |
207 | rx_off = 0; | 207 | rx_off = 0; |
208 | /* bridge in software */ | 208 | /* bridge in software */ |
209 | else if (dsp->conf) { | 209 | else if (dsp->conf && dsp->conf->software) |
210 | if (dsp->conf->software) | 210 | rx_off = 0; |
211 | rx_off = 0; | 211 | /* data is not required by user space and not required |
212 | } | 212 | * for echo dtmf detection, soft-echo, soft-bridging */ |
213 | 213 | ||
214 | if (rx_off == dsp->rx_is_off) | 214 | if (rx_off == dsp->rx_is_off) |
215 | return; | 215 | return; |
@@ -415,7 +415,7 @@ tone_off: | |||
415 | dsp_rx_off(dsp); | 415 | dsp_rx_off(dsp); |
416 | break; | 416 | break; |
417 | case DSP_ECHO_ON: /* enable echo */ | 417 | case DSP_ECHO_ON: /* enable echo */ |
418 | dsp->echo = 1; /* soft echo */ | 418 | dsp->echo.software = 1; /* soft echo */ |
419 | if (dsp_debug & DEBUG_DSP_CORE) | 419 | if (dsp_debug & DEBUG_DSP_CORE) |
420 | printk(KERN_DEBUG "%s: enable cmx-echo\n", __func__); | 420 | printk(KERN_DEBUG "%s: enable cmx-echo\n", __func__); |
421 | dsp_cmx_hardware(dsp->conf, dsp); | 421 | dsp_cmx_hardware(dsp->conf, dsp); |
@@ -424,7 +424,8 @@ tone_off: | |||
424 | dsp_cmx_debug(dsp); | 424 | dsp_cmx_debug(dsp); |
425 | break; | 425 | break; |
426 | case DSP_ECHO_OFF: /* disable echo */ | 426 | case DSP_ECHO_OFF: /* disable echo */ |
427 | dsp->echo = 0; | 427 | dsp->echo.software = 0; |
428 | dsp->echo.hardware = 0; | ||
428 | if (dsp_debug & DEBUG_DSP_CORE) | 429 | if (dsp_debug & DEBUG_DSP_CORE) |
429 | printk(KERN_DEBUG "%s: disable cmx-echo\n", __func__); | 430 | printk(KERN_DEBUG "%s: disable cmx-echo\n", __func__); |
430 | dsp_cmx_hardware(dsp->conf, dsp); | 431 | dsp_cmx_hardware(dsp->conf, dsp); |
@@ -722,7 +723,7 @@ dsp_function(struct mISDNchannel *ch, struct sk_buff *skb) | |||
722 | skb->len, (dsp_options&DSP_OPT_ULAW)?1:0); | 723 | skb->len, (dsp_options&DSP_OPT_ULAW)?1:0); |
723 | } | 724 | } |
724 | /* we need to process receive data if software */ | 725 | /* we need to process receive data if software */ |
725 | if (dsp->pcm_slot_tx < 0 && dsp->pcm_slot_rx < 0) { | 726 | if (dsp->conf && dsp->conf->software) { |
726 | /* process data from card at cmx */ | 727 | /* process data from card at cmx */ |
727 | dsp_cmx_receive(dsp, skb); | 728 | dsp_cmx_receive(dsp, skb); |
728 | } | 729 | } |