mpegaudiotab.h 2.55 KB
Newer Older
Fabrice Bellard's avatar
Fabrice Bellard committed
1 2 3 4
/*
 * mpeg audio layer 2 tables. Most of them come from the mpeg audio
 * specification.
 * 
5
 * Copyright (c) 2000, 2001 Fabrice Bellard.
Fabrice Bellard's avatar
Fabrice Bellard committed
6 7 8 9 10
 *
 * The licence of this code is contained in file LICENCE found in the
 * same archive 
 */

Michael Niedermayer's avatar
Michael Niedermayer committed
11 12 13 14 15 16
/**
 * @file mpegaudiotab.h
 * mpeg audio layer 2 tables. 
 * Most of them come from the mpeg audio specification.
 */
 
Fabrice Bellard's avatar
Fabrice Bellard committed
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
#define SQRT2 1.41421356237309514547

static const int costab32[30] = {
    FIX(0.54119610014619701222),
    FIX(1.3065629648763763537),
    
    FIX(0.50979557910415917998),
    FIX(2.5629154477415054814),
    FIX(0.89997622313641556513),
    FIX(0.60134488693504528634),
    
    FIX(0.5024192861881556782),
    FIX(5.1011486186891552563),
    FIX(0.78815462345125020249),
    FIX(0.64682178335999007679),
    FIX(0.56694403481635768927),
    FIX(1.0606776859903470633),
    FIX(1.7224470982383341955),
    FIX(0.52249861493968885462),
    
    FIX(10.19000812354803287),
    FIX(0.674808341455005678),
    FIX(1.1694399334328846596),
    FIX(0.53104259108978413284),
    FIX(2.0577810099534108446),
    FIX(0.58293496820613388554),
    FIX(0.83934964541552681272),
    FIX(0.50547095989754364798),
    FIX(3.4076084184687189804),
    FIX(0.62250412303566482475),
    FIX(0.97256823786196078263),
    FIX(0.51544730992262455249),
    FIX(1.4841646163141661852),
    FIX(0.5531038960344445421),
    FIX(0.74453627100229857749),
    FIX(0.5006029982351962726),
};

static const int bitinv32[32] = {
    0,  16,  8, 24,  4,  20,  12,  28,
    2,  18, 10, 26,  6,  22,  14,  30,
    1,  17,  9, 25,  5,  21,  13,  29,
    3,  19, 11, 27,  7,  23,  15,  31
};


63
static int16_t filter_bank[512];
Fabrice Bellard's avatar
Fabrice Bellard committed
64 65 66 67 68

static int scale_factor_table[64];
#ifdef USE_FLOATS
static float scale_factor_inv_table[64];
#else
69
static int8_t scale_factor_shift[64];
Fabrice Bellard's avatar
Fabrice Bellard committed
70 71 72 73
static unsigned short scale_factor_mult[64];
#endif
static unsigned char scale_diff_table[128];

74 75
/* total number of bits per allocation group */
static unsigned short total_quant_bits[17];
Fabrice Bellard's avatar
Fabrice Bellard committed
76 77 78 79 80 81 82 83 84 85 86 87 88 89

/* signal to noise ratio of each quantification step (could be
   computed from quant_steps[]). The values are dB multiplied by 10 
*/
static unsigned short quant_snr[17] = { 
     70, 110, 160, 208,
    253, 316, 378, 439,
    499, 559, 620, 680, 
    740, 800, 861, 920, 
    980
};

/* fixed psycho acoustic model. Values of SNR taken from the 'toolame'
   project */
90
static const float fixed_smr[SBLIMIT] =  {
Fabrice Bellard's avatar
Fabrice Bellard committed
91 92 93 94 95 96
    30, 17, 16, 10, 3, 12, 8, 2.5,
    5, 5, 6, 6, 5, 6, 10, 6,
    -4, -10, -21, -30, -42, -55, -68, -75,
    -75, -75, -75, -75, -91, -107, -110, -108
};

97 98
static const unsigned char nb_scale_factors[4] = { 3, 2, 1, 2 };