]> git.sesse.net Git - ffmpeg/blob - libavcodec/atrac9tab.h
avformat/avio: Add Metacube support
[ffmpeg] / libavcodec / atrac9tab.h
1 /*
2  * ATRAC9 decoder
3  * Copyright (c) 2018 Rostislav Pehlivanov <atomnuker@gmail.com>
4  *
5  * This file is part of FFmpeg.
6  *
7  * FFmpeg is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * FFmpeg is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with FFmpeg; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20  */
21
22 #ifndef AVCODEC_ATRAC9TAB_H
23 #define AVCODEC_ATRAC9TAB_H
24
25 #include <stdint.h>
26
27 #include "libavutil/channel_layout.h"
28
29 enum ATRAC9BlockType {
30     ATRAC9_BLOCK_TYPE_SCE, /* Single channel */
31     ATRAC9_BLOCK_TYPE_CPE, /* 2 coupled channels */
32     ATRAC9_BLOCK_TYPE_LFE, /* Single LFE channel */
33 };
34
35 typedef struct ATRAC9BlockConfig {
36     uint64_t channel_layout;
37     enum ATRAC9BlockType type[5];
38     int plane_map[5][2];
39     int count;
40 } ATRAC9BlockConfig;
41
42 static const ATRAC9BlockConfig at9_block_layout[] = {
43     { /* Mono */
44         .channel_layout  = AV_CH_LAYOUT_MONO,
45         .type            = { ATRAC9_BLOCK_TYPE_SCE, },
46         .count           = 1,
47     },
48     { /* Dual Mono */
49         .channel_layout  = AV_CH_LAYOUT_STEREO,
50         .type            = { ATRAC9_BLOCK_TYPE_SCE,
51                              ATRAC9_BLOCK_TYPE_SCE, },
52         .plane_map       = { { 0 }, { 1 }, },
53         .count           = 2,
54     },
55     { /* Stereo */
56         .channel_layout  = AV_CH_LAYOUT_STEREO,
57         .type            = { ATRAC9_BLOCK_TYPE_CPE, },
58         .plane_map       = { { 0, 1 }, },
59         .count           = 1,
60     },
61     { /* 5.1 */
62         .channel_layout  = AV_CH_LAYOUT_5POINT1,
63         .type            = { ATRAC9_BLOCK_TYPE_CPE,
64                              ATRAC9_BLOCK_TYPE_SCE,
65                              ATRAC9_BLOCK_TYPE_LFE,
66                              ATRAC9_BLOCK_TYPE_CPE, },
67         .plane_map       = { { 0, 1 }, { 2 }, { 3 }, { 4, 5 }, },
68         .count           = 4,
69     },
70     { /* 7.1 */
71         .channel_layout  = AV_CH_LAYOUT_7POINT1,
72         .type            = { ATRAC9_BLOCK_TYPE_CPE,
73                              ATRAC9_BLOCK_TYPE_SCE,
74                              ATRAC9_BLOCK_TYPE_LFE,
75                              ATRAC9_BLOCK_TYPE_CPE,
76                              ATRAC9_BLOCK_TYPE_CPE, },
77         .plane_map       = { { 0, 1 }, { 2 }, { 3 }, { 4, 5 }, { 6, 7 }, },
78         .count           = 5,
79     },
80     { /* Quad */
81         .channel_layout  = AV_CH_LAYOUT_QUAD,
82         .type            = { ATRAC9_BLOCK_TYPE_CPE,
83                              ATRAC9_BLOCK_TYPE_CPE, },
84         .plane_map       = { { 0, 1 }, { 2, 3 }, },
85         .count           = 2,
86     },
87 };
88
89 static const uint8_t at9_tab_sri_frame_log2[] = {
90     6, 6, 7, 7, 7, 8, 8, 8, 6, 6, 7, 7, 7, 8, 8, 8,
91 };
92
93 static const uint8_t at9_tab_band_q_unit_map[] = {
94     0, 4, 8, 10, 12, 13, 14, 15, 16, 18, 20, 21, 22, 23, 24, 25, 26, 28, 30,
95 };
96
97 static const uint8_t at9_q_unit_to_coeff_cnt[] = {
98     2, 2, 2, 2, 2,  2,  2,  2,  4,  4,  4,  4,  8,  8,  8,
99     8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
100 };
101
102 static const int at9_q_unit_to_coeff_idx[] = {
103     0, 2, 4, 6, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 64,
104     72, 80, 88, 96, 112, 128, 144, 160, 176, 192, 208, 224, 240, 256
105 };
106
107 static const uint8_t at9_q_unit_to_codebookidx[] = {
108     0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2,
109     2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
110 };
111
112 static const uint8_t at9_tab_sri_max_bands[] = {
113     8, 8, 12, 12, 12, 18, 18, 18, 8, 8, 12, 12, 12, 16, 16, 16,
114 };
115
116 static const int at9_tab_samplerates[] = {
117     11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 44100, 48000,
118     64000, 88200, 96000, 128000, 176400, 192000,
119 };
120
121 static const uint8_t at9_tab_band_ext_cnt[][6] = {
122     { 0, 0, 0, 4, 4, 2 },
123     { 0, 0, 0, 0, 0, 0 },
124     { 0, 0, 0, 2, 2, 1 },
125     { 0, 0, 0, 2, 2, 2 },
126     { 1, 1, 1, 0, 0, 0 },
127 };
128
129 /* B unit, C unit, Band count */
130 static const uint8_t at9_tab_band_ext_group[][3] = {
131     { 16, 21, 0 },
132     { 18, 22, 1 },
133     { 20, 22, 2 },
134     { 21, 22, 3 },
135     { 21, 22, 3 },
136     { 23, 24, 4 },
137     { 23, 24, 4 },
138     { 24, 24, 5 },
139 };
140
141 static const uint8_t at9_tab_band_ext_lengths[][6][4] = {
142     {
143         { 0, 0, 0, 0 },
144         { 0, 0, 0, 0 },
145         { 0, 0, 0, 0 },
146         { 5, 4, 3, 3 },
147         { 4, 4, 3, 4 },
148         { 4, 5, 0, 0 },
149     },
150     {
151         { 0, 0, 0, 0 },
152         { 0, 0, 0, 0 },
153         { 0, 0, 0, 0 },
154         { 0, 0, 0, 0 },
155         { 0, 0, 0, 0 },
156         { 0, 0, 0, 0 },
157     },
158     {
159         { 0, 0, 0, 0 },
160         { 0, 0, 0, 0 },
161         { 0, 0, 0, 0 },
162         { 6, 6, 0, 0 },
163         { 6, 6, 0, 0 },
164         { 6, 0, 0, 0 },
165     },
166     {
167         { 0, 0, 0, 0 },
168         { 0, 0, 0, 0 },
169         { 0, 0, 0, 0 },
170         { 4, 4, 0, 0 },
171         { 4, 4, 0, 0 },
172         { 4, 4, 0, 0 },
173     },
174     {
175         { 3, 0, 0, 0 },
176         { 3, 0, 0, 0 },
177         { 3, 0, 0, 0 },
178         { 0, 0, 0, 0 },
179         { 0, 0, 0, 0 },
180         { 0, 0, 0, 0 },
181     },
182 };
183
184 static const float at9_band_ext_scales_m0[][5][32] = {
185     {
186         {
187             0.000000e+0f, 1.988220e-1f, 2.514343e-1f, 2.960510e-1f,
188             3.263550e-1f, 3.771362e-1f, 3.786926e-1f, 4.540405e-1f,
189             4.877625e-1f, 5.262451e-1f, 5.447083e-1f, 5.737000e-1f,
190             6.212158e-1f, 6.222839e-1f, 6.560974e-1f, 6.896667e-1f,
191             7.555542e-1f, 7.677917e-1f, 7.918091e-1f, 7.971497e-1f,
192             8.188171e-1f, 8.446045e-1f, 9.790649e-1f, 9.822083e-1f,
193             9.846191e-1f, 9.859314e-1f, 9.863586e-1f, 9.863892e-1f,
194             9.873352e-1f, 9.881287e-1f, 9.898682e-1f, 9.913330e-1f,
195         }, {
196             0.000000e+0f, 9.982910e-1f, 7.592773e-2f, 7.179565e-1f,
197             9.851379e-1f, 5.340271e-1f, 9.013672e-1f, 6.349182e-1f,
198             7.226257e-1f, 1.948547e-1f, 7.628174e-1f, 9.873657e-1f,
199             8.112183e-1f, 2.715454e-1f, 9.734192e-1f, 1.443787e-1f,
200             4.640198e-1f, 3.249207e-1f, 3.790894e-1f, 8.276367e-2f,
201             5.954590e-1f, 2.864380e-1f, 9.806824e-1f, 7.929077e-1f,
202             6.292114e-1f, 4.887085e-1f, 2.905273e-1f, 1.301880e-1f,
203             3.140869e-1f, 5.482483e-1f, 4.210815e-1f, 1.182861e-1f,
204         }, {
205             0.000000e+0f, 3.155518e-2f, 8.581543e-2f, 1.364746e-1f,
206             1.858826e-1f, 2.368469e-1f, 2.888184e-1f, 3.432617e-1f,
207             4.012451e-1f, 4.623108e-1f, 5.271301e-1f, 5.954895e-1f,
208             6.681213e-1f, 7.448425e-1f, 8.245239e-1f, 9.097290e-1f,
209         }, {
210             0.000000e+0f, 4.418945e-2f, 1.303711e-1f, 2.273560e-1f,
211             3.395996e-1f, 4.735718e-1f, 6.267090e-1f, 8.003845e-1f,
212         }, {
213             0.000000e+0f, 2.804565e-2f, 9.683228e-2f, 1.849976e-1f,
214             3.005981e-1f, 4.470520e-1f, 6.168518e-1f, 8.007813e-1f,
215         },
216     },
217     {
218         {
219             0.000000e+0f, 2.708740e-1f, 3.479614e-1f, 3.578186e-1f,
220             5.083618e-1f, 5.299072e-1f, 5.819092e-1f, 6.381836e-1f,
221             7.276917e-1f, 7.595520e-1f, 7.878723e-1f, 9.707336e-1f,
222             9.713135e-1f, 9.736023e-1f, 9.759827e-1f, 9.832458e-1f,
223         }, {
224             0.000000e+0f, 2.330627e-1f, 5.891418e-1f, 7.170410e-1f,
225             2.036438e-1f, 1.613464e-1f, 6.668701e-1f, 9.481201e-1f,
226             9.769897e-1f, 5.111694e-1f, 3.522644e-1f, 8.209534e-1f,
227             2.933960e-1f, 9.757690e-1f, 5.289917e-1f, 4.372253e-1f,
228         }, {
229             0.000000e+0f, 4.360962e-2f, 1.056519e-1f, 1.590576e-1f,
230             2.078857e-1f, 2.572937e-1f, 3.082581e-1f, 3.616028e-1f,
231             4.191589e-1f, 4.792175e-1f, 5.438538e-1f, 6.125183e-1f,
232             6.841125e-1f, 7.589417e-1f, 8.365173e-1f, 9.148254e-1f,
233         }, {
234             0.000000e+0f, 4.074097e-2f, 1.164551e-1f, 2.077026e-1f,
235             3.184509e-1f, 4.532166e-1f, 6.124268e-1f, 7.932129e-1f,
236         }, {
237             0.000000e+0f, 8.880615e-3f, 2.932739e-2f, 5.593872e-2f,
238             8.825684e-2f, 1.259155e-1f, 1.721497e-1f, 2.270813e-1f,
239             2.901611e-1f, 3.579712e-1f, 4.334106e-1f, 5.147095e-1f,
240             6.023254e-1f, 6.956177e-1f, 7.952881e-1f, 8.977356e-1f,
241         },
242     },
243     {
244         {
245             0.000000e+0f, 7.379150e-2f, 1.806335e-1f, 2.687073e-1f,
246             3.407898e-1f, 4.047546e-1f, 4.621887e-1f, 5.168762e-1f,
247             5.703125e-1f, 6.237488e-1f, 6.763611e-1f, 7.288208e-1f,
248             7.808533e-1f, 8.337708e-1f, 8.874512e-1f, 9.418030e-1f,
249         }, {
250             0.000000e+0f, 7.980347e-2f, 1.615295e-1f, 1.665649e-1f,
251             1.822205e-1f, 2.185669e-1f, 2.292175e-1f, 2.456665e-1f,
252             2.666321e-1f, 3.306580e-1f, 3.330688e-1f, 3.765259e-1f,
253             4.085083e-1f, 4.400024e-1f, 4.407654e-1f, 4.817505e-1f,
254             4.924011e-1f, 5.320740e-1f, 5.893860e-1f, 6.131287e-1f,
255             6.212463e-1f, 6.278076e-1f, 6.308899e-1f, 7.660828e-1f,
256             7.850647e-1f, 7.910461e-1f, 7.929382e-1f, 8.038330e-1f,
257             9.834900e-1f, 9.846191e-1f, 9.852295e-1f, 9.862671e-1f,
258         }, {
259             0.000000e+0f, 6.084290e-1f, 3.672791e-1f, 3.151855e-1f,
260             1.488953e-1f, 2.571716e-1f, 5.103455e-1f, 3.311157e-1f,
261             5.426025e-2f, 4.254456e-1f, 7.998352e-1f, 7.873230e-1f,
262             5.418701e-1f, 2.925110e-1f, 8.468628e-2f, 1.410522e-1f,
263             9.819641e-1f, 9.609070e-1f, 3.530884e-2f, 9.729004e-2f,
264             5.758362e-1f, 9.941711e-1f, 7.215576e-1f, 7.183228e-1f,
265             2.028809e-1f, 9.588623e-2f, 2.032166e-1f, 1.338806e-1f,
266             5.003357e-1f, 1.874390e-1f, 9.804993e-1f, 1.107788e-1f,
267         },
268     },
269 };
270
271 static const float at9_band_ext_scales_m2[] = {
272     4.272461e-4f, 1.312256e-3f, 2.441406e-3f, 3.692627e-3f,
273     4.913330e-3f, 6.134033e-3f, 7.507324e-3f, 8.972168e-3f,
274     1.049805e-2f, 1.223755e-2f, 1.406860e-2f, 1.599121e-2f,
275     1.800537e-2f, 2.026367e-2f, 2.264404e-2f, 2.517700e-2f,
276     2.792358e-2f, 3.073120e-2f, 3.344727e-2f, 3.631592e-2f,
277     3.952026e-2f, 4.275513e-2f, 4.608154e-2f, 4.968262e-2f,
278     5.355835e-2f, 5.783081e-2f, 6.195068e-2f, 6.677246e-2f,
279     7.196045e-2f, 7.745361e-2f, 8.319092e-2f, 8.993530e-2f,
280     9.759521e-2f, 1.056213e-1f, 1.138916e-1f, 1.236267e-1f,
281     1.348267e-1f, 1.470337e-1f, 1.603394e-1f, 1.755676e-1f,
282     1.905823e-1f, 2.071228e-1f, 2.245178e-1f, 2.444153e-1f,
283     2.658997e-1f, 2.897644e-1f, 3.146057e-1f, 3.450012e-1f,
284     3.766174e-1f, 4.122620e-1f, 4.505615e-1f, 4.893799e-1f,
285     5.305481e-1f, 5.731201e-1f, 6.157837e-1f, 6.580811e-1f,
286     6.985168e-1f, 7.435303e-1f, 7.865906e-1f, 8.302612e-1f,
287     8.718567e-1f, 9.125671e-1f, 9.575806e-1f, 9.996643e-1f,
288 };
289
290 static const float at9_band_ext_scales_m3[][2] = {
291     { 3.491211e-1f, -2.913818e-1f, }, { 5.371094e-1f, -2.541504e-1f, },
292     { 6.782227e-1f, -1.664429e-1f, }, { 7.910156e-1f, -1.476440e-1f, },
293     { 9.057617e-1f, -1.342163e-1f, }, { 1.024902e+0f, -1.220703e-1f, },
294     { 1.156250e+0f, -1.117554e-1f, }, { 1.290527e+0f, -1.026611e-1f, },
295     { 1.458984e+0f, -9.436035e-2f, }, { 1.664551e+0f, -8.483887e-2f, },
296     { 1.929688e+0f, -7.476807e-2f, }, { 2.278320e+0f, -6.304932e-2f, },
297     { 2.831543e+0f, -4.492188e-2f, }, { 3.659180e+0f, -2.447510e-2f, },
298     { 5.257813e+0f, +1.831055e-4f, }, { 8.373047e+0f, +4.174805e-2f, },
299 };
300
301 static const float at9_band_ext_scales_m4[] = {
302     3.610229e-2f, 1.260681e-1f, 2.227478e-1f, 3.338318e-1f,
303     4.662170e-1f, 6.221313e-1f, 7.989197e-1f, 9.939575e-1f,
304 };
305
306 static const float at9_quant_step_coarse[] = {
307     2.0000000000000000e+0f, 6.6666666666666663e-1f, 2.8571428571428570e-1f,
308     1.3333333333333333e-1f, 6.4516129032258063e-2f, 3.1746031746031744e-2f,
309     1.5748031496062992e-2f, 7.8431372549019607e-3f, 3.9138943248532287e-3f,
310     1.9550342130987292e-3f, 9.7703957010258913e-4f, 4.8840048840048840e-4f,
311     2.4417043096081065e-4f, 1.2207776353537203e-4f, 6.1037018951994385e-5f,
312     3.0518043793392844e-5f,
313 };
314
315 static const float at9_quant_step_fine[] = {
316     3.0518043793392844e-05f, 1.0172681264464281e-05f, 4.3597205419132631e-06f,
317     2.0345362528928561e-06f, 9.8445302559331759e-07f, 4.8441339354591809e-07f,
318     2.4029955742829012e-07f, 1.1967860311134448e-07f, 5.9722199204291275e-08f,
319     2.9831909866464167e-08f, 1.4908668194134265e-08f, 7.4525137468602791e-09f,
320     3.7258019525568114e-09f, 1.8627872668859698e-09f, 9.3136520869755679e-10f,
321     4.6567549848772173e-10f,
322 };
323
324 static const float at9_scalefactor_c[] = {
325     3.0517578125e-5f, 6.1035156250e-5f, 1.2207031250e-4f, 2.4414062500e-4f,
326     4.8828125000e-4f, 9.7656250000e-4f, 1.9531250000e-3f, 3.9062500000e-3f,
327     7.8125000000e-3f, 1.5625000000e-2f, 3.1250000000e-2f, 6.2500000000e-2f,
328     1.2500000000e-1f, 2.5000000000e-1f, 5.0000000000e-1f, 1.0000000000e+0f,
329     2.0000000000e+0f, 4.0000000000e+0f, 8.0000000000e+0f, 1.6000000000e+1f,
330     3.2000000000e+1f, 6.4000000000e+1f, 1.2800000000e+2f, 2.5600000000e+2f,
331     5.1200000000e+2f, 1.0240000000e+3f, 2.0480000000e+3f, 4.0960000000e+3f,
332     8.1920000000e+3f, 1.6384000000e+4f, 3.2768000000e+4f, 6.5536000000e+4f,
333 };
334
335 static const uint8_t at9_tab_sf_weights[][32] = {
336     {
337         0,  0,  0,  1,  1,  2,  2,  2,  2,  2,  2,  3,  2,  3,  3,  4,  4,  4,
338         4,  4,  4,  5,  5,  6,  6,  7,  7,  8, 10, 12, 12, 12,
339     },
340     {
341         3,  2,  2,  1,  1,  1,  1,  1,  0,  1,  1,  1,  0,  0,  0,  1,  0,  1,
342         1,  1,  1,  1,  1,  2,  3,  3,  4,  5,  7, 10, 10, 10,
343     },
344     {
345         0,  2,  4,  5,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
346         6,  6,  6,  6,  6,  7,  7,  7,  7,  8,  9, 12, 12, 12,
347     },
348     {
349         0,  1,  1,  2,  2,  2,  3,  3,  3,  3,  3,  4,  4,  4,  5,  5,  5,  6,
350         6,  6,  6,  7,  8,  8, 10, 11, 11, 12, 13, 13, 13, 13,
351     },
352     {
353         0,  2,  2,  3,  3,  4,  4,  5,  4,  5,  5,  5,  5,  6,  7,  8,  8,  8,
354         8,  9,  9,  9, 10, 10, 11, 12, 12, 13, 13, 14, 14, 14,
355     },
356     {
357         1,  1,  0,  0,  0,  0,  1,  0,  0,  1,  1,  1,  1,  1,  2,  2,  2,  2,
358         2,  3,  3,  3,  4,  4,  5,  6,  7,  7,  9, 11, 11, 11,
359     },
360     {
361         0,  5,  8, 10, 11, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13,
362         13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 15, 15, 15,
363     },
364     {
365         0,  2,  3,  4,  5,  6,  6,  7,  7,  8,  8,  8,  9,  9, 10, 10, 10, 11,
366         11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 15, 15, 15,
367     },
368 };
369
370 static const uint8_t at9_tab_b_dist[] = {
371          1,  1,  1,  1,  2,  2,  2,  2,  3,  3,  3,  4,  4,  5,  5,  6,  7,  8,
372          9, 10, 11, 12, 13, 15,  6, 18, 19, 20, 21, 22, 23, 24, 25, 26, 26, 27,
373         27, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30,
374 };
375
376 static const uint8_t at9_sfb_a_tab[][2] = {
377     /* Unsigned scalefactor table 1 - 2 entries */
378     {  0, 1 }, {  1, 1 },
379     /* Unsigned scalefactor table 2 - 4 entries */
380     {  0, 1 }, {  3, 2 }, {  1, 3 }, {  2, 3 },
381     /* Unsigned scalefactor table 3 - 8 entries */
382     {  0, 2 }, {  1, 2 }, {  7, 2 }, {  6, 3 }, {  2, 4 }, {  5, 5 }, {  3, 6 },
383     {  4, 6 },
384     /* Unsigned scalefactor table 4 - 16 entries */
385     {  2, 4 }, { 14, 4 }, { 11, 8 }, { 10, 8 }, {  9, 8 }, {  6, 8 }, {  7, 8 },
386     {  8, 8 }, {  5, 7 }, { 13, 5 }, {  3, 5 }, { 12, 6 }, {  4, 6 }, {  0, 2 },
387     {  1, 2 }, { 15, 2 },
388     /* Unsigned scalefactor table 5 - 32 entries */
389     { 31, 3 }, {  1, 3 }, { 26, 7 }, {  7, 7 }, { 20, 8 }, { 21, 8 }, { 23, 8 },
390     { 22, 8 }, { 29, 5 }, { 30, 4 }, {  4, 5 }, { 11, 8 }, { 24, 8 }, {  9, 8 },
391     { 10, 8 }, {  6, 6 }, { 25, 7 }, { 19, 8 }, { 12, 8 }, { 27, 6 }, { 18, 8 },
392     { 13, 8 }, { 16, 8 }, { 17, 8 }, { 14, 8 }, { 15, 8 }, {  8, 7 }, {  0, 2 },
393     {  5, 5 }, { 28, 5 }, {  3, 4 }, {  2, 3 },
394     /* Unsigned scalefactor table 6 - 64 entries */
395     {  0, 3 }, {  1, 3 }, {  2, 4 }, {  3, 4 }, { 61, 4 }, { 62, 4 }, { 63, 4 },
396     {  4, 5 }, {  5, 5 }, { 58, 5 }, { 59, 5 }, { 60, 5 }, {  6, 6 }, {  7, 6 },
397     {  8, 6 }, { 56, 6 }, { 57, 6 }, {  9, 7 }, { 10, 7 }, { 53, 7 }, { 54, 7 },
398     { 55, 7 }, { 11, 8 }, { 12, 8 }, { 13, 8 }, { 14, 8 }, { 15, 8 }, { 16, 8 },
399     { 17, 8 }, { 18, 8 }, { 19, 8 }, { 20, 8 }, { 21, 8 }, { 22, 8 }, { 23, 8 },
400     { 24, 8 }, { 25, 8 }, { 26, 8 }, { 27, 8 }, { 28, 8 }, { 29, 8 }, { 30, 8 },
401     { 31, 8 }, { 32, 8 }, { 33, 8 }, { 34, 8 }, { 35, 8 }, { 36, 8 }, { 37, 8 },
402     { 38, 8 }, { 39, 8 }, { 40, 8 }, { 41, 8 }, { 42, 8 }, { 43, 8 }, { 44, 8 },
403     { 45, 8 }, { 46, 8 }, { 47, 8 }, { 48, 8 }, { 49, 8 }, { 50, 8 }, { 51, 8 },
404     { 52, 8 },
405 };
406
407 static const uint8_t at9_sfb_b_tab[][2] = {
408     /* Signed scalefactor table 2 - 3 entries */
409     { 16, 1 }, { 15, 2 }, { 17, 2 },
410     /* Signed scalefactor table 3 - 7 entries */
411     { 17, 3 }, { 18, 5 }, { 13, 6 }, { 19, 6 }, { 14, 4 }, { 15, 2 }, { 16, 1 },
412     /* Signed scalefactor table 4 - 15 entries */
413     { 15, 3 }, { 17, 3 }, { 18, 4 }, { 13, 6 }, { 12, 6 }, { 21, 7 }, { 22, 8 },
414     { 10, 8 }, {  9, 8 }, { 23, 8 }, { 11, 7 }, { 14, 4 }, { 19, 5 }, { 20, 5 },
415     { 16, 1 },
416     /* Signed scalefactor table 5 - 32 entries */
417     { 16, 3 }, { 21, 4 }, { 22, 4 }, { 20, 4 }, { 23, 4 }, { 30, 8 }, {  1, 8 },
418     {  0, 8 }, {  2, 8 }, {  3, 8 }, { 31, 8 }, { 27, 7 }, { 14, 6 }, { 28, 7 },
419     { 13, 7 }, { 18, 4 }, { 25, 5 }, { 12, 7 }, { 11, 7 }, { 26, 6 }, { 24, 4 },
420     { 17, 3 }, { 19, 4 }, {  9, 7 }, { 10, 7 }, {  8, 7 }, {  7, 7 }, {  6, 7 },
421     {  5, 7 }, { 29, 7 }, {  4, 7 }, { 15, 3 },
422 };
423
424 typedef struct HuffmanCodebook {
425     const int size;
426     const int value_cnt;
427     const int value_cnt_pow;
428     const int value_bits;
429 } HuffmanCodebook;
430
431 static const HuffmanCodebook at9_huffman_sf_unsigned[] = {
432     { 0 },
433     {  2,  1,  0,  1 },
434     {  4,  1,  0,  2 },
435     {  8,  1,  0,  3 },
436     { 16,  1,  0,  4 },
437     { 32,  1,  0,  5 },
438     { 64,  1,  0,  6 },
439 };
440
441 static const HuffmanCodebook at9_huffman_sf_signed[] = {
442     { 0 },
443     { 0 },
444     {  3,  1,  0,  2 },
445     {  7,  1,  0,  3 },
446     { 15,  1,  0,  4 },
447     { 32,  1,  0,  5 },
448 };
449
450 static const uint8_t at9_coeffs_tab[][2] = {
451     /* Coefficient table A.2.1 - 8 entries */
452     {   1,  3 }, {   3,  3 }, {  12,  3 }, {   4,  3 }, {   7,  3 },
453     {  13,  3 }, {  15,  3 }, {   5,  3 },
454     /* Coefficient table A.2.2 - 80 entries */
455     {  17,  6 }, {  51,  6 }, {  81,  7 }, { 243,  7 }, {  69,  7 },
456     { 207,  7 }, { 205,  7 }, {  71,  7 }, { 209,  7 }, { 115,  7 },
457     { 245,  7 }, {  95,  7 }, { 125,  7 }, { 215,  7 }, {   1,  4 },
458     {   3,  4 }, { 116,  7 }, { 220,  7 }, {  84,  7 }, { 252,  7 },
459     {  29,  7 }, {  55,  7 }, {  21,  7 }, {  63,  7 }, {  65,  6 },
460     { 195,  6 }, { 193,  6 }, {  67,  6 }, {  20,  6 }, {  60,  6 },
461     {  52,  6 }, {  28,  6 }, {  16,  5 }, {  48,  5 }, {   4,  5 },
462     {  12,  5 }, { 221,  8 }, { 119,  8 }, { 117,  8 }, { 223,  8 },
463     { 213,  8 }, { 127,  8 }, { 253,  8 }, {  87,  8 }, {  80,  6 },
464     { 240,  6 }, {  93,  8 }, { 247,  8 }, {  85,  8 }, { 255,  8 },
465     { 113,  7 }, { 211,  7 }, { 208,  6 }, { 112,  6 }, {  64,  5 },
466     { 192,  5 }, { 212,  7 }, { 124,  7 }, { 241,  7 }, {  83,  7 },
467     {  77,  7 }, { 199,  7 }, { 244,  7 }, {  92,  7 }, { 196,  6 },
468     {  76,  6 }, {  53,  7 }, {  31,  7 }, { 197,  7 }, {  79,  7 },
469     {  49,  6 }, {  19,  6 }, {  61,  7 }, {  23,  7 }, {  68,  7 },
470     { 204,  7 }, {   5,  6 }, {  15,  6 }, {  13,  6 }, {   7,  6 },
471     /* Coefficient table A.2.3 - 81 entries */
472     {  65,  6 }, { 195,  6 }, { 193,  6 }, {  67,  6 }, { 197,  7 },
473     {  79,  7 }, {  77,  7 }, { 199,  7 }, { 241,  7 }, {  83,  7 },
474     { 244,  7 }, {  92,  7 }, {   1,  4 }, {   3,  4 }, {  20,  6 },
475     {  60,  6 }, { 212,  7 }, { 124,  7 }, {  61,  7 }, {  23,  7 },
476     {  52,  6 }, {  28,  6 }, {  53,  7 }, {  31,  7 }, { 245,  8 },
477     {  95,  8 }, { 125,  8 }, { 215,  8 }, {  80,  6 }, { 240,  6 },
478     { 208,  6 }, { 112,  6 }, { 205,  8 }, {  71,  8 }, {  81,  8 },
479     { 243,  8 }, {  69,  8 }, { 207,  8 }, { 209,  8 }, { 115,  8 },
480     {   5,  6 }, {  15,  6 }, {  13,  6 }, {   7,  6 }, { 196,  6 },
481     {  76,  6 }, { 221,  9 }, { 119,  9 }, { 253,  9 }, {  87,  9 },
482     { 116,  8 }, { 220,  8 }, {  68,  7 }, { 204,  7 }, {  49,  6 },
483     {  19,  6 }, { 117,  9 }, { 223,  9 }, { 213,  9 }, { 127,  9 },
484     {  84,  8 }, { 252,  8 }, {  29,  8 }, {  55,  8 }, {  21,  8 },
485     {  63,  8 }, {  17,  7 }, {  51,  7 }, {  93,  9 }, { 247,  9 },
486     {  85,  9 }, { 255,  9 }, { 113,  8 }, { 211,  8 }, {   4,  5 },
487     {  12,  5 }, {   0,  3 }, {  16,  5 }, {  48,  5 }, {  64,  5 },
488     { 192,  5 },
489     /* Coefficient table A.2.4 - 81 entries */
490     {  20,  6 }, {  60,  6 }, {  52,  6 }, {  28,  6 }, {  80,  6 },
491     { 240,  6 }, { 208,  6 }, { 112,  6 }, {   1,  4 }, {   3,  4 },
492     {   5,  6 }, {  15,  6 }, {  13,  6 }, {   7,  6 }, {  84,  8 },
493     { 252,  8 }, {  29,  8 }, {  55,  8 }, {  68,  7 }, { 204,  7 },
494     { 196,  6 }, {  76,  6 }, {  17,  7 }, {  51,  7 }, {  21,  8 },
495     {  63,  8 }, { 113,  8 }, { 211,  8 }, {  49,  6 }, {  19,  6 },
496     { 245,  9 }, {  95,  9 }, { 125,  9 }, { 215,  9 }, { 244,  8 },
497     {  92,  8 }, { 212,  8 }, { 124,  8 }, { 241,  8 }, {  83,  8 },
498     {  77,  8 }, { 199,  8 }, { 197,  8 }, {  79,  8 }, {  53,  8 },
499     {  31,  8 }, { 253, 10 }, {  87, 10 }, { 213, 10 }, { 127, 10 },
500     {  81,  9 }, { 243,  9 }, {   0,  2 }, {  61,  8 }, {  23,  8 },
501     { 117, 10 }, { 223, 10 }, { 221, 10 }, { 119, 10 }, { 209,  9 },
502     { 115,  9 }, {  65,  7 }, { 195,  7 }, { 193,  7 }, {  67,  7 },
503     {  69,  9 }, { 207,  9 }, { 205,  9 }, {  71,  9 }, {  93, 10 },
504     { 247, 10 }, {  85, 10 }, { 255, 10 }, { 116,  9 }, { 220,  9 },
505     {  16,  5 }, {  48,  5 }, {  64,  5 }, { 192,  5 }, {   4,  5 },
506     {  12,  5 },
507     /* Coefficient table A.3.1 - 40 entries */
508     {  50,  5 }, {  22,  5 }, {  11,  5 }, {  61,  5 }, {   2,  4 },
509     {   6,  4 }, {  59,  5 }, {  13,  5 }, {  17,  5 }, {  55,  5 },
510     {  49,  5 }, {  23,  5 }, {  24,  5 }, {  40,  5 }, {  26,  6 },
511     {  46,  6 }, {  42,  6 }, {  30,  6 }, {  10,  5 }, {  62,  5 },
512     {  58,  5 }, {  14,  5 }, {  19,  6 }, {  53,  6 }, {  51,  6 },
513     {  21,  6 }, {   3,  5 }, {   5,  5 }, {  16,  5 }, {  48,  5 },
514     {  25,  6 }, {  47,  6 }, {  41,  6 }, {  31,  6 }, {  27,  7 },
515     {  45,  7 }, {  43,  7 }, {  29,  7 }, {  18,  6 }, {  54,  6 },
516     /* Coefficient table A.3.2 - 49 entries */
517     {  57,  5 }, {  15,  5 }, {  17,  5 }, {  55,  5 }, {  49,  5 },
518     {  23,  5 }, {  58,  5 }, {  14,  5 }, {  10,  5 }, {  62,  5 },
519     {  43,  7 }, {  29,  7 }, {  27,  7 }, {  45,  7 }, {  25,  6 },
520     {  47,  6 }, {  41,  6 }, {  31,  6 }, {  59,  6 }, {  13,  6 },
521     {  11,  6 }, {  61,  6 }, {  50,  6 }, {  22,  6 }, {  16,  5 },
522     {  48,  5 }, {   8,  5 }, {  56,  5 }, {  18,  6 }, {  54,  6 },
523     {  24,  6 }, {  40,  6 }, {   2,  5 }, {   6,  5 }, {   1,  5 },
524     {   7,  5 }, {   0,  4 }, {  42,  7 }, {  30,  7 }, {  26,  7 },
525     {  46,  7 }, {   3,  6 }, {   5,  6 }, {  19,  7 }, {  53,  7 },
526     {  51,  7 }, {  21,  7 }, {   9,  6 }, {  63,  6 },
527     /* Coefficient table A.3.3 - 49 entries */
528     {  51,  7 }, {  21,  7 }, {  19,  7 }, {  53,  7 }, {  24,  6 },
529     {  40,  6 }, {  50,  6 }, {  22,  6 }, {  18,  6 }, {  54,  6 },
530     {   3,  6 }, {   5,  6 }, {  43,  8 }, {  29,  8 }, {  27,  8 },
531     {  45,  8 }, {  25,  7 }, {  47,  7 }, {  16,  5 }, {  48,  5 },
532     {   8,  4 }, {  56,  4 }, {   1,  4 }, {   7,  4 }, {   2,  5 },
533     {   6,  5 }, {   9,  5 }, {  63,  5 }, {   0,  3 }, {  57,  5 },
534     {  15,  5 }, {  41,  7 }, {  31,  7 }, {  11,  7 }, {  61,  7 },
535     {  59,  7 }, {  13,  7 }, {  26,  8 }, {  46,  8 }, {  42,  8 },
536     {  30,  8 }, {  49,  6 }, {  23,  6 }, {  17,  6 }, {  55,  6 },
537     {  58,  6 }, {  14,  6 }, {  10,  6 }, {  62,  6 },
538     /* Coefficient table A.3.4 - 49 entries */
539     {   0,  2 }, {  16,  5 }, {  48,  5 }, {   2,  5 }, {   6,  5 },
540     {  26,  8 }, {  46,  8 }, {  51,  8 }, {  21,  8 }, {  24,  7 },
541     {  40,  7 }, {   3,  7 }, {   5,  7 }, {  19,  8 }, {  53,  8 },
542     {  25,  8 }, {  47,  8 }, {  50,  7 }, {  22,  7 }, {  18,  7 },
543     {  54,  7 }, {  17,  6 }, {  55,  6 }, {   8,  4 }, {  56,  4 },
544     {   1,  4 }, {   7,  4 }, {  49,  6 }, {  23,  6 }, {  10,  6 },
545     {  62,  6 }, {  58,  6 }, {  14,  6 }, {  41,  8 }, {  31,  8 },
546     {  11,  8 }, {  61,  8 }, {  59,  8 }, {  13,  8 }, {  43, 10 },
547     {  29, 10 }, {  27, 10 }, {  45, 10 }, {  42,  9 }, {  30,  9 },
548     {   9,  5 }, {  63,  5 }, {  57,  5 }, {  15,  5 },
549     /* Coefficient table A.4.1 - 176 entries */
550     {  83,  7 }, { 189,  7 }, {  68,  7 }, { 204,  7 }, {  23,  7 },
551     { 249,  7 }, { 166,  8 }, { 106,  8 }, { 183,  8 }, {  89,  8 },
552     {  52,  7 }, { 220,  7 }, { 161,  7 }, { 111,  7 }, { 179,  7 },
553     {  93,  7 }, { 196,  7 }, {  76,  7 }, {  38,  7 }, { 234,  7 },
554     { 116,  8 }, { 156,  8 }, { 148,  8 }, { 124,  8 }, {  97,  7 },
555     { 175,  7 }, { 247,  7 }, {  25,  7 }, {  53,  7 }, { 219,  7 },
556     { 212,  7 }, {  60,  7 }, {   5,  6 }, {  11,  6 }, { 101,  8 },
557     { 171,  8 }, { 165,  8 }, { 107,  8 }, { 230,  7 }, {  42,  7 },
558     { 244,  6 }, {  28,  6 }, {   7,  7 }, {   9,  7 }, { 213,  7 },
559     {  59,  7 }, {  86,  8 }, { 186,  8 }, { 115,  8 }, { 157,  8 },
560     {  71,  8 }, { 201,  8 }, { 182,  8 }, {  90,  8 }, {   4,  6 },
561     {  12,  6 }, { 147,  8 }, { 125,  8 }, { 199,  8 }, {  73,  8 },
562     {  82,  7 }, { 190,  7 }, {  66,  7 }, { 206,  7 }, { 178,  7 },
563     {  94,  7 }, { 194,  7 }, {  78,  7 }, {  22,  7 }, { 250,  7 },
564     {  96,  7 }, { 160,  7 }, { 100,  8 }, { 172,  8 }, { 164,  8 },
565     { 108,  8 }, { 246,  7 }, {  26,  7 }, {  85,  8 }, { 187,  8 },
566     { 114,  8 }, { 158,  8 }, {  37,  7 }, { 235,  7 }, {  36,  7 },
567     { 236,  7 }, { 146,  8 }, { 126,  8 }, {  70,  8 }, { 202,  8 },
568     { 215,  8 }, {  57,  8 }, {  55,  8 }, { 217,  8 }, { 181,  8 },
569     {  91,  8 }, { 198,  8 }, {  74,  8 }, { 228,  7 }, {  44,  7 },
570     { 229,  7 }, {  43,  7 }, {  81,  7 }, { 191,  7 }, { 177,  7 },
571     {  95,  7 }, { 119,  9 }, { 153,  9 }, { 151,  9 }, { 121,  9 },
572     {  99,  8 }, { 173,  8 }, {  65,  7 }, { 207,  7 }, {   6,  7 },
573     {  10,  7 }, { 193,  7 }, {  79,  7 }, { 113,  8 }, { 159,  8 },
574     { 163,  8 }, { 109,  8 }, { 145,  8 }, { 127,  8 }, { 118,  9 },
575     { 154,  9 }, { 103,  9 }, { 169,  9 }, {  84,  8 }, { 188,  8 },
576     {  39,  8 }, { 233,  8 }, { 167,  9 }, { 105,  9 }, { 150,  9 },
577     { 122,  9 }, {  69,  8 }, { 203,  8 }, { 180,  8 }, {  92,  8 },
578     {  54,  8 }, { 218,  8 }, { 197,  8 }, {  75,  8 }, {  98,  8 },
579     { 174,  8 }, {  21,  7 }, { 251,  7 }, { 231,  8 }, {  41,  8 },
580     { 162,  8 }, { 110,  8 }, { 214,  8 }, {  58,  8 }, { 117,  9 },
581     { 155,  9 }, { 149,  9 }, { 123,  9 }, {  80,  7 }, { 176,  7 },
582     {  20,  7 }, { 252,  7 }, { 102,  9 }, { 170,  9 }, {  87,  9 },
583     { 185,  9 }, { 112,  8 }, { 144,  8 }, { 245,  7 }, {  27,  7 },
584     {  64,  7 }, { 192,  7 }, {  67,  8 }, { 205,  8 }, { 195,  8 },
585     {  77,  8 },
586     /* Coefficient table A.4.2 - 225 entries */
587     {   3,  7 }, {  13,  7 }, { 113,  8 }, { 159,  8 }, { 163,  8 },
588     { 109,  8 }, {  16,  6 }, { 240,  6 }, {  81,  7 }, { 191,  7 },
589     { 177,  7 }, {  95,  7 }, {   0,  5 }, { 112,  8 }, { 144,  8 },
590     {  99,  8 }, { 173,  8 }, { 149,  9 }, { 123,  9 }, { 166,  9 },
591     { 106,  9 }, {  54,  8 }, { 218,  8 }, {  66,  7 }, { 206,  7 },
592     {  23,  8 }, { 249,  8 }, { 214,  8 }, {  58,  8 }, { 194,  7 },
593     {  78,  7 }, { 117,  9 }, { 155,  9 }, {  87,  9 }, { 185,  9 },
594     { 247,  8 }, {  25,  8 }, {  21,  7 }, { 251,  7 }, { 211,  8 },
595     {  61,  8 }, {  51,  8 }, { 221,  8 }, {  36,  7 }, { 236,  7 },
596     { 228,  7 }, {  44,  7 }, { 183,  9 }, {  89,  9 }, { 102,  9 },
597     { 170,  9 }, { 180,  8 }, {  92,  8 }, {  80,  7 }, { 176,  7 },
598     { 245,  7 }, {  27,  7 }, {  69,  8 }, { 203,  8 }, {  84,  8 },
599     { 188,  8 }, { 225,  7 }, {  47,  7 }, {  33,  7 }, { 239,  7 },
600     {   1,  6 }, {  15,  6 }, { 197,  8 }, {  75,  8 }, {  98,  8 },
601     { 174,  8 }, {  18,  7 }, { 254,  7 }, { 162,  8 }, { 110,  8 },
602     { 116,  9 }, { 156,  9 }, { 148,  9 }, { 124,  9 }, { 242,  7 },
603     {  30,  7 }, {   5,  7 }, {  11,  7 }, {   7,  8 }, {   9,  8 },
604     { 230,  8 }, {  42,  8 }, {  65,  7 }, { 207,  7 }, {  71,  9 },
605     { 201,  9 }, { 199,  9 }, {  73,  9 }, {  38,  8 }, { 234,  8 },
606     {  32,  7 }, { 224,  7 }, { 193,  7 }, {  79,  7 }, { 165,  9 },
607     { 107,  9 }, { 182,  9 }, {  90,  9 }, {  35,  8 }, { 237,  8 },
608     { 244,  7 }, {  28,  7 }, {  20,  7 }, { 252,  7 }, {  50,  8 },
609     { 222,  8 }, {  97,  8 }, { 175,  8 }, { 101,  9 }, { 171,  9 },
610     {  86,  9 }, { 186,  9 }, {  83,  8 }, { 189,  8 }, { 161,  8 },
611     { 111,  8 }, { 179,  8 }, {  93,  8 }, {  64,  7 }, { 192,  7 },
612     { 227,  8 }, {  45,  8 }, { 210,  8 }, {  62,  8 }, {   2,  7 },
613     {  14,  7 }, { 213,  8 }, {  59,  8 }, {  53,  8 }, { 219,  8 },
614     { 196,  8 }, {  76,  8 }, { 115,  9 }, { 157,  9 }, { 151, 10 },
615     { 121, 10 }, { 119, 10 }, { 153, 10 }, {  68,  8 }, { 204,  8 },
616     {  22,  8 }, { 250,  8 }, {  96,  8 }, { 160,  8 }, { 147,  9 },
617     { 125,  9 }, {  55,  9 }, { 217,  9 }, { 246,  8 }, {  26,  8 },
618     { 215,  9 }, {  57,  9 }, { 164,  9 }, { 108,  9 }, {  17,  7 },
619     { 255,  7 }, {   4,  7 }, {  12,  7 }, { 241,  7 }, {  31,  7 },
620     { 114,  9 }, { 158,  9 }, { 100,  9 }, { 172,  9 }, {   6,  8 },
621     {  10,  8 }, { 209,  8 }, {  63,  8 }, {  19,  8 }, { 253,  8 },
622     {  49,  8 }, { 223,  8 }, { 195,  8 }, {  77,  8 }, { 212,  8 },
623     {  60,  8 }, { 198,  9 }, {  74,  9 }, {  70,  9 }, { 202,  9 },
624     {  82,  8 }, { 190,  8 }, { 243,  8 }, {  29,  8 }, { 146,  9 },
625     { 126,  9 }, { 118, 10 }, { 154, 10 }, { 167, 10 }, { 105, 10 },
626     { 178,  8 }, {  94,  8 }, {  67,  8 }, { 205,  8 }, {  85,  9 },
627     { 187,  9 }, { 181,  9 }, {  91,  9 }, {  52,  8 }, { 220,  8 },
628     { 150, 10 }, { 122, 10 }, { 103, 10 }, { 169, 10 }, { 231,  9 },
629     {  41,  9 }, { 229,  8 }, {  43,  8 }, {  48,  8 }, { 208,  8 },
630     {  37,  8 }, { 235,  8 }, {  34,  8 }, { 238,  8 }, { 226,  8 },
631     {  46,  8 }, {  39,  9 }, { 233,  9 }, { 145,  9 }, { 127,  9 },
632     /* Coefficient table A.4.3 - 225 entries */
633     { 246,  8 }, {  26,  8 }, {  22,  8 }, { 250,  8 }, { 210,  7 },
634     {  62,  7 }, {  50,  7 }, { 222,  7 }, {  53,  8 }, { 219,  8 },
635     { 231,  9 }, {  41,  9 }, {  39,  9 }, { 233,  9 }, {  16,  5 },
636     { 240,  5 }, {   0,  4 }, { 227,  7 }, {  45,  7 }, {  35,  7 },
637     { 237,  7 }, { 196,  8 }, {  76,  8 }, { 151, 10 }, { 121, 10 },
638     { 119, 10 }, { 153, 10 }, { 150, 10 }, { 122, 10 }, { 167, 10 },
639     { 105, 10 }, { 118, 10 }, { 154, 10 }, { 103, 10 }, { 169, 10 },
640     { 117, 10 }, { 155, 10 }, { 149, 10 }, { 123, 10 }, {  96,  8 },
641     { 160,  8 }, { 166, 10 }, { 106, 10 }, { 183, 10 }, {  89, 10 },
642     {  87, 10 }, { 185, 10 }, { 102, 10 }, { 170, 10 }, {  71, 10 },
643     { 201, 10 }, { 116, 10 }, { 156, 10 }, { 148, 10 }, { 124, 10 },
644     { 199, 10 }, {  73, 10 }, { 182, 10 }, {  90, 10 }, { 165, 10 },
645     { 107, 10 }, { 181,  9 }, {  91,  9 }, {  68,  8 }, { 204,  8 },
646     {  85,  9 }, { 187,  9 }, { 113,  9 }, { 159,  9 }, {   6,  8 },
647     {  10,  8 }, {  65,  7 }, { 207,  7 }, {  32,  6 }, { 224,  6 },
648     {   2,  6 }, {  14,  6 }, { 193,  7 }, {  79,  7 }, { 145,  9 },
649     { 127,  9 }, { 163,  9 }, { 109,  9 }, {  99,  9 }, { 173,  9 },
650     { 247,  9 }, {  25,  9 }, {  20,  7 }, { 252,  7 }, { 244,  7 },
651     {  28,  7 }, { 178,  8 }, {  94,  8 }, {  82,  8 }, { 190,  8 },
652     {  23,  9 }, { 249,  9 }, {  54,  9 }, { 218,  9 }, { 214,  9 },
653     {  58,  9 }, { 112,  9 }, { 144,  9 }, {  49,  7 }, { 223,  7 },
654     { 209,  7 }, {  63,  7 }, {  37,  8 }, { 235,  8 }, { 229,  8 },
655     {  43,  8 }, {  19,  7 }, { 253,  7 }, { 243,  7 }, {  29,  7 },
656     {  64,  7 }, { 192,  7 }, { 195,  8 }, {  77,  8 }, {  67,  8 },
657     { 205,  8 }, { 212,  8 }, {  60,  8 }, {  52,  8 }, { 220,  8 },
658     {   7,  9 }, {   9,  9 }, { 180,  9 }, {  92,  9 }, { 197,  9 },
659     {  75,  9 }, {  84,  9 }, { 188,  9 }, {   4,  7 }, {  12,  7 },
660     {  48,  7 }, { 208,  7 }, {  34,  7 }, { 238,  7 }, { 226,  7 },
661     {  46,  7 }, { 101, 10 }, { 171, 10 }, {  86, 10 }, { 186, 10 },
662     {  69,  9 }, { 203,  9 }, { 211,  8 }, {  61,  8 }, {  17,  6 },
663     { 255,  6 }, { 241,  6 }, {  31,  6 }, {   3,  7 }, {  13,  7 },
664     {  51,  8 }, { 221,  8 }, {  98,  9 }, { 174,  9 }, { 162,  9 },
665     { 110,  9 }, { 177,  8 }, {  95,  8 }, {  81,  8 }, { 191,  8 },
666     {  38,  9 }, { 234,  9 }, { 230,  9 }, {  42,  9 }, {  21,  8 },
667     { 251,  8 }, { 245,  8 }, {  27,  8 }, { 115, 10 }, { 157, 10 },
668     {  55, 10 }, { 217, 10 }, { 147, 10 }, { 125, 10 }, { 215, 10 },
669     {  57, 10 }, {  80,  8 }, { 176,  8 }, {  66,  8 }, { 206,  8 },
670     { 194,  8 }, {  78,  8 }, {  97,  9 }, { 175,  9 }, { 161,  9 },
671     { 111,  9 }, {   5,  8 }, {  11,  8 }, { 228,  8 }, {  44,  8 },
672     {  36,  8 }, { 236,  8 }, { 114, 10 }, { 158, 10 }, { 100, 10 },
673     { 172, 10 }, {  83,  9 }, { 189,  9 }, {  33,  7 }, { 239,  7 },
674     { 164, 10 }, { 108, 10 }, { 198, 10 }, {  74, 10 }, { 179,  9 },
675     {  93,  9 }, {  70, 10 }, { 202, 10 }, { 146, 10 }, { 126, 10 },
676     { 213,  9 }, {  59,  9 }, {  18,  7 }, { 254,  7 }, { 225,  7 },
677     {  47,  7 }, { 242,  7 }, {  30,  7 }, {   1,  6 }, {  15,  6 },
678     /* Coefficient table A.4.4 - 225 entries */
679     { 193,  7 }, {  79,  7 }, {  20,  7 }, { 252,  7 }, { 151, 10 },
680     { 121, 10 }, { 119, 10 }, { 153, 10 }, { 118, 10 }, { 154, 10 },
681     { 150, 10 }, { 122, 10 }, { 167, 10 }, { 105, 10 }, { 103, 10 },
682     { 169, 10 }, { 117, 10 }, { 155, 10 }, { 149, 10 }, { 123, 10 },
683     { 244,  7 }, {  28,  7 }, {  87, 10 }, { 185, 10 }, { 183, 10 },
684     {  89, 10 }, { 166, 10 }, { 106, 10 }, { 102, 10 }, { 170, 10 },
685     {  71, 10 }, { 201, 10 }, { 148, 10 }, { 124, 10 }, { 199, 10 },
686     {  73, 10 }, { 116, 10 }, { 156, 10 }, { 165, 10 }, { 107, 10 },
687     { 182, 10 }, {  90, 10 }, {  86, 10 }, { 186, 10 }, { 115, 10 },
688     { 157, 10 }, { 101, 10 }, { 171, 10 }, { 147, 10 }, { 125, 10 },
689     {  55, 10 }, { 217, 10 }, { 215, 10 }, {  57, 10 }, { 114, 10 },
690     { 158, 10 }, { 146, 10 }, { 126, 10 }, { 164, 10 }, { 108, 10 },
691     {  39, 10 }, { 233, 10 }, { 100, 10 }, { 172, 10 }, { 231, 10 },
692     {  41, 10 }, { 198, 10 }, {  74, 10 }, {  70, 10 }, { 202, 10 },
693     { 145, 10 }, { 127, 10 }, { 181, 10 }, {  91, 10 }, {  85, 10 },
694     { 187, 10 }, { 113, 10 }, { 159, 10 }, { 247, 10 }, {  25, 10 },
695     { 112, 10 }, { 144, 10 }, {  23, 10 }, { 249, 10 }, {   7, 10 },
696     {   9, 10 }, {  99, 10 }, { 173, 10 }, {  54, 10 }, { 218, 10 },
697     { 163, 10 }, { 109, 10 }, { 214, 10 }, {  58, 10 }, { 197, 10 },
698     {  75, 10 }, {  84, 10 }, { 188, 10 }, {  98, 10 }, { 174, 10 },
699     {  69, 10 }, { 203, 10 }, {  67,  8 }, { 205,  8 }, { 180, 10 },
700     {  92, 10 }, { 162, 10 }, { 110, 10 }, {  97,  9 }, { 175,  9 },
701     {  81,  8 }, { 191,  8 }, { 177,  8 }, {  95,  8 }, { 210,  7 },
702     {  62,  7 }, { 212,  8 }, {  60,  8 }, { 195,  8 }, {  77,  8 },
703     {  35,  7 }, { 237,  7 }, {  64,  7 }, { 192,  7 }, {  50,  7 },
704     { 222,  7 }, { 227,  7 }, {  45,  7 }, {  52,  8 }, { 220,  8 },
705     {  21,  8 }, { 251,  8 }, {   4,  7 }, {  12,  7 }, { 245,  8 },
706     {  27,  8 }, { 161,  9 }, { 111,  9 }, {  22,  9 }, { 250,  9 },
707     { 225,  6 }, {  47,  6 }, {  33,  6 }, { 239,  6 }, {  18,  6 },
708     { 254,  6 }, { 242,  6 }, {  30,  6 }, {  80,  8 }, { 176,  8 },
709     { 246,  9 }, {  26,  9 }, {  96,  9 }, { 160,  9 }, {   5,  8 },
710     {  11,  8 }, {   6,  9 }, {  10,  9 }, { 179,  9 }, {  93,  9 },
711     {  83,  9 }, { 189,  9 }, {  53,  9 }, { 219,  9 }, { 213,  9 },
712     {  59,  9 }, { 196,  9 }, {  76,  9 }, {  49,  7 }, { 223,  7 },
713     {  16,  5 }, { 240,  5 }, {   1,  5 }, {  15,  5 }, {   0,  4 },
714     { 209,  7 }, {  63,  7 }, {  19,  7 }, { 253,  7 }, {  32,  6 },
715     { 224,  6 }, {   2,  6 }, {  14,  6 }, { 243,  7 }, {  29,  7 },
716     {  51,  8 }, { 221,  8 }, { 211,  8 }, {  61,  8 }, {  66,  8 },
717     { 206,  8 }, { 194,  8 }, {  78,  8 }, { 228,  8 }, {  44,  8 },
718     {  36,  8 }, { 236,  8 }, {  48,  7 }, { 208,  7 }, {   3,  7 },
719     {  13,  7 }, {  68,  9 }, { 204,  9 }, {  82,  9 }, { 190,  9 },
720     { 178,  9 }, {  94,  9 }, {  37,  9 }, { 235,  9 }, {  34,  7 },
721     { 238,  7 }, { 226,  7 }, {  46,  7 }, { 229,  9 }, {  43,  9 },
722     {  38, 10 }, { 234, 10 }, { 230, 10 }, {  42, 10 }, {  65,  8 },
723     { 207,  8 }, {  17,  6 }, { 255,  6 }, { 241,  6 }, {  31,  6 },
724     /* Coefficient table A.5.1 - 31 entries */
725     {   8,  4 }, {  24,  4 }, {  15,  5 }, {  17,  5 }, {   4,  5 },
726     {  28,  5 }, {   9,  4 }, {  23,  4 }, {  14,  5 }, {  18,  5 },
727     {   3,  5 }, {  29,  5 }, {  13,  5 }, {  19,  5 }, {   2,  5 },
728     {  30,  5 }, {  12,  5 }, {  20,  5 }, {   1,  5 }, {  31,  5 },
729     {   7,  6 }, {  25,  6 }, {   0,  5 }, {  11,  5 }, {  21,  5 },
730     {   6,  6 }, {  26,  6 }, {   5,  6 }, {  27,  6 }, {  10,  5 },
731     {  22,  5 },
732     /* Coefficient table A.5.2 - 31 entries */
733     {   2,  4 }, {  30,  4 }, {  11,  5 }, {  21,  5 }, {   7,  5 },
734     {  25,  5 }, {   1,  4 }, {  31,  4 }, {   6,  5 }, {  26,  5 },
735     {  10,  5 }, {  22,  5 }, {  15,  6 }, {  17,  6 }, {  14,  6 },
736     {  18,  6 }, {   0,  4 }, {   5,  5 }, {  27,  5 }, {   9,  5 },
737     {  23,  5 }, {   8,  5 }, {  24,  5 }, {   4,  5 }, {  28,  5 },
738     {  13,  6 }, {  19,  6 }, {  12,  6 }, {  20,  6 }, {   3,  5 },
739     {  29,  5 },
740     /* Coefficient table A.5.3 - 31 entries */
741     {   0,  3 }, {   9,  5 }, {  23,  5 }, {   7,  5 }, {  25,  5 },
742     {   3,  4 }, {  29,  4 }, {   8,  5 }, {  24,  5 }, {  15,  7 },
743     {  17,  7 }, {  14,  7 }, {  18,  7 }, {  11,  6 }, {  21,  6 },
744     {   2,  4 }, {  30,  4 }, {   6,  5 }, {  26,  5 }, {   5,  5 },
745     {  27,  5 }, {   1,  4 }, {  31,  4 }, {  10,  6 }, {  22,  6 },
746     {  13,  7 }, {  19,  7 }, {  12,  7 }, {  20,  7 }, {   4,  5 },
747     {  28,  5 },
748     /* Coefficient table A.5.4 - 31 entries */
749     {   8,  5 }, {  24,  5 }, {   7,  5 }, {  25,  5 }, {   4,  4 },
750     {  28,  4 }, {   0,  3 }, {  10,  6 }, {  22,  6 }, {  13,  7 },
751     {  19,  7 }, {  12,  7 }, {  20,  7 }, {   6,  5 }, {  26,  5 },
752     {   3,  4 }, {  29,  4 }, {   2,  4 }, {  30,  4 }, {   9,  6 },
753     {  23,  6 }, {  15,  8 }, {  17,  8 }, {  14,  8 }, {  18,  8 },
754     {  11,  7 }, {  21,  7 }, {   5,  5 }, {  27,  5 }, {   1,  4 },
755     {  31,  4 },
756     /* Coefficient table A.6.1 - 63 entries */
757     {  19,  5 }, {  45,  5 }, {  31,  6 }, {  33,  6 }, {  30,  6 },
758     {  34,  6 }, {  16,  5 }, {  48,  5 }, {   8,  6 }, {  56,  6 },
759     {   7,  6 }, {  57,  6 }, {  18,  5 }, {  46,  5 }, {  29,  6 },
760     {  35,  6 }, {  28,  6 }, {  36,  6 }, {   6,  6 }, {  58,  6 },
761     {  27,  6 }, {  37,  6 }, {  17,  5 }, {  47,  5 }, {   5,  6 },
762     {  59,  6 }, {  26,  6 }, {  38,  6 }, {   4,  6 }, {  60,  6 },
763     {  25,  6 }, {  39,  6 }, {   3,  6 }, {  61,  6 }, {   2,  6 },
764     {  62,  6 }, {  24,  6 }, {  40,  6 }, {  15,  7 }, {  49,  7 },
765     {  14,  7 }, {  50,  7 }, {   1,  6 }, {  63,  6 }, {  23,  6 },
766     {  41,  6 }, {  13,  7 }, {  51,  7 }, {   0,  6 }, {  22,  6 },
767     {  42,  6 }, {  12,  7 }, {  52,  7 }, {  11,  7 }, {  53,  7 },
768     {  21,  6 }, {  43,  6 }, {  20,  6 }, {  44,  6 }, {  10,  7 },
769     {  54,  7 }, {   9,  7 }, {  55,  7 },
770     /* Coefficient table A.6.2 - 63 entries */
771     {  23,  6 }, {  41,  6 }, {  15,  6 }, {  49,  6 }, {   4,  5 },
772     {  60,  5 }, {   3,  5 }, {  61,  5 }, {  22,  6 }, {  42,  6 },
773     {  14,  6 }, {  50,  6 }, {   2,  5 }, {  62,  5 }, {  31,  7 },
774     {  33,  7 }, {  30,  7 }, {  34,  7 }, {  21,  6 }, {  43,  6 },
775     {  13,  6 }, {  51,  6 }, {  12,  6 }, {  52,  6 }, {   1,  5 },
776     {  63,  5 }, {  20,  6 }, {  44,  6 }, {  29,  7 }, {  35,  7 },
777     {  28,  7 }, {  36,  7 }, {  11,  6 }, {  53,  6 }, {  19,  6 },
778     {  45,  6 }, {   0,  5 }, {  10,  6 }, {  54,  6 }, {  18,  6 },
779     {  46,  6 }, {  27,  7 }, {  37,  7 }, {  26,  7 }, {  38,  7 },
780     {   9,  6 }, {  55,  6 }, {  16,  6 }, {  48,  6 }, {   8,  6 },
781     {  56,  6 }, {  17,  6 }, {  47,  6 }, {   7,  6 }, {  57,  6 },
782     {  25,  7 }, {  39,  7 }, {  24,  7 }, {  40,  7 }, {   6,  6 },
783     {  58,  6 }, {   5,  6 }, {  59,  6 },
784     /* Coefficient table A.6.3 - 63 entries */
785     {   0,  4 }, {   7,  5 }, {  57,  5 }, {  15,  6 }, {  49,  6 },
786     {  25,  7 }, {  39,  7 }, {  24,  7 }, {  40,  7 }, {  18,  6 },
787     {  46,  6 }, {  14,  6 }, {  50,  6 }, {   6,  5 }, {  58,  5 },
788     {   5,  5 }, {  59,  5 }, {  31,  8 }, {  33,  8 }, {  30,  8 },
789     {  34,  8 }, {  23,  7 }, {  41,  7 }, {  17,  6 }, {  47,  6 },
790     {  13,  6 }, {  51,  6 }, {  16,  6 }, {  48,  6 }, {   4,  5 },
791     {  60,  5 }, {  12,  6 }, {  52,  6 }, {  22,  7 }, {  42,  7 },
792     {  29,  8 }, {  35,  8 }, {  28,  8 }, {  36,  8 }, {   3,  5 },
793     {  61,  5 }, {  11,  6 }, {  53,  6 }, {  10,  6 }, {  54,  6 },
794     {   2,  5 }, {  62,  5 }, {  21,  7 }, {  43,  7 }, {  20,  7 },
795     {  44,  7 }, {   9,  6 }, {  55,  6 }, {   1,  5 }, {  63,  5 },
796     {  27,  8 }, {  37,  8 }, {  26,  8 }, {  38,  8 }, {  19,  7 },
797     {  45,  7 }, {   8,  6 }, {  56,  6 },
798     /* Coefficient table A.6.4 - 63 entries */
799     {  16,  6 }, {  48,  6 }, {  27,  8 }, {  37,  8 }, {  26,  8 },
800     {  38,  8 }, {  21,  7 }, {  43,  7 }, {   8,  5 }, {  56,  5 },
801     {   1,  4 }, {  63,  4 }, {  14,  6 }, {  50,  6 }, {  20,  7 },
802     {  44,  7 }, {  31,  9 }, {  33,  9 }, {  30,  9 }, {  34,  9 },
803     {  25,  8 }, {  39,  8 }, {   7,  5 }, {  57,  5 }, {   0,  4 },
804     {   6,  5 }, {  58,  5 }, {  13,  6 }, {  51,  6 }, {  12,  6 },
805     {  52,  6 }, {   5,  5 }, {  59,  5 }, {  19,  7 }, {  45,  7 },
806     {  24,  8 }, {  40,  8 }, {  29,  9 }, {  35,  9 }, {  28,  9 },
807     {  36,  9 }, {  11,  6 }, {  53,  6 }, {   4,  5 }, {  60,  5 },
808     {  18,  7 }, {  46,  7 }, {  23,  8 }, {  41,  8 }, {  22,  8 },
809     {  42,  8 }, {  10,  6 }, {  54,  6 }, {   3,  5 }, {  61,  5 },
810     {   2,  5 }, {  62,  5 }, {  17,  7 }, {  47,  7 }, {  15,  7 },
811     {  49,  7 }, {   9,  6 }, {  55,  6 },
812     /* Coefficient table A.7.1 - 127 entries */
813     {  18,  7 }, { 110,  7 }, {  63,  7 }, {  65,  7 }, {  38,  6 },
814     {  90,  6 }, {  17,  7 }, { 111,  7 }, {  62,  7 }, {  66,  7 },
815     {  61,  7 }, {  67,  7 }, {  16,  7 }, { 112,  7 }, {  37,  6 },
816     {  91,  6 }, {  60,  7 }, {  68,  7 }, {  15,  7 }, { 113,  7 },
817     {  32,  6 }, {  96,  6 }, {  59,  7 }, {  69,  7 }, {  14,  7 },
818     { 114,  7 }, {  36,  6 }, {  92,  6 }, {  58,  7 }, {  70,  7 },
819     {  13,  7 }, { 115,  7 }, {  57,  7 }, {  71,  7 }, {  12,  7 },
820     { 116,  7 }, {  35,  6 }, {  93,  6 }, {  56,  7 }, {  72,  7 },
821     {  55,  7 }, {  73,  7 }, {  11,  7 }, { 117,  7 }, {  10,  7 },
822     { 118,  7 }, {  34,  6 }, {  94,  6 }, {  54,  7 }, {  74,  7 },
823     {   9,  7 }, { 119,  7 }, {  33,  6 }, {  95,  6 }, {  53,  7 },
824     {  75,  7 }, {  52,  7 }, {  76,  7 }, {   8,  7 }, { 120,  7 },
825     {  51,  7 }, {  77,  7 }, {  50,  7 }, {  78,  7 }, {   7,  7 },
826     { 121,  7 }, {   5,  7 }, { 123,  7 }, {   6,  7 }, { 122,  7 },
827     {  49,  7 }, {  79,  7 }, {   4,  7 }, { 124,  7 }, {  31,  8 },
828     {  97,  8 }, {  30,  8 }, {  98,  8 }, {  48,  7 }, {  80,  7 },
829     {   3,  7 }, { 125,  7 }, {  29,  8 }, {  99,  8 }, {  28,  8 },
830     { 100,  8 }, {  47,  7 }, {  81,  7 }, {   2,  7 }, { 126,  7 },
831     {  46,  7 }, {  82,  7 }, {   1,  7 }, { 127,  7 }, {  27,  8 },
832     { 101,  8 }, {  26,  8 }, { 102,  8 }, {  45,  7 }, {  83,  7 },
833     {   0,  7 }, {  25,  8 }, { 103,  8 }, {  44,  7 }, {  84,  7 },
834     {  24,  8 }, { 104,  8 }, {  23,  8 }, { 105,  8 }, {  43,  7 },
835     {  85,  7 }, {  42,  7 }, {  86,  7 }, {  22,  8 }, { 106,  8 },
836     {  21,  8 }, { 107,  8 }, {  41,  7 }, {  87,  7 }, {  20,  8 },
837     { 108,  8 }, {  19,  8 }, { 109,  8 }, {  40,  7 }, {  88,  7 },
838     {  39,  7 }, {  89,  7 },
839     /* Coefficient table A.7.2 - 127 entries */
840     {  47,  7 }, {  81,  7 }, {  46,  7 }, {  82,  7 }, {   8,  6 },
841     { 120,  6 }, {  31,  7 }, {  97,  7 }, {  45,  7 }, {  83,  7 },
842     {   7,  6 }, { 121,  6 }, {  30,  7 }, {  98,  7 }, {  29,  7 },
843     {  99,  7 }, {   6,  6 }, { 122,  6 }, {  63,  8 }, {  65,  8 },
844     {  62,  8 }, {  66,  8 }, {  44,  7 }, {  84,  7 }, {   5,  6 },
845     { 123,  6 }, {  28,  7 }, { 100,  7 }, {  43,  7 }, {  85,  7 },
846     {   4,  6 }, { 124,  6 }, {  27,  7 }, { 101,  7 }, {  26,  7 },
847     { 102,  7 }, {  42,  7 }, {  86,  7 }, {  61,  8 }, {  67,  8 },
848     {  60,  8 }, {  68,  8 }, {   3,  6 }, { 125,  6 }, {  25,  7 },
849     { 103,  7 }, {  41,  7 }, {  87,  7 }, {   2,  6 }, { 126,  6 },
850     {  24,  7 }, { 104,  7 }, {  59,  8 }, {  69,  8 }, {  58,  8 },
851     {  70,  8 }, {  40,  7 }, {  88,  7 }, {  23,  7 }, { 105,  7 },
852     {  39,  7 }, {  89,  7 }, {  22,  7 }, { 106,  7 }, {   1,  6 },
853     { 127,  6 }, {  57,  8 }, {  71,  8 }, {  56,  8 }, {  72,  8 },
854     {  21,  7 }, { 107,  7 }, {  38,  7 }, {  90,  7 }, {  20,  7 },
855     { 108,  7 }, {   0,  6 }, {  55,  8 }, {  73,  8 }, {  54,  8 },
856     {  74,  8 }, {  37,  7 }, {  91,  7 }, {  19,  7 }, { 109,  7 },
857     {  18,  7 }, { 110,  7 }, {  36,  7 }, {  92,  7 }, {  53,  8 },
858     {  75,  8 }, {  52,  8 }, {  76,  8 }, {  17,  7 }, { 111,  7 },
859     {  35,  7 }, {  93,  7 }, {  32,  7 }, {  96,  7 }, {  16,  7 },
860     { 112,  7 }, {  15,  7 }, { 113,  7 }, {  34,  7 }, {  94,  7 },
861     {  51,  8 }, {  77,  8 }, {  50,  8 }, {  78,  8 }, {  14,  7 },
862     { 114,  7 }, {  13,  7 }, { 115,  7 }, {  33,  7 }, {  95,  7 },
863     {  12,  7 }, { 116,  7 }, {  49,  8 }, {  79,  8 }, {  48,  8 },
864     {  80,  8 }, {  11,  7 }, { 117,  7 }, {  10,  7 }, { 118,  7 },
865     {   9,  7 }, { 119,  7 },
866     /* Coefficient table A.7.3 - 127 entries */
867     {  15,  6 }, { 113,  6 }, {  31,  7 }, {  97,  7 }, {  51,  8 },
868     {  77,  8 }, {  50,  8 }, {  78,  8 }, {  14,  6 }, { 114,  6 },
869     {   0,  5 }, {  37,  7 }, {  91,  7 }, {  30,  7 }, {  98,  7 },
870     {  13,  6 }, { 115,  6 }, {  29,  7 }, {  99,  7 }, {  49,  8 },
871     {  79,  8 }, {  63,  9 }, {  65,  9 }, {  62,  9 }, {  66,  9 },
872     {  12,  6 }, { 116,  6 }, {  36,  7 }, {  92,  7 }, {  28,  7 },
873     { 100,  7 }, {  35,  7 }, {  93,  7 }, {  48,  8 }, {  80,  8 },
874     {  47,  8 }, {  81,  8 }, {  11,  6 }, { 117,  6 }, {  10,  6 },
875     { 118,  6 }, {  27,  7 }, { 101,  7 }, {  34,  7 }, {  94,  7 },
876     {  61,  9 }, {  67,  9 }, {  60,  9 }, {  68,  9 }, {  46,  8 },
877     {  82,  8 }, {  26,  7 }, { 102,  7 }, {   9,  6 }, { 119,  6 },
878     {  32,  7 }, {  96,  7 }, {  33,  7 }, {  95,  7 }, {   8,  6 },
879     { 120,  6 }, {  25,  7 }, { 103,  7 }, {  45,  8 }, {  83,  8 },
880     {  59,  9 }, {  69,  9 }, {  58,  9 }, {  70,  9 }, {   7,  6 },
881     { 121,  6 }, {  24,  7 }, { 104,  7 }, {  23,  7 }, { 105,  7 },
882     {   6,  6 }, { 122,  6 }, {  44,  8 }, {  84,  8 }, {  57,  9 },
883     {  71,  9 }, {  56,  9 }, {  72,  9 }, {  22,  7 }, { 106,  7 },
884     {   5,  6 }, { 123,  6 }, {  43,  8 }, {  85,  8 }, {  42,  8 },
885     {  86,  8 }, {  21,  7 }, { 107,  7 }, {   4,  6 }, { 124,  6 },
886     {  20,  7 }, { 108,  7 }, {  55,  9 }, {  73,  9 }, {  54,  9 },
887     {  74,  9 }, {  41,  8 }, {  87,  8 }, {   3,  6 }, { 125,  6 },
888     {  19,  7 }, { 109,  7 }, {  18,  7 }, { 110,  7 }, {   2,  6 },
889     { 126,  6 }, {  40,  8 }, {  88,  8 }, {  53,  9 }, {  75,  9 },
890     {  52,  9 }, {  76,  9 }, {  17,  7 }, { 111,  7 }, {  39,  8 },
891     {  89,  8 }, {  38,  8 }, {  90,  8 }, {  16,  7 }, { 112,  7 },
892     {   1,  6 }, { 127,  6 },
893     /* Coefficient table A.7.4 - 127 entries */
894     {   3,  5 }, { 125,  5 }, {  32,  7 }, {  96,  7 }, {  29,  7 },
895     {  99,  7 }, {  16,  6 }, { 112,  6 }, {   2,  5 }, { 126,  5 },
896     {  53,  9 }, {  75,  9 }, {  52,  9 }, {  76,  9 }, {  42,  8 },
897     {  86,  8 }, {  28,  7 }, { 100,  7 }, {  15,  6 }, { 113,  6 },
898     {  63, 10 }, {  65, 10 }, {  62, 10 }, {  66, 10 }, {  51,  9 },
899     {  77,  9 }, {  41,  8 }, {  87,  8 }, {  27,  7 }, { 101,  7 },
900     {  14,  6 }, { 114,  6 }, {   1,  5 }, { 127,  5 }, {  13,  6 },
901     { 115,  6 }, {   0,  5 }, {  26,  7 }, { 102,  7 }, {  40,  8 },
902     {  88,  8 }, {  50,  9 }, {  78,  9 }, {  61, 10 }, {  67, 10 },
903     {  60, 10 }, {  68, 10 }, {  12,  6 }, { 116,  6 }, {  25,  7 },
904     { 103,  7 }, {  39,  8 }, {  89,  8 }, {  49,  9 }, {  79,  9 },
905     {  48,  9 }, {  80,  9 }, {  11,  6 }, { 117,  6 }, {  24,  7 },
906     { 104,  7 }, {  38,  8 }, {  90,  8 }, {  59, 10 }, {  69, 10 },
907     {  58, 10 }, {  70, 10 }, {  47,  9 }, {  81,  9 }, {  10,  6 },
908     { 118,  6 }, {   9,  6 }, { 119,  6 }, {  23,  7 }, { 105,  7 },
909     {  22,  7 }, { 106,  7 }, {   8,  6 }, { 120,  6 }, {  37,  8 },
910     {  91,  8 }, {  36,  8 }, {  92,  8 }, {  21,  7 }, { 107,  7 },
911     {   7,  6 }, { 121,  6 }, {   6,  6 }, { 122,  6 }, {  57, 10 },
912     {  71, 10 }, {  56, 10 }, {  72, 10 }, {  46,  9 }, {  82,  9 },
913     {  35,  8 }, {  93,  8 }, {  20,  7 }, { 108,  7 }, {   5,  6 },
914     { 123,  6 }, {  19,  7 }, { 109,  7 }, {  45,  9 }, {  83,  9 },
915     {  44,  9 }, {  84,  9 }, {  31,  8 }, {  97,  8 }, {   4,  6 },
916     { 124,  6 }, {  34,  8 }, {  94,  8 }, {  55, 10 }, {  73, 10 },
917     {  54, 10 }, {  74, 10 }, {  43,  9 }, {  85,  9 }, {  18,  7 },
918     { 110,  7 }, {  30,  8 }, {  98,  8 }, {  33,  8 }, {  95,  8 },
919     {  17,  7 }, { 111,  7 },
920     /* Coefficient table B.2.2 - 80 entries */
921     {  80,  5 }, { 240,  5 }, { 253, 10 }, {  87, 10 }, { 117, 10 },
922     { 223, 10 }, {  93, 10 }, { 247, 10 }, { 221, 10 }, { 119, 10 },
923     { 213, 10 }, { 127, 10 }, {  85, 10 }, { 255, 10 }, { 245, 10 },
924     {  95, 10 }, {  81, 10 }, { 243, 10 }, {  17,  7 }, {  51,  7 },
925     {  20,  6 }, {  60,  6 }, { 116,  9 }, { 220,  9 }, {  84,  9 },
926     { 252,  9 }, {  68,  8 }, { 204,  8 }, { 212,  7 }, { 124,  7 },
927     { 196,  6 }, {  76,  6 }, {   5,  5 }, {  15,  5 }, {  53,  7 },
928     {  31,  7 }, {  61,  7 }, {  23,  7 }, {  52,  6 }, {  28,  6 },
929     {  13,  5 }, {   7,  5 }, {  16,  4 }, {  48,  4 }, {   4,  4 },
930     {  12,  4 }, {  49,  6 }, {  19,  6 }, { 244,  7 }, {  92,  7 },
931     {  21,  9 }, {  63,  9 }, { 197,  9 }, {  79,  9 }, {  69, 10 },
932     { 207, 10 }, { 205, 10 }, {  71, 10 }, { 241,  9 }, {  83,  9 },
933     { 208,  6 }, { 112,  6 }, {  77,  9 }, { 199,  9 }, { 113,  9 },
934     { 211,  9 }, {  29,  9 }, {  55,  9 }, { 209, 10 }, { 115, 10 },
935     { 125, 10 }, { 215, 10 }, {  65,  8 }, { 195,  8 }, { 193,  8 },
936     {  67,  8 }, {  64,  4 }, { 192,  4 }, {   1,  4 }, {   3,  4 },
937     /* Coefficient table B.2.3 - 81 entries */
938     {  16,  4 }, {  48,  4 }, {   4,  4 }, {  12,  4 }, {  64,  4 },
939     { 192,  4 }, {   5,  6 }, {  15,  6 }, {  13,  6 }, {   7,  6 },
940     { 212,  8 }, { 124,  8 }, { 213, 10 }, { 127, 10 }, {  93, 10 },
941     { 247, 10 }, { 117, 10 }, { 223, 10 }, { 253, 10 }, {  87, 10 },
942     {  21,  9 }, {  63,  9 }, { 221, 10 }, { 119, 10 }, {  81, 10 },
943     { 243, 10 }, { 205, 10 }, {  71, 10 }, {  69, 10 }, { 207, 10 },
944     { 245, 10 }, {  95, 10 }, { 209, 10 }, { 115, 10 }, { 125, 10 },
945     { 215, 10 }, {  85, 10 }, { 255, 10 }, { 116, 10 }, { 220, 10 },
946     { 241, 10 }, {  83, 10 }, {  77, 10 }, { 199, 10 }, {  84, 10 },
947     { 252, 10 }, {  29,  9 }, {  55,  9 }, {  61,  8 }, {  23,  8 },
948     {  53,  8 }, {  31,  8 }, {   1,  4 }, {   3,  4 }, { 193,  8 },
949     {  67,  8 }, {  65,  8 }, { 195,  8 }, { 196,  7 }, {  76,  7 },
950     {  49,  7 }, {  19,  7 }, {  20,  7 }, {  60,  7 }, {  52,  7 },
951     {  28,  7 }, { 208,  7 }, { 112,  7 }, {  80,  7 }, { 240,  7 },
952     { 113, 10 }, { 211, 10 }, { 197, 10 }, {  79, 10 }, {  68,  9 },
953     { 204,  9 }, {  17,  9 }, {  51,  9 }, { 244,  9 }, {  92,  9 },
954     {   0,  2 },
955     /* Coefficient table B.2.4 - 81 entries */
956     {   1,  4 }, {   3,  4 }, {  52,  7 }, {  28,  7 }, { 193,  8 },
957     {  67,  8 }, { 213, 10 }, { 127, 10 }, { 253, 10 }, {  87, 10 },
958     {  93, 10 }, { 247, 10 }, { 117, 10 }, { 223, 10 }, {  80,  7 },
959     { 240,  7 }, { 196,  7 }, {  76,  7 }, { 208,  7 }, { 112,  7 },
960     { 221, 10 }, { 119, 10 }, { 245, 10 }, {  95, 10 }, {  69, 10 },
961     { 207, 10 }, {  85, 10 }, { 255, 10 }, { 209, 10 }, { 115, 10 },
962     { 205, 10 }, {  71, 10 }, {  81, 10 }, { 243, 10 }, { 125, 10 },
963     { 215, 10 }, {   5,  7 }, {  15,  7 }, { 116, 10 }, { 220, 10 },
964     {  84, 10 }, { 252, 10 }, {  29, 10 }, {  55, 10 }, { 113, 10 },
965     { 211, 10 }, { 241, 10 }, {  83, 10 }, {  21, 10 }, {  63, 10 },
966     { 197, 10 }, {  79, 10 }, {  77, 10 }, { 199, 10 }, {  16,  5 },
967     {  48,  5 }, {   4,  5 }, {  12,  5 }, {  49,  7 }, {  19,  7 },
968     {  13,  7 }, {   7,  7 }, { 212, 10 }, { 124, 10 }, { 244, 10 },
969     {  92, 10 }, {  68,  9 }, { 204,  9 }, {  53,  9 }, {  31,  9 },
970     {  61,  9 }, {  23,  9 }, {  17,  9 }, {  51,  9 }, {  65,  9 },
971     { 195,  9 }, {  20,  8 }, {  60,  8 }, {  64,  5 }, { 192,  5 },
972     {   0,  1 },
973     /* Coefficient table B.3.2 - 49 entries */
974     {  58,  5 }, {  14,  5 }, {  59,  6 }, {  13,  6 }, {  19,  7 },
975     {  53,  7 }, {  25,  7 }, {  47,  7 }, {   1,  4 }, {   7,  4 },
976     {   0,  2 }, {   9,  6 }, {  63,  6 }, {  57,  6 }, {  15,  6 },
977     {  24,  6 }, {  40,  6 }, {  17,  6 }, {  55,  6 }, {  42,  8 },
978     {  30,  8 }, {  43,  9 }, {  29,  9 }, {  27,  9 }, {  45,  9 },
979     {  41,  7 }, {  31,  7 }, {   3,  6 }, {   5,  6 }, {   8,  5 },
980     {  56,  5 }, {  49,  6 }, {  23,  6 }, {  11,  7 }, {  61,  7 },
981     {  26,  8 }, {  46,  8 }, {  51,  8 }, {  21,  8 }, {  16,  5 },
982     {  48,  5 }, {  18,  7 }, {  54,  7 }, {  50,  7 }, {  22,  7 },
983     {  10,  6 }, {  62,  6 }, {   2,  5 }, {   6,  5 },
984     /* Coefficient table B.3.3 - 49 entries */
985     {  57,  5 }, {  15,  5 }, {   9,  5 }, {  63,  5 }, {  59,  7 },
986     {  13,  7 }, {  50,  7 }, {  22,  7 }, {  18,  7 }, {  54,  7 },
987     {  51,  8 }, {  21,  8 }, {  27, 10 }, {  45, 10 }, {  43, 10 },
988     {  29, 10 }, {  26,  9 }, {  46,  9 }, {  17,  6 }, {  55,  6 },
989     {  49,  6 }, {  23,  6 }, {   8,  4 }, {  56,  4 }, {  16,  5 },
990     {  48,  5 }, {  10,  6 }, {  62,  6 }, {  58,  6 }, {  14,  6 },
991     {   1,  4 }, {   7,  4 }, {   2,  5 }, {   6,  5 }, {  25,  8 },
992     {  47,  8 }, {  42,  9 }, {  30,  9 }, {  19,  9 }, {  53,  9 },
993     {  24,  7 }, {  40,  7 }, {  41,  8 }, {  31,  8 }, {  11,  8 },
994     {  61,  8 }, {   3,  7 }, {   5,  7 }, {   0,  2 },
995     /* Coefficient table B.3.4 - 49 entries */
996     {   0,  1 }, {   8,  4 }, {  56,  4 }, {   1,  4 }, {   7,  4 },
997     {  59,  8 }, {  13,  8 }, {  27, 10 }, {  45, 10 }, {  43, 10 },
998     {  29, 10 }, {  26, 10 }, {  46, 10 }, {  51, 10 }, {  21, 10 },
999     {  18,  8 }, {  54,  8 }, {  50,  8 }, {  22,  8 }, {  16,  6 },
1000     {  48,  6 }, {  17,  7 }, {  55,  7 }, {  24,  8 }, {  40,  8 },
1001     {  19, 10 }, {  53, 10 }, {  42, 10 }, {  30, 10 }, {  25,  9 },
1002     {  47,  9 }, {  49,  7 }, {  23,  7 }, {  10,  7 }, {  62,  7 },
1003     {   2,  6 }, {   6,  6 }, {  58,  7 }, {  14,  7 }, {  11,  9 },
1004     {  61,  9 }, {  41,  9 }, {  31,  9 }, {   3,  8 }, {   5,  8 },
1005     {   9,  6 }, {  63,  6 }, {  57,  6 }, {  15,  6 },
1006     /* Coefficient table B.4.2 - 225 entries */
1007     {  33,  7 }, { 239,  7 }, {  36,  7 }, { 236,  7 }, { 119, 10 },
1008     { 153, 10 }, { 151, 10 }, { 121, 10 }, { 118, 10 }, { 154, 10 },
1009     { 167, 10 }, { 105, 10 }, { 247,  8 }, {  25,  8 }, { 112,  8 },
1010     { 144,  8 }, { 150, 10 }, { 122, 10 }, { 103, 10 }, { 169, 10 },
1011     {  87, 10 }, { 185, 10 }, { 183, 10 }, {  89, 10 }, {  53,  8 },
1012     { 219,  8 }, { 213,  8 }, {  59,  8 }, { 228,  7 }, {  44,  7 },
1013     { 225,  7 }, {  47,  7 }, { 166, 10 }, { 106, 10 }, { 102, 10 },
1014     { 170, 10 }, { 149, 10 }, { 123, 10 }, { 117, 10 }, { 155, 10 },
1015     { 114,  9 }, { 158,  9 }, { 165, 10 }, { 107, 10 }, { 148, 10 },
1016     { 124, 10 }, {  81,  7 }, { 191,  7 }, {  21,  7 }, { 251,  7 },
1017     {  64,  6 }, { 192,  6 }, { 242,  7 }, {  30,  7 }, { 116, 10 },
1018     { 156, 10 }, {  71, 10 }, { 201, 10 }, { 101, 10 }, { 171, 10 },
1019     { 199, 10 }, {  73, 10 }, {  19,  8 }, { 253,  8 }, {  18,  7 },
1020     { 254,  7 }, { 182, 10 }, {  90, 10 }, {  86, 10 }, { 186, 10 },
1021     {  39,  9 }, { 233,  9 }, {  34,  8 }, { 238,  8 }, {   2,  6 },
1022     {  14,  6 }, { 177,  7 }, {  95,  7 }, { 231,  9 }, {  41,  9 },
1023     { 146,  9 }, { 126,  9 }, {  67,  8 }, { 205,  8 }, {  17,  6 },
1024     { 255,  6 }, { 241,  6 }, {  31,  6 }, {  16,  5 }, { 240,  5 },
1025     { 243,  8 }, {  29,  8 }, { 195,  8 }, {  77,  8 }, { 245,  7 },
1026     {  27,  7 }, {   7,  8 }, {   9,  8 }, { 209,  8 }, {  63,  8 },
1027     {  99,  9 }, { 173,  9 }, { 163,  9 }, { 109,  9 }, { 226,  8 },
1028     {  46,  8 }, { 212,  8 }, {  60,  8 }, {  97,  8 }, { 175,  8 },
1029     { 161,  8 }, { 111,  8 }, {  52,  8 }, { 220,  8 }, { 180,  9 },
1030     {  92,  9 }, {  50,  9 }, { 222,  9 }, {  35,  9 }, { 237,  9 },
1031     { 211, 10 }, {  61, 10 }, {  51, 10 }, { 221, 10 }, { 210,  9 },
1032     {  62,  9 }, {  84,  9 }, { 188,  9 }, {  82,  8 }, { 190,  8 },
1033     {   4,  6 }, {  12,  6 }, { 227,  9 }, {  45,  9 }, { 214,  9 },
1034     {  58,  9 }, {  54,  9 }, { 218,  9 }, { 197,  9 }, {  75,  9 },
1035     { 178,  8 }, {  94,  8 }, {  22,  8 }, { 250,  8 }, {  65,  7 },
1036     { 207,  7 }, {  80,  7 }, { 176,  7 }, { 246,  8 }, {  26,  8 },
1037     {  69,  9 }, { 203,  9 }, { 145,  9 }, { 127,  9 }, { 193,  7 },
1038     {  79,  7 }, {  37,  8 }, { 235,  8 }, { 229,  8 }, {  43,  8 },
1039     {   5,  7 }, {  11,  7 }, {  20,  7 }, { 252,  7 }, { 244,  7 },
1040     {  28,  7 }, {   1,  5 }, {  15,  5 }, {  98,  9 }, { 174,  9 },
1041     { 147, 10 }, { 125, 10 }, { 115, 10 }, { 157, 10 }, {  96,  8 },
1042     { 160,  8 }, { 113,  9 }, { 159,  9 }, {  38,  9 }, { 234,  9 },
1043     { 162,  9 }, { 110,  9 }, {  55, 10 }, { 217, 10 }, { 215, 10 },
1044     {  57, 10 }, {  48,  8 }, { 208,  8 }, {  68,  9 }, { 204,  9 },
1045     { 164, 10 }, { 108, 10 }, { 100, 10 }, { 172, 10 }, {  32,  7 },
1046     { 224,  7 }, {   0,  4 }, {   3,  8 }, {  13,  8 }, {  23,  9 },
1047     { 249,  9 }, { 230,  9 }, {  42,  9 }, {  83,  9 }, { 189,  9 },
1048     { 181, 10 }, {  91, 10 }, { 198, 10 }, {  74, 10 }, {   6,  8 },
1049     {  10,  8 }, {  66,  8 }, { 206,  8 }, { 179,  9 }, {  93,  9 },
1050     {  70, 10 }, { 202, 10 }, {  85, 10 }, { 187, 10 }, { 194,  8 },
1051     {  78,  8 }, { 196,  9 }, {  76,  9 }, {  49,  9 }, { 223,  9 },
1052     /* Coefficient table B.4.3 - 225 entries */
1053     { 193,  7 }, {  79,  7 }, {  48,  7 }, { 208,  7 }, {   6,  8 },
1054     {  10,  8 }, { 151, 10 }, { 121, 10 }, { 119, 10 }, { 153, 10 },
1055     { 167, 10 }, { 105, 10 }, { 118, 10 }, { 154, 10 }, { 103, 10 },
1056     { 169, 10 }, { 150, 10 }, { 122, 10 }, { 102, 10 }, { 170, 10 },
1057     { 183, 10 }, {  89, 10 }, { 117, 10 }, { 155, 10 }, { 149, 10 },
1058     { 123, 10 }, { 166, 10 }, { 106, 10 }, {  87, 10 }, { 185, 10 },
1059     { 116, 10 }, { 156, 10 }, { 148, 10 }, { 124, 10 }, {  71, 10 },
1060     { 201, 10 }, { 199, 10 }, {  73, 10 }, { 165, 10 }, { 107, 10 },
1061     { 182, 10 }, {  90, 10 }, { 101, 10 }, { 171, 10 }, {  86, 10 },
1062     { 186, 10 }, {  20,  7 }, { 252,  7 }, {  55, 10 }, { 217, 10 },
1063     { 147, 10 }, { 125, 10 }, { 115, 10 }, { 157, 10 }, { 215, 10 },
1064     {  57, 10 }, { 100, 10 }, { 172, 10 }, { 181, 10 }, {  91, 10 },
1065     { 198, 10 }, {  74, 10 }, { 114, 10 }, { 158, 10 }, { 244,  7 },
1066     {  28,  7 }, {  70, 10 }, { 202, 10 }, { 164, 10 }, { 108, 10 },
1067     {  85, 10 }, { 187, 10 }, { 146, 10 }, { 126, 10 }, {  39, 10 },
1068     { 233, 10 }, { 231, 10 }, {  41, 10 }, {  53,  9 }, { 219,  9 },
1069     {  54, 10 }, { 218, 10 }, {  99, 10 }, { 173, 10 }, { 214, 10 },
1070     {  58, 10 }, { 163, 10 }, { 109, 10 }, { 197, 10 }, {  75, 10 },
1071     {  84, 10 }, { 188, 10 }, {  69, 10 }, { 203, 10 }, { 113, 10 },
1072     { 159, 10 }, { 180, 10 }, {  92, 10 }, { 145, 10 }, { 127, 10 },
1073     {  98, 10 }, { 174, 10 }, {  23, 10 }, { 249, 10 }, { 247, 10 },
1074     {  25, 10 }, { 162, 10 }, { 110, 10 }, {  38, 10 }, { 234, 10 },
1075     { 230, 10 }, {  42, 10 }, {  83, 10 }, { 189, 10 }, { 179, 10 },
1076     {  93, 10 }, { 211, 10 }, {  61, 10 }, { 112, 10 }, { 144, 10 },
1077     {  51, 10 }, { 221, 10 }, {  68, 10 }, { 204, 10 }, { 213, 10 },
1078     {  59, 10 }, { 196, 10 }, {  76, 10 }, {   3,  7 }, {  13,  7 },
1079     {  66,  8 }, { 206,  8 }, {  81,  8 }, { 191,  8 }, {  32,  6 },
1080     { 224,  6 }, {   0,  2 }, {   7,  9 }, {   9,  9 }, {  97,  9 },
1081     { 175,  9 }, {  36,  8 }, { 236,  8 }, { 194,  8 }, {  78,  8 },
1082     { 177,  8 }, {  95,  8 }, {   2,  6 }, {  14,  6 }, {  21,  8 },
1083     { 251,  8 }, { 245,  8 }, {  27,  8 }, { 228,  8 }, {  44,  8 },
1084     {  22,  9 }, { 250,  9 }, { 246,  9 }, {  26,  9 }, {  49,  8 },
1085     { 223,  8 }, {  19,  8 }, { 253,  8 }, { 209,  8 }, {  63,  8 },
1086     { 243,  8 }, {  29,  8 }, { 225,  7 }, {  47,  7 }, {  64,  7 },
1087     { 192,  7 }, {  33,  7 }, { 239,  7 }, {  18,  7 }, { 254,  7 },
1088     { 242,  7 }, {  30,  7 }, { 161,  9 }, { 111,  9 }, { 178,  9 },
1089     {  94,  9 }, {  82,  9 }, { 190,  9 }, { 195,  9 }, {  77,  9 },
1090     {  52,  9 }, { 220,  9 }, { 212,  9 }, {  60,  9 }, {  67,  9 },
1091     { 205,  9 }, {  37,  9 }, { 235,  9 }, {  34,  8 }, { 238,  8 },
1092     { 226,  8 }, {  46,  8 }, {  17,  6 }, { 255,  6 }, {   4,  7 },
1093     {  12,  7 }, {  80,  8 }, { 176,  8 }, { 229,  9 }, {  43,  9 },
1094     {  35,  9 }, { 237,  9 }, {  16,  5 }, { 240,  5 }, { 241,  6 },
1095     {  31,  6 }, { 227,  9 }, {  45,  9 }, { 210,  9 }, {  62,  9 },
1096     {  50,  9 }, { 222,  9 }, {  96,  9 }, { 160,  9 }, {   5,  8 },
1097     {  11,  8 }, {  65,  8 }, { 207,  8 }, {   1,  5 }, {  15,  5 },
1098     /* Coefficient table B.4.4 - 225 entries */
1099     {   3,  7 }, {  13,  7 }, {   4,  7 }, {  12,  7 }, { 151, 10 },
1100     { 121, 10 }, { 119, 10 }, { 153, 10 }, { 103, 10 }, { 169, 10 },
1101     { 167, 10 }, { 105, 10 }, { 150, 10 }, { 122, 10 }, { 118, 10 },
1102     { 154, 10 }, { 117, 10 }, { 155, 10 }, { 102, 10 }, { 170, 10 },
1103     {   5,  8 }, {  11,  8 }, { 183, 10 }, {  89, 10 }, {  87, 10 },
1104     { 185, 10 }, { 166, 10 }, { 106, 10 }, { 149, 10 }, { 123, 10 },
1105     {  17,  5 }, { 255,  5 }, {   1,  4 }, {  15,  4 }, { 241,  5 },
1106     {  31,  5 }, { 116, 10 }, { 156, 10 }, { 148, 10 }, { 124, 10 },
1107     { 199, 10 }, {  73, 10 }, { 182, 10 }, {  90, 10 }, {  71, 10 },
1108     { 201, 10 }, {  86, 10 }, { 186, 10 }, { 101, 10 }, { 171, 10 },
1109     { 115, 10 }, { 157, 10 }, { 165, 10 }, { 107, 10 }, { 215, 10 },
1110     {  57, 10 }, {  55, 10 }, { 217, 10 }, {  70, 10 }, { 202, 10 },
1111     { 147, 10 }, { 125, 10 }, {  85, 10 }, { 187, 10 }, { 164, 10 },
1112     { 108, 10 }, { 198, 10 }, {  74, 10 }, { 100, 10 }, { 172, 10 },
1113     { 114, 10 }, { 158, 10 }, {  39, 10 }, { 233, 10 }, { 146, 10 },
1114     { 126, 10 }, {  99, 10 }, { 173, 10 }, { 181, 10 }, {  91, 10 },
1115     { 231, 10 }, {  41, 10 }, { 163, 10 }, { 109, 10 }, {  54, 10 },
1116     { 218, 10 }, { 214, 10 }, {  58, 10 }, { 113, 10 }, { 159, 10 },
1117     {  23, 10 }, { 249, 10 }, { 145, 10 }, { 127, 10 }, { 180, 10 },
1118     {  92, 10 }, {  84, 10 }, { 188, 10 }, { 247, 10 }, {  25, 10 },
1119     {  32,  6 }, { 224,  6 }, { 197, 10 }, {  75, 10 }, {  98, 10 },
1120     { 174, 10 }, { 112, 10 }, { 144, 10 }, { 162, 10 }, { 110, 10 },
1121     {  69, 10 }, { 203, 10 }, {  38, 10 }, { 234, 10 }, { 230, 10 },
1122     {  42, 10 }, {   7, 10 }, {   9, 10 }, { 213, 10 }, {  59, 10 },
1123     {  83, 10 }, { 189, 10 }, { 179, 10 }, {  93, 10 }, {  53, 10 },
1124     { 219, 10 }, {  97, 10 }, { 175, 10 }, {  68, 10 }, { 204, 10 },
1125     { 196, 10 }, {  76, 10 }, { 161, 10 }, { 111, 10 }, {  22, 10 },
1126     { 250, 10 }, { 246, 10 }, {  26, 10 }, {  82, 10 }, { 190, 10 },
1127     {  96, 10 }, { 160, 10 }, { 178, 10 }, {  94, 10 }, {  37, 10 },
1128     { 235, 10 }, {  67, 10 }, { 205, 10 }, {  51, 10 }, { 221, 10 },
1129     { 229, 10 }, {  43, 10 }, {   6, 10 }, {  10, 10 }, { 211, 10 },
1130     {  61, 10 }, { 212, 10 }, {  60, 10 }, { 195, 10 }, {  77, 10 },
1131     {  52, 10 }, { 220, 10 }, {  81, 10 }, { 191, 10 }, { 177, 10 },
1132     {  95, 10 }, {  65,  8 }, { 207,  8 }, {  21, 10 }, { 251, 10 },
1133     { 245, 10 }, {  27, 10 }, { 194, 10 }, {  78, 10 }, { 228, 10 },
1134     {  44, 10 }, { 193,  8 }, {  79,  8 }, {  20,  8 }, { 252,  8 },
1135     {   0,  2 }, {   2,  6 }, {  14,  6 }, {  19,  8 }, { 253,  8 },
1136     {  49,  8 }, { 223,  8 }, { 209,  8 }, {  63,  8 }, { 244,  8 },
1137     {  28,  8 }, {  66, 10 }, { 206, 10 }, { 210, 10 }, {  62, 10 },
1138     {  36,  9 }, { 236,  9 }, { 243,  8 }, {  29,  8 }, {  33,  7 },
1139     { 239,  7 }, { 225,  7 }, {  47,  7 }, {  64,  8 }, { 192,  8 },
1140     {  80,  9 }, { 176,  9 }, {  50,  9 }, { 222,  9 }, {  18,  7 },
1141     { 254,  7 }, { 242,  7 }, {  30,  7 }, {  48,  8 }, { 208,  8 },
1142     { 226,  8 }, {  46,  8 }, {  34,  8 }, { 238,  8 }, { 227,  9 },
1143     {  45,  9 }, {  35,  9 }, { 237,  9 }, {  16,  5 }, { 240,  5 },
1144     /* Coefficient table B.5.2 - 31 entries */
1145     {   3,  4 }, {  29,  4 }, {   5,  5 }, {  27,  5 }, {  10,  5 },
1146     {  22,  5 }, {  13,  6 }, {  19,  6 }, {   7,  6 }, {  25,  6 },
1147     {   4,  5 }, {  28,  5 }, {   2,  4 }, {  30,  4 }, {   9,  5 },
1148     {  23,  5 }, {  12,  6 }, {  20,  6 }, {  15,  7 }, {  17,  7 },
1149     {  14,  7 }, {  18,  7 }, {   8,  5 }, {  24,  5 }, {   6,  6 },
1150     {  26,  6 }, {  11,  6 }, {  21,  6 }, {   0,  3 }, {   1,  4 },
1151     {  31,  4 },
1152     /* Coefficient table B.5.3 - 31 entries */
1153     {   1,  3 }, {  31,  3 }, {   7,  6 }, {  25,  6 }, {  13,  7 },
1154     {  19,  7 }, {  12,  7 }, {  20,  7 }, {  10,  6 }, {  22,  6 },
1155     {   6,  6 }, {  26,  6 }, {   2,  4 }, {  30,  4 }, {   0,  2 },
1156     {   4,  5 }, {  28,  5 }, {  15,  8 }, {  17,  8 }, {  14,  8 },
1157     {  18,  8 }, {  11,  7 }, {  21,  7 }, {   9,  6 }, {  23,  6 },
1158     {   3,  5 }, {  29,  5 }, {   8,  6 }, {  24,  6 }, {   5,  6 },
1159     {  27,  6 },
1160     /* Coefficient table B.5.4 - 31 entries */
1161     {   3,  4 }, {  29,  4 }, {   9,  6 }, {  23,  6 }, {   8,  6 },
1162     {  24,  6 }, {  13,  8 }, {  19,  8 }, {  12,  8 }, {  20,  8 },
1163     {  10,  7 }, {  22,  7 }, {   6,  6 }, {  26,  6 }, {   1,  3 },
1164     {  31,  3 }, {   2,  4 }, {  30,  4 }, {   4,  5 }, {  28,  5 },
1165     {  15,  9 }, {  17,  9 }, {  14,  9 }, {  18,  9 }, {  11,  8 },
1166     {  21,  8 }, {   7,  7 }, {  25,  7 }, {   5,  6 }, {  27,  6 },
1167     {   0,  2 },
1168     /* Coefficient table B.6.2 - 63 entries */
1169     {  11,  6 }, {  53,  6 }, {  21,  6 }, {  43,  6 }, {  27,  7 },
1170     {  37,  7 }, {  26,  7 }, {  38,  7 }, {  10,  6 }, {  54,  6 },
1171     {   5,  5 }, {  59,  5 }, {  20,  6 }, {  44,  6 }, {   9,  6 },
1172     {  55,  6 }, {  15,  7 }, {  49,  7 }, {  25,  7 }, {  39,  7 },
1173     {  19,  6 }, {  45,  6 }, {   4,  5 }, {  60,  5 }, {   1,  4 },
1174     {  63,  4 }, {  14,  7 }, {  50,  7 }, {  24,  7 }, {  40,  7 },
1175     {   8,  6 }, {  56,  6 }, {  18,  6 }, {  46,  6 }, {  31,  8 },
1176     {  33,  8 }, {  30,  8 }, {  34,  8 }, {  13,  7 }, {  51,  7 },
1177     {   3,  5 }, {  61,  5 }, {  23,  7 }, {  41,  7 }, {  12,  7 },
1178     {  52,  7 }, {   7,  6 }, {  57,  6 }, {  16,  6 }, {  48,  6 },
1179     {  17,  6 }, {  47,  6 }, {   0,  4 }, {   2,  5 }, {  62,  5 },
1180     {  22,  7 }, {  42,  7 }, {  29,  8 }, {  35,  8 }, {  28,  8 },
1181     {  36,  8 }, {   6,  6 }, {  58,  6 },
1182     /* Coefficient table B.6.3 - 63 entries */
1183     {   6,  5 }, {  58,  5 }, {  10,  6 }, {  54,  6 }, {  16,  6 },
1184     {  48,  6 }, {  17,  6 }, {  47,  6 }, {  21,  7 }, {  43,  7 },
1185     {  14,  7 }, {  50,  7 }, {   5,  5 }, {  59,  5 }, {   2,  4 },
1186     {  62,  4 }, {   9,  6 }, {  55,  6 }, {  25,  8 }, {  39,  8 },
1187     {  31,  9 }, {  33,  9 }, {  30,  9 }, {  34,  9 }, {  20,  7 },
1188     {  44,  7 }, {   8,  6 }, {  56,  6 }, {  13,  7 }, {  51,  7 },
1189     {  19,  7 }, {  45,  7 }, {   4,  5 }, {  60,  5 }, {  24,  8 },
1190     {  40,  8 }, {  29,  9 }, {  35,  9 }, {  28,  9 }, {  36,  9 },
1191     {  12,  7 }, {  52,  7 }, {   7,  6 }, {  57,  6 }, {   3,  5 },
1192     {  61,  5 }, {  18,  7 }, {  46,  7 }, {  23,  8 }, {  41,  8 },
1193     {  22,  8 }, {  42,  8 }, {  11,  7 }, {  53,  7 }, {  15,  8 },
1194     {  49,  8 }, {  27,  9 }, {  37,  9 }, {  26,  9 }, {  38,  9 },
1195     {   0,  3 }, {   1,  4 }, {  63,  4 },
1196     /* Coefficient table B.6.4 - 63 entries */
1197     {   1,  3 }, {  63,  3 }, {  14,  7 }, {  50,  7 }, {  18,  7 },
1198     {  46,  7 }, {  27,  9 }, {  37,  9 }, {  26,  9 }, {  38,  9 },
1199     {  21,  8 }, {  43,  8 }, {  13,  7 }, {  51,  7 }, {   9,  6 },
1200     {  55,  6 }, {  17,  7 }, {  47,  7 }, {  31, 10 }, {  33, 10 },
1201     {  30, 10 }, {  34, 10 }, {  25,  9 }, {  39,  9 }, {  20,  8 },
1202     {  44,  8 }, {   5,  5 }, {  59,  5 }, {  16,  7 }, {  48,  7 },
1203     {  12,  7 }, {  52,  7 }, {   8,  6 }, {  56,  6 }, {   2,  4 },
1204     {  62,  4 }, {   4,  5 }, {  60,  5 }, {  24,  9 }, {  40,  9 },
1205     {  29, 10 }, {  35, 10 }, {  28, 10 }, {  36, 10 }, {  15,  8 },
1206     {  49,  8 }, {  11,  7 }, {  53,  7 }, {   7,  6 }, {  57,  6 },
1207     {  19,  8 }, {  45,  8 }, {  23,  9 }, {  41,  9 }, {  22,  9 },
1208     {  42,  9 }, {  10,  7 }, {  54,  7 }, {   6,  6 }, {  58,  6 },
1209     {   3,  5 }, {  61,  5 }, {   0,  3 },
1210     /* Coefficient table B.7.2 - 127 entries */
1211     {   3,  5 }, { 125,  5 }, {  42,  7 }, {  86,  7 }, {  21,  7 },
1212     { 107,  7 }, {  11,  6 }, { 117,  6 }, {  41,  7 }, {  87,  7 },
1213     {  20,  7 }, { 108,  7 }, {  53,  8 }, {  75,  8 }, {  31,  8 },
1214     {  97,  8 }, {  40,  7 }, {  88,  7 }, {  52,  8 }, {  76,  8 },
1215     {  51,  8 }, {  77,  8 }, {  19,  7 }, { 109,  7 }, {  10,  6 },
1216     { 118,  6 }, {  30,  8 }, {  98,  8 }, {  29,  8 }, {  99,  8 },
1217     {  18,  7 }, { 110,  7 }, {   9,  6 }, { 119,  6 }, {  39,  7 },
1218     {  89,  7 }, {  17,  7 }, { 111,  7 }, {  28,  8 }, { 100,  8 },
1219     {  50,  8 }, {  78,  8 }, {  38,  7 }, {  90,  7 }, {   2,  5 },
1220     { 126,  5 }, {   8,  6 }, { 120,  6 }, {  49,  8 }, {  79,  8 },
1221     {  48,  8 }, {  80,  8 }, {  16,  7 }, { 112,  7 }, {  37,  7 },
1222     {  91,  7 }, {  63,  9 }, {  65,  9 }, {  62,  9 }, {  66,  9 },
1223     {  27,  8 }, { 101,  8 }, {   7,  6 }, { 121,  6 }, {  36,  7 },
1224     {  92,  7 }, {  26,  8 }, { 102,  8 }, {  47,  8 }, {  81,  8 },
1225     {  61,  9 }, {  67,  9 }, {  60,  9 }, {  68,  9 }, {  46,  8 },
1226     {  82,  8 }, {  15,  7 }, { 113,  7 }, {   6,  6 }, { 122,  6 },
1227     {  25,  8 }, { 103,  8 }, {  45,  8 }, {  83,  8 }, {  35,  7 },
1228     {  93,  7 }, {   1,  5 }, { 127,  5 }, {  14,  7 }, { 114,  7 },
1229     {  59,  9 }, {  69,  9 }, {  58,  9 }, {  70,  9 }, {  24,  8 },
1230     { 104,  8 }, {   5,  6 }, { 123,  6 }, {  32,  7 }, {  96,  7 },
1231     {  34,  7 }, {  94,  7 }, {  13,  7 }, { 115,  7 }, {  23,  8 },
1232     { 105,  8 }, {  44,  8 }, {  84,  8 }, {   4,  6 }, { 124,  6 },
1233     {  57,  9 }, {  71,  9 }, {  56,  9 }, {  72,  9 }, {  43,  8 },
1234     {  85,  8 }, {  12,  7 }, { 116,  7 }, {   0,  5 }, {  33,  7 },
1235     {  95,  7 }, {  22,  8 }, { 106,  8 }, {  55,  9 }, {  73,  9 },
1236     {  54,  9 }, {  74,  9 },
1237     /* Coefficient table B.7.3 - 127 entries */
1238     {   0,  3 }, {   4,  5 }, { 124,  5 }, {  19,  7 }, { 109,  7 },
1239     {  29,  8 }, {  99,  8 }, {  51,  9 }, {  77,  9 }, {  62, 10 },
1240     {  66, 10 }, {  63, 10 }, {  65, 10 }, {  28,  8 }, { 100,  8 },
1241     {  41,  8 }, {  87,  8 }, {  33,  7 }, {  95,  7 }, {  10,  6 },
1242     { 118,  6 }, {  18,  7 }, { 110,  7 }, {  40,  8 }, {  88,  8 },
1243     {  27,  8 }, { 101,  8 }, {   9,  6 }, { 119,  6 }, {  17,  7 },
1244     { 111,  7 }, {  50,  9 }, {  78,  9 }, {  61, 10 }, {  67, 10 },
1245     {  60, 10 }, {  68, 10 }, {  26,  8 }, { 102,  8 }, {   1,  4 },
1246     { 127,  4 }, {   3,  5 }, { 125,  5 }, {  39,  8 }, {  89,  8 },
1247     {  49,  9 }, {  79,  9 }, {  48,  9 }, {  80,  9 }, {  16,  7 },
1248     { 112,  7 }, {   8,  6 }, { 120,  6 }, {  25,  8 }, { 103,  8 },
1249     {  38,  8 }, {  90,  8 }, {  15,  7 }, { 113,  7 }, {   7,  6 },
1250     { 121,  6 }, {  59, 10 }, {  69, 10 }, {  58, 10 }, {  70, 10 },
1251     {  47,  9 }, {  81,  9 }, {  24,  8 }, { 104,  8 }, {  37,  8 },
1252     {  91,  8 }, {  23,  8 }, { 105,  8 }, {  14,  7 }, { 114,  7 },
1253     {  46,  9 }, {  82,  9 }, {  57, 10 }, {  71, 10 }, {  56, 10 },
1254     {  72, 10 }, {  36,  8 }, {  92,  8 }, {   2,  5 }, { 126,  5 },
1255     {   6,  6 }, { 122,  6 }, {  45,  9 }, {  83,  9 }, {  31,  9 },
1256     {  97,  9 }, {  22,  8 }, { 106,  8 }, {  13,  7 }, { 115,  7 },
1257     {  21,  8 }, { 107,  8 }, {  55, 10 }, {  73, 10 }, {  54, 10 },
1258     {  74, 10 }, {  44,  9 }, {  84,  9 }, {  12,  7 }, { 116,  7 },
1259     {   5,  6 }, { 123,  6 }, {  35,  8 }, {  93,  8 }, {  43,  9 },
1260     {  85,  9 }, {  30,  9 }, {  98,  9 }, {  20,  8 }, { 108,  8 },
1261     {  53, 10 }, {  75, 10 }, {  52, 10 }, {  76, 10 }, {  42,  9 },
1262     {  86,  9 }, {  34,  8 }, {  94,  8 }, {  32,  8 }, {  96,  8 },
1263     {  11,  7 }, { 117,  7 },
1264     /* Coefficient table B.7.4 - 127 entries */
1265     {  28,  8 }, { 100,  8 }, {  27,  8 }, { 101,  8 }, {  36,  8 },
1266     {  92,  8 }, {  63, 10 }, {  65, 10 }, {  61, 10 }, {  67, 10 },
1267     {  62, 10 }, {  66, 10 }, {  60, 10 }, {  68, 10 }, {  19,  7 },
1268     { 109,  7 }, {  59, 10 }, {  69, 10 }, {  58, 10 }, {  70, 10 },
1269     {  57, 10 }, {  71, 10 }, {  56, 10 }, {  72, 10 }, {  55, 10 },
1270     {  73, 10 }, {  53, 10 }, {  75, 10 }, {  54, 10 }, {  74, 10 },
1271     {  52, 10 }, {  76, 10 }, {   5,  5 }, { 123,  5 }, {   0,  3 },
1272     {  51, 10 }, {  77, 10 }, {  50, 10 }, {  78, 10 }, {  49, 10 },
1273     {  79, 10 }, {  48, 10 }, {  80, 10 }, {  47, 10 }, {  81, 10 },
1274     {  46, 10 }, {  82, 10 }, {  43,  9 }, {  85,  9 }, {  18,  7 },
1275     { 110,  7 }, {  11,  6 }, { 117,  6 }, {  26,  8 }, { 102,  8 },
1276     {  35,  8 }, {  93,  8 }, {  25,  8 }, { 103,  8 }, {  42,  9 },
1277     {  86,  9 }, {  41,  9 }, {  87,  9 }, {  10,  6 }, { 118,  6 },
1278     {   4,  5 }, { 124,  5 }, {  17,  7 }, { 111,  7 }, {  34,  8 },
1279     {  94,  8 }, {  24,  8 }, { 104,  8 }, {   9,  6 }, { 119,  6 },
1280     {   1,  4 }, { 127,  4 }, {  16,  7 }, { 112,  7 }, {  32,  8 },
1281     {  96,  8 }, {  33,  8 }, {  95,  8 }, {  23,  8 }, { 105,  8 },
1282     {  40,  9 }, {  88,  9 }, {  31,  9 }, {  97,  9 }, {  15,  7 },
1283     { 113,  7 }, {   8,  6 }, { 120,  6 }, {  39,  9 }, {  89,  9 },
1284     {  45, 10 }, {  83, 10 }, {  44, 10 }, {  84, 10 }, {  22,  8 },
1285     { 106,  8 }, {  14,  7 }, { 114,  7 }, {   3,  5 }, { 125,  5 },
1286     {   7,  6 }, { 121,  6 }, {  30,  9 }, {  98,  9 }, {  38,  9 },
1287     {  90,  9 }, {  21,  8 }, { 107,  8 }, {  13,  7 }, { 115,  7 },
1288     {  29,  9 }, {  99,  9 }, {  37,  9 }, {  91,  9 }, {  20,  8 },
1289     { 108,  8 }, {  12,  7 }, { 116,  7 }, {   6,  6 }, { 122,  6 },
1290     {   2,  5 }, { 126,  5 },
1291 };
1292
1293 static const HuffmanCodebook at9_huffman_coeffs[][8][4] = {
1294     {
1295         { { 0 } },
1296         { { 0 } },
1297         {
1298             {   8,   2,   1,   2 },
1299             {  80,   4,   2,   2 },
1300             {  81,   4,   2,   2 },
1301             {  81,   4,   2,   2 },
1302         },
1303         {
1304             {  40,   2,   1,   3 },
1305             {  49,   2,   1,   3 },
1306             {  49,   2,   1,   3 },
1307             {  49,   2,   1,   3 },
1308         },
1309         {
1310             { 176,   2,   1,   4 },
1311             { 225,   2,   1,   4 },
1312             { 225,   2,   1,   4 },
1313             { 225,   2,   1,   4 },
1314         },
1315         {
1316             {  31,   1,   0,   5 },
1317             {  31,   1,   0,   5 },
1318             {  31,   1,   0,   5 },
1319             {  31,   1,   0,   5 },
1320         },
1321         {
1322             {  63,   1,   0,   6 },
1323             {  63,   1,   0,   6 },
1324             {  63,   1,   0,   6 },
1325             {  63,   1,   0,   6 },
1326         },
1327         {
1328             { 127,   1,   0,   7 },
1329             { 127,   1,   0,   7 },
1330             { 127,   1,   0,   7 },
1331             { 127,   1,   0,   7 },
1332         },
1333     },
1334     {
1335         { { 0 } },
1336         { { 0 } },
1337         {
1338             { 0 },
1339             {  80,   4,   2,   2 },
1340             {  81,   4,   2,   2 },
1341             {  81,   4,   2,   2 },
1342         },
1343         {
1344             { 0 },
1345             {  49,   2,   1,   3 },
1346             {  49,   2,   1,   3 },
1347             {  49,   2,   1,   3 },
1348         },
1349         {
1350             { 0 },
1351             { 225,   2,   1,   4 },
1352             { 225,   2,   1,   4 },
1353             { 225,   2,   1,   4 },
1354         },
1355         {
1356             { 0 },
1357             {  31,   1,   0,   5 },
1358             {  31,   1,   0,   5 },
1359             {  31,   1,   0,   5 },
1360         },
1361         {
1362             { 0 },
1363             {  63,   1,   0,   6 },
1364             {  63,   1,   0,   6 },
1365             {  63,   1,   0,   6 },
1366         },
1367         {
1368             { 0 },
1369             { 127,   1,   0,   7 },
1370             { 127,   1,   0,   7 },
1371             { 127,   1,   0,   7 },
1372         },
1373     },
1374 };
1375
1376 #endif /* AVCODEC_ATRAC9TAB_H */