FFmpeg
Macros | Functions | Variables
aacenc_quantization.h File Reference
#include "aactab.h"
#include "aacenc.h"
#include "aacenctab.h"
#include "aacenc_utils.h"
#include "aacenc_quantization_misc.h"

Go to the source code of this file.

Macros

#define QUANTIZE_AND_ENCODE_BAND_COST_FUNC(NAME, BT_ZERO, BT_UNSIGNED, BT_PAIR, BT_ESC, BT_NOISE, BT_STEREO, ROUNDING)
 
#define quantize_and_encode_band_cost( s, pb, in, quant, scaled, size, scale_idx, cb, lambda, uplim, bits, energy, rtz)
 

Functions

static av_always_inline float quantize_and_encode_band_cost_template (struct AACEncContext *s, PutBitContext *pb, const float *in, float *out, const float *scaled, int size, int scale_idx, int cb, const float lambda, const float uplim, int *bits, float *energy, int BT_ZERO, int BT_UNSIGNED, int BT_PAIR, int BT_ESC, int BT_NOISE, int BT_STEREO, const float ROUNDING)
 Calculate rate distortion cost for quantizing with given codebook. More...
 
static float quantize_and_encode_band_cost_NONE (struct AACEncContext *s, PutBitContext *pb, const float *in, float *quant, const float *scaled, int size, int scale_idx, int cb, const float lambda, const float uplim, int *bits, float *energy)
 
static float quantize_band_cost (struct AACEncContext *s, const float *in, const float *scaled, int size, int scale_idx, int cb, const float lambda, const float uplim, int *bits, float *energy, int rtz)
 
static int quantize_band_cost_bits (struct AACEncContext *s, const float *in, const float *scaled, int size, int scale_idx, int cb, const float lambda, const float uplim, int *bits, float *energy, int rtz)
 
static void quantize_and_encode_band (struct AACEncContext *s, PutBitContext *pb, const float *in, float *out, int size, int scale_idx, int cb, const float lambda, int rtz)
 

Variables

static float(*const quantize_and_encode_band_cost_arr [])(struct AACEncContext *s, PutBitContext *pb, const float *in, float *quant, const float *scaled, int size, int scale_idx, int cb, const float lambda, const float uplim, int *bits, float *energy)
 
static float(*const quantize_and_encode_band_cost_rtz_arr [])(struct AACEncContext *s, PutBitContext *pb, const float *in, float *quant, const float *scaled, int size, int scale_idx, int cb, const float lambda, const float uplim, int *bits, float *energy)
 

Detailed Description

AAC encoder quantizer

Author
Rostislav Pehlivanov ( atomnuker gmail com )

Definition in file aacenc_quantization.h.

Macro Definition Documentation

◆ QUANTIZE_AND_ENCODE_BAND_COST_FUNC

#define QUANTIZE_AND_ENCODE_BAND_COST_FUNC (   NAME,
  BT_ZERO,
  BT_UNSIGNED,
  BT_PAIR,
  BT_ESC,
  BT_NOISE,
  BT_STEREO,
  ROUNDING 
)
Value:
static float quantize_and_encode_band_cost_ ## NAME( \
struct AACEncContext *s, \
PutBitContext *pb, const float *in, float *quant, \
const float *scaled, int size, int scale_idx, \
int cb, const float lambda, const float uplim, \
int *bits, float *energy) { \
s, pb, in, quant, scaled, size, scale_idx, \
BT_ESC ? ESC_BT : cb, lambda, uplim, bits, energy, \
BT_ZERO, BT_UNSIGNED, BT_PAIR, BT_ESC, BT_NOISE, BT_STEREO, \
ROUNDING); \
}

Definition at line 171 of file aacenc_quantization.h.

◆ quantize_and_encode_band_cost

#define quantize_and_encode_band_cost (   s,
  pb,
  in,
  quant,
  scaled,
  size,
  scale_idx,
  cb,
  lambda,
  uplim,
  bits,
  energy,
  rtz 
)
Value:
s, pb, in, quant, scaled, size, scale_idx, cb, \
lambda, uplim, bits, energy)

Definition at line 243 of file aacenc_quantization.h.

Function Documentation

◆ quantize_and_encode_band_cost_template()

static av_always_inline float quantize_and_encode_band_cost_template ( struct AACEncContext s,
PutBitContext pb,
const float *  in,
float *  out,
const float *  scaled,
int  size,
int  scale_idx,
int  cb,
const float  lambda,
const float  uplim,
int bits,
float *  energy,
int  BT_ZERO,
int  BT_UNSIGNED,
int  BT_PAIR,
int  BT_ESC,
int  BT_NOISE,
int  BT_STEREO,
const float  ROUNDING 
)
static

Calculate rate distortion cost for quantizing with given codebook.

Returns
quantization distortion

Definition at line 41 of file aacenc_quantization.h.

◆ quantize_and_encode_band_cost_NONE()

static float quantize_and_encode_band_cost_NONE ( struct AACEncContext s,
PutBitContext pb,
const float *  in,
float *  quant,
const float *  scaled,
int  size,
int  scale_idx,
int  cb,
const float  lambda,
const float  uplim,
int bits,
float *  energy 
)
inlinestatic

Definition at line 162 of file aacenc_quantization.h.

◆ quantize_band_cost()

