FFmpeg  4.0
Macros | Functions
aacenc_utils.h File Reference

AAC encoder utilities. More...

#include "libavutil/ffmath.h"
#include "aac.h"
#include "aacenctab.h"
#include "aactab.h"

Go to the source code of this file.

Macros

#define ROUND_STANDARD   0.4054f
 
#define ROUND_TO_ZERO   0.1054f
 
#define C_QUANT   0.4054f
 
#define ERROR_IF(cond, ...)
 
#define WARN_IF(cond, ...)
 

Functions

static void abs_pow34_v (float *out, const float *in, const int size)
 
static float pos_pow34 (float a)
 
static int quant (float coef, const float Q, const float rounding)
 Quantize one coefficient. More...
 
static void quantize_bands (int *out, const float *in, const float *scaled, int size, int is_signed, int maxval, const float Q34, const float rounding)
 
static float find_max_val (int group_len, int swb_size, const float *scaled)
 
static int find_min_book (float maxval, int sf)
 
static float find_form_factor (int group_len, int swb_size, float thresh, const float *scaled, float nzslope)
 
static uint8_t coef2minsf (float coef)
 Return the minimum scalefactor where the quantized coef does not clip. More...
 
static uint8_t coef2maxsf (float coef)
 Return the maximum scalefactor where the quantized coef is not zero. More...
 
static int quant_array_idx (const float val, const float *arr, const int num)
 
static av_always_inline float bval2bmax (float b)
 approximates exp10f(-3.0f*(0.5f + 0.5f * cosf(FFMIN(b,15.5f) / 15.5f))) More...
 
static void ff_init_nextband_map (const SingleChannelElement *sce, uint8_t *nextband)
 
static void ff_nextband_remove (uint8_t *nextband, int prevband, int band)
 
static int ff_sfdelta_can_remove_band (const SingleChannelElement *sce, const uint8_t *nextband, int prev_sf, int band)
 
static int ff_sfdelta_can_replace (const SingleChannelElement *sce, const uint8_t *nextband, int prev_sf, int new_sf, int band)
 
static av_always_inline int lcg_random (unsigned previous_val)
 linear congruential pseudorandom number generator More...
 

Detailed Description

AAC encoder utilities.

Author
Rostislav Pehlivanov ( atomnuker gmail com )

Definition in file aacenc_utils.h.

Macro Definition Documentation

◆ ROUND_STANDARD

#define ROUND_STANDARD   0.4054f

Definition at line 36 of file aacenc_utils.h.

◆ ROUND_TO_ZERO

#define ROUND_TO_ZERO   0.1054f

Definition at line 37 of file aacenc_utils.h.

◆ C_QUANT

#define C_QUANT   0.4054f

Definition at line 38 of file aacenc_utils.h.

Referenced by find_min_book().

◆ ERROR_IF

#define ERROR_IF (   cond,
  ... 
)
Value:
if (cond) { \
av_log(avctx, AV_LOG_ERROR, __VA_ARGS__); \
return AVERROR(EINVAL); \
}
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:176
#define AVERROR(e)
Definition: error.h:43
int(* cond)(enum AVPixelFormat pix_fmt)
Definition: pixdesc_query.c:28

Definition at line 268 of file aacenc_utils.h.

Referenced by aac_encode_init().

◆ WARN_IF

#define WARN_IF (   cond,
  ... 
)
Value:
if (cond) { \
av_log(avctx, AV_LOG_WARNING, __VA_ARGS__); \
}
#define AV_LOG_WARNING
Something somehow does not look correct.
Definition: log.h:182
int(* cond)(enum AVPixelFormat pix_fmt)
Definition: pixdesc_query.c:28

Definition at line 274 of file aacenc_utils.h.

Referenced by aac_encode_init().

Function Documentation

◆ abs_pow34_v()

static void abs_pow34_v ( float *  out,
const float *  in,
const int  size 
)
inlinestatic

