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