static float quantize_band_cost ( struct AACEncContext s,
const float *  in,
const float *  scaled,
int  size,
int  scale_idx,
int  cb,
const float  lambda,
const float  uplim,
int bits,
float *  energy,
int  rtz 
)
inlinestatic

◆ quantize_band_cost_bits()

static int quantize_band_cost_bits ( struct AACEncContext s,
const float *  in,
const float *  scaled,
int  size,
int  scale_idx,
int  cb,
const float  lambda,
const float  uplim,
int bits,
float *  energy,
int  rtz 
)
inlinestatic

Definition at line 259 of file aacenc_quantization.h.

Referenced by codebook_trellis_rate().

◆ quantize_and_encode_band()

static void quantize_and_encode_band ( struct AACEncContext s,
PutBitContext pb,
const float *  in,
float *  out,
int  size,
int  scale_idx,
int  cb,
const float  lambda,
int  rtz 
)
inlinestatic

Definition at line 273 of file aacenc_quantization.h.

Variable Documentation

◆ quantize_and_encode_band_cost_arr

float(*const quantize_and_encode_band_cost_arr[])(struct AACEncContext *s, PutBitContext *pb, const float *in, float *quant, const float *scaled, int size, int scale_idx, int cb, const float lambda, const float uplim, int *bits, float *energy)
static
Initial value:
= {
quantize_and_encode_band_cost_ZERO,
quantize_and_encode_band_cost_SQUAD,
quantize_and_encode_band_cost_SQUAD,
quantize_and_encode_band_cost_UQUAD,
quantize_and_encode_band_cost_UQUAD,
quantize_and_encode_band_cost_SPAIR,
quantize_and_encode_band_cost_SPAIR,
quantize_and_encode_band_cost_UPAIR,
quantize_and_encode_band_cost_UPAIR,
quantize_and_encode_band_cost_UPAIR,
quantize_and_encode_band_cost_UPAIR,
quantize_and_encode_band_cost_ESC,
quantize_and_encode_band_cost_NOISE,
quantize_and_encode_band_cost_STEREO,
quantize_and_encode_band_cost_STEREO,
}

Definition at line 195 of file aacenc_quantization.h.

◆ quantize_and_encode_band_cost_rtz_arr

float(*const quantize_and_encode_band_cost_rtz_arr[])(struct AACEncContext *s, PutBitContext *pb, const float *in, float *quant, const float *scaled, int size, int scale_idx, int cb, const float lambda, const float uplim, int *bits, float *energy)
static
Initial value:
= {
quantize_and_encode_band_cost_ZERO,
quantize_and_encode_band_cost_SQUAD,
quantize_and_encode_band_cost_SQUAD,
quantize_and_encode_band_cost_UQUAD,
quantize_and_encode_band_cost_UQUAD,
quantize_and_encode_band_cost_SPAIR,
quantize_and_encode_band_cost_SPAIR,
quantize_and_encode_band_cost_UPAIR,
quantize_and_encode_band_cost_UPAIR,
quantize_and_encode_band_cost_UPAIR,
quantize_and_encode_band_cost_UPAIR,
quantize_and_encode_band_cost_ESC_RTZ,
quantize_and_encode_band_cost_NOISE,
quantize_and_encode_band_cost_STEREO,
quantize_and_encode_band_cost_STEREO,
}

Definition at line 219 of file aacenc_quantization.h.

quantize_and_encode_band_cost_rtz_arr
static float(*const quantize_and_encode_band_cost_rtz_arr[])(struct AACEncContext *s, PutBitContext *pb, const float *in, float *quant, const float *scaled, int size, int scale_idx, int cb, const float lambda, const float uplim, int *bits, float *energy)
Definition: aacenc_quantization.h:219
cb
static double cb(void *priv, double x, double y)
Definition: vf_geq.c:215
quant
static int quant(float coef, const float Q, const float rounding)
Quantize one coefficient.
Definition: aacenc_utils.h:59
s
#define s(width, name)
Definition: cbs_vp9.c:257
bits
uint8_t bits
Definition: vp3data.h:141
quantize_and_encode_band_cost_NONE
static float quantize_and_encode_band_cost_NONE(struct AACEncContext *s, PutBitContext *pb, const float *in, float *quant, const float *scaled, int size, int scale_idx, int cb, const float lambda, const float uplim, int *bits, float *energy)
Definition: aacenc_quantization.h:162
PutBitContext
Definition: put_bits.h:49
size
int size
Definition: twinvq_data.h:10344
ESC_BT
@ ESC_BT
Spectral data are coded with an escape sequence.
Definition: aac.h:86
quantize_and_encode_band_cost_template
static av_always_inline float quantize_and_encode_band_cost_template(struct AACEncContext *s, PutBitContext *pb, const float *in, float *out, const float *scaled, int size, int scale_idx, int cb, const float lambda, const float uplim, int *bits, float *energy, int BT_ZERO, int BT_UNSIGNED, int BT_PAIR, int BT_ESC, int BT_NOISE, int BT_STEREO, const float ROUNDING)
Calculate rate distortion cost for quantizing with given codebook.
Definition: aacenc_quantization.h:41
AACEncContext
AAC encoder context.
Definition: aacenc.h:379
quantize_and_encode_band_cost_arr
static float(*const quantize_and_encode_band_cost_arr[])(struct AACEncContext *s, PutBitContext *pb, const float *in, float *quant, const float *scaled, int size, int scale_idx, int cb, const float lambda, const float uplim, int *bits, float *energy)
Definition: aacenc_quantization.h:195