]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/celp_filters.h
Add missing release_buffer on close
[ffmpeg] / libavcodec / celp_filters.h
index cb73aa8869b1f685887e80cb1816e86bb7036ac2..d9db95d45426d2cc46bbe89de13c2d690f1045f9 100644 (file)
  *
  * \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.
@@ -55,18 +69,59 @@ void ff_celp_convolve_circ(
  *
  * @return 1 if overflow occurred, 0 - otherwise
  *
- * @note Output buffer must contain 10 samples of past
+ * @note Output buffer must contain filter_length samples of past
  *       speech data before pointer.
  *
  * 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 rounder);
+
+/**
+ * LP synthesis filter.
+ * @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)
+ *
+ * @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);
+
+/**
+ * LP zero synthesis filter.
+ * @param out [out] pointer to output buffer
+ * @param filter_coeffs filter coefficients.
+ * @param in input signal
+ *        - the array in[-filter_length, -1] must
+ *        contain the previous input of this filter
+ * @param buffer_length amount of data to process
+ * @param filter_length filter length (10 for 10th order LP filter)
+ *
+ * @note Output buffer must contain filter_length samples of past
+ *       speech data before pointer.
+ *
+ * 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);
 
 #endif /* AVCODEC_CELP_FILTERS_H */