FFmpeg
Loading...
Searching...
No Matches
aacenc_utils.h File Reference

AAC encoder utilities. More...

#include "libavutil/ffmath.h"
#include "aacenc.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 float pos_pow34 (float a)
 
static int quant (float coef, const float Q, const float rounding)
 Quantize one coefficient.
 
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.
 
static uint8_t coef2maxsf (float coef)
 Return the maximum scalefactor where the quantized coef is not zero.
 
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)))
 
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
 

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.

Referenced by test_quant_bands().

◆ ROUND_TO_ZERO

#define ROUND_TO_ZERO   0.1054f

Definition at line 37 of file aacenc_utils.h.

Referenced by test_quant_bands().

◆ 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 AVERROR(e)
Definition error.h:45
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition log.h:210
int(* cond)(enum AVPixelFormat pix_fmt)

Definition at line 244 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:216

Definition at line 250 of file aacenc_utils.h.

Referenced by aac_encode_init().

Function Documentation

◆ pos_pow34()

static float pos_pow34 ( float a)
inlinestatic

Definition at line 40 of file aacenc_utils.h.

Referenced by 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 50 of file aacenc_utils.h.

◆ 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 80 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 133 of file aacenc_utils.h.

Referenced by nmr_setup_channel(), 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 139 of file aacenc_utils.h.

◆ quant_array_idx()

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

Definition at line 147 of file aacenc_utils.h.

Referenced by 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 164 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 175 of file aacenc_utils.h.

Referenced by ff_aac_search_for_is(), nmr_commit_channel(), 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 197 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 222 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 238 of file aacenc_utils.h.