X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fiirfilter.h;h=bc65a96b59bd67782c0799024f4bee207066cc38;hb=ddffe3de4352eb025b78843cf3b44501056b54bb;hp=e6010390cbfe144ee31b8eb9cc728d4df0759f12;hpb=bad5537e2c2caeb5deb1ff9d771ea01058b8010c;p=ffmpeg diff --git a/libavcodec/iirfilter.h b/libavcodec/iirfilter.h index e6010390cbf..bc65a96b59b 100644 --- a/libavcodec/iirfilter.h +++ b/libavcodec/iirfilter.h @@ -2,25 +2,25 @@ * IIR filter * Copyright (c) 2008 Konstantin Shishkov * - * This file is part of FFmpeg. + * This file is part of Libav. * - * FFmpeg is free software; you can redistribute it and/or + * Libav is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * - * FFmpeg is distributed in the hope that it will be useful, + * Libav is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software + * License along with Libav; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /** - * @file libavcodec/iirfilter.h + * @file * IIR filter interface */ @@ -34,6 +34,7 @@ struct FFIIRFilterState; enum IIRFilterType{ FF_FILTER_TYPE_BESSEL, + FF_FILTER_TYPE_BIQUAD, FF_FILTER_TYPE_BUTTERWORTH, FF_FILTER_TYPE_CHEBYSHEV, FF_FILTER_TYPE_ELLIPTIC, @@ -49,6 +50,8 @@ enum IIRFilterMode{ /** * Initialize filter coefficients. * + * @param avc a pointer to an arbitrary struct of which the first + * field is a pointer to an AVClass struct * @param filt_type filter type (e.g. Butterworth) * @param filt_mode filter mode (e.g. lowpass) * @param order filter order @@ -58,10 +61,11 @@ enum IIRFilterMode{ * * @return pointer to filter coefficients structure or NULL if filter cannot be created */ -struct FFIIRFilterCoeffs* ff_iir_filter_init_coeffs(enum IIRFilterType filt_type, - enum IIRFilterMode filt_mode, - int order, float cutoff_ratio, - float stopband, float ripple); +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); /** * Create new filter state. @@ -87,7 +91,7 @@ void ff_iir_filter_free_coeffs(struct FFIIRFilterCoeffs *coeffs); void ff_iir_filter_free_state(struct FFIIRFilterState *state); /** - * Perform lowpass filtering on input samples. + * Perform IIR filtering on signed 16-bit input samples. * * @param coeffs pointer to filter coefficients * @param state pointer to filter state @@ -100,4 +104,19 @@ void ff_iir_filter_free_state(struct FFIIRFilterState *state); void ff_iir_filter(const struct FFIIRFilterCoeffs *coeffs, struct FFIIRFilterState *state, int size, const int16_t *src, int sstep, int16_t *dst, int dstep); +/** + * Perform IIR filtering on floating-point input samples. + * + * @param coeffs pointer to filter coefficients + * @param state pointer to filter state + * @param size input length + * @param src source samples + * @param sstep source stride + * @param dst filtered samples (destination may be the same as input) + * @param dstep destination stride + */ +void ff_iir_filter_flt(const struct FFIIRFilterCoeffs *coeffs, + struct FFIIRFilterState *state, int size, + const float *src, int sstep, float *dst, int dstep); + #endif /* AVCODEC_IIRFILTER_H */