X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Facelp_filters.h;h=2be4c24395b90408535d34b760c5ff7e415f7d23;hb=83678dbbae64ad8c501e0c732c1117e642c25dae;hp=e1e3d685ae9d294542482fdd05c171cae5b15b53;hpb=4599d22c0cd7fa952bc02375d2899d8c9a31b9ae;p=ffmpeg diff --git a/libavcodec/acelp_filters.h b/libavcodec/acelp_filters.h index e1e3d685ae9..2be4c24395b 100644 --- a/libavcodec/acelp_filters.h +++ b/libavcodec/acelp_filters.h @@ -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 */ @@ -32,13 +32,13 @@ * the coefficients are scaled by 2^15. * This array only contains the right half of the filter. * This filter is likely identical to the one used in G.729, though this - * could not be determined from the original comments with certainity. + * could not be determined from the original comments with certainty. */ extern const int16_t ff_acelp_interp_filter[61]; /** * Generic FIR interpolation routine. - * @param out [out] buffer for interpolated data + * @param[out] out buffer for interpolated data * @param in input data * @param filter_coeffs interpolation filter coefficients (0.15) * @param precision sub sample factor, that is the precision of the position @@ -49,22 +49,23 @@ extern const int16_t ff_acelp_interp_filter[61]; * filter_coeffs contains coefficients of the right half of the symmetric * interpolation filter. filter_coeffs[0] should the central (unpaired) coefficient. * See ff_acelp_interp_filter for an example. - * */ -void ff_acelp_interpolate( - int16_t* out, - const int16_t* in, - const int16_t* filter_coeffs, - int precision, - int frac_pos, - int filter_length, - int length); +void ff_acelp_interpolate(int16_t* out, const int16_t* in, + const int16_t* filter_coeffs, int precision, + int frac_pos, int filter_length, int length); + +/** + * Floating point version of ff_acelp_interpolate() + */ +void ff_acelp_interpolatef(float *out, const float *in, + const float *filter_coeffs, int precision, + int frac_pos, int filter_length, int length); /** * high-pass filtering and upscaling (4.2.5 of G.729). - * @param out [out] output buffer for filtered speech data - * @param hpf_f [in/out] past filtered data from previous (2 items long) + * @param[out] out output buffer for filtered speech data + * @param[in,out] hpf_f past filtered data from previous (2 items long) * frames (-0x20000000 <= (14.13) < 0x20000000) * @param in speech data to process * @param length input data size @@ -84,10 +85,35 @@ void ff_acelp_interpolate( * fixed-point all coefficients are the same as in G.729. Thus this * routine can be used for the fixed-point AMR decoder, too. */ -void ff_acelp_high_pass_filter( - int16_t* out, - int hpf_f[2], - const int16_t* in, - int length); +void ff_acelp_high_pass_filter(int16_t* out, int hpf_f[2], + const int16_t* in, int length); + +/** + * Apply an order 2 rational transfer function in-place. + * + * @param out output buffer for filtered speech samples + * @param in input buffer containing speech data (may be the same as out) + * @param zero_coeffs z^-1 and z^-2 coefficients of the numerator + * @param pole_coeffs z^-1 and z^-2 coefficients of the denominator + * @param gain scale factor for final output + * @param mem intermediate values used by filter (should be 0 initially) + * @param n number of samples + */ +void ff_acelp_apply_order_2_transfer_function(float *out, const float *in, + const float zero_coeffs[2], + const float pole_coeffs[2], + float gain, + float mem[2], int n); + +/** + * Apply tilt compensation filter, 1 - tilt * z-1. + * + * @param mem pointer to the filter's state (one single float) + * @param tilt tilt factor + * @param samples array where the filter is applied + * @param size the size of the samples array + */ +void ff_tilt_compensation(float *mem, float tilt, float *samples, int size); + #endif /* AVCODEC_ACELP_FILTERS_H */