annotate qdm2data.h @ 10399:136334ad62b3 libavcodec

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