FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions
opus_pvq.c File Reference
#include "opustab.h"
#include "opus_pvq.h"

Go to the source code of this file.

Macros

#define CELT_PVQ_U(n, k)   (ff_celt_pvq_u_row[FFMIN(n, k)][FFMAX(n, k)])
 
#define CELT_PVQ_V(n, k)   (CELT_PVQ_U(n, k) + CELT_PVQ_U(n, (k) + 1))
 

Functions

static int16_t celt_cos (int16_t x)
 
static int celt_log2tan (int isin, int icos)
 
static int celt_bits2pulses (const uint8_t *cache, int bits)
 
static int celt_pulses2bits (const uint8_t *cache, int pulses)
 
static void celt_normalize_residual (const int *av_restrict iy, float *av_restrict X, int N, float g)
 
static void celt_exp_rotation_impl (float *X, uint32_t len, uint32_t stride, float c, float s)
 
static void celt_exp_rotation (float *X, uint32_t len, uint32_t stride, uint32_t K, enum CeltSpread spread, const int encode)
 
static uint32_t celt_extract_collapse_mask (const int *iy, uint32_t N, uint32_t B)
 
static void celt_stereo_merge (float *X, float *Y, float mid, int N)
 
static void celt_interleave_hadamard (float *tmp, float *X, int N0, int stride, int hadamard)
 
static void celt_deinterleave_hadamard (float *tmp, float *X, int N0, int stride, int hadamard)
 
static void celt_haar1 (float *X, int N0, int stride)
 
static int celt_compute_qn (int N, int b, int offset, int pulse_cap, int dualstereo)
 
static uint32_t celt_icwrsi (uint32_t N, uint32_t K, const int *y)
 
static uint64_t celt_cwrsi (uint32_t N, uint32_t K, uint32_t i, int *y)
 
static void celt_encode_pulses (OpusRangeCoder *rc, int *y, uint32_t N, uint32_t K)
 
static float celt_decode_pulses (OpusRangeCoder *rc, int *y, uint32_t N, uint32_t K)
 
static void celt_pvq_search (float *X, int *y, int K, int N)
 
static uint32_t celt_alg_quant (OpusRangeCoder *rc, float *X, uint32_t N, uint32_t K, enum CeltSpread spread, uint32_t blocks, float gain)
 
static uint32_t celt_alg_unquant (OpusRangeCoder *rc, float *X, uint32_t N, uint32_t K, enum CeltSpread spread, uint32_t blocks, float gain)
 Decode pulse vector and combine the result with the pitch vector to produce the final normalised signal in the current band. More...
 
uint32_t ff_celt_decode_band (CeltFrame *f, OpusRangeCoder *rc, const int band, float *X, float *Y, int N, int b, uint32_t blocks, float *lowband, int duration, float *lowband_out, int level, float gain, float *lowband_scratch, int fill)
 
static int celt_calc_theta (const float *X, const float *Y, int coupling, int N)
 
static void celt_stereo_is_decouple (float *X, float *Y, float e_l, float e_r, int N)
 
static void celt_stereo_ms_decouple (float *X, float *Y, int N)
 
uint32_t ff_celt_encode_band (CeltFrame *f, OpusRangeCoder *rc, const int band, float *X, float *Y, int N, int b, uint32_t blocks, float *lowband, int duration, float *lowband_out, int level, float gain, float *lowband_scratch, int fill)
 

Macro Definition Documentation

#define CELT_PVQ_U (   n,
 
)    (ff_celt_pvq_u_row[FFMIN(n, k)][FFMAX(n, k)])

Definition at line 26 of file opus_pvq.c.

Referenced by celt_icwrsi().

#define CELT_PVQ_V (   n,
 
)    (CELT_PVQ_U(n, k) + CELT_PVQ_U(n, (k) + 1))

Definition at line 27 of file opus_pvq.c.

Referenced by celt_decode_pulses(), and celt_encode_pulses().

Function Documentation

static int16_t celt_cos ( int16_t  x)
inlinestatic

Definition at line 29 of file opus_pvq.c.

Referenced by ff_celt_decode_band(), and ff_celt_encode_band().

static int celt_log2tan ( int  isin,
int  icos 
)
inlinestatic

Definition at line 36 of file opus_pvq.c.

Referenced by ff_celt_decode_band(), and ff_celt_encode_band().

static int celt_bits2pulses ( const uint8_t cache,
int  bits 
)
inlinestatic

Definition at line 48 of file opus_pvq.c.

Referenced by ff_celt_decode_band(), and ff_celt_encode_band().

static int celt_pulses2bits ( const uint8_t cache,
int  pulses 
)
inlinestatic

Definition at line 67 of file opus_pvq.c.

Referenced by ff_celt_decode_band(), and ff_celt_encode_band().

static void celt_normalize_residual ( const int *av_restrict  iy,
float *av_restrict  X,
int  N,
float  g 
)
inlinestatic

Definition at line 73 of file opus_pvq.c.

Referenced by celt_alg_unquant().

static void celt_exp_rotation_impl ( float *  X,
uint32_t  len,
uint32_t  stride,
float  c,
float  s 
)
static

