FFmpeg
Data Structures | Macros | Typedefs | Functions | Variables
aaccoder.c File Reference
#include "libavutil/libm.h"
#include <float.h>
#include "libavutil/mathematics.h"
#include "mathops.h"
#include "avcodec.h"
#include "put_bits.h"
#include "aac.h"
#include "aacenc.h"
#include "aactab.h"
#include "aacenctab.h"
#include "aacenc_utils.h"
#include "aacenc_quantization.h"
#include "aacenc_is.h"
#include "aacenc_tns.h"
#include "libavcodec/aaccoder_twoloop.h"
#include "libavcodec/aaccoder_trellis.h"

Go to the source code of this file.

Data Structures

struct   BandCodingPath
  structure used in optimal codebook search More...
 
struct   TrellisPath
 

Macros

#define  NOISE_SPREAD_THRESHOLD   0.9f
 
#define  NOISE_LAMBDA_REPLACE   1.948f
 
#define  QUANTIZE_AND_ENCODE_BAND_COST_FUNC(NAME, BT_ZERO, BT_UNSIGNED, BT_PAIR, BT_ESC, BT_NOISE, BT_STEREO, ROUNDING)
 
#define  TRELLIS_STAGES   121
 
#define  TRELLIS_STATES   (SCALE_MAX_DIFF+1)
 

Typedefs

typedef float(*  quantize_and_encode_band_func) (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)
 

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)
 
