On Sat, Jun 22, 2002 at 01:44:45PM +0200, Marcus Schopen wrote:
Hallo Roland,
Roland Ehle wrote:
Am Fre, 2002-06-21 um 23.27 schrieb Marcus Schopen:
Am Ende der "standard.msg" und der "beep.msg" wird immer ein lautes kurzes Knacken ausgegeben. [...]
das Knacken bei der beep.msg kommt dann zustande, wenn die Message zu kurz ist (habe ich auf einer Seite im Internet gelesen). Hatte das
Dann ist nur Prasseln/Knacken zu hoeren.
gleiche Problem, bis ich herging und ein Ersatz-Beep genommen habe. Die zu kurze beep.msg löst auch gemäß der Quelle (hab leider vergessen, wo das war) das Knacken am Ende der standard.msg aus.
Wie gesagt, ich habe mir ja aus dem Netz eine beep.msg heruntergeladen. Die ist zwar nicht schon, aber funktioniert ohne Knacken am Ende. Dennoch habe ich weiterhin ein Knacken am Ende der standard.msg Warum nur?
Das Problem ist ein Fehler in der tty Audio Emulation, der letzte Teil einer message wird nicht in das Zielformat (Alaw) umgewandelt, d.h es wird im dem Format ausgegeben in dem es auch aufgenommen wurde (also ulaw oder admpc-4). Desweiteren kann es zwischen zwei audio Dateien immer ein kleines Knacken geben (ist aber in der Regel nicht hoerbar), wenn die eine Datei mit einem anderen Pegelwert aufhoert als die andere anfaengt (nicht zu verhindern). Fix: diff -ur linux-2.4.18.SuSE.org/drivers/isdn/isdn_tty.c linux-2.4.18.SuSE/drivers/isdn/isdn_tty.c --- linux-2.4.18.SuSE.org/drivers/isdn/isdn_tty.c Fri Dec 21 18:41:54 2001 +++ linux-2.4.18.SuSE/drivers/isdn/isdn_tty.c Thu May 23 12:11:23 2002 @@ -454,21 +454,22 @@ #endif struct sk_buff *skb; + if (!(buflen = info->xmit_count)) { #ifdef CONFIG_ISDN_AUDIO - if (info->vonline & 4) { - info->vonline &= ~6; - if (!info->vonline) { + if (info->vonline & 4) { + info->vonline &= ~6; + if (!info->vonline) { #ifdef ISDN_DEBUG_MODEM_VOICE - printk(KERN_DEBUG - "senddown: send VCON on ttyI%d\n", - info->line); + printk(KERN_DEBUG + "senddown(no xmit): send VCON on ttyI%d\n", + info->line); #endif - isdn_tty_at_cout("\r\nVCON\r\n", info); + isdn_tty_at_cout("\r\nVCON\r\n", info); + } } - } #endif - if (!(buflen = info->xmit_count)) return; + } if ((info->emu.mdmreg[REG_CTS] & BIT_CTS) != 0) info->msr &= ~UART_MSR_CTS; info->lsr &= ~UART_LSR_TEMT; @@ -495,8 +496,8 @@ #endif if (!skb) { printk(KERN_WARNING - "isdn_tty: Out of memory in ttyI%d senddown\n", - info->line); + "isdn_tty: Out of memory in ttyI%d senddown\n", + info->line); return; } skb_reserve(skb, skb_res); @@ -521,10 +522,9 @@ * with ROM revision 6.01 */ audio_len = isdn_audio_adpcm2xlaw(info->adpcms, - ifmt, - skb->data, - skb_put(skb, audio_len), - buflen); + ifmt, skb->data, + skb_put(skb, audio_len), + buflen); skb_pull(skb, buflen); skb_trim(skb, audio_len); break; @@ -532,16 +532,27 @@ /* a-law */ if (!ifmt) isdn_audio_alaw2ulaw(skb->data, - buflen); + buflen); break; case 6: /* u-law */ if (ifmt) isdn_audio_ulaw2alaw(skb->data, - buflen); + buflen); break; } } + if (info->vonline & 4) { + info->vonline &= ~6; + if (!info->vonline) { +#ifdef ISDN_DEBUG_MODEM_VOICE + printk(KERN_DEBUG + "senddown: send VCON on ttyI%d\n", + info->line); +#endif + isdn_tty_at_cout("\r\nVCON\r\n", info); + } + } #endif /* CONFIG_ISDN_AUDIO */ if (info->emu.mdmreg[REG_T70] & BIT_T70) { /* Add T.70 simplified header */ -- Karsten Keil SuSE Labs ISDN development