FFmpeg
iirfilter.c
Go to the documentation of this file.
1 /*
2  * This file is part of FFmpeg.
3  *
4  * FFmpeg is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * FFmpeg is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with FFmpeg; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17  */
18 
19 #include <math.h>
20 #include <stdint.h>
21 #include <stdio.h>
22 
23 #include "libavutil/libm.h"
24 
25 #include "libavcodec/iirfilter.h"
26 
27 #define FILT_ORDER 4
28 #define SIZE 1024
29 
30 int main(void)
31 {
32  struct FFIIRFilterCoeffs *fcoeffs = NULL;
33  struct FFIIRFilterState *fstate = NULL;
34  float cutoff_coeff = 0.4;
35  int16_t x[SIZE], y[SIZE];
36  int i;
37 
40  cutoff_coeff, 0.0, 0.0);
42 
43  for (i = 0; i < SIZE; i++)
44  x[i] = lrint(0.75 * INT16_MAX * sin(0.5 * M_PI * i * i / SIZE));
45 
46  ff_iir_filter(fcoeffs, fstate, SIZE, x, 1, y, 1);
47 
48  for (i = 0; i < SIZE; i++)
49  printf("%6d %6d\n", x[i], y[i]);
50 
53  return 0;
54 }
FFIIRFilterState
IIR filter state.
Definition: iirfilter.c:51
iirfilter.h
libm.h
ff_iir_filter
void ff_iir_filter(const struct FFIIRFilterCoeffs *c, struct FFIIRFilterState *s, int size, const int16_t *src, ptrdiff_t sstep, int16_t *dst, ptrdiff_t dstep)
Perform IIR filtering on signed 16-bit input samples.
Definition: iirfilter.c:280
SIZE
#define SIZE
Definition: iirfilter.c:28
lrint
#define lrint
Definition: tablegen.h:53
FFIIRFilterCoeffs
IIR filter global parameters.
Definition: iirfilter.c:41
main
int main(void)
Definition: iirfilter.c:30
FILT_ORDER
#define FILT_ORDER
Definition: iirfilter.c:27
NULL
#define NULL
Definition: coverity.c:32
FF_FILTER_MODE_LOWPASS
@ FF_FILTER_MODE_LOWPASS
Definition: iirfilter.h:45
ff_iir_filter_init_coeffs
av_cold struct FFIIRFilterCoeffs * ff_iir_filter_init_coeffs(void *avc, enum IIRFilterType filt_type, enum IIRFilterMode filt_mode, int order, float cutoff_ratio, float stopband, float ripple)
Initialize filter coefficients.
Definition: iirfilter.c:166
printf
printf("static const uint8_t my_array[100] = {\n")
M_PI
#define M_PI
Definition: mathematics.h:67
i
#define i(width, name, range_min, range_max)
Definition: cbs_h2645.c:255
ff_iir_filter_free_coeffsp
av_cold void ff_iir_filter_free_coeffsp(struct FFIIRFilterCoeffs **coeffsp)
Free filter coefficients.
Definition: iirfilter.c:324
FFIIRFilterState::x
float x[1]
Definition: iirfilter.c:52
ff_iir_filter_init_state
av_cold struct FFIIRFilterState * ff_iir_filter_init_state(int order)
Create new filter state.
Definition: iirfilter.c:205
ff_iir_filter_free_statep
av_cold void ff_iir_filter_free_statep(struct FFIIRFilterState **state)
Free and zero filter state.
Definition: iirfilter.c:319
FF_FILTER_TYPE_BUTTERWORTH
@ FF_FILTER_TYPE_BUTTERWORTH
Definition: iirfilter.h:39