float  ff_quantize_and_encode_band_cost (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 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

 
 
 

Detailed Description

AAC coefficients encoder

Definition in file aaccoder.c.

Macro Definition Documentation

NOISE_SPREAD_THRESHOLD

#define NOISE_SPREAD_THRESHOLD   0.9f

Definition at line 55 of file aaccoder.c.

NOISE_LAMBDA_REPLACE

#define NOISE_LAMBDA_REPLACE   1.948f

Definition at line 59 of file aaccoder.c.

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 203 of file aaccoder.c.

TRELLIS_STAGES

#define TRELLIS_STAGES   121

Definition at line 300 of file aaccoder.c.

TRELLIS_STATES

#define TRELLIS_STATES   (SCALE_MAX_DIFF+1)

Definition at line 301 of file aaccoder.c.

Typedef Documentation

quantize_and_encode_band_func

typedef float(* quantize_and_encode_band_func) (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 at line 63 of file aaccoder.c.

Function Documentation

quantize_and_encode_band_cost_template()

static av_always_inline float quantize_and_encode_band_cost_template ( struct AACEncContexts,
PutBitContextpb,
const floatin,
floatout,
const floatscaled,
int  size,
int  scale_idx,
int  cb,
const float  lambda,
const float  uplim,
int *  bits,
floatenergy,
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 74 of file aaccoder.c.

quantize_and_encode_band_cost_NONE()

static float quantize_and_encode_band_cost_NONE ( struct AACEncContexts,
PutBitContextpb,
const floatin,
floatquant,
const floatscaled,
int  size,
int  scale_idx,
int  cb,
const float  lambda,
const float  uplim,
int *  bits,
floatenergy 
)
inlinestatic

Definition at line 194 of file aaccoder.c.

ff_quantize_and_encode_band_cost()

float ff_quantize_and_encode_band_cost ( struct AACEncContexts,
PutBitContextpb,
const floatin,
floatquant,
const floatscaled,
int  size,
int  scale_idx,
int  cb,
const float  lambda,
const float  uplim,
int *  bits,
floatenergy 
)

Definition at line 267 of file aaccoder.c.

Referenced by quantize_band_cost(), and quantize_band_cost_bits().

quantize_and_encode_band()

static void quantize_and_encode_band ( struct AACEncContexts,
PutBitContextpb,
const floatin,
floatout,
int  size,
int  scale_idx,
int  cb,
const float  lambda,
int  rtz 
)
inlinestatic

Definition at line 278 of file aaccoder.c.

set_special_band_scalefactors()

static void set_special_band_scalefactors ( AACEncContexts,
)
static

Definition at line 303 of file aaccoder.c.

search_for_quantizers_fast()

static void search_for_quantizers_fast ( AVCodecContextavctx,
AACEncContexts,
const float  lambda 
)
static

Definition at line 342 of file aaccoder.c.

search_for_pns()

static void search_for_pns ( AACEncContexts,
AVCodecContextavctx,
)
static

Keep this in sync with twoloop's cutoff selection

Definition at line 489 of file aaccoder.c.

mark_pns()

static void mark_pns ( AACEncContexts,
AVCodecContextavctx,
)
static

Keep this in sync with twoloop's cutoff selection

Definition at line 631 of file aaccoder.c.

search_for_ms()

static void search_for_ms ( AACEncContexts,
ChannelElementcpe 
)
static

Scout out next nonzero bands

Definition at line 702 of file aaccoder.c.

Variable Documentation

quantize_and_encode_band_cost_arr

const quantize_and_encode_band_func quantize_and_encode_band_cost_arr[]
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 227 of file aaccoder.c.

Referenced by ff_quantize_and_encode_band_cost(), and quantize_and_encode_band().

quantize_and_encode_band_cost_rtz_arr

const quantize_and_encode_band_func quantize_and_encode_band_cost_rtz_arr[]
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 247 of file aaccoder.c.

Referenced by quantize_and_encode_band().

ff_aac_coders

const AACCoefficientsEncoder ff_aac_coders[AAC_CODER_NB]
Initial value:
= {
},
},
}

Definition at line 843 of file aaccoder.c.

Referenced by aac_encode_init().

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: aaccoder.c:74
cb
static double cb(void *priv, double x, double y)
Definition: vf_geq.c:247
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: aaccoder.c:194
search_for_ms
static void search_for_ms(AACEncContext *s, ChannelElement *cpe)
Definition: aaccoder.c:702
AAC_CODER_FAST
@ AAC_CODER_FAST
Definition: aacenc.h:46
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)
Definition: aaccoder.c:278
quant
static const uint8_t quant[64]
Definition: vmixdec.c:71
search_for_pns
static void search_for_pns(AACEncContext *s, AVCodecContext *avctx, SingleChannelElement *sce)
Definition: aaccoder.c:489
s
#define s(width, name)
Definition: cbs_vp9.c:198
bits
uint8_t bits
Definition: vp3data.h:128
search_for_quantizers_fast
static void search_for_quantizers_fast(AVCodecContext *avctx, AACEncContext *s, SingleChannelElement *sce, const float lambda)
Definition: aaccoder.c:342
mark_pns
static void mark_pns(AACEncContext *s, AVCodecContext *avctx, SingleChannelElement *sce)
Definition: aaccoder.c:631
PutBitContext
Definition: put_bits.h:50
codebook_trellis_rate
static void codebook_trellis_rate(AACEncContext *s, SingleChannelElement *sce, int win, int group_len, const float lambda)
Definition: aaccoder_trellis.h:59
ff_aac_apply_tns
void ff_aac_apply_tns(AACEncContext *s, SingleChannelElement *sce)
Definition: aacenc_tns.c:102
ff_aac_encode_tns_info
void ff_aac_encode_tns_info(AACEncContext *s, SingleChannelElement *sce)
Encode TNS data.
Definition: aacenc_tns.c:70
size
int size
Definition: twinvq_data.h:10344
ESC_BT
@ ESC_BT
Spectral data are coded with an escape sequence.
Definition: aac.h:69
AAC_CODER_TWOLOOP
@ AAC_CODER_TWOLOOP
Definition: aacenc.h:45
search_for_quantizers_twoloop
static void search_for_quantizers_twoloop(AVCodecContext *avctx, AACEncContext *s, SingleChannelElement *sce, const float lambda)
two-loop quantizers search taken from ISO 13818-7 Appendix C
Definition: aaccoder_twoloop.h:65
ff_aac_search_for_tns
void ff_aac_search_for_tns(AACEncContext *s, SingleChannelElement *sce)
Definition: aacenc_tns.c:161
set_special_band_scalefactors
static void set_special_band_scalefactors(AACEncContext *s, SingleChannelElement *sce)
Definition: aaccoder.c:303
ff_aac_search_for_is
void ff_aac_search_for_is(AACEncContext *s, AVCodecContext *avctx, ChannelElement *cpe)
Definition: aacenc_is.c:109
AACEncContext
AAC encoder context.
Definition: aacenc.h:180

Generated on Wed Nov 19 2025 19:23:37 for FFmpeg by   doxygen 1.8.17

AltStyle によって変換されたページ (->オリジナル) /