ffmpeg / libavcodec / mpegaudiotab.h @ 5b21bdab
History | View | Annotate | Download (3.33 KB)
1 |
/*
|
---|---|
2 |
* mpeg audio layer 2 tables. Most of them come from the mpeg audio
|
3 |
* specification.
|
4 |
*
|
5 |
* Copyright (c) 2000, 2001 Fabrice Bellard.
|
6 |
*
|
7 |
* This file is part of FFmpeg.
|
8 |
*
|
9 |
* FFmpeg is free software; you can redistribute it and/or
|
10 |
* modify it under the terms of the GNU Lesser General Public
|
11 |
* License as published by the Free Software Foundation; either
|
12 |
* version 2.1 of the License, or (at your option) any later version.
|
13 |
*
|
14 |
* FFmpeg is distributed in the hope that it will be useful,
|
15 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
17 |
* Lesser General Public License for more details.
|
18 |
*
|
19 |
* You should have received a copy of the GNU Lesser General Public
|
20 |
* License along with FFmpeg; if not, write to the Free Software
|
21 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
22 |
*/
|
23 |
|
24 |
/**
|
25 |
* @file mpegaudiotab.h
|
26 |
* mpeg audio layer 2 tables.
|
27 |
* Most of them come from the mpeg audio specification.
|
28 |
*/
|
29 |
|
30 |
#ifndef FFMPEG_MPEGAUDIOTAB_H
|
31 |
#define FFMPEG_MPEGAUDIOTAB_H
|
32 |
|
33 |
#include <stdint.h> |
34 |
#include "mpegaudio.h" |
35 |
|
36 |
#define SQRT2 1.41421356237309514547 |
37 |
|
38 |
static const int costab32[30] = { |
39 |
FIX(0.54119610014619701222), |
40 |
FIX(1.3065629648763763537), |
41 |
|
42 |
FIX(0.50979557910415917998), |
43 |
FIX(2.5629154477415054814), |
44 |
FIX(0.89997622313641556513), |
45 |
FIX(0.60134488693504528634), |
46 |
|
47 |
FIX(0.5024192861881556782), |
48 |
FIX(5.1011486186891552563), |
49 |
FIX(0.78815462345125020249), |
50 |
FIX(0.64682178335999007679), |
51 |
FIX(0.56694403481635768927), |
52 |
FIX(1.0606776859903470633), |
53 |
FIX(1.7224470982383341955), |
54 |
FIX(0.52249861493968885462), |
55 |
|
56 |
FIX(10.19000812354803287), |
57 |
FIX(0.674808341455005678), |
58 |
FIX(1.1694399334328846596), |
59 |
FIX(0.53104259108978413284), |
60 |
FIX(2.0577810099534108446), |
61 |
FIX(0.58293496820613388554), |
62 |
FIX(0.83934964541552681272), |
63 |
FIX(0.50547095989754364798), |
64 |
FIX(3.4076084184687189804), |
65 |
FIX(0.62250412303566482475), |
66 |
FIX(0.97256823786196078263), |
67 |
FIX(0.51544730992262455249), |
68 |
FIX(1.4841646163141661852), |
69 |
FIX(0.5531038960344445421), |
70 |
FIX(0.74453627100229857749), |
71 |
FIX(0.5006029982351962726), |
72 |
}; |
73 |
|
74 |
static const int bitinv32[32] = { |
75 |
0, 16, 8, 24, 4, 20, 12, 28, |
76 |
2, 18, 10, 26, 6, 22, 14, 30, |
77 |
1, 17, 9, 25, 5, 21, 13, 29, |
78 |
3, 19, 11, 27, 7, 23, 15, 31 |
79 |
}; |
80 |
|
81 |
|
82 |
static int16_t filter_bank[512]; |
83 |
|
84 |
static int scale_factor_table[64]; |
85 |
#ifdef USE_FLOATS
|
86 |
static float scale_factor_inv_table[64]; |
87 |
#else
|
88 |
static int8_t scale_factor_shift[64]; |
89 |
static unsigned short scale_factor_mult[64]; |
90 |
#endif
|
91 |
static unsigned char scale_diff_table[128]; |
92 |
|
93 |
/* total number of bits per allocation group */
|
94 |
static unsigned short total_quant_bits[17]; |
95 |
|
96 |
/* signal to noise ratio of each quantification step (could be
|
97 |
computed from quant_steps[]). The values are dB multiplied by 10
|
98 |
*/
|
99 |
static const unsigned short quant_snr[17] = { |
100 |
70, 110, 160, 208, |
101 |
253, 316, 378, 439, |
102 |
499, 559, 620, 680, |
103 |
740, 800, 861, 920, |
104 |
980
|
105 |
}; |
106 |
|
107 |
/* fixed psycho acoustic model. Values of SNR taken from the 'toolame'
|
108 |
project */
|
109 |
static const float fixed_smr[SBLIMIT] = { |
110 |
30, 17, 16, 10, 3, 12, 8, 2.5, |
111 |
5, 5, 6, 6, 5, 6, 10, 6, |
112 |
-4, -10, -21, -30, -42, -55, -68, -75, |
113 |
-75, -75, -75, -75, -91, -107, -110, -108 |
114 |
}; |
115 |
|
116 |
static const unsigned char nb_scale_factors[4] = { 3, 2, 1, 2 }; |
117 |
|
118 |
#endif /* FFMPEG_MPEGAUDIOTAB_H */ |