FFmpeg
Functions | Variables
celp_math.c File Reference
#include <inttypes.h>
#include <limits.h>
#include "libavutil/avassert.h"
#include "avcodec.h"
#include "mathops.h"
#include "celp_math.h"
#include "libavutil/common.h"

Go to the source code of this file.

Functions

int ff_exp2 (uint16_t power)
 fixed-point implementation of exp2(x) in [0; 1] domain. More...
 
int ff_log2_q15 (uint32_t value)
 Calculate log2(x). More...
 
int64_t ff_dot_product (const int16_t *a, const int16_t *b, int length)
 Calculate the dot product of 2 int16_t vectors. More...
 
float ff_dot_productf (const float *a, const float *b, int length)
 Return the dot product. More...
 
void ff_celp_math_init (CELPMContext *c)
 Initialize CELPMContext. More...
 

Variables

static const uint16_t exp2a []
 
static const uint16_t exp2b []
 
static const uint16_t tab_log2 [33]
 Table used to compute log2(x) More...
 

Function Documentation

◆ ff_exp2()

int ff_exp2 ( uint16_t  power)

fixed-point implementation of exp2(x) in [0; 1] domain.

Parameters
powerargument to exp2, 0 <= power <= 0x7fff
Returns
value of (1<<20) * exp2(power / (1<<15)) 0x8000c <= result <= 0xfffea

Definition at line 48 of file celp_math.c.

Referenced by ff_acelp_decode_gain_code().

◆ ff_log2_q15()

int ff_log2_q15 ( uint32_t  value)

Calculate log2(x).

Parameters
valuefunction argument, 0 < value <= 7fff ffff
Returns
value of (1<<15) * log2(value)

Definition at line 78 of file celp_math.c.

Referenced by ff_acelp_update_past_gain(), and main().

◆ ff_dot_product()

int64_t ff_dot_product ( const int16_t *  a,
const int16_t *  b,
int  length 
)

Calculate the dot product of 2 int16_t vectors.

Parameters
ainput data array
binput data array
lengthnumber of elements
Returns
dot product = sum of elementwise products

Definition at line 98 of file celp_math.c.

Referenced by acb_search(), comp_autocorr(), comp_harmonic_coeff(), estimate_pitch(), ff_g723_1_dot_product(), ff_g723_1_gen_acb_excitation(), and main().

◆ ff_dot_productf()

float ff_dot_productf ( const float *  a,
const float *  b,
int  length 
)

Return the dot product.

Parameters
ainput data array
binput data array
lengthnumber of elements
Returns
dot product = sum of elementwise products

Definition at line 109 of file celp_math.c.

Referenced by ff_celp_math_init(), and main().

◆ ff_celp_math_init()

void ff_celp_math_init ( CELPMContext c)

Initialize CELPMContext.

Definition at line 120 of file celp_math.c.

Referenced by amrnb_decode_init(), and amrwb_decode_init().

Variable Documentation

◆ exp2a

const uint16_t exp2a[]
static
Initial value:
=
{
0, 1435, 2901, 4400, 5931, 7496, 9096, 10730,
12400, 14106, 15850, 17632, 19454, 21315, 23216, 25160,
27146, 29175, 31249, 33368, 35534, 37747, 40009, 42320,
44682, 47095, 49562, 52082, 54657, 57289, 59979, 62727,
}

Definition at line 32 of file celp_math.c.

Referenced by ff_exp2().

◆ exp2b

const uint16_t exp2b[]
static
Initial value:
=
{
3, 712, 1424, 2134, 2845, 3557, 4270, 4982,
5696, 6409, 7124, 7839, 8554, 9270, 9986, 10704,
11421, 12138, 12857, 13576, 14295, 15014, 15734, 16455,
17176, 17898, 18620, 19343, 20066, 20790, 21514, 22238,
}

Definition at line 40 of file celp_math.c.

Referenced by ff_exp2().

◆ tab_log2

const uint16_t tab_log2[33]
static
Initial value:
=
{
4, 1459, 2870, 4240, 5572, 6867, 8127, 9355,
10552, 11719, 12858, 13971, 15057, 16120, 17158, 18175,
19170, 20145, 21100, 22036, 22954, 23854, 24738, 25605,
26457, 27294, 28116, 28924, 29719, 30500, 31269, 32025, 32769,
}

Table used to compute log2(x)

tab_log2[i] = (1<<15) * log2(1 + i/32), i=0..32

Definition at line 63 of file celp_math.c.

Referenced by ff_log2_q15().