Вот исходный код моей программы:
#include <stdio.h>
#include <speex/speex_echo.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <speex/speex.h>
int main(){
char *without_echo_f=«sound.raw»;
char *with_echo_f=«ss.raw»;
struct stat info1,info2;
char *without_echo,*with_echo,*after_cancel;
SpeexEchoState *echo_state;
int rc; if(stat(without_echo_f,&info1)==-1){
printf(«Error while stat!\n»);
exit(1); } if(stat(with_echo_f,&info2)==-1){
printf(«Error while stat!\n»);
exit(1);
} //printf(«Size of without_echo is %d bytes.\n»,(int)info1.st_size);
//printf(«Size of with_echo is %d bytes.\n»,(int)info2.st_size); without_echo = (char *) malloc((int)info1.st_size);
with_echo = (char *) malloc((int)info2.st_size);
after_cancel = (char *) malloc((int)info2.st_size); echo_state = speex_echo_state_init(100000,10); speex_echo_cancellation(echo_state, without_echo, with_echo, after_cancel); rc = write(1, after_cancel, (int)info2.st_size);
if (rc != (int)info2.st_size){
fprintf(stderr,«short write: wrote %d bytes\n», rc);
} free(after_cancel);
free(with_echo);
free(without_echo);
}
Но все равно в итоге при запуске (./echocanc > echocanc.raw ) получаю white noise . Подозреваю на параметры speex_echo_state_init. Если кто-то знает подскажите. Заранее благодарен.