1 /* $Id: isdn_audio.h,v 1.1.4.1 2001/11/20 14:19:34 kai Exp $ 2 * 3 * Linux ISDN subsystem, audio conversion and compression (linklevel). 4 * 5 * Copyright 1994-1999 by Fritz Elfert (fritz@isdn4linux.de) 6 * 7 * This software may be used and distributed according to the terms 8 * of the GNU General Public License, incorporated herein by reference. 9 * 10 */ 11 12 #define DTMF_NPOINTS 205 /* Number of samples for DTMF recognition */ 13 typedef struct adpcm_state { 14 int a; 15 int d; 16 int word; 17 int nleft; 18 int nbits; 19 } adpcm_state; 20 21 typedef struct dtmf_state { 22 char last; 23 char llast; 24 int idx; 25 int buf[DTMF_NPOINTS]; 26 } dtmf_state; 27 28 typedef struct silence_state { 29 int state; 30 unsigned int idx; 31 } silence_state; 32 33 extern void isdn_audio_ulaw2alaw(unsigned char *, unsigned long); 34 extern void isdn_audio_alaw2ulaw(unsigned char *, unsigned long); 35 extern adpcm_state *isdn_audio_adpcm_init(adpcm_state *, int); 36 extern int isdn_audio_adpcm2xlaw(adpcm_state *, int, unsigned char *, unsigned char *, int); 37 extern int isdn_audio_xlaw2adpcm(adpcm_state *, int, unsigned char *, unsigned char *, int); 38 extern int isdn_audio_2adpcm_flush(adpcm_state * s, unsigned char *out); 39 extern void isdn_audio_calc_dtmf(modem_info *, unsigned char *, int, int); 40 extern void isdn_audio_eval_dtmf(modem_info *); 41 dtmf_state *isdn_audio_dtmf_init(dtmf_state *); 42 extern void isdn_audio_calc_silence(modem_info *, unsigned char *, int, int); 43 extern void isdn_audio_eval_silence(modem_info *); 44 silence_state *isdn_audio_silence_init(silence_state *); 45 extern void isdn_audio_put_dle_code(modem_info *, u_char); 46