~medibuntu-maintainers/mplayer/medibuntu.quantal

« back to all changes in this revision

Viewing changes to libavcodec/qdm2data.h

  • Committer: Gauvain Pocentek
  • Date: 2011-08-21 07:22:23 UTC
  • mfrom: (66.1.11 oneiric)
  • Revision ID: gauvain@pocentek.net-20110821072223-ummeossdz7okpb3d
* Merge from Ubuntu:
  - put back faac support
  - recommends apport-hooks-medibuntu
  - change Maintainer, Uploaders & Vcs-* fields.
* New upstream snapshot
  - update 23mplayer-debug-printf.patch
  - fixes miscompilation with gcc 4.6, Closes: #623304
  - improved internal mkv demuxer, Closes: #595452
  - Fixed segfault due to missing sanitation on playlist files,
    Closes: #591525
  - Fixed byteorder on 16-bit displays, Closes: #594093
  - tighten build depends on libav
  - --enable-largefile switch has been dropped
  - add build dependency on yasm
* Fix build dependency on libjpeg-dev, Closes: #634277
* rewrite debian/copyright in DEP5 format
* fix clean target
* don't remove snapshot_version file
* enable XVID, MP3 and X264 encoders
* simply architecture specific dependencies, Closes: #634773
* make buildlogs verbose
* unbreak building mplayer-doc package
* don't fail debian package build if not all shlibdeps information could be retrieved
* update configure flags for static libav* libraries
* fix spelling in mplayer-dbg description, Closes: #617826
* enable blueray support, Closes: #577761
* Select oss as default audio output module on kFreeBSD, Closes: #598431
* Update documentation with regard to our modifications to the upstream tarball.
* really no longer build mplayer-gui, Closes: #612473
* simplify/remove instruction to get upstream sources
* normalize debian/{control,copyright,mplayer.install} with wrap-and-sort
* bump standards version

Show diffs side-by-side

added added

removed removed

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