annotate qdm2data.h @ 3404:0f56ae23d338 libavcodec

Optimizations suggested by Michael Niedermayer
author kostya
date Tue, 04 Jul 2006 15:33:28 +0000
parents 0b546eab515d
children 5d17415fb535
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2914
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
1 /*
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
2 * QDM2 compatible decoder
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
3 * Copyright (c) 2003 Ewald Snel
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
4 * Copyright (c) 2005 Benjamin Larsson
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
5 * Copyright (c) 2005 Alex Beregszaszi
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
6 * Copyright (c) 2005 Roberto Togni
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
7 *
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
8 * This library is free software; you can redistribute it and/or
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
9 * modify it under the terms of the GNU Lesser General Public
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
10 * License as published by the Free Software Foundation; either
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
11 * version 2 of the License, or (at your option) any later version.
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
12 *
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
13 * This library is distributed in the hope that it will be useful,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
16 * Lesser General Public License for more details.
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
17 *
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
18 * You should have received a copy of the GNU Lesser General Public
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
19 * License along with this library; if not, write to the Free Software
3036
0b546eab515d Update licensing information: The FSF changed postal address.
diego
parents: 2967
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
2914
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
21 *
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
22 */
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2914
diff changeset
23
2914
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
24 /**
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
25 * @file qdm2data.h
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
26 * Various QDM2 tables.
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
27 */
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
28
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
29 #ifndef QDM2DATA_H
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
30 #define QDM2DATA_H
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
31
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
32 /** VLC TABLES **/
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
33
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
34 /* values in this table range from -1..23; adjust retrieved value by -1 */
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
35 static uint16_t vlc_tab_level_huffcodes[24] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
36 0x037c, 0x0004, 0x003c, 0x004c, 0x003a, 0x002c, 0x001c, 0x001a,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
37 0x0024, 0x0014, 0x0001, 0x0002, 0x0000, 0x0003, 0x0007, 0x0005,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
38 0x0006, 0x0008, 0x0009, 0x000a, 0x000c, 0x00fc, 0x007c, 0x017c
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
39 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
40
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
41 static uint8_t vlc_tab_level_huffbits[24] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
42 10, 6, 7, 7, 6, 6, 6, 6, 6, 5, 4, 4, 4, 3, 3, 3, 3, 4, 4, 5, 7, 8, 9, 10
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
43 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
44
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
45 /* values in this table range from -1..36; adjust retrieved value by -1 */
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
46 static uint16_t vlc_tab_diff_huffcodes[37] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
47 0x1c57, 0x0004, 0x0000, 0x0001, 0x0003, 0x0002, 0x000f, 0x000e,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
48 0x0007, 0x0016, 0x0037, 0x0027, 0x0026, 0x0066, 0x0006, 0x0097,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
49 0x0046, 0x01c6, 0x0017, 0x0786, 0x0086, 0x0257, 0x00d7, 0x0357,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
50 0x00c6, 0x0386, 0x0186, 0x0000, 0x0157, 0x0c57, 0x0057, 0x0000,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
51 0x0b86, 0x0000, 0x1457, 0x0000, 0x0457
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
52 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
53
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
54 static uint8_t vlc_tab_diff_huffbits[37] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
55 13, 3, 3, 2, 3, 3, 4, 4, 6, 5, 6, 6, 7, 7, 8, 8,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
56 8, 9, 8, 11, 9, 10, 8, 10, 9, 12, 10, 0, 10, 13, 11, 0,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
57 12, 0, 13, 0, 13
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
58 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
59
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
60 /* values in this table range from -1..5; adjust retrieved value by -1 */
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
61 static uint8_t vlc_tab_run_huffcodes[6] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
62 0x1f, 0x00, 0x01, 0x03, 0x07, 0x0f
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
63 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
64
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
65 static uint8_t vlc_tab_run_huffbits[6] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
66 5, 1, 2, 3, 4, 5
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
67 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
68
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
69 /* values in this table range from -1..19; adjust retrieved value by -1 */
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
70 static uint16_t vlc_tab_tone_level_idx_hi1_huffcodes[20] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
71 0x5714, 0x000c, 0x0002, 0x0001, 0x0000, 0x0004, 0x0034, 0x0054,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
72 0x0094, 0x0014, 0x0114, 0x0214, 0x0314, 0x0614, 0x0e14, 0x0f14,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
73 0x2714, 0x0714, 0x1714, 0x3714
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
74 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
75
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
76 static uint8_t vlc_tab_tone_level_idx_hi1_huffbits[20] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
77 15, 4, 2, 1, 3, 5, 6, 7, 8, 10, 10, 11, 11, 12, 12, 12, 14, 14, 15, 14
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
78 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
79
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
80 /* values in this table range from -1..23; adjust retrieved value by -1 */
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
81 static uint16_t vlc_tab_tone_level_idx_mid_huffcodes[24] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
82 0x0fea, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
83 0x0000, 0x0000, 0x0000, 0x0000, 0x03ea, 0x00ea, 0x002a, 0x001a,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
84 0x0006, 0x0001, 0x0000, 0x0002, 0x000a, 0x006a, 0x01ea, 0x07ea
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
85 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
86
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
87 static uint8_t vlc_tab_tone_level_idx_mid_huffbits[24] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
88 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 9, 7, 5, 3, 1, 2, 4, 6, 8, 10, 12
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
89 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
90
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
91 /* values in this table range from -1..23; adjust retrieved value by -1 */
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
92 static uint16_t vlc_tab_tone_level_idx_hi2_huffcodes[24] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
93 0x0664, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0064, 0x00e4,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
94 0x00a4, 0x0068, 0x0004, 0x0008, 0x0014, 0x0018, 0x0000, 0x0001,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
95 0x0002, 0x0003, 0x000c, 0x0028, 0x0024, 0x0164, 0x0000, 0x0264
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
96 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
97
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
98 static uint8_t vlc_tab_tone_level_idx_hi2_huffbits[24] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
99 11, 0, 0, 0, 0, 0, 10, 8, 8, 7, 6, 6, 5, 5, 4, 2, 2, 2, 4, 7, 8, 9, 0, 11
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
100 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
101
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
102 /* values in this table range from -1..8; adjust retrieved value by -1 */
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
103 static uint8_t vlc_tab_type30_huffcodes[9] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
104 0x3c, 0x06, 0x00, 0x01, 0x03, 0x02, 0x04, 0x0c, 0x1c
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
105 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
106
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
107 static uint8_t vlc_tab_type30_huffbits[9] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
108 6, 3, 3, 2, 2, 3, 4, 5, 6
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
109 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
110
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
111 /* values in this table range from -1..9; adjust retrieved value by -1 */
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
112 static uint8_t vlc_tab_type34_huffcodes[10] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
113 0x18, 0x00, 0x01, 0x04, 0x05, 0x07, 0x03, 0x02, 0x06, 0x08
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
114 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
115
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
116 static uint8_t vlc_tab_type34_huffbits[10] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
117 5, 4, 3, 3, 3, 3, 3, 3, 3, 5
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
118 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
119
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
120 /* values in this table range from -1..22; adjust retrieved value by -1 */
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
121 static uint16_t vlc_tab_fft_tone_offset_0_huffcodes[23] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
122 0x038e, 0x0001, 0x0000, 0x0022, 0x000a, 0x0006, 0x0012, 0x0002,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
123 0x001e, 0x003e, 0x0056, 0x0016, 0x000e, 0x0032, 0x0072, 0x0042,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
124 0x008e, 0x004e, 0x00f2, 0x002e, 0x0036, 0x00c2, 0x018e
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
125 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
126
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
127 static uint8_t vlc_tab_fft_tone_offset_0_huffbits[23] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
128 10, 1, 2, 6, 4, 5, 6, 7, 6, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 6, 6, 8, 10
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
129 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
130
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
131 /* values in this table range from -1..27; adjust retrieved value by -1 */
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
132 static uint16_t vlc_tab_fft_tone_offset_1_huffcodes[28] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
133 0x07a4, 0x0001, 0x0020, 0x0012, 0x001c, 0x0008, 0x0006, 0x0010,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
134 0x0000, 0x0014, 0x0004, 0x0032, 0x0070, 0x000c, 0x0002, 0x003a,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
135 0x001a, 0x002c, 0x002a, 0x0022, 0x0024, 0x000a, 0x0064, 0x0030,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
136 0x0062, 0x00a4, 0x01a4, 0x03a4
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
137 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
138
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
139 static uint8_t vlc_tab_fft_tone_offset_1_huffbits[28] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
140 11, 1, 6, 6, 5, 4, 3, 6, 6, 5, 6, 6, 7, 6, 6, 6,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
141 6, 6, 6, 7, 8, 6, 7, 7, 7, 9, 10, 11
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
142 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
143
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
144 /* values in this table range from -1..31; adjust retrieved value by -1 */
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
145 static uint16_t vlc_tab_fft_tone_offset_2_huffcodes[32] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
146 0x1760, 0x0001, 0x0000, 0x0082, 0x000c, 0x0006, 0x0003, 0x0007,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
147 0x0008, 0x0004, 0x0010, 0x0012, 0x0022, 0x001a, 0x0000, 0x0020,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
148 0x000a, 0x0040, 0x004a, 0x006a, 0x002a, 0x0042, 0x0002, 0x0060,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
149 0x00aa, 0x00e0, 0x00c2, 0x01c2, 0x0160, 0x0360, 0x0760, 0x0f60
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
150 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
151
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
152 static uint8_t vlc_tab_fft_tone_offset_2_huffbits[32] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
153 13, 2, 0, 8, 4, 3, 3, 3, 4, 4, 5, 5, 6, 5, 7, 7,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
154 7, 7, 7, 7, 8, 8, 8, 9, 8, 8, 9, 9, 10, 11, 13, 12
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
155 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
156
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
157 /* values in this table range from -1..34; adjust retrieved value by -1 */
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
158 static uint16_t vlc_tab_fft_tone_offset_3_huffcodes[35] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
159 0x33ea, 0x0005, 0x0000, 0x000c, 0x0000, 0x0006, 0x0003, 0x0008,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
160 0x0002, 0x0001, 0x0004, 0x0007, 0x001a, 0x000f, 0x001c, 0x002c,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
161 0x000a, 0x001d, 0x002d, 0x002a, 0x000d, 0x004c, 0x008c, 0x006a,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
162 0x00cd, 0x004d, 0x00ea, 0x020c, 0x030c, 0x010c, 0x01ea, 0x07ea,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
163 0x0bea, 0x03ea, 0x13ea
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
164 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
165
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
166 static uint8_t vlc_tab_fft_tone_offset_3_huffbits[35] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
167 14, 4, 0, 10, 4, 3, 3, 4, 4, 3, 4, 4, 5, 4, 5, 6,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
168 6, 5, 6, 7, 7, 7, 8, 8, 8, 8, 9, 10, 10, 10, 10, 11,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
169 12, 13, 14
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
170 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
171
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
172 /* values in this table range from -1..37; adjust retrieved value by -1 */
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
173 static uint16_t vlc_tab_fft_tone_offset_4_huffcodes[38] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
174 0x5282, 0x0016, 0x0000, 0x0136, 0x0004, 0x0000, 0x0007, 0x000a,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
175 0x000e, 0x0003, 0x0001, 0x000d, 0x0006, 0x0009, 0x0012, 0x0005,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
176 0x0025, 0x0022, 0x0015, 0x0002, 0x0076, 0x0035, 0x0042, 0x00c2,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
177 0x0182, 0x00b6, 0x0036, 0x03c2, 0x0482, 0x01c2, 0x0682, 0x0882,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
178 0x0a82, 0x0082, 0x0282, 0x1282, 0x3282, 0x2282
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
179 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
180
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
181 static uint8_t vlc_tab_fft_tone_offset_4_huffbits[38] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
182 15, 6, 0, 9, 3, 3, 3, 4, 4, 3, 4, 4, 5, 4, 5, 6,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
183 6, 6, 6, 8, 7, 6, 8, 9, 9, 8, 9, 10, 11, 10, 11, 12,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
184 12, 12, 14, 15, 14, 14
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
185 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
186
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
187 /** FFT TABLES **/
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
188
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
189 /* values in this table range from -1..27; adjust retrieved value by -1 */
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
190 static uint16_t fft_level_exp_alt_huffcodes[28] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
191 0x1ec6, 0x0006, 0x00c2, 0x0142, 0x0242, 0x0246, 0x00c6, 0x0046,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
192 0x0042, 0x0146, 0x00a2, 0x0062, 0x0026, 0x0016, 0x000e, 0x0005,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
193 0x0004, 0x0003, 0x0000, 0x0001, 0x000a, 0x0012, 0x0002, 0x0022,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
194 0x01c6, 0x02c6, 0x06c6, 0x0ec6
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
195 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
196
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
197 static uint8_t fft_level_exp_alt_huffbits[28] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
198 13, 7, 8, 9, 10, 10, 10, 10, 10, 9, 8, 7, 6, 5, 4, 3,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
199 3, 2, 3, 3, 4, 5, 7, 8, 9, 11, 12, 13
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
200 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
201
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
202 /* values in this table range from -1..19; adjust retrieved value by -1 */
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
203 static uint16_t fft_level_exp_huffcodes[20] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
204 0x0f24, 0x0001, 0x0002, 0x0000, 0x0006, 0x0005, 0x0007, 0x000c,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
205 0x000b, 0x0014, 0x0013, 0x0004, 0x0003, 0x0023, 0x0064, 0x00a4,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
206 0x0024, 0x0124, 0x0324, 0x0724
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
207 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
208
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
209 static uint8_t fft_level_exp_huffbits[20] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
210 12, 3, 3, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, 8, 9, 10, 11, 12
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
211 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
212
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
213 /* values in this table range from -1..6; adjust retrieved value by -1 */
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
214 static uint8_t fft_stereo_exp_huffcodes[7] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
215 0x3e, 0x01, 0x00, 0x02, 0x06, 0x0e, 0x1e
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
216 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
217
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
218 static uint8_t fft_stereo_exp_huffbits[7] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
219 6, 1, 2, 3, 4, 5, 6
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
220 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
221
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
222 /* values in this table range from -1..8; adjust retrieved value by -1 */
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
223 static uint8_t fft_stereo_phase_huffcodes[9] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
224 0x35, 0x02, 0x00, 0x01, 0x0d, 0x15, 0x05, 0x09, 0x03
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
225 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
226
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
227 static uint8_t fft_stereo_phase_huffbits[9] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
228 6, 2, 2, 4, 4, 6, 5, 4, 2
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
229 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
230
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
231 static const int fft_cutoff_index_table[4][2] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
232 { 1, 2 }, {-1, 0 }, {-1,-2 }, { 0, 0 }
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
233 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
234
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
235 static const int16_t fft_level_index_table[256] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
236 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
237 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
238 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
239 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
240 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
241 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
242 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
243 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
244 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
245 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
246 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
247 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
248 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
249 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
250 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
251 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
252 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
253
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
254 static uint8_t last_coeff[3] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
255 4, 7, 10
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
256 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
257
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
258 static uint8_t coeff_per_sb_for_avg[3][30] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
259 { 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
260 { 0, 1, 2, 2, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
261 { 0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9 }
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
262 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
263
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
264 static uint32_t dequant_table[3][10][30] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
265 { { 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
266 { 0, 256, 256, 205, 154, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
267 { 0, 0, 0, 51, 102, 154, 205, 256, 238, 219, 201, 183, 165, 146, 128, 110, 91, 73, 55, 37, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
268 { 0, 0, 0, 0, 0, 0, 0, 0, 18, 37, 55, 73, 91, 110, 128, 146, 165, 183, 201, 219, 238, 256, 228, 199, 171, 142, 114, 85, 57, 28 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
269 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
270 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
271 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
272 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
273 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
274 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
275 { { 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
276 { 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
277 { 0, 0, 256, 171, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
278 { 0, 0, 0, 85, 171, 256, 171, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
279 { 0, 0, 0, 0, 0, 0, 85, 171, 256, 219, 183, 146, 110, 73, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
280 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 73, 110, 146, 183, 219, 256, 228, 199, 171, 142, 114, 85, 57, 28, 0, 0, 0, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
281 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 57, 85, 114, 142, 171, 199, 228, 256, 213, 171, 128, 85, 43 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
282 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
283 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
284 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
285 { { 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
286 { 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
287 { 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
288 { 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
289 { 0, 0, 0, 0, 256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
290 { 0, 0, 0, 0, 0, 0, 256, 171, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
291 { 0, 0, 0, 0, 0, 0, 0, 85, 171, 256, 192, 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
292 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 128, 192, 256, 205, 154, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
293 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 102, 154, 205, 256, 213, 171, 128, 85, 43, 0, 0, 0, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
294 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 85, 128, 171, 213, 256, 213, 171, 128, 85, 43 } }
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
295 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
296
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
297 static uint8_t coeff_per_sb_for_dequant[3][30] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
298 { 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
299 { 0, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
300 { 0, 1, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9 }
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
301 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
302
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
303 /* first index is subband, 2nd index is 0, 1 or 3 (2 is unused) */
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
304 static int8_t tone_level_idx_offset_table[30][4] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
305 { -50, -50, 0, -50 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
306 { -50, -50, 0, -50 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
307 { -50, -9, 0, -19 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
308 { -16, -6, 0, -12 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
309 { -11, -4, 0, -8 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
310 { -8, -3, 0, -6 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
311 { -7, -3, 0, -5 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
312 { -6, -2, 0, -4 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
313 { -5, -2, 0, -3 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
314 { -4, -1, 0, -3 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
315 { -4, -1, 0, -2 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
316 { -3, -1, 0, -2 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
317 { -3, -1, 0, -2 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
318 { -3, -1, 0, -2 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
319 { -2, -1, 0, -1 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
320 { -2, -1, 0, -1 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
321 { -2, -1, 0, -1 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
322 { -2, 0, 0, -1 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
323 { -2, 0, 0, -1 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
324 { -1, 0, 0, -1 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
325 { -1, 0, 0, -1 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
326 { -1, 0, 0, -1 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
327 { -1, 0, 0, -1 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
328 { -1, 0, 0, -1 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
329 { -1, 0, 0, -1 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
330 { -1, 0, 0, -1 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
331 { -1, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
332 { -1, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
333 { -1, 0, 0, 0 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
334 { -1, 0, 0, 0 }
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
335 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
336
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
337 /* all my samples have 1st index 0 or 1 */
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
338 /* second index is subband, only indexes 0-29 seem to be used */
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
339 static int8_t coding_method_table[5][30] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
340 { 34, 30, 24, 24, 16, 16, 16, 16, 10, 10, 10, 10, 10, 10, 10,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
341 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
342 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
343 { 34, 30, 24, 24, 16, 16, 16, 16, 10, 10, 10, 10, 10, 10, 10,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
344 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
345 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
346 { 34, 30, 30, 30, 24, 24, 16, 16, 16, 16, 16, 16, 10, 10, 10,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
347 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
348 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
349 { 34, 34, 30, 30, 24, 24, 24, 24, 16, 16, 16, 16, 16, 16, 16,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
350 16, 16, 16, 16, 16, 16, 16, 10, 10, 10, 10, 10, 10, 10, 10
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
351 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
352 { 34, 34, 30, 30, 30, 30, 30, 30, 24, 24, 24, 24, 24, 24, 24,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
353 24, 24, 24, 24, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
354 },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
355 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
356
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
357 static const int vlc_stage3_values[60] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
358 0, 1, 2, 3, 4, 6, 8, 10, 12, 16, 20, 24,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
359 28, 36, 44, 52, 60, 76, 92, 108, 124, 156, 188, 220,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
360 252, 316, 380, 444, 508, 636, 764, 892, 1020, 1276, 1532, 1788,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
361 2044, 2556, 3068, 3580, 4092, 5116, 6140, 7164, 8188, 10236, 12284, 14332,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
362 16380, 20476, 24572, 28668, 32764, 40956, 49148, 57340, 65532, 81916, 98300,114684
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
363 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
364
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
365 static const float fft_tone_sample_table[4][16][5] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
366 { { .0100000000f,-.0037037037f,-.0020000000f,-.0069444444f,-.0018416207f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
367 { .0416666667f, .0000000000f, .0000000000f,-.0208333333f,-.0123456791f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
368 { .1250000000f, .0558035709f, .0330687836f,-.0164473690f,-.0097465888f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
369 { .1562500000f, .0625000000f, .0370370370f,-.0062500000f,-.0037037037f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
370 { .1996007860f, .0781250000f, .0462962948f, .0022727272f, .0013468013f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
371 { .2000000000f, .0625000000f, .0370370373f, .0208333333f, .0074074073f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
372 { .2127659619f, .0555555556f, .0329218097f, .0208333333f, .0123456791f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
373 { .2173913121f, .0473484844f, .0280583613f, .0347222239f, .0205761325f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
374 { .2173913121f, .0347222239f, .0205761325f, .0473484844f, .0280583613f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
375 { .2127659619f, .0208333333f, .0123456791f, .0555555556f, .0329218097f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
376 { .2000000000f, .0208333333f, .0074074073f, .0625000000f, .0370370370f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
377 { .1996007860f, .0022727272f, .0013468013f, .0781250000f, .0462962948f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
378 { .1562500000f,-.0062500000f,-.0037037037f, .0625000000f, .0370370370f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
379 { .1250000000f,-.0164473690f,-.0097465888f, .0558035709f, .0330687836f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
380 { .0416666667f,-.0208333333f,-.0123456791f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
381 { .0100000000f,-.0069444444f,-.0018416207f,-.0037037037f,-.0020000000f } },
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2914
diff changeset
382
2914
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
383 { { .0050000000f,-.0200000000f, .0125000000f,-.3030303030f, .0020000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
384 { .1041666642f, .0400000000f,-.0250000000f, .0333333333f,-.0200000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
385 { .1250000000f, .0100000000f, .0142857144f,-.0500000007f,-.0200000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
386 { .1562500000f,-.0006250000f,-.00049382716f,-.000625000f,-.00049382716f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
387 { .1562500000f,-.0006250000f,-.00049382716f,-.000625000f,-.00049382716f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
388 { .1250000000f,-.0500000000f,-.0200000000f, .0100000000f, .0142857144f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
389 { .1041666667f, .0333333333f,-.0200000000f, .0400000000f,-.0250000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
390 { .0050000000f,-.3030303030f, .0020000001f,-.0200000000f, .0125000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
391 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
392 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
393 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
394 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
395 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
396 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
397 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
398 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f } },
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2914
diff changeset
399
2914
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
400 { { .1428571492f, .1250000000f,-.0285714287f,-.0357142873f, .0208333333f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
401 { .1818181818f, .0588235296f, .0333333333f, .0212765951f, .0100000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
402 { .1818181818f, .0212765951f, .0100000000f, .0588235296f, .0333333333f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
403 { .1428571492f,-.0357142873f, .0208333333f, .1250000000f,-.0285714287f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
404 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
405 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
406 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
407 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
408 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
409 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
410 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
411 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
412 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
413 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
414 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
415 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f } },
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2914
diff changeset
416
2914
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
417 { { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
418 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
419 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
420 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
421 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
422 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
423 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
424 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
425 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
426 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
427 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
428 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
429 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
430 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
431 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
432 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f } }
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
433 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
434
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
435 static const float fft_tone_level_table[2][64] = { {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
436 /* pow ~ (i > 46) ? 0 : (((((i & 1) ? 431 : 304) << (i >> 1))) / 1024.0); */
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
437 0.17677669f, 0.42677650f, 0.60355347f, 0.85355347f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
438 1.20710683f, 1.68359375f, 2.37500000f, 3.36718750f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
439 4.75000000f, 6.73437500f, 9.50000000f, 13.4687500f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
440 19.0000000f, 26.9375000f, 38.0000000f, 53.8750000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
441 76.0000000f, 107.750000f, 152.000000f, 215.500000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
442 304.000000f, 431.000000f, 608.000000f, 862.000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
443 1216.00000f, 1724.00000f, 2432.00000f, 3448.00000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
444 4864.00000f, 6896.00000f, 9728.00000f, 13792.0000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
445 19456.0000f, 27584.0000f, 38912.0000f, 55168.0000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
446 77824.0000f, 110336.000f, 155648.000f, 220672.000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
447 311296.000f, 441344.000f, 622592.000f, 882688.000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
448 1245184.00f, 1765376.00f, 2490368.00f, 0.00000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
449 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
450 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
451 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
452 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
453 }, {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
454 /* pow = (i > 45) ? 0 : ((((i & 1) ? 431 : 304) << (i >> 1)) / 512.0); */
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
455 0.59375000f, 0.84179688f, 1.18750000f, 1.68359375f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
456 2.37500000f, 3.36718750f, 4.75000000f, 6.73437500f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
457 9.50000000f, 13.4687500f, 19.0000000f, 26.9375000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
458 38.0000000f, 53.8750000f, 76.0000000f, 107.750000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
459 152.000000f, 215.500000f, 304.000000f, 431.000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
460 608.000000f, 862.000000f, 1216.00000f, 1724.00000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
461 2432.00000f, 3448.00000f, 4864.00000f, 6896.00000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
462 9728.00000f, 13792.0000f, 19456.0000f, 27584.0000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
463 38912.0000f, 55168.0000f, 77824.0000f, 110336.000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
464 155648.000f, 220672.000f, 311296.000f, 441344.000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
465 622592.000f, 882688.000f, 1245184.00f, 1765376.00f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
466 2490368.00f, 3530752.00f, 0.00000000f, 0.00000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
467 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
468 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
469 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
470 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
471 } };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
472
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
473 static const float fft_tone_envelope_table[4][31] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
474 { .009607375f, .038060248f, .084265202f, .146446645f, .222214907f, .308658302f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
475 .402454883f, .500000060f, .597545207f, .691341758f, .777785182f, .853553414f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
476 .915734828f, .961939812f, .990392685f, 1.00000000f, .990392625f, .961939752f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
477 .915734768f, .853553295f, .777785063f, .691341639f, .597545087f, .500000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
478 .402454853f, .308658272f, .222214878f, .146446615f, .084265172f, .038060218f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
479 .009607345f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
480 { .038060248f, .146446645f, .308658302f, .500000060f, .691341758f, .853553414f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
481 .961939812f, 1.00000000f, .961939752f, .853553295f, .691341639f, .500000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
482 .308658272f, .146446615f, .038060218f, .000000000f, .000000000f, .000000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
483 .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
484 .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
485 .000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
486 { .146446645f, .500000060f, .853553414f, 1.00000000f, .853553295f, .500000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
487 .146446615f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
488 .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
489 .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
490 .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
491 .000000000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
492 { .500000060f, 1.00000000f, .500000000f, .000000000f, .000000000f, .000000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
493 .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
494 .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
495 .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
496 .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
497 .000000000f }
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
498 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
499
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
500 static const float sb_noise_attenuation[32] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
501 0.0f, 0.0f, 0.3f, 0.4f, 0.5f, 0.7f, 1.0f, 1.0f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
502 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
503 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
504 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
505 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
506
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
507 static const uint8_t fft_subpackets[32] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
508 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
509 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
510 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
511
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
512 /* first index is joined_stereo, second index is 0 or 2 (1 is unused) */
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
513 static float dequant_1bit[2][3] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
514 {-0.920000f, 0.000000f, 0.920000f },
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
515 {-0.890000f, 0.000000f, 0.890000f }
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
516 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
517
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
518 static const float type30_dequant[8] = {
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
519 -1.0f,-0.625f,-0.291666656732559f,0.0f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
520 0.25f,0.5f,0.75f,1.0f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
521 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
522
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
523 static const float type34_delta[10] = { // FIXME: covers 8 entries..
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
524 -1.0f,-0.60947573184967f,-0.333333343267441f,-0.138071194291115f,0.0f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
525 0.138071194291115f,0.333333343267441f,0.60947573184967f,1.0f,0.0f,
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
526 };
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
527
4a52affac0e0 QDM2 compatible decoder
rtognimp
parents:
diff changeset
528 #endif /* QDM2DATA_H */