|
|
|
@ -145,14 +145,13 @@ extern const float ff_pow_0_55[10]; |
|
|
|
|
* |
|
|
|
|
* Used in G.729 @8k, G.729 @4.4k, G.729 @6.4k, AMR @7.95k, AMR @7.40k |
|
|
|
|
*/ |
|
|
|
|
void ff_acelp_fc_pulse_per_track( |
|
|
|
|
int16_t* fc_v, |
|
|
|
|
const uint8_t *tab1, |
|
|
|
|
const uint8_t *tab2, |
|
|
|
|
int pulse_indexes, |
|
|
|
|
int pulse_signs, |
|
|
|
|
int pulse_count, |
|
|
|
|
int bits); |
|
|
|
|
void ff_acelp_fc_pulse_per_track(int16_t* fc_v, |
|
|
|
|
const uint8_t *tab1, |
|
|
|
|
const uint8_t *tab2, |
|
|
|
|
int pulse_indexes, |
|
|
|
|
int pulse_signs, |
|
|
|
|
int pulse_count, |
|
|
|
|
int bits); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Decode the algebraic codebook index to pulse positions and signs and |
|
|
|
@ -187,15 +186,14 @@ void ff_decode_10_pulses_35bits(const int16_t *fixed_index, |
|
|
|
|
* |
|
|
|
|
* out[i] = (in_a[i]*weight_a + in_b[i]*weight_b + rounder) >> shift |
|
|
|
|
*/ |
|
|
|
|
void ff_acelp_weighted_vector_sum( |
|
|
|
|
int16_t* out, |
|
|
|
|
const int16_t *in_a, |
|
|
|
|
const int16_t *in_b, |
|
|
|
|
int16_t weight_coeff_a, |
|
|
|
|
int16_t weight_coeff_b, |
|
|
|
|
int16_t rounder, |
|
|
|
|
int shift, |
|
|
|
|
int length); |
|
|
|
|
void ff_acelp_weighted_vector_sum(int16_t* out, |
|
|
|
|
const int16_t *in_a, |
|
|
|
|
const int16_t *in_b, |
|
|
|
|
int16_t weight_coeff_a, |
|
|
|
|
int16_t weight_coeff_b, |
|
|
|
|
int16_t rounder, |
|
|
|
|
int shift, |
|
|
|
|
int length); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* float implementation of weighted sum of two vectors. |
|
|
|
@ -209,7 +207,8 @@ void ff_acelp_weighted_vector_sum( |
|
|
|
|
* @note It is safe to pass the same buffer for out and in_a or in_b. |
|
|
|
|
*/ |
|
|
|
|
void ff_weighted_vector_sumf(float *out, const float *in_a, const float *in_b, |
|
|
|
|
float weight_coeff_a, float weight_coeff_b, int length); |
|
|
|
|
float weight_coeff_a, float weight_coeff_b, |
|
|
|
|
int length); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Adaptative gain control (as used in AMR postfiltering) |
|
|
|
|