00001
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef __SENT_ADIN__
00032 #define __SENT_ADIN__
00033
00034 #include <sent/stddefs.h>
00035 #include <sent/speech.h>
00036
00037 #if defined(HAVE_ALSA_ASOUNDLIB_H) || defined(HAVE_SYS_ASOUNDLIB_H)
00038 #define HAS_ALSA
00039 #endif
00040 #ifdef __linux__
00041 #if defined(HAVE_SYS_SOUNDCARD_H) || defined(HAVE_MACHINE_SOUNDCARD_H)
00042 #define HAS_OSS
00043 #endif
00044 #endif
00045 #ifdef HAVE_ESD_H
00046 #define HAS_ESD
00047 #endif
00048
00050 enum {
00051 INPUT_WAVEFORM,
00052 INPUT_VECTOR
00053 };
00054
00056 enum {
00057 SP_RAWFILE,
00058 SP_MIC,
00059 SP_ADINNET,
00060 SP_MFCFILE,
00061 SP_NETAUDIO,
00062 SP_STDIN,
00063 SP_MFCMODULE
00064 };
00065
00067 enum {
00068 SP_INPUT_DEFAULT,
00069 SP_INPUT_ALSA,
00070 SP_INPUT_OSS,
00071 SP_INPUT_ESD,
00072 };
00073
00075 #define DEFAULT_WSTEP 1000
00076
00082 #ifdef HAVE_LIBSNDFILE
00083 #define SUPPORTED_WAVEFILE_FORMAT "RAW(BE),WAV,AU,SND,NIST,ADPCM and more"
00084 #else
00085 #define SUPPORTED_WAVEFILE_FORMAT "RAW(BE),WAV"
00086 #endif
00087
00093 #define ZMEANSAMPLES 48000
00094
00095 #define DS_RBSIZE 512
00096 #define DS_BUFSIZE 256
00097 #define DS_BUFSIZE_Y 512
00098
00102 typedef struct {
00103 int decrate;
00104 int intrate;
00105 double hdn[DS_RBSIZE+1];
00106 int hdn_len;
00107 int delay;
00108 double x[DS_BUFSIZE];
00109 double y[DS_BUFSIZE_Y];
00110 double rb[DS_RBSIZE];
00111 int indx;
00112 int bp;
00113 int count;
00114 } DS_FILTER;
00119 typedef struct {
00120 DS_FILTER *fir[3];
00121 double *buf[4];
00122 int buflen;
00123 } DS_BUFFER;
00124
00129 typedef struct {
00130 int trigger;
00131 int length;
00132 int offset;
00133 int zero_cross;
00134 int is_trig;
00135 int sign;
00136 int top;
00137 int valid_len;
00138 SP16 *data;
00139 int *is_zc;
00140 int level;
00141 } ZEROCROSS;
00142
00143 #define ZC_UNDEF 2
00144 #define ZC_POSITIVE 1
00145 #define ZC_NEGATIVE -1
00146
00147
00148 boolean adin_mic_standby(int freq, void *arg);
00149 boolean adin_mic_begin();
00150 boolean adin_mic_end();
00151 int adin_mic_read(SP16 *buf, int sampnum);
00152
00153 boolean adin_alsa_standby(int freq, void *arg);
00154 boolean adin_alsa_begin();
00155 boolean adin_alsa_end();
00156 int adin_alsa_read(SP16 *buf, int sampnum);
00157
00158 boolean adin_oss_standby(int freq, void *arg);
00159 boolean adin_oss_begin();
00160 boolean adin_oss_end();
00161 int adin_oss_read(SP16 *buf, int sampnum);
00162
00163 boolean adin_esd_standby(int freq, void *arg);
00164 boolean adin_esd_begin();
00165 boolean adin_esd_end();
00166 int adin_esd_read(SP16 *buf, int sampnum);
00167
00168 boolean adin_netaudio_standby(int freq, void *arg);
00169 boolean adin_netaudio_begin();
00170 boolean adin_netaudio_end();
00171 int adin_netaudio_read(SP16 *buf, int sampnum);
00172 int NA_standby(int, char *);
00173 void NA_start();
00174 void NA_stop();
00175 int NA_read(SP16 *buf, int sampnum);
00176
00177
00178 boolean adin_file_standby(int freq, void *arg);
00179 boolean adin_file_begin();
00180 int adin_file_read(SP16 *buf, int sampnum);
00181 boolean adin_file_end();
00182 boolean adin_stdin_standby(int freq, void *arg);
00183 boolean adin_stdin_begin();
00184 int adin_stdin_read(SP16 *buf, int sampnum);
00185 char *adin_file_get_current_filename();
00186
00187
00188 #ifdef HAVE_LIBSNDFILE
00189 boolean adin_sndfile_standby(int freq, void *arg);
00190 boolean adin_sndfile_begin();
00191 int adin_sndfile_read(SP16 *buf, int sampnum);
00192 boolean adin_sndfile_end();
00193 char *adin_sndfile_get_current_filename();
00194 #endif
00195
00196
00197 boolean adin_tcpip_standby(int freq, void *arg);
00198 boolean adin_tcpip_begin();
00199 boolean adin_tcpip_end();
00200 int adin_tcpip_read(SP16 *buf, int sampnum);
00201 boolean adin_tcpip_send_pause();
00202 boolean adin_tcpip_send_terminate();
00203 boolean adin_tcpip_send_resume();
00204
00205
00206 void init_count_zc_e(ZEROCROSS *zc, int length);
00207 void reset_count_zc_e(ZEROCROSS *zc, int c_trigger, int c_length, int c_offset);
00208 void free_count_zc_e(ZEROCROSS *zc);
00209 int count_zc_e(ZEROCROSS *zc, SP16 *buf,int step);
00210 void zc_copy_buffer(ZEROCROSS *zc, SP16 *newbuf, int *len);
00211
00212
00213 void zmean_reset();
00214 void sub_zmean(SP16 *speech, int samplenum);
00215
00216
00217 DS_BUFFER *ds48to16_new();
00218 void ds48to16_free(DS_BUFFER *ds);
00219 int ds48to16(SP16 *dst, SP16 *src, int srclen, int maxdstlen, DS_BUFFER *ds);
00220
00221 #endif