FFmpeg
|
#include <inttypes.h>
#include "libavutil/common.h"
#include "libavutil/float_dsp.h"
#include "avcodec.h"
#include "acelp_vectors.h"
Go to the source code of this file.
Functions | |
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 fixed-codebook vector (3.8 and D.5.8 of G.729, 5.7.1 of AMR). More... | |
void | ff_decode_10_pulses_35bits (const int16_t *fixed_index, AMRFixed *fixed_sparse, const uint8_t *gray_decode, int half_pulse_count, int bits) |
Decode the algebraic codebook index to pulse positions and signs and construct the algebraic codebook vector for MODE_12k2. More... | |
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) |
weighted sum of two vectors with rounding. More... | |
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 implementation of weighted sum of two vectors. More... | |
void | ff_adaptive_gain_control (float *out, const float *in, float speech_energ, int size, float alpha, float *gain_mem) |
Adaptive gain control (as used in AMR postfiltering) More... | |
void | ff_scale_vector_to_given_sum_of_squares (float *out, const float *in, float sum_of_squares, const int n) |
Set the sum of squares of a signal by scaling. More... | |
void | ff_set_fixed_vector (float *out, const AMRFixed *in, float scale, int size) |
Add fixed vector to an array from a sparse representation. More... | |
void | ff_clear_fixed_vector (float *out, const AMRFixed *in, int size) |
Clear array values set by set_fixed_vector. More... | |
void | ff_acelp_vectors_init (ACELPVContext *c) |
Initialize ACELPVContext. More... | |
Variables | |
const uint8_t | ff_fc_2pulses_9bits_track1 [16] |
Track|Pulse| Positions1 | 0 | 1, 6, 11, 16, 21, 26, 31, 36| | 3, 8, 13, 18, 23, 28, 33, 38More... | |
const uint8_t | ff_fc_2pulses_9bits_track1_gray [16] |
const uint8_t | ff_fc_2pulses_9bits_track2_gray [32] |
Track|Pulse| Positions2 | 1 | 0, 7, 14, 20, 27, 34, 1, 21 | | 2, 9, 15, 22, 29, 35, 6, 26 | | 4,10, 17, 24, 30, 37, 11, 31| | 5,12, 19, 25, 32, 39, 16, 36More... | |
const uint8_t | ff_fc_4pulses_8bits_tracks_13 [16] |
Track|Pulse| Positions1 | 0 | 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 752 | 1 | 1, 6, 11, 16, 21, 26, 31, 36, 41, 46, 51, 56, 61, 66, 71, 763 | 2 | 2, 7, 12, 17, 22, 27, 32, 37, 42, 47, 52, 57, 62, 67, 72, 77More... | |
const uint8_t | ff_fc_4pulses_8bits_track_4 [32] |
Track|Pulse| Positions4 | 3 | 3, 8, 13, 18, 23, 28, 33, 38, 43, 48, 53, 58, 63, 68, 73, 78| | 4, 9, 14, 19, 24, 29, 34, 39, 44, 49, 54, 59, 64, 69, 74, 79More... | |
const float | ff_pow_0_7 [10] |
Table of pow(0.7,n) More... | |
const float | ff_pow_0_75 [10] |
Table of pow(0.75,n) More... | |
const float | ff_pow_0_55 [10] |
Table of pow(0.55,n) More... | |
const float | ff_b60_sinc [61] |
b60 hamming windowed sinc function coefficients More... | |
Function Documentation
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 fixed-codebook vector (3.8 and D.5.8 of G.729, 5.7.1 of AMR).
- Parameters
-
[out] fc_v decoded fixed codebook vector (2.13) tab1 table used for first pulse_count pulses tab2 table used for last pulse pulse_indexes fixed codebook indexes pulse_signs signs of the excitation pulses (0 bit value means negative sign) bits number of bits per one pulse index pulse_count number of pulses decoded using first table bits length of one pulse index in bits
Used in G.729 @8k, G.729 @4.4k, G.729 @6.4k, AMR @7.95k, AMR @7.40k
Definition at line 127 of file acelp_vectors.c.
Referenced by decode_frame().
void ff_acelp_vectors_init | ( | ACELPVContext * | c | ) |
Initialize ACELPVContext.
Definition at line 266 of file acelp_vectors.c.
Referenced by amrnb_decode_init(), and amrwb_decode_init().
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 | ||
) |
weighted sum of two vectors with rounding.
- Parameters
-
[out] out result of addition in_a first vector in_b second vector weight_coeff_a first vector weight coefficient weight_coeff_a second vector weight coefficient rounder this value will be added to the sum of the two vectors shift result will be shifted to right by this value length vectors length
- Note
- It is safe to pass the same buffer for out and in_a or in_b.
out[i] = (in_a[i]*weight_a + in_b[i]*weight_b + rounder) >> shift
Definition at line 172 of file acelp_vectors.c.
Referenced by decode_frame(), g723_1_decode_frame(), long_term_filter(), and lsp_interpolate().
void ff_adaptive_gain_control | ( | float * | out, |
const float * | in, | ||
float | speech_energ, | ||
int | size, | ||
float | alpha, | ||
float * | gain_mem | ||
) |
Adaptive gain control (as used in AMR postfiltering)
- Parameters
-
out output buffer for filtered speech data in the input speech buffer (may be the same as out) speech_energ input energy size the input buffer size alpha exponential filter factor gain_mem a pointer to the filter memory (single float of size)
Definition at line 202 of file acelp_vectors.c.
Referenced by decode_frame(), and postfilter().
Clear array values set by set_fixed_vector.
- Parameters
-
out fixed vector to be cleared in sparse fixed vector size the output vector size
Definition at line 251 of file acelp_vectors.c.
Referenced by amrnb_decode_frame().
void ff_decode_10_pulses_35bits | ( | const int16_t * | fixed_index, |
AMRFixed * | fixed_sparse, | ||
const uint8_t * | gray_decode, | ||
int | half_pulse_count, | ||
int | bits | ||
) |
Decode the algebraic codebook index to pulse positions and signs and construct the algebraic codebook vector for MODE_12k2.
- Note
- : The positions and signs are explicitly coded in MODE_12k2.
- Parameters
-
fixed_index positions of the ten pulses fixed_sparse pointer to the algebraic codebook vector gray_decode gray decoding table half_pulse_count number of couples of pulses bits length of one pulse index in bits
Definition at line 151 of file acelp_vectors.c.
Referenced by decode_fixed_sparse(), and ff_sipr_decode_frame_16k().
void ff_scale_vector_to_given_sum_of_squares | ( | float * | out, |
const float * | in, | ||
float | sum_of_squares, | ||
const int | n | ||
) |
Set the sum of squares of a signal by scaling.
- Parameters
-
out output samples in input samples sum_of_squares new sum of squares n number of samples
- Note
- If the input is zero (or its energy underflows), the output is zero. This is the behavior of AGC in the AMR reference decoder. The QCELP reference decoder seems to have undefined behavior.
TIA/EIA/IS-733 2.4.8.3-2/3/4/5, 2.4.8.6 3GPP TS 26.090 6.1 (6)
Definition at line 223 of file acelp_vectors.c.
Referenced by apply_gain_ctrl(), scaled_hb_excitation(), and synthesis().
Add fixed vector to an array from a sparse representation.
- Parameters
-
out fixed vector with pitch sharpening in sparse fixed vector scale number to multiply the fixed vector by size the output vector size
Definition at line 234 of file acelp_vectors.c.
Referenced by amrnb_decode_frame(), ff_sipr_decode_frame_16k(), and synth_block_fcb_acb().
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 implementation of weighted sum of two vectors.
- Parameters
-
[out] out result of addition in_a first vector in_b second vector weight_coeff_a first vector weight coefficient weight_coeff_a second vector weight coefficient length vectors length
- Note
- It is safe to pass the same buffer for out and in_a or in_b.
Definition at line 192 of file acelp_vectors.c.
Referenced by decode_frame(), decode_lspf(), ff_acelp_vectors_init(), ff_sipr_decode_frame_16k(), interpolate_lpc(), interpolate_lsp(), and synth_block_fcb_acb().
Variable Documentation
const float ff_b60_sinc[61] |
b60 hamming windowed sinc function coefficients
Definition at line 113 of file acelp_vectors.c.
Referenced by decode_frame(), and decode_pitch_vector().
const uint8_t ff_fc_2pulses_9bits_track1[16] |
Track|Pulse| Positions
1 | 0 | 1, 6, 11, 16, 21, 26, 31, 36| | 3, 8, 13, 18, 23, 28, 33, 38
- Remarks
- Track in the table should be read top-to-bottom, left-to-right.
- Note
- (EE) Reference G.729D code also uses gray decoding for each pulse index before looking up the value in the table.
Used in G.729 @6.4k (with gray coding), AMR @5.9k (without gray coding)
Definition at line 30 of file acelp_vectors.c.
const uint8_t ff_fc_2pulses_9bits_track1_gray[16] |
Definition at line 41 of file acelp_vectors.c.
Referenced by decode_frame().
const uint8_t ff_fc_2pulses_9bits_track2_gray[32] |
Track|Pulse| Positions
2 | 1 | 0, 7, 14, 20, 27, 34, 1, 21 | | 2, 9, 15, 22, 29, 35, 6, 26 | | 4,10, 17, 24, 30, 37, 11, 31| | 5,12, 19, 25, 32, 39, 16, 36
- Remarks
- Track in the table should be read top-to-bottom, left-to-right.
- Note
- (EE.1) This table (from the reference code) does not comply with the specification. The specification contains the following table:
Track|Pulse| Positions
2 | 1 | 0, 5, 10, 15, 20, 25, 30, 35 | | 1, 6, 11, 16, 21, 26, 31, 36 | | 2, 7, 12, 17, 22, 27, 32, 37 | | 4, 9, 14, 19, 24, 29, 34, 39
- Note
- (EE.2) Reference G.729D code also uses gray decoding for each pulse index before looking up the value in the table.
Used in G.729 @6.4k (with gray coding)
Definition at line 53 of file acelp_vectors.c.
Referenced by decode_frame().
const uint8_t ff_fc_4pulses_8bits_track_4[32] |
Track|Pulse| Positions
4 | 3 | 3, 8, 13, 18, 23, 28, 33, 38, 43, 48, 53, 58, 63, 68, 73, 78| | 4, 9, 14, 19, 24, 29, 34, 39, 44, 49, 54, 59, 64, 69, 74, 79
- Remarks
- Track in the table should be read top-to-bottom, left-to-right.
Used in G.729 @8k, G.729 @4.4k, AMR @7.95k, AMR @7.40k
Definition at line 78 of file acelp_vectors.c.
Referenced by decode_frame().
const uint8_t ff_fc_4pulses_8bits_tracks_13[16] |
Track|Pulse| Positions
1 | 0 | 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75
2 | 1 | 1, 6, 11, 16, 21, 26, 31, 36, 41, 46, 51, 56, 61, 66, 71, 76
3 | 2 | 2, 7, 12, 17, 22, 27, 32, 37, 42, 47, 52, 57, 62, 67, 72, 77
Table contains only first the pulse indexes.
Used in G.729 @8k, G.729 @4.4k, AMR @7.95k, AMR @7.40k
Definition at line 73 of file acelp_vectors.c.
Referenced by decode_frame(), and ff_sipr_decode_frame_16k().
const float ff_pow_0_55[10] |
Table of pow(0.55,n)
Definition at line 108 of file acelp_vectors.c.
Referenced by eval_ir(), and postfilter().
const float ff_pow_0_7[10] |
Table of pow(0.7,n)
Definition at line 98 of file acelp_vectors.c.
Referenced by eval_ir(), and postfilter().
const float ff_pow_0_75[10] |
Table of pow(0.75,n)
Definition at line 103 of file acelp_vectors.c.
Referenced by postfilter(), and postfilter_5k0().
Generated on Fri Dec 20 2024 06:56:10 for FFmpeg by 1.8.11