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
00038 enum {
00039 SP_RAWFILE,
00040 SP_MIC,
00041 SP_ADINNET,
00042 SP_MFCFILE,
00043 SP_NETAUDIO,
00044 SP_STDIN
00045 };
00046
00048 #define DEFAULT_WSTEP 1000
00049
00055 #ifdef HAVE_LIBSNDFILE
00056 #define SUPPORTED_WAVEFILE_FORMAT "RAW(BE),WAV,AU,SND,NIST,ADPCM and more"
00057 #else
00058 #define SUPPORTED_WAVEFILE_FORMAT "RAW(BE),WAV"
00059 #endif
00060
00066 #define ZMEANSAMPLES 48000
00067
00068 #define DS_RBSIZE 512
00069 #define DS_BUFSIZE 256
00070 #define DS_BUFSIZE_Y 512
00071
00075 typedef struct {
00076 int decrate;
00077 int intrate;
00078 double hdn[DS_RBSIZE+1];
00079 int hdn_len;
00080 int delay;
00081 double x[DS_BUFSIZE];
00082 double y[DS_BUFSIZE_Y];
00083 double rb[DS_RBSIZE];
00084 int indx;
00085 int bp;
00086 int count;
00087 } DS_FILTER;
00092 typedef struct {
00093 DS_FILTER *fir[3];
00094 double *buf[4];
00095 int buflen;
00096 } DS_BUFFER;
00097
00102 typedef struct {
00103 int trigger;
00104 int length;
00105 int offset;
00106 int zero_cross;
00107 int is_trig;
00108 int sign;
00109 int top;
00110 int valid_len;
00111 SP16 *data;
00112 int *is_zc;
00113 int level;
00114 } ZEROCROSS;
00115
00116 #define ZC_UNDEF 2
00117 #define ZC_POSITIVE 1
00118 #define ZC_NEGATIVE -1
00119
00120
00121 boolean adin_mic_standby(int freq, void *arg);
00122 boolean adin_mic_begin();
00123 boolean adin_mic_end();
00124 int adin_mic_read(SP16 *buf, int sampnum);
00125
00126 boolean adin_netaudio_standby(int freq, void *arg);
00127 boolean adin_netaudio_begin();
00128 boolean adin_netaudio_end();
00129 int adin_netaudio_read(SP16 *buf, int sampnum);
00130 int NA_standby(int, char *);
00131 void NA_start();
00132 void NA_stop();
00133 int NA_read(SP16 *buf, int sampnum);
00134
00135
00136 boolean adin_file_standby(int freq, void *arg);
00137 boolean adin_file_begin();
00138 int adin_file_read(SP16 *buf, int sampnum);
00139 boolean adin_file_end();
00140 boolean adin_stdin_standby(int freq, void *arg);
00141 boolean adin_stdin_begin();
00142 int adin_stdin_read(SP16 *buf, int sampnum);
00143 char *adin_file_get_current_filename();
00144
00145
00146 #ifdef HAVE_LIBSNDFILE
00147 boolean adin_sndfile_standby(int freq, void *arg);
00148 boolean adin_sndfile_begin();
00149 int adin_sndfile_read(SP16 *buf, int sampnum);
00150 boolean adin_sndfile_end();
00151 char *adin_sndfile_get_current_filename();
00152 #endif
00153
00154
00155 boolean adin_tcpip_standby(int freq, void *arg);
00156 boolean adin_tcpip_begin();
00157 boolean adin_tcpip_end();
00158 int adin_tcpip_read(SP16 *buf, int sampnum);
00159 boolean adin_tcpip_send_pause();
00160 boolean adin_tcpip_send_terminate();
00161 boolean adin_tcpip_send_resume();
00162
00163
00164 void init_count_zc_e(ZEROCROSS *zc, int length);
00165 void reset_count_zc_e(ZEROCROSS *zc, int c_trigger, int c_length, int c_offset);
00166 void free_count_zc_e(ZEROCROSS *zc);
00167 int count_zc_e(ZEROCROSS *zc, SP16 *buf,int step);
00168 void zc_copy_buffer(ZEROCROSS *zc, SP16 *newbuf, int *len);
00169
00170
00171 void zmean_reset();
00172 void sub_zmean(SP16 *speech, int samplenum);
00173
00174
00175 DS_BUFFER *ds48to16_new();
00176 void ds48to16_free(DS_BUFFER *ds);
00177 int ds48to16(SP16 *dst, SP16 *src, int srclen, int maxdstlen, DS_BUFFER *ds);
00178
00179 #endif