Mercurial > libavcodec.hg
changeset 9956:0448219eb490 libavcodec
IIR filter test program.
author | alexc |
---|---|
date | Thu, 16 Jul 2009 22:17:20 +0000 |
parents | 4ebcb6c121e4 |
children | 6fb2be900484 |
files | iirfilter.c |
diffstat | 1 files changed, 36 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/iirfilter.c Thu Jul 16 21:37:58 2009 +0000 +++ b/iirfilter.c Thu Jul 16 22:17:20 2009 +0000 @@ -177,3 +177,39 @@ 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 */