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 
25 const 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 
49 const 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 
71 const 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 
78 const int intra_max_run1[9] = { 999, 20,  6,
79                                 1,  0,  0,
80                                 0,  0,  0
81                               };
82 
83 const int inter_max_run0[13] = { 999,
84                                  26, 10,  6,  2,  1,  1,
85                                  0,  0,  0,  0,  0,  0
86                                };
87 
88 
89 const int inter_max_run1[4] = { 999, 40,  1,  0 };
90 
91 const 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 
97 const 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 
111 const 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 
131 const 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
166 const VLCshorttab PV_MCBPCtab1[] =
167 {
168     {5, 11}, {5, 11},  {5, 11}, {5, 11}, {21, 13}, {21, 13}, {37, 13}, {53, 13},
169 };
170 #endif
171 const 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 
184 const 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 
196 const 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 
220 const 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 
241 const 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 
268 const 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 
300 const 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 
328 const 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
363 const 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 
386 const 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 
407 const 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 */
432 const int ptrRvlcTab[11] = {0, 24, 46, 66, 84, 100, 114, 126, 134, 140, 144};
433 
434 const 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 
619 const 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