108 const bool debug =
false;
117 struct vlc_src_table {
int c_q, rho, u_off, e_k, e_1, cwd, cwd_len; };
119 vlc_src_table tbl0[] = {
123 size_t tbl0_size =
sizeof(tbl0) /
sizeof(vlc_src_table);
126 vlc_src_table tbl1[] = {
130 size_t tbl1_size =
sizeof(tbl1) /
sizeof(vlc_src_table);
137 for (
int i = 0; i < 1024; ++i)
143 for (
size_t j = 0; j < tbl0_size; ++j)
144 if (tbl0[j].c_q == c_q)
145 if (tbl0[j].cwd == (cwd & ((1 << tbl0[j].cwd_len) - 1)))
147 if (debug) assert(
vlc_tbl0[i] == 0);
149 vlc_tbl0[i] = (
ui16)((tbl0[j].rho << 4) | (tbl0[j].u_off << 3)
150 | (tbl0[j].e_k << 12) | (tbl0[j].e_1 << 8) | tbl0[j].cwd_len);
157 for (
int i = 0; i < 1024; ++i)
161 for (
size_t j = 0; j < tbl1_size; ++j)
162 if (tbl1[j].c_q == c_q)
163 if (tbl1[j].cwd == (cwd & ((1 << tbl1[j].cwd_len) - 1)))
165 if (debug) assert(
vlc_tbl1[i] == 0);
166 vlc_tbl1[i] = (
ui16)((tbl1[j].rho << 4) | (tbl1[j].u_off << 3)
167 | (tbl1[j].e_k << 12) | (tbl1[j].e_1 << 8) | tbl1[j].cwd_len);
186 static const ui8 dec[8] = {
187 3 | (5 << 2) | (5 << 5),
188 1 | (0 << 2) | (1 << 5),
189 2 | (0 << 2) | (2 << 5),
190 1 | (0 << 2) | (1 << 5),
191 3 | (1 << 2) | (3 << 5),
192 1 | (0 << 2) | (1 << 5),
193 2 | (0 << 2) | (2 << 5),
194 1 | (0 << 2) | (1 << 5)
197 for (
ui32 i = 0; i < 256 + 64; ++i)
206 ui32 d = dec[vlc & 0x7];
208 ui32 total_prefix = d & 0x3;
209 ui32 total_suffix = (d >> 2) & 0x7;
210 ui32 u0_suffix_len = (mode == 1) ? total_suffix : 0;
211 ui32 u0 = (mode == 1) ? (d >> 5) : 0;
212 ui32 u1 = (mode == 1) ? 0 : (d >> 5);
215 (total_suffix << 3) |
216 (u0_suffix_len << 7) |
223 ui32 d0 = dec[vlc & 0x7];
225 ui32 d1 = dec[vlc & 0x7];
227 ui32 total_prefix, u0_suffix_len, total_suffix, u0, u1;
230 total_prefix = (d0 & 0x3) + 1;
231 u0_suffix_len = (d0 >> 2) & 0x7;
232 total_suffix = u0_suffix_len;
238 total_prefix = (d0 & 0x3) + (d1 & 0x3);
239 u0_suffix_len = (d0 >> 2) & 0x7;
240 total_suffix = u0_suffix_len + ((d1 >> 2) & 0x7);
246 (total_suffix << 3) |
247 (u0_suffix_len << 7) |
253 ui32 d0 = dec[vlc & 0x7];
255 ui32 d1 = dec[vlc & 0x7];
257 ui32 total_prefix = (d0 & 0x3) + (d1 & 0x3);
258 ui32 u0_suffix_len = (d0 >> 2) & 0x7;
259 ui32 total_suffix = u0_suffix_len + ((d1 >> 2) & 0x7);
260 ui32 u0 = (d0 >> 5) + 2;
261 ui32 u1 = (d1 >> 5) + 2;
264 (total_suffix << 3) |
265 (u0_suffix_len << 7) |
271 for (
ui32 i = 0; i < 256; ++i)
280 ui32 d = dec[vlc & 0x7];
282 ui32 total_prefix = d & 0x3;
283 ui32 total_suffix = (d >> 2) & 0x7;
284 ui32 u0_suffix_len = (mode == 1) ? total_suffix : 0;
285 ui32 u0 = (mode == 1) ? (d >> 5) : 0;
286 ui32 u1 = (mode == 1) ? 0 : (d >> 5);
289 (total_suffix << 3) |
290 (u0_suffix_len << 7) |
296 ui32 d0 = dec[vlc & 0x7];
298 ui32 d1 = dec[vlc & 0x7];
300 ui32 total_prefix = (d0 & 0x3) + (d1 & 0x3);
301 ui32 u0_suffix_len = (d0 >> 2) & 0x7;
302 ui32 total_suffix = u0_suffix_len + ((d1 >> 2) & 0x7);
307 (total_suffix << 3) |
308 (u0_suffix_len << 7) |
static bool uvlc_tables_initialized
Initializes UVLC tables uvlc_tbl0 and uvlc_tbl1.
static bool uvlc_init_tables()
Initializes uvlc_tbl0 and uvlc_tbl1 tables.
ui16 uvlc_tbl0[256+64]
uvlc_tbl0 contains decoding information for initial row of quads
ui16 uvlc_tbl1[256]
uvlc_tbl1 contains decoding information for non-initial row of quads
static bool vlc_tables_initialized
Initializes VLC tables vlc_tbl0 and vlc_tbl1.
static bool vlc_init_tables()
Initializes vlc_tbl0 and vlc_tbl1 tables, from table0.h and table1.h.
ui16 vlc_tbl0[1024]
vlc_tbl0 contains decoding information for initial row of quads
ui16 vlc_tbl1[1024]
vlc_tbl1 contains decoding information for non-initial row of quads