Definition at line 81 of file opus_pvq.c.

Referenced by celt_exp_rotation().

static void celt_exp_rotation ( float *  X,
uint32_t  len,
uint32_t  stride,
uint32_t  K,
enum CeltSpread  spread,
const int  encode 
)
inlinestatic

Definition at line 106 of file opus_pvq.c.

Referenced by celt_alg_quant(), and celt_alg_unquant().

static uint32_t celt_extract_collapse_mask ( const int iy,
uint32_t  N,
uint32_t  B 
)
inlinestatic

Definition at line 148 of file opus_pvq.c.

Referenced by celt_alg_quant(), and celt_alg_unquant().

static void celt_stereo_merge ( float *  X,
float *  Y,
float  mid,
int  N 
)
inlinestatic

Definition at line 167 of file opus_pvq.c.

Referenced by ff_celt_decode_band().

static void celt_interleave_hadamard ( float *  tmp,
float *  X,
int  N0,
int  stride,
int  hadamard 
)
static

Definition at line 207 of file opus_pvq.c.

Referenced by ff_celt_decode_band().

static void celt_deinterleave_hadamard ( float *  tmp,
float *  X,
int  N0,
int  stride,
int  hadamard 
)
static

Definition at line 228 of file opus_pvq.c.

Referenced by ff_celt_decode_band(), and ff_celt_encode_band().

static void celt_haar1 ( float *  X,
int  N0,
int  stride 
)
static

Definition at line 249 of file opus_pvq.c.

Referenced by ff_celt_decode_band(), and ff_celt_encode_band().

static int celt_compute_qn ( int  N,
int  b,
int  offset,
int  pulse_cap,
int  dualstereo 
)
inlinestatic

Definition at line 263 of file opus_pvq.c.

Referenced by ff_celt_decode_band(), and ff_celt_encode_band().

static uint32_t celt_icwrsi ( uint32_t  N,
uint32_t  K,
const int y 
)
inlinestatic

Definition at line 280 of file opus_pvq.c.

Referenced by celt_encode_pulses().

static uint64_t celt_cwrsi ( uint32_t  N,
uint32_t  K,
uint32_t  i,
int y 
)
inlinestatic

Definition at line 292 of file opus_pvq.c.

Referenced by celt_decode_pulses().

static void celt_encode_pulses ( OpusRangeCoder rc,
int y,
uint32_t  N,
uint32_t  K 
)
inlinestatic

Definition at line 377 of file opus_pvq.c.

Referenced by celt_alg_quant().

static float celt_decode_pulses ( OpusRangeCoder rc,
int y,
uint32_t  N,
uint32_t  K 
)
inlinestatic

Definition at line 382 of file opus_pvq.c.

Referenced by celt_alg_unquant().

static void celt_pvq_search ( float *  X,
int y,
int  K,
int  N 
)
static

Definition at line 392 of file opus_pvq.c.

Referenced by celt_alg_quant().

static uint32_t celt_alg_quant ( OpusRangeCoder rc,
float *  X,
uint32_t  N,
uint32_t  K,
enum CeltSpread  spread,
uint32_t  blocks,
float  gain 
)
static

Definition at line 438 of file opus_pvq.c.

Referenced by ff_celt_encode_band().

static uint32_t celt_alg_unquant ( OpusRangeCoder rc,
float *  X,
uint32_t  N,
uint32_t  K,
enum CeltSpread  spread,
uint32_t  blocks,
float  gain 
)
static

Decode pulse vector and combine the result with the pitch vector to produce the final normalised signal in the current band.

Definition at line 451 of file opus_pvq.c.

Referenced by ff_celt_decode_band().

uint32_t ff_celt_decode_band ( CeltFrame f,
OpusRangeCoder rc,
const int  band,
float *  X,
float *  Y,
int  N,
int  b,
uint32_t  blocks,
float *  lowband,
int  duration,
float *  lowband_out,
int  level,
float  gain,
float *  lowband_scratch,
int  fill 
)

Definition at line 462 of file opus_pvq.c.

Referenced by celt_decode_bands(), and ff_celt_decode_band().

static int celt_calc_theta ( const float *  X,
const float *  Y,
int  coupling,
int  N 
)
static

Definition at line 818 of file opus_pvq.c.

Referenced by ff_celt_encode_band().

static void celt_stereo_is_decouple ( float *  X,
float *  Y,
float  e_l,
float  e_r,
int  N 
)
static

Definition at line 834 of file opus_pvq.c.

Referenced by ff_celt_encode_band().

static void celt_stereo_ms_decouple ( float *  X,
float *  Y,
int  N 
)
static

Definition at line 844 of file opus_pvq.c.

Referenced by ff_celt_encode_band().

uint32_t ff_celt_encode_band ( CeltFrame f,
OpusRangeCoder rc,
const int  band,
float *  X,
float *  Y,
int  N,
int  b,
uint32_t  blocks,
float *  lowband,
int  duration,
float *  lowband_out,
int  level,
float  gain,
float *  lowband_scratch,
int  fill 
)

Definition at line 855 of file opus_pvq.c.

Referenced by celt_quant_bands(), and ff_celt_encode_band().