]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/iirfilter.h
merge read and and in add_paeth_prediction
[ffmpeg] / libavcodec / iirfilter.h
index ac948d8959ba10ced386ce9cf6d7d07d057cedec..b29e0358118e4ec4ae698c131dd4d140b845098b 100644 (file)
  */
 
 /**
- * @file iirfilter.h
+ * @file
  * IIR filter interface
  */
 
-#ifndef FFMPEG_IIRFILTER_H
-#define FFMPEG_IIRFILTER_H
+#ifndef AVCODEC_IIRFILTER_H
+#define AVCODEC_IIRFILTER_H
 
 #include "avcodec.h"
 
@@ -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);
 
-#endif /* FFMPEG_IIRFILTER_H */
+/**
+ * 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 */