From d21ce66a385fe2de9cc3d50756b705c05e6ba914 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Wed, 25 Jan 2017 06:55:34 +0000 Subject: [PATCH] made tsrc a little more generic git-svn-id: https://svn.code.sf.net/p/freetel/code@2997 01035d8c-6547-0410-b346-abe4f91aad63 --- codec2-dev/unittest/tsrc.c | 59 +++++++++++++++++++++++--------------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/codec2-dev/unittest/tsrc.c b/codec2-dev/unittest/tsrc.c index e15d0394..f73243a1 100644 --- a/codec2-dev/unittest/tsrc.c +++ b/codec2-dev/unittest/tsrc.c @@ -11,23 +11,20 @@ #include #include +#include #include #include #include -#define N8 160 /* processing buffer size at 8 kHz */ -#define FS 8000 /* nominal input sample rate */ -#define N48 ((int)N8*(48000/8000)) /* buf size assuming 48k max sample rate */ +#define N 10000 /* processing buffer size */ int main(int argc, char *argv[]) { - FILE *f8k, *fout; - short in8k_short[N8]; - float in8k[N8]; - float out[N48]; - short out_short[N48]; + FILE *fin, *fout; + short in_short[N], out_short[N]; + float in[N], out[N]; SRC_STATE *src; SRC_DATA data; - int error; + int error, nin, nremaining, i; if (argc != 4) { printf("usage %s inputRawFile OutputRawFile OutSampleRatio\n", argv[0]); @@ -35,10 +32,10 @@ int main(int argc, char *argv[]) { } if (strcmp(argv[1], "-") == 0) - f8k = stdin; + fin = stdin; else - f8k = fopen(argv[1], "rb"); - assert(f8k != NULL); + fin = fopen(argv[1], "rb"); + assert(fin != NULL); if (strcmp(argv[2], "-") == 0) fout = stdout; @@ -50,26 +47,42 @@ int main(int argc, char *argv[]) { //src = src_new(SRC_LINEAR, 1, &error); assert(src != NULL); - data.data_in = in8k; + data.data_in = in; data.data_out = out; - data.input_frames = N8; - data.output_frames = N48; + data.input_frames = N; + data.output_frames = N; data.end_of_input = 0; data.src_ratio = atof(argv[3]); - while(fread(in8k_short, sizeof(short), N8, f8k) == N8) { - src_short_to_float_array(in8k_short, in8k, N8); - src_process(src, &data); - //fprintf(stderr, "%d %d\n", (int)data.output_frames , (int)data.output_frames_gen); - assert(data.output_frames_gen <= N48); + int total_in = 0; + int total_out = 0; + + nin = N; + nremaining = 0; + while(fread(&in_short[nremaining], sizeof(short), nin, fin) == nin) { + src_short_to_float_array(in_short, in, N); + error = src_process(src, &data); + assert(error == 0); src_float_to_short_array(out, out_short, data.output_frames_gen); + fwrite(out_short, sizeof(short), data.output_frames_gen, fout); if (fout == stdout) fflush(stdout); - if (f8k == stdin) fflush(stdin); - } + + nremaining = N - data.input_frames_used; + nin = data.input_frames_used; + //fprintf(stderr, "input frames: %d output_frames %d nremaining: %d\n", + // (int)data.input_frames_used, (int)data.output_frames_gen, nremaining); + for(i=0; i