Libav
|
00001 /* 00002 * IIR filter 00003 * Copyright (c) 2008 Konstantin Shishkov 00004 * 00005 * This file is part of FFmpeg. 00006 * 00007 * FFmpeg is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU Lesser General Public 00009 * License as published by the Free Software Foundation; either 00010 * version 2.1 of the License, or (at your option) any later version. 00011 * 00012 * FFmpeg is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 * Lesser General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Lesser General Public 00018 * License along with FFmpeg; if not, write to the Free Software 00019 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00020 */ 00021 00027 #ifndef AVCODEC_IIRFILTER_H 00028 #define AVCODEC_IIRFILTER_H 00029 00030 #include "avcodec.h" 00031 00032 struct FFIIRFilterCoeffs; 00033 struct FFIIRFilterState; 00034 00035 enum IIRFilterType{ 00036 FF_FILTER_TYPE_BESSEL, 00037 FF_FILTER_TYPE_BUTTERWORTH, 00038 FF_FILTER_TYPE_CHEBYSHEV, 00039 FF_FILTER_TYPE_ELLIPTIC, 00040 }; 00041 00042 enum IIRFilterMode{ 00043 FF_FILTER_MODE_LOWPASS, 00044 FF_FILTER_MODE_HIGHPASS, 00045 FF_FILTER_MODE_BANDPASS, 00046 FF_FILTER_MODE_BANDSTOP, 00047 }; 00048 00061 struct FFIIRFilterCoeffs* ff_iir_filter_init_coeffs(enum IIRFilterType filt_type, 00062 enum IIRFilterMode filt_mode, 00063 int order, float cutoff_ratio, 00064 float stopband, float ripple); 00065 00073 struct FFIIRFilterState* ff_iir_filter_init_state(int order); 00074 00080 void ff_iir_filter_free_coeffs(struct FFIIRFilterCoeffs *coeffs); 00081 00087 void ff_iir_filter_free_state(struct FFIIRFilterState *state); 00088 00100 void ff_iir_filter(const struct FFIIRFilterCoeffs *coeffs, struct FFIIRFilterState *state, 00101 int size, const int16_t *src, int sstep, int16_t *dst, int dstep); 00102 00103 #endif /* AVCODEC_IIRFILTER_H */