annotate qdm2data.h @ 5162:4394344397d8 libavcodec

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