FFmpeg
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

#define ROUND_STANDARD   0.4054f

Definition at line 36 of file aacenc_utils.h.

#define ROUND_TO_ZERO   0.1054f

Definition at line 37 of file aacenc_utils.h.

#define C_QUANT   0.4054f

Definition at line 38 of file aacenc_utils.h.

Referenced by find_min_book().

#define ERROR_IF (   cond,
  ... 
)
Value:
if (cond) { \
av_log(avctx, AV_LOG_ERROR, __VA_ARGS__); \
return AVERROR(EINVAL); \
}
#define av_log(a,...)
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:176
int(* cond)(enum AVPixelFormat pix_fmt)
Definition: pixdesc_query.c:28
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return or at least make progress towards producing a it should return
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining all references to the list are updated That means that if a filter requires that its input and output have the same format amongst a supported all it has to do is use a reference to the same list of formats query_formats can leave some formats unset and return AVERROR(EAGAIN) to cause the negotiation mechanism toagain later.That can be used by filters with complex requirements to use the format negotiated on one link to set the formats supported on another.Frame references ownership and permissions

Definition at line 268 of file aacenc_utils.h.

Referenced by aac_encode_init().

#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
#define av_log(a,...)
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

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().

static float pos_pow34 ( float  a)
inlinestatic

Definition at line 49 of file aacenc_utils.h.

Referenced by ff_aac_is_encoding_err().

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.

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().

static float find_max_val ( int  group_len,
int  swb_size,
const float *  scaled 
)
inlinestatic
static int find_min_book ( float  maxval,
int  sf 
)
inlinestatic
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().

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().

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().

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().

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().

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().

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

Definition at line 221 of file aacenc_utils.h.

static int ff_sfdelta_can_remove_band ( const SingleChannelElement sce,
const uint8_t nextband,
int  prev_sf,
int  band 
)
inlinestatic
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().

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.