From ca0f1e50928bda4a150d3bafe133e3d593f4aa65 Mon Sep 17 00:00:00 2001 From: Alex Converse Date: Thu, 16 Jul 2009 22:17:20 +0000 Subject: IIR filter test program. Originally committed as revision 19443 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/iirfilter.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'libavcodec/iirfilter.c') diff --git a/libavcodec/iirfilter.c b/libavcodec/iirfilter.c index 87206fc5d2..eb6ec90d16 100644 --- a/libavcodec/iirfilter.c +++ b/libavcodec/iirfilter.c @@ -177,3 +177,39 @@ av_cold void ff_iir_filter_free_coeffs(struct FFIIRFilterCoeffs *coeffs) av_free(coeffs); } +#ifdef TEST +#define FILT_ORDER 4 +#define SIZE 1024 +int main(void) +{ + struct FFIIRFilterCoeffs *fcoeffs = NULL; + struct FFIIRFilterState *fstate = NULL; + float cutoff_coeff = 0.4; + int16_t x[SIZE], y[SIZE]; + int i; + FILE* fd; + + fcoeffs = ff_iir_filter_init_coeffs(FF_FILTER_TYPE_BUTTERWORTH, + FF_FILTER_MODE_LOWPASS, FILT_ORDER, + cutoff_coeff, 0.0, 0.0); + fstate = ff_iir_filter_init_state(FILT_ORDER); + + for (i = 0; i < SIZE; i++) { + x[i] = lrint(0.75 * INT16_MAX * sin(0.5*M_PI*i*i/SIZE)); + } + + ff_iir_filter(fcoeffs, fstate, SIZE, x, 1, y, 1); + + fd = fopen("in.bin", "w"); + fwrite(x, sizeof(x[0]), SIZE, fd); + fclose(fd); + + fd = fopen("out.bin", "w"); + fwrite(y, sizeof(y[0]), SIZE, fd); + fclose(fd); + + ff_iir_filter_free_coeffs(fcoeffs); + ff_iir_filter_free_state(fstate); + return 0; +} +#endif /* TEST */ -- cgit v1.2.3