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   -149
 
#define MAX_EXP   126
 
#define ONE_BITS   29
 

Functions

static av_const double av_sf2double (SoftFloat v)
 Convert a SoftFloat to a double precision float. More...
 
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)
 Compares two SoftFloats. More...
 
static av_const int av_gt_sf (SoftFloat a, SoftFloat b)
 Compares two SoftFloats. More...
 
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)
 Converts a SoftFloat to an integer. 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}
 0.0 More...
 
static const SoftFloat FLOAT_05 = { 0x20000000, 0}
 0.5 More...
 
static const SoftFloat FLOAT_1 = { 0x20000000, 1}
 1.0 More...
 
static const SoftFloat FLOAT_EPSILON = { 0x29F16B12, -16}
 A small value. More...
 
static const SoftFloat FLOAT_1584893192 = { 0x32B771ED, 1}
 1.584893192 (10^.2) More...
 
static const SoftFloat FLOAT_100000 = { 0x30D40000, 17}
 100000 More...
 
static const SoftFloat FLOAT_0999999 = { 0x3FFFFBCE, 0}
 0.999999 More...
 

Macro Definition Documentation

#define MIN_EXP   -149

Definition at line 30 of file softfloat.h.

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

#define MAX_EXP   126

Definition at line 31 of file softfloat.h.

Referenced by av_normalize1_sf(), and main().

#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

Convert a SoftFloat to a double precision float.

Definition at line 51 of file softfloat.h.

Referenced by main().

static av_const SoftFloat av_normalize_sf ( SoftFloat  a)
static

Definition at line 57 of file softfloat.h.

Referenced by av_add_sf(), av_int2sf(), and main().

static av_const SoftFloat av_normalize1_sf ( SoftFloat  a)
inlinestatic

Definition at line 79 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 102 of file softfloat.h.

Referenced by main(), 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 116 of file softfloat.h.

Referenced by main(), 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

Compares two SoftFloats.

Returns
< 0 if the first is less > 0 if the first is greater 0 if they are equal

Definition at line 131 of file softfloat.h.

Referenced by main().

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

Compares two SoftFloats.

Returns
1 if a is greater than b, 0 otherwise

Definition at line 143 of file softfloat.h.

Referenced by main(), and sbr_gain_calc().

static av_const SoftFloat av_add_sf ( SoftFloat  a,
SoftFloat  b 
)
inlinestatic
Returns
the sum of 2 SoftFloats.

Definition at line 155 of file softfloat.h.

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

static av_const SoftFloat av_sub_sf ( SoftFloat  a,
SoftFloat  b 
)
inlinestatic
Returns
the difference of 2 SoftFloats.

Definition at line 166 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 176 of file softfloat.h.

Referenced by autocorr_calc(), main(), 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

Converts a SoftFloat to an integer.

Rounding is to -inf.

Definition at line 189 of file softfloat.h.

Referenced by main().

static av_always_inline SoftFloat av_sqrt_sf ( SoftFloat  val)
static

Rounding-to-nearest used.

Definition at line 198 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 231 of file softfloat.h.

Referenced by main(), and ps_tableinit().

Variable Documentation

const SoftFloat FLOAT_0 = { 0, MIN_EXP}
static

0.0

Definition at line 39 of file softfloat.h.

Referenced by av_div_sf(), av_mul_sf(), sbr_env_estimate(), sbr_gain_calc(), and sbr_hf_inverse_filter().

const SoftFloat FLOAT_05 = { 0x20000000, 0}
static

0.5

Definition at line 40 of file softfloat.h.

const SoftFloat FLOAT_1 = { 0x20000000, 1}
static

1.0

Definition at line 41 of file softfloat.h.

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

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

A small value.

Definition at line 42 of file softfloat.h.

Referenced by sbr_gain_calc().

const SoftFloat FLOAT_1584893192 = { 0x32B771ED, 1}
static

1.584893192 (10^.2)

Definition at line 43 of file softfloat.h.

Referenced by sbr_gain_calc().

const SoftFloat FLOAT_100000 = { 0x30D40000, 17}
static

100000

Definition at line 44 of file softfloat.h.

Referenced by sbr_gain_calc().

const SoftFloat FLOAT_0999999 = { 0x3FFFFBCE, 0}
static

0.999999

Definition at line 45 of file softfloat.h.

Referenced by sbr_hf_inverse_filter().