sampling rate option
[speexdsp.git] / libspeex / testecho.c
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include <stdio.h>
6 #include <stdlib.h>
7 #include <sys/types.h>
8 #include <sys/stat.h>
9 #include <fcntl.h>
10 #include <unistd.h>
11 #include "speex/speex_echo.h"
12 #include "speex/speex_preprocess.h"
13
14
15 #define NN 128
16 #define TAIL 1024
17
18 int main(int argc, char **argv)
19 {
20    int echo_fd, ref_fd, e_fd;
21    spx_int32_t noise[NN+1];
22    short echo_buf[NN], ref_buf[NN], e_buf[NN];
23    SpeexEchoState *st;
24    SpeexPreprocessState *den;
25
26    if (argc != 4)
27    {
28       fprintf (stderr, "testecho mic_signal.sw speaker_signal.sw output.sw\n");
29       exit(1);
30    }
31    echo_fd = open (argv[2], O_RDONLY);
32    ref_fd  = open (argv[1],  O_RDONLY);
33    e_fd    = open (argv[3], O_WRONLY | O_CREAT | O_TRUNC, 0644);
34
35    st = speex_echo_state_init(NN, TAIL);
36    den = speex_preprocess_state_init(NN, 8000);
37    int tmp = 8000;
38    speex_echo_ctl(st, SPEEX_ECHO_SET_SAMPLING_RATE, &tmp);
39
40    while (read(ref_fd, ref_buf, NN*2))
41    {
42       read(echo_fd, echo_buf, NN*2);
43       speex_echo_cancel(st, ref_buf, echo_buf, e_buf, noise);
44       /*speex_preprocess(den, e_buf, noise);*/
45       write(e_fd, e_buf, NN*2);
46    }
47    speex_echo_state_destroy(st);
48    speex_preprocess_state_destroy(den);
49    close(e_fd);
50    close(echo_fd);
51    close(ref_fd);
52    return 0;
53 }