comparison acelp_filters.h @ 7642:1fbf9b2060ce libavcodec

Make doxygen comments consistent with the rest of FFmpeg.
author michael
date Thu, 21 Aug 2008 21:37:53 +0000
parents 4fa4dde521b0
children cb997823ead5
comparison
equal deleted inserted replaced
7641:73f5625538d3 7642:1fbf9b2060ce
77 * 77 *
78 */ 78 */
79 extern const int16_t ff_acelp_interp_filter[61]; 79 extern const int16_t ff_acelp_interp_filter[61];
80 80
81 /** 81 /**
82 * \brief Generic interpolation routine 82 * Generic interpolation routine.
83 * \param out [out] buffer for interpolated data 83 * @param out [out] buffer for interpolated data
84 * \param in input data 84 * @param in input data
85 * \param filter_coeffs interpolation filter coefficients (0.15) 85 * @param filter_coeffs interpolation filter coefficients (0.15)
86 * \param precision filter is able to interpolate with 1/precision precision of pitch delay 86 * @param precision filter is able to interpolate with 1/precision precision of pitch delay
87 * \param pitch_delay_frac pitch delay, fractional part [0..precision-1] 87 * @param pitch_delay_frac pitch delay, fractional part [0..precision-1]
88 * \param filter_length filter length 88 * @param filter_length filter length
89 * \param length length of speech data to process 89 * @param length length of speech data to process
90 * 90 *
91 * filter_coeffs contains coefficients of the positive half of the symmetric 91 * filter_coeffs contains coefficients of the positive half of the symmetric
92 * interpolation filter. filter_coeffs[0] should the central (unpaired) coefficient. 92 * interpolation filter. filter_coeffs[0] should the central (unpaired) coefficient.
93 * See ff_acelp_interp_filter for an example. 93 * See ff_acelp_interp_filter for an example.
94 * 94 *
101 int pitch_delay_frac, 101 int pitch_delay_frac,
102 int filter_length, 102 int filter_length,
103 int length); 103 int length);
104 104
105 /** 105 /**
106 * \brief Circularly convolve fixed vector with a phase dispersion impulse 106 * Circularly convolve fixed vector with a phase dispersion impulse
107 * response filter (D.6.2 of G.729 and 6.1.5 of AMR). 107 * response filter (D.6.2 of G.729 and 6.1.5 of AMR).
108 * \param fc_out vector with filter applied 108 * @param fc_out vector with filter applied
109 * \param fc_in source vector 109 * @param fc_in source vector
110 * \param filter phase filter coefficients 110 * @param filter phase filter coefficients
111 * 111 *
112 * fc_out[n] = sum(i,0,len-1){ fc_in[i] * filter[(len + n - i)%len] } 112 * fc_out[n] = sum(i,0,len-1){ fc_in[i] * filter[(len + n - i)%len] }
113 * 113 *
114 * \note fc_in and fc_out should not overlap! 114 * \note fc_in and fc_out should not overlap!
115 */ 115 */
118 const int16_t* fc_in, 118 const int16_t* fc_in,
119 const int16_t* filter, 119 const int16_t* filter,
120 int subframe_size); 120 int subframe_size);
121 121
122 /** 122 /**
123 * \brief LP synthesis filter 123 * LP synthesis filter.
124 * \param out [out] pointer to output buffer 124 * @param out [out] pointer to output buffer
125 * \param filter_coeffs filter coefficients (-0x8000 <= (3.12) < 0x8000) 125 * @param filter_coeffs filter coefficients (-0x8000 <= (3.12) < 0x8000)
126 * \param in input signal 126 * @param in input signal
127 * \param buffer_length amount of data to process 127 * @param buffer_length amount of data to process
128 * \param filter_length filter length (10 for 10th order LP filter) 128 * @param filter_length filter length (10 for 10th order LP filter)
129 * \param stop_on_overflow 1 - return immediately if overflow occurs 129 * @param stop_on_overflow 1 - return immediately if overflow occurs
130 * 0 - ignore overflows 130 * 0 - ignore overflows
131 * \param rounder the amount to add for rounding (usually 0x800 or 0xfff) 131 * @param rounder the amount to add for rounding (usually 0x800 or 0xfff)
132 * 132 *
133 * \return 1 if overflow occurred, 0 - otherwise 133 * @return 1 if overflow occurred, 0 - otherwise
134 * 134 *
135 * \note Output buffer must contain 10 samples of past 135 * @note Output buffer must contain 10 samples of past
136 * speech data before pointer. 136 * speech data before pointer.
137 * 137 *
138 * Routine applies 1/A(z) filter to given speech data. 138 * Routine applies 1/A(z) filter to given speech data.
139 */ 139 */
140 int ff_acelp_lp_synthesis_filter( 140 int ff_acelp_lp_synthesis_filter(
145 int filter_length, 145 int filter_length,
146 int stop_on_overflow, 146 int stop_on_overflow,
147 int rounder); 147 int rounder);
148 148
149 /** 149 /**
150 * \brief Calculates coefficients of weighted A(z/weight) filter. 150 * Calculates coefficients of weighted A(z/weight) filter.
151 * \param out [out] weighted A(z/weight) result 151 * @param out [out] weighted A(z/weight) result
152 * filter (-0x8000 <= (3.12) < 0x8000) 152 * filter (-0x8000 <= (3.12) < 0x8000)
153 * \param in source filter (-0x8000 <= (3.12) < 0x8000) 153 * @param in source filter (-0x8000 <= (3.12) < 0x8000)
154 * \param weight_pow array containing weight^i (-0x8000 <= (0.15) < 0x8000) 154 * @param weight_pow array containing weight^i (-0x8000 <= (0.15) < 0x8000)
155 * \param filter_length filter length (11 for 10th order LP filter) 155 * @param filter_length filter length (11 for 10th order LP filter)
156 * 156 *
157 * out[i]=weight_pow[i]*in[i] , i=0..9 157 * out[i]=weight_pow[i]*in[i] , i=0..9
158 */ 158 */
159 void ff_acelp_weighted_filter( 159 void ff_acelp_weighted_filter(
160 int16_t *out, 160 int16_t *out,
161 const int16_t* in, 161 const int16_t* in,
162 const int16_t *weight_pow, 162 const int16_t *weight_pow,
163 int filter_length); 163 int filter_length);
164 164
165 /** 165 /**
166 * \brief high-pass filtering and upscaling (4.2.5 of G.729) 166 * high-pass filtering and upscaling (4.2.5 of G.729).
167 * \param out [out] output buffer for filtered speech data 167 * @param out [out] output buffer for filtered speech data
168 * \param hpf_f [in/out] past filtered data from previous (2 items long) 168 * @param hpf_f [in/out] past filtered data from previous (2 items long)
169 * frames (-0x20000000 <= (14.13) < 0x20000000) 169 * frames (-0x20000000 <= (14.13) < 0x20000000)
170 * \param in speech data to process 170 * @param in speech data to process
171 * \param length input data size 171 * @param length input data size
172 * 172 *
173 * out[i] = 0.93980581 * in[i] - 1.8795834 * in[i-1] + 0.93980581 * in[i-2] + 173 * out[i] = 0.93980581 * in[i] - 1.8795834 * in[i-1] + 0.93980581 * in[i-2] +
174 * 1.9330735 * out[i-1] - 0.93589199 * out[i-2] 174 * 1.9330735 * out[i-1] - 0.93589199 * out[i-2]
175 * 175 *
176 * The filter has a cut-off frequency of 100Hz 176 * The filter has a cut-off frequency of 100Hz
177 * 177 *
178 * \note Two items before the top of the out buffer must contain two items from the 178 * @note Two items before the top of the out buffer must contain two items from the
179 * tail of the previous subframe. 179 * tail of the previous subframe.
180 * 180 *
181 * \remark It is safe to pass the same array in in and out parameters. 181 * @remark It is safe to pass the same array in in and out parameters.
182 * 182 *
183 * \remark AMR uses mostly the same filter (cut-off frequency 60Hz, same formula, 183 * @remark AMR uses mostly the same filter (cut-off frequency 60Hz, same formula,
184 * but constants differs in 5th sign after comma). Fortunately in 184 * but constants differs in 5th sign after comma). Fortunately in
185 * fixed-point all coefficients are the same as in G.729. Thus this 185 * fixed-point all coefficients are the same as in G.729. Thus this
186 * routine can be used for the fixed-point AMR decoder, too. 186 * routine can be used for the fixed-point AMR decoder, too.
187 */ 187 */
188 void ff_acelp_high_pass_filter( 188 void ff_acelp_high_pass_filter(