65 lines
1.5 KiB
C
65 lines
1.5 KiB
C
|
/*
|
||
|
tsrc.c
|
||
|
David Rowe
|
||
|
Sat Nov 3 2012
|
||
|
|
||
|
Unit test for libresample code.
|
||
|
|
||
|
*/
|
||
|
|
||
|
#include <assert.h>
|
||
|
#include <math.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <stdio.h>
|
||
|
#include <samplerate.h>
|
||
|
|
||
|
#define N8 160 /* processing buffer size at 8 kHz */
|
||
|
#define N48 ((int)N8*(48000/8000)) /* buf size assuming 48k max sample rate */
|
||
|
|
||
|
int main(int argc, char *argv[]) {
|
||
|
FILE *f8k, *fout;
|
||
|
short in8k_short[N8];
|
||
|
float in8k[N8];
|
||
|
float out[N48];
|
||
|
short out_short[N48];
|
||
|
SRC_STATE *src;
|
||
|
SRC_DATA data;
|
||
|
int error;
|
||
|
|
||
|
if (argc != 4) {
|
||
|
printf("usage %s inputRawFile OutputRawFile OutputSamplerate\n", argv[0]);
|
||
|
exit(0);
|
||
|
}
|
||
|
|
||
|
f8k = fopen(argv[1], "rb");
|
||
|
assert(f8k != NULL);
|
||
|
|
||
|
fout = fopen(argv[2], "wb");
|
||
|
assert(fout != NULL);
|
||
|
|
||
|
src = src_new(SRC_SINC_FASTEST, 1, &error);
|
||
|
assert(src != NULL);
|
||
|
|
||
|
data.data_in = in8k;
|
||
|
data.data_out = out;
|
||
|
data.input_frames = N8;
|
||
|
data.output_frames = N48;
|
||
|
data.end_of_input = 0;
|
||
|
data.src_ratio = atof(argv[3])/8000;
|
||
|
printf("%f\n", data.src_ratio);
|
||
|
|
||
|
while(fread(in8k_short, sizeof(short), N8, f8k) == N8) {
|
||
|
src_short_to_float_array(in8k_short, in8k, N8);
|
||
|
src_process(src, &data);
|
||
|
printf("%d %d\n", (int)data.output_frames , (int)data.output_frames_gen);
|
||
|
assert(data.output_frames_gen <= N48);
|
||
|
src_float_to_short_array(out, out_short, data.output_frames_gen);
|
||
|
fwrite(out_short, sizeof(short), data.output_frames_gen, fout);
|
||
|
}
|
||
|
|
||
|
fclose(fout);
|
||
|
fclose(f8k);
|
||
|
|
||
|
return 0;
|
||
|
}
|