]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/celp_filters.h
dvbsubdec: Fix function return type
[ffmpeg] / libavcodec / celp_filters.h
index 4a9eb1c49b120cbf69366dbbcdf4e2b40bb38ba3..c3282584603b193214ac0ecf4519a242a634d947 100644 (file)
@@ -3,20 +3,20 @@
  *
  * Copyright (c) 2008 Vladimir Voroshilov
  *
- * 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
  */
 
  *
  *  fc_out[n] = sum(i,0,len-1){ fc_in[i] * filter[(len + n - i)%len] }
  *
- * \note fc_in and fc_out should not overlap!
+ * @note fc_in and fc_out should not overlap!
  */
-void ff_celp_convolve_circ(
-        int16_t* fc_out,
-        const int16_t* fc_in,
-        const int16_t* filter,
-        int len);
+void ff_celp_convolve_circ(int16_t *fc_out, const int16_t *fc_in,
+                           const int16_t *filter, int len);
+
+/**
+ * Add an array to a rotated array.
+ *
+ * out[k] = in[k] + fac * lagged[k-lag] with wrap-around
+ *
+ * @param out result vector
+ * @param in samples to be added unfiltered
+ * @param lagged samples to be rotated, multiplied and added
+ * @param lag lagged vector delay in the range [0, n]
+ * @param fac scalefactor for lagged samples
+ * @param n number of samples
+ */
+void ff_celp_circ_addf(float *out, const float *in,
+                       const float *lagged, int lag, float fac, int n);
 
 /**
  * LP synthesis filter.
- * @param out [out] pointer to output buffer
+ * @param[out] out pointer to output buffer
  * @param filter_coeffs filter coefficients (-0x8000 <= (3.12) < 0x8000)
  * @param in input signal
  * @param buffer_length amount of data to process
  * @param filter_length filter length (10 for 10th order LP filter)
  * @param stop_on_overflow   1 - return immediately if overflow occurs
  *                           0 - ignore overflows
+ * @param shift the result is shifted right by this value
  * @param rounder the amount to add for rounding (usually 0x800 or 0xfff)
  *
  * @return 1 if overflow occurred, 0 - otherwise
@@ -60,40 +73,34 @@ void ff_celp_convolve_circ(
  *
  * Routine applies 1/A(z) filter to given speech data.
  */
-int ff_celp_lp_synthesis_filter(
-        int16_t *out,
-        const int16_t* filter_coeffs,
-        const int16_t* in,
-        int buffer_length,
-        int filter_length,
-        int stop_on_overflow,
-        int rounder);
+int ff_celp_lp_synthesis_filter(int16_t *out, const int16_t *filter_coeffs,
+                                const int16_t *in, int buffer_length,
+                                int filter_length, int stop_on_overflow,
+                                int shift, int rounder);
 
 /**
  * LP synthesis filter.
- * @param out [out] pointer to output buffer
+ * @param[out] out pointer to output buffer
  *        - the array out[-filter_length, -1] must
  *        contain the previous result of this filter
  * @param filter_coeffs filter coefficients.
  * @param in input signal
  * @param buffer_length amount of data to process
- * @param filter_length filter length (10 for 10th order LP filter)
+ * @param filter_length filter length (10 for 10th order LP filter). Must be
+ *                      greater than 4 and even.
  *
  * @note Output buffer must contain filter_length samples of past
  *       speech data before pointer.
  *
  * Routine applies 1/A(z) filter to given speech data.
  */
-void ff_celp_lp_synthesis_filterf(
-        float *out,
-        const float* filter_coeffs,
-        const float* in,
-        int buffer_length,
-        int filter_length);
+void ff_celp_lp_synthesis_filterf(float *out, const float *filter_coeffs,
+                                  const float *in, int buffer_length,
+                                  int filter_length);
 
 /**
  * LP zero synthesis filter.
- * @param out [out] pointer to output buffer
+ * @param[out] out pointer to output buffer
  * @param filter_coeffs filter coefficients.
  * @param in input signal
  *        - the array in[-filter_length, -1] must
@@ -106,11 +113,8 @@ void ff_celp_lp_synthesis_filterf(
  *
  * Routine applies A(z) filter to given speech data.
  */
-void ff_celp_lp_zero_synthesis_filterf(
-        float *out,
-        const float* filter_coeffs,
-        const float* in,
-        int buffer_length,
-        int filter_length);
+void ff_celp_lp_zero_synthesis_filterf(float *out, const float *filter_coeffs,
+                                       const float *in, int buffer_length,
+                                       int filter_length);
 
 #endif /* AVCODEC_CELP_FILTERS_H */