1/* ------------------------------------------------------------------
2 * Copyright (C) 1998-2009 PacketVideo
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13 * express or implied.
14 * See the License for the specific language governing permissions
15 * and limitations under the License.
16 * -------------------------------------------------------------------
17 */
18#include    "mp4dec_api.h"
19#include    "mp4def.h"
20#include    "mp4lib_int.h"
21#include    "vlc_dec_tab.h"
22#include    "max_level.h"
23
24
25const int intra_max_level[2][NCOEFF_BLOCK] =
26{
27    {27, 10,  5,  4,  3,  3,  3,  3,
28        2,  2,  1,  1,  1,  1,  1,  0,
29        0,  0,  0,  0,  0,  0,  0,  0,
30        0,  0,  0,  0,  0,  0,  0,  0,
31        0,  0,  0,  0,  0,  0,  0,  0,
32        0,  0,  0,  0,  0,  0,  0,  0,
33        0,  0,  0,  0,  0,  0,  0,  0,
34        0,  0,  0,  0,  0,  0,  0,  0,
35    },
36
37    {8,  3,  2,  2,  2,  2,  2,  1,
38     1,  1,  1,  1,  1,  1,  1,  1,
39     1,  1,  1,  1,  1,  0,  0,  0,
40     0,  0,  0,  0,  0,  0,  0,  0,
41     0,  0,  0,  0,  0,  0,  0,  0,
42     0,  0,  0,  0,  0,  0,  0,  0,
43     0,  0,  0,  0,  0,  0,  0,  0,
44     0,  0,  0,  0,  0,  0,  0,  0
45    }
46};
47
48
49const int inter_max_level[2][NCOEFF_BLOCK] =
50{
51    {12,  6,  4,  3,  3,  3,  3,  2,
52        2,  2,  2,  1,  1,  1,  1,  1,
53        1,  1,  1,  1,  1,  1,  1,  1,
54        1,  1,  1,  0,  0,  0,  0,  0,
55        0,  0,  0,  0,  0,  0,  0,  0,
56        0,  0,  0,  0,  0,  0,  0,  0,
57        0,  0,  0,  0,  0,  0,  0,  0,
58        0,  0,  0,  0,  0,  0,  0,  0},
59
60    {3,  2,  1,  1,  1,  1,  1,  1,
61     1,  1,  1,  1,  1,  1,  1,  1,
62     1,  1,  1,  1,  1,  1,  1,  1,
63     1,  1,  1,  1,  1,  1,  1,  1,
64     1,  1,  1,  1,  1,  1,  1,  1,
65     1,  0,  0,  0,  0,  0,  0,  0,
66     0,  0,  0,  0,  0,  0,  0,  0,
67     0,  0,  0,  0,  0,  0,  0,  0}
68};
69
70
71const int intra_max_run0[28] = { 999, 14,  9,  7,  3,  2,  1,
72                                 1,  1,  1,  1,  0,  0,  0,
73                                 0,  0,  0,  0,  0,  0,  0,
74                                 0,  0,  0,  0,  0,  0,  0
75                               };
76
77
78const int intra_max_run1[9] = { 999, 20,  6,
79                                1,  0,  0,
80                                0,  0,  0
81                              };
82
83const int inter_max_run0[13] = { 999,
84                                 26, 10,  6,  2,  1,  1,
85                                 0,  0,  0,  0,  0,  0
86                               };
87
88
89const int inter_max_run1[4] = { 999, 40,  1,  0 };
90
91const VLCshorttab PV_TMNMVtab0[] =
92{
93    {3, 4}, { -3, 4}, {2, 3}, {2, 3}, { -2, 3}, { -2, 3}, {1, 2}, {1, 2}, {1, 2}, {1, 2},
94    { -1, 2}, { -1, 2}, { -1, 2}, { -1, 2}
95};
96
97const VLCshorttab PV_TMNMVtab1[] =
98{
99    {12, 10}, { -12, 10}, {11, 10}, { -11, 10}, {10, 9}, {10, 9}, { -10, 9}, { -10, 9},
100    {9, 9}, {9, 9}, { -9, 9}, { -9, 9}, {8, 9}, {8, 9}, { -8, 9}, { -8, 9}, {7, 7}, {7, 7},
101    {7, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7}, { -7, 7}, { -7, 7}, { -7, 7}, { -7, 7},
102    { -7, 7}, { -7, 7}, { -7, 7}, { -7, 7}, {6, 7}, {6, 7}, {6, 7}, {6, 7}, {6, 7}, {6, 7},
103    {6, 7}, {6, 7}, { -6, 7}, { -6, 7}, { -6, 7}, { -6, 7}, { -6, 7}, { -6, 7}, { -6, 7},
104    { -6, 7}, {5, 7}, {5, 7}, {5, 7}, {5, 7}, {5, 7}, {5, 7}, {5, 7}, {5, 7}, { -5, 7},
105    { -5, 7}, { -5, 7}, { -5, 7}, { -5, 7}, { -5, 7}, { -5, 7}, { -5, 7}, {4, 6}, {4, 6}, {4, 6},
106    {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6},
107    {4, 6}, {4, 6}, { -4, 6}, { -4, 6}, { -4, 6}, { -4, 6}, { -4, 6}, { -4, 6}, { -4, 6},
108    { -4, 6}, { -4, 6}, { -4, 6}, { -4, 6}, { -4, 6}, { -4, 6}, { -4, 6}, { -4, 6}, { -4, 6}
109};
110
111const VLCshorttab PV_TMNMVtab2[] =
112{
113    {32, 12}, { -32, 12}, {31, 12}, { -31, 12}, {30, 11}, {30, 11}, { -30, 11}, { -30, 11},
114    {29, 11}, {29, 11}, { -29, 11}, { -29, 11}, {28, 11}, {28, 11}, { -28, 11}, { -28, 11},
115    {27, 11}, {27, 11}, { -27, 11}, { -27, 11}, {26, 11}, {26, 11}, { -26, 11}, { -26, 11},
116    {25, 11}, {25, 11}, { -25, 11}, { -25, 11}, {24, 10}, {24, 10}, {24, 10}, {24, 10},
117    { -24, 10}, { -24, 10}, { -24, 10}, { -24, 10}, {23, 10}, {23, 10}, {23, 10}, {23, 10},
118    { -23, 10}, { -23, 10}, { -23, 10}, { -23, 10}, {22, 10}, {22, 10}, {22, 10}, {22, 10},
119    { -22, 10}, { -22, 10}, { -22, 10}, { -22, 10}, {21, 10}, {21, 10}, {21, 10}, {21, 10},
120    { -21, 10}, { -21, 10}, { -21, 10}, { -21, 10}, {20, 10}, {20, 10}, {20, 10}, {20, 10},
121    { -20, 10}, { -20, 10}, { -20, 10}, { -20, 10}, {19, 10}, {19, 10}, {19, 10}, {19, 10},
122    { -19, 10}, { -19, 10}, { -19, 10}, { -19, 10}, {18, 10}, {18, 10}, {18, 10}, {18, 10},
123    { -18, 10}, { -18, 10}, { -18, 10}, { -18, 10}, {17, 10}, {17, 10}, {17, 10}, {17, 10},
124    { -17, 10}, { -17, 10}, { -17, 10}, { -17, 10}, {16, 10}, {16, 10}, {16, 10}, {16, 10},
125    { -16, 10}, { -16, 10}, { -16, 10}, { -16, 10}, {15, 10}, {15, 10}, {15, 10}, {15, 10},
126    { -15, 10}, { -15, 10}, { -15, 10}, { -15, 10}, {14, 10}, {14, 10}, {14, 10}, {14, 10},
127    { -14, 10}, { -14, 10}, { -14, 10}, { -14, 10}, {13, 10}, {13, 10}, {13, 10}, {13, 10},
128    { -13, 10}, { -13, 10}, { -13, 10}, { -13, 10}
129};
130
131const VLCshorttab PV_MCBPCtab[] =
132{
133    {VLC_ERROR, 0},
134    {255, 9}, {52, 9}, {36, 9}, {20, 9}, {49, 9}, {35, 8}, {35, 8}, {19, 8}, {19, 8},
135    {50, 8}, {50, 8}, {51, 7}, {51, 7}, {51, 7}, {51, 7}, {34, 7}, {34, 7}, {34, 7},
136    {34, 7}, {18, 7}, {18, 7}, {18, 7}, {18, 7}, {33, 7}, {33, 7}, {33, 7}, {33, 7},
137    {17, 7}, {17, 7}, {17, 7}, {17, 7}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6},
138    {4, 6}, {4, 6}, {4, 6}, {48, 6}, {48, 6}, {48, 6}, {48, 6}, {48, 6}, {48, 6},
139    {48, 6}, {48, 6}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5},
140    {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5},
141    {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4},
142    {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4},
143    {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4},
144    {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4},
145    {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4},
146    {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4},
147    {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4},
148    {16, 4}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
149    {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
150    {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
151    {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
152    {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
153    {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
154    {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
155    {2, 3}, {2, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
156    {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
157    {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
158    {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
159    {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
160    {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
161    {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
162    {1, 3}, {1, 3}, {1, 3}
163};
164
165#ifdef PV_ANNEX_IJKT_SUPPORT
166const VLCshorttab PV_MCBPCtab1[] =
167{
168    {5, 11}, {5, 11},  {5, 11}, {5, 11}, {21, 13}, {21, 13}, {37, 13}, {53, 13},
169};
170#endif
171const VLCshorttab PV_MCBPCtabintra[] =
172{
173    {VLC_ERROR, 0},
174    {20, 6}, {36, 6}, {52, 6}, {4, 4}, {4, 4}, {4, 4},
175    {4, 4}, {19, 3}, {19, 3}, {19, 3}, {19, 3}, {19, 3},
176    {19, 3}, {19, 3}, {19, 3}, {35, 3}, {35, 3}, {35, 3},
177    {35, 3}, {35, 3}, {35, 3}, {35, 3}, {35, 3}, {51, 3},
178    {51, 3}, {51, 3}, {51, 3}, {51, 3}, {51, 3}, {51, 3},
179    {51, 3}
180};
181
182
183
184const VLCshorttab PV_CBPYtab[48] =
185{
186    {VLC_ERROR, 0}, {VLC_ERROR, 0}, {6, 6}, {9, 6}, {8, 5}, {8, 5}, {4, 5}, {4, 5},
187    {2, 5}, {2, 5}, {1, 5}, {1, 5}, {0, 4}, {0, 4}, {0, 4}, {0, 4},
188    {12, 4}, {12, 4}, {12, 4}, {12, 4}, {10, 4}, {10, 4}, {10, 4}, {10, 4},
189    {14, 4}, {14, 4}, {14, 4}, {14, 4}, {5, 4}, {5, 4}, {5, 4}, {5, 4},
190    {13, 4}, {13, 4}, {13, 4}, {13, 4}, {3, 4}, {3, 4}, {3, 4}, {3, 4},
191    {11, 4}, {11, 4}, {11, 4}, {11, 4}, {7, 4}, {7, 4}, {7, 4}, {7, 4}
192};
193
194
195
196const VLCtab2 PV_DCT3Dtab0[] =
197{
198    {0x8, 1, 1, 7}, {0x7, 1, 1, 7}, {0x6, 1, 1, 7}, {0x5, 1, 1, 7}, {0xc, 1, 0, 7}, {0xb, 1, 0, 7},
199    {0xa, 1, 0, 7}, {0x0, 4, 0, 7}, {0x4, 1, 1, 6}, {0x4, 1, 1, 6}, {0x3, 1, 1, 6}, {0x3, 1, 1, 6},
200    {0x2, 1, 1, 6}, {0x2, 1, 1, 6}, {0x1, 1, 1, 6}, {0x1, 1, 1, 6}, {0x9, 1, 0, 6}, {0x9, 1, 0, 6},
201    {0x8, 1, 0, 6}, {0x8, 1, 0, 6}, {0x7, 1, 0, 6}, {0x7, 1, 0, 6}, {0x6, 1, 0, 6}, {0x6, 1, 0, 6},
202    {0x1, 2, 0, 6}, {0x1, 2, 0, 6}, {0x0, 3, 0, 6}, {0x0, 3, 0, 6}, {0x5, 1, 0, 5}, {0x5, 1, 0, 5},
203    {0x5, 1, 0, 5}, {0x5, 1, 0, 5}, {0x4, 1, 0, 5}, {0x4, 1, 0, 5}, {0x4, 1, 0, 5}, {0x4, 1, 0, 5},
204    {0x3, 1, 0, 5}, {0x3, 1, 0, 5}, {0x3, 1, 0, 5}, {0x3, 1, 0, 5}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4},
205    {0x0, 1, 1, 4}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4},
206    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
207    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
208    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
209    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
210    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
211    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x1, 1, 0, 3}, {0x1, 1, 0, 3}, {0x1, 1, 0, 3}, {0x1, 1, 0, 3},
212    {0x1, 1, 0, 3}, {0x1, 1, 0, 3}, {0x1, 1, 0, 3}, {0x1, 1, 0, 3}, {0x1, 1, 0, 3}, {0x1, 1, 0, 3},
213    {0x1, 1, 0, 3}, {0x1, 1, 0, 3}, {0x1, 1, 0, 3}, {0x1, 1, 0, 3}, {0x1, 1, 0, 3}, {0x1, 1, 0, 3},
214    {0x2, 1, 0, 4}, {0x2, 1, 0, 4}, {0x2, 1, 0, 4}, {0x2, 1, 0, 4}, {0x2, 1, 0, 4}, {0x2, 1, 0, 4},
215    {0x2, 1, 0, 4}, {0x2, 1, 0, 4}, {0x0, 2, 0, 4}, {0x0, 2, 0, 4}, {0x0, 2, 0, 4}, {0x0, 2, 0, 4},
216    {0x0, 2, 0, 4}, {0x0, 2, 0, 4}, {0x0, 2, 0, 4}, {0x0, 2, 0, 4}
217};
218
219
220const VLCtab2 PV_DCT3Dtab1[] =
221{
222    {0x0, 9, 0, 10}, {0x0, 8, 0, 10}, {0x18, 1, 1, 9}, {0x18, 1, 1, 9}, {0x17, 1, 1, 9}, {0x17, 1, 1, 9},
223    {0x16, 1, 1, 9}, {0x16, 1, 1, 9}, {0x15, 1, 1, 9}, {0x15, 1, 1, 9}, {0x14, 1, 1, 9}, {0x14, 1, 1, 9},
224    {0x13, 1, 1, 9}, {0x13, 1, 1, 9}, {0x12, 1, 1, 9}, {0x12, 1, 1, 9}, {0x11, 1, 1, 9}, {0x11, 1, 1, 9},
225    {0x0, 2, 1, 9}, {0x0, 2, 1, 9}, {0x16, 1, 0, 9}, {0x16, 1, 0, 9}, {0x15, 1, 0, 9}, {0x15, 1, 0, 9},
226    {0x14, 1, 0, 9}, {0x14, 1, 0, 9}, {0x13, 1, 0, 9}, {0x13, 1, 0, 9}, {0x12, 1, 0, 9}, {0x12, 1, 0, 9},
227    {0x11, 1, 0, 9}, {0x11, 1, 0, 9}, {0x10, 1, 0, 9}, {0x10, 1, 0, 9}, {0xf, 1, 0, 9}, {0xf, 1, 0, 9},
228    {0x4, 2, 0, 9}, {0x4, 2, 0, 9}, {0x3, 2, 0, 9}, {0x3, 2, 0, 9}, {0x0, 7, 0, 9}, {0x0, 7, 0, 9},
229    {0x0, 6, 0, 9}, {0x0, 6, 0, 9}, {0x10, 1, 1, 8}, {0x10, 1, 1, 8}, {0x10, 1, 1, 8}, {0x10, 1, 1, 8},
230    {0xf, 1, 1, 8}, {0xf, 1, 1, 8}, {0xf, 1, 1, 8}, {0xf, 1, 1, 8}, {0xe, 1, 1, 8}, {0xe, 1, 1, 8},
231    {0xe, 1, 1, 8}, {0xe, 1, 1, 8}, {0xd, 1, 1, 8}, {0xd, 1, 1, 8}, {0xd, 1, 1, 8}, {0xd, 1, 1, 8},
232    {0xc, 1, 1, 8}, {0xc, 1, 1, 8}, {0xc, 1, 1, 8}, {0xc, 1, 1, 8}, {0xb, 1, 1, 8}, {0xb, 1, 1, 8},
233    {0xb, 1, 1, 8}, {0xb, 1, 1, 8}, {0xa, 1, 1, 8}, {0xa, 1, 1, 8}, {0xa, 1, 1, 8}, {0xa, 1, 1, 8},
234    {0x9, 1, 1, 8}, {0x9, 1, 1, 8}, {0x9, 1, 1, 8}, {0x9, 1, 1, 8}, {0xe, 1, 0, 8}, {0xe, 1, 0, 8},
235    {0xe, 1, 0, 8}, {0xe, 1, 0, 8}, {0xd, 1, 0, 8}, {0xd, 1, 0, 8}, {0xd, 1, 0, 8}, {0xd, 1, 0, 8},
236    {0x2, 2, 0, 8}, {0x2, 2, 0, 8}, {0x2, 2, 0, 8}, {0x2, 2, 0, 8}, {0x1, 3, 0, 8}, {0x1, 3, 0, 8},
237    {0x1, 3, 0, 8}, {0x1, 3, 0, 8}, {0x0, 5, 0, 8}, {0x0, 5, 0, 8}, {0x0, 5, 0, 8}, {0x0, 5, 0, 8}
238};
239
240
241const VLCtab2 PV_DCT3Dtab2[] =
242{
243    {0x1, 2, 1, 11}, {0x1, 2, 1, 11}, {0x0, 3, 1, 11}, {0x0, 3, 1, 11}, {0x0, 0xb, 0, 11}, {0x0, 0xb, 0, 11},
244    {0x0, 0xa, 0, 11}, {0x0, 0xa, 0, 11}, {0x1c, 1, 1, 10}, {0x1c, 1, 1, 10}, {0x1c, 1, 1, 10}, {0x1c, 1, 1, 10},
245    {0x1b, 1, 1, 10}, {0x1b, 1, 1, 10}, {0x1b, 1, 1, 10}, {0x1b, 1, 1, 10}, {0x1a, 1, 1, 10}, {0x1a, 1, 1, 10},
246    {0x1a, 1, 1, 10}, {0x1a, 1, 1, 10}, {0x19, 1, 1, 10}, {0x19, 1, 1, 10}, {0x19, 1, 1, 10}, {0x19, 1, 1, 10},
247    {0x9, 2, 0, 10}, {0x9, 2, 0, 10}, {0x9, 2, 0, 10}, {0x9, 2, 0, 10}, {0x8, 2, 0, 10}, {0x8, 2, 0, 10},
248    {0x8, 2, 0, 10}, {0x8, 2, 0, 10}, {0x7, 2, 0, 10}, {0x7, 2, 0, 10}, {0x7, 2, 0, 10}, {0x7, 2, 0, 10},
249    {0x6, 2, 0, 10}, {0x6, 2, 0, 10}, {0x6, 2, 0, 10}, {0x6, 2, 0, 10}, {0x5, 2, 0, 10}, {0x5, 2, 0, 10},
250    {0x5, 2, 0, 10}, {0x5, 2, 0, 10}, {0x3, 3, 0, 10}, {0x3, 3, 0, 10}, {0x3, 3, 0, 10}, {0x3, 3, 0, 10},
251    {0x2, 3, 0, 10}, {0x2, 3, 0, 10}, {0x2, 3, 0, 10}, {0x2, 3, 0, 10}, {0x1, 4, 0, 10}, {0x1, 4, 0, 10},
252    {0x1, 4, 0, 10}, {0x1, 4, 0, 10}, {0x0, 0xc, 0, 11}, {0x0, 0xc, 0, 11}, {0x1, 5, 0, 11}, {0x1, 5, 0, 11},
253    {0x17, 1, 0, 11}, {0x17, 1, 0, 11}, {0x18, 1, 0, 11}, {0x18, 1, 0, 11}, {0x1d, 1, 1, 11}, {0x1d, 1, 1, 11},
254    {0x1e, 1, 1, 11}, {0x1e, 1, 1, 11}, {0x1f, 1, 1, 11}, {0x1f, 1, 1, 11}, {0x20, 1, 1, 11}, {0x20, 1, 1, 11},
255    {0x1, 6, 0, 12}, {0x2, 4, 0, 12}, {0x4, 3, 0, 12}, {0x5, 3, 0, 12}, {0x6, 3, 0, 12}, {0xa, 2, 0, 12},
256    {0x19, 1, 0, 12}, {0x1a, 1, 0, 12}, {0x21, 1, 1, 12}, {0x22, 1, 1, 12}, {0x23, 1, 1, 12}, {0x24, 1, 1, 12},
257    {0x25, 1, 1, 12}, {0x26, 1, 1, 12}, {0x27, 1, 1, 12}, {0x28, 1, 1, 12}, {0xbf, 0xf, 1, 7},
258    {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7},
259    {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7},
260    {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7},
261    {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7},
262    {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7}, {0xbf, 0xf, 1, 7},
263    {0xbf, 0xf, 1, 7}
264};
265
266/* New tables for Intra luminance blocks */
267
268const VLCtab2 PV_DCT3Dtab3[] =
269{
270    {0x4, 1, 1, 7}, {0x3, 1, 1, 7}, {0x6, 1, 0, 7}, {0x5, 1, 1, 7},
271    {0x7, 1, 0, 7}, {0x2, 2, 0, 7}, {0x1, 3, 0, 7}, {0x0, 9, 0, 7},
272    {0x0, 2, 1, 6}, {0x0, 2, 1, 6}, {0x5, 1, 0, 6}, {0x5, 1, 0, 6},
273    {0x2, 1, 1, 6}, {0x2, 1, 1, 6}, {0x1, 1, 1, 6}, {0x1, 1, 1, 6},
274    {0x4, 1, 0, 6}, {0x4, 1, 0, 6}, {0x3, 1, 0, 6}, {0x3, 1, 0, 6},
275    {0x0, 8, 0, 6}, {0x0, 8, 0, 6}, {0x0, 7, 0, 6}, {0x0, 7, 0, 6},
276    {0x1, 2, 0, 6}, {0x1, 2, 0, 6}, {0x0, 6, 0, 6}, {0x0, 6, 0, 6},
277    {0x2, 1, 0, 5}, {0x2, 1, 0, 5}, {0x2, 1, 0, 5}, {0x2, 1, 0, 5},
278    {0x0, 5, 0, 5}, {0x0, 5, 0, 5}, {0x0, 5, 0, 5}, {0x0, 5, 0, 5},
279    {0x0, 4, 0, 5}, {0x0, 4, 0, 5}, {0x0, 4, 0, 5}, {0x0, 4, 0, 5},
280    {0x0, 1, 1, 4}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4},
281    {0x0, 1, 1, 4}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4},
282    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
283    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
284    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
285    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
286    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
287    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
288    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
289    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
290    {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3},
291    {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3},
292    {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3},
293    {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3},
294    {0x1, 1, 0, 4}, {0x1, 1, 0, 4}, {0x1, 1, 0, 4}, {0x1, 1, 0, 4},
295    {0x1, 1, 0, 4}, {0x1, 1, 0, 4}, {0x1, 1, 0, 4}, {0x1, 1, 0, 4},
296    {0x0, 3, 0, 4}, {0x0, 3, 0, 4}, {0x0, 3, 0, 4}, {0x0, 3, 0, 4},
297    {0x0, 3, 0, 4}, {0x0, 3, 0, 4}, {0x0, 3, 0, 4}, {0x0, 3, 0, 4}
298};
299
300const VLCtab2 PV_DCT3Dtab4[] =
301{
302    {0x0, 0x12, 0, 10}, {0x0, 0x11, 0, 10}, {0xe, 1, 1, 9}, {0xe, 1, 1, 9},
303    {0xd, 1, 1, 9}, {0xd, 1, 1, 9}, {0xc, 1, 1, 9}, {0xc, 1, 1, 9},
304    {0xb, 1, 1, 9}, {0xb, 1, 1, 9}, {0xa, 1, 1, 9}, {0xa, 1, 1, 9},
305    {0x1, 2, 1, 9}, {0x1, 2, 1, 9}, {0x0, 4, 1, 9}, {0x0, 4, 1, 9},
306    {0xc, 1, 0, 9}, {0xc, 1, 0, 9}, {0xb, 1, 0, 9}, {0xb, 1, 0, 9},
307    {0x7, 2, 0, 9}, {0x7, 2, 0, 9}, {0x6, 2, 0, 9}, {0x6, 2, 0, 9},
308    {0x5, 2, 0, 9}, {0x5, 2, 0, 9}, {0x3, 3, 0, 9}, {0x3, 3, 0, 9},
309    {0x2, 3, 0, 9}, {0x2, 3, 0, 9}, {0x1, 6, 0, 9}, {0x1, 6, 0, 9},
310    {0x1, 5, 0, 9}, {0x1, 5, 0, 9}, {0x0, 0x10, 0, 9}, {0x0, 0x10, 0, 9},
311    {0x4, 2, 0, 9}, {0x4, 2, 0, 9}, {0x0, 0xf, 0, 9}, {0x0, 0xf, 0, 9},
312    {0x0, 0xe, 0, 9}, {0x0, 0xe, 0, 9}, {0x0, 0xd, 0, 9}, {0x0, 0xd, 0, 9},
313    {0x8, 1, 1, 8}, {0x8, 1, 1, 8}, {0x8, 1, 1, 8}, {0x8, 1, 1, 8},
314    {0x7, 1, 1, 8}, {0x7, 1, 1, 8}, {0x7, 1, 1, 8}, {0x7, 1, 1, 8},
315    {0x6, 1, 1, 8}, {0x6, 1, 1, 8}, {0x6, 1, 1, 8}, {0x6, 1, 1, 8},
316    {0x0, 3, 1, 8}, {0x0, 3, 1, 8}, {0x0, 3, 1, 8}, {0x0, 3, 1, 8},
317    {0xa, 1, 0, 8}, {0xa, 1, 0, 8}, {0xa, 1, 0, 8}, {0xa, 1, 0, 8},
318    {0x9, 1, 0, 8}, {0x9, 1, 0, 8}, {0x9, 1, 0, 8}, {0x9, 1, 0, 8},
319    {0x8, 1, 0, 8}, {0x8, 1, 0, 8}, {0x8, 1, 0, 8}, {0x8, 1, 0, 8},
320    {0x9, 1, 1, 8}, {0x9, 1, 1, 8}, {0x9, 1, 1, 8}, {0x9, 1, 1, 8},
321    {0x3, 2, 0, 8}, {0x3, 2, 0, 8}, {0x3, 2, 0, 8}, {0x3, 2, 0, 8},
322    {0x1, 4, 0, 8}, {0x1, 4, 0, 8}, {0x1, 4, 0, 8}, {0x1, 4, 0, 8},
323    {0x0, 0xc, 0, 8}, {0x0, 0xc, 0, 8}, {0x0, 0xc, 0, 8}, {0x0, 0xc, 0, 8},
324    {0x0, 0xb, 0, 8}, {0x0, 0xb, 0, 8}, {0x0, 0xb, 0, 8}, {0x0, 0xb, 0, 8},
325    {0x0, 0xa, 0, 8}, {0x0, 0xa, 0, 8}, {0x0, 0xa, 0, 8}, {0x0, 0xa, 0, 8}
326};
327
328const VLCtab2 PV_DCT3Dtab5[] =
329{
330    {0x0, 7, 1, 11}, {0x0, 7, 1, 11}, {0x0, 6, 1, 11}, {0x0, 6, 1, 11},
331    {0x0, 0x16, 0, 11}, {0x0, 0x16, 0, 11}, {0x0, 0x15, 0, 11}, {0x0, 0x15, 0, 11},
332    {0x2, 2, 1, 10}, {0x2, 2, 1, 10}, {0x2, 2, 1, 10}, {0x2, 2, 1, 10},
333    {0x1, 3, 1, 10}, {0x1, 3, 1, 10}, {0x1, 3, 1, 10}, {0x1, 3, 1, 10},
334    {0x0, 5, 1, 10}, {0x0, 5, 1, 10}, {0x0, 5, 1, 10}, {0x0, 5, 1, 10},
335    {0xd, 1, 0, 10}, {0xd, 1, 0, 10}, {0xd, 1, 0, 10}, {0xd, 1, 0, 10},
336    {0x5, 3, 0, 10}, {0x5, 3, 0, 10}, {0x5, 3, 0, 10}, {0x5, 3, 0, 10},
337    {0x8, 2, 0, 10}, {0x8, 2, 0, 10}, {0x8, 2, 0, 10}, {0x8, 2, 0, 10},
338    {0x4, 3, 0, 10}, {0x4, 3, 0, 10}, {0x4, 3, 0, 10}, {0x4, 3, 0, 10},
339    {0x3, 4, 0, 10}, {0x3, 4, 0, 10}, {0x3, 4, 0, 10}, {0x3, 4, 0, 10},
340    {0x2, 4, 0, 10}, {0x2, 4, 0, 10}, {0x2, 4, 0, 10}, {0x2, 4, 0, 10},
341    {0x1, 7, 0, 10}, {0x1, 7, 0, 10}, {0x1, 7, 0, 10}, {0x1, 7, 0, 10},
342    {0x0, 0x14, 0, 10}, {0x0, 0x14, 0, 10}, {0x0, 0x14, 0, 10}, {0x0, 0x14, 0, 10},
343    {0x0, 0x13, 0, 10}, {0x0, 0x13, 0, 10}, {0x0, 0x13, 0, 10}, {0x0, 0x13, 0, 10},
344    {0x0, 0x17, 0, 11}, {0x0, 0x17, 0, 11}, {0x0, 0x18, 0, 11}, {0x0, 0x18, 0, 11},
345    {0x1, 8, 0, 11}, {0x1, 8, 0, 11}, {0x9, 2, 0, 11}, {0x9, 2, 0, 11},
346    {0x3, 2, 1, 11}, {0x3, 2, 1, 11}, {0x4, 2, 1, 11}, {0x4, 2, 1, 11},
347    {0xf, 1, 1, 11}, {0xf, 1, 1, 11}, {0x10, 1, 1, 11}, {0x10, 1, 1, 11},
348    {0, 0x19, 0, 12}, {0, 0x1a, 0, 12}, {0, 0x1b, 0, 12}, {1, 9, 0, 12},
349    {0x6, 3, 0, 12}, {0x1, 0xa, 0, 12}, {0x2, 5, 0, 12}, {0x7, 3, 0, 12},
350    {0xe, 1, 0, 12}, {0x0, 8, 1, 12}, {0x5, 2, 1, 12}, {0x6, 2, 1, 12},
351    {0x11, 1, 1, 12}, {0x12, 1, 1, 12}, {0x13, 1, 1, 12}, {0x14, 1, 1, 12},
352    {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7},
353    {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7},
354    {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7},
355    {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7},
356    {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7},
357    {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7},
358    {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7},
359    {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}, {0x1b, 0xff, 0, 7}
360};
361
362#ifdef PV_ANNEX_IJKT_SUPPORT
363const VLCtab2 PV_DCT3Dtab6[] =
364{
365    {0x0, 3, 1, 7}, {0x4, 1, 1, 7}, {0x6, 1, 1, 7}, {0x5, 1, 1, 7}, {0x1, 3, 0, 7}, {0x2, 2, 0, 7},
366    {0x0, 9, 0, 7}, {0x5, 1, 0, 7}, {0x0, 2, 1, 6}, {0x0, 2, 1, 6}, {0x3, 1, 1, 6}, {0x3, 1, 1, 6},
367    {0x2, 1, 1, 6}, {0x2, 1, 1, 6}, {0x1, 1, 1, 6}, {0x1, 1, 1, 6}, {0x0, 6, 0, 6}, {0x0, 6, 0, 6},
368    {0x0, 7, 0, 6}, {0x0, 7, 0, 6}, {0x0, 8, 0, 6}, {0x0, 8, 0, 6}, {0x4, 1, 0, 6}, {0x4, 1, 0, 6},
369    {0x1, 2, 0, 6}, {0x1, 2, 0, 6}, {0x3, 1, 0, 6}, {0x3, 1, 0, 6}, {0x2, 1, 0, 5}, {0x2, 1, 0, 5},
370    {0x2, 1, 0, 5}, {0x2, 1, 0, 5}, {0x0, 4, 0, 5}, {0x0, 4, 0, 5}, {0x0, 4, 0, 5}, {0x0, 4, 0, 5},
371    {0x0, 5, 0, 5}, {0x0, 5, 0, 5}, {0x0, 5, 0, 5}, {0x0, 5, 0, 5}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4},
372    {0x0, 1, 1, 4}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4}, {0x0, 1, 1, 4},
373    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
374    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
375    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
376    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
377    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 1, 0, 2},
378    {0x0, 1, 0, 2}, {0x0, 1, 0, 2}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3},
379    {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3},
380    {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3}, {0x0, 2, 0, 3},
381    {0x0, 3, 0, 4}, {0x0, 3, 0, 4}, {0x0, 3, 0, 4}, {0x0, 3, 0, 4}, {0x0, 3, 0, 4}, {0x0, 3, 0, 4},
382    {0x0, 3, 0, 4}, {0x0, 3, 0, 4}, {0x1, 1, 0, 4}, {0x1, 1, 0, 4}, {0x1, 1, 0, 4}, {0x1, 1, 0, 4},
383    {0x1, 1, 0, 4}, {0x1, 1, 0, 4}, {0x1, 1, 0, 4}, {0x1, 1, 0, 4}
384};
385
386const VLCtab2 PV_DCT3Dtab7[] =
387{
388    {0xb, 1, 0, 10}, {0xa, 1, 0, 10}, {0x0, 5, 1, 9}, {0x0, 5, 1, 9}, {0x0, 6, 1, 9}, {0x0, 6, 1, 9},
389    {0x1, 2, 1, 9}, {0x1, 2, 1, 9}, {0x2, 2, 1, 9}, {0x2, 2, 1, 9}, {0xf, 1, 1, 9}, {0xf, 1, 1, 9},
390    {0x10, 1, 1, 9}, {0x10, 1, 1, 9}, {0x12, 1, 1, 9}, {0x12, 1, 1, 9}, {0x11, 1, 1, 9}, {0x11, 1, 1, 9},
391    {0xe, 1, 1, 9}, {0xe, 1, 1, 9}, {0x0, 13, 0, 9}, {0x0, 13, 0, 9}, {0x0, 14, 0, 9}, {0x0, 14, 0, 9},
392    {0x0, 15, 0, 9}, {0x0, 15, 0, 9}, {0x0, 16, 0, 9}, {0x0, 16, 0, 9}, {0x0, 17, 0, 9}, {0x0, 17, 0, 9},
393    {0x0, 18, 0, 9}, {0x0, 18, 0, 9}, {0x0, 11, 0, 9}, {0x0, 11, 0, 9}, {0x0, 12, 0, 9}, {0x0, 12, 0, 9},
394    {0x5, 2, 0, 9}, {0x5, 2, 0, 9}, {0x4, 2, 0, 9}, {0x4, 2, 0, 9}, {0x9, 1, 0, 9}, {0x9, 1, 0, 9},
395    {0x8, 1, 0, 9}, {0x8, 1, 0, 9}, {0x0, 4, 1, 8}, {0x0, 4, 1, 8}, {0x0, 4, 1, 8}, {0x0, 4, 1, 8},
396    {0x7, 1, 1, 8}, {0x7, 1, 1, 8}, {0x7, 1, 1, 8}, {0x7, 1, 1, 8}, {0x8, 1, 1, 8}, {0x8, 1, 1, 8},
397    {0x8, 1, 1, 8}, {0x8, 1, 1, 8}, {0xd, 1, 1, 8}, {0xd, 1, 1, 8}, {0xd, 1, 1, 8}, {0xd, 1, 1, 8},
398    {0xc, 1, 1, 8}, {0xc, 1, 1, 8}, {0xc, 1, 1, 8}, {0xc, 1, 1, 8}, {0xb, 1, 1, 8}, {0xb, 1, 1, 8},
399    {0xb, 1, 1, 8}, {0xb, 1, 1, 8}, {0xa, 1, 1, 8}, {0xa, 1, 1, 8}, {0xa, 1, 1, 8}, {0xa, 1, 1, 8},
400    {0x9, 1, 1, 8}, {0x9, 1, 1, 8}, {0x9, 1, 1, 8}, {0x9, 1, 1, 8}, {0x0, 10, 0, 8}, {0x0, 10, 0, 8},
401    {0x0, 10, 0, 8}, {0x0, 10, 0, 8}, {0x6, 1, 0, 8}, {0x6, 1, 0, 8}, {0x6, 1, 0, 8}, {0x6, 1, 0, 8},
402    {0x3, 2, 0, 8}, {0x3, 2, 0, 8}, {0x3, 2, 0, 8}, {0x3, 2, 0, 8}, {0x1, 4, 0, 8}, {0x1, 4, 0, 8},
403    {0x1, 4, 0, 8}, {0x1, 4, 0, 8}, {0x7, 1, 0, 8}, {0x7, 1, 0, 8}, {0x7, 1, 0, 8}, {0x7, 1, 0, 8}
404};
405
406
407const VLCtab2 PV_DCT3Dtab8[] =
408{
409    {0x13, 0x1, 1, 11}, {0x13, 0x1, 1, 11}, {0x14, 0x1, 1, 11}, {0x14, 0x1, 1, 11}, {0x9, 0x2, 0, 11}, {0x9, 0x2, 0, 11},
410    {0x4, 0x3, 0, 11}, {0x4, 0x3, 0, 11}, {0x0, 0x7, 1, 10}, {0x0, 0x7, 1, 10}, {0x0, 0x7, 1, 10}, {0x0, 0x7, 1, 10},
411    {0x1, 0x3, 1, 10}, {0x1, 0x3, 1, 10}, {0x1, 0x3, 1, 10}, {0x1, 0x3, 1, 10}, {0x3, 0x2, 1, 10}, {0x3, 0x2, 1, 10},
412    {0x3, 0x2, 1, 10}, {0x3, 0x2, 1, 10}, {0x4, 0x2, 1, 10}, {0x4, 0x2, 1, 10}, {0x4, 0x2, 1, 10}, {0x4, 0x2, 1, 10},
413    {0xc, 0x1, 0, 10}, {0xc, 0x1, 0, 10}, {0xc, 0x1, 0, 10}, {0xc, 0x1, 0, 10}, {0x2, 0x4, 0, 10}, {0x2, 0x4, 0, 10},
414    {0x2, 0x4, 0, 10}, {0x2, 0x4, 0, 10}, {0x8, 0x2, 0, 10}, {0x8, 0x2, 0, 10}, {0x8, 0x2, 0, 10}, {0x8, 0x2, 0, 10},
415    {0x7, 0x2, 0, 10}, {0x7, 0x2, 0, 10}, {0x7, 0x2, 0, 10}, {0x7, 0x2, 0, 10}, {0x6, 0x2, 0, 10}, {0x6, 0x2, 0, 10},
416    {0x6, 0x2, 0, 10}, {0x6, 0x2, 0, 10}, {0x3, 0x3, 0, 10}, {0x3, 0x3, 0, 10}, {0x3, 0x3, 0, 10}, {0x3, 0x3, 0, 10},
417    {0x2, 0x3, 0, 10}, {0x2, 0x3, 0, 10}, {0x2, 0x3, 0, 10}, {0x2, 0x3, 0, 10}, {0x1, 0x5, 0, 10}, {0x1, 0x5, 0, 10},
418    {0x1, 0x5, 0, 10}, {0x1, 0x5, 0, 10}, {0xd, 0x1, 0, 11}, {0xd, 0x1, 0, 11}, {0x1, 0x6, 0, 11}, {0x1, 0x6, 0, 11},
419    {0x0, 0x14, 0, 11}, {0x0, 0x14, 0, 11}, {0x0, 0x13, 0, 11}, {0x0, 0x13, 0, 11}, {0x2, 0x3, 1, 11}, {0x2, 0x3, 1, 11},
420    {0x1, 0x4, 1, 11}, {0x1, 0x4, 1, 11}, {0x0, 0x9, 1, 11}, {0x0, 0x9, 1, 11}, {0x0, 0x8, 1, 11}, {0x0, 0x8, 1, 11},
421    {0x1, 0x7, 0, 12}, {0x3, 0x4, 0, 12}, {0x5, 0x3, 0, 12}, {0x0, 0x19, 0, 12}, {0x0, 0x18, 0, 12}, {0x0, 0x17, 0, 12},
422    {0x0, 0x16, 0, 12}, {0x0, 0x15, 0, 12}, {0x15, 0x1, 1, 12}, {0x16, 0x1, 1, 12}, {0x17, 0x1, 1, 12}, {0x7, 0x2, 1, 12},
423    {0x6, 0x2, 1, 12}, {0x5, 0x2, 1, 12}, {0x3, 0x3, 1, 12}, {0x0, 0xa, 1, 12}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7},
424    {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7},
425    {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7},
426    {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7},
427    {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7},
428    {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}, {0x2f, 0x3f, 1, 7}
429};
430#endif
431/* RVLC tables */
432const int ptrRvlcTab[11] = {0, 24, 46, 66, 84, 100, 114, 126, 134, 140, 144};
433
434const VLCtab2 RvlcDCTtabIntra[170] = /* 00xxxx00 or 00xxxx01 */
435{
436    {27, 255, 0, 5},    /* 0000 is escape code */
437    {1, 1, 0, 4},
438    {2, 1, 0, 5},
439    {3, 1, 0, 5},
440    {4, 1, 0, 6},
441    {5, 1, 0, 6},
442    {6, 1, 0, 7},
443    {7, 1, 0, 7},
444    {8, 1, 0, 8},
445    {9, 1, 0, 8},
446    {10, 1, 0, 9},
447    {5, 2, 0, 9},
448    {11, 1, 0, 10},
449    {12, 1, 0, 10},
450    {13, 1, 0, 11},
451    {9, 2, 0, 11},
452    {10, 2, 0, 12},
453    {4, 4, 0, 12},
454    {14, 1, 0, 13},
455    {15, 1, 0, 13},
456    {16, 1, 0, 14},
457    {17, 1, 0, 14},
458    {0, 27, 0, 15},
459    {3, 9, 0, 15},
460    /* 010xxxx00 or 010xxxx01 */
461    {1, 2, 0, 5},
462    {0, 4, 0, 5},
463    {0, 5, 0, 6},
464    {0, 6, 0, 6},
465    {2, 2, 0, 7},
466    {1, 3, 0, 7},
467    {3, 2, 0, 8},
468    {4, 2, 0, 8},
469    {2, 3, 0, 9},
470    {3, 3, 0, 9},
471    {6, 2, 0, 10},
472    {7, 2, 0, 10},
473    {5, 3, 0, 11},
474    {6, 3, 0, 11},
475    {5, 4, 0, 12},
476    {6, 4, 0, 12},
477    {11, 2, 0, 13},
478    {8, 3, 0, 13},
479    {18, 1, 0, 14},
480    {8, 4, 0, 14},
481    {6, 5, 0, 15},
482    {7, 5, 0, 15},
483    /* 0110xxxx00 or 0110xxxx01 */
484    {3, 1, 1, 6},
485    {4, 1, 1, 6},
486    {0, 7, 0, 7},
487    {7, 1, 1, 7},
488    {1, 4, 0, 8},
489    {1, 5, 0, 8},
490    {1, 6, 0, 9},
491    {0, 10, 0, 9},
492    {8, 2, 0, 10},
493    {4, 3, 0, 10},
494    {7, 3, 0, 11},
495    {3, 4, 0, 11},
496    {3, 5, 0, 12},
497    {4, 5, 0, 12},
498    {9, 3, 0, 13},
499    {7, 4, 0, 13},
500    {5, 5, 0, 14},
501    {4, 6, 0, 14},
502    {9, 4, 0, 15},
503    {12, 2, 0, 15},
504    /* 01110xxxx00 or 01110xxxx01 */
505    {8, 1, 1, 7},
506    {9, 1, 1, 7},
507    {0, 8, 0, 8},
508    {0, 9, 0, 8},
509    {0, 11, 0, 9},
510    {1, 2, 1, 9},
511    {2, 4, 0, 10},
512    {1, 7, 0, 10},
513    {2, 5, 0, 11},
514    {2, 6, 0, 11},
515    {1, 10, 0, 12},
516    {0, 18, 0, 12},
517    {3, 6, 0, 13},
518    {2, 7, 0, 13},
519    {5, 6, 0, 14},
520    {3, 7, 0, 14},
521    {19, 1, 0, 15},
522    {1, 5, 1, 15},
523    /* 011110xxxx00 or 011110xxxx01 */
524    {0, 2, 1, 8},
525    {12, 1, 1, 8},
526    {15, 1, 1, 9},
527    {16, 1, 1, 9},
528    {0, 12, 0, 10},
529    {0, 13, 0, 10},
530    {1, 8, 0, 11},
531    {1, 9, 0, 11},
532    {0, 19, 0, 12},
533    {0, 22, 0, 12},
534    {2, 8, 0, 13},
535    {2, 9, 0, 13},
536    {3, 8, 0, 14},
537    {2, 10, 0, 14},
538    {2, 3, 1, 15},
539    {13, 2, 1, 15},
540    /* 0111110xxxx00 or 0111110xxxx01 */
541    {17, 1, 1, 9},
542    {18, 1, 1, 9},
543    {0, 14, 0, 10},
544    {21, 1, 1, 10},
545    {0, 15, 0, 11},
546    {0, 16, 0, 11},
547    {1, 3, 1, 12},
548    {3, 2, 1, 12},
549    {1, 11, 0, 13},
550    {0, 20, 0, 13},
551    {2, 11, 0, 14},
552    {1, 12, 0, 14},
553    {41, 1, 1, 15},
554    {42, 1, 1, 15},
555    /* 01111110xxxx00 or 01111110xxxx01 */
556    {22, 1, 1, 10},
557    {23, 1, 1, 10},
558    {0, 17, 0, 11},
559    {0, 3, 1, 11},
560    {4, 2, 1, 12},
561    {29, 1, 1, 12},
562    {0, 21, 0, 13},
563    {0, 23, 0, 13},
564    {1, 13, 0, 14},
565    {0, 24, 0, 14},
566    {43, 1, 1, 15},
567    {44, 1, 1, 15},
568    /* 011111110xxxx00 or 011111110xxxx01 */
569    {2, 2, 1, 11},
570    {26, 1, 1, 11},
571    {30, 1, 1, 12},
572    {31, 1, 1, 12},
573    {0, 4, 1, 13},
574    {5, 2, 1, 13},
575    {0, 25, 0, 14},
576    {0, 26, 0, 14},
577    /* 0111111110xxxx00 or 0111111110xxxx01 */
578    {32, 1, 1, 12},
579    {33, 1, 1, 12},
580    {6, 2, 1, 13},
581    {7, 2, 1, 13},
582    {0, 5, 1, 14},
583    {1, 4, 1, 14},
584    /* 01111111110xxxx00 or 01111111110xxxx01 */
585    {8, 2, 1, 13},
586    {9, 2, 1, 13},
587    {10, 2, 1, 14},
588    {11, 2, 1, 14},
589    /* 011111111110xxxx00 or 011111111110xxxx01 */
590    {12, 2, 1, 14},
591    {38, 1, 1, 14},
592    /* 1xxxx10 or 1xxxx11 from 11 zeros to 0 zeros*/
593    {0, 1, 0, 3},
594    {0, 2, 0, 3},
595    {0, 3, 0, 4},
596    {0, 1, 1, 4},
597    {1, 1, 1, 5},
598    {2, 1, 1, 5},
599    {5, 1, 1, 6},
600    {6, 1, 1, 6},
601    {10, 1, 1, 7},
602    {11, 1, 1, 7},
603    {13, 1, 1, 8},
604    {14, 1, 1, 8},
605    {19, 1, 1, 9},
606    {20, 1, 1, 9},
607    {24, 1, 1, 10},
608    {25, 1, 1, 10},
609    {27, 1, 1, 11},
610    {28, 1, 1, 11},
611    {34, 1, 1, 12},
612    {35, 1, 1, 12},
613    {36, 1, 1, 13},
614    {37, 1, 1, 13},
615    {39, 1, 1, 14},
616    {40, 1, 1, 14}
617};
618
619const VLCtab2 RvlcDCTtabInter[170] = /* 00xxxx00 or 00xxxx01 */
620{
621    {27, 255, 0, 5},    /* 0000 is escape code */
622    {0, 2, 0, 4},
623    {0, 3, 0, 5},
624    {3, 1, 0, 5},
625    {1, 2, 0, 6},
626    {6, 1, 0, 6},
627    {0, 4, 0, 7},
628    {2, 2, 0, 7},
629    {0, 5, 0, 8},
630    {0, 6, 0, 8},
631    {0, 7, 0, 9},
632    {1, 4, 0, 9},
633    {0, 8, 0, 10},
634    {0, 9, 0, 10},
635    {0, 10, 0, 11},
636    {0, 11, 0, 11},
637    {0, 12, 0, 12},
638    {1, 7, 0, 12},
639    {0, 13, 0, 13},
640    {0, 14, 0, 13},
641    {0, 17, 0, 14},
642    {0, 18, 0, 14},
643    {0, 19, 0, 15},
644    {3, 7, 0, 15},
645    /* 010xxxx00 or 010xxxx01 */
646    {4, 1, 0, 5},
647    {5, 1, 0, 5},
648    {7, 1, 0, 6},
649    {8, 1, 0, 6},
650    {9, 1, 0, 7},
651    {10, 1, 0, 7},
652    {1, 3, 0, 8},
653    {3, 2, 0, 8},
654    {2, 3, 0, 9},
655    {5, 2, 0, 9},
656    {1, 5, 0, 10},
657    {3, 3, 0, 10},
658    {1, 6, 0, 11},
659    {2, 4, 0, 11},
660    {2, 5, 0, 12},
661    {3, 4, 0, 12},
662    {0, 15, 0, 13},
663    {0, 16, 0, 13},
664    {1, 9, 0, 14},
665    {1, 10, 0, 14},
666    {4, 5, 0, 15},
667    {7, 4, 0, 15},
668    /* 0110xxxx00 or 0110xxxx01 */
669    {3, 1, 1, 6},
670    {4, 1, 1, 6},
671    {11, 1, 0, 7},
672    {7, 1, 1, 7},
673    {4, 2, 0, 8},
674    {12, 1, 0, 8},
675    {15, 1, 0, 9},
676    {16, 1, 0, 9},
677    {6, 2, 0, 10},
678    {7, 2, 0, 10},
679    {4, 3, 0, 11},
680    {5, 3, 0, 11},
681    {6, 3, 0, 12},
682    {7, 3, 0, 12},
683    {1, 8, 0, 13},
684    {3, 5, 0, 13},
685    {2, 6, 0, 14},
686    {2, 7, 0, 14},
687    {17, 2, 0, 15},
688    {37, 1, 0, 15},
689    /* 01110xxxx00 or 01110xxxx01 */
690    {8, 1, 1, 7},
691    {9, 1, 1, 7},
692    {13, 1, 0, 8},
693    {14, 1, 0, 8},
694    {17, 1, 0, 9},
695    {1, 2, 1, 9},
696    {8, 2, 0, 10},
697    {9, 2, 0, 10},
698    {10, 2, 0, 11},
699    {21, 1, 0, 11},
700    {11, 2, 0, 12},
701    {27, 1, 0, 12},
702    {4, 4, 0, 13},
703    {5, 4, 0, 13},
704    {3, 6, 0, 14},
705    {6, 4, 0, 14},
706    {38, 1, 0, 15},
707    {1, 5, 1, 15},
708    /* 011110xxxx00 or 011110xxxx01 */
709    {0, 2, 1, 8},
710    {12, 1, 1, 8},
711    {15, 1, 1, 9},
712    {16, 1, 1, 9},
713    {18, 1, 0, 10},
714    {19, 1, 0, 10},
715    {22, 1, 0, 11},
716    {23, 1, 0, 11},
717    {28, 1, 0, 12},
718    {29, 1, 0, 12},
719    {8, 3, 0, 13},
720    {12, 2, 0, 13},
721    {9, 3, 0, 14},
722    {13, 2, 0, 14},
723    {2, 3, 1, 15},
724    {13, 2, 1, 15},
725    /* 0111110xxxx00 or 0111110xxxx01 */
726    {17, 1, 1, 9},
727    {18, 1, 1, 9},
728    {20, 1, 0, 10},
729    {21, 1, 1, 10},
730    {24, 1, 0, 11},
731    {25, 1, 0, 11},
732    {1, 3, 1, 12},
733    {3, 2, 1, 12},
734    {30, 1, 0, 13},
735    {31, 1, 0, 13},
736    {14, 2, 0, 14},
737    {15, 2, 0, 14},
738    {41, 1, 1, 15},
739    {42, 1, 1, 15},
740    /* 01111110xxxx00 or 01111110xxxx01 */
741    {22, 1, 1, 10},
742    {23, 1, 1, 10},
743    {26, 1, 0, 11},
744    {0, 3, 1, 11},
745    {4, 2, 1, 12},
746    {29, 1, 1, 12},
747    {32, 1, 0, 13},
748    {33, 1, 0, 13},
749    {16, 2, 0, 14},
750    {34, 1, 0, 14},
751    {43, 1, 1, 15},
752    {44, 1, 1, 15},
753    /* 011111110xxxx00 or 011111110xxxx01 */
754    {2, 2, 1, 11},
755    {26, 1, 1, 11},
756    {30, 1, 1, 12},
757    {31, 1, 1, 12},
758    {0, 4, 1, 13},
759    {5, 2, 1, 13},
760    {35, 1, 0, 14},
761    {36, 1, 0, 14},
762    /* 0111111110xxxx00 or 0111111110xxxx01 */
763    {32, 1, 1, 12},
764    {33, 1, 1, 12},
765    {6, 2, 1, 13},
766    {7, 2, 1, 13},
767    {0, 5, 1, 14},
768    {1, 4, 1, 14},
769    /* 01111111110xxxx00 or 01111111110xxxx01 */
770    {8, 2, 1, 13},
771    {9, 2, 1, 13},
772    {10, 2, 1, 14},
773    {11, 2, 1, 14},
774    /* 011111111110xxxx00 or 011111111110xxxx01 */
775    {12, 2, 1, 14},
776    {38, 1, 1, 14},
777    /* 1xxxx10 or 1xxxx11 from 11 zeros to 0 zeros*/
778    {0, 1, 0, 3},
779    {1, 1, 0, 3},
780    {2, 1, 0, 4},
781    {0, 1, 1, 4},
782    {1, 1, 1, 5},
783    {2, 1, 1, 5},
784    {5, 1, 1, 6},
785    {6, 1, 1, 6},
786    {10, 1, 1, 7},
787    {11, 1, 1, 7},
788    {13, 1, 1, 8},
789    {14, 1, 1, 8},
790    {19, 1, 1, 9},
791    {20, 1, 1, 9},
792    {24, 1, 1, 10},
793    {25, 1, 1, 10},
794    {27, 1, 1, 11},
795    {28, 1, 1, 11},
796    {34, 1, 1, 12},
797    {35, 1, 1, 12},
798    {36, 1, 1, 13},
799    {37, 1, 1, 13},
800    {39, 1, 1, 14},
801    {40, 1, 1, 14}
802};
803
804/*----------------------------------------------------------------------------
805; EXTERNAL FUNCTION REFERENCES
806; Declare functions defined elsewhere and referenced in this module
807----------------------------------------------------------------------------*/
808
809
810/*----------------------------------------------------------------------------
811; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES
812; Declare variables used in this module but defined elsewhere
813----------------------------------------------------------------------------*/
814
815
816/*----------------------------------------------------------------------------
817; FUNCTION CODE
818----------------------------------------------------------------------------*/
819
820
821/*----------------------------------------------------------------------------
822; Define all local variables
823----------------------------------------------------------------------------*/
824
825
826/*----------------------------------------------------------------------------
827; Function body here
828----------------------------------------------------------------------------*/
829
830
831/*----------------------------------------------------------------------------
832; Return nothing or data or data pointer
833----------------------------------------------------------------------------*/
834
835
836