62#define HT_SHIFT_SIGMA 0
63#define HT_SHIFT_SCAN 4
65#define HT_SHIFT_REF_IND 2
68const static uint8_t
mel_e[13] = { 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 4, 5 };
95 return n *
c <=
c - 1;
104 return 1 + (0xffffffffffffffffull / d);
148 uint32_t new_bits = 32;
152 if (
buffer->bits_left >= 32)
179 if ((
tmp & 0x7FFF000000) > 0x7F8F000000) {
183 if ((
tmp & 0x007FFF0000) > 0x007F8F0000) {
184 tmp = (
tmp & 0x007FFFFFFF) + ((
tmp & 0xFF00000000) >> 1);
187 if ((
tmp & 0x00007FFF00) > 0x00007F8F00) {
188 tmp = (
tmp & 0x00007FFFFF) + ((
tmp & 0xFFFF000000) >> 1);
191 if ((
tmp & 0x0000007FFF) > 0x0000007F8F) {
192 tmp = (
tmp & 0x0000007FFF) + ((
tmp & 0xFFFFFF0000) >> 1);
199 buffer->bits_left += new_bits;
210 while (
buffer->bits_left < 32) {
213 if (
buffer->pos < length) {
245 uint64_t
mask = (1ull << nbits) - 1;
260 uint8_t nbits,
const uint8_t *buf,
264 uint64_t
mask = (1ull << nbits) - 1;
279 uint64_t
mask = (1ull << nbits) - 1;
288 s->pos = Lcup - 2 - Pcup;
289 s->last = Dcup[Lcup - 2];
290 s->tmp = (
s->last) >> 4;
291 s->bits = ((
s->tmp & 7) < 7) ? 4 : 3;
303 const uint8_t *Dcup, uint8_t *sig_pat,
304 uint8_t *res_off, uint8_t *emb_pat_k,
305 uint8_t *emb_pat_1, uint8_t
pos,
306 uint32_t Pcup, uint16_t context)
315 code_word = vlc_stream->
bit_buf & 0x7f;
316 index = code_word + (context << 7);
324 res_off[
pos] = (uint8_t) (
value & 1);
325 sig_pat[
pos] = (uint8_t) ((
value & 0x00F0) >> 4);
326 emb_pat_k[
pos] = (uint8_t) ((
value & 0x0F00) >> 8);
327 emb_pat_1[
pos] = (uint8_t) ((
value & 0xF000) >> 12);
340 static const uint8_t return_value[8] = { 5, 1, 2, 1, 3, 1, 2, 1 };
341 static const uint8_t drop_bits[8] = { 3, 1, 2, 1, 3, 1, 2, 1 };
351 return return_value[
bits];
360 const uint8_t *refill_array)
362 static const int mask[] = { 1, 31 };
363 static const int drop_bits[] = { 1, 5 };
366 int cond = suffix != 3;
385 const uint8_t *refill_array)
396 int32_t i_n,
const uint8_t *buf, uint32_t length)
408 int32_t known_1[2],
const uint8_t emb_pat_1[2],
410 uint32_t *mu_n,
const uint8_t *Dcup, uint32_t Pcup,
413 for (
int i = 0;
i < 4;
i++) {
416 known_1[
pos] = (emb_pat_1[
pos] >>
i) & 1;
421 mu_n[n] = (v[
pos][
i] >> 1) + 1;
423 mu_n[n] |= (1 << (pLSB - 1));
424 mu_n[n] |= ((uint32_t) (v[
pos][
i] & 1)) << 31;
431 int cond = stream->
pos < length;
433 if (stream->
bits == 0) {
434 stream->
bits = (stream->
tmp == 0xFF) ? 7 : 8;
439 return (stream->
tmp >> stream->
bits) & 1;
446 if (stream->
bits == 0) {
447 stream->
bits = (stream->
last == 0xFF) ? 7 : 8;
448 if (stream->
pos < length) {
468 if (mel_state->
run == 0 && mel_state->
one == 0) {
472 eval =
mel_e[mel_state->
k];
475 mel_state->
run = 1 << eval;
476 mel_state->
k =
FFMIN(12, mel_state->
k + 1);
481 mel_state->
run = (2 * (mel_state->
run)) +
bit;
484 mel_state->
k =
FFMAX(0, mel_state->
k - 1);
488 if (mel_state->
run > 0) {
512 const uint16_t *vlc_table,
const uint8_t *Dcup,
513 uint8_t *sig_pat, uint8_t *res_off, uint8_t *emb_pat_k,
514 uint8_t *emb_pat_1, uint8_t
pos, uint16_t context,
515 uint32_t Lcup, uint32_t Pcup)
529 res_off, emb_pat_k, emb_pat_1,
pos, Pcup,
535 const uint8_t *block_states)
537 return (block_states[(x1 + 1) *
stride + (x2 + 1)] >> shift_by) & 1;
542 int value, uint8_t *block_states)
544 block_states[(x1 + 1) *
stride + (x2 + 1)] |=
value;
552 StateVars *mag_sgn_stream,
const uint8_t *Dcup,
553 uint32_t Lcup, uint32_t Pcup, uint8_t pLSB,
555 int32_t *sample_buf, uint8_t *block_states)
559 uint16_t context1, context2;
560 uint16_t context = 0;
562 uint8_t sig_pat[2] = { 0 };
563 uint8_t res_off[2] = { 0 };
564 uint8_t emb_pat_k[2] = { 0 };
565 uint8_t emb_pat_1[2] = { 0 };
566 uint8_t gamma[2] = { 0 };
568 uint8_t E_n[2] = { 0 };
569 uint8_t E_ne[2] = { 0 };
570 uint8_t E_nw[2] = { 0 };
571 uint8_t E_nf[2] = { 0 };
573 uint8_t max_e[2] = { 0 };
574 uint8_t u_pfx[2] = { 0 };
575 uint8_t u_sfx[2] = { 0 };
576 uint8_t u_ext[2] = { 0 };
586 uint8_t kappa[2] = { 1, 1 };
594 uint8_t *sigma, *sigma_n, *
E;
597 const uint8_t *vlc_buf = Dcup + Pcup;
605 int maxbp = cblk->
zbp + 2;
608 const uint16_t is_border_x =
width % 2;
609 const uint16_t is_border_y =
height % 2;
614 size_t buf_size = 4 * quad_width * quad_height;
620 sigma_n =
av_calloc(buf_size,
sizeof(uint8_t));
622 mu_n =
av_calloc(buf_size,
sizeof(uint32_t));
624 if (!sigma_n || !
E || !mu_n) {
632 while (q < quad_width - 1) {
638 emb_pat_k, emb_pat_1,
J2K_Q1, context, Lcup,
642 for (
int i = 0;
i < 4;
i++)
643 sigma_n[4 *
q1 +
i] = (sig_pat[
J2K_Q1] >>
i) & 1;
646 context = sigma_n[4 *
q1];
647 context |= sigma_n[4 *
q1 + 1];
648 context += sigma_n[4 *
q1 + 2] << 1;
649 context += sigma_n[4 *
q1 + 3] << 2;
653 emb_pat_k, emb_pat_1,
J2K_Q2, context, Lcup,
657 for (
int i = 0;
i < 4;
i++)
658 sigma_n[4 * q2 +
i] = (sig_pat[
J2K_Q2] >>
i) & 1;
661 context = sigma_n[4 * q2];
662 context |= sigma_n[4 * q2 + 1];
663 context += sigma_n[4 * q2 + 2] << 1;
664 context += sigma_n[4 * q2 + 3] << 2;
706 }
else if (res_off[
J2K_Q1] == 1 || res_off[
J2K_Q2] == 1) {
707 uint8_t
pos = res_off[
J2K_Q1] == 1 ? 0 : 1;
720 for (
int i = 0;
i < 4;
i++) {
726 E, mu_n, Dcup, Pcup, pLSB);
729 E, mu_n, Dcup, Pcup, pLSB);
734 if (quad_width % 2 == 1) {
739 emb_pat_k, emb_pat_1,
J2K_Q1, context, Lcup,
743 for (
int i = 0;
i < 4;
i++)
744 sigma_n[4 *
q1 +
i] = (sig_pat[
J2K_Q1] >>
i) & 1;
748 if (res_off[
J2K_Q1] == 1) {
761 for (
int i = 0;
i < 4;
i++)
765 E, mu_n, Dcup, Pcup, pLSB);
784 for (
int row = 1; row < quad_height; row++) {
785 while ((q - (row * quad_width)) < quad_width - 1 && q < (quad_height * quad_width)) {
788 context1 = sigma_n[4 * (
q1 - quad_width) + 1];
789 context1 += sigma_n[4 * (
q1 - quad_width) + 3] << 2;
792 context1 |= sigma_n[4 * (
q1 - quad_width) - 1];
793 context1 += (sigma_n[4 *
q1 - 1] | sigma_n[4 *
q1 - 2]) << 1;
796 context1 |= sigma_n[4 * (
q1 - quad_width) + 5] << 2;
800 emb_pat_k, emb_pat_1,
J2K_Q1, context1, Lcup,
805 for (
int i = 0;
i < 4;
i++)
806 sigma_n[4 *
q1 +
i] = (sig_pat[
J2K_Q1] >>
i) & 1;
808 context2 = sigma_n[4 * (q2 - quad_width) + 1];
809 context2 += sigma_n[4 * (q2 - quad_width) + 3] << 2;
812 context2 |= sigma_n[4 * (q2 - quad_width) - 1];
813 context2 += (sigma_n[4 * q2 - 1] | sigma_n[4 * q2 - 2]) << 1;
816 context2 |= sigma_n[4 * (q2 - quad_width) + 5] << 2;
820 emb_pat_k, emb_pat_1,
J2K_Q2, context2, Lcup,
825 for (
int i = 0;
i < 4;
i++)
826 sigma_n[4 * q2 +
i] = (sig_pat[
J2K_Q2] >>
i) & 1;
846 }
else if (res_off[
J2K_Q1] == 1 || res_off[
J2K_Q2] == 1) {
847 uint8_t
pos = res_off[
J2K_Q1] == 1 ? 0 : 1;
859 if (sp == 0 || sp == 1 || sp == 2 || sp == 4 || sp == 8)
866 if (sp == 0 || sp == 1 || sp == 2 || sp == 4 || sp == 8)
869 E_n[
J2K_Q1] =
E[4 * (
q1 - quad_width) + 1];
870 E_n[
J2K_Q2] =
E[4 * (q2 - quad_width) + 1];
872 E_ne[
J2K_Q1] =
E[4 * (
q1 - quad_width) + 3];
873 E_ne[
J2K_Q2] =
E[4 * (q2 - quad_width) + 3];
894 for (
int i = 0;
i < 4;
i++) {
899 E, mu_n, Dcup, Pcup, pLSB);
902 E, mu_n, Dcup, Pcup, pLSB);
907 if (quad_width % 2 == 1) {
911 context1 = sigma_n[4 * (
q1 - quad_width) + 1];
912 context1 += (sigma_n[4 * (
q1 - quad_width) + 3] << 2);
915 context1 |= sigma_n[4 * (
q1 - quad_width) - 1];
916 context1 += (sigma_n[4 *
q1 - 1] | sigma_n[4 *
q1 - 2]) << 1;
919 context1 |= sigma_n[4 * (
q1 - quad_width) + 5] << 2;
923 emb_pat_k, emb_pat_1,
J2K_Q1, context1, Lcup,
927 for (
int i = 0;
i < 4;
i++)
928 sigma_n[4 *
q1 +
i] = (sig_pat[
J2K_Q1] >>
i) & 1;
933 if (res_off[
J2K_Q1] == 1) {
945 if (sp == 0 || sp == 1 || sp == 2 || sp == 4 || sp == 8)
948 E_n[
J2K_Q1] =
E[4 * (
q1 - quad_width) + 1];
950 E_ne[
J2K_Q1] =
E[4 * (
q1 - quad_width) + 3];
966 for (
int i = 0;
i < 4;
i++)
970 E, mu_n, Dcup, Pcup, pLSB);
976 for (
int y = 0; y < quad_height; y++) {
977 for (
int x = 0; x < quad_width; x++) {
989 x1 = y != quad_height - 1 || is_border_y == 0;
995 x2 = x != quad_width - 1 || is_border_x == 0;
1002 sample_buf[(j2 + 1) + (j1 + 1) *
stride] = ((
int32_t)*mu) * x3;
1017 const uint32_t mbr_info, uint8_t causal_cond,
1018 uint8_t *block_states,
int stride)
1020 uint8_t *state_p0 = block_states +
i *
stride + j;
1021 uint8_t *state_p1 = block_states + (
i + 1) *
stride + j;
1022 uint8_t *state_p2 = block_states + (
i + 2) *
stride + j;
1024 uint8_t mbr0 = state_p0[0] | state_p0[1] | state_p0[2];
1025 uint8_t mbr1 = state_p1[0] | state_p1[2];
1026 uint8_t mbr2 = state_p2[0] | state_p2[1] | state_p2[2];
1027 *mbr = mbr0 | mbr1 | (mbr2 & causal_cond);
1036 int32_t *sample_buf, uint8_t *block_states,
1037 uint8_t *magref_segment, uint32_t magref_length,
1040 for (
int j = j_s; j < j_s +
width; j++) {
1041 uint32_t mbr_info = 0;
1042 for (
int i = i_s;
i < i_s +
height;
i++) {
1045 uint8_t causal_cond = (is_causal == 0) || (
i != (i_s +
height - 1));
1053 modify_state = block_states[(
i + 1) *
stride + (j + 1)];
1060 *sp |=
bit << (pLSB - 1);
1066 for (
int j = j_s; j < j_s +
width; j++) {
1067 for (
int i = i_s;
i < i_s +
height;
i++) {
1070 uint8_t *state_p = block_states + (
i + 1) *
stride + (j + 1);
1073 *sp |= (uint32_t)
bit << 31;
1084 const int stride, uint8_t *magref_segment,
1085 uint32_t magref_length, uint8_t pLSB,
1086 int32_t *sample_buf, uint8_t *block_states)
1090 const uint16_t num_v_stripe =
height / 4;
1091 const uint16_t num_h_stripe =
width / 4;
1096 uint16_t
i = 0, j = 0;
1101 for (
int n1 = 0; n1 < num_v_stripe; n1++) {
1103 for (
int n2 = 0; n2 < num_h_stripe; n2++) {
1105 pLSB, sample_buf, block_states, magref_segment,
1106 magref_length, is_causal);
1109 last_width =
width % 4;
1112 pLSB, sample_buf, block_states, magref_segment,
1113 magref_length, is_causal);
1120 for (
int n2 = 0; n2 < num_h_stripe; n2++) {
1122 pLSB, sample_buf, block_states, magref_segment,
1123 magref_length, is_causal);
1126 last_width =
width % 4;
1129 pLSB, sample_buf, block_states, magref_segment,
1130 magref_length, is_causal);
1138 uint8_t *magref_segment,uint32_t magref_length,
1139 uint8_t pLSB,
int32_t *sample_buf, uint8_t *block_states)
1143 const uint16_t num_v_stripe = block_height / 4;
1145 uint16_t i_start = 0;
1151 for (
int n1 = 0; n1 < num_v_stripe; n1++) {
1152 for (
int j = 0; j <
width; j++) {
1153 for (
int i = i_start;
i < i_start +
height;
i++) {
1158 sp = &sample_buf[j +
i *
stride];
1162 tmp = 0xFFFFFFFE | (uint32_t)
bit;
1163 tmp = (uint32_t)
tmp << pLSB;
1165 sp[0] |= 1 << (pLSB - 1);
1171 height = block_height % 4;
1172 for (
int j = 0; j <
width; j++) {
1173 for (
int i = i_start;
i < i_start +
height;
i++) {
1174 sp = &sample_buf[j +
i *
stride];
1178 tmp = 0xFFFFFFFE | (uint32_t)
bit;
1179 tmp = (uint32_t)
tmp << pLSB;
1181 sp[0] |= 1 << (pLSB - 1);
1190 int width,
int height,
int M_b, uint8_t roi_shift)
1206 uint8_t num_plhd_passes;
1219 uint8_t *block_states =
NULL;
1222 const uint32_t
mask = (
int64_t)UINT32_MAX >> (M_b + 1);
1224 uint8_t num_rempass;
1226 const int quad_buf_width =
width + 4;
1227 const int quad_buf_height =
height + 4;
1240 num_rempass = cblk->
npasses % 3;
1241 num_plhd_passes = num_rempass ? cblk->
npasses - num_rempass : cblk->
npasses - 3;
1243 p0 = num_plhd_passes / 3;
1244 z_blk = cblk->
npasses - num_plhd_passes;
1254 "Cleanup pass length must be at least 2 bytes in length\n");
1259 if (Lcup + Lref != cblk->
length)
1263 Dref = cblk->
data + Lcup;
1267 S_blk = p0 + cblk->
zbp;
1268 cblk->
zbp = S_blk - 1;
1271 if (pLSB <= 1 || pLSB >= 31) {
1276 Scup = (Dcup[Lcup - 1] << 4) + (Dcup[Lcup - 2] & 0x0F);
1278 if (Scup < 2 || Scup > Lcup || Scup > 4079) {
1287 Dcup[Lcup - 1] = 0xFF;
1288 Dcup[Lcup - 2] |= 0x0F;
1306 block_states =
av_calloc(quad_buf_width * quad_buf_height,
sizeof(uint8_t));
1308 if (!sample_buf || !block_states) {
1313 &mag_sgn, Dcup, Lcup, Pcup, pLSB,
width,
1314 height, quad_buf_width, sample_buf, block_states)) < 0) {
1321 pLSB - 1, sample_buf, block_states);
1325 pLSB - 1, sample_buf, block_states);
1328 for (
int y = 0; y <
height; y++) {
1329 for (
int x = 0; x <
width; x++) {
1332 n = x + (y * t1->
stride);
1333 val = sample_buf[x + (y * quad_buf_width)];
1334 sign =
val & INT32_MIN;
1337 if (roi_shift && (((uint32_t)
val & ~
mask) == 0)) {
1343 "Pixel precision in ROI is beyond the supported range.\n"
1364 0x0016, 0x006A, 0x0046, 0x00DD, 0x0086, 0x888B, 0x0026, 0x444D, 0x0016, 0x00AA, 0x0046, 0x88AD, 0x0086,
1365 0x003A, 0x0026, 0x00DE, 0x0016, 0x00CA, 0x0046, 0x009D, 0x0086, 0x005A, 0x0026, 0x222D, 0x0016, 0x009A,
1366 0x0046, 0x007D, 0x0086, 0x01FD, 0x0026, 0x007E, 0x0016, 0x006A, 0x0046, 0x88CD, 0x0086, 0x888B, 0x0026,
1367 0x111D, 0x0016, 0x00AA, 0x0046, 0x005D, 0x0086, 0x003A, 0x0026, 0x00EE, 0x0016, 0x00CA, 0x0046, 0x00BD,
1368 0x0086, 0x005A, 0x0026, 0x11FF, 0x0016, 0x009A, 0x0046, 0x003D, 0x0086, 0x04ED, 0x0026, 0x2AAF, 0x0016,
1369 0x006A, 0x0046, 0x00DD, 0x0086, 0x888B, 0x0026, 0x444D, 0x0016, 0x00AA, 0x0046, 0x88AD, 0x0086, 0x003A,
1370 0x0026, 0x44EF, 0x0016, 0x00CA, 0x0046, 0x009D, 0x0086, 0x005A, 0x0026, 0x222D, 0x0016, 0x009A, 0x0046,
1371 0x007D, 0x0086, 0x01FD, 0x0026, 0x00BE, 0x0016, 0x006A, 0x0046, 0x88CD, 0x0086, 0x888B, 0x0026, 0x111D,
1372 0x0016, 0x00AA, 0x0046, 0x005D, 0x0086, 0x003A, 0x0026, 0x4CCF, 0x0016, 0x00CA, 0x0046, 0x00BD, 0x0086,
1373 0x005A, 0x0026, 0x00FE, 0x0016, 0x009A, 0x0046, 0x003D, 0x0086, 0x04ED, 0x0026, 0x006F, 0x0002, 0x0088,
1374 0x0002, 0x005C, 0x0002, 0x0018, 0x0002, 0x00DE, 0x0002, 0x0028, 0x0002, 0x009C, 0x0002, 0x004A, 0x0002,
1375 0x007E, 0x0002, 0x0088, 0x0002, 0x00CC, 0x0002, 0x0018, 0x0002, 0x888F, 0x0002, 0x0028, 0x0002, 0x00FE,
1376 0x0002, 0x003A, 0x0002, 0x222F, 0x0002, 0x0088, 0x0002, 0x04FD, 0x0002, 0x0018, 0x0002, 0x00BE, 0x0002,
1377 0x0028, 0x0002, 0x00BF, 0x0002, 0x004A, 0x0002, 0x006E, 0x0002, 0x0088, 0x0002, 0x00AC, 0x0002, 0x0018,
1378 0x0002, 0x444F, 0x0002, 0x0028, 0x0002, 0x00EE, 0x0002, 0x003A, 0x0002, 0x113F, 0x0002, 0x0088, 0x0002,
1379 0x005C, 0x0002, 0x0018, 0x0002, 0x00CF, 0x0002, 0x0028, 0x0002, 0x009C, 0x0002, 0x004A, 0x0002, 0x006F,
1380 0x0002, 0x0088, 0x0002, 0x00CC, 0x0002, 0x0018, 0x0002, 0x009F, 0x0002, 0x0028, 0x0002, 0x00EF, 0x0002,
1381 0x003A, 0x0002, 0x233F, 0x0002, 0x0088, 0x0002, 0x04FD, 0x0002, 0x0018, 0x0002, 0x00AF, 0x0002, 0x0028,
1382 0x0002, 0x44FF, 0x0002, 0x004A, 0x0002, 0x005F, 0x0002, 0x0088, 0x0002, 0x00AC, 0x0002, 0x0018, 0x0002,
1383 0x007F, 0x0002, 0x0028, 0x0002, 0x00DF, 0x0002, 0x003A, 0x0002, 0x111F, 0x0002, 0x0028, 0x0002, 0x005C,
1384 0x0002, 0x008A, 0x0002, 0x00BF, 0x0002, 0x0018, 0x0002, 0x00FE, 0x0002, 0x00CC, 0x0002, 0x007E, 0x0002,
1385 0x0028, 0x0002, 0x8FFF, 0x0002, 0x004A, 0x0002, 0x007F, 0x0002, 0x0018, 0x0002, 0x00DF, 0x0002, 0x00AC,
1386 0x0002, 0x133F, 0x0002, 0x0028, 0x0002, 0x222D, 0x0002, 0x008A, 0x0002, 0x00BE, 0x0002, 0x0018, 0x0002,
1387 0x44EF, 0x0002, 0x2AAD, 0x0002, 0x006E, 0x0002, 0x0028, 0x0002, 0x15FF, 0x0002, 0x004A, 0x0002, 0x009E,
1388 0x0002, 0x0018, 0x0002, 0x00CF, 0x0002, 0x003C, 0x0002, 0x223F, 0x0002, 0x0028, 0x0002, 0x005C, 0x0002,
1389 0x008A, 0x0002, 0x2BBF, 0x0002, 0x0018, 0x0002, 0x04EF, 0x0002, 0x00CC, 0x0002, 0x006F, 0x0002, 0x0028,
1390 0x0002, 0x27FF, 0x0002, 0x004A, 0x0002, 0x009F, 0x0002, 0x0018, 0x0002, 0x00DE, 0x0002, 0x00AC, 0x0002,
1391 0x444F, 0x0002, 0x0028, 0x0002, 0x222D, 0x0002, 0x008A, 0x0002, 0x8AAF, 0x0002, 0x0018, 0x0002, 0x00EE,
1392 0x0002, 0x2AAD, 0x0002, 0x005F, 0x0002, 0x0028, 0x0002, 0x44FF, 0x0002, 0x004A, 0x0002, 0x888F, 0x0002,
1393 0x0018, 0x0002, 0xAAAF, 0x0002, 0x003C, 0x0002, 0x111F, 0x0004, 0x8FFD, 0x0028, 0x005C, 0x0004, 0x00BC,
1394 0x008A, 0x66FF, 0x0004, 0x00CD, 0x0018, 0x111D, 0x0004, 0x009C, 0x003A, 0x8AAF, 0x0004, 0x00FC, 0x0028,
1395 0x133D, 0x0004, 0x00AC, 0x004A, 0x3BBF, 0x0004, 0x2BBD, 0x0018, 0x5FFF, 0x0004, 0x006C, 0x157D, 0x455F,
1396 0x0004, 0x2FFD, 0x0028, 0x222D, 0x0004, 0x22AD, 0x008A, 0x44EF, 0x0004, 0x00CC, 0x0018, 0x4FFF, 0x0004,
1397 0x007C, 0x003A, 0x447F, 0x0004, 0x04DD, 0x0028, 0x233D, 0x0004, 0x009D, 0x004A, 0x00DE, 0x0004, 0x88BD,
1398 0x0018, 0xAFFF, 0x0004, 0x115D, 0x1FFD, 0x444F, 0x0004, 0x8FFD, 0x0028, 0x005C, 0x0004, 0x00BC, 0x008A,
1399 0x8CEF, 0x0004, 0x00CD, 0x0018, 0x111D, 0x0004, 0x009C, 0x003A, 0x888F, 0x0004, 0x00FC, 0x0028, 0x133D,
1400 0x0004, 0x00AC, 0x004A, 0x44DF, 0x0004, 0x2BBD, 0x0018, 0x8AFF, 0x0004, 0x006C, 0x157D, 0x006F, 0x0004,
1401 0x2FFD, 0x0028, 0x222D, 0x0004, 0x22AD, 0x008A, 0x00EE, 0x0004, 0x00CC, 0x0018, 0x2EEF, 0x0004, 0x007C,
1402 0x003A, 0x277F, 0x0004, 0x04DD, 0x0028, 0x233D, 0x0004, 0x009D, 0x004A, 0x1BBF, 0x0004, 0x88BD, 0x0018,
1403 0x37FF, 0x0004, 0x115D, 0x1FFD, 0x333F, 0x0002, 0x0088, 0x0002, 0x02ED, 0x0002, 0x00CA, 0x0002, 0x4CCF,
1404 0x0002, 0x0048, 0x0002, 0x23FF, 0x0002, 0x001A, 0x0002, 0x888F, 0x0002, 0x0088, 0x0002, 0x006C, 0x0002,
1405 0x002A, 0x0002, 0x00AF, 0x0002, 0x0048, 0x0002, 0x22EF, 0x0002, 0x00AC, 0x0002, 0x005F, 0x0002, 0x0088,
1406 0x0002, 0x444D, 0x0002, 0x00CA, 0x0002, 0xCCCF, 0x0002, 0x0048, 0x0002, 0x00FE, 0x0002, 0x001A, 0x0002,
1407 0x006F, 0x0002, 0x0088, 0x0002, 0x005C, 0x0002, 0x002A, 0x0002, 0x009F, 0x0002, 0x0048, 0x0002, 0x00DF,
1408 0x0002, 0x03FD, 0x0002, 0x222F, 0x0002, 0x0088, 0x0002, 0x02ED, 0x0002, 0x00CA, 0x0002, 0x8CCF, 0x0002,
1409 0x0048, 0x0002, 0x11FF, 0x0002, 0x001A, 0x0002, 0x007E, 0x0002, 0x0088, 0x0002, 0x006C, 0x0002, 0x002A,
1410 0x0002, 0x007F, 0x0002, 0x0048, 0x0002, 0x00EE, 0x0002, 0x00AC, 0x0002, 0x003E, 0x0002, 0x0088, 0x0002,
1411 0x444D, 0x0002, 0x00CA, 0x0002, 0x00BE, 0x0002, 0x0048, 0x0002, 0x00BF, 0x0002, 0x001A, 0x0002, 0x003F,
1412 0x0002, 0x0088, 0x0002, 0x005C, 0x0002, 0x002A, 0x0002, 0x009E, 0x0002, 0x0048, 0x0002, 0x00DE, 0x0002,
1413 0x03FD, 0x0002, 0x111F, 0x0004, 0x8AED, 0x0048, 0x888D, 0x0004, 0x00DC, 0x00CA, 0x3FFF, 0x0004, 0xCFFD,
1414 0x002A, 0x003D, 0x0004, 0x00BC, 0x005A, 0x8DDF, 0x0004, 0x8FFD, 0x0048, 0x006C, 0x0004, 0x027D, 0x008A,
1415 0x99FF, 0x0004, 0x00EC, 0x00FA, 0x003C, 0x0004, 0x00AC, 0x001A, 0x009F, 0x0004, 0x2FFD, 0x0048, 0x007C,
1416 0x0004, 0x44CD, 0x00CA, 0x67FF, 0x0004, 0x1FFD, 0x002A, 0x444D, 0x0004, 0x00AD, 0x005A, 0x8CCF, 0x0004,
1417 0x4FFD, 0x0048, 0x445D, 0x0004, 0x01BD, 0x008A, 0x4EEF, 0x0004, 0x45DD, 0x00FA, 0x111D, 0x0004, 0x009C,
1418 0x001A, 0x222F, 0x0004, 0x8AED, 0x0048, 0x888D, 0x0004, 0x00DC, 0x00CA, 0xAFFF, 0x0004, 0xCFFD, 0x002A,
1419 0x003D, 0x0004, 0x00BC, 0x005A, 0x11BF, 0x0004, 0x8FFD, 0x0048, 0x006C, 0x0004, 0x027D, 0x008A, 0x22EF,
1420 0x0004, 0x00EC, 0x00FA, 0x003C, 0x0004, 0x00AC, 0x001A, 0x227F, 0x0004, 0x2FFD, 0x0048, 0x007C, 0x0004,
1421 0x44CD, 0x00CA, 0x5DFF, 0x0004, 0x1FFD, 0x002A, 0x444D, 0x0004, 0x00AD, 0x005A, 0x006F, 0x0004, 0x4FFD,
1422 0x0048, 0x445D, 0x0004, 0x01BD, 0x008A, 0x11DF, 0x0004, 0x45DD, 0x00FA, 0x111D, 0x0004, 0x009C, 0x001A,
1423 0x155F, 0x0006, 0x00FC, 0x0018, 0x111D, 0x0048, 0x888D, 0x00AA, 0x4DDF, 0x0006, 0x2AAD, 0x005A, 0x67FF,
1424 0x0028, 0x223D, 0x00BC, 0xAAAF, 0x0006, 0x00EC, 0x0018, 0x5FFF, 0x0048, 0x006C, 0x008A, 0xCCCF, 0x0006,
1425 0x009D, 0x00CA, 0x44EF, 0x0028, 0x003C, 0x8FFD, 0x137F, 0x0006, 0x8EED, 0x0018, 0x1FFF, 0x0048, 0x007C,
1426 0x00AA, 0x4CCF, 0x0006, 0x227D, 0x005A, 0x1DDF, 0x0028, 0x444D, 0x4FFD, 0x155F, 0x0006, 0x00DC, 0x0018,
1427 0x2EEF, 0x0048, 0x445D, 0x008A, 0x22BF, 0x0006, 0x009C, 0x00CA, 0x8CDF, 0x0028, 0x222D, 0x2FFD, 0x226F,
1428 0x0006, 0x00FC, 0x0018, 0x111D, 0x0048, 0x888D, 0x00AA, 0x1BBF, 0x0006, 0x2AAD, 0x005A, 0x33FF, 0x0028,
1429 0x223D, 0x00BC, 0x8AAF, 0x0006, 0x00EC, 0x0018, 0x9BFF, 0x0048, 0x006C, 0x008A, 0x8ABF, 0x0006, 0x009D,
1430 0x00CA, 0x4EEF, 0x0028, 0x003C, 0x8FFD, 0x466F, 0x0006, 0x8EED, 0x0018, 0xCFFF, 0x0048, 0x007C, 0x00AA,
1431 0x8CCF, 0x0006, 0x227D, 0x005A, 0xAEEF, 0x0028, 0x444D, 0x4FFD, 0x477F, 0x0006, 0x00DC, 0x0018, 0xAFFF,
1432 0x0048, 0x445D, 0x008A, 0x2BBF, 0x0006, 0x009C, 0x00CA, 0x44DF, 0x0028, 0x222D, 0x2FFD, 0x133F, 0x00F6,
1433 0xAFFD, 0x1FFB, 0x003C, 0x0008, 0x23BD, 0x007A, 0x11DF, 0x00F6, 0x45DD, 0x2FFB, 0x4EEF, 0x00DA, 0x177D,
1434 0xCFFD, 0x377F, 0x00F6, 0x3FFD, 0x8FFB, 0x111D, 0x0008, 0x009C, 0x005A, 0x1BBF, 0x00F6, 0x00CD, 0x00BA,
1435 0x8DDF, 0x4FFB, 0x006C, 0x9BFD, 0x455F, 0x00F6, 0x67FD, 0x1FFB, 0x002C, 0x0008, 0x00AC, 0x007A, 0x009F,
1436 0x00F6, 0x00AD, 0x2FFB, 0x7FFF, 0x00DA, 0x004C, 0x5FFD, 0x477F, 0x00F6, 0x00EC, 0x8FFB, 0x001C, 0x0008,
1437 0x008C, 0x005A, 0x888F, 0x00F6, 0x00CC, 0x00BA, 0x2EEF, 0x4FFB, 0x115D, 0x8AED, 0x113F, 0x00F6, 0xAFFD,
1438 0x1FFB, 0x003C, 0x0008, 0x23BD, 0x007A, 0x1DDF, 0x00F6, 0x45DD, 0x2FFB, 0xBFFF, 0x00DA, 0x177D, 0xCFFD,
1439 0x447F, 0x00F6, 0x3FFD, 0x8FFB, 0x111D, 0x0008, 0x009C, 0x005A, 0x277F, 0x00F6, 0x00CD, 0x00BA, 0x22EF,
1440 0x4FFB, 0x006C, 0x9BFD, 0x444F, 0x00F6, 0x67FD, 0x1FFB, 0x002C, 0x0008, 0x00AC, 0x007A, 0x11BF, 0x00F6,
1441 0x00AD, 0x2FFB, 0xFFFF, 0x00DA, 0x004C, 0x5FFD, 0x233F, 0x00F6, 0x00EC, 0x8FFB, 0x001C, 0x0008, 0x008C,
1442 0x005A, 0x006F, 0x00F6, 0x00CC, 0x00BA, 0x8BBF, 0x4FFB, 0x115D, 0x8AED, 0x222F};
1445 0x0026, 0x00AA, 0x0046, 0x006C, 0x0086, 0x8AED, 0x0018, 0x8DDF, 0x0026, 0x01BD, 0x0046, 0x5FFF, 0x0086,
1446 0x027D, 0x005A, 0x155F, 0x0026, 0x003A, 0x0046, 0x444D, 0x0086, 0x4CCD, 0x0018, 0xCCCF, 0x0026, 0x2EFD,
1447 0x0046, 0x99FF, 0x0086, 0x009C, 0x00CA, 0x133F, 0x0026, 0x00AA, 0x0046, 0x445D, 0x0086, 0x8CCD, 0x0018,
1448 0x11DF, 0x0026, 0x4FFD, 0x0046, 0xCFFF, 0x0086, 0x009D, 0x005A, 0x007E, 0x0026, 0x003A, 0x0046, 0x1FFF,
1449 0x0086, 0x88AD, 0x0018, 0x00BE, 0x0026, 0x8FFD, 0x0046, 0x4EEF, 0x0086, 0x888D, 0x00CA, 0x111F, 0x0026,
1450 0x00AA, 0x0046, 0x006C, 0x0086, 0x8AED, 0x0018, 0x45DF, 0x0026, 0x01BD, 0x0046, 0x22EF, 0x0086, 0x027D,
1451 0x005A, 0x227F, 0x0026, 0x003A, 0x0046, 0x444D, 0x0086, 0x4CCD, 0x0018, 0x11BF, 0x0026, 0x2EFD, 0x0046,
1452 0x00FE, 0x0086, 0x009C, 0x00CA, 0x223F, 0x0026, 0x00AA, 0x0046, 0x445D, 0x0086, 0x8CCD, 0x0018, 0x00DE,
1453 0x0026, 0x4FFD, 0x0046, 0xABFF, 0x0086, 0x009D, 0x005A, 0x006F, 0x0026, 0x003A, 0x0046, 0x6EFF, 0x0086,
1454 0x88AD, 0x0018, 0x2AAF, 0x0026, 0x8FFD, 0x0046, 0x00EE, 0x0086, 0x888D, 0x00CA, 0x222F, 0x0004, 0x00CA,
1455 0x0088, 0x027D, 0x0004, 0x4CCD, 0x0028, 0x00FE, 0x0004, 0x2AFD, 0x0048, 0x005C, 0x0004, 0x009D, 0x0018,
1456 0x00DE, 0x0004, 0x01BD, 0x0088, 0x006C, 0x0004, 0x88AD, 0x0028, 0x11DF, 0x0004, 0x8AED, 0x0048, 0x003C,
1457 0x0004, 0x888D, 0x0018, 0x111F, 0x0004, 0x00CA, 0x0088, 0x006D, 0x0004, 0x88CD, 0x0028, 0x88FF, 0x0004,
1458 0x8BFD, 0x0048, 0x444D, 0x0004, 0x009C, 0x0018, 0x00BE, 0x0004, 0x4EFD, 0x0088, 0x445D, 0x0004, 0x00AC,
1459 0x0028, 0x00EE, 0x0004, 0x45DD, 0x0048, 0x222D, 0x0004, 0x003D, 0x0018, 0x007E, 0x0004, 0x00CA, 0x0088,
1460 0x027D, 0x0004, 0x4CCD, 0x0028, 0x1FFF, 0x0004, 0x2AFD, 0x0048, 0x005C, 0x0004, 0x009D, 0x0018, 0x11BF,
1461 0x0004, 0x01BD, 0x0088, 0x006C, 0x0004, 0x88AD, 0x0028, 0x22EF, 0x0004, 0x8AED, 0x0048, 0x003C, 0x0004,
1462 0x888D, 0x0018, 0x227F, 0x0004, 0x00CA, 0x0088, 0x006D, 0x0004, 0x88CD, 0x0028, 0x4EEF, 0x0004, 0x8BFD,
1463 0x0048, 0x444D, 0x0004, 0x009C, 0x0018, 0x2AAF, 0x0004, 0x4EFD, 0x0088, 0x445D, 0x0004, 0x00AC, 0x0028,
1464 0x8DDF, 0x0004, 0x45DD, 0x0048, 0x222D, 0x0004, 0x003D, 0x0018, 0x155F, 0x0004, 0x005A, 0x0088, 0x006C,
1465 0x0004, 0x88DD, 0x0028, 0x23FF, 0x0004, 0x11FD, 0x0048, 0x444D, 0x0004, 0x00AD, 0x0018, 0x00BE, 0x0004,
1466 0x137D, 0x0088, 0x155D, 0x0004, 0x00CC, 0x0028, 0x00DE, 0x0004, 0x02ED, 0x0048, 0x111D, 0x0004, 0x009D,
1467 0x0018, 0x007E, 0x0004, 0x005A, 0x0088, 0x455D, 0x0004, 0x44CD, 0x0028, 0x00EE, 0x0004, 0x1FFD, 0x0048,
1468 0x003C, 0x0004, 0x00AC, 0x0018, 0x555F, 0x0004, 0x47FD, 0x0088, 0x113D, 0x0004, 0x02BD, 0x0028, 0x477F,
1469 0x0004, 0x4CDD, 0x0048, 0x8FFF, 0x0004, 0x009C, 0x0018, 0x222F, 0x0004, 0x005A, 0x0088, 0x006C, 0x0004,
1470 0x88DD, 0x0028, 0x00FE, 0x0004, 0x11FD, 0x0048, 0x444D, 0x0004, 0x00AD, 0x0018, 0x888F, 0x0004, 0x137D,
1471 0x0088, 0x155D, 0x0004, 0x00CC, 0x0028, 0x8CCF, 0x0004, 0x02ED, 0x0048, 0x111D, 0x0004, 0x009D, 0x0018,
1472 0x006F, 0x0004, 0x005A, 0x0088, 0x455D, 0x0004, 0x44CD, 0x0028, 0x1DDF, 0x0004, 0x1FFD, 0x0048, 0x003C,
1473 0x0004, 0x00AC, 0x0018, 0x227F, 0x0004, 0x47FD, 0x0088, 0x113D, 0x0004, 0x02BD, 0x0028, 0x22BF, 0x0004,
1474 0x4CDD, 0x0048, 0x22EF, 0x0004, 0x009C, 0x0018, 0x233F, 0x0006, 0x4DDD, 0x4FFB, 0xCFFF, 0x0018, 0x113D,
1475 0x005A, 0x888F, 0x0006, 0x23BD, 0x008A, 0x00EE, 0x002A, 0x155D, 0xAAFD, 0x277F, 0x0006, 0x44CD, 0x8FFB,
1476 0x44EF, 0x0018, 0x467D, 0x004A, 0x2AAF, 0x0006, 0x00AC, 0x555B, 0x99DF, 0x1FFB, 0x003C, 0x5FFD, 0x266F,
1477 0x0006, 0x1DDD, 0x4FFB, 0x6EFF, 0x0018, 0x177D, 0x005A, 0x1BBF, 0x0006, 0x88AD, 0x008A, 0x5DDF, 0x002A,
1478 0x444D, 0x2FFD, 0x667F, 0x0006, 0x00CC, 0x8FFB, 0x2EEF, 0x0018, 0x455D, 0x004A, 0x119F, 0x0006, 0x009C,
1479 0x555B, 0x8CCF, 0x1FFB, 0x111D, 0x8CED, 0x006E, 0x0006, 0x4DDD, 0x4FFB, 0x3FFF, 0x0018, 0x113D, 0x005A,
1480 0x11BF, 0x0006, 0x23BD, 0x008A, 0x8DDF, 0x002A, 0x155D, 0xAAFD, 0x222F, 0x0006, 0x44CD, 0x8FFB, 0x00FE,
1481 0x0018, 0x467D, 0x004A, 0x899F, 0x0006, 0x00AC, 0x555B, 0x00DE, 0x1FFB, 0x003C, 0x5FFD, 0x446F, 0x0006,
1482 0x1DDD, 0x4FFB, 0x9BFF, 0x0018, 0x177D, 0x005A, 0x00BE, 0x0006, 0x88AD, 0x008A, 0xCDDF, 0x002A, 0x444D,
1483 0x2FFD, 0x007E, 0x0006, 0x00CC, 0x8FFB, 0x4EEF, 0x0018, 0x455D, 0x004A, 0x377F, 0x0006, 0x009C, 0x555B,
1484 0x8BBF, 0x1FFB, 0x111D, 0x8CED, 0x233F, 0x0004, 0x00AA, 0x0088, 0x047D, 0x0004, 0x01DD, 0x0028, 0x11DF,
1485 0x0004, 0x27FD, 0x0048, 0x005C, 0x0004, 0x8AAD, 0x0018, 0x2BBF, 0x0004, 0x009C, 0x0088, 0x006C, 0x0004,
1486 0x00CC, 0x0028, 0x00EE, 0x0004, 0x8CED, 0x0048, 0x222D, 0x0004, 0x888D, 0x0018, 0x007E, 0x0004, 0x00AA,
1487 0x0088, 0x006D, 0x0004, 0x88CD, 0x0028, 0x00FE, 0x0004, 0x19FD, 0x0048, 0x003C, 0x0004, 0x2AAD, 0x0018,
1488 0xAAAF, 0x0004, 0x8BFD, 0x0088, 0x005D, 0x0004, 0x00BD, 0x0028, 0x4CCF, 0x0004, 0x44ED, 0x0048, 0x4FFF,
1489 0x0004, 0x223D, 0x0018, 0x111F, 0x0004, 0x00AA, 0x0088, 0x047D, 0x0004, 0x01DD, 0x0028, 0x99FF, 0x0004,
1490 0x27FD, 0x0048, 0x005C, 0x0004, 0x8AAD, 0x0018, 0x00BE, 0x0004, 0x009C, 0x0088, 0x006C, 0x0004, 0x00CC,
1491 0x0028, 0x00DE, 0x0004, 0x8CED, 0x0048, 0x222D, 0x0004, 0x888D, 0x0018, 0x444F, 0x0004, 0x00AA, 0x0088,
1492 0x006D, 0x0004, 0x88CD, 0x0028, 0x2EEF, 0x0004, 0x19FD, 0x0048, 0x003C, 0x0004, 0x2AAD, 0x0018, 0x447F,
1493 0x0004, 0x8BFD, 0x0088, 0x005D, 0x0004, 0x00BD, 0x0028, 0x009F, 0x0004, 0x44ED, 0x0048, 0x67FF, 0x0004,
1494 0x223D, 0x0018, 0x133F, 0x0006, 0x00CC, 0x008A, 0x9DFF, 0x2FFB, 0x467D, 0x1FFD, 0x99BF, 0x0006, 0x2AAD,
1495 0x002A, 0x66EF, 0x4FFB, 0x005C, 0x2EED, 0x377F, 0x0006, 0x89BD, 0x004A, 0x00FE, 0x8FFB, 0x006C, 0x67FD,
1496 0x889F, 0x0006, 0x888D, 0x001A, 0x5DDF, 0x00AA, 0x222D, 0x89DD, 0x444F, 0x0006, 0x2BBD, 0x008A, 0xCFFF,
1497 0x2FFB, 0x226D, 0x009C, 0x00BE, 0x0006, 0xAAAD, 0x002A, 0x1DDF, 0x4FFB, 0x003C, 0x4DDD, 0x466F, 0x0006,
1498 0x8AAD, 0x004A, 0xAEEF, 0x8FFB, 0x445D, 0x8EED, 0x177F, 0x0006, 0x233D, 0x001A, 0x4CCF, 0x00AA, 0xAFFF,
1499 0x88CD, 0x133F, 0x0006, 0x00CC, 0x008A, 0x77FF, 0x2FFB, 0x467D, 0x1FFD, 0x3BBF, 0x0006, 0x2AAD, 0x002A,
1500 0x00EE, 0x4FFB, 0x005C, 0x2EED, 0x007E, 0x0006, 0x89BD, 0x004A, 0x4EEF, 0x8FFB, 0x006C, 0x67FD, 0x667F,
1501 0x0006, 0x888D, 0x001A, 0x00DE, 0x00AA, 0x222D, 0x89DD, 0x333F, 0x0006, 0x2BBD, 0x008A, 0x57FF, 0x2FFB,
1502 0x226D, 0x009C, 0x199F, 0x0006, 0xAAAD, 0x002A, 0x99DF, 0x4FFB, 0x003C, 0x4DDD, 0x155F, 0x0006, 0x8AAD,
1503 0x004A, 0xCEEF, 0x8FFB, 0x445D, 0x8EED, 0x277F, 0x0006, 0x233D, 0x001A, 0x1BBF, 0x00AA, 0x3FFF, 0x88CD,
1504 0x111F, 0x0006, 0x45DD, 0x2FFB, 0x111D, 0x0018, 0x467D, 0x8FFD, 0xCCCF, 0x0006, 0x19BD, 0x004A, 0x22EF,
1505 0x002A, 0x222D, 0x3FFD, 0x888F, 0x0006, 0x00CC, 0x008A, 0x00FE, 0x0018, 0x115D, 0xCFFD, 0x8AAF, 0x0006,
1506 0x00AC, 0x003A, 0x8CDF, 0x1FFB, 0x133D, 0x66FD, 0x466F, 0x0006, 0x8CCD, 0x2FFB, 0x5FFF, 0x0018, 0x006C,
1507 0x4FFD, 0xABBF, 0x0006, 0x22AD, 0x004A, 0x00EE, 0x002A, 0x233D, 0xAEFD, 0x377F, 0x0006, 0x2BBD, 0x008A,
1508 0x55DF, 0x0018, 0x005C, 0x177D, 0x119F, 0x0006, 0x009C, 0x003A, 0x4CCF, 0x1FFB, 0x333D, 0x8EED, 0x444F,
1509 0x0006, 0x45DD, 0x2FFB, 0x111D, 0x0018, 0x467D, 0x8FFD, 0x99BF, 0x0006, 0x19BD, 0x004A, 0x2EEF, 0x002A,
1510 0x222D, 0x3FFD, 0x667F, 0x0006, 0x00CC, 0x008A, 0x4EEF, 0x0018, 0x115D, 0xCFFD, 0x899F, 0x0006, 0x00AC,
1511 0x003A, 0x00DE, 0x1FFB, 0x133D, 0x66FD, 0x226F, 0x0006, 0x8CCD, 0x2FFB, 0x9BFF, 0x0018, 0x006C, 0x4FFD,
1512 0x00BE, 0x0006, 0x22AD, 0x004A, 0x1DDF, 0x002A, 0x233D, 0xAEFD, 0x007E, 0x0006, 0x2BBD, 0x008A, 0xCEEF,
1513 0x0018, 0x005C, 0x177D, 0x277F, 0x0006, 0x009C, 0x003A, 0x8BBF, 0x1FFB, 0x333D, 0x8EED, 0x455F, 0x1FF9,
1514 0x1DDD, 0xAFFB, 0x00DE, 0x8FF9, 0x001C, 0xFFFB, 0x477F, 0x4FF9, 0x177D, 0x3FFB, 0x3BBF, 0x2FF9, 0xAEEF,
1515 0x8EED, 0x444F, 0x1FF9, 0x22AD, 0x000A, 0x8BBF, 0x8FF9, 0x00FE, 0xCFFD, 0x007E, 0x4FF9, 0x115D, 0x5FFB,
1516 0x577F, 0x2FF9, 0x8DDF, 0x2EED, 0x333F, 0x1FF9, 0x2BBD, 0xAFFB, 0x88CF, 0x8FF9, 0xBFFF, 0xFFFB, 0x377F,
1517 0x4FF9, 0x006D, 0x3FFB, 0x00BE, 0x2FF9, 0x66EF, 0x9FFD, 0x133F, 0x1FF9, 0x009D, 0x000A, 0xABBF, 0x8FF9,
1518 0xDFFF, 0x6FFD, 0x006E, 0x4FF9, 0x002C, 0x5FFB, 0x888F, 0x2FF9, 0xCDDF, 0x4DDD, 0x222F, 0x1FF9, 0x1DDD,
1519 0xAFFB, 0x4CCF, 0x8FF9, 0x001C, 0xFFFB, 0x277F, 0x4FF9, 0x177D, 0x3FFB, 0x99BF, 0x2FF9, 0xCEEF, 0x8EED,
1520 0x004E, 0x1FF9, 0x22AD, 0x000A, 0x00AE, 0x8FF9, 0x7FFF, 0xCFFD, 0x005E, 0x4FF9, 0x115D, 0x5FFB, 0x009E,
1521 0x2FF9, 0x5DDF, 0x2EED, 0x003E, 0x1FF9, 0x2BBD, 0xAFFB, 0x00CE, 0x8FF9, 0xEFFF, 0xFFFB, 0x667F, 0x4FF9,
1522 0x006D, 0x3FFB, 0x8AAF, 0x2FF9, 0x00EE, 0x9FFD, 0x233F, 0x1FF9, 0x009D, 0x000A, 0x1BBF, 0x8FF9, 0x4EEF,
1523 0x6FFD, 0x455F, 0x4FF9, 0x002C, 0x5FFB, 0x008E, 0x2FF9, 0x99DF, 0x4DDD, 0x111F};
static double val(void *priv, double ch)
simple assert() macros that are a bit more flexible than ISO C assert().
#define av_assert2(cond)
assert() equivalent, that does lie in speed critical code.
#define av_assert0(cond)
assert() equivalent, that is always enabled.
#define i(width, name, range_min, range_max)
#define bit(string, value)
common internal and external API header
static const uint8_t bits[8]
#define AVERROR_PATCHWELCOME
Not yet implemented in FFmpeg, patches welcome.
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
JPEG 2000 structures and defines common to encoder and decoder.
#define JPEG2000_CBLK_VSC
static int ff_jpeg2000_ceildivpow2(int a, int b)
static void jpeg2000_decode_magref_segment(uint16_t width, uint16_t block_height, const int stride, uint8_t *magref_segment, uint32_t magref_length, uint8_t pLSB, int32_t *sample_buf, uint8_t *block_states)
See procedure decodeSigPropMag at Rec.
static av_always_inline void jpeg2000_modify_state(int x1, int x2, int stride, int value, uint8_t *block_states)
static av_always_inline void recover_mag_sgn(StateVars *mag_sgn, uint8_t pos, uint16_t q, int32_t m_n[2], int32_t known_1[2], const uint8_t emb_pat_1[2], int32_t v[2][4], int32_t m[2][4], uint8_t *E, uint32_t *mu_n, const uint8_t *Dcup, uint32_t Pcup, uint32_t pLSB)
static av_always_inline void jpeg2000_bitbuf_drop_bits_lsb(StateVars *buf, uint8_t nbits)
Drops bits from lower bits in the bit buffer.
static int jpeg2000_bitbuf_refill_backwards(StateVars *buffer, const uint8_t *array)
Refill the buffer backwards in little endian while skipping over stuffing bits.
static const uint16_t dec_cxt_vlc_table1[1024]
CtxVLC tables (see Rec.
static void jpeg2000_bitbuf_refill_forward(StateVars *buffer, const uint8_t *array, uint32_t length)
Refill the bit-buffer reading new bits going forward in the stream while skipping over stuffed bits.
static int jpeg2000_import_bit(StateVars *stream, const uint8_t *array, uint32_t length)
static av_always_inline uint32_t is_divisible(uint32_t n, uint64_t c)
Given a precomputed c, checks whether n % d == 0.
static void jpeg2000_init_mag_ref(StateVars *s, uint32_t Lref)
static av_always_inline uint8_t vlc_decode_u_suffix(StateVars *vlc_stream, uint8_t suffix, const uint8_t *refill_array)
Decode variable length u-vlc suffix.
static const uint16_t dec_cxt_vlc_table0[1024]
static av_always_inline int jpeg2000_decode_ctx_vlc(const Jpeg2000DecoderContext *s, StateVars *vlc_stream, const uint16_t *table, const uint8_t *Dcup, uint8_t *sig_pat, uint8_t *res_off, uint8_t *emb_pat_k, uint8_t *emb_pat_1, uint8_t pos, uint32_t Pcup, uint16_t context)
Decode prefix codes for VLC segment.
static const uint8_t mel_e[13]
static av_always_inline uint64_t jpeg2000_bitbuf_get_bits_lsb(StateVars *bit_stream, uint8_t nbits, const uint8_t *buf)
Get bits from the bit buffer reading them from the least significant bits moving to the most signific...
static void jpeg2000_init_vlc(StateVars *s, uint32_t Lcup, uint32_t Pcup, const uint8_t *Dcup)
static av_always_inline int jpeg2000_get_state(int x1, int x2, int stride, int shift_by, const uint8_t *block_states)
static av_always_inline int jpeg2000_decode_ht_cleanup_segment(const Jpeg2000DecoderContext *s, Jpeg2000Cblk *cblk, Jpeg2000T1Context *t1, MelDecoderState *mel_state, StateVars *mel_stream, StateVars *vlc_stream, StateVars *mag_sgn_stream, const uint8_t *Dcup, uint32_t Lcup, uint32_t Pcup, uint8_t pLSB, int width, int height, const int stride, int32_t *sample_buf, uint8_t *block_states)
static void jpeg2000_calc_mbr(uint8_t *mbr, const uint16_t i, const uint16_t j, const uint32_t mbr_info, uint8_t causal_cond, uint8_t *block_states, int stride)
static av_always_inline uint8_t vlc_decode_u_extension(StateVars *vlc_stream, uint8_t suffix, const uint8_t *refill_array)
Decode u-vlc extension values.
static av_always_inline uint64_t jpeg2000_bitbuf_get_bits_lsb_forward(StateVars *bit_stream, uint8_t nbits, const uint8_t *buf, uint32_t length)
Get bits from the bit buffer reading them from the least significant bits moving to the most signific...
static void jpeg2000_process_stripes_block(StateVars *sig_prop, int i_s, int j_s, int width, int height, int stride, int pLSB, int32_t *sample_buf, uint8_t *block_states, uint8_t *magref_segment, uint32_t magref_length, uint8_t is_causal)
static void jpeg2000_init_mel_decoder(MelDecoderState *mel_state)
int ff_jpeg2000_decode_htj2k(const Jpeg2000DecoderContext *s, Jpeg2000CodingStyle *codsty, Jpeg2000T1Context *t1, Jpeg2000Cblk *cblk, int width, int height, int M_b, uint8_t roi_shift)
HT Block decoder as specified in Rec.
static int jpeg2000_peek_bit(StateVars *stream, const uint8_t *array, uint32_t length)
static av_always_inline uint64_t precompute_c(uint32_t d)
Precompute the number c used by is_divisible().
static av_noinline void jpeg2000_decode_sigprop_segment(Jpeg2000Cblk *cblk, uint16_t width, uint16_t height, const int stride, uint8_t *magref_segment, uint32_t magref_length, uint8_t pLSB, int32_t *sample_buf, uint8_t *block_states)
See procedure decodeSigPropMag at Rec.
static av_always_inline uint8_t vlc_decode_u_prefix(StateVars *vlc_stream, const uint8_t *refill_array)
Decode variable length u-vlc prefix.
static void jpeg2000_init_zero(StateVars *s)
static av_always_inline int32_t jpeg2000_decode_mag_sgn(StateVars *mag_sgn_stream, int32_t m_n, int32_t i_n, const uint8_t *buf, uint32_t length)
Magnitude and Sign decode procedures.
static void jpeg2000_init_mel(StateVars *s, uint32_t Pcup)
static av_always_inline int jpeg2000_import_magref_bit(StateVars *stream, const uint8_t *array, uint32_t length)
Magref decoding procedures.
static int jpeg2000_decode_sig_emb(const Jpeg2000DecoderContext *s, MelDecoderState *mel_state, StateVars *mel_stream, StateVars *vlc_stream, const uint16_t *vlc_table, const uint8_t *Dcup, uint8_t *sig_pat, uint8_t *res_off, uint8_t *emb_pat_k, uint8_t *emb_pat_1, uint8_t pos, uint16_t context, uint32_t Lcup, uint32_t Pcup)
Signal EMB decode.
static av_always_inline uint64_t jpeg2000_bitbuf_peek_bits_lsb(StateVars *stream, uint8_t nbits)
Look ahead bit buffer without discarding bits.
static int jpeg2000_decode_mel_sym(MelDecoderState *mel_state, StateVars *mel_stream, const uint8_t *Dcup, uint32_t Lcup)
#define u(width, name, range_min, range_max)
Macro definitions for various function/variable attributes.
static const uint16_t mask[17]
void * av_calloc(size_t nmemb, size_t size)
Memory handling functions.
int(* cond)(enum AVPixelFormat pix_fmt)
static const uint16_t table[]
#define avpriv_request_sample(...)
static int array[MAX_W *MAX_W]
static const uint8_t q1[256]