Use the libspeexdsp resampler
AFAICT it runs a little slower? but it's fixed point, and has much better understood audio characteristics.
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "speex/speex_preprocess.h"
|
||||
#include <stdio.h>
|
||||
|
||||
#define NN 160
|
||||
|
||||
int main()
|
||||
{
|
||||
short in[NN];
|
||||
int i;
|
||||
SpeexPreprocessState *st;
|
||||
int count=0;
|
||||
float f;
|
||||
|
||||
st = speex_preprocess_state_init(NN, 8000);
|
||||
i=1;
|
||||
speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_DENOISE, &i);
|
||||
i=0;
|
||||
speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_AGC, &i);
|
||||
i=8000;
|
||||
speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_AGC_LEVEL, &i);
|
||||
i=0;
|
||||
speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_DEREVERB, &i);
|
||||
f=.0;
|
||||
speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_DEREVERB_DECAY, &f);
|
||||
f=.0;
|
||||
speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_DEREVERB_LEVEL, &f);
|
||||
while (1)
|
||||
{
|
||||
int vad;
|
||||
fread(in, sizeof(short), NN, stdin);
|
||||
if (feof(stdin))
|
||||
break;
|
||||
vad = speex_preprocess_run(st, in);
|
||||
/*fprintf (stderr, "%d\n", vad);*/
|
||||
fwrite(in, sizeof(short), NN, stdout);
|
||||
count++;
|
||||
}
|
||||
speex_preprocess_state_destroy(st);
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user