*
* 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
*/
28, 26,
};
-const uint8_t ff_fc_2pulses_9bits_track2_gray[32] =
-{
- 0, 2,
- 5, 4,
- 12, 10,
- 7, 9,
- 25, 24,
- 20, 22,
- 14, 15,
- 19, 17,
- 36, 31,
- 21, 26,
- 1, 6,
- 16, 11,
- 27, 29,
- 32, 30,
- 39, 37,
- 34, 35,
-};
-
const uint8_t ff_fc_4pulses_8bits_tracks_13[16] =
{
0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75,
78, 79,
};
-#if 0
-static uint8_t gray_decode[32] =
-{
- 0, 1, 3, 2, 7, 6, 4, 5,
- 15, 14, 12, 13, 8, 9, 11, 10,
- 31, 30, 28, 29, 24, 25, 27, 26,
- 16, 17, 19, 18, 23, 22, 20, 21
-};
-#endif
-
const float ff_pow_0_7[10] = {
0.700000, 0.490000, 0.343000, 0.240100, 0.168070,
0.117649, 0.082354, 0.057648, 0.040354, 0.028248
int i;
int mask = (1 << bits) - 1;
+ fixed_sparse->no_repeat_mask = 0;
fixed_sparse->n = 2 * half_pulse_count;
for (i = 0; i < half_pulse_count; i++) {
const int pos1 = gray_decode[fixed_index[2*i+1] & mask] + i;
+ weight_coeff_b * in_b[i];
}
-void ff_adaptative_gain_control(float *buf_out, float speech_energ,
- int size, float alpha, float *gain_mem)
+void ff_adaptive_gain_control(float *out, const float *in, float speech_energ,
+ int size, float alpha, float *gain_mem)
{
int i;
- float postfilter_energ = ff_dot_productf(buf_out, buf_out, size);
+ float postfilter_energ = ff_dot_productf(in, in, size);
float gain_scale_factor = 1.0;
float mem = *gain_mem;
for (i = 0; i < size; i++) {
mem = alpha * mem + gain_scale_factor;
- buf_out[i] *= mem;
+ out[i] = in[i] * mem;
}
*gain_mem = mem;
int i;
for (i=0; i < in->n; i++) {
- int x = in->x[i];
+ int x = in->x[i], repeats = !((in->no_repeat_mask >> i) & 1);
float y = in->y[i] * scale;
- out[x] += y;
- x += in->pitch_lag;
- while (x < size) {
- y *= in->pitch_fac;
+ do {
out[x] += y;
+ y *= in->pitch_fac;
x += in->pitch_lag;
- }
+ } while (x < size && repeats);
}
}
int i;
for (i=0; i < in->n; i++) {
- int x = in->x[i];
- out[x] = 0.0;
+ int x = in->x[i], repeats = !((in->no_repeat_mask >> i) & 1);
- x += in->pitch_lag;
- while (x < size) {
+ do {
out[x] = 0.0;
x += in->pitch_lag;
- }
+ } while (x < size && repeats);
}
}