00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef AVCODEC_ACELP_FILTERS_H
00024 #define AVCODEC_ACELP_FILTERS_H
00025
00026 #include <stdint.h>
00027
00028 typedef struct ACELPFContext {
00032 void (*acelp_interpolatef)(float *out, const float *in,
00033 const float *filter_coeffs, int precision,
00034 int frac_pos, int filter_length, int length);
00035
00047 void (*acelp_apply_order_2_transfer_function)(float *out, const float *in,
00048 const float zero_coeffs[2],
00049 const float pole_coeffs[2],
00050 float gain,
00051 float mem[2], int n);
00052
00053 }ACELPFContext;
00054
00058 void ff_acelp_filter_init(ACELPFContext *c);
00059 void ff_acelp_filter_init_mips(ACELPFContext *c);
00060
00070 extern const int16_t ff_acelp_interp_filter[61];
00071
00087 void ff_acelp_interpolate(int16_t* out, const int16_t* in,
00088 const int16_t* filter_coeffs, int precision,
00089 int frac_pos, int filter_length, int length);
00090
00094 void ff_acelp_interpolatef(float *out, const float *in,
00095 const float *filter_coeffs, int precision,
00096 int frac_pos, int filter_length, int length);
00097
00098
00122 void ff_acelp_high_pass_filter(int16_t* out, int hpf_f[2],
00123 const int16_t* in, int length);
00124
00136 void ff_acelp_apply_order_2_transfer_function(float *out, const float *in,
00137 const float zero_coeffs[2],
00138 const float pole_coeffs[2],
00139 float gain,
00140 float mem[2], int n);
00141
00150 void ff_tilt_compensation(float *mem, float tilt, float *samples, int size);
00151
00152
00153 #endif