FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions | Variables
softfloat.h File Reference
#include <stdint.h>
#include "common.h"
#include "avassert.h"
#include "softfloat_tables.h"

Go to the source code of this file.

Data Structures

struct  SoftFloat
 

Macros

#define MIN_EXP   -126
 
#define MAX_EXP   126
 
#define ONE_BITS   29
 

Functions

static av_const double av_sf2double (SoftFloat v)
 
static av_const SoftFloat av_normalize_sf (SoftFloat a)
 
static av_const SoftFloat av_normalize1_sf (SoftFloat a)
 
static av_const SoftFloat av_mul_sf (SoftFloat a, SoftFloat b)
 
static av_const SoftFloat av_div_sf (SoftFloat a, SoftFloat b)
 b has to be normalized and not zero. More...
 
static av_const int av_cmp_sf (SoftFloat a, SoftFloat b)
 
static av_const int av_gt_sf (SoftFloat a, SoftFloat b)
 
static av_const SoftFloat av_add_sf (SoftFloat a, SoftFloat b)
 
static av_const SoftFloat av_sub_sf (SoftFloat a, SoftFloat b)
 
static av_const SoftFloat av_int2sf (int v, int frac_bits)
 Converts a mantisse and exponent to a SoftFloat. More...
 
static av_const int av_sf2int (SoftFloat v, int frac_bits)
 Rounding is to -inf. More...
 
static av_always_inline SoftFloat av_sqrt_sf (SoftFloat val)
 Rounding-to-nearest used. More...
 
static av_unused void av_sincos_sf (int a, int *s, int *c)
 Rounding-to-nearest used. More...
 

Variables

static const SoftFloat FLOAT_0 = { 0, MIN_EXP}
 
static const SoftFloat FLOAT_05 = { 0x20000000, 0}
 
static const SoftFloat FLOAT_1 = { 0x20000000, 1}
 
static const SoftFloat FLOAT_EPSILON = { 0x29F16B12, -16}
 
static const SoftFloat FLOAT_1584893192 = { 0x32B771ED, 1}
 
static const SoftFloat FLOAT_100000 = { 0x30D40000, 17}
 
static const SoftFloat FLOAT_0999999 = { 0x3FFFFBCE, 0}
 

Macro Definition Documentation

#define MIN_EXP   -126

Definition at line 30 of file softfloat.h.

Referenced by av_div_sf(), av_mul_sf(), av_normalize_sf(), and av_sqrt_sf().

#define MAX_EXP   126

Definition at line 31 of file softfloat.h.

Referenced by av_normalize1_sf().

#define ONE_BITS   29

Definition at line 32 of file softfloat.h.

Referenced by av_div_sf(), av_int2sf(), av_mul_sf(), av_normalize_sf(), av_sf2double(), and av_sf2int().

Function Documentation

static av_const double av_sf2double ( SoftFloat  v)
inlinestatic

Definition at line 47 of file softfloat.h.

static av_const SoftFloat av_normalize_sf ( SoftFloat  a)
static

Definition at line 53 of file softfloat.h.

Referenced by av_add_sf(), and av_int2sf().

static av_const SoftFloat av_normalize1_sf ( SoftFloat  a)
inlinestatic

Definition at line 75 of file softfloat.h.

Referenced by av_add_sf(), av_div_sf(), av_int2sf(), and av_mul_sf().

static av_const SoftFloat av_mul_sf ( SoftFloat  a,
SoftFloat  b 
)
inlinestatic
Returns
Will not be more denormalized than a*b. So if either input is normalized, then the output will not be worse then the other input. If both are normalized, then the output will be normalized.

Definition at line 98 of file softfloat.h.

Referenced by predict(), sbr_dequant(), sbr_env_estimate(), sbr_gain_calc(), sbr_hf_assemble(), and sbr_hf_inverse_filter().

static av_const SoftFloat av_div_sf ( SoftFloat  a,
SoftFloat  b 
)
inlinestatic

b has to be normalized and not zero.

Returns
Will not be more denormalized than a.

Definition at line 112 of file softfloat.h.

Referenced by predict(), ps_tableinit(), sbr_dequant(), sbr_gain_calc(), and sbr_hf_inverse_filter().

static av_const int av_cmp_sf ( SoftFloat  a,
SoftFloat  b 
)
inlinestatic

Definition at line 121 of file softfloat.h.

static av_const int av_gt_sf ( SoftFloat  a,
SoftFloat  b 
)
inlinestatic

Definition at line 129 of file softfloat.h.

Referenced by sbr_gain_calc().

static av_const SoftFloat av_add_sf ( SoftFloat  a,
SoftFloat  b 
)
inlinestatic
static av_const SoftFloat av_sub_sf ( SoftFloat  a,
SoftFloat  b 
)
inlinestatic

Definition at line 146 of file softfloat.h.

Referenced by predict(), and sbr_hf_inverse_filter().

static av_const SoftFloat av_int2sf ( int  v,
int  frac_bits 
)
inlinestatic

Converts a mantisse and exponent to a SoftFloat.

Returns
a SoftFloat with value v * 2^frac_bits

Definition at line 156 of file softfloat.h.

Referenced by autocorr_calc(), predict(), ps_tableinit(), sbr_env_estimate(), sbr_gain_calc(), and sbr_sum_square_c().

static av_const int av_sf2int ( SoftFloat  v,
int  frac_bits 
)
inlinestatic

Rounding is to -inf.

Definition at line 168 of file softfloat.h.

static av_always_inline SoftFloat av_sqrt_sf ( SoftFloat  val)
static

Rounding-to-nearest used.

Definition at line 177 of file softfloat.h.

Referenced by ps_tableinit(), and sbr_gain_calc().

static av_unused void av_sincos_sf ( int  a,
int *  s,
int *  c 
)
static

Rounding-to-nearest used.

Definition at line 210 of file softfloat.h.

Referenced by ps_tableinit().

Variable Documentation

const SoftFloat FLOAT_0 = { 0, MIN_EXP}
static
const SoftFloat FLOAT_05 = { 0x20000000, 0}
static

Definition at line 40 of file softfloat.h.

const SoftFloat FLOAT_1 = { 0x20000000, 1}
static

Definition at line 41 of file softfloat.h.

Referenced by ps_tableinit(), sbr_dequant(), and sbr_gain_calc().

const SoftFloat FLOAT_EPSILON = { 0x29F16B12, -16}
static

Definition at line 42 of file softfloat.h.

Referenced by sbr_gain_calc().

const SoftFloat FLOAT_1584893192 = { 0x32B771ED, 1}
static

Definition at line 43 of file softfloat.h.

Referenced by sbr_gain_calc().

const SoftFloat FLOAT_100000 = { 0x30D40000, 17}
static

Definition at line 44 of file softfloat.h.

Referenced by sbr_gain_calc().

const SoftFloat FLOAT_0999999 = { 0x3FFFFBCE, 0}
static

Definition at line 45 of file softfloat.h.

Referenced by sbr_hf_inverse_filter().