FFmpeg
Macros | Functions
opus_pvq.c File Reference
#include <float.h>
#include "config_components.h"
#include "mathops.h"
#include "opustab.h"
#include "opus_pvq.h"

Go to the source code of this file.

Macros

#define ROUND_MUL16(a, b)   ((MUL16(a, b) + 16384) >> 15)
 
#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 *restrict iy, float *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 stereo)
 
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 uint32_t celt_alg_quant (OpusRangeCoder *rc, float *X, uint32_t N, uint32_t K, enum CeltSpread spread, uint32_t blocks, float gain, CeltPVQ *pvq)
 
static uint32_t celt_alg_unquant (OpusRangeCoder *rc, float *X, uint32_t N, uint32_t K, enum CeltSpread spread, uint32_t blocks, float gain, CeltPVQ *pvq)
 Decode pulse vector and combine the result with the pitch vector to produce the final normalised signal in the current band. More...
 
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)
 
static av_always_inline uint32_t quant_band_template (CeltPVQ *pvq, 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, int quant)
 
static QUANT_FN (pvq_decode_band)
 
static QUANT_FN (pvq_encode_band)
 
int av_cold ff_celt_pvq_init (CeltPVQ **pvq, int encode)
 
void av_cold ff_celt_pvq_uninit (CeltPVQ **pvq)
 

Macro Definition Documentation

◆ ROUND_MUL16

#define ROUND_MUL16 (   a,
  b 
)    ((MUL16(a, b) + 16384) >> 15)

Definition at line 34 of file opus_pvq.c.

◆ CELT_PVQ_U

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

Definition at line 36 of file opus_pvq.c.

◆ CELT_PVQ_V

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

Definition at line 37 of file opus_pvq.c.

Function Documentation

◆ celt_cos()

static int16_t celt_cos ( int16_t  x)
inlinestatic

Definition at line 39 of file opus_pvq.c.

Referenced by quant_band_template().

◆ celt_log2tan()

static int celt_log2tan ( int  isin,
int  icos 
)
inlinestatic

Definition at line 46 of file opus_pvq.c.

Referenced by quant_band_template().

◆ celt_bits2pulses()

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

Definition at line 58 of file opus_pvq.c.

Referenced by quant_band_template().

◆ celt_pulses2bits()

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

Definition at line 77 of file opus_pvq.c.

Referenced by quant_band_template().

◆ celt_normalize_residual()

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

Definition at line 83 of file opus_pvq.c.

Referenced by celt_alg_quant(), and celt_alg_unquant().

◆ celt_exp_rotation_impl()

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

Definition at line 91 of file opus_pvq.c.

Referenced by celt_exp_rotation().

◆ 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 114 of file opus_pvq.c.

Referenced by celt_alg_quant(), and celt_alg_unquant().

◆ celt_extract_collapse_mask()

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

Definition at line 154 of file opus_pvq.c.

Referenced by celt_alg_quant(), and celt_alg_unquant().

◆ celt_stereo_merge()

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

Definition at line 168 of file opus_pvq.c.

Referenced by quant_band_template().

◆ celt_interleave_hadamard()

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

Definition at line 206 of file opus_pvq.c.

Referenced by quant_band_template().

◆ celt_deinterleave_hadamard()

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

Definition at line 219 of file opus_pvq.c.

Referenced by quant_band_template().

◆ celt_haar1()

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

Definition at line 232 of file opus_pvq.c.

Referenced by quant_band_template().

◆ celt_compute_qn()

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

Definition at line 246 of file opus_pvq.c.

Referenced by quant_band_template().

◆ celt_icwrsi()

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

Definition at line 263 of file opus_pvq.c.

Referenced by celt_encode_pulses().

◆ celt_cwrsi()

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

Definition at line 275 of file opus_pvq.c.

Referenced by celt_decode_pulses().

◆ celt_encode_pulses()

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

Definition at line 358 of file opus_pvq.c.

Referenced by celt_alg_quant().

◆ celt_decode_pulses()

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

Definition at line 363 of file opus_pvq.c.

Referenced by celt_alg_unquant().

◆ 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,
CeltPVQ pvq 
)
static

Definition at line 424 of file opus_pvq.c.

Referenced by quant_band_template().

◆ celt_alg_unquant()

static uint32_t celt_alg_unquant ( OpusRangeCoder rc,
float X,
uint32_t  N,
uint32_t  K,
enum CeltSpread  spread,
uint32_t  blocks,
float  gain,
CeltPVQ pvq 
)
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 440 of file opus_pvq.c.

Referenced by quant_band_template().

◆ celt_calc_theta()

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

Definition at line 452 of file opus_pvq.c.

Referenced by quant_band_template().

◆ celt_stereo_is_decouple()

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

Definition at line 470 of file opus_pvq.c.

Referenced by quant_band_template().

◆ celt_stereo_ms_decouple()

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

Definition at line 480 of file opus_pvq.c.

Referenced by quant_band_template().

◆ quant_band_template()

static av_always_inline uint32_t quant_band_template ( CeltPVQ pvq,
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,
int  quant 
)
static

Definition at line 490 of file opus_pvq.c.

Referenced by QUANT_FN().

◆ QUANT_FN() [1/2]

static QUANT_FN ( pvq_decode_band  )
static

Definition at line 886 of file opus_pvq.c.

◆ QUANT_FN() [2/2]

static QUANT_FN ( pvq_encode_band  )
static

Definition at line 896 of file opus_pvq.c.

◆ ff_celt_pvq_init()

int av_cold ff_celt_pvq_init ( CeltPVQ **  pvq,
int  encode 
)

Definition at line 906 of file opus_pvq.c.

Referenced by ff_celt_init(), and opus_encode_init().

◆ ff_celt_pvq_uninit()

void av_cold ff_celt_pvq_uninit ( CeltPVQ **  pvq)

Definition at line 926 of file opus_pvq.c.

Referenced by ff_celt_free(), and opus_encode_end().