libavcodec/acelp_vectors.c File Reference

#include <inttypes.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).
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.

Variables

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 -----------------------------------------.
const uint8_t ff_fc_2pulses_9bits_track1_gray [16]
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 -----------------------------------------.
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 -------------------------------------------------------------------------.
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 -------------------------------------------------------------------------.


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:
fc_v [out] 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 , G.729 .4k, G.729 .4k, AMR .95k, AMR .40k

Definition at line 105 of file acelp_vectors.c.

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 129 of file acelp_vectors.c.


Variable Documentation

const uint8_t ff_fc_2pulses_9bits_track1[16]

Initial value:

{
    1,  3,
    6,  8,
    11, 13,
    16, 18,
    21, 23,
    26, 28,
    31, 33,
    36, 38
}
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 .4k (with gray coding), AMR .9k (without gray coding)

Definition at line 27 of file acelp_vectors.c.

Initial value:

{
  1,  3,
  8,  6,
  18, 16,
  11, 13,
  38, 36,
  31, 33,
  21, 23,
  28, 26,
}

Definition at line 38 of file acelp_vectors.c.

Initial value:

{
  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,
}
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 .4k (with gray coding)

Definition at line 50 of file acelp_vectors.c.

const uint8_t ff_fc_4pulses_8bits_track_4[32]

Initial value:

{
    3,  4,
    8,  9,
    13, 14,
    18, 19,
    23, 24,
    28, 29,
    33, 34,
    38, 39,
    43, 44,
    48, 49,
    53, 54,
    58, 59,
    63, 64,
    68, 69,
    73, 74,
    78, 79,
}
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 , G.729 .4k, AMR .95k, AMR .40k

Definition at line 75 of file acelp_vectors.c.

const uint8_t ff_fc_4pulses_8bits_tracks_13[16]

Initial value:

{
  0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75,
}
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 , G.729 .4k, AMR .95k, AMR .40k

Definition at line 70 of file acelp_vectors.c.


Generated on Fri Oct 26 02:35:42 2012 for FFmpeg by  doxygen 1.5.8