Definition at line 40 of file aacenc_utils.h.

Referenced by aac_encode_init().

◆ pos_pow34()

static float pos_pow34 ( float  a)
inlinestatic

Definition at line 49 of file aacenc_utils.h.

Referenced by ff_aac_is_encoding_err().

◆ quant()

static int quant ( float  coef,
const float  Q,
const float  rounding 
)
inlinestatic

Quantize one coefficient.

Returns
absolute value of the quantized coefficient
See also
3GPP TS26.403 5.6.2 "Scalefactor determination"

Definition at line 59 of file aacenc_utils.h.

◆ quantize_bands()

static void quantize_bands ( int out,
const float *  in,
const float *  scaled,
int  size,
int  is_signed,
int  maxval,
const float  Q34,
const float  rounding 
)
inlinestatic

Definition at line 65 of file aacenc_utils.h.

Referenced by aac_encode_init().

◆ find_max_val()

static float find_max_val ( int  group_len,
int  swb_size,
const float *  scaled 
)
inlinestatic

◆ find_min_book()

static int find_min_book ( float  maxval,
int  sf 
)
inlinestatic

◆ find_form_factor()

static float find_form_factor ( int  group_len,
int  swb_size,
float  thresh,
const float *  scaled,
float  nzslope 
)
inlinestatic

compute variance

Definition at line 104 of file aacenc_utils.h.

Referenced by search_for_quantizers_twoloop().

◆ coef2minsf()

static uint8_t coef2minsf ( float  coef)
inlinestatic

Return the minimum scalefactor where the quantized coef does not clip.

Definition at line 157 of file aacenc_utils.h.

Referenced by search_for_quantizers_anmr(), and search_for_quantizers_twoloop().

◆ coef2maxsf()

static uint8_t coef2maxsf ( float  coef)
inlinestatic

Return the maximum scalefactor where the quantized coef is not zero.

Definition at line 163 of file aacenc_utils.h.

Referenced by search_for_quantizers_anmr().

◆ quant_array_idx()

static int quant_array_idx ( const float  val,
const float *  arr,
const int  num 
)
inlinestatic

Definition at line 171 of file aacenc_utils.h.

Referenced by get_lag(), and quantize_coefs().

◆ bval2bmax()

static av_always_inline float bval2bmax ( float  b)
static

approximates exp10f(-3.0f*(0.5f + 0.5f * cosf(FFMIN(b,15.5f) / 15.5f)))

Definition at line 188 of file aacenc_utils.h.

Referenced by search_for_ms().

◆ ff_init_nextband_map()

static void ff_init_nextband_map ( const SingleChannelElement sce,
uint8_t nextband 
)
inlinestatic

Just a safe default

Now really navigate the nonzero band chain

Definition at line 199 of file aacenc_utils.h.

Referenced by ff_aac_search_for_is(), search_for_ms(), search_for_pns(), and search_for_quantizers_twoloop().

◆ ff_nextband_remove()

static void ff_nextband_remove ( uint8_t nextband,
int  prevband,
int  band 
)
inlinestatic

Definition at line 221 of file aacenc_utils.h.

◆ ff_sfdelta_can_remove_band()

static int ff_sfdelta_can_remove_band ( const SingleChannelElement sce,
const uint8_t nextband,
int  prev_sf,
int  band 
)
inlinestatic

◆ ff_sfdelta_can_replace()

static int ff_sfdelta_can_replace ( const SingleChannelElement sce,
const uint8_t nextband,
int  prev_sf,
int  new_sf,
int  band 
)
inlinestatic

Definition at line 246 of file aacenc_utils.h.

Referenced by search_for_ms().

◆ lcg_random()

static av_always_inline int lcg_random ( unsigned  previous_val)
static

linear congruential pseudorandom number generator

Parameters
previous_valpointer to the current state of the generator
Returns
Returns a 32-bit pseudorandom integer

Definition at line 262 of file aacenc_utils.h.