#include "iirfilter.h"
#include <math.h>
+#include "libavutil/attributes.h"
+#include "libavutil/common.h"
/**
* IIR filter global parameters
/// maximum supported filter order
#define MAXORDER 30
-static int butterworth_init_coeffs(void *avc, struct FFIIRFilterCoeffs *c,
- enum IIRFilterMode filt_mode,
- int order, float cutoff_ratio,
- float stopband)
+static av_cold int butterworth_init_coeffs(void *avc,
+ struct FFIIRFilterCoeffs *c,
+ enum IIRFilterMode filt_mode,
+ int order, float cutoff_ratio,
+ float stopband)
{
int i, j;
double wa;
return 0;
}
-static int biquad_init_coeffs(void *avc, struct FFIIRFilterCoeffs *c,
- enum IIRFilterMode filt_mode, int order,
- float cutoff_ratio, float stopband)
+static av_cold int biquad_init_coeffs(void *avc, struct FFIIRFilterCoeffs *c,
+ enum IIRFilterMode filt_mode, int order,
+ float cutoff_ratio, float stopband)
{
double cos_w0, sin_w0;
double a0, x0, x1;
}
#ifdef TEST
+#include <stdio.h>
+
#define FILT_ORDER 4
#define SIZE 1024
int main(void)
float cutoff_coeff = 0.4;
int16_t x[SIZE], y[SIZE];
int i;
- FILE* fd;
fcoeffs = ff_iir_filter_init_coeffs(NULL, FF_FILTER_TYPE_BUTTERWORTH,
FF_FILTER_MODE_LOWPASS, FILT_ORDER,
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);
+ for (i = 0; i < SIZE; i++)
+ printf("%6d %6d\n", x[i], y[i]);
ff_iir_filter_free_coeffs(fcoeffs);
ff_iir_filter_free_state(fstate);