Merge pull request #1518 from dg0yt/static-windows
[openjpeg.git] / src / lib / openjp2 / t1_ht_generate_luts.c
1 //***************************************************************************/
2 // This software is released under the 2-Clause BSD license, included
3 // below.
4 //
5 // Copyright (c) 2021, Aous Naman
6 // Copyright (c) 2021, Kakadu Software Pty Ltd, Australia
7 // Copyright (c) 2021, The University of New South Wales, Australia
8 //
9 // Redistribution and use in source and binary forms, with or without
10 // modification, are permitted provided that the following conditions are
11 // met:
12 //
13 // 1. Redistributions of source code must retain the above copyright
14 // notice, this list of conditions and the following disclaimer.
15 //
16 // 2. Redistributions in binary form must reproduce the above copyright
17 // notice, this list of conditions and the following disclaimer in the
18 // documentation and/or other materials provided with the distribution.
19 //
20 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
21 // IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22 // TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
23 // PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 // HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
26 // TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 //***************************************************************************/
32 // This file is part of the OpenJpeg software implementation.
33 // File: t1_ht_generate_luts.c
34 // Author: Aous Naman
35 // Date: 01 September 2021
36 //***************************************************************************/
37
38 #include <string.h>
39 #include <stdio.h>
40 #include <assert.h>
41 #include <stdint.h>
42
43 typedef int8_t   OPJ_INT8;
44 typedef uint8_t  OPJ_UINT8;
45 typedef int16_t  OPJ_INT16;
46 typedef uint16_t OPJ_UINT16;
47 typedef int32_t  OPJ_INT32;
48 typedef uint32_t OPJ_UINT32;
49 typedef int64_t  OPJ_INT64;
50 typedef uint64_t OPJ_UINT64;
51 typedef int OPJ_BOOL;
52 #define OPJ_TRUE 1
53 #define OPJ_FALSE 0
54
55 //************************************************************************/
56 /** @brief HT decoding tables, as given in the standard
57   *
58   *  Data in the table is arranged in this format:
59   *   c_q is the context for a quad
60   *   rho is the signficance pattern for a quad
61   *   u_off indicate if u value is 0 (u_off is 0), or communicated
62   *   e_k, e_1 EMB patterns
63   *   cwd VLC codeword
64   *   cwd VLC codeword length
65   */
66 typedef struct vlc_src_table {
67     int c_q, rho, u_off, e_k, e_1, cwd, cwd_len;
68 }
69 vlc_src_table_t;
70
71 // initial quad rows
72 static vlc_src_table_t tbl0[] = {
73     {0, 0x1, 0x0, 0x0, 0x0, 0x06, 4},
74     {0, 0x1, 0x1, 0x1, 0x1, 0x3F, 7},
75     {0, 0x2, 0x0, 0x0, 0x0, 0x00, 3},
76     {0, 0x2, 0x1, 0x2, 0x2, 0x7F, 7},
77     {0, 0x3, 0x0, 0x0, 0x0, 0x11, 5},
78     {0, 0x3, 0x1, 0x2, 0x2, 0x5F, 7},
79     {0, 0x3, 0x1, 0x3, 0x1, 0x1F, 7},
80     {0, 0x4, 0x0, 0x0, 0x0, 0x02, 3},
81     {0, 0x4, 0x1, 0x4, 0x4, 0x13, 6},
82     {0, 0x5, 0x0, 0x0, 0x0, 0x0E, 5},
83     {0, 0x5, 0x1, 0x4, 0x4, 0x23, 6},
84     {0, 0x5, 0x1, 0x5, 0x1, 0x0F, 7},
85     {0, 0x6, 0x0, 0x0, 0x0, 0x03, 6},
86     {0, 0x6, 0x1, 0x0, 0x0, 0x6F, 7},
87     {0, 0x7, 0x0, 0x0, 0x0, 0x2F, 7},
88     {0, 0x7, 0x1, 0x2, 0x2, 0x4F, 7},
89     {0, 0x7, 0x1, 0x2, 0x0, 0x0D, 6},
90     {0, 0x8, 0x0, 0x0, 0x0, 0x04, 3},
91     {0, 0x8, 0x1, 0x8, 0x8, 0x3D, 6},
92     {0, 0x9, 0x0, 0x0, 0x0, 0x1D, 6},
93     {0, 0x9, 0x1, 0x0, 0x0, 0x2D, 6},
94     {0, 0xA, 0x0, 0x0, 0x0, 0x01, 5},
95     {0, 0xA, 0x1, 0x8, 0x8, 0x35, 6},
96     {0, 0xA, 0x1, 0xA, 0x2, 0x77, 7},
97     {0, 0xB, 0x0, 0x0, 0x0, 0x37, 7},
98     {0, 0xB, 0x1, 0x1, 0x1, 0x57, 7},
99     {0, 0xB, 0x1, 0x1, 0x0, 0x09, 6},
100     {0, 0xC, 0x0, 0x0, 0x0, 0x1E, 5},
101     {0, 0xC, 0x1, 0xC, 0xC, 0x17, 7},
102     {0, 0xC, 0x1, 0xC, 0x4, 0x15, 6},
103     {0, 0xC, 0x1, 0xC, 0x8, 0x25, 6},
104     {0, 0xD, 0x0, 0x0, 0x0, 0x67, 7},
105     {0, 0xD, 0x1, 0x1, 0x1, 0x27, 7},
106     {0, 0xD, 0x1, 0x5, 0x4, 0x47, 7},
107     {0, 0xD, 0x1, 0xD, 0x8, 0x07, 7},
108     {0, 0xE, 0x0, 0x0, 0x0, 0x7B, 7},
109     {0, 0xE, 0x1, 0x2, 0x2, 0x4B, 7},
110     {0, 0xE, 0x1, 0xA, 0x8, 0x05, 6},
111     {0, 0xE, 0x1, 0xE, 0x4, 0x3B, 7},
112     {0, 0xF, 0x0, 0x0, 0x0, 0x5B, 7},
113     {0, 0xF, 0x1, 0x9, 0x9, 0x1B, 7},
114     {0, 0xF, 0x1, 0xB, 0xA, 0x6B, 7},
115     {0, 0xF, 0x1, 0xF, 0xC, 0x2B, 7},
116     {0, 0xF, 0x1, 0xF, 0x8, 0x39, 6},
117     {0, 0xF, 0x1, 0xE, 0x6, 0x73, 7},
118     {0, 0xF, 0x1, 0xE, 0x2, 0x19, 6},
119     {0, 0xF, 0x1, 0xF, 0x5, 0x0B, 7},
120     {0, 0xF, 0x1, 0xF, 0x4, 0x29, 6},
121     {0, 0xF, 0x1, 0xF, 0x1, 0x33, 7},
122     {1, 0x0, 0x0, 0x0, 0x0, 0x00, 2},
123     {1, 0x1, 0x0, 0x0, 0x0, 0x0E, 4},
124     {1, 0x1, 0x1, 0x1, 0x1, 0x1F, 7},
125     {1, 0x2, 0x0, 0x0, 0x0, 0x06, 4},
126     {1, 0x2, 0x1, 0x2, 0x2, 0x3B, 6},
127     {1, 0x3, 0x0, 0x0, 0x0, 0x1B, 6},
128     {1, 0x3, 0x1, 0x0, 0x0, 0x3D, 6},
129     {1, 0x4, 0x0, 0x0, 0x0, 0x0A, 4},
130     {1, 0x4, 0x1, 0x4, 0x4, 0x2B, 6},
131     {1, 0x5, 0x0, 0x0, 0x0, 0x0B, 6},
132     {1, 0x5, 0x1, 0x4, 0x4, 0x33, 6},
133     {1, 0x5, 0x1, 0x5, 0x1, 0x7F, 7},
134     {1, 0x6, 0x0, 0x0, 0x0, 0x13, 6},
135     {1, 0x6, 0x1, 0x0, 0x0, 0x23, 6},
136     {1, 0x7, 0x0, 0x0, 0x0, 0x3F, 7},
137     {1, 0x7, 0x1, 0x2, 0x2, 0x5F, 7},
138     {1, 0x7, 0x1, 0x2, 0x0, 0x03, 6},
139     {1, 0x8, 0x0, 0x0, 0x0, 0x02, 4},
140     {1, 0x8, 0x1, 0x8, 0x8, 0x1D, 6},
141     {1, 0x9, 0x0, 0x0, 0x0, 0x2D, 6},
142     {1, 0x9, 0x1, 0x0, 0x0, 0x0D, 6},
143     {1, 0xA, 0x0, 0x0, 0x0, 0x35, 6},
144     {1, 0xA, 0x1, 0x8, 0x8, 0x15, 6},
145     {1, 0xA, 0x1, 0xA, 0x2, 0x6F, 7},
146     {1, 0xB, 0x0, 0x0, 0x0, 0x2F, 7},
147     {1, 0xB, 0x1, 0x1, 0x1, 0x4F, 7},
148     {1, 0xB, 0x1, 0x1, 0x0, 0x11, 6},
149     {1, 0xC, 0x0, 0x0, 0x0, 0x01, 5},
150     {1, 0xC, 0x1, 0x8, 0x8, 0x25, 6},
151     {1, 0xC, 0x1, 0xC, 0x4, 0x05, 6},
152     {1, 0xD, 0x0, 0x0, 0x0, 0x0F, 7},
153     {1, 0xD, 0x1, 0x1, 0x1, 0x17, 7},
154     {1, 0xD, 0x1, 0x5, 0x4, 0x39, 6},
155     {1, 0xD, 0x1, 0xD, 0x8, 0x77, 7},
156     {1, 0xE, 0x0, 0x0, 0x0, 0x37, 7},
157     {1, 0xE, 0x1, 0x2, 0x2, 0x57, 7},
158     {1, 0xE, 0x1, 0xA, 0x8, 0x19, 6},
159     {1, 0xE, 0x1, 0xE, 0x4, 0x67, 7},
160     {1, 0xF, 0x0, 0x0, 0x0, 0x07, 7},
161     {1, 0xF, 0x1, 0xB, 0x8, 0x29, 6},
162     {1, 0xF, 0x1, 0x8, 0x8, 0x27, 7},
163     {1, 0xF, 0x1, 0xA, 0x2, 0x09, 6},
164     {1, 0xF, 0x1, 0xE, 0x4, 0x31, 6},
165     {1, 0xF, 0x1, 0xF, 0x1, 0x47, 7},
166     {2, 0x0, 0x0, 0x0, 0x0, 0x00, 2},
167     {2, 0x1, 0x0, 0x0, 0x0, 0x0E, 4},
168     {2, 0x1, 0x1, 0x1, 0x1, 0x1B, 6},
169     {2, 0x2, 0x0, 0x0, 0x0, 0x06, 4},
170     {2, 0x2, 0x1, 0x2, 0x2, 0x3F, 7},
171     {2, 0x3, 0x0, 0x0, 0x0, 0x2B, 6},
172     {2, 0x3, 0x1, 0x1, 0x1, 0x33, 6},
173     {2, 0x3, 0x1, 0x3, 0x2, 0x7F, 7},
174     {2, 0x4, 0x0, 0x0, 0x0, 0x0A, 4},
175     {2, 0x4, 0x1, 0x4, 0x4, 0x0B, 6},
176     {2, 0x5, 0x0, 0x0, 0x0, 0x01, 5},
177     {2, 0x5, 0x1, 0x5, 0x5, 0x2F, 7},
178     {2, 0x5, 0x1, 0x5, 0x1, 0x13, 6},
179     {2, 0x5, 0x1, 0x5, 0x4, 0x23, 6},
180     {2, 0x6, 0x0, 0x0, 0x0, 0x03, 6},
181     {2, 0x6, 0x1, 0x0, 0x0, 0x5F, 7},
182     {2, 0x7, 0x0, 0x0, 0x0, 0x1F, 7},
183     {2, 0x7, 0x1, 0x2, 0x2, 0x6F, 7},
184     {2, 0x7, 0x1, 0x3, 0x1, 0x11, 6},
185     {2, 0x7, 0x1, 0x7, 0x4, 0x37, 7},
186     {2, 0x8, 0x0, 0x0, 0x0, 0x02, 4},
187     {2, 0x8, 0x1, 0x8, 0x8, 0x4F, 7},
188     {2, 0x9, 0x0, 0x0, 0x0, 0x3D, 6},
189     {2, 0x9, 0x1, 0x0, 0x0, 0x1D, 6},
190     {2, 0xA, 0x0, 0x0, 0x0, 0x2D, 6},
191     {2, 0xA, 0x1, 0x0, 0x0, 0x0D, 6},
192     {2, 0xB, 0x0, 0x0, 0x0, 0x0F, 7},
193     {2, 0xB, 0x1, 0x2, 0x2, 0x77, 7},
194     {2, 0xB, 0x1, 0x2, 0x0, 0x35, 6},
195     {2, 0xC, 0x0, 0x0, 0x0, 0x15, 6},
196     {2, 0xC, 0x1, 0x4, 0x4, 0x25, 6},
197     {2, 0xC, 0x1, 0xC, 0x8, 0x57, 7},
198     {2, 0xD, 0x0, 0x0, 0x0, 0x17, 7},
199     {2, 0xD, 0x1, 0x8, 0x8, 0x05, 6},
200     {2, 0xD, 0x1, 0xC, 0x4, 0x39, 6},
201     {2, 0xD, 0x1, 0xD, 0x1, 0x67, 7},
202     {2, 0xE, 0x0, 0x0, 0x0, 0x27, 7},
203     {2, 0xE, 0x1, 0x2, 0x2, 0x7B, 7},
204     {2, 0xE, 0x1, 0x2, 0x0, 0x19, 6},
205     {2, 0xF, 0x0, 0x0, 0x0, 0x47, 7},
206     {2, 0xF, 0x1, 0xF, 0x1, 0x29, 6},
207     {2, 0xF, 0x1, 0x1, 0x1, 0x09, 6},
208     {2, 0xF, 0x1, 0x3, 0x2, 0x07, 7},
209     {2, 0xF, 0x1, 0x7, 0x4, 0x31, 6},
210     {2, 0xF, 0x1, 0xF, 0x8, 0x3B, 7},
211     {3, 0x0, 0x0, 0x0, 0x0, 0x00, 3},
212     {3, 0x1, 0x0, 0x0, 0x0, 0x04, 4},
213     {3, 0x1, 0x1, 0x1, 0x1, 0x3D, 6},
214     {3, 0x2, 0x0, 0x0, 0x0, 0x0C, 5},
215     {3, 0x2, 0x1, 0x2, 0x2, 0x4F, 7},
216     {3, 0x3, 0x0, 0x0, 0x0, 0x1D, 6},
217     {3, 0x3, 0x1, 0x1, 0x1, 0x05, 6},
218     {3, 0x3, 0x1, 0x3, 0x2, 0x7F, 7},
219     {3, 0x4, 0x0, 0x0, 0x0, 0x16, 5},
220     {3, 0x4, 0x1, 0x4, 0x4, 0x2D, 6},
221     {3, 0x5, 0x0, 0x0, 0x0, 0x06, 5},
222     {3, 0x5, 0x1, 0x5, 0x5, 0x1A, 5},
223     {3, 0x5, 0x1, 0x5, 0x1, 0x0D, 6},
224     {3, 0x5, 0x1, 0x5, 0x4, 0x35, 6},
225     {3, 0x6, 0x0, 0x0, 0x0, 0x3F, 7},
226     {3, 0x6, 0x1, 0x4, 0x4, 0x5F, 7},
227     {3, 0x6, 0x1, 0x6, 0x2, 0x1F, 7},
228     {3, 0x7, 0x0, 0x0, 0x0, 0x6F, 7},
229     {3, 0x7, 0x1, 0x6, 0x6, 0x2F, 7},
230     {3, 0x7, 0x1, 0x6, 0x4, 0x15, 6},
231     {3, 0x7, 0x1, 0x7, 0x3, 0x77, 7},
232     {3, 0x7, 0x1, 0x7, 0x1, 0x25, 6},
233     {3, 0x7, 0x1, 0x7, 0x2, 0x0F, 7},
234     {3, 0x8, 0x0, 0x0, 0x0, 0x0A, 5},
235     {3, 0x8, 0x1, 0x8, 0x8, 0x07, 7},
236     {3, 0x9, 0x0, 0x0, 0x0, 0x39, 6},
237     {3, 0x9, 0x1, 0x1, 0x1, 0x37, 7},
238     {3, 0x9, 0x1, 0x9, 0x8, 0x57, 7},
239     {3, 0xA, 0x0, 0x0, 0x0, 0x19, 6},
240     {3, 0xA, 0x1, 0x8, 0x8, 0x29, 6},
241     {3, 0xA, 0x1, 0xA, 0x2, 0x17, 7},
242     {3, 0xB, 0x0, 0x0, 0x0, 0x67, 7},
243     {3, 0xB, 0x1, 0xB, 0x1, 0x27, 7},
244     {3, 0xB, 0x1, 0x1, 0x1, 0x47, 7},
245     {3, 0xB, 0x1, 0x3, 0x2, 0x09, 6},
246     {3, 0xB, 0x1, 0xB, 0x8, 0x7B, 7},
247     {3, 0xC, 0x0, 0x0, 0x0, 0x31, 6},
248     {3, 0xC, 0x1, 0x4, 0x4, 0x11, 6},
249     {3, 0xC, 0x1, 0xC, 0x8, 0x3B, 7},
250     {3, 0xD, 0x0, 0x0, 0x0, 0x5B, 7},
251     {3, 0xD, 0x1, 0x9, 0x9, 0x1B, 7},
252     {3, 0xD, 0x1, 0xD, 0x5, 0x2B, 7},
253     {3, 0xD, 0x1, 0xD, 0x1, 0x21, 6},
254     {3, 0xD, 0x1, 0xD, 0xC, 0x6B, 7},
255     {3, 0xD, 0x1, 0xD, 0x4, 0x01, 6},
256     {3, 0xD, 0x1, 0xD, 0x8, 0x4B, 7},
257     {3, 0xE, 0x0, 0x0, 0x0, 0x0B, 7},
258     {3, 0xE, 0x1, 0xE, 0x4, 0x73, 7},
259     {3, 0xE, 0x1, 0x4, 0x4, 0x13, 7},
260     {3, 0xE, 0x1, 0xC, 0x8, 0x3E, 6},
261     {3, 0xE, 0x1, 0xE, 0x2, 0x33, 7},
262     {3, 0xF, 0x0, 0x0, 0x0, 0x53, 7},
263     {3, 0xF, 0x1, 0xA, 0xA, 0x0E, 6},
264     {3, 0xF, 0x1, 0xB, 0x9, 0x63, 7},
265     {3, 0xF, 0x1, 0xF, 0xC, 0x03, 7},
266     {3, 0xF, 0x1, 0xF, 0x8, 0x12, 5},
267     {3, 0xF, 0x1, 0xE, 0x6, 0x23, 7},
268     {3, 0xF, 0x1, 0xF, 0x5, 0x1E, 6},
269     {3, 0xF, 0x1, 0xF, 0x4, 0x02, 5},
270     {3, 0xF, 0x1, 0xF, 0x3, 0x43, 7},
271     {3, 0xF, 0x1, 0xF, 0x1, 0x1C, 5},
272     {3, 0xF, 0x1, 0xF, 0x2, 0x2E, 6},
273     {4, 0x0, 0x0, 0x0, 0x0, 0x00, 2},
274     {4, 0x1, 0x0, 0x0, 0x0, 0x0E, 4},
275     {4, 0x1, 0x1, 0x1, 0x1, 0x3F, 7},
276     {4, 0x2, 0x0, 0x0, 0x0, 0x06, 4},
277     {4, 0x2, 0x1, 0x2, 0x2, 0x1B, 6},
278     {4, 0x3, 0x0, 0x0, 0x0, 0x2B, 6},
279     {4, 0x3, 0x1, 0x2, 0x2, 0x3D, 6},
280     {4, 0x3, 0x1, 0x3, 0x1, 0x7F, 7},
281     {4, 0x4, 0x0, 0x0, 0x0, 0x0A, 4},
282     {4, 0x4, 0x1, 0x4, 0x4, 0x5F, 7},
283     {4, 0x5, 0x0, 0x0, 0x0, 0x0B, 6},
284     {4, 0x5, 0x1, 0x0, 0x0, 0x33, 6},
285     {4, 0x6, 0x0, 0x0, 0x0, 0x13, 6},
286     {4, 0x6, 0x1, 0x0, 0x0, 0x23, 6},
287     {4, 0x7, 0x0, 0x0, 0x0, 0x1F, 7},
288     {4, 0x7, 0x1, 0x4, 0x4, 0x6F, 7},
289     {4, 0x7, 0x1, 0x4, 0x0, 0x03, 6},
290     {4, 0x8, 0x0, 0x0, 0x0, 0x02, 4},
291     {4, 0x8, 0x1, 0x8, 0x8, 0x1D, 6},
292     {4, 0x9, 0x0, 0x0, 0x0, 0x11, 6},
293     {4, 0x9, 0x1, 0x0, 0x0, 0x77, 7},
294     {4, 0xA, 0x0, 0x0, 0x0, 0x01, 5},
295     {4, 0xA, 0x1, 0xA, 0xA, 0x2F, 7},
296     {4, 0xA, 0x1, 0xA, 0x2, 0x2D, 6},
297     {4, 0xA, 0x1, 0xA, 0x8, 0x0D, 6},
298     {4, 0xB, 0x0, 0x0, 0x0, 0x4F, 7},
299     {4, 0xB, 0x1, 0xB, 0x2, 0x0F, 7},
300     {4, 0xB, 0x1, 0x0, 0x0, 0x35, 6},
301     {4, 0xC, 0x0, 0x0, 0x0, 0x15, 6},
302     {4, 0xC, 0x1, 0x8, 0x8, 0x25, 6},
303     {4, 0xC, 0x1, 0xC, 0x4, 0x37, 7},
304     {4, 0xD, 0x0, 0x0, 0x0, 0x57, 7},
305     {4, 0xD, 0x1, 0x1, 0x1, 0x07, 7},
306     {4, 0xD, 0x1, 0x1, 0x0, 0x05, 6},
307     {4, 0xE, 0x0, 0x0, 0x0, 0x17, 7},
308     {4, 0xE, 0x1, 0x4, 0x4, 0x39, 6},
309     {4, 0xE, 0x1, 0xC, 0x8, 0x19, 6},
310     {4, 0xE, 0x1, 0xE, 0x2, 0x67, 7},
311     {4, 0xF, 0x0, 0x0, 0x0, 0x27, 7},
312     {4, 0xF, 0x1, 0x9, 0x9, 0x47, 7},
313     {4, 0xF, 0x1, 0x9, 0x1, 0x29, 6},
314     {4, 0xF, 0x1, 0x7, 0x6, 0x7B, 7},
315     {4, 0xF, 0x1, 0x7, 0x2, 0x09, 6},
316     {4, 0xF, 0x1, 0xB, 0x8, 0x31, 6},
317     {4, 0xF, 0x1, 0xF, 0x4, 0x3B, 7},
318     {5, 0x0, 0x0, 0x0, 0x0, 0x00, 3},
319     {5, 0x1, 0x0, 0x0, 0x0, 0x1A, 5},
320     {5, 0x1, 0x1, 0x1, 0x1, 0x7F, 7},
321     {5, 0x2, 0x0, 0x0, 0x0, 0x0A, 5},
322     {5, 0x2, 0x1, 0x2, 0x2, 0x1D, 6},
323     {5, 0x3, 0x0, 0x0, 0x0, 0x2D, 6},
324     {5, 0x3, 0x1, 0x3, 0x3, 0x5F, 7},
325     {5, 0x3, 0x1, 0x3, 0x2, 0x39, 6},
326     {5, 0x3, 0x1, 0x3, 0x1, 0x3F, 7},
327     {5, 0x4, 0x0, 0x0, 0x0, 0x12, 5},
328     {5, 0x4, 0x1, 0x4, 0x4, 0x1F, 7},
329     {5, 0x5, 0x0, 0x0, 0x0, 0x0D, 6},
330     {5, 0x5, 0x1, 0x4, 0x4, 0x35, 6},
331     {5, 0x5, 0x1, 0x5, 0x1, 0x6F, 7},
332     {5, 0x6, 0x0, 0x0, 0x0, 0x15, 6},
333     {5, 0x6, 0x1, 0x2, 0x2, 0x25, 6},
334     {5, 0x6, 0x1, 0x6, 0x4, 0x2F, 7},
335     {5, 0x7, 0x0, 0x0, 0x0, 0x4F, 7},
336     {5, 0x7, 0x1, 0x6, 0x6, 0x57, 7},
337     {5, 0x7, 0x1, 0x6, 0x4, 0x05, 6},
338     {5, 0x7, 0x1, 0x7, 0x3, 0x0F, 7},
339     {5, 0x7, 0x1, 0x7, 0x2, 0x77, 7},
340     {5, 0x7, 0x1, 0x7, 0x1, 0x37, 7},
341     {5, 0x8, 0x0, 0x0, 0x0, 0x02, 5},
342     {5, 0x8, 0x1, 0x8, 0x8, 0x19, 6},
343     {5, 0x9, 0x0, 0x0, 0x0, 0x26, 6},
344     {5, 0x9, 0x1, 0x8, 0x8, 0x17, 7},
345     {5, 0x9, 0x1, 0x9, 0x1, 0x67, 7},
346     {5, 0xA, 0x0, 0x0, 0x0, 0x1C, 5},
347     {5, 0xA, 0x1, 0xA, 0xA, 0x29, 6},
348     {5, 0xA, 0x1, 0xA, 0x2, 0x09, 6},
349     {5, 0xA, 0x1, 0xA, 0x8, 0x31, 6},
350     {5, 0xB, 0x0, 0x0, 0x0, 0x27, 7},
351     {5, 0xB, 0x1, 0x9, 0x9, 0x07, 7},
352     {5, 0xB, 0x1, 0x9, 0x8, 0x11, 6},
353     {5, 0xB, 0x1, 0xB, 0x3, 0x47, 7},
354     {5, 0xB, 0x1, 0xB, 0x2, 0x21, 6},
355     {5, 0xB, 0x1, 0xB, 0x1, 0x7B, 7},
356     {5, 0xC, 0x0, 0x0, 0x0, 0x01, 6},
357     {5, 0xC, 0x1, 0x8, 0x8, 0x3E, 6},
358     {5, 0xC, 0x1, 0xC, 0x4, 0x3B, 7},
359     {5, 0xD, 0x0, 0x0, 0x0, 0x5B, 7},
360     {5, 0xD, 0x1, 0x9, 0x9, 0x6B, 7},
361     {5, 0xD, 0x1, 0x9, 0x8, 0x1E, 6},
362     {5, 0xD, 0x1, 0xD, 0x5, 0x1B, 7},
363     {5, 0xD, 0x1, 0xD, 0x4, 0x2E, 6},
364     {5, 0xD, 0x1, 0xD, 0x1, 0x2B, 7},
365     {5, 0xE, 0x0, 0x0, 0x0, 0x4B, 7},
366     {5, 0xE, 0x1, 0x6, 0x6, 0x0B, 7},
367     {5, 0xE, 0x1, 0xE, 0xA, 0x33, 7},
368     {5, 0xE, 0x1, 0xE, 0x2, 0x0E, 6},
369     {5, 0xE, 0x1, 0xE, 0xC, 0x73, 7},
370     {5, 0xE, 0x1, 0xE, 0x8, 0x36, 6},
371     {5, 0xE, 0x1, 0xE, 0x4, 0x53, 7},
372     {5, 0xF, 0x0, 0x0, 0x0, 0x13, 7},
373     {5, 0xF, 0x1, 0x7, 0x7, 0x43, 7},
374     {5, 0xF, 0x1, 0x7, 0x6, 0x16, 6},
375     {5, 0xF, 0x1, 0x7, 0x5, 0x63, 7},
376     {5, 0xF, 0x1, 0xF, 0xC, 0x23, 7},
377     {5, 0xF, 0x1, 0xF, 0x4, 0x0C, 5},
378     {5, 0xF, 0x1, 0xD, 0x9, 0x03, 7},
379     {5, 0xF, 0x1, 0xF, 0xA, 0x3D, 7},
380     {5, 0xF, 0x1, 0xF, 0x8, 0x14, 5},
381     {5, 0xF, 0x1, 0xF, 0x3, 0x7D, 7},
382     {5, 0xF, 0x1, 0xF, 0x2, 0x04, 5},
383     {5, 0xF, 0x1, 0xF, 0x1, 0x06, 6},
384     {6, 0x0, 0x0, 0x0, 0x0, 0x00, 3},
385     {6, 0x1, 0x0, 0x0, 0x0, 0x04, 4},
386     {6, 0x1, 0x1, 0x1, 0x1, 0x03, 6},
387     {6, 0x2, 0x0, 0x0, 0x0, 0x0C, 5},
388     {6, 0x2, 0x1, 0x2, 0x2, 0x0D, 6},
389     {6, 0x3, 0x0, 0x0, 0x0, 0x1A, 5},
390     {6, 0x3, 0x1, 0x3, 0x3, 0x3D, 6},
391     {6, 0x3, 0x1, 0x3, 0x1, 0x1D, 6},
392     {6, 0x3, 0x1, 0x3, 0x2, 0x2D, 6},
393     {6, 0x4, 0x0, 0x0, 0x0, 0x0A, 5},
394     {6, 0x4, 0x1, 0x4, 0x4, 0x3F, 7},
395     {6, 0x5, 0x0, 0x0, 0x0, 0x35, 6},
396     {6, 0x5, 0x1, 0x1, 0x1, 0x15, 6},
397     {6, 0x5, 0x1, 0x5, 0x4, 0x7F, 7},
398     {6, 0x6, 0x0, 0x0, 0x0, 0x25, 6},
399     {6, 0x6, 0x1, 0x2, 0x2, 0x5F, 7},
400     {6, 0x6, 0x1, 0x6, 0x4, 0x1F, 7},
401     {6, 0x7, 0x0, 0x0, 0x0, 0x6F, 7},
402     {6, 0x7, 0x1, 0x6, 0x6, 0x4F, 7},
403     {6, 0x7, 0x1, 0x6, 0x4, 0x05, 6},
404     {6, 0x7, 0x1, 0x7, 0x3, 0x2F, 7},
405     {6, 0x7, 0x1, 0x7, 0x1, 0x36, 6},
406     {6, 0x7, 0x1, 0x7, 0x2, 0x77, 7},
407     {6, 0x8, 0x0, 0x0, 0x0, 0x12, 5},
408     {6, 0x8, 0x1, 0x8, 0x8, 0x0F, 7},
409     {6, 0x9, 0x0, 0x0, 0x0, 0x39, 6},
410     {6, 0x9, 0x1, 0x1, 0x1, 0x37, 7},
411     {6, 0x9, 0x1, 0x9, 0x8, 0x57, 7},
412     {6, 0xA, 0x0, 0x0, 0x0, 0x19, 6},
413     {6, 0xA, 0x1, 0x2, 0x2, 0x29, 6},
414     {6, 0xA, 0x1, 0xA, 0x8, 0x17, 7},
415     {6, 0xB, 0x0, 0x0, 0x0, 0x67, 7},
416     {6, 0xB, 0x1, 0x9, 0x9, 0x47, 7},
417     {6, 0xB, 0x1, 0x9, 0x1, 0x09, 6},
418     {6, 0xB, 0x1, 0xB, 0xA, 0x27, 7},
419     {6, 0xB, 0x1, 0xB, 0x2, 0x31, 6},
420     {6, 0xB, 0x1, 0xB, 0x8, 0x7B, 7},
421     {6, 0xC, 0x0, 0x0, 0x0, 0x11, 6},
422     {6, 0xC, 0x1, 0xC, 0xC, 0x07, 7},
423     {6, 0xC, 0x1, 0xC, 0x8, 0x21, 6},
424     {6, 0xC, 0x1, 0xC, 0x4, 0x3B, 7},
425     {6, 0xD, 0x0, 0x0, 0x0, 0x5B, 7},
426     {6, 0xD, 0x1, 0x5, 0x5, 0x33, 7},
427     {6, 0xD, 0x1, 0x5, 0x4, 0x01, 6},
428     {6, 0xD, 0x1, 0xC, 0x8, 0x1B, 7},
429     {6, 0xD, 0x1, 0xD, 0x1, 0x6B, 7},
430     {6, 0xE, 0x0, 0x0, 0x0, 0x2B, 7},
431     {6, 0xE, 0x1, 0xE, 0x2, 0x4B, 7},
432     {6, 0xE, 0x1, 0x2, 0x2, 0x0B, 7},
433     {6, 0xE, 0x1, 0xE, 0xC, 0x73, 7},
434     {6, 0xE, 0x1, 0xE, 0x8, 0x3E, 6},
435     {6, 0xE, 0x1, 0xE, 0x4, 0x53, 7},
436     {6, 0xF, 0x0, 0x0, 0x0, 0x13, 7},
437     {6, 0xF, 0x1, 0x6, 0x6, 0x1E, 6},
438     {6, 0xF, 0x1, 0xE, 0xA, 0x2E, 6},
439     {6, 0xF, 0x1, 0xF, 0x3, 0x0E, 6},
440     {6, 0xF, 0x1, 0xF, 0x2, 0x02, 5},
441     {6, 0xF, 0x1, 0xB, 0x9, 0x63, 7},
442     {6, 0xF, 0x1, 0xF, 0xC, 0x16, 6},
443     {6, 0xF, 0x1, 0xF, 0x8, 0x06, 6},
444     {6, 0xF, 0x1, 0xF, 0x5, 0x23, 7},
445     {6, 0xF, 0x1, 0xF, 0x1, 0x1C, 5},
446     {6, 0xF, 0x1, 0xF, 0x4, 0x26, 6},
447     {7, 0x0, 0x0, 0x0, 0x0, 0x12, 5},
448     {7, 0x1, 0x0, 0x0, 0x0, 0x05, 6},
449     {7, 0x1, 0x1, 0x1, 0x1, 0x7F, 7},
450     {7, 0x2, 0x0, 0x0, 0x0, 0x39, 6},
451     {7, 0x2, 0x1, 0x2, 0x2, 0x3F, 7},
452     {7, 0x3, 0x0, 0x0, 0x0, 0x5F, 7},
453     {7, 0x3, 0x1, 0x3, 0x3, 0x1F, 7},
454     {7, 0x3, 0x1, 0x3, 0x2, 0x6F, 7},
455     {7, 0x3, 0x1, 0x3, 0x1, 0x2F, 7},
456     {7, 0x4, 0x0, 0x0, 0x0, 0x4F, 7},
457     {7, 0x4, 0x1, 0x4, 0x4, 0x0F, 7},
458     {7, 0x5, 0x0, 0x0, 0x0, 0x57, 7},
459     {7, 0x5, 0x1, 0x1, 0x1, 0x19, 6},
460     {7, 0x5, 0x1, 0x5, 0x4, 0x77, 7},
461     {7, 0x6, 0x0, 0x0, 0x0, 0x37, 7},
462     {7, 0x6, 0x1, 0x0, 0x0, 0x29, 6},
463     {7, 0x7, 0x0, 0x0, 0x0, 0x17, 7},
464     {7, 0x7, 0x1, 0x6, 0x6, 0x67, 7},
465     {7, 0x7, 0x1, 0x7, 0x3, 0x27, 7},
466     {7, 0x7, 0x1, 0x7, 0x2, 0x47, 7},
467     {7, 0x7, 0x1, 0x7, 0x5, 0x1B, 7},
468     {7, 0x7, 0x1, 0x7, 0x1, 0x09, 6},
469     {7, 0x7, 0x1, 0x7, 0x4, 0x07, 7},
470     {7, 0x8, 0x0, 0x0, 0x0, 0x7B, 7},
471     {7, 0x8, 0x1, 0x8, 0x8, 0x3B, 7},
472     {7, 0x9, 0x0, 0x0, 0x0, 0x5B, 7},
473     {7, 0x9, 0x1, 0x0, 0x0, 0x31, 6},
474     {7, 0xA, 0x0, 0x0, 0x0, 0x53, 7},
475     {7, 0xA, 0x1, 0x2, 0x2, 0x11, 6},
476     {7, 0xA, 0x1, 0xA, 0x8, 0x6B, 7},
477     {7, 0xB, 0x0, 0x0, 0x0, 0x2B, 7},
478     {7, 0xB, 0x1, 0x9, 0x9, 0x4B, 7},
479     {7, 0xB, 0x1, 0xB, 0x3, 0x0B, 7},
480     {7, 0xB, 0x1, 0xB, 0x1, 0x73, 7},
481     {7, 0xB, 0x1, 0xB, 0xA, 0x33, 7},
482     {7, 0xB, 0x1, 0xB, 0x2, 0x21, 6},
483     {7, 0xB, 0x1, 0xB, 0x8, 0x13, 7},
484     {7, 0xC, 0x0, 0x0, 0x0, 0x63, 7},
485     {7, 0xC, 0x1, 0x8, 0x8, 0x23, 7},
486     {7, 0xC, 0x1, 0xC, 0x4, 0x43, 7},
487     {7, 0xD, 0x0, 0x0, 0x0, 0x03, 7},
488     {7, 0xD, 0x1, 0x9, 0x9, 0x7D, 7},
489     {7, 0xD, 0x1, 0xD, 0x5, 0x5D, 7},
490     {7, 0xD, 0x1, 0xD, 0x1, 0x01, 6},
491     {7, 0xD, 0x1, 0xD, 0xC, 0x3D, 7},
492     {7, 0xD, 0x1, 0xD, 0x4, 0x3E, 6},
493     {7, 0xD, 0x1, 0xD, 0x8, 0x1D, 7},
494     {7, 0xE, 0x0, 0x0, 0x0, 0x6D, 7},
495     {7, 0xE, 0x1, 0x6, 0x6, 0x2D, 7},
496     {7, 0xE, 0x1, 0xE, 0xA, 0x0D, 7},
497     {7, 0xE, 0x1, 0xE, 0x2, 0x1E, 6},
498     {7, 0xE, 0x1, 0xE, 0xC, 0x4D, 7},
499     {7, 0xE, 0x1, 0xE, 0x8, 0x0E, 6},
500     {7, 0xE, 0x1, 0xE, 0x4, 0x75, 7},
501     {7, 0xF, 0x0, 0x0, 0x0, 0x15, 7},
502     {7, 0xF, 0x1, 0xF, 0xF, 0x06, 5},
503     {7, 0xF, 0x1, 0xF, 0xD, 0x35, 7},
504     {7, 0xF, 0x1, 0xF, 0x7, 0x55, 7},
505     {7, 0xF, 0x1, 0xF, 0x5, 0x1A, 5},
506     {7, 0xF, 0x1, 0xF, 0xB, 0x25, 7},
507     {7, 0xF, 0x1, 0xF, 0x3, 0x0A, 5},
508     {7, 0xF, 0x1, 0xF, 0x9, 0x2E, 6},
509     {7, 0xF, 0x1, 0xF, 0x1, 0x00, 4},
510     {7, 0xF, 0x1, 0xF, 0xE, 0x65, 7},
511     {7, 0xF, 0x1, 0xF, 0x6, 0x36, 6},
512     {7, 0xF, 0x1, 0xF, 0xA, 0x02, 5},
513     {7, 0xF, 0x1, 0xF, 0x2, 0x0C, 4},
514     {7, 0xF, 0x1, 0xF, 0xC, 0x16, 6},
515     {7, 0xF, 0x1, 0xF, 0x8, 0x04, 4},
516     {7, 0xF, 0x1, 0xF, 0x4, 0x08, 4}
517 };
518
519 // nono-initial quad rows
520 static vlc_src_table_t tbl1[] = {
521     {0, 0x1, 0x0, 0x0, 0x0, 0x00, 3},
522     {0, 0x1, 0x1, 0x1, 0x1, 0x27, 6},
523     {0, 0x2, 0x0, 0x0, 0x0, 0x06, 3},
524     {0, 0x2, 0x1, 0x2, 0x2, 0x17, 6},
525     {0, 0x3, 0x0, 0x0, 0x0, 0x0D, 5},
526     {0, 0x3, 0x1, 0x0, 0x0, 0x3B, 6},
527     {0, 0x4, 0x0, 0x0, 0x0, 0x02, 3},
528     {0, 0x4, 0x1, 0x4, 0x4, 0x07, 6},
529     {0, 0x5, 0x0, 0x0, 0x0, 0x15, 5},
530     {0, 0x5, 0x1, 0x0, 0x0, 0x2B, 6},
531     {0, 0x6, 0x0, 0x0, 0x0, 0x01, 5},
532     {0, 0x6, 0x1, 0x0, 0x0, 0x7F, 7},
533     {0, 0x7, 0x0, 0x0, 0x0, 0x1F, 7},
534     {0, 0x7, 0x1, 0x0, 0x0, 0x1B, 6},
535     {0, 0x8, 0x0, 0x0, 0x0, 0x04, 3},
536     {0, 0x8, 0x1, 0x8, 0x8, 0x05, 5},
537     {0, 0x9, 0x0, 0x0, 0x0, 0x19, 5},
538     {0, 0x9, 0x1, 0x0, 0x0, 0x13, 6},
539     {0, 0xA, 0x0, 0x0, 0x0, 0x09, 5},
540     {0, 0xA, 0x1, 0x8, 0x8, 0x0B, 6},
541     {0, 0xA, 0x1, 0xA, 0x2, 0x3F, 7},
542     {0, 0xB, 0x0, 0x0, 0x0, 0x5F, 7},
543     {0, 0xB, 0x1, 0x0, 0x0, 0x33, 6},
544     {0, 0xC, 0x0, 0x0, 0x0, 0x11, 5},
545     {0, 0xC, 0x1, 0x8, 0x8, 0x23, 6},
546     {0, 0xC, 0x1, 0xC, 0x4, 0x6F, 7},
547     {0, 0xD, 0x0, 0x0, 0x0, 0x0F, 7},
548     {0, 0xD, 0x1, 0x0, 0x0, 0x03, 6},
549     {0, 0xE, 0x0, 0x0, 0x0, 0x2F, 7},
550     {0, 0xE, 0x1, 0x4, 0x4, 0x4F, 7},
551     {0, 0xE, 0x1, 0x4, 0x0, 0x3D, 6},
552     {0, 0xF, 0x0, 0x0, 0x0, 0x77, 7},
553     {0, 0xF, 0x1, 0x1, 0x1, 0x37, 7},
554     {0, 0xF, 0x1, 0x1, 0x0, 0x1D, 6},
555     {1, 0x0, 0x0, 0x0, 0x0, 0x00, 1},
556     {1, 0x1, 0x0, 0x0, 0x0, 0x05, 4},
557     {1, 0x1, 0x1, 0x1, 0x1, 0x7F, 7},
558     {1, 0x2, 0x0, 0x0, 0x0, 0x09, 4},
559     {1, 0x2, 0x1, 0x2, 0x2, 0x1F, 7},
560     {1, 0x3, 0x0, 0x0, 0x0, 0x1D, 5},
561     {1, 0x3, 0x1, 0x1, 0x1, 0x3F, 7},
562     {1, 0x3, 0x1, 0x3, 0x2, 0x5F, 7},
563     {1, 0x4, 0x0, 0x0, 0x0, 0x0D, 5},
564     {1, 0x4, 0x1, 0x4, 0x4, 0x37, 7},
565     {1, 0x5, 0x0, 0x0, 0x0, 0x03, 6},
566     {1, 0x5, 0x1, 0x0, 0x0, 0x6F, 7},
567     {1, 0x6, 0x0, 0x0, 0x0, 0x2F, 7},
568     {1, 0x6, 0x1, 0x0, 0x0, 0x4F, 7},
569     {1, 0x7, 0x0, 0x0, 0x0, 0x0F, 7},
570     {1, 0x7, 0x1, 0x0, 0x0, 0x77, 7},
571     {1, 0x8, 0x0, 0x0, 0x0, 0x01, 4},
572     {1, 0x8, 0x1, 0x8, 0x8, 0x17, 7},
573     {1, 0x9, 0x0, 0x0, 0x0, 0x0B, 6},
574     {1, 0x9, 0x1, 0x0, 0x0, 0x57, 7},
575     {1, 0xA, 0x0, 0x0, 0x0, 0x33, 6},
576     {1, 0xA, 0x1, 0x0, 0x0, 0x67, 7},
577     {1, 0xB, 0x0, 0x0, 0x0, 0x27, 7},
578     {1, 0xB, 0x1, 0x0, 0x0, 0x2B, 7},
579     {1, 0xC, 0x0, 0x0, 0x0, 0x13, 6},
580     {1, 0xC, 0x1, 0x0, 0x0, 0x47, 7},
581     {1, 0xD, 0x0, 0x0, 0x0, 0x07, 7},
582     {1, 0xD, 0x1, 0x0, 0x0, 0x7B, 7},
583     {1, 0xE, 0x0, 0x0, 0x0, 0x3B, 7},
584     {1, 0xE, 0x1, 0x0, 0x0, 0x5B, 7},
585     {1, 0xF, 0x0, 0x0, 0x0, 0x1B, 7},
586     {1, 0xF, 0x1, 0x4, 0x4, 0x6B, 7},
587     {1, 0xF, 0x1, 0x4, 0x0, 0x23, 6},
588     {2, 0x0, 0x0, 0x0, 0x0, 0x00, 1},
589     {2, 0x1, 0x0, 0x0, 0x0, 0x09, 4},
590     {2, 0x1, 0x1, 0x1, 0x1, 0x7F, 7},
591     {2, 0x2, 0x0, 0x0, 0x0, 0x01, 4},
592     {2, 0x2, 0x1, 0x2, 0x2, 0x23, 6},
593     {2, 0x3, 0x0, 0x0, 0x0, 0x3D, 6},
594     {2, 0x3, 0x1, 0x2, 0x2, 0x3F, 7},
595     {2, 0x3, 0x1, 0x3, 0x1, 0x1F, 7},
596     {2, 0x4, 0x0, 0x0, 0x0, 0x15, 5},
597     {2, 0x4, 0x1, 0x4, 0x4, 0x5F, 7},
598     {2, 0x5, 0x0, 0x0, 0x0, 0x03, 6},
599     {2, 0x5, 0x1, 0x0, 0x0, 0x6F, 7},
600     {2, 0x6, 0x0, 0x0, 0x0, 0x2F, 7},
601     {2, 0x6, 0x1, 0x0, 0x0, 0x4F, 7},
602     {2, 0x7, 0x0, 0x0, 0x0, 0x0F, 7},
603     {2, 0x7, 0x1, 0x0, 0x0, 0x17, 7},
604     {2, 0x8, 0x0, 0x0, 0x0, 0x05, 5},
605     {2, 0x8, 0x1, 0x8, 0x8, 0x77, 7},
606     {2, 0x9, 0x0, 0x0, 0x0, 0x37, 7},
607     {2, 0x9, 0x1, 0x0, 0x0, 0x57, 7},
608     {2, 0xA, 0x0, 0x0, 0x0, 0x1D, 6},
609     {2, 0xA, 0x1, 0xA, 0xA, 0x7B, 7},
610     {2, 0xA, 0x1, 0xA, 0x2, 0x2D, 6},
611     {2, 0xA, 0x1, 0xA, 0x8, 0x67, 7},
612     {2, 0xB, 0x0, 0x0, 0x0, 0x27, 7},
613     {2, 0xB, 0x1, 0xB, 0x2, 0x47, 7},
614     {2, 0xB, 0x1, 0x0, 0x0, 0x07, 7},
615     {2, 0xC, 0x0, 0x0, 0x0, 0x0D, 6},
616     {2, 0xC, 0x1, 0x0, 0x0, 0x3B, 7},
617     {2, 0xD, 0x0, 0x0, 0x0, 0x5B, 7},
618     {2, 0xD, 0x1, 0x0, 0x0, 0x1B, 7},
619     {2, 0xE, 0x0, 0x0, 0x0, 0x6B, 7},
620     {2, 0xE, 0x1, 0x4, 0x4, 0x2B, 7},
621     {2, 0xE, 0x1, 0x4, 0x0, 0x4B, 7},
622     {2, 0xF, 0x0, 0x0, 0x0, 0x0B, 7},
623     {2, 0xF, 0x1, 0x4, 0x4, 0x73, 7},
624     {2, 0xF, 0x1, 0x5, 0x1, 0x33, 7},
625     {2, 0xF, 0x1, 0x7, 0x2, 0x53, 7},
626     {2, 0xF, 0x1, 0xF, 0x8, 0x13, 7},
627     {3, 0x0, 0x0, 0x0, 0x0, 0x00, 2},
628     {3, 0x1, 0x0, 0x0, 0x0, 0x0A, 4},
629     {3, 0x1, 0x1, 0x1, 0x1, 0x0B, 6},
630     {3, 0x2, 0x0, 0x0, 0x0, 0x02, 4},
631     {3, 0x2, 0x1, 0x2, 0x2, 0x23, 6},
632     {3, 0x3, 0x0, 0x0, 0x0, 0x0E, 5},
633     {3, 0x3, 0x1, 0x3, 0x3, 0x7F, 7},
634     {3, 0x3, 0x1, 0x3, 0x2, 0x33, 6},
635     {3, 0x3, 0x1, 0x3, 0x1, 0x13, 6},
636     {3, 0x4, 0x0, 0x0, 0x0, 0x16, 5},
637     {3, 0x4, 0x1, 0x4, 0x4, 0x3F, 7},
638     {3, 0x5, 0x0, 0x0, 0x0, 0x03, 6},
639     {3, 0x5, 0x1, 0x1, 0x1, 0x3D, 6},
640     {3, 0x5, 0x1, 0x5, 0x4, 0x1F, 7},
641     {3, 0x6, 0x0, 0x0, 0x0, 0x1D, 6},
642     {3, 0x6, 0x1, 0x0, 0x0, 0x5F, 7},
643     {3, 0x7, 0x0, 0x0, 0x0, 0x2D, 6},
644     {3, 0x7, 0x1, 0x4, 0x4, 0x2F, 7},
645     {3, 0x7, 0x1, 0x5, 0x1, 0x1E, 6},
646     {3, 0x7, 0x1, 0x7, 0x2, 0x6F, 7},
647     {3, 0x8, 0x0, 0x0, 0x0, 0x06, 5},
648     {3, 0x8, 0x1, 0x8, 0x8, 0x4F, 7},
649     {3, 0x9, 0x0, 0x0, 0x0, 0x0D, 6},
650     {3, 0x9, 0x1, 0x0, 0x0, 0x35, 6},
651     {3, 0xA, 0x0, 0x0, 0x0, 0x15, 6},
652     {3, 0xA, 0x1, 0x2, 0x2, 0x25, 6},
653     {3, 0xA, 0x1, 0xA, 0x8, 0x0F, 7},
654     {3, 0xB, 0x0, 0x0, 0x0, 0x05, 6},
655     {3, 0xB, 0x1, 0x8, 0x8, 0x39, 6},
656     {3, 0xB, 0x1, 0xB, 0x3, 0x17, 7},
657     {3, 0xB, 0x1, 0xB, 0x2, 0x19, 6},
658     {3, 0xB, 0x1, 0xB, 0x1, 0x77, 7},
659     {3, 0xC, 0x0, 0x0, 0x0, 0x29, 6},
660     {3, 0xC, 0x1, 0x0, 0x0, 0x09, 6},
661     {3, 0xD, 0x0, 0x0, 0x0, 0x37, 7},
662     {3, 0xD, 0x1, 0x4, 0x4, 0x57, 7},
663     {3, 0xD, 0x1, 0x4, 0x0, 0x31, 6},
664     {3, 0xE, 0x0, 0x0, 0x0, 0x67, 7},
665     {3, 0xE, 0x1, 0x4, 0x4, 0x27, 7},
666     {3, 0xE, 0x1, 0xC, 0x8, 0x47, 7},
667     {3, 0xE, 0x1, 0xE, 0x2, 0x6B, 7},
668     {3, 0xF, 0x0, 0x0, 0x0, 0x11, 6},
669     {3, 0xF, 0x1, 0x6, 0x6, 0x07, 7},
670     {3, 0xF, 0x1, 0x7, 0x3, 0x7B, 7},
671     {3, 0xF, 0x1, 0xF, 0xA, 0x3B, 7},
672     {3, 0xF, 0x1, 0xF, 0x2, 0x21, 6},
673     {3, 0xF, 0x1, 0xF, 0x8, 0x01, 6},
674     {3, 0xF, 0x1, 0xA, 0x8, 0x5B, 7},
675     {3, 0xF, 0x1, 0xF, 0x5, 0x1B, 7},
676     {3, 0xF, 0x1, 0xF, 0x1, 0x3E, 6},
677     {3, 0xF, 0x1, 0xF, 0x4, 0x2B, 7},
678     {4, 0x0, 0x0, 0x0, 0x0, 0x00, 1},
679     {4, 0x1, 0x0, 0x0, 0x0, 0x0D, 5},
680     {4, 0x1, 0x1, 0x1, 0x1, 0x7F, 7},
681     {4, 0x2, 0x0, 0x0, 0x0, 0x15, 5},
682     {4, 0x2, 0x1, 0x2, 0x2, 0x3F, 7},
683     {4, 0x3, 0x0, 0x0, 0x0, 0x5F, 7},
684     {4, 0x3, 0x1, 0x0, 0x0, 0x6F, 7},
685     {4, 0x4, 0x0, 0x0, 0x0, 0x09, 4},
686     {4, 0x4, 0x1, 0x4, 0x4, 0x23, 6},
687     {4, 0x5, 0x0, 0x0, 0x0, 0x33, 6},
688     {4, 0x5, 0x1, 0x0, 0x0, 0x1F, 7},
689     {4, 0x6, 0x0, 0x0, 0x0, 0x13, 6},
690     {4, 0x6, 0x1, 0x0, 0x0, 0x2F, 7},
691     {4, 0x7, 0x0, 0x0, 0x0, 0x4F, 7},
692     {4, 0x7, 0x1, 0x0, 0x0, 0x57, 7},
693     {4, 0x8, 0x0, 0x0, 0x0, 0x01, 4},
694     {4, 0x8, 0x1, 0x8, 0x8, 0x0F, 7},
695     {4, 0x9, 0x0, 0x0, 0x0, 0x77, 7},
696     {4, 0x9, 0x1, 0x0, 0x0, 0x37, 7},
697     {4, 0xA, 0x0, 0x0, 0x0, 0x1D, 6},
698     {4, 0xA, 0x1, 0x0, 0x0, 0x17, 7},
699     {4, 0xB, 0x0, 0x0, 0x0, 0x67, 7},
700     {4, 0xB, 0x1, 0x0, 0x0, 0x6B, 7},
701     {4, 0xC, 0x0, 0x0, 0x0, 0x05, 5},
702     {4, 0xC, 0x1, 0xC, 0xC, 0x27, 7},
703     {4, 0xC, 0x1, 0xC, 0x8, 0x47, 7},
704     {4, 0xC, 0x1, 0xC, 0x4, 0x07, 7},
705     {4, 0xD, 0x0, 0x0, 0x0, 0x7B, 7},
706     {4, 0xD, 0x1, 0x0, 0x0, 0x3B, 7},
707     {4, 0xE, 0x0, 0x0, 0x0, 0x5B, 7},
708     {4, 0xE, 0x1, 0x2, 0x2, 0x1B, 7},
709     {4, 0xE, 0x1, 0x2, 0x0, 0x03, 6},
710     {4, 0xF, 0x0, 0x0, 0x0, 0x2B, 7},
711     {4, 0xF, 0x1, 0x1, 0x1, 0x4B, 7},
712     {4, 0xF, 0x1, 0x3, 0x2, 0x0B, 7},
713     {4, 0xF, 0x1, 0x3, 0x0, 0x3D, 6},
714     {5, 0x0, 0x0, 0x0, 0x0, 0x00, 2},
715     {5, 0x1, 0x0, 0x0, 0x0, 0x1E, 5},
716     {5, 0x1, 0x1, 0x1, 0x1, 0x3B, 6},
717     {5, 0x2, 0x0, 0x0, 0x0, 0x0A, 5},
718     {5, 0x2, 0x1, 0x2, 0x2, 0x3F, 7},
719     {5, 0x3, 0x0, 0x0, 0x0, 0x1B, 6},
720     {5, 0x3, 0x1, 0x0, 0x0, 0x0B, 6},
721     {5, 0x4, 0x0, 0x0, 0x0, 0x02, 4},
722     {5, 0x4, 0x1, 0x4, 0x4, 0x2B, 6},
723     {5, 0x5, 0x0, 0x0, 0x0, 0x0E, 5},
724     {5, 0x5, 0x1, 0x4, 0x4, 0x33, 6},
725     {5, 0x5, 0x1, 0x5, 0x1, 0x7F, 7},
726     {5, 0x6, 0x0, 0x0, 0x0, 0x13, 6},
727     {5, 0x6, 0x1, 0x0, 0x0, 0x6F, 7},
728     {5, 0x7, 0x0, 0x0, 0x0, 0x23, 6},
729     {5, 0x7, 0x1, 0x2, 0x2, 0x5F, 7},
730     {5, 0x7, 0x1, 0x2, 0x0, 0x15, 6},
731     {5, 0x8, 0x0, 0x0, 0x0, 0x16, 5},
732     {5, 0x8, 0x1, 0x8, 0x8, 0x03, 6},
733     {5, 0x9, 0x0, 0x0, 0x0, 0x3D, 6},
734     {5, 0x9, 0x1, 0x0, 0x0, 0x1F, 7},
735     {5, 0xA, 0x0, 0x0, 0x0, 0x1D, 6},
736     {5, 0xA, 0x1, 0x0, 0x0, 0x2D, 6},
737     {5, 0xB, 0x0, 0x0, 0x0, 0x0D, 6},
738     {5, 0xB, 0x1, 0x1, 0x1, 0x4F, 7},
739     {5, 0xB, 0x1, 0x1, 0x0, 0x35, 6},
740     {5, 0xC, 0x0, 0x0, 0x0, 0x06, 5},
741     {5, 0xC, 0x1, 0x4, 0x4, 0x25, 6},
742     {5, 0xC, 0x1, 0xC, 0x8, 0x2F, 7},
743     {5, 0xD, 0x0, 0x0, 0x0, 0x05, 6},
744     {5, 0xD, 0x1, 0x1, 0x1, 0x77, 7},
745     {5, 0xD, 0x1, 0x5, 0x4, 0x39, 6},
746     {5, 0xD, 0x1, 0xD, 0x8, 0x0F, 7},
747     {5, 0xE, 0x0, 0x0, 0x0, 0x19, 6},
748     {5, 0xE, 0x1, 0x2, 0x2, 0x57, 7},
749     {5, 0xE, 0x1, 0xA, 0x8, 0x01, 6},
750     {5, 0xE, 0x1, 0xE, 0x4, 0x37, 7},
751     {5, 0xF, 0x0, 0x0, 0x0, 0x1A, 5},
752     {5, 0xF, 0x1, 0x9, 0x9, 0x17, 7},
753     {5, 0xF, 0x1, 0xD, 0x5, 0x67, 7},
754     {5, 0xF, 0x1, 0xF, 0x3, 0x07, 7},
755     {5, 0xF, 0x1, 0xF, 0x1, 0x29, 6},
756     {5, 0xF, 0x1, 0x7, 0x6, 0x27, 7},
757     {5, 0xF, 0x1, 0xF, 0xC, 0x09, 6},
758     {5, 0xF, 0x1, 0xF, 0x4, 0x31, 6},
759     {5, 0xF, 0x1, 0xF, 0xA, 0x47, 7},
760     {5, 0xF, 0x1, 0xF, 0x8, 0x11, 6},
761     {5, 0xF, 0x1, 0xF, 0x2, 0x21, 6},
762     {6, 0x0, 0x0, 0x0, 0x0, 0x00, 3},
763     {6, 0x1, 0x0, 0x0, 0x0, 0x02, 4},
764     {6, 0x1, 0x1, 0x1, 0x1, 0x03, 6},
765     {6, 0x2, 0x0, 0x0, 0x0, 0x0C, 4},
766     {6, 0x2, 0x1, 0x2, 0x2, 0x3D, 6},
767     {6, 0x3, 0x0, 0x0, 0x0, 0x1D, 6},
768     {6, 0x3, 0x1, 0x2, 0x2, 0x0D, 6},
769     {6, 0x3, 0x1, 0x3, 0x1, 0x7F, 7},
770     {6, 0x4, 0x0, 0x0, 0x0, 0x04, 4},
771     {6, 0x4, 0x1, 0x4, 0x4, 0x2D, 6},
772     {6, 0x5, 0x0, 0x0, 0x0, 0x0A, 5},
773     {6, 0x5, 0x1, 0x4, 0x4, 0x35, 6},
774     {6, 0x5, 0x1, 0x5, 0x1, 0x2F, 7},
775     {6, 0x6, 0x0, 0x0, 0x0, 0x15, 6},
776     {6, 0x6, 0x1, 0x2, 0x2, 0x3F, 7},
777     {6, 0x6, 0x1, 0x6, 0x4, 0x5F, 7},
778     {6, 0x7, 0x0, 0x0, 0x0, 0x25, 6},
779     {6, 0x7, 0x1, 0x2, 0x2, 0x29, 6},
780     {6, 0x7, 0x1, 0x3, 0x1, 0x1F, 7},
781     {6, 0x7, 0x1, 0x7, 0x4, 0x6F, 7},
782     {6, 0x8, 0x0, 0x0, 0x0, 0x16, 5},
783     {6, 0x8, 0x1, 0x8, 0x8, 0x05, 6},
784     {6, 0x9, 0x0, 0x0, 0x0, 0x39, 6},
785     {6, 0x9, 0x1, 0x0, 0x0, 0x19, 6},
786     {6, 0xA, 0x0, 0x0, 0x0, 0x06, 5},
787     {6, 0xA, 0x1, 0xA, 0xA, 0x0F, 7},
788     {6, 0xA, 0x1, 0xA, 0x2, 0x09, 6},
789     {6, 0xA, 0x1, 0xA, 0x8, 0x4F, 7},
790     {6, 0xB, 0x0, 0x0, 0x0, 0x0E, 6},
791     {6, 0xB, 0x1, 0xB, 0x2, 0x77, 7},
792     {6, 0xB, 0x1, 0x2, 0x2, 0x37, 7},
793     {6, 0xB, 0x1, 0xA, 0x8, 0x57, 7},
794     {6, 0xB, 0x1, 0xB, 0x1, 0x47, 7},
795     {6, 0xC, 0x0, 0x0, 0x0, 0x1A, 5},
796     {6, 0xC, 0x1, 0xC, 0xC, 0x17, 7},
797     {6, 0xC, 0x1, 0xC, 0x8, 0x67, 7},
798     {6, 0xC, 0x1, 0xC, 0x4, 0x27, 7},
799     {6, 0xD, 0x0, 0x0, 0x0, 0x31, 6},
800     {6, 0xD, 0x1, 0xD, 0x4, 0x07, 7},
801     {6, 0xD, 0x1, 0x4, 0x4, 0x7B, 7},
802     {6, 0xD, 0x1, 0xC, 0x8, 0x3B, 7},
803     {6, 0xD, 0x1, 0xD, 0x1, 0x2B, 7},
804     {6, 0xE, 0x0, 0x0, 0x0, 0x11, 6},
805     {6, 0xE, 0x1, 0xE, 0x4, 0x5B, 7},
806     {6, 0xE, 0x1, 0x4, 0x4, 0x1B, 7},
807     {6, 0xE, 0x1, 0xE, 0xA, 0x6B, 7},
808     {6, 0xE, 0x1, 0xE, 0x8, 0x21, 6},
809     {6, 0xE, 0x1, 0xE, 0x2, 0x33, 7},
810     {6, 0xF, 0x0, 0x0, 0x0, 0x01, 6},
811     {6, 0xF, 0x1, 0x3, 0x3, 0x4B, 7},
812     {6, 0xF, 0x1, 0x7, 0x6, 0x0B, 7},
813     {6, 0xF, 0x1, 0xF, 0xA, 0x73, 7},
814     {6, 0xF, 0x1, 0xF, 0x2, 0x3E, 6},
815     {6, 0xF, 0x1, 0xB, 0x9, 0x53, 7},
816     {6, 0xF, 0x1, 0xF, 0xC, 0x63, 7},
817     {6, 0xF, 0x1, 0xF, 0x8, 0x1E, 6},
818     {6, 0xF, 0x1, 0xF, 0x5, 0x13, 7},
819     {6, 0xF, 0x1, 0xF, 0x4, 0x2E, 6},
820     {6, 0xF, 0x1, 0xF, 0x1, 0x23, 7},
821     {7, 0x0, 0x0, 0x0, 0x0, 0x04, 4},
822     {7, 0x1, 0x0, 0x0, 0x0, 0x33, 6},
823     {7, 0x1, 0x1, 0x1, 0x1, 0x13, 6},
824     {7, 0x2, 0x0, 0x0, 0x0, 0x23, 6},
825     {7, 0x2, 0x1, 0x2, 0x2, 0x7F, 7},
826     {7, 0x3, 0x0, 0x0, 0x0, 0x03, 6},
827     {7, 0x3, 0x1, 0x1, 0x1, 0x3F, 7},
828     {7, 0x3, 0x1, 0x3, 0x2, 0x6F, 7},
829     {7, 0x4, 0x0, 0x0, 0x0, 0x2D, 6},
830     {7, 0x4, 0x1, 0x4, 0x4, 0x5F, 7},
831     {7, 0x5, 0x0, 0x0, 0x0, 0x16, 5},
832     {7, 0x5, 0x1, 0x1, 0x1, 0x3D, 6},
833     {7, 0x5, 0x1, 0x5, 0x4, 0x1F, 7},
834     {7, 0x6, 0x0, 0x0, 0x0, 0x1D, 6},
835     {7, 0x6, 0x1, 0x0, 0x0, 0x77, 7},
836     {7, 0x7, 0x0, 0x0, 0x0, 0x06, 5},
837     {7, 0x7, 0x1, 0x7, 0x4, 0x2F, 7},
838     {7, 0x7, 0x1, 0x4, 0x4, 0x4F, 7},
839     {7, 0x7, 0x1, 0x7, 0x3, 0x0F, 7},
840     {7, 0x7, 0x1, 0x7, 0x1, 0x0D, 6},
841     {7, 0x7, 0x1, 0x7, 0x2, 0x57, 7},
842     {7, 0x8, 0x0, 0x0, 0x0, 0x35, 6},
843     {7, 0x8, 0x1, 0x8, 0x8, 0x37, 7},
844     {7, 0x9, 0x0, 0x0, 0x0, 0x15, 6},
845     {7, 0x9, 0x1, 0x0, 0x0, 0x27, 7},
846     {7, 0xA, 0x0, 0x0, 0x0, 0x25, 6},
847     {7, 0xA, 0x1, 0x0, 0x0, 0x29, 6},
848     {7, 0xB, 0x0, 0x0, 0x0, 0x1A, 5},
849     {7, 0xB, 0x1, 0xB, 0x1, 0x17, 7},
850     {7, 0xB, 0x1, 0x1, 0x1, 0x67, 7},
851     {7, 0xB, 0x1, 0x3, 0x2, 0x05, 6},
852     {7, 0xB, 0x1, 0xB, 0x8, 0x7B, 7},
853     {7, 0xC, 0x0, 0x0, 0x0, 0x39, 6},
854     {7, 0xC, 0x1, 0x0, 0x0, 0x19, 6},
855     {7, 0xD, 0x0, 0x0, 0x0, 0x0C, 5},
856     {7, 0xD, 0x1, 0xD, 0x1, 0x47, 7},
857     {7, 0xD, 0x1, 0x1, 0x1, 0x07, 7},
858     {7, 0xD, 0x1, 0x5, 0x4, 0x09, 6},
859     {7, 0xD, 0x1, 0xD, 0x8, 0x1B, 7},
860     {7, 0xE, 0x0, 0x0, 0x0, 0x31, 6},
861     {7, 0xE, 0x1, 0xE, 0x2, 0x3B, 7},
862     {7, 0xE, 0x1, 0x2, 0x2, 0x5B, 7},
863     {7, 0xE, 0x1, 0xA, 0x8, 0x3E, 6},
864     {7, 0xE, 0x1, 0xE, 0x4, 0x0B, 7},
865     {7, 0xF, 0x0, 0x0, 0x0, 0x00, 3},
866     {7, 0xF, 0x1, 0xF, 0xF, 0x6B, 7},
867     {7, 0xF, 0x1, 0xF, 0x7, 0x2B, 7},
868     {7, 0xF, 0x1, 0xF, 0xB, 0x4B, 7},
869     {7, 0xF, 0x1, 0xF, 0x3, 0x11, 6},
870     {7, 0xF, 0x1, 0x7, 0x6, 0x21, 6},
871     {7, 0xF, 0x1, 0xF, 0xA, 0x01, 6},
872     {7, 0xF, 0x1, 0xF, 0x2, 0x0A, 5},
873     {7, 0xF, 0x1, 0xB, 0x9, 0x1E, 6},
874     {7, 0xF, 0x1, 0xF, 0xC, 0x0E, 6},
875     {7, 0xF, 0x1, 0xF, 0x8, 0x12, 5},
876     {7, 0xF, 0x1, 0xF, 0x5, 0x2E, 6},
877     {7, 0xF, 0x1, 0xF, 0x1, 0x02, 5},
878     {7, 0xF, 0x1, 0xF, 0x4, 0x1C, 5}
879 };
880
881 //************************************************************************/
882 /** @defgroup vlc_decoding_tables_grp VLC decoding tables
883   *  @{
884   *  VLC tables to decode VLC codewords to these fields: (in order)       \n
885   *  \li \c cwd_len : 3bits -> the codeword length of the VLC codeword;
886   *                   the VLC cwd is in the LSB of bitstream              \n
887   *  \li \c u_off   : 1bit  -> u_offset, which is 1 if u value is not 0   \n
888   *  \li \c rho     : 4bits -> significant samples within a quad          \n
889   *  \li \c e_1     : 4bits -> EMB e_1                                    \n
890   *  \li \c e_k     : 4bits -> EMB e_k                                    \n
891   *                                                                       \n
892   *  The table index is 10 bits and composed of two parts:                \n
893   *  The 7 LSBs contain a codeword which might be shorter than 7 bits;
894   *  this word is the next decoable bits in the bitstream.                \n
895   *  The 3 MSB is the context of for the codeword.                        \n
896   */
897
898 /// @brief vlc_tbl0 contains decoding information for initial row of quads
899 int vlc_tbl0[1024] = { 0 };
900 /// @brief vlc_tbl1 contains decoding information for non-initial row of
901 ///        quads
902 int vlc_tbl1[1024] = { 0 };
903 /// @}
904
905 //************************************************************************/
906 /** @ingroup vlc_decoding_tables_grp
907   *  @brief Initializes vlc_tbl0 and vlc_tbl1 tables, from table0.h and
908   *         table1.h
909   */
910 OPJ_BOOL vlc_init_tables()
911 {
912     const OPJ_BOOL debug = OPJ_FALSE; //useful for checking
913
914     // number of entries in the table
915     size_t tbl0_size = sizeof(tbl0) / sizeof(vlc_src_table_t);
916
917     // number of entries in the table
918     size_t tbl1_size = sizeof(tbl1) / sizeof(vlc_src_table_t);
919
920     if (debug) {
921         memset(vlc_tbl0, 0, sizeof(vlc_tbl0));    //unnecessary
922     }
923
924     // this is to convert table entries into values for decoder look up
925     // There can be at most 1024 possibilities, not all of them are valid.
926     //
927     for (int i = 0; i < 1024; ++i) {
928         int cwd = i & 0x7F; // from i extract codeword
929         int c_q = i >> 7;   // from i extract context
930         // See if this case exist in the table, if so then set the entry in
931         // vlc_tbl0
932         for (size_t j = 0; j < tbl0_size; ++j)
933             if (tbl0[j].c_q == c_q) // this is an and operation
934                 if (tbl0[j].cwd == (cwd & ((1 << tbl0[j].cwd_len) - 1))) {
935                     if (debug) {
936                         assert(vlc_tbl0[i] == 0);
937                     }
938                     // Put this entry into the table
939                     vlc_tbl0[i] = (tbl0[j].rho << 4) | (tbl0[j].u_off << 3)
940                                   | (tbl0[j].e_k << 12) | (tbl0[j].e_1 << 8) | tbl0[j].cwd_len;
941                 }
942     }
943
944     if (debug) {
945         memset(vlc_tbl1, 0, sizeof(vlc_tbl1));    //unnecessary
946     }
947
948     // this the same as above but for non-initial rows
949     for (int i = 0; i < 1024; ++i) {
950         int cwd = i & 0x7F; //7 bits
951         int c_q = i >> 7;
952         for (size_t j = 0; j < tbl1_size; ++j)
953             if (tbl1[j].c_q == c_q) // this is an and operation
954                 if (tbl1[j].cwd == (cwd & ((1 << tbl1[j].cwd_len) - 1))) {
955                     if (debug) {
956                         assert(vlc_tbl1[i] == 0);
957                     }
958                     vlc_tbl1[i] = (tbl1[j].rho << 4) | (tbl1[j].u_off << 3)
959                                   | (tbl1[j].e_k << 12) | (tbl1[j].e_1 << 8) | tbl1[j].cwd_len;
960                 }
961     }
962
963     return OPJ_TRUE;
964 }
965
966 //************************************************************************/
967 /** @ingroup vlc_decoding_tables_grp
968   *  @brief Initializes VLC tables vlc_tbl0 and vlc_tbl1
969   */
970 OPJ_BOOL vlc_tables_initialized = OPJ_FALSE;
971