History

avcodec/hqxvlc: Avoid hardcoded RL VLC table

hqxvlc.c contains sort-of run-length VLCs in hardcoded form; they amount to 26688 elements, taking 104KiB. These tables contain many duplicated entries (they are partially created via a RPT_1024 macro). There are actually only 3039 different codes in all tables combined, making this very wasteful. This commit changes this by extracting the underlying entries and creating a (static) RL-VLC. This only costs 3*3039 bytes of .rodata. The resulting table needs only 15630 entries, because our VLC init code uses smaller subtables when possible (for an incomplete code, the negative of the length stored in the VLC code is the number of bits the subtable uses; the hardcoded tables uses a worst-case per table value). Using GET_RL_VLC also gets rid of an unnecessary reload in case a code is too long to be parsed in the first stage.

Andreas Rheinhardt committed 1 year ago

Commit abffd931 parent 49d15df3 files · +829 −1430Browse files

Unified · Split

3 files
  1. libavcodec/hqx.c +9 −12
  2. libavcodec/hqx.h +3 −9
  3. libavcodec/hqxvlc.c +817 −1409
libavcodec/hqx.c+9−12
@@ -97,19 +97,16 @@ static inline void put_blocks(HQXContext *ctx, int plane, · 96 unmodified lines
9797 }
9898
9999 static inline void hqx_get_ac(GetBitContext *gb, const HQXAC *ac,
100− int *run, int *lev)
100+ int *runp, int *lev)
101101 {
102− int val;
103−
104− val = show_bits(gb, ac->lut_bits);
105− if (ac->lut[val].bits == -1) {
106− GetBitContext gb2 = *gb;
107− skip_bits(&gb2, ac->lut_bits);
108− val = ac->lut[val].lev + show_bits(&gb2, ac->extra_bits);
109− }
110− *run = ac->lut[val].run;
111− *lev = ac->lut[val].lev;
112− skip_bits(gb, ac->lut[val].bits);
102+ int level, run;
103+ OPEN_READER(re, gb);
104+
105+ UPDATE_CACHE(re, gb);
106+ GET_RL_VLC(level, run, re, gb, ac->lut, ac->bits, 2, 0);
107+ CLOSE_READER(re, gb);
108+ *runp = run;
109+ *lev = level;
113110 }
114111
115112 static int decode_block(GetBitContext *gb, VLC *vlc,
libavcodec/hqx.h+3−9
@@ -39,15 +39,9 @@ enum HQXACMode { · 38 unmodified lines
3939 NUM_HQX_AC
4040 };
4141
42−typedef struct HQXLUT {
43− int16_t lev;
44− uint8_t run;
45− int8_t bits;
46−} HQXLUT;
47−
4842 typedef struct HQXAC {
49− int lut_bits, extra_bits;
50− const HQXLUT *lut;
43+ int bits;
44+ const RL_VLC_ELEM *lut;
5145 } HQXAC;
5246
5347 struct HQXContext;
@@ -81,7 +75,7 @@ typedef struct HQXContext { · 27 unmodified lines
8175 #define HQX_CBP_VLC_BITS 5
8276 #define HQX_DC_VLC_BITS 9
8377
84−extern const HQXAC ff_hqx_ac[NUM_HQX_AC];
78+extern HQXAC ff_hqx_ac[NUM_HQX_AC];
8579
8680 int ff_hqx_init_vlcs(HQXContext *ctx);
8781
libavcodec/hqxvlc.c+817−1409
@@ -19,6 +19,7 @@ · 18 unmodified lines
1919 */
2020
2121 #include "hqx.h"
22+#include "libavutil/thread.h"
2223
2324 static const uint8_t cbp_vlc_bits[16] = {
2425 0x04, 0x1C, 0x1D, 0x09, 0x1E, 0x0B, 0x1B, 0x08,
@@ -719,1424 +720,790 @@ static const uint8_t dc11_vlc_lens[2048] = { · 694 unmodified lines
719720 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7,
720721 };
721722
722−#define RPT_2(a, b, c) { a, b, c }, { a, b, c }
723−#define RPT_4(a, b, c) RPT_2( a, b, c), RPT_2( a, b, c)
724−#define RPT_8(a, b, c) RPT_4( a, b, c), RPT_4( a, b, c)
725−#define RPT_16(a, b, c) RPT_8( a, b, c), RPT_8( a, b, c)
726−#define RPT_32(a, b, c) RPT_16( a, b, c), RPT_16( a, b, c)
727−#define RPT_64(a, b, c) RPT_32( a, b, c), RPT_32( a, b, c)
728−#define RPT_128(a, b, c) RPT_64( a, b, c), RPT_64( a, b, c)
729−#define RPT_256(a, b, c) RPT_128(a, b, c), RPT_128(a, b, c)
730−#define RPT_512(a, b, c) RPT_256(a, b, c), RPT_256(a, b, c)
731−#define RPT_1024(a, b, c) RPT_512(a, b, c), RPT_512(a, b, c)
732723
733−static const HQXLUT ac0_lut[] = {
734− RPT_64 ( 1, 0, 4 ), RPT_64 ( -1, 0, 4 ),
735− RPT_64 ( 2, 0, 4 ), RPT_64 ( -2, 0, 4 ),
736− RPT_32 ( 3, 0, 5 ), RPT_32 ( -3, 0, 5 ),
737− RPT_32 ( 4, 0, 5 ), RPT_32 ( -4, 0, 5 ),
738− RPT_32 ( 1, 1, 5 ), RPT_32 ( -1, 1, 5 ),
739− RPT_16 ( 5, 0, 6 ), RPT_16 ( -5, 0, 6 ),
740− RPT_16 ( 6, 0, 6 ), RPT_16 ( -6, 0, 6 ),
741− RPT_16 ( 7, 0, 6 ), RPT_16 ( -7, 0, 6 ),
742− RPT_16 ( 8, 0, 6 ), RPT_16 ( -8, 0, 6 ),
743− { 1024, 0, -1 }, { 1056, 0, -1 }, { 1088, 0, -1 }, { 1120, 0, -1 },
744− { 1152, 0, -1 }, { 1184, 0, -1 }, { 1216, 0, -1 }, { 1248, 0, -1 },
745− { 1280, 0, -1 }, { 1312, 0, -1 }, { 1344, 0, -1 }, { 1376, 0, -1 },
746− { 1408, 0, -1 }, { 1440, 0, -1 }, { 1472, 0, -1 }, { 1504, 0, -1 },
747− { 1536, 0, -1 }, { 1568, 0, -1 }, { 1600, 0, -1 }, { 1632, 0, -1 },
748− { 1664, 0, -1 }, { 1696, 0, -1 }, { 1728, 0, -1 }, { 1760, 0, -1 },
749− { 1792, 0, -1 }, { 1824, 0, -1 }, { 1856, 0, -1 }, { 1888, 0, -1 },
750− { 1920, 0, -1 }, { 1952, 0, -1 }, { 1984, 0, -1 }, { 2016, 0, -1 },
751− RPT_32 ( 0, 64, 5 ), RPT_8 ( 9, 0, 7 ),
752− RPT_8 ( -9, 0, 7 ), RPT_8 ( 10, 0, 7 ),
753− RPT_8 ( -10, 0, 7 ), RPT_8 ( 11, 0, 7 ),
754− RPT_8 ( -11, 0, 7 ), RPT_8 ( 12, 0, 7 ),
755− RPT_8 ( -12, 0, 7 ), RPT_8 ( 13, 0, 7 ),
756− RPT_8 ( -13, 0, 7 ), RPT_8 ( 14, 0, 7 ),
757− RPT_8 ( -14, 0, 7 ), RPT_8 ( 2, 1, 7 ),
758− RPT_8 ( -2, 1, 7 ), RPT_8 ( 1, 2, 7 ),
759− RPT_8 ( -1, 2, 7 ), RPT_4 ( 15, 0, 8 ),
760− RPT_4 ( -15, 0, 8 ), RPT_4 ( 16, 0, 8 ),
761− RPT_4 ( -16, 0, 8 ), RPT_4 ( 17, 0, 8 ),
762− RPT_4 ( -17, 0, 8 ), RPT_4 ( 18, 0, 8 ),
763− RPT_4 ( -18, 0, 8 ), RPT_4 ( 19, 0, 8 ),
764− RPT_4 ( -19, 0, 8 ), RPT_4 ( 20, 0, 8 ),
765− RPT_4 ( -20, 0, 8 ), RPT_4 ( 21, 0, 8 ),
766− RPT_4 ( -21, 0, 8 ), RPT_4 ( 3, 1, 8 ),
767− RPT_4 ( -3, 1, 8 ), RPT_4 ( 4, 1, 8 ),
768− RPT_4 ( -4, 1, 8 ), RPT_4 ( 1, 3, 8 ),
769− RPT_4 ( -1, 3, 8 ), RPT_4 ( 1, 4, 8 ),
770− RPT_4 ( -1, 4, 8 ), RPT_4 ( 0, 0, 8 ),
771− RPT_2 ( 22, 0, 9 ), RPT_2 ( -22, 0, 9 ),
772− RPT_2 ( 23, 0, 9 ), RPT_2 ( -23, 0, 9 ),
773− RPT_2 ( 24, 0, 9 ), RPT_2 ( -24, 0, 9 ),
774− RPT_2 ( 25, 0, 9 ), RPT_2 ( -25, 0, 9 ),
775− RPT_2 ( 26, 0, 9 ), RPT_2 ( -26, 0, 9 ),
776− RPT_2 ( 27, 0, 9 ), RPT_2 ( -27, 0, 9 ),
777− RPT_2 ( 28, 0, 9 ), RPT_2 ( -28, 0, 9 ),
778− RPT_2 ( 29, 0, 9 ), RPT_2 ( -29, 0, 9 ),
779− RPT_2 ( 30, 0, 9 ), RPT_2 ( -30, 0, 9 ),
780− RPT_2 ( 31, 0, 9 ), RPT_2 ( -31, 0, 9 ),
781− RPT_2 ( 32, 0, 9 ), RPT_2 ( -32, 0, 9 ),
782− RPT_2 ( 33, 0, 9 ), RPT_2 ( -33, 0, 9 ),
783− RPT_2 ( 5, 1, 9 ), RPT_2 ( -5, 1, 9 ),
784− RPT_2 ( 6, 1, 9 ), RPT_2 ( -6, 1, 9 ),
785− RPT_2 ( 2, 2, 9 ), RPT_2 ( -2, 2, 9 ),
786− RPT_2 ( 1, 5, 9 ), RPT_2 ( -1, 5, 9 ),
787− RPT_2 ( 1, 6, 9 ), RPT_2 ( -1, 6, 9 ),
788− { 34, 0, 10 }, { -34, 0, 10 }, { 35, 0, 10 }, { -35, 0, 10 },
789− { 36, 0, 10 }, { -36, 0, 10 }, { 37, 0, 10 }, { -37, 0, 10 },
790− { 38, 0, 10 }, { -38, 0, 10 }, { 39, 0, 10 }, { -39, 0, 10 },
791− { 40, 0, 10 }, { -40, 0, 10 }, { 41, 0, 10 }, { -41, 0, 10 },
792− { 42, 0, 10 }, { -42, 0, 10 }, { 43, 0, 10 }, { -43, 0, 10 },
793− { 44, 0, 10 }, { -44, 0, 10 }, { 45, 0, 10 }, { -45, 0, 10 },
794− { 46, 0, 10 }, { -46, 0, 10 }, { 47, 0, 10 }, { -47, 0, 10 },
795− { 48, 0, 10 }, { -48, 0, 10 }, { 49, 0, 10 }, { -49, 0, 10 },
796− { 50, 0, 10 }, { -50, 0, 10 }, RPT_2 ( 0, 1, 9 ),
797− { 7, 1, 10 }, { -7, 1, 10 }, { 8, 1, 10 }, { -8, 1, 10 },
798− { 9, 1, 10 }, { -9, 1, 10 }, { 10, 1, 10 }, { -10, 1, 10 },
799− RPT_2 ( 0, 2, 9 ), { 3, 2, 10 }, { -3, 2, 10 },
800− RPT_2 ( 0, 3, 9 ), { 2, 3, 10 }, { -2, 3, 10 },
801− { 1, 7, 10 }, { -1, 7, 10 }, { 1, 8, 10 }, { -1, 8, 10 },
802− { 2048, 0, -1 }, { 2080, 0, -1 }, { 2112, 0, -1 }, { 2144, 0, -1 },
803− { 2176, 0, -1 }, { 2208, 0, -1 }, { 2240, 0, -1 }, { 2272, 0, -1 },
804− { 2304, 0, -1 }, { 2336, 0, -1 }, { 2368, 0, -1 }, { 2400, 0, -1 },
805− { 2432, 0, -1 }, { 2464, 0, -1 }, { 2496, 0, -1 }, { 2528, 0, -1 },
806− { 2560, 0, -1 }, { 2592, 0, -1 }, { 2624, 0, -1 }, { 2656, 0, -1 },
807− { 2688, 0, -1 }, { 2720, 0, -1 }, { 2752, 0, -1 }, { 0, 4, 10 },
808− { 2784, 0, -1 }, { 0, 5, 10 }, { 0, 6, 10 }, { 2816, 0, -1 },
809− { 2848, 0, -1 }, { 2880, 0, -1 }, { 2912, 0, -1 }, { 2944, 0, -1 },
810− { 2976, 0, -1 }, { 3008, 0, -1 }, { 3040, 0, -1 }, { 3072, 0, -1 },
811− { 3104, 0, -1 }, { 3136, 0, -1 }, { 3168, 0, -1 }, { 3200, 0, -1 },
812− RPT_4 ( 0, 0, 13 ), RPT_2 ( 1, 0, 14 ),
813− RPT_2 ( -1, 0, 14 ), RPT_2 ( 2, 0, 14 ),
814− RPT_2 ( -2, 0, 14 ), RPT_2 ( 3, 0, 14 ),
815− RPT_2 ( -3, 0, 14 ), RPT_2 ( 4, 0, 14 ),
816− RPT_2 ( -4, 0, 14 ), RPT_2 ( 5, 0, 14 ),
817− RPT_2 ( -5, 0, 14 ), RPT_2 ( 6, 0, 14 ),
818− RPT_2 ( -6, 0, 14 ), RPT_2 ( 7, 0, 14 ),
819− RPT_2 ( -7, 0, 14 ), RPT_2 ( 8, 0, 14 ),
820− RPT_2 ( -8, 0, 14 ), RPT_2 ( 9, 0, 14 ),
821− RPT_2 ( -9, 0, 14 ), RPT_2 ( 10, 0, 14 ),
822− RPT_2 ( -10, 0, 14 ), RPT_2 ( 11, 0, 14 ),
823− RPT_2 ( -11, 0, 14 ), RPT_2 ( 12, 0, 14 ),
824− RPT_2 ( -12, 0, 14 ), RPT_2 ( 13, 0, 14 ),
825− RPT_2 ( -13, 0, 14 ), RPT_2 ( 14, 0, 14 ),
826− RPT_2 ( -14, 0, 14 ), RPT_2 ( 15, 0, 14 ),
827− RPT_2 ( -15, 0, 14 ), RPT_2 ( 16, 0, 14 ),
828− RPT_2 ( -16, 0, 14 ), RPT_2 ( 17, 0, 14 ),
829− RPT_2 ( -17, 0, 14 ), RPT_2 ( 18, 0, 14 ),
830− RPT_2 ( -18, 0, 14 ), RPT_2 ( 19, 0, 14 ),
831− RPT_2 ( -19, 0, 14 ), RPT_2 ( 20, 0, 14 ),
832− RPT_2 ( -20, 0, 14 ), RPT_2 ( 21, 0, 14 ),
833− RPT_2 ( -21, 0, 14 ), RPT_2 ( 22, 0, 14 ),
834− RPT_2 ( -22, 0, 14 ), RPT_2 ( 23, 0, 14 ),
835− RPT_2 ( -23, 0, 14 ), RPT_2 ( 24, 0, 14 ),
836− RPT_2 ( -24, 0, 14 ), RPT_2 ( 25, 0, 14 ),
837− RPT_2 ( -25, 0, 14 ), RPT_2 ( 26, 0, 14 ),
838− RPT_2 ( -26, 0, 14 ), RPT_2 ( 27, 0, 14 ),
839− RPT_2 ( -27, 0, 14 ), RPT_2 ( 28, 0, 14 ),
840− RPT_2 ( -28, 0, 14 ), RPT_2 ( 29, 0, 14 ),
841− RPT_2 ( -29, 0, 14 ), RPT_2 ( 30, 0, 14 ),
842− RPT_2 ( -30, 0, 14 ), RPT_2 ( 31, 0, 14 ),
843− RPT_2 ( -31, 0, 14 ), RPT_2 ( 32, 0, 14 ),
844− RPT_2 ( -32, 0, 14 ), RPT_2 ( 33, 0, 14 ),
845− RPT_2 ( -33, 0, 14 ), RPT_2 ( 34, 0, 14 ),
846− RPT_2 ( -34, 0, 14 ), RPT_2 ( 35, 0, 14 ),
847− RPT_2 ( -35, 0, 14 ), RPT_2 ( 36, 0, 14 ),
848− RPT_2 ( -36, 0, 14 ), RPT_2 ( 37, 0, 14 ),
849− RPT_2 ( -37, 0, 14 ), RPT_2 ( 38, 0, 14 ),
850− RPT_2 ( -38, 0, 14 ), RPT_2 ( 39, 0, 14 ),
851− RPT_2 ( -39, 0, 14 ), RPT_2 ( 40, 0, 14 ),
852− RPT_2 ( -40, 0, 14 ), RPT_2 ( 41, 0, 14 ),
853− RPT_2 ( -41, 0, 14 ), RPT_2 ( 42, 0, 14 ),
854− RPT_2 ( -42, 0, 14 ), RPT_2 ( 43, 0, 14 ),
855− RPT_2 ( -43, 0, 14 ), RPT_2 ( 44, 0, 14 ),
856− RPT_2 ( -44, 0, 14 ), RPT_2 ( 45, 0, 14 ),
857− RPT_2 ( -45, 0, 14 ), RPT_2 ( 46, 0, 14 ),
858− RPT_2 ( -46, 0, 14 ), RPT_2 ( 47, 0, 14 ),
859− RPT_2 ( -47, 0, 14 ), RPT_2 ( 48, 0, 14 ),
860− RPT_2 ( -48, 0, 14 ), RPT_2 ( 49, 0, 14 ),
861− RPT_2 ( -49, 0, 14 ), RPT_2 ( 50, 0, 14 ),
862− RPT_2 ( -50, 0, 14 ), RPT_2 ( 51, 0, 14 ),
863− RPT_2 ( -51, 0, 14 ), RPT_2 ( 52, 0, 14 ),
864− RPT_2 ( -52, 0, 14 ), RPT_2 ( 53, 0, 14 ),
865− RPT_2 ( -53, 0, 14 ), RPT_2 ( 54, 0, 14 ),
866− RPT_2 ( -54, 0, 14 ), RPT_2 ( 55, 0, 14 ),
867− RPT_2 ( -55, 0, 14 ), RPT_2 ( 56, 0, 14 ),
868− RPT_2 ( -56, 0, 14 ), RPT_2 ( 57, 0, 14 ),
869− RPT_2 ( -57, 0, 14 ), RPT_2 ( 58, 0, 14 ),
870− RPT_2 ( -58, 0, 14 ), RPT_2 ( 59, 0, 14 ),
871− RPT_2 ( -59, 0, 14 ), RPT_2 ( 60, 0, 14 ),
872− RPT_2 ( -60, 0, 14 ), RPT_2 ( 61, 0, 14 ),
873− RPT_2 ( -61, 0, 14 ), RPT_2 ( 62, 0, 14 ),
874− RPT_2 ( -62, 0, 14 ), RPT_2 ( 63, 0, 14 ),
875− RPT_2 ( -63, 0, 14 ), RPT_2 ( 64, 0, 14 ),
876− RPT_2 ( -64, 0, 14 ), RPT_2 ( 65, 0, 14 ),
877− RPT_2 ( -65, 0, 14 ), RPT_2 ( 66, 0, 14 ),
878− RPT_2 ( -66, 0, 14 ), RPT_2 ( 67, 0, 14 ),
879− RPT_2 ( -67, 0, 14 ), RPT_2 ( 68, 0, 14 ),
880− RPT_2 ( -68, 0, 14 ), RPT_2 ( 69, 0, 14 ),
881− RPT_2 ( -69, 0, 14 ), RPT_2 ( 70, 0, 14 ),
882− RPT_2 ( -70, 0, 14 ), RPT_2 ( 71, 0, 14 ),
883− RPT_2 ( -71, 0, 14 ), RPT_2 ( 72, 0, 14 ),
884− RPT_2 ( -72, 0, 14 ), RPT_2 ( 73, 0, 14 ),
885− RPT_2 ( -73, 0, 14 ), RPT_2 ( 74, 0, 14 ),
886− RPT_2 ( -74, 0, 14 ), RPT_2 ( 75, 0, 14 ),
887− RPT_2 ( -75, 0, 14 ), RPT_2 ( 76, 0, 14 ),
888− RPT_2 ( -76, 0, 14 ), RPT_2 ( 77, 0, 14 ),
889− RPT_2 ( -77, 0, 14 ), RPT_2 ( 78, 0, 14 ),
890− RPT_2 ( -78, 0, 14 ), RPT_2 ( 79, 0, 14 ),
891− RPT_2 ( -79, 0, 14 ), RPT_2 ( 80, 0, 14 ),
892− RPT_2 ( -80, 0, 14 ), RPT_2 ( 81, 0, 14 ),
893− RPT_2 ( -81, 0, 14 ), RPT_2 ( 82, 0, 14 ),
894− RPT_2 ( -82, 0, 14 ), RPT_2 ( 83, 0, 14 ),
895− RPT_2 ( -83, 0, 14 ), RPT_2 ( 84, 0, 14 ),
896− RPT_2 ( -84, 0, 14 ), RPT_2 ( 85, 0, 14 ),
897− RPT_2 ( -85, 0, 14 ), RPT_2 ( 86, 0, 14 ),
898− RPT_2 ( -86, 0, 14 ), RPT_2 ( 87, 0, 14 ),
899− RPT_2 ( -87, 0, 14 ), RPT_2 ( 88, 0, 14 ),
900− RPT_2 ( -88, 0, 14 ), RPT_2 ( 89, 0, 14 ),
901− RPT_2 ( -89, 0, 14 ), RPT_2 ( 90, 0, 14 ),
902− RPT_2 ( -90, 0, 14 ), RPT_2 ( 91, 0, 14 ),
903− RPT_2 ( -91, 0, 14 ), RPT_2 ( 92, 0, 14 ),
904− RPT_2 ( -92, 0, 14 ), RPT_2 ( 93, 0, 14 ),
905− RPT_2 ( -93, 0, 14 ), RPT_2 ( 94, 0, 14 ),
906− RPT_2 ( -94, 0, 14 ), RPT_2 ( 95, 0, 14 ),
907− RPT_2 ( -95, 0, 14 ), RPT_2 ( 96, 0, 14 ),
908− RPT_2 ( -96, 0, 14 ), RPT_2 ( 97, 0, 14 ),
909− RPT_2 ( -97, 0, 14 ), RPT_2 ( 98, 0, 14 ),
910− RPT_2 ( -98, 0, 14 ), RPT_2 ( 99, 0, 14 ),
911− RPT_2 ( -99, 0, 14 ), RPT_2 ( 100, 0, 14 ),
912− RPT_2 (-100, 0, 14 ), RPT_2 ( 101, 0, 14 ),
913− RPT_2 (-101, 0, 14 ), RPT_2 ( 102, 0, 14 ),
914− RPT_2 (-102, 0, 14 ), RPT_2 ( 103, 0, 14 ),
915− RPT_2 (-103, 0, 14 ), RPT_2 ( 104, 0, 14 ),
916− RPT_2 (-104, 0, 14 ), RPT_2 ( 105, 0, 14 ),
917− RPT_2 (-105, 0, 14 ), RPT_2 ( 106, 0, 14 ),
918− RPT_2 (-106, 0, 14 ), RPT_2 ( 107, 0, 14 ),
919− RPT_2 (-107, 0, 14 ), RPT_2 ( 108, 0, 14 ),
920− RPT_2 (-108, 0, 14 ), RPT_2 ( 109, 0, 14 ),
921− RPT_2 (-109, 0, 14 ), RPT_2 ( 110, 0, 14 ),
922− RPT_2 (-110, 0, 14 ), RPT_2 ( 111, 0, 14 ),
923− RPT_2 (-111, 0, 14 ), RPT_2 ( 112, 0, 14 ),
924− RPT_2 (-112, 0, 14 ), RPT_2 ( 113, 0, 14 ),
925− RPT_2 (-113, 0, 14 ), RPT_2 ( 114, 0, 14 ),
926− RPT_2 (-114, 0, 14 ), RPT_2 ( 115, 0, 14 ),
927− RPT_2 (-115, 0, 14 ), RPT_2 ( 116, 0, 14 ),
928− RPT_2 (-116, 0, 14 ), RPT_2 ( 117, 0, 14 ),
929− RPT_2 (-117, 0, 14 ), RPT_2 ( 118, 0, 14 ),
930− RPT_2 (-118, 0, 14 ), RPT_2 ( 119, 0, 14 ),
931− RPT_2 (-119, 0, 14 ), RPT_2 ( 120, 0, 14 ),
932− RPT_2 (-120, 0, 14 ), RPT_2 ( 121, 0, 14 ),
933− RPT_2 (-121, 0, 14 ), RPT_2 ( 122, 0, 14 ),
934− RPT_2 (-122, 0, 14 ), RPT_2 ( 123, 0, 14 ),
935− RPT_2 (-123, 0, 14 ), RPT_2 ( 124, 0, 14 ),
936− RPT_2 (-124, 0, 14 ), RPT_2 ( 125, 0, 14 ),
937− RPT_2 (-125, 0, 14 ), RPT_2 ( 126, 0, 14 ),
938− RPT_2 (-126, 0, 14 ), RPT_2 ( 127, 0, 14 ),
939− RPT_2 (-127, 0, 14 ), RPT_2 ( 128, 0, 14 ),
940− RPT_2 (-128, 0, 14 ), RPT_2 ( 129, 0, 14 ),
941− RPT_2 (-129, 0, 14 ), RPT_2 ( 130, 0, 14 ),
942− RPT_2 (-130, 0, 14 ), RPT_2 ( 131, 0, 14 ),
943− RPT_2 (-131, 0, 14 ), RPT_2 ( 132, 0, 14 ),
944− RPT_2 (-132, 0, 14 ), RPT_2 ( 133, 0, 14 ),
945− RPT_2 (-133, 0, 14 ), RPT_2 ( 134, 0, 14 ),
946− RPT_2 (-134, 0, 14 ), RPT_2 ( 135, 0, 14 ),
947− RPT_2 (-135, 0, 14 ), RPT_2 ( 136, 0, 14 ),
948− RPT_2 (-136, 0, 14 ), RPT_2 ( 137, 0, 14 ),
949− RPT_2 (-137, 0, 14 ), RPT_2 ( 138, 0, 14 ),
950− RPT_2 (-138, 0, 14 ), RPT_2 ( 139, 0, 14 ),
951− RPT_2 (-139, 0, 14 ), RPT_2 ( 140, 0, 14 ),
952− RPT_2 (-140, 0, 14 ), RPT_2 ( 141, 0, 14 ),
953− RPT_2 (-141, 0, 14 ), RPT_2 ( 142, 0, 14 ),
954− RPT_2 (-142, 0, 14 ), RPT_2 ( 143, 0, 14 ),
955− RPT_2 (-143, 0, 14 ), RPT_2 ( 144, 0, 14 ),
956− RPT_2 (-144, 0, 14 ), RPT_2 ( 145, 0, 14 ),
957− RPT_2 (-145, 0, 14 ), RPT_2 ( 146, 0, 14 ),
958− RPT_2 (-146, 0, 14 ), RPT_2 ( 147, 0, 14 ),
959− RPT_2 (-147, 0, 14 ), RPT_2 ( 148, 0, 14 ),
960− RPT_2 (-148, 0, 14 ), RPT_2 ( 149, 0, 14 ),
961− RPT_2 (-149, 0, 14 ), RPT_2 ( 150, 0, 14 ),
962− RPT_2 (-150, 0, 14 ), RPT_2 ( 151, 0, 14 ),
963− RPT_2 (-151, 0, 14 ), RPT_2 ( 152, 0, 14 ),
964− RPT_2 (-152, 0, 14 ), RPT_2 ( 153, 0, 14 ),
965− RPT_2 (-153, 0, 14 ), RPT_2 ( 154, 0, 14 ),
966− RPT_2 (-154, 0, 14 ), RPT_2 ( 155, 0, 14 ),
967− RPT_2 (-155, 0, 14 ), RPT_2 ( 156, 0, 14 ),
968− RPT_2 (-156, 0, 14 ), RPT_2 ( 157, 0, 14 ),
969− RPT_2 (-157, 0, 14 ), RPT_2 ( 158, 0, 14 ),
970− RPT_2 (-158, 0, 14 ), RPT_2 ( 159, 0, 14 ),
971− RPT_2 (-159, 0, 14 ), RPT_2 ( 160, 0, 14 ),
972− RPT_2 (-160, 0, 14 ), RPT_2 ( 161, 0, 14 ),
973− RPT_2 (-161, 0, 14 ), RPT_2 ( 162, 0, 14 ),
974− RPT_2 (-162, 0, 14 ), RPT_2 ( 163, 0, 14 ),
975− RPT_2 (-163, 0, 14 ), RPT_2 ( 164, 0, 14 ),
976− RPT_2 (-164, 0, 14 ), RPT_2 ( 165, 0, 14 ),
977− RPT_2 (-165, 0, 14 ), RPT_2 ( 166, 0, 14 ),
978− RPT_2 (-166, 0, 14 ), RPT_2 ( 167, 0, 14 ),
979− RPT_2 (-167, 0, 14 ), RPT_2 ( 168, 0, 14 ),
980− RPT_2 (-168, 0, 14 ), RPT_2 ( 169, 0, 14 ),
981− RPT_2 (-169, 0, 14 ), RPT_2 ( 170, 0, 14 ),
982− RPT_2 (-170, 0, 14 ), RPT_2 ( 171, 0, 14 ),
983− RPT_2 (-171, 0, 14 ), RPT_2 ( 172, 0, 14 ),
984− RPT_2 (-172, 0, 14 ), RPT_2 ( 173, 0, 14 ),
985− RPT_2 (-173, 0, 14 ), RPT_2 ( 174, 0, 14 ),
986− RPT_2 (-174, 0, 14 ), RPT_2 ( 175, 0, 14 ),
987− RPT_2 (-175, 0, 14 ), RPT_2 ( 176, 0, 14 ),
988− RPT_2 (-176, 0, 14 ), RPT_2 ( 177, 0, 14 ),
989− RPT_2 (-177, 0, 14 ), RPT_2 ( 178, 0, 14 ),
990− RPT_2 (-178, 0, 14 ), RPT_2 ( 179, 0, 14 ),
991− RPT_2 (-179, 0, 14 ), RPT_2 ( 180, 0, 14 ),
992− RPT_2 (-180, 0, 14 ), RPT_2 ( 181, 0, 14 ),
993− RPT_2 (-181, 0, 14 ), RPT_2 ( 182, 0, 14 ),
994− RPT_2 (-182, 0, 14 ), RPT_2 ( 183, 0, 14 ),
995− RPT_2 (-183, 0, 14 ), RPT_2 ( 184, 0, 14 ),
996− RPT_2 (-184, 0, 14 ), RPT_2 ( 185, 0, 14 ),
997− RPT_2 (-185, 0, 14 ), RPT_2 ( 186, 0, 14 ),
998− RPT_2 (-186, 0, 14 ), RPT_2 ( 187, 0, 14 ),
999− RPT_2 (-187, 0, 14 ), RPT_2 ( 188, 0, 14 ),
1000− RPT_2 (-188, 0, 14 ), RPT_2 ( 189, 0, 14 ),
1001− RPT_2 (-189, 0, 14 ), RPT_2 ( 190, 0, 14 ),
1002− RPT_2 (-190, 0, 14 ), RPT_2 ( 191, 0, 14 ),
1003− RPT_2 (-191, 0, 14 ), RPT_2 ( 192, 0, 14 ),
1004− RPT_2 (-192, 0, 14 ), RPT_2 ( 193, 0, 14 ),
1005− RPT_2 (-193, 0, 14 ), RPT_2 ( 194, 0, 14 ),
1006− RPT_2 (-194, 0, 14 ), RPT_2 ( 195, 0, 14 ),
1007− RPT_2 (-195, 0, 14 ), RPT_2 ( 196, 0, 14 ),
1008− RPT_2 (-196, 0, 14 ), RPT_2 ( 197, 0, 14 ),
1009− RPT_2 (-197, 0, 14 ), RPT_2 ( 198, 0, 14 ),
1010− RPT_2 (-198, 0, 14 ), RPT_2 ( 199, 0, 14 ),
1011− RPT_2 (-199, 0, 14 ), RPT_2 ( 200, 0, 14 ),
1012− RPT_2 (-200, 0, 14 ), RPT_2 ( 201, 0, 14 ),
1013− RPT_2 (-201, 0, 14 ), RPT_2 ( 202, 0, 14 ),
1014− RPT_2 (-202, 0, 14 ), RPT_2 ( 203, 0, 14 ),
1015− RPT_2 (-203, 0, 14 ), RPT_2 ( 204, 0, 14 ),
1016− RPT_2 (-204, 0, 14 ), RPT_2 ( 205, 0, 14 ),
1017− RPT_2 (-205, 0, 14 ), RPT_2 ( 206, 0, 14 ),
1018− RPT_2 (-206, 0, 14 ), RPT_2 ( 207, 0, 14 ),
1019− RPT_2 (-207, 0, 14 ), RPT_2 ( 208, 0, 14 ),
1020− RPT_2 (-208, 0, 14 ), RPT_2 ( 209, 0, 14 ),
1021− RPT_2 (-209, 0, 14 ), RPT_2 ( 210, 0, 14 ),
1022− RPT_2 (-210, 0, 14 ), RPT_2 ( 211, 0, 14 ),
1023− RPT_2 (-211, 0, 14 ), RPT_2 ( 212, 0, 14 ),
1024− RPT_2 (-212, 0, 14 ), RPT_2 ( 213, 0, 14 ),
1025− RPT_2 (-213, 0, 14 ), RPT_2 ( 214, 0, 14 ),
1026− RPT_2 (-214, 0, 14 ), RPT_2 ( 215, 0, 14 ),
1027− RPT_2 (-215, 0, 14 ), RPT_2 ( 216, 0, 14 ),
1028− RPT_2 (-216, 0, 14 ), RPT_2 ( 217, 0, 14 ),
1029− RPT_2 (-217, 0, 14 ), RPT_2 ( 218, 0, 14 ),
1030− RPT_2 (-218, 0, 14 ), RPT_2 ( 219, 0, 14 ),
1031− RPT_2 (-219, 0, 14 ), RPT_2 ( 220, 0, 14 ),
1032− RPT_2 (-220, 0, 14 ), RPT_2 ( 221, 0, 14 ),
1033− RPT_2 (-221, 0, 14 ), RPT_2 ( 222, 0, 14 ),
1034− RPT_2 (-222, 0, 14 ), RPT_2 ( 223, 0, 14 ),
1035− RPT_2 (-223, 0, 14 ), RPT_2 ( 224, 0, 14 ),
1036− RPT_2 (-224, 0, 14 ), RPT_2 ( 225, 0, 14 ),
1037− RPT_2 (-225, 0, 14 ), RPT_2 ( 226, 0, 14 ),
1038− RPT_2 (-226, 0, 14 ), RPT_2 ( 227, 0, 14 ),
1039− RPT_2 (-227, 0, 14 ), RPT_2 ( 228, 0, 14 ),
1040− RPT_2 (-228, 0, 14 ), RPT_2 ( 229, 0, 14 ),
1041− RPT_2 (-229, 0, 14 ), RPT_2 ( 230, 0, 14 ),
1042− RPT_2 (-230, 0, 14 ), RPT_2 ( 231, 0, 14 ),
1043− RPT_2 (-231, 0, 14 ), RPT_2 ( 232, 0, 14 ),
1044− RPT_2 (-232, 0, 14 ), RPT_2 ( 233, 0, 14 ),
1045− RPT_2 (-233, 0, 14 ), RPT_2 ( 234, 0, 14 ),
1046− RPT_2 (-234, 0, 14 ), RPT_2 ( 235, 0, 14 ),
1047− RPT_2 (-235, 0, 14 ), RPT_2 ( 236, 0, 14 ),
1048− RPT_2 (-236, 0, 14 ), RPT_2 ( 237, 0, 14 ),
1049− RPT_2 (-237, 0, 14 ), RPT_2 ( 238, 0, 14 ),
1050− RPT_2 (-238, 0, 14 ), RPT_2 ( 239, 0, 14 ),
1051− RPT_2 (-239, 0, 14 ), RPT_2 ( 240, 0, 14 ),
1052− RPT_2 (-240, 0, 14 ), RPT_2 ( 241, 0, 14 ),
1053− RPT_2 (-241, 0, 14 ), RPT_2 ( 242, 0, 14 ),
1054− RPT_2 (-242, 0, 14 ), RPT_2 ( 243, 0, 14 ),
1055− RPT_2 (-243, 0, 14 ), RPT_2 ( 244, 0, 14 ),
1056− RPT_2 (-244, 0, 14 ), RPT_2 ( 245, 0, 14 ),
1057− RPT_2 (-245, 0, 14 ), RPT_2 ( 246, 0, 14 ),
1058− RPT_2 (-246, 0, 14 ), RPT_2 ( 247, 0, 14 ),
1059− RPT_2 (-247, 0, 14 ), RPT_2 ( 248, 0, 14 ),
1060− RPT_2 (-248, 0, 14 ), RPT_2 ( 249, 0, 14 ),
1061− RPT_2 (-249, 0, 14 ), RPT_2 ( 250, 0, 14 ),
1062− RPT_2 (-250, 0, 14 ), RPT_2 ( 251, 0, 14 ),
1063− RPT_2 (-251, 0, 14 ), RPT_2 ( 252, 0, 14 ),
1064− RPT_2 (-252, 0, 14 ), RPT_2 ( 253, 0, 14 ),
1065− RPT_2 (-253, 0, 14 ), RPT_2 ( 254, 0, 14 ),
1066− RPT_2 (-254, 0, 14 ), RPT_2 ( 255, 0, 14 ),
1067− RPT_2 (-255, 0, 14 ), { 0, 0, 15 }, { 0, 1, 15 },
1068− { 0, 2, 15 }, { 0, 3, 15 }, { 0, 4, 15 }, { 0, 5, 15 },
1069− { 0, 6, 15 }, { 0, 7, 15 }, { 0, 8, 15 }, { 0, 9, 15 },
1070− { 0, 10, 15 }, { 0, 11, 15 }, { 0, 12, 15 }, { 0, 13, 15 },
1071− { 0, 14, 15 }, { 0, 15, 15 }, { 0, 16, 15 }, { 0, 17, 15 },
1072− { 0, 18, 15 }, { 0, 19, 15 }, { 0, 20, 15 }, { 0, 21, 15 },
1073− { 0, 22, 15 }, { 0, 23, 15 }, { 0, 24, 15 }, { 0, 25, 15 },
1074− { 0, 26, 15 }, { 0, 27, 15 }, { 0, 28, 15 }, { 0, 29, 15 },
1075− { 0, 30, 15 }, { 0, 31, 15 }, { 0, 32, 15 }, { 0, 33, 15 },
1076− { 0, 34, 15 }, { 0, 35, 15 }, { 0, 36, 15 }, { 0, 37, 15 },
1077− { 0, 38, 15 }, { 0, 39, 15 }, { 0, 40, 15 }, { 0, 41, 15 },
1078− { 0, 42, 15 }, { 0, 43, 15 }, { 0, 44, 15 }, { 0, 45, 15 },
1079− { 0, 46, 15 }, { 0, 47, 15 }, { 0, 48, 15 }, { 0, 49, 15 },
1080− { 0, 50, 15 }, { 0, 51, 15 }, { 0, 52, 15 }, { 0, 53, 15 },
1081− { 0, 54, 15 }, { 0, 55, 15 }, { 0, 56, 15 }, { 0, 57, 15 },
1082− { 0, 58, 15 }, { 0, 59, 15 }, { 0, 60, 15 }, { 0, 61, 15 },
1083− { 0, 62, 15 }, { 0, 63, 15 }, RPT_16 ( 51, 0, 11 ),
1084− RPT_16 ( -51, 0, 11 ), RPT_16 ( 52, 0, 11 ),
1085− RPT_16 ( -52, 0, 11 ), RPT_16 ( 53, 0, 11 ),
1086− RPT_16 ( -53, 0, 11 ), RPT_16 ( 54, 0, 11 ),
1087− RPT_16 ( -54, 0, 11 ), RPT_16 ( 55, 0, 11 ),
1088− RPT_16 ( -55, 0, 11 ), RPT_16 ( 56, 0, 11 ),
1089− RPT_16 ( -56, 0, 11 ), RPT_16 ( 57, 0, 11 ),
1090− RPT_16 ( -57, 0, 11 ), RPT_16 ( 58, 0, 11 ),
1091− RPT_16 ( -58, 0, 11 ), RPT_16 ( 59, 0, 11 ),
1092− RPT_16 ( -59, 0, 11 ), RPT_16 ( 60, 0, 11 ),
1093− RPT_16 ( -60, 0, 11 ), RPT_16 ( 61, 0, 11 ),
1094− RPT_16 ( -61, 0, 11 ), RPT_16 ( 62, 0, 11 ),
1095− RPT_16 ( -62, 0, 11 ), RPT_16 ( 63, 0, 11 ),
1096− RPT_16 ( -63, 0, 11 ), RPT_16 ( 11, 1, 11 ),
1097− RPT_16 ( -11, 1, 11 ), RPT_16 ( 12, 1, 11 ),
1098− RPT_16 ( -12, 1, 11 ), RPT_16 ( 13, 1, 11 ),
1099− RPT_16 ( -13, 1, 11 ), RPT_16 ( 14, 1, 11 ),
1100− RPT_16 ( -14, 1, 11 ), RPT_16 ( 4, 2, 11 ),
1101− RPT_16 ( -4, 2, 11 ), RPT_16 ( 5, 2, 11 ),
1102− RPT_16 ( -5, 2, 11 ), RPT_16 ( 6, 2, 11 ),
1103− RPT_16 ( -6, 2, 11 ), RPT_16 ( 3, 3, 11 ),
1104− RPT_16 ( -3, 3, 11 ), RPT_16 ( 2, 4, 11 ),
1105− RPT_16 ( -2, 4, 11 ), RPT_16 ( 1, 9, 11 ),
1106− RPT_16 ( -1, 9, 11 ), RPT_16 ( 1, 10, 11 ),
1107− RPT_16 ( -1, 10, 11 ), RPT_8 ( 15, 1, 12 ),
1108− RPT_8 ( -15, 1, 12 ), RPT_8 ( 16, 1, 12 ),
1109− RPT_8 ( -16, 1, 12 ), RPT_8 ( 17, 1, 12 ),
1110− RPT_8 ( -17, 1, 12 ), RPT_8 ( 18, 1, 12 ),
1111− RPT_8 ( -18, 1, 12 ), RPT_8 ( 7, 2, 12 ),
1112− RPT_8 ( -7, 2, 12 ), RPT_8 ( 8, 2, 12 ),
1113− RPT_8 ( -8, 2, 12 ), RPT_8 ( 9, 2, 12 ),
1114− RPT_8 ( -9, 2, 12 ), RPT_8 ( 10, 2, 12 ),
1115− RPT_8 ( -10, 2, 12 ), RPT_8 ( 4, 3, 12 ),
1116− RPT_8 ( -4, 3, 12 ), RPT_8 ( 5, 3, 12 ),
1117− RPT_8 ( -5, 3, 12 ), RPT_8 ( 6, 3, 12 ),
1118− RPT_8 ( -6, 3, 12 ), RPT_8 ( 2, 5, 12 ),
1119− RPT_8 ( -2, 5, 12 ), RPT_16 ( 0, 7, 11 ),
1120− RPT_16 ( 0, 8, 11 ), RPT_16 ( 0, 9, 11 ),
1121− RPT_16 ( 0, 10, 11 ), RPT_8 ( 1, 11, 12 ),
1122− RPT_8 ( -1, 11, 12 ), RPT_8 ( 1, 12, 12 ),
1123− RPT_8 ( -1, 12, 12 ), RPT_8 ( 1, 13, 12 ),
1124− RPT_8 ( -1, 13, 12 ), RPT_8 ( 1, 14, 12 ),
1125− RPT_8 ( -1, 14, 12 ), RPT_4 ( 19, 1, 13 ),
1126− RPT_4 ( -19, 1, 13 ), RPT_4 ( 20, 1, 13 ),
1127− RPT_4 ( -20, 1, 13 ), RPT_4 ( 3, 4, 13 ),
1128− RPT_4 ( -3, 4, 13 ), RPT_4 ( 2, 6, 13 ),
1129− RPT_4 ( -2, 6, 13 ),
724+HQXAC ff_hqx_ac[NUM_HQX_AC] = {
725+ { 10 }, { 11 }, { 11 }, { 11 }, { 12 }, { 11 },
1130726 };
1131727
1132−static const HQXLUT ac8_lut[] = {
1133− RPT_128 ( 1, 0, 4 ), RPT_128 ( -1, 0, 4 ),
1134− RPT_128 ( 2, 0, 4 ), RPT_128 ( -2, 0, 4 ),
1135− RPT_64 ( 3, 0, 5 ), RPT_64 ( -3, 0, 5 ),
1136− RPT_64 ( 4, 0, 5 ), RPT_64 ( -4, 0, 5 ),
1137− RPT_128 ( 0, 64, 4 ), RPT_32 ( 5, 0, 6 ),
1138− RPT_32 ( -5, 0, 6 ), RPT_32 ( 6, 0, 6 ),
1139− RPT_32 ( -6, 0, 6 ), RPT_32 ( 7, 0, 6 ),
1140− RPT_32 ( -7, 0, 6 ), RPT_32 ( 8, 0, 6 ),
1141− RPT_32 ( -8, 0, 6 ), RPT_32 ( 1, 1, 6 ),
1142− RPT_32 ( -1, 1, 6 ), RPT_32 ( 2, 1, 6 ),
1143− RPT_32 ( -2, 1, 6 ), RPT_16 ( 9, 0, 7 ),
1144− RPT_16 ( -9, 0, 7 ), RPT_16 ( 10, 0, 7 ),
1145− RPT_16 ( -10, 0, 7 ), RPT_16 ( 11, 0, 7 ),
1146− RPT_16 ( -11, 0, 7 ), RPT_16 ( 12, 0, 7 ),
1147− RPT_16 ( -12, 0, 7 ), RPT_16 ( 3, 1, 7 ),
1148− RPT_16 ( -3, 1, 7 ), RPT_16 ( 4, 1, 7 ),
1149− RPT_16 ( -4, 1, 7 ), RPT_16 ( 1, 2, 7 ),
1150− RPT_16 ( -1, 2, 7 ), { 2048, 0, -1 }, { 2112, 0, -1 },
1151− { 2176, 0, -1 }, { 2240, 0, -1 }, { 2304, 0, -1 }, { 2368, 0, -1 },
1152− { 2432, 0, -1 }, { 2496, 0, -1 }, { 2560, 0, -1 }, { 2624, 0, -1 },
1153− { 2688, 0, -1 }, { 2752, 0, -1 }, { 2816, 0, -1 }, { 2880, 0, -1 },
1154− { 2944, 0, -1 }, { 3008, 0, -1 }, { 3072, 0, -1 }, { 3136, 0, -1 },
1155− { 3200, 0, -1 }, { 3264, 0, -1 }, { 3328, 0, -1 }, { 3392, 0, -1 },
1156− { 3456, 0, -1 }, { 3520, 0, -1 }, { 3584, 0, -1 }, { 3648, 0, -1 },
1157− { 3712, 0, -1 }, { 3776, 0, -1 }, { 3840, 0, -1 }, { 3904, 0, -1 },
1158− { 3968, 0, -1 }, { 4032, 0, -1 }, RPT_8 ( 13, 0, 8 ),
1159− RPT_8 ( -13, 0, 8 ), RPT_8 ( 14, 0, 8 ),
1160− RPT_8 ( -14, 0, 8 ), RPT_8 ( 15, 0, 8 ),
1161− RPT_8 ( -15, 0, 8 ), RPT_8 ( 16, 0, 8 ),
1162− RPT_8 ( -16, 0, 8 ), RPT_8 ( 17, 0, 8 ),
1163− RPT_8 ( -17, 0, 8 ), RPT_8 ( 18, 0, 8 ),
1164− RPT_8 ( -18, 0, 8 ), RPT_8 ( 5, 1, 8 ),
1165− RPT_8 ( -5, 1, 8 ), RPT_8 ( 6, 1, 8 ),
1166− RPT_8 ( -6, 1, 8 ), RPT_8 ( 2, 2, 8 ),
1167− RPT_8 ( -2, 2, 8 ), RPT_8 ( 1, 3, 8 ),
1168− RPT_8 ( -1, 3, 8 ), RPT_8 ( 0, 0, 8 ),
1169− RPT_4 ( 19, 0, 9 ), RPT_4 ( -19, 0, 9 ),
1170− RPT_4 ( 20, 0, 9 ), RPT_4 ( -20, 0, 9 ),
1171− RPT_4 ( 21, 0, 9 ), RPT_4 ( -21, 0, 9 ),
1172− RPT_4 ( 22, 0, 9 ), RPT_4 ( -22, 0, 9 ),
1173− RPT_4 ( 23, 0, 9 ), RPT_4 ( -23, 0, 9 ),
1174− RPT_4 ( 24, 0, 9 ), RPT_4 ( -24, 0, 9 ),
1175− RPT_4 ( 25, 0, 9 ), RPT_4 ( -25, 0, 9 ),
1176− RPT_4 ( 7, 1, 9 ), RPT_4 ( -7, 1, 9 ),
1177− RPT_4 ( 8, 1, 9 ), RPT_4 ( -8, 1, 9 ),
1178− RPT_4 ( 3, 2, 9 ), RPT_4 ( -3, 2, 9 ),
1179− RPT_4 ( 2, 3, 9 ), RPT_4 ( -2, 3, 9 ),
1180− RPT_4 ( 1, 4, 9 ), RPT_4 ( -1, 4, 9 ),
1181− RPT_4 ( 1, 5, 9 ), RPT_4 ( -1, 5, 9 ),
1182− RPT_2 ( 26, 0, 10 ), RPT_2 ( -26, 0, 10 ),
1183− RPT_2 ( 27, 0, 10 ), RPT_2 ( -27, 0, 10 ),
1184− RPT_2 ( 28, 0, 10 ), RPT_2 ( -28, 0, 10 ),
1185− RPT_2 ( 29, 0, 10 ), RPT_2 ( -29, 0, 10 ),
1186− RPT_2 ( 30, 0, 10 ), RPT_2 ( -30, 0, 10 ),
1187− RPT_2 ( 31, 0, 10 ), RPT_2 ( -31, 0, 10 ),
1188− RPT_2 ( 32, 0, 10 ), RPT_2 ( -32, 0, 10 ),
1189− RPT_2 ( 33, 0, 10 ), RPT_2 ( -33, 0, 10 ),
1190− RPT_2 ( 34, 0, 10 ), RPT_2 ( -34, 0, 10 ),
1191− RPT_2 ( 35, 0, 10 ), RPT_2 ( -35, 0, 10 ),
1192− RPT_2 ( 36, 0, 10 ), RPT_2 ( -36, 0, 10 ),
1193− RPT_4 ( 0, 1, 9 ), RPT_2 ( 9, 1, 10 ),
1194− RPT_2 ( -9, 1, 10 ), RPT_2 ( 10, 1, 10 ),
1195− RPT_2 ( -10, 1, 10 ), RPT_2 ( 11, 1, 10 ),
1196− RPT_2 ( -11, 1, 10 ), RPT_2 ( 12, 1, 10 ),
1197− RPT_2 ( -12, 1, 10 ), RPT_4 ( 0, 2, 9 ),
1198− RPT_2 ( 4, 2, 10 ), RPT_2 ( -4, 2, 10 ),
1199− RPT_2 ( 5, 2, 10 ), RPT_2 ( -5, 2, 10 ),
1200− RPT_2 ( 6, 2, 10 ), RPT_2 ( -6, 2, 10 ),
1201− RPT_4 ( 0, 3, 9 ), RPT_2 ( 3, 3, 10 ),
1202− RPT_2 ( -3, 3, 10 ), RPT_2 ( 4, 3, 10 ),
1203− RPT_2 ( -4, 3, 10 ), RPT_4 ( 0, 4, 9 ),
1204− RPT_2 ( 2, 4, 10 ), RPT_2 ( -2, 4, 10 ),
1205− RPT_4 ( 0, 5, 9 ), RPT_2 ( 1, 6, 10 ),
1206− RPT_2 ( -1, 6, 10 ), RPT_2 ( 1, 7, 10 ),
1207− RPT_2 ( -1, 7, 10 ), RPT_2 ( 1, 8, 10 ),
1208− RPT_2 ( -1, 8, 10 ), { 37, 0, 11 }, { -37, 0, 11 },
1209− { 38, 0, 11 }, { -38, 0, 11 }, { 39, 0, 11 }, { -39, 0, 11 },
1210− { 40, 0, 11 }, { -40, 0, 11 }, { 41, 0, 11 }, { -41, 0, 11 },
1211− { 42, 0, 11 }, { -42, 0, 11 }, { 43, 0, 11 }, { -43, 0, 11 },
1212− { 44, 0, 11 }, { -44, 0, 11 }, { 45, 0, 11 }, { -45, 0, 11 },
1213− { 46, 0, 11 }, { -46, 0, 11 }, { 47, 0, 11 }, { -47, 0, 11 },
1214− { 48, 0, 11 }, { -48, 0, 11 }, { 13, 1, 11 }, { -13, 1, 11 },
1215− { 14, 1, 11 }, { -14, 1, 11 }, { 15, 1, 11 }, { -15, 1, 11 },
1216− { 16, 1, 11 }, { -16, 1, 11 }, { 7, 2, 11 }, { -7, 2, 11 },
1217− { 8, 2, 11 }, { -8, 2, 11 }, { 5, 3, 11 }, { -5, 3, 11 },
1218− { 6, 3, 11 }, { -6, 3, 11 }, { 3, 4, 11 }, { -3, 4, 11 },
1219− { 4, 4, 11 }, { -4, 4, 11 }, { 2, 5, 11 }, { -2, 5, 11 },
1220− RPT_2 ( 0, 6, 10 ), { 2, 6, 11 }, { -2, 6, 11 },
1221− RPT_2 ( 0, 7, 10 ), RPT_2 ( 0, 8, 10 ),
1222− RPT_2 ( 0, 9, 10 ), { 1, 9, 11 }, { -1, 9, 11 },
1223− { 1, 10, 11 }, { -1, 10, 11 }, { 1, 11, 11 }, { -1, 11, 11 },
1224− { 1, 12, 11 }, { -1, 12, 11 }, { 4096, 0, -1 }, { 4160, 0, -1 },
1225− { 4224, 0, -1 }, { 4288, 0, -1 }, { 4352, 0, -1 }, { 4416, 0, -1 },
1226− { 4480, 0, -1 }, { 4544, 0, -1 }, { 4608, 0, -1 }, { 4672, 0, -1 },
1227− { 4736, 0, -1 }, { 4800, 0, -1 }, { 4864, 0, -1 }, { 4928, 0, -1 },
1228− { 4992, 0, -1 }, { 5056, 0, -1 }, { 5120, 0, -1 }, { 5184, 0, -1 },
1229− { 5248, 0, -1 }, { 5312, 0, -1 }, { 5376, 0, -1 }, { 5440, 0, -1 },
1230− { 5504, 0, -1 }, { 5568, 0, -1 }, { 5632, 0, -1 }, { 5696, 0, -1 },
1231− { 5760, 0, -1 }, { 5824, 0, -1 }, { 5888, 0, -1 }, { 5952, 0, -1 },
1232− { 6016, 0, -1 }, { 6080, 0, -1 }, { 6144, 0, -1 }, { 6208, 0, -1 },
1233− { 6272, 0, -1 }, { 6336, 0, -1 }, { 6400, 0, -1 }, { 6464, 0, -1 },
1234− { 6528, 0, -1 }, { 6592, 0, -1 }, { 0, 10, 11 }, { 6656, 0, -1 },
1235− { 0, 11, 11 }, { 0, 12, 11 }, { 0, 13, 11 }, { 6720, 0, -1 },
1236− { 6784, 0, -1 }, { 6848, 0, -1 }, { 6912, 0, -1 }, { 6976, 0, -1 },
1237− { 7040, 0, -1 }, { 7104, 0, -1 }, { 7168, 0, -1 }, { 7232, 0, -1 },
1238− { 7296, 0, -1 }, { 7360, 0, -1 }, { 7424, 0, -1 }, { 7488, 0, -1 },
1239− { 7552, 0, -1 }, { 7616, 0, -1 }, RPT_8 ( 0, 0, 14 ),
1240− RPT_4 ( 1, 0, 15 ), RPT_4 ( -1, 0, 15 ),
1241− RPT_4 ( 2, 0, 15 ), RPT_4 ( -2, 0, 15 ),
1242− RPT_4 ( 3, 0, 15 ), RPT_4 ( -3, 0, 15 ),
1243− RPT_4 ( 4, 0, 15 ), RPT_4 ( -4, 0, 15 ),
1244− RPT_4 ( 5, 0, 15 ), RPT_4 ( -5, 0, 15 ),
1245− RPT_4 ( 6, 0, 15 ), RPT_4 ( -6, 0, 15 ),
1246− RPT_4 ( 7, 0, 15 ), RPT_4 ( -7, 0, 15 ),
1247− RPT_4 ( 8, 0, 15 ), RPT_4 ( -8, 0, 15 ),
1248− RPT_4 ( 9, 0, 15 ), RPT_4 ( -9, 0, 15 ),
1249− RPT_4 ( 10, 0, 15 ), RPT_4 ( -10, 0, 15 ),
1250− RPT_4 ( 11, 0, 15 ), RPT_4 ( -11, 0, 15 ),
1251− RPT_4 ( 12, 0, 15 ), RPT_4 ( -12, 0, 15 ),
1252− RPT_4 ( 13, 0, 15 ), RPT_4 ( -13, 0, 15 ),
1253− RPT_4 ( 14, 0, 15 ), RPT_4 ( -14, 0, 15 ),
1254− RPT_4 ( 15, 0, 15 ), RPT_4 ( -15, 0, 15 ),
1255− RPT_4 ( 16, 0, 15 ), RPT_4 ( -16, 0, 15 ),
1256− RPT_4 ( 17, 0, 15 ), RPT_4 ( -17, 0, 15 ),
1257− RPT_4 ( 18, 0, 15 ), RPT_4 ( -18, 0, 15 ),
1258− RPT_4 ( 19, 0, 15 ), RPT_4 ( -19, 0, 15 ),
1259− RPT_4 ( 20, 0, 15 ), RPT_4 ( -20, 0, 15 ),
1260− RPT_4 ( 21, 0, 15 ), RPT_4 ( -21, 0, 15 ),
1261− RPT_4 ( 22, 0, 15 ), RPT_4 ( -22, 0, 15 ),
1262− RPT_4 ( 23, 0, 15 ), RPT_4 ( -23, 0, 15 ),
1263− RPT_4 ( 24, 0, 15 ), RPT_4 ( -24, 0, 15 ),
1264− RPT_4 ( 25, 0, 15 ), RPT_4 ( -25, 0, 15 ),
1265− RPT_4 ( 26, 0, 15 ), RPT_4 ( -26, 0, 15 ),
1266− RPT_4 ( 27, 0, 15 ), RPT_4 ( -27, 0, 15 ),
1267− RPT_4 ( 28, 0, 15 ), RPT_4 ( -28, 0, 15 ),
1268− RPT_4 ( 29, 0, 15 ), RPT_4 ( -29, 0, 15 ),
1269− RPT_4 ( 30, 0, 15 ), RPT_4 ( -30, 0, 15 ),
1270− RPT_4 ( 31, 0, 15 ), RPT_4 ( -31, 0, 15 ),
1271− RPT_4 ( 32, 0, 15 ), RPT_4 ( -32, 0, 15 ),
1272− RPT_4 ( 33, 0, 15 ), RPT_4 ( -33, 0, 15 ),
1273− RPT_4 ( 34, 0, 15 ), RPT_4 ( -34, 0, 15 ),
1274− RPT_4 ( 35, 0, 15 ), RPT_4 ( -35, 0, 15 ),
1275− RPT_4 ( 36, 0, 15 ), RPT_4 ( -36, 0, 15 ),
1276− RPT_4 ( 37, 0, 15 ), RPT_4 ( -37, 0, 15 ),
1277− RPT_4 ( 38, 0, 15 ), RPT_4 ( -38, 0, 15 ),
1278− RPT_4 ( 39, 0, 15 ), RPT_4 ( -39, 0, 15 ),
1279− RPT_4 ( 40, 0, 15 ), RPT_4 ( -40, 0, 15 ),
1280− RPT_4 ( 41, 0, 15 ), RPT_4 ( -41, 0, 15 ),
1281− RPT_4 ( 42, 0, 15 ), RPT_4 ( -42, 0, 15 ),
1282− RPT_4 ( 43, 0, 15 ), RPT_4 ( -43, 0, 15 ),
1283− RPT_4 ( 44, 0, 15 ), RPT_4 ( -44, 0, 15 ),
1284− RPT_4 ( 45, 0, 15 ), RPT_4 ( -45, 0, 15 ),
1285− RPT_4 ( 46, 0, 15 ), RPT_4 ( -46, 0, 15 ),
1286− RPT_4 ( 47, 0, 15 ), RPT_4 ( -47, 0, 15 ),
1287− RPT_4 ( 48, 0, 15 ), RPT_4 ( -48, 0, 15 ),
1288− RPT_4 ( 49, 0, 15 ), RPT_4 ( -49, 0, 15 ),
1289− RPT_4 ( 50, 0, 15 ), RPT_4 ( -50, 0, 15 ),
1290− RPT_4 ( 51, 0, 15 ), RPT_4 ( -51, 0, 15 ),
1291− RPT_4 ( 52, 0, 15 ), RPT_4 ( -52, 0, 15 ),
1292− RPT_4 ( 53, 0, 15 ), RPT_4 ( -53, 0, 15 ),
1293− RPT_4 ( 54, 0, 15 ), RPT_4 ( -54, 0, 15 ),
1294− RPT_4 ( 55, 0, 15 ), RPT_4 ( -55, 0, 15 ),
1295− RPT_4 ( 56, 0, 15 ), RPT_4 ( -56, 0, 15 ),
1296− RPT_4 ( 57, 0, 15 ), RPT_4 ( -57, 0, 15 ),
1297− RPT_4 ( 58, 0, 15 ), RPT_4 ( -58, 0, 15 ),
1298− RPT_4 ( 59, 0, 15 ), RPT_4 ( -59, 0, 15 ),
1299− RPT_4 ( 60, 0, 15 ), RPT_4 ( -60, 0, 15 ),
1300− RPT_4 ( 61, 0, 15 ), RPT_4 ( -61, 0, 15 ),
1301− RPT_4 ( 62, 0, 15 ), RPT_4 ( -62, 0, 15 ),
1302− RPT_4 ( 63, 0, 15 ), RPT_4 ( -63, 0, 15 ),
1303− RPT_4 ( 64, 0, 15 ), RPT_4 ( -64, 0, 15 ),
1304− RPT_4 ( 65, 0, 15 ), RPT_4 ( -65, 0, 15 ),
1305− RPT_4 ( 66, 0, 15 ), RPT_4 ( -66, 0, 15 ),
1306− RPT_4 ( 67, 0, 15 ), RPT_4 ( -67, 0, 15 ),
1307− RPT_4 ( 68, 0, 15 ), RPT_4 ( -68, 0, 15 ),
1308− RPT_4 ( 69, 0, 15 ), RPT_4 ( -69, 0, 15 ),
1309− RPT_4 ( 70, 0, 15 ), RPT_4 ( -70, 0, 15 ),
1310− RPT_4 ( 71, 0, 15 ), RPT_4 ( -71, 0, 15 ),
1311− RPT_4 ( 72, 0, 15 ), RPT_4 ( -72, 0, 15 ),
1312− RPT_4 ( 73, 0, 15 ), RPT_4 ( -73, 0, 15 ),
1313− RPT_4 ( 74, 0, 15 ), RPT_4 ( -74, 0, 15 ),
1314− RPT_4 ( 75, 0, 15 ), RPT_4 ( -75, 0, 15 ),
1315− RPT_4 ( 76, 0, 15 ), RPT_4 ( -76, 0, 15 ),
1316− RPT_4 ( 77, 0, 15 ), RPT_4 ( -77, 0, 15 ),
1317− RPT_4 ( 78, 0, 15 ), RPT_4 ( -78, 0, 15 ),
1318− RPT_4 ( 79, 0, 15 ), RPT_4 ( -79, 0, 15 ),
1319− RPT_4 ( 80, 0, 15 ), RPT_4 ( -80, 0, 15 ),
1320− RPT_4 ( 81, 0, 15 ), RPT_4 ( -81, 0, 15 ),
1321− RPT_4 ( 82, 0, 15 ), RPT_4 ( -82, 0, 15 ),
1322− RPT_4 ( 83, 0, 15 ), RPT_4 ( -83, 0, 15 ),
1323− RPT_4 ( 84, 0, 15 ), RPT_4 ( -84, 0, 15 ),
1324− RPT_4 ( 85, 0, 15 ), RPT_4 ( -85, 0, 15 ),
1325− RPT_4 ( 86, 0, 15 ), RPT_4 ( -86, 0, 15 ),
1326− RPT_4 ( 87, 0, 15 ), RPT_4 ( -87, 0, 15 ),
1327− RPT_4 ( 88, 0, 15 ), RPT_4 ( -88, 0, 15 ),
1328− RPT_4 ( 89, 0, 15 ), RPT_4 ( -89, 0, 15 ),
1329− RPT_4 ( 90, 0, 15 ), RPT_4 ( -90, 0, 15 ),
1330− RPT_4 ( 91, 0, 15 ), RPT_4 ( -91, 0, 15 ),
1331− RPT_4 ( 92, 0, 15 ), RPT_4 ( -92, 0, 15 ),
1332− RPT_4 ( 93, 0, 15 ), RPT_4 ( -93, 0, 15 ),
1333− RPT_4 ( 94, 0, 15 ), RPT_4 ( -94, 0, 15 ),
1334− RPT_4 ( 95, 0, 15 ), RPT_4 ( -95, 0, 15 ),
1335− RPT_4 ( 96, 0, 15 ), RPT_4 ( -96, 0, 15 ),
1336− RPT_4 ( 97, 0, 15 ), RPT_4 ( -97, 0, 15 ),
1337− RPT_4 ( 98, 0, 15 ), RPT_4 ( -98, 0, 15 ),
1338− RPT_4 ( 99, 0, 15 ), RPT_4 ( -99, 0, 15 ),
1339− RPT_4 ( 100, 0, 15 ), RPT_4 (-100, 0, 15 ),
1340− RPT_4 ( 101, 0, 15 ), RPT_4 (-101, 0, 15 ),
1341− RPT_4 ( 102, 0, 15 ), RPT_4 (-102, 0, 15 ),
1342− RPT_4 ( 103, 0, 15 ), RPT_4 (-103, 0, 15 ),
1343− RPT_4 ( 104, 0, 15 ), RPT_4 (-104, 0, 15 ),
1344− RPT_4 ( 105, 0, 15 ), RPT_4 (-105, 0, 15 ),
1345− RPT_4 ( 106, 0, 15 ), RPT_4 (-106, 0, 15 ),
1346− RPT_4 ( 107, 0, 15 ), RPT_4 (-107, 0, 15 ),
1347− RPT_4 ( 108, 0, 15 ), RPT_4 (-108, 0, 15 ),
1348− RPT_4 ( 109, 0, 15 ), RPT_4 (-109, 0, 15 ),
1349− RPT_4 ( 110, 0, 15 ), RPT_4 (-110, 0, 15 ),
1350− RPT_4 ( 111, 0, 15 ), RPT_4 (-111, 0, 15 ),
1351− RPT_4 ( 112, 0, 15 ), RPT_4 (-112, 0, 15 ),
1352− RPT_4 ( 113, 0, 15 ), RPT_4 (-113, 0, 15 ),
1353− RPT_4 ( 114, 0, 15 ), RPT_4 (-114, 0, 15 ),
1354− RPT_4 ( 115, 0, 15 ), RPT_4 (-115, 0, 15 ),
1355− RPT_4 ( 116, 0, 15 ), RPT_4 (-116, 0, 15 ),
1356− RPT_4 ( 117, 0, 15 ), RPT_4 (-117, 0, 15 ),
1357− RPT_4 ( 118, 0, 15 ), RPT_4 (-118, 0, 15 ),
1358− RPT_4 ( 119, 0, 15 ), RPT_4 (-119, 0, 15 ),
1359− RPT_4 ( 120, 0, 15 ), RPT_4 (-120, 0, 15 ),
1360− RPT_4 ( 121, 0, 15 ), RPT_4 (-121, 0, 15 ),
1361− RPT_4 ( 122, 0, 15 ), RPT_4 (-122, 0, 15 ),
1362− RPT_4 ( 123, 0, 15 ), RPT_4 (-123, 0, 15 ),
1363− RPT_4 ( 124, 0, 15 ), RPT_4 (-124, 0, 15 ),
1364− RPT_4 ( 125, 0, 15 ), RPT_4 (-125, 0, 15 ),
1365− RPT_4 ( 126, 0, 15 ), RPT_4 (-126, 0, 15 ),
1366− RPT_4 ( 127, 0, 15 ), RPT_4 (-127, 0, 15 ),
1367− RPT_4 ( 128, 0, 15 ), RPT_4 (-128, 0, 15 ),
1368− RPT_4 ( 129, 0, 15 ), RPT_4 (-129, 0, 15 ),
1369− RPT_4 ( 130, 0, 15 ), RPT_4 (-130, 0, 15 ),
1370− RPT_4 ( 131, 0, 15 ), RPT_4 (-131, 0, 15 ),
1371− RPT_4 ( 132, 0, 15 ), RPT_4 (-132, 0, 15 ),
1372− RPT_4 ( 133, 0, 15 ), RPT_4 (-133, 0, 15 ),
1373− RPT_4 ( 134, 0, 15 ), RPT_4 (-134, 0, 15 ),
1374− RPT_4 ( 135, 0, 15 ), RPT_4 (-135, 0, 15 ),
1375− RPT_4 ( 136, 0, 15 ), RPT_4 (-136, 0, 15 ),
1376− RPT_4 ( 137, 0, 15 ), RPT_4 (-137, 0, 15 ),
1377− RPT_4 ( 138, 0, 15 ), RPT_4 (-138, 0, 15 ),
1378− RPT_4 ( 139, 0, 15 ), RPT_4 (-139, 0, 15 ),
1379− RPT_4 ( 140, 0, 15 ), RPT_4 (-140, 0, 15 ),
1380− RPT_4 ( 141, 0, 15 ), RPT_4 (-141, 0, 15 ),
1381− RPT_4 ( 142, 0, 15 ), RPT_4 (-142, 0, 15 ),
1382− RPT_4 ( 143, 0, 15 ), RPT_4 (-143, 0, 15 ),
1383− RPT_4 ( 144, 0, 15 ), RPT_4 (-144, 0, 15 ),
1384− RPT_4 ( 145, 0, 15 ), RPT_4 (-145, 0, 15 ),
1385− RPT_4 ( 146, 0, 15 ), RPT_4 (-146, 0, 15 ),
1386− RPT_4 ( 147, 0, 15 ), RPT_4 (-147, 0, 15 ),
1387− RPT_4 ( 148, 0, 15 ), RPT_4 (-148, 0, 15 ),
1388− RPT_4 ( 149, 0, 15 ), RPT_4 (-149, 0, 15 ),
1389− RPT_4 ( 150, 0, 15 ), RPT_4 (-150, 0, 15 ),
1390− RPT_4 ( 151, 0, 15 ), RPT_4 (-151, 0, 15 ),
1391− RPT_4 ( 152, 0, 15 ), RPT_4 (-152, 0, 15 ),
1392− RPT_4 ( 153, 0, 15 ), RPT_4 (-153, 0, 15 ),
1393− RPT_4 ( 154, 0, 15 ), RPT_4 (-154, 0, 15 ),
1394− RPT_4 ( 155, 0, 15 ), RPT_4 (-155, 0, 15 ),
1395− RPT_4 ( 156, 0, 15 ), RPT_4 (-156, 0, 15 ),
1396− RPT_4 ( 157, 0, 15 ), RPT_4 (-157, 0, 15 ),
1397− RPT_4 ( 158, 0, 15 ), RPT_4 (-158, 0, 15 ),
1398− RPT_4 ( 159, 0, 15 ), RPT_4 (-159, 0, 15 ),
1399− RPT_4 ( 160, 0, 15 ), RPT_4 (-160, 0, 15 ),
1400− RPT_4 ( 161, 0, 15 ), RPT_4 (-161, 0, 15 ),
1401− RPT_4 ( 162, 0, 15 ), RPT_4 (-162, 0, 15 ),
1402− RPT_4 ( 163, 0, 15 ), RPT_4 (-163, 0, 15 ),
1403− RPT_4 ( 164, 0, 15 ), RPT_4 (-164, 0, 15 ),
1404− RPT_4 ( 165, 0, 15 ), RPT_4 (-165, 0, 15 ),
1405− RPT_4 ( 166, 0, 15 ), RPT_4 (-166, 0, 15 ),
1406− RPT_4 ( 167, 0, 15 ), RPT_4 (-167, 0, 15 ),
1407− RPT_4 ( 168, 0, 15 ), RPT_4 (-168, 0, 15 ),
1408− RPT_4 ( 169, 0, 15 ), RPT_4 (-169, 0, 15 ),
1409− RPT_4 ( 170, 0, 15 ), RPT_4 (-170, 0, 15 ),
1410− RPT_4 ( 171, 0, 15 ), RPT_4 (-171, 0, 15 ),
1411− RPT_4 ( 172, 0, 15 ), RPT_4 (-172, 0, 15 ),
1412− RPT_4 ( 173, 0, 15 ), RPT_4 (-173, 0, 15 ),
1413− RPT_4 ( 174, 0, 15 ), RPT_4 (-174, 0, 15 ),
1414− RPT_4 ( 175, 0, 15 ), RPT_4 (-175, 0, 15 ),
1415− RPT_4 ( 176, 0, 15 ), RPT_4 (-176, 0, 15 ),
1416− RPT_4 ( 177, 0, 15 ), RPT_4 (-177, 0, 15 ),
1417− RPT_4 ( 178, 0, 15 ), RPT_4 (-178, 0, 15 ),
1418− RPT_4 ( 179, 0, 15 ), RPT_4 (-179, 0, 15 ),
1419− RPT_4 ( 180, 0, 15 ), RPT_4 (-180, 0, 15 ),
1420− RPT_4 ( 181, 0, 15 ), RPT_4 (-181, 0, 15 ),
1421− RPT_4 ( 182, 0, 15 ), RPT_4 (-182, 0, 15 ),
1422− RPT_4 ( 183, 0, 15 ), RPT_4 (-183, 0, 15 ),
1423− RPT_4 ( 184, 0, 15 ), RPT_4 (-184, 0, 15 ),
1424− RPT_4 ( 185, 0, 15 ), RPT_4 (-185, 0, 15 ),
1425− RPT_4 ( 186, 0, 15 ), RPT_4 (-186, 0, 15 ),
1426− RPT_4 ( 187, 0, 15 ), RPT_4 (-187, 0, 15 ),
1427− RPT_4 ( 188, 0, 15 ), RPT_4 (-188, 0, 15 ),
1428− RPT_4 ( 189, 0, 15 ), RPT_4 (-189, 0, 15 ),
1429− RPT_4 ( 190, 0, 15 ), RPT_4 (-190, 0, 15 ),
1430− RPT_4 ( 191, 0, 15 ), RPT_4 (-191, 0, 15 ),
1431− RPT_4 ( 192, 0, 15 ), RPT_4 (-192, 0, 15 ),
1432− RPT_4 ( 193, 0, 15 ), RPT_4 (-193, 0, 15 ),
1433− RPT_4 ( 194, 0, 15 ), RPT_4 (-194, 0, 15 ),
1434− RPT_4 ( 195, 0, 15 ), RPT_4 (-195, 0, 15 ),
1435− RPT_4 ( 196, 0, 15 ), RPT_4 (-196, 0, 15 ),
1436− RPT_4 ( 197, 0, 15 ), RPT_4 (-197, 0, 15 ),
1437− RPT_4 ( 198, 0, 15 ), RPT_4 (-198, 0, 15 ),
1438− RPT_4 ( 199, 0, 15 ), RPT_4 (-199, 0, 15 ),
1439− RPT_4 ( 200, 0, 15 ), RPT_4 (-200, 0, 15 ),
1440− RPT_4 ( 201, 0, 15 ), RPT_4 (-201, 0, 15 ),
1441− RPT_4 ( 202, 0, 15 ), RPT_4 (-202, 0, 15 ),
1442− RPT_4 ( 203, 0, 15 ), RPT_4 (-203, 0, 15 ),
1443− RPT_4 ( 204, 0, 15 ), RPT_4 (-204, 0, 15 ),
1444− RPT_4 ( 205, 0, 15 ), RPT_4 (-205, 0, 15 ),
1445− RPT_4 ( 206, 0, 15 ), RPT_4 (-206, 0, 15 ),
1446− RPT_4 ( 207, 0, 15 ), RPT_4 (-207, 0, 15 ),
1447− RPT_4 ( 208, 0, 15 ), RPT_4 (-208, 0, 15 ),
1448− RPT_4 ( 209, 0, 15 ), RPT_4 (-209, 0, 15 ),
1449− RPT_4 ( 210, 0, 15 ), RPT_4 (-210, 0, 15 ),
1450− RPT_4 ( 211, 0, 15 ), RPT_4 (-211, 0, 15 ),
1451− RPT_4 ( 212, 0, 15 ), RPT_4 (-212, 0, 15 ),
1452− RPT_4 ( 213, 0, 15 ), RPT_4 (-213, 0, 15 ),
1453− RPT_4 ( 214, 0, 15 ), RPT_4 (-214, 0, 15 ),
1454− RPT_4 ( 215, 0, 15 ), RPT_4 (-215, 0, 15 ),
1455− RPT_4 ( 216, 0, 15 ), RPT_4 (-216, 0, 15 ),
1456− RPT_4 ( 217, 0, 15 ), RPT_4 (-217, 0, 15 ),
1457− RPT_4 ( 218, 0, 15 ), RPT_4 (-218, 0, 15 ),
1458− RPT_4 ( 219, 0, 15 ), RPT_4 (-219, 0, 15 ),
1459− RPT_4 ( 220, 0, 15 ), RPT_4 (-220, 0, 15 ),
1460− RPT_4 ( 221, 0, 15 ), RPT_4 (-221, 0, 15 ),
1461− RPT_4 ( 222, 0, 15 ), RPT_4 (-222, 0, 15 ),
1462− RPT_4 ( 223, 0, 15 ), RPT_4 (-223, 0, 15 ),
1463− RPT_4 ( 224, 0, 15 ), RPT_4 (-224, 0, 15 ),
1464− RPT_4 ( 225, 0, 15 ), RPT_4 (-225, 0, 15 ),
1465− RPT_4 ( 226, 0, 15 ), RPT_4 (-226, 0, 15 ),
1466− RPT_4 ( 227, 0, 15 ), RPT_4 (-227, 0, 15 ),
1467− RPT_4 ( 228, 0, 15 ), RPT_4 (-228, 0, 15 ),
1468− RPT_4 ( 229, 0, 15 ), RPT_4 (-229, 0, 15 ),
1469− RPT_4 ( 230, 0, 15 ), RPT_4 (-230, 0, 15 ),
1470− RPT_4 ( 231, 0, 15 ), RPT_4 (-231, 0, 15 ),
1471− RPT_4 ( 232, 0, 15 ), RPT_4 (-232, 0, 15 ),
1472− RPT_4 ( 233, 0, 15 ), RPT_4 (-233, 0, 15 ),
1473− RPT_4 ( 234, 0, 15 ), RPT_4 (-234, 0, 15 ),
1474− RPT_4 ( 235, 0, 15 ), RPT_4 (-235, 0, 15 ),
1475− RPT_4 ( 236, 0, 15 ), RPT_4 (-236, 0, 15 ),
1476− RPT_4 ( 237, 0, 15 ), RPT_4 (-237, 0, 15 ),
1477− RPT_4 ( 238, 0, 15 ), RPT_4 (-238, 0, 15 ),
1478− RPT_4 ( 239, 0, 15 ), RPT_4 (-239, 0, 15 ),
1479− RPT_4 ( 240, 0, 15 ), RPT_4 (-240, 0, 15 ),
1480− RPT_4 ( 241, 0, 15 ), RPT_4 (-241, 0, 15 ),
1481− RPT_4 ( 242, 0, 15 ), RPT_4 (-242, 0, 15 ),
1482− RPT_4 ( 243, 0, 15 ), RPT_4 (-243, 0, 15 ),
1483− RPT_4 ( 244, 0, 15 ), RPT_4 (-244, 0, 15 ),
1484− RPT_4 ( 245, 0, 15 ), RPT_4 (-245, 0, 15 ),
1485− RPT_4 ( 246, 0, 15 ), RPT_4 (-246, 0, 15 ),
1486− RPT_4 ( 247, 0, 15 ), RPT_4 (-247, 0, 15 ),
1487− RPT_4 ( 248, 0, 15 ), RPT_4 (-248, 0, 15 ),
1488− RPT_4 ( 249, 0, 15 ), RPT_4 (-249, 0, 15 ),
1489− RPT_4 ( 250, 0, 15 ), RPT_4 (-250, 0, 15 ),
1490− RPT_4 ( 251, 0, 15 ), RPT_4 (-251, 0, 15 ),
1491− RPT_4 ( 252, 0, 15 ), RPT_4 (-252, 0, 15 ),
1492− RPT_4 ( 253, 0, 15 ), RPT_4 (-253, 0, 15 ),
1493− RPT_4 ( 254, 0, 15 ), RPT_4 (-254, 0, 15 ),
1494− RPT_4 ( 255, 0, 15 ), RPT_4 (-255, 0, 15 ),
1495− RPT_32 ( 49, 0, 12 ), RPT_32 ( -49, 0, 12 ),
1496− RPT_32 ( 50, 0, 12 ), RPT_32 ( -50, 0, 12 ),
1497− RPT_32 ( 51, 0, 12 ), RPT_32 ( -51, 0, 12 ),
1498− RPT_32 ( 52, 0, 12 ), RPT_32 ( -52, 0, 12 ),
1499− RPT_32 ( 53, 0, 12 ), RPT_32 ( -53, 0, 12 ),
1500− RPT_32 ( 54, 0, 12 ), RPT_32 ( -54, 0, 12 ),
1501− RPT_32 ( 55, 0, 12 ), RPT_32 ( -55, 0, 12 ),
1502− RPT_32 ( 56, 0, 12 ), RPT_32 ( -56, 0, 12 ),
1503− RPT_32 ( 57, 0, 12 ), RPT_32 ( -57, 0, 12 ),
1504− RPT_32 ( 58, 0, 12 ), RPT_32 ( -58, 0, 12 ),
1505− RPT_32 ( 59, 0, 12 ), RPT_32 ( -59, 0, 12 ),
1506− RPT_32 ( 60, 0, 12 ), RPT_32 ( -60, 0, 12 ),
1507− RPT_32 ( 61, 0, 12 ), RPT_32 ( -61, 0, 12 ),
1508− RPT_32 ( 62, 0, 12 ), RPT_32 ( -62, 0, 12 ),
1509− RPT_32 ( 63, 0, 12 ), RPT_32 ( -63, 0, 12 ),
1510− RPT_32 ( 17, 1, 12 ), RPT_32 ( -17, 1, 12 ),
1511− RPT_32 ( 18, 1, 12 ), RPT_32 ( -18, 1, 12 ),
1512− RPT_32 ( 19, 1, 12 ), RPT_32 ( -19, 1, 12 ),
1513− RPT_32 ( 20, 1, 12 ), RPT_32 ( -20, 1, 12 ),
1514− RPT_32 ( 21, 1, 12 ), RPT_32 ( -21, 1, 12 ),
1515− RPT_32 ( 22, 1, 12 ), RPT_32 ( -22, 1, 12 ),
1516− RPT_32 ( 23, 1, 12 ), RPT_32 ( -23, 1, 12 ),
1517− RPT_32 ( 24, 1, 12 ), RPT_32 ( -24, 1, 12 ),
1518− RPT_32 ( 9, 2, 12 ), RPT_32 ( -9, 2, 12 ),
1519− RPT_32 ( 10, 2, 12 ), RPT_32 ( -10, 2, 12 ),
1520− RPT_32 ( 11, 2, 12 ), RPT_32 ( -11, 2, 12 ),
1521− RPT_32 ( 12, 2, 12 ), RPT_32 ( -12, 2, 12 ),
1522− RPT_32 ( 7, 3, 12 ), RPT_32 ( -7, 3, 12 ),
1523− RPT_32 ( 8, 3, 12 ), RPT_32 ( -8, 3, 12 ),
1524− RPT_32 ( 5, 4, 12 ), RPT_32 ( -5, 4, 12 ),
1525− RPT_32 ( 6, 4, 12 ), RPT_32 ( -6, 4, 12 ),
1526− RPT_32 ( 3, 5, 12 ), RPT_32 ( -3, 5, 12 ),
1527− RPT_32 ( 4, 5, 12 ), RPT_32 ( -4, 5, 12 ),
1528− RPT_32 ( 5, 5, 12 ), RPT_32 ( -5, 5, 12 ),
1529− RPT_32 ( 6, 5, 12 ), RPT_32 ( -6, 5, 12 ),
1530− RPT_32 ( 3, 6, 12 ), RPT_32 ( -3, 6, 12 ),
1531− RPT_32 ( 4, 6, 12 ), RPT_32 ( -4, 6, 12 ),
1532− RPT_32 ( 2, 7, 12 ), RPT_32 ( -2, 7, 12 ),
1533− RPT_32 ( 2, 8, 12 ), RPT_32 ( -2, 8, 12 ),
1534− RPT_32 ( 2, 9, 12 ), RPT_32 ( -2, 9, 12 ),
1535− RPT_32 ( 2, 10, 12 ), RPT_32 ( -2, 10, 12 ),
1536− RPT_32 ( 1, 13, 12 ), RPT_32 ( -1, 13, 12 ),
1537− RPT_32 ( 1, 14, 12 ), RPT_32 ( -1, 14, 12 ),
1538− { 0, 0, 17 }, { 0, 1, 17 }, { 0, 2, 17 }, { 0, 3, 17 },
1539− { 0, 4, 17 }, { 0, 5, 17 }, { 0, 6, 17 }, { 0, 7, 17 },
1540− { 0, 8, 17 }, { 0, 9, 17 }, { 0, 10, 17 }, { 0, 11, 17 },
1541− { 0, 12, 17 }, { 0, 13, 17 }, { 0, 14, 17 }, { 0, 15, 17 },
1542− { 0, 16, 17 }, { 0, 17, 17 }, { 0, 18, 17 }, { 0, 19, 17 },
1543− { 0, 20, 17 }, { 0, 21, 17 }, { 0, 22, 17 }, { 0, 23, 17 },
1544− { 0, 24, 17 }, { 0, 25, 17 }, { 0, 26, 17 }, { 0, 27, 17 },
1545− { 0, 28, 17 }, { 0, 29, 17 }, { 0, 30, 17 }, { 0, 31, 17 },
1546− { 0, 32, 17 }, { 0, 33, 17 }, { 0, 34, 17 }, { 0, 35, 17 },
1547− { 0, 36, 17 }, { 0, 37, 17 }, { 0, 38, 17 }, { 0, 39, 17 },
1548− { 0, 40, 17 }, { 0, 41, 17 }, { 0, 42, 17 }, { 0, 43, 17 },
1549− { 0, 44, 17 }, { 0, 45, 17 }, { 0, 46, 17 }, { 0, 47, 17 },
1550− { 0, 48, 17 }, { 0, 49, 17 }, { 0, 50, 17 }, { 0, 51, 17 },
1551− { 0, 52, 17 }, { 0, 53, 17 }, { 0, 54, 17 }, { 0, 55, 17 },
1552− { 0, 56, 17 }, { 0, 57, 17 }, { 0, 58, 17 }, { 0, 59, 17 },
1553− { 0, 60, 17 }, { 0, 61, 17 }, { 0, 62, 17 }, { 0, 63, 17 },
1554− RPT_16 ( 25, 1, 13 ), RPT_16 ( -25, 1, 13 ),
1555− RPT_16 ( 26, 1, 13 ), RPT_16 ( -26, 1, 13 ),
1556− RPT_16 ( 27, 1, 13 ), RPT_16 ( -27, 1, 13 ),
1557− RPT_16 ( 28, 1, 13 ), RPT_16 ( -28, 1, 13 ),
1558− RPT_16 ( 29, 1, 13 ), RPT_16 ( -29, 1, 13 ),
1559− RPT_16 ( 30, 1, 13 ), RPT_16 ( -30, 1, 13 ),
1560− RPT_16 ( 31, 1, 13 ), RPT_16 ( -31, 1, 13 ),
1561− RPT_16 ( 32, 1, 13 ), RPT_16 ( -32, 1, 13 ),
1562− RPT_16 ( 13, 2, 13 ), RPT_16 ( -13, 2, 13 ),
1563− RPT_16 ( 14, 2, 13 ), RPT_16 ( -14, 2, 13 ),
1564− RPT_16 ( 15, 2, 13 ), RPT_16 ( -15, 2, 13 ),
1565− RPT_16 ( 16, 2, 13 ), RPT_16 ( -16, 2, 13 ),
1566− RPT_16 ( 9, 3, 13 ), RPT_16 ( -9, 3, 13 ),
1567− RPT_16 ( 10, 3, 13 ), RPT_16 ( -10, 3, 13 ),
1568− RPT_16 ( 11, 3, 13 ), RPT_16 ( -11, 3, 13 ),
1569− RPT_16 ( 7, 4, 13 ), RPT_16 ( -7, 4, 13 ),
1570− RPT_16 ( 3, 7, 13 ), RPT_16 ( -3, 7, 13 ),
1571− RPT_16 ( 4, 7, 13 ), RPT_16 ( -4, 7, 13 ),
1572− RPT_16 ( 3, 8, 13 ), RPT_16 ( -3, 8, 13 ),
1573− RPT_16 ( 4, 8, 13 ), RPT_16 ( -4, 8, 13 ),
1574− RPT_16 ( 3, 9, 13 ), RPT_16 ( -3, 9, 13 ),
1575− RPT_16 ( 2, 11, 13 ), RPT_16 ( -2, 11, 13 ),
1576− RPT_16 ( 2, 12, 13 ), RPT_16 ( -2, 12, 13 ),
1577− RPT_32 ( 0, 14, 12 ),
1578−};
728+// level is in -255..255 range, run 0..64, so it fits into 16 bits.
729+#define E(level, run) ((level * 128) | run)
1579730
1580−static const HQXLUT ac16_lut[] = {
1581− RPT_256 ( 1, 0, 3 ), RPT_256 ( -1, 0, 3 ),
1582− RPT_128 ( 2, 0, 4 ), RPT_128 ( -2, 0, 4 ),
1583− RPT_64 ( 3, 0, 5 ), RPT_64 ( -3, 0, 5 ),
1584− RPT_64 ( 4, 0, 5 ), RPT_64 ( -4, 0, 5 ),
1585− RPT_64 ( 1, 1, 5 ), RPT_64 ( -1, 1, 5 ),
1586− RPT_128 ( 0, 64, 4 ), RPT_32 ( 5, 0, 6 ),
1587− RPT_32 ( -5, 0, 6 ), RPT_32 ( 6, 0, 6 ),
1588− RPT_32 ( -6, 0, 6 ), RPT_32 ( 2, 1, 6 ),
1589− RPT_32 ( -2, 1, 6 ), RPT_32 ( 1, 2, 6 ),
1590− RPT_32 ( -1, 2, 6 ), RPT_16 ( 7, 0, 7 ),
1591− RPT_16 ( -7, 0, 7 ), RPT_16 ( 8, 0, 7 ),
1592− RPT_16 ( -8, 0, 7 ), RPT_16 ( 9, 0, 7 ),
1593− RPT_16 ( -9, 0, 7 ), RPT_16 ( 3, 1, 7 ),
1594− RPT_16 ( -3, 1, 7 ), RPT_16 ( 1, 3, 7 ),
1595− RPT_16 ( -1, 3, 7 ), RPT_16 ( 1, 4, 7 ),
1596− RPT_16 ( -1, 4, 7 ), RPT_8 ( 10, 0, 8 ),
1597− RPT_8 ( -10, 0, 8 ), RPT_8 ( 11, 0, 8 ),
1598− RPT_8 ( -11, 0, 8 ), RPT_8 ( 12, 0, 8 ),
1599− RPT_8 ( -12, 0, 8 ), RPT_8 ( 4, 1, 8 ),
1600− RPT_8 ( -4, 1, 8 ), RPT_8 ( 2, 2, 8 ),
1601− RPT_8 ( -2, 2, 8 ), RPT_8 ( 1, 5, 8 ),
1602− RPT_8 ( -1, 5, 8 ), RPT_8 ( 1, 6, 8 ),
1603− RPT_8 ( -1, 6, 8 ), RPT_4 ( 13, 0, 9 ),
1604− RPT_4 ( -13, 0, 9 ), RPT_4 ( 14, 0, 9 ),
1605− RPT_4 ( -14, 0, 9 ), RPT_4 ( 15, 0, 9 ),
1606− RPT_4 ( -15, 0, 9 ), RPT_4 ( 16, 0, 9 ),
1607− RPT_4 ( -16, 0, 9 ), RPT_4 ( 17, 0, 9 ),
1608− RPT_4 ( -17, 0, 9 ), RPT_4 ( 5, 1, 9 ),
1609− RPT_4 ( -5, 1, 9 ), RPT_4 ( 2, 3, 9 ),
1610− RPT_4 ( -2, 3, 9 ), RPT_4 ( 1, 7, 9 ),
1611− RPT_4 ( -1, 7, 9 ), RPT_4 ( 1, 8, 9 ),
1612− RPT_4 ( -1, 8, 9 ), RPT_4 ( 1, 9, 9 ),
1613− RPT_4 ( -1, 9, 9 ), RPT_4 ( 1, 10, 9 ),
1614− RPT_4 ( -1, 10, 9 ), RPT_4 ( 0, 0, 9 ),
1615− RPT_2 ( 18, 0, 10 ), RPT_2 ( -18, 0, 10 ),
1616− RPT_2 ( 19, 0, 10 ), RPT_2 ( -19, 0, 10 ),
1617− RPT_2 ( 20, 0, 10 ), RPT_2 ( -20, 0, 10 ),
1618− RPT_2 ( 21, 0, 10 ), RPT_2 ( -21, 0, 10 ),
1619− RPT_2 ( 22, 0, 10 ), RPT_2 ( -22, 0, 10 ),
1620− RPT_2 ( 6, 1, 10 ), RPT_2 ( -6, 1, 10 ),
1621− RPT_2 ( 7, 1, 10 ), RPT_2 ( -7, 1, 10 ),
1622− RPT_2 ( 3, 2, 10 ), RPT_2 ( -3, 2, 10 ),
1623− RPT_2 ( 2, 4, 10 ), RPT_2 ( -2, 4, 10 ),
1624− RPT_2 ( 2, 5, 10 ), RPT_2 ( -2, 5, 10 ),
1625− RPT_2 ( 1, 11, 10 ), RPT_2 ( -1, 11, 10 ),
1626− RPT_2 ( 1, 12, 10 ), RPT_2 ( -1, 12, 10 ),
1627− RPT_2 ( 1, 13, 10 ), RPT_2 ( -1, 13, 10 ),
1628− { 2048, 0, -1 }, { 2112, 0, -1 }, { 2176, 0, -1 }, { 2240, 0, -1 },
1629− { 2304, 0, -1 }, { 2368, 0, -1 }, { 2432, 0, -1 }, { 2496, 0, -1 },
1630− { 23, 0, 11 }, { -23, 0, 11 }, { 24, 0, 11 }, { -24, 0, 11 },
1631− { 25, 0, 11 }, { -25, 0, 11 }, { 26, 0, 11 }, { -26, 0, 11 },
1632− { 27, 0, 11 }, { -27, 0, 11 }, { 28, 0, 11 }, { -28, 0, 11 },
1633− { 8, 1, 11 }, { -8, 1, 11 }, { 9, 1, 11 }, { -9, 1, 11 },
1634− { 4, 2, 11 }, { -4, 2, 11 }, { 3, 3, 11 }, { -3, 3, 11 },
1635− { 3, 4, 11 }, { -3, 4, 11 }, { 2, 6, 11 }, { -2, 6, 11 },
1636− { 2, 7, 11 }, { -2, 7, 11 }, { 2560, 0, -1 }, { 2624, 0, -1 },
1637− { 2688, 0, -1 }, { 2752, 0, -1 }, { 2816, 0, -1 }, { 2880, 0, -1 },
1638− { 2944, 0, -1 }, { 0, 1, 11 }, { 3008, 0, -1 }, { 3072, 0, -1 },
1639− { 3136, 0, -1 }, { 0, 2, 11 }, { 3200, 0, -1 }, { 0, 3, 11 },
1640− { 3264, 0, -1 }, { 3328, 0, -1 }, { 3392, 0, -1 }, { 3456, 0, -1 },
1641− { 3520, 0, -1 }, { 3584, 0, -1 }, { 3648, 0, -1 }, { 3712, 0, -1 },
1642− { 3776, 0, -1 }, { 3840, 0, -1 }, { 3904, 0, -1 }, { 3968, 0, -1 },
1643− { 4032, 0, -1 }, { 4096, 0, -1 }, { 4160, 0, -1 }, { 4224, 0, -1 },
1644− RPT_4 ( 0, 0, 15 ), RPT_4 ( 0, 1, 15 ),
1645− RPT_4 ( 0, 2, 15 ), RPT_4 ( 0, 3, 15 ),
1646− RPT_4 ( 0, 4, 15 ), RPT_4 ( 0, 5, 15 ),
1647− RPT_4 ( 0, 6, 15 ), RPT_4 ( 0, 7, 15 ),
1648− RPT_4 ( 0, 8, 15 ), RPT_4 ( 0, 9, 15 ),
1649− RPT_4 ( 0, 10, 15 ), RPT_4 ( 0, 11, 15 ),
1650− RPT_4 ( 0, 12, 15 ), RPT_4 ( 0, 13, 15 ),
1651− RPT_4 ( 0, 14, 15 ), RPT_4 ( 0, 15, 15 ),
1652− RPT_4 ( 0, 16, 15 ), RPT_4 ( 0, 17, 15 ),
1653− RPT_4 ( 0, 18, 15 ), RPT_4 ( 0, 19, 15 ),
1654− RPT_4 ( 0, 20, 15 ), RPT_4 ( 0, 21, 15 ),
1655− RPT_4 ( 0, 22, 15 ), RPT_4 ( 0, 23, 15 ),
1656− RPT_4 ( 0, 24, 15 ), RPT_4 ( 0, 25, 15 ),
1657− RPT_4 ( 0, 26, 15 ), RPT_4 ( 0, 27, 15 ),
1658− RPT_4 ( 0, 28, 15 ), RPT_4 ( 0, 29, 15 ),
1659− RPT_4 ( 0, 30, 15 ), RPT_4 ( 0, 31, 15 ),
1660− RPT_4 ( 0, 32, 15 ), RPT_4 ( 0, 33, 15 ),
1661− RPT_4 ( 0, 34, 15 ), RPT_4 ( 0, 35, 15 ),
1662− RPT_4 ( 0, 36, 15 ), RPT_4 ( 0, 37, 15 ),
1663− RPT_4 ( 0, 38, 15 ), RPT_4 ( 0, 39, 15 ),
1664− RPT_4 ( 0, 40, 15 ), RPT_4 ( 0, 41, 15 ),
1665− RPT_4 ( 0, 42, 15 ), RPT_4 ( 0, 43, 15 ),
1666− RPT_4 ( 0, 44, 15 ), RPT_4 ( 0, 45, 15 ),
1667− RPT_4 ( 0, 46, 15 ), RPT_4 ( 0, 47, 15 ),
1668− RPT_4 ( 0, 48, 15 ), RPT_4 ( 0, 49, 15 ),
1669− RPT_4 ( 0, 50, 15 ), RPT_4 ( 0, 51, 15 ),
1670− RPT_4 ( 0, 52, 15 ), RPT_4 ( 0, 53, 15 ),
1671− RPT_4 ( 0, 54, 15 ), RPT_4 ( 0, 55, 15 ),
1672− RPT_4 ( 0, 56, 15 ), RPT_4 ( 0, 57, 15 ),
1673− RPT_4 ( 0, 58, 15 ), RPT_4 ( 0, 59, 15 ),
1674− RPT_4 ( 0, 60, 15 ), RPT_4 ( 0, 61, 15 ),
1675− RPT_4 ( 0, 62, 15 ), RPT_4 ( 0, 63, 15 ),
1676− RPT_2 ( 0, 0, 16 ), { 1, 0, 17 }, { -1, 0, 17 },
1677− { 2, 0, 17 }, { -2, 0, 17 }, { 3, 0, 17 }, { -3, 0, 17 },
1678− { 4, 0, 17 }, { -4, 0, 17 }, { 5, 0, 17 }, { -5, 0, 17 },
1679− { 6, 0, 17 }, { -6, 0, 17 }, { 7, 0, 17 }, { -7, 0, 17 },
1680− { 8, 0, 17 }, { -8, 0, 17 }, { 9, 0, 17 }, { -9, 0, 17 },
1681− { 10, 0, 17 }, { -10, 0, 17 }, { 11, 0, 17 }, { -11, 0, 17 },
1682− { 12, 0, 17 }, { -12, 0, 17 }, { 13, 0, 17 }, { -13, 0, 17 },
1683− { 14, 0, 17 }, { -14, 0, 17 }, { 15, 0, 17 }, { -15, 0, 17 },
1684− { 16, 0, 17 }, { -16, 0, 17 }, { 17, 0, 17 }, { -17, 0, 17 },
1685− { 18, 0, 17 }, { -18, 0, 17 }, { 19, 0, 17 }, { -19, 0, 17 },
1686− { 20, 0, 17 }, { -20, 0, 17 }, { 21, 0, 17 }, { -21, 0, 17 },
1687− { 22, 0, 17 }, { -22, 0, 17 }, { 23, 0, 17 }, { -23, 0, 17 },
1688− { 24, 0, 17 }, { -24, 0, 17 }, { 25, 0, 17 }, { -25, 0, 17 },
1689− { 26, 0, 17 }, { -26, 0, 17 }, { 27, 0, 17 }, { -27, 0, 17 },
1690− { 28, 0, 17 }, { -28, 0, 17 }, { 29, 0, 17 }, { -29, 0, 17 },
1691− { 30, 0, 17 }, { -30, 0, 17 }, { 31, 0, 17 }, { -31, 0, 17 },
1692− { 32, 0, 17 }, { -32, 0, 17 }, { 33, 0, 17 }, { -33, 0, 17 },
1693− { 34, 0, 17 }, { -34, 0, 17 }, { 35, 0, 17 }, { -35, 0, 17 },
1694− { 36, 0, 17 }, { -36, 0, 17 }, { 37, 0, 17 }, { -37, 0, 17 },
1695− { 38, 0, 17 }, { -38, 0, 17 }, { 39, 0, 17 }, { -39, 0, 17 },
1696− { 40, 0, 17 }, { -40, 0, 17 }, { 41, 0, 17 }, { -41, 0, 17 },
1697− { 42, 0, 17 }, { -42, 0, 17 }, { 43, 0, 17 }, { -43, 0, 17 },
1698− { 44, 0, 17 }, { -44, 0, 17 }, { 45, 0, 17 }, { -45, 0, 17 },
1699− { 46, 0, 17 }, { -46, 0, 17 }, { 47, 0, 17 }, { -47, 0, 17 },
1700− { 48, 0, 17 }, { -48, 0, 17 }, { 49, 0, 17 }, { -49, 0, 17 },
1701− { 50, 0, 17 }, { -50, 0, 17 }, { 51, 0, 17 }, { -51, 0, 17 },
1702− { 52, 0, 17 }, { -52, 0, 17 }, { 53, 0, 17 }, { -53, 0, 17 },
1703− { 54, 0, 17 }, { -54, 0, 17 }, { 55, 0, 17 }, { -55, 0, 17 },
1704− { 56, 0, 17 }, { -56, 0, 17 }, { 57, 0, 17 }, { -57, 0, 17 },
1705− { 58, 0, 17 }, { -58, 0, 17 }, { 59, 0, 17 }, { -59, 0, 17 },
1706− { 60, 0, 17 }, { -60, 0, 17 }, { 61, 0, 17 }, { -61, 0, 17 },
1707− { 62, 0, 17 }, { -62, 0, 17 }, { 63, 0, 17 }, { -63, 0, 17 },
1708− { 64, 0, 17 }, { -64, 0, 17 }, { 65, 0, 17 }, { -65, 0, 17 },
1709− { 66, 0, 17 }, { -66, 0, 17 }, { 67, 0, 17 }, { -67, 0, 17 },
1710− { 68, 0, 17 }, { -68, 0, 17 }, { 69, 0, 17 }, { -69, 0, 17 },
1711− { 70, 0, 17 }, { -70, 0, 17 }, { 71, 0, 17 }, { -71, 0, 17 },
1712− { 72, 0, 17 }, { -72, 0, 17 }, { 73, 0, 17 }, { -73, 0, 17 },
1713− { 74, 0, 17 }, { -74, 0, 17 }, { 75, 0, 17 }, { -75, 0, 17 },
1714− { 76, 0, 17 }, { -76, 0, 17 }, { 77, 0, 17 }, { -77, 0, 17 },
1715− { 78, 0, 17 }, { -78, 0, 17 }, { 79, 0, 17 }, { -79, 0, 17 },
1716− { 80, 0, 17 }, { -80, 0, 17 }, { 81, 0, 17 }, { -81, 0, 17 },
1717− { 82, 0, 17 }, { -82, 0, 17 }, { 83, 0, 17 }, { -83, 0, 17 },
1718− { 84, 0, 17 }, { -84, 0, 17 }, { 85, 0, 17 }, { -85, 0, 17 },
1719− { 86, 0, 17 }, { -86, 0, 17 }, { 87, 0, 17 }, { -87, 0, 17 },
1720− { 88, 0, 17 }, { -88, 0, 17 }, { 89, 0, 17 }, { -89, 0, 17 },
1721− { 90, 0, 17 }, { -90, 0, 17 }, { 91, 0, 17 }, { -91, 0, 17 },
1722− { 92, 0, 17 }, { -92, 0, 17 }, { 93, 0, 17 }, { -93, 0, 17 },
1723− { 94, 0, 17 }, { -94, 0, 17 }, { 95, 0, 17 }, { -95, 0, 17 },
1724− { 96, 0, 17 }, { -96, 0, 17 }, { 97, 0, 17 }, { -97, 0, 17 },
1725− { 98, 0, 17 }, { -98, 0, 17 }, { 99, 0, 17 }, { -99, 0, 17 },
1726− { 100, 0, 17 }, { -100, 0, 17 }, { 101, 0, 17 }, { -101, 0, 17 },
1727− { 102, 0, 17 }, { -102, 0, 17 }, { 103, 0, 17 }, { -103, 0, 17 },
1728− { 104, 0, 17 }, { -104, 0, 17 }, { 105, 0, 17 }, { -105, 0, 17 },
1729− { 106, 0, 17 }, { -106, 0, 17 }, { 107, 0, 17 }, { -107, 0, 17 },
1730− { 108, 0, 17 }, { -108, 0, 17 }, { 109, 0, 17 }, { -109, 0, 17 },
1731− { 110, 0, 17 }, { -110, 0, 17 }, { 111, 0, 17 }, { -111, 0, 17 },
1732− { 112, 0, 17 }, { -112, 0, 17 }, { 113, 0, 17 }, { -113, 0, 17 },
1733− { 114, 0, 17 }, { -114, 0, 17 }, { 115, 0, 17 }, { -115, 0, 17 },
1734− { 116, 0, 17 }, { -116, 0, 17 }, { 117, 0, 17 }, { -117, 0, 17 },
1735− { 118, 0, 17 }, { -118, 0, 17 }, { 119, 0, 17 }, { -119, 0, 17 },
1736− { 120, 0, 17 }, { -120, 0, 17 }, { 121, 0, 17 }, { -121, 0, 17 },
1737− { 122, 0, 17 }, { -122, 0, 17 }, { 123, 0, 17 }, { -123, 0, 17 },
1738− { 124, 0, 17 }, { -124, 0, 17 }, { 125, 0, 17 }, { -125, 0, 17 },
1739− { 126, 0, 17 }, { -126, 0, 17 }, { 127, 0, 17 }, { -127, 0, 17 },
1740− RPT_32 ( 29, 0, 12 ), RPT_32 ( -29, 0, 12 ),
1741− RPT_32 ( 30, 0, 12 ), RPT_32 ( -30, 0, 12 ),
1742− RPT_32 ( 31, 0, 12 ), RPT_32 ( -31, 0, 12 ),
1743− RPT_32 ( 32, 0, 12 ), RPT_32 ( -32, 0, 12 ),
1744− RPT_32 ( 33, 0, 12 ), RPT_32 ( -33, 0, 12 ),
1745− RPT_32 ( 34, 0, 12 ), RPT_32 ( -34, 0, 12 ),
1746− RPT_32 ( 35, 0, 12 ), RPT_32 ( -35, 0, 12 ),
1747− RPT_32 ( 10, 1, 12 ), RPT_32 ( -10, 1, 12 ),
1748− RPT_32 ( 11, 1, 12 ), RPT_32 ( -11, 1, 12 ),
1749− RPT_32 ( 12, 1, 12 ), RPT_32 ( -12, 1, 12 ),
1750− RPT_32 ( 5, 2, 12 ), RPT_32 ( -5, 2, 12 ),
1751− RPT_32 ( 4, 3, 12 ), RPT_32 ( -4, 3, 12 ),
1752− RPT_32 ( 3, 5, 12 ), RPT_32 ( -3, 5, 12 ),
1753− RPT_32 ( 2, 8, 12 ), RPT_32 ( -2, 8, 12 ),
1754− RPT_32 ( 2, 9, 12 ), RPT_32 ( -2, 9, 12 ),
1755− RPT_32 ( 1, 14, 12 ), RPT_32 ( -1, 14, 12 ),
1756− RPT_32 ( 1, 15, 12 ), RPT_32 ( -1, 15, 12 ),
1757− RPT_16 ( 36, 0, 13 ), RPT_16 ( -36, 0, 13 ),
1758− RPT_16 ( 37, 0, 13 ), RPT_16 ( -37, 0, 13 ),
1759− RPT_16 ( 38, 0, 13 ), RPT_16 ( -38, 0, 13 ),
1760− RPT_16 ( 39, 0, 13 ), RPT_16 ( -39, 0, 13 ),
1761− RPT_16 ( 40, 0, 13 ), RPT_16 ( -40, 0, 13 ),
1762− RPT_16 ( 13, 1, 13 ), RPT_16 ( -13, 1, 13 ),
1763− RPT_16 ( 14, 1, 13 ), RPT_16 ( -14, 1, 13 ),
1764− RPT_16 ( 15, 1, 13 ), RPT_16 ( -15, 1, 13 ),
1765− RPT_16 ( 6, 2, 13 ), RPT_16 ( -6, 2, 13 ),
1766− RPT_16 ( 7, 2, 13 ), RPT_16 ( -7, 2, 13 ),
1767− RPT_16 ( 5, 3, 13 ), RPT_16 ( -5, 3, 13 ),
1768− RPT_32 ( 0, 4, 12 ), RPT_16 ( 4, 4, 13 ),
1769− RPT_16 ( -4, 4, 13 ), RPT_32 ( 0, 5, 12 ),
1770− RPT_32 ( 0, 6, 12 ), RPT_16 ( 3, 6, 13 ),
1771− RPT_16 ( -3, 6, 13 ), RPT_32 ( 0, 7, 12 ),
1772− RPT_16 ( 3, 7, 13 ), RPT_16 ( -3, 7, 13 ),
1773− RPT_16 ( 2, 10, 13 ), RPT_16 ( -2, 10, 13 ),
1774− RPT_16 ( 1, 16, 13 ), RPT_16 ( -1, 16, 13 ),
731+static const int16_t hqx_ac_run_level[] = {
732+ // AC table Q0 - 815 elements
733+ E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0),
734+ E( -3, 0), E( 4, 0), E( -4, 0), E( 1, 1), E( -1, 1),
735+ E( 5, 0), E( -5, 0), E( 6, 0), E( -6, 0), E( 7, 0),
736+ E( -7, 0), E( 8, 0), E( -8, 0), E( 0, 0), E( 1, 0),
737+ E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0), E( -3, 0),
738+ E( 4, 0), E( -4, 0), E( 5, 0), E( -5, 0), E( 6, 0),
739+ E( -6, 0), E( 7, 0), E( -7, 0), E( 8, 0), E( -8, 0),
740+ E( 9, 0), E( -9, 0), E( 10, 0), E( -10, 0), E( 11, 0),
741+ E( -11, 0), E( 12, 0), E( -12, 0), E( 13, 0), E( -13, 0),
742+ E( 14, 0), E( -14, 0), E( 15, 0), E( -15, 0), E( 16, 0),
743+ E( -16, 0), E( 17, 0), E( -17, 0), E( 18, 0), E( -18, 0),
744+ E( 19, 0), E( -19, 0), E( 20, 0), E( -20, 0), E( 21, 0),
745+ E( -21, 0), E( 22, 0), E( -22, 0), E( 23, 0), E( -23, 0),
746+ E( 24, 0), E( -24, 0), E( 25, 0), E( -25, 0), E( 26, 0),
747+ E( -26, 0), E( 27, 0), E( -27, 0), E( 28, 0), E( -28, 0),
748+ E( 29, 0), E( -29, 0), E( 30, 0), E( -30, 0), E( 31, 0),
749+ E( -31, 0), E( 32, 0), E( -32, 0), E( 33, 0), E( -33, 0),
750+ E( 34, 0), E( -34, 0), E( 35, 0), E( -35, 0), E( 36, 0),
751+ E( -36, 0), E( 37, 0), E( -37, 0), E( 38, 0), E( -38, 0),
752+ E( 39, 0), E( -39, 0), E( 40, 0), E( -40, 0), E( 41, 0),
753+ E( -41, 0), E( 42, 0), E( -42, 0), E( 43, 0), E( -43, 0),
754+ E( 44, 0), E( -44, 0), E( 45, 0), E( -45, 0), E( 46, 0),
755+ E( -46, 0), E( 47, 0), E( -47, 0), E( 48, 0), E( -48, 0),
756+ E( 49, 0), E( -49, 0), E( 50, 0), E( -50, 0), E( 51, 0),
757+ E( -51, 0), E( 52, 0), E( -52, 0), E( 53, 0), E( -53, 0),
758+ E( 54, 0), E( -54, 0), E( 55, 0), E( -55, 0), E( 56, 0),
759+ E( -56, 0), E( 57, 0), E( -57, 0), E( 58, 0), E( -58, 0),
760+ E( 59, 0), E( -59, 0), E( 60, 0), E( -60, 0), E( 61, 0),
761+ E( -61, 0), E( 62, 0), E( -62, 0), E( 63, 0), E( -63, 0),
762+ E( 64, 0), E( -64, 0), E( 65, 0), E( -65, 0), E( 66, 0),
763+ E( -66, 0), E( 67, 0), E( -67, 0), E( 68, 0), E( -68, 0),
764+ E( 69, 0), E( -69, 0), E( 70, 0), E( -70, 0), E( 71, 0),
765+ E( -71, 0), E( 72, 0), E( -72, 0), E( 73, 0), E( -73, 0),
766+ E( 74, 0), E( -74, 0), E( 75, 0), E( -75, 0), E( 76, 0),
767+ E( -76, 0), E( 77, 0), E( -77, 0), E( 78, 0), E( -78, 0),
768+ E( 79, 0), E( -79, 0), E( 80, 0), E( -80, 0), E( 81, 0),
769+ E( -81, 0), E( 82, 0), E( -82, 0), E( 83, 0), E( -83, 0),
770+ E( 84, 0), E( -84, 0), E( 85, 0), E( -85, 0), E( 86, 0),
771+ E( -86, 0), E( 87, 0), E( -87, 0), E( 88, 0), E( -88, 0),
772+ E( 89, 0), E( -89, 0), E( 90, 0), E( -90, 0), E( 91, 0),
773+ E( -91, 0), E( 92, 0), E( -92, 0), E( 93, 0), E( -93, 0),
774+ E( 94, 0), E( -94, 0), E( 95, 0), E( -95, 0), E( 96, 0),
775+ E( -96, 0), E( 97, 0), E( -97, 0), E( 98, 0), E( -98, 0),
776+ E( 99, 0), E( -99, 0), E( 100, 0), E(-100, 0), E( 101, 0),
777+ E(-101, 0), E( 102, 0), E(-102, 0), E( 103, 0), E(-103, 0),
778+ E( 104, 0), E(-104, 0), E( 105, 0), E(-105, 0), E( 106, 0),
779+ E(-106, 0), E( 107, 0), E(-107, 0), E( 108, 0), E(-108, 0),
780+ E( 109, 0), E(-109, 0), E( 110, 0), E(-110, 0), E( 111, 0),
781+ E(-111, 0), E( 112, 0), E(-112, 0), E( 113, 0), E(-113, 0),
782+ E( 114, 0), E(-114, 0), E( 115, 0), E(-115, 0), E( 116, 0),
783+ E(-116, 0), E( 117, 0), E(-117, 0), E( 118, 0), E(-118, 0),
784+ E( 119, 0), E(-119, 0), E( 120, 0), E(-120, 0), E( 121, 0),
785+ E(-121, 0), E( 122, 0), E(-122, 0), E( 123, 0), E(-123, 0),
786+ E( 124, 0), E(-124, 0), E( 125, 0), E(-125, 0), E( 126, 0),
787+ E(-126, 0), E( 127, 0), E(-127, 0), E( 128, 0), E(-128, 0),
788+ E( 129, 0), E(-129, 0), E( 130, 0), E(-130, 0), E( 131, 0),
789+ E(-131, 0), E( 132, 0), E(-132, 0), E( 133, 0), E(-133, 0),
790+ E( 134, 0), E(-134, 0), E( 135, 0), E(-135, 0), E( 136, 0),
791+ E(-136, 0), E( 137, 0), E(-137, 0), E( 138, 0), E(-138, 0),
792+ E( 139, 0), E(-139, 0), E( 140, 0), E(-140, 0), E( 141, 0),
793+ E(-141, 0), E( 142, 0), E(-142, 0), E( 143, 0), E(-143, 0),
794+ E( 144, 0), E(-144, 0), E( 145, 0), E(-145, 0), E( 146, 0),
795+ E(-146, 0), E( 147, 0), E(-147, 0), E( 148, 0), E(-148, 0),
796+ E( 149, 0), E(-149, 0), E( 150, 0), E(-150, 0), E( 151, 0),
797+ E(-151, 0), E( 152, 0), E(-152, 0), E( 153, 0), E(-153, 0),
798+ E( 154, 0), E(-154, 0), E( 155, 0), E(-155, 0), E( 156, 0),
799+ E(-156, 0), E( 157, 0), E(-157, 0), E( 158, 0), E(-158, 0),
800+ E( 159, 0), E(-159, 0), E( 160, 0), E(-160, 0), E( 161, 0),
801+ E(-161, 0), E( 162, 0), E(-162, 0), E( 163, 0), E(-163, 0),
802+ E( 164, 0), E(-164, 0), E( 165, 0), E(-165, 0), E( 166, 0),
803+ E(-166, 0), E( 167, 0), E(-167, 0), E( 168, 0), E(-168, 0),
804+ E( 169, 0), E(-169, 0), E( 170, 0), E(-170, 0), E( 171, 0),
805+ E(-171, 0), E( 172, 0), E(-172, 0), E( 173, 0), E(-173, 0),
806+ E( 174, 0), E(-174, 0), E( 175, 0), E(-175, 0), E( 176, 0),
807+ E(-176, 0), E( 177, 0), E(-177, 0), E( 178, 0), E(-178, 0),
808+ E( 179, 0), E(-179, 0), E( 180, 0), E(-180, 0), E( 181, 0),
809+ E(-181, 0), E( 182, 0), E(-182, 0), E( 183, 0), E(-183, 0),
810+ E( 184, 0), E(-184, 0), E( 185, 0), E(-185, 0), E( 186, 0),
811+ E(-186, 0), E( 187, 0), E(-187, 0), E( 188, 0), E(-188, 0),
812+ E( 189, 0), E(-189, 0), E( 190, 0), E(-190, 0), E( 191, 0),
813+ E(-191, 0), E( 192, 0), E(-192, 0), E( 193, 0), E(-193, 0),
814+ E( 194, 0), E(-194, 0), E( 195, 0), E(-195, 0), E( 196, 0),
815+ E(-196, 0), E( 197, 0), E(-197, 0), E( 198, 0), E(-198, 0),
816+ E( 199, 0), E(-199, 0), E( 200, 0), E(-200, 0), E( 201, 0),
817+ E(-201, 0), E( 202, 0), E(-202, 0), E( 203, 0), E(-203, 0),
818+ E( 204, 0), E(-204, 0), E( 205, 0), E(-205, 0), E( 206, 0),
819+ E(-206, 0), E( 207, 0), E(-207, 0), E( 208, 0), E(-208, 0),
820+ E( 209, 0), E(-209, 0), E( 210, 0), E(-210, 0), E( 211, 0),
821+ E(-211, 0), E( 212, 0), E(-212, 0), E( 213, 0), E(-213, 0),
822+ E( 214, 0), E(-214, 0), E( 215, 0), E(-215, 0), E( 216, 0),
823+ E(-216, 0), E( 217, 0), E(-217, 0), E( 218, 0), E(-218, 0),
824+ E( 219, 0), E(-219, 0), E( 220, 0), E(-220, 0), E( 221, 0),
825+ E(-221, 0), E( 222, 0), E(-222, 0), E( 223, 0), E(-223, 0),
826+ E( 224, 0), E(-224, 0), E( 225, 0), E(-225, 0), E( 226, 0),
827+ E(-226, 0), E( 227, 0), E(-227, 0), E( 228, 0), E(-228, 0),
828+ E( 229, 0), E(-229, 0), E( 230, 0), E(-230, 0), E( 231, 0),
829+ E(-231, 0), E( 232, 0), E(-232, 0), E( 233, 0), E(-233, 0),
830+ E( 234, 0), E(-234, 0), E( 235, 0), E(-235, 0), E( 236, 0),
831+ E(-236, 0), E( 237, 0), E(-237, 0), E( 238, 0), E(-238, 0),
832+ E( 239, 0), E(-239, 0), E( 240, 0), E(-240, 0), E( 241, 0),
833+ E(-241, 0), E( 242, 0), E(-242, 0), E( 243, 0), E(-243, 0),
834+ E( 244, 0), E(-244, 0), E( 245, 0), E(-245, 0), E( 246, 0),
835+ E(-246, 0), E( 247, 0), E(-247, 0), E( 248, 0), E(-248, 0),
836+ E( 249, 0), E(-249, 0), E( 250, 0), E(-250, 0), E( 251, 0),
837+ E(-251, 0), E( 252, 0), E(-252, 0), E( 253, 0), E(-253, 0),
838+ E( 254, 0), E(-254, 0), E( 255, 0), E(-255, 0), E( 0, 64),
839+ E( 9, 0), E( -9, 0), E( 10, 0), E( -10, 0), E( 11, 0),
840+ E( -11, 0), E( 12, 0), E( -12, 0), E( 13, 0), E( -13, 0),
841+ E( 14, 0), E( -14, 0), E( 2, 1), E( -2, 1), E( 1, 2),
842+ E( -1, 2), E( 15, 0), E( -15, 0), E( 16, 0), E( -16, 0),
843+ E( 17, 0), E( -17, 0), E( 18, 0), E( -18, 0), E( 19, 0),
844+ E( -19, 0), E( 20, 0), E( -20, 0), E( 21, 0), E( -21, 0),
845+ E( 3, 1), E( -3, 1), E( 4, 1), E( -4, 1), E( 1, 3),
846+ E( -1, 3), E( 1, 4), E( -1, 4), E( 0, 0), E( 22, 0),
847+ E( -22, 0), E( 23, 0), E( -23, 0), E( 24, 0), E( -24, 0),
848+ E( 25, 0), E( -25, 0), E( 26, 0), E( -26, 0), E( 27, 0),
849+ E( -27, 0), E( 28, 0), E( -28, 0), E( 29, 0), E( -29, 0),
850+ E( 30, 0), E( -30, 0), E( 31, 0), E( -31, 0), E( 32, 0),
851+ E( -32, 0), E( 33, 0), E( -33, 0), E( 5, 1), E( -5, 1),
852+ E( 6, 1), E( -6, 1), E( 2, 2), E( -2, 2), E( 1, 5),
853+ E( -1, 5), E( 1, 6), E( -1, 6), E( 34, 0), E( -34, 0),
854+ E( 35, 0), E( -35, 0), E( 36, 0), E( -36, 0), E( 37, 0),
855+ E( -37, 0), E( 38, 0), E( -38, 0), E( 39, 0), E( -39, 0),
856+ E( 40, 0), E( -40, 0), E( 41, 0), E( -41, 0), E( 42, 0),
857+ E( -42, 0), E( 43, 0), E( -43, 0), E( 44, 0), E( -44, 0),
858+ E( 45, 0), E( -45, 0), E( 46, 0), E( -46, 0), E( 47, 0),
859+ E( -47, 0), E( 48, 0), E( -48, 0), E( 49, 0), E( -49, 0),
860+ E( 50, 0), E( -50, 0), E( 0, 1), E( 7, 1), E( -7, 1),
861+ E( 8, 1), E( -8, 1), E( 9, 1), E( -9, 1), E( 10, 1),
862+ E( -10, 1), E( 0, 2), E( 3, 2), E( -3, 2), E( 0, 3),
863+ E( 2, 3), E( -2, 3), E( 1, 7), E( -1, 7), E( 1, 8),
864+ E( -1, 8), E( 0, 0), E( 0, 1), E( 0, 2), E( 0, 3),
865+ E( 0, 4), E( 0, 5), E( 0, 6), E( 0, 7), E( 0, 8),
866+ E( 0, 9), E( 0, 10), E( 0, 11), E( 0, 12), E( 0, 13),
867+ E( 0, 14), E( 0, 15), E( 0, 16), E( 0, 17), E( 0, 18),
868+ E( 0, 19), E( 0, 20), E( 0, 21), E( 0, 22), E( 0, 23),
869+ E( 0, 24), E( 0, 25), E( 0, 26), E( 0, 27), E( 0, 28),
870+ E( 0, 29), E( 0, 30), E( 0, 31), E( 0, 32), E( 0, 33),
871+ E( 0, 34), E( 0, 35), E( 0, 36), E( 0, 37), E( 0, 38),
872+ E( 0, 39), E( 0, 40), E( 0, 41), E( 0, 42), E( 0, 43),
873+ E( 0, 44), E( 0, 45), E( 0, 46), E( 0, 47), E( 0, 48),
874+ E( 0, 49), E( 0, 50), E( 0, 51), E( 0, 52), E( 0, 53),
875+ E( 0, 54), E( 0, 55), E( 0, 56), E( 0, 57), E( 0, 58),
876+ E( 0, 59), E( 0, 60), E( 0, 61), E( 0, 62), E( 0, 63),
877+ E( 51, 0), E( -51, 0), E( 52, 0), E( -52, 0), E( 53, 0),
878+ E( -53, 0), E( 54, 0), E( -54, 0), E( 55, 0), E( -55, 0),
879+ E( 56, 0), E( -56, 0), E( 57, 0), E( -57, 0), E( 58, 0),
880+ E( -58, 0), E( 59, 0), E( -59, 0), E( 60, 0), E( -60, 0),
881+ E( 61, 0), E( -61, 0), E( 62, 0), E( -62, 0), E( 63, 0),
882+ E( -63, 0), E( 11, 1), E( -11, 1), E( 12, 1), E( -12, 1),
883+ E( 13, 1), E( -13, 1), E( 14, 1), E( -14, 1), E( 4, 2),
884+ E( -4, 2), E( 5, 2), E( -5, 2), E( 6, 2), E( -6, 2),
885+ E( 3, 3), E( -3, 3), E( 0, 4), E( 2, 4), E( -2, 4),
886+ E( 0, 5), E( 0, 6), E( 1, 9), E( -1, 9), E( 1, 10),
887+ E( -1, 10), E( 15, 1), E( -15, 1), E( 16, 1), E( -16, 1),
888+ E( 17, 1), E( -17, 1), E( 18, 1), E( -18, 1), E( 7, 2),
889+ E( -7, 2), E( 8, 2), E( -8, 2), E( 9, 2), E( -9, 2),
890+ E( 10, 2), E( -10, 2), E( 4, 3), E( -4, 3), E( 5, 3),
891+ E( -5, 3), E( 6, 3), E( -6, 3), E( 2, 5), E( -2, 5),
892+ E( 0, 7), E( 0, 8), E( 0, 9), E( 0, 10), E( 1, 11),
893+ E( -1, 11), E( 1, 12), E( -1, 12), E( 1, 13), E( -1, 13),
894+ E( 1, 14), E( -1, 14), E( 19, 1), E( -19, 1), E( 20, 1),
895+ E( -20, 1), E( 3, 4), E( -3, 4), E( 2, 6), E( -2, 6),
896+ // AC table Q8 - 907 elements
897+ E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0),
898+ E( -3, 0), E( 4, 0), E( -4, 0), E( 0, 64), E( 5, 0),
899+ E( -5, 0), E( 6, 0), E( -6, 0), E( 7, 0), E( -7, 0),
900+ E( 8, 0), E( -8, 0), E( 1, 1), E( -1, 1), E( 2, 1),
901+ E( -2, 1), E( 9, 0), E( -9, 0), E( 10, 0), E( -10, 0),
902+ E( 11, 0), E( -11, 0), E( 12, 0), E( -12, 0), E( 3, 1),
903+ E( -3, 1), E( 4, 1), E( -4, 1), E( 1, 2), E( -1, 2),
904+ E( 0, 0), E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0),
905+ E( 3, 0), E( -3, 0), E( 4, 0), E( -4, 0), E( 5, 0),
906+ E( -5, 0), E( 6, 0), E( -6, 0), E( 7, 0), E( -7, 0),
907+ E( 8, 0), E( -8, 0), E( 9, 0), E( -9, 0), E( 10, 0),
908+ E( -10, 0), E( 11, 0), E( -11, 0), E( 12, 0), E( -12, 0),
909+ E( 13, 0), E( -13, 0), E( 14, 0), E( -14, 0), E( 15, 0),
910+ E( -15, 0), E( 16, 0), E( -16, 0), E( 17, 0), E( -17, 0),
911+ E( 18, 0), E( -18, 0), E( 19, 0), E( -19, 0), E( 20, 0),
912+ E( -20, 0), E( 21, 0), E( -21, 0), E( 22, 0), E( -22, 0),
913+ E( 23, 0), E( -23, 0), E( 24, 0), E( -24, 0), E( 25, 0),
914+ E( -25, 0), E( 26, 0), E( -26, 0), E( 27, 0), E( -27, 0),
915+ E( 28, 0), E( -28, 0), E( 29, 0), E( -29, 0), E( 30, 0),
916+ E( -30, 0), E( 31, 0), E( -31, 0), E( 32, 0), E( -32, 0),
917+ E( 33, 0), E( -33, 0), E( 34, 0), E( -34, 0), E( 35, 0),
918+ E( -35, 0), E( 36, 0), E( -36, 0), E( 37, 0), E( -37, 0),
919+ E( 38, 0), E( -38, 0), E( 39, 0), E( -39, 0), E( 40, 0),
920+ E( -40, 0), E( 41, 0), E( -41, 0), E( 42, 0), E( -42, 0),
921+ E( 43, 0), E( -43, 0), E( 44, 0), E( -44, 0), E( 45, 0),
922+ E( -45, 0), E( 46, 0), E( -46, 0), E( 47, 0), E( -47, 0),
923+ E( 48, 0), E( -48, 0), E( 49, 0), E( -49, 0), E( 50, 0),
924+ E( -50, 0), E( 51, 0), E( -51, 0), E( 52, 0), E( -52, 0),
925+ E( 53, 0), E( -53, 0), E( 54, 0), E( -54, 0), E( 55, 0),
926+ E( -55, 0), E( 56, 0), E( -56, 0), E( 57, 0), E( -57, 0),
927+ E( 58, 0), E( -58, 0), E( 59, 0), E( -59, 0), E( 60, 0),
928+ E( -60, 0), E( 61, 0), E( -61, 0), E( 62, 0), E( -62, 0),
929+ E( 63, 0), E( -63, 0), E( 64, 0), E( -64, 0), E( 65, 0),
930+ E( -65, 0), E( 66, 0), E( -66, 0), E( 67, 0), E( -67, 0),
931+ E( 68, 0), E( -68, 0), E( 69, 0), E( -69, 0), E( 70, 0),
932+ E( -70, 0), E( 71, 0), E( -71, 0), E( 72, 0), E( -72, 0),
933+ E( 73, 0), E( -73, 0), E( 74, 0), E( -74, 0), E( 75, 0),
934+ E( -75, 0), E( 76, 0), E( -76, 0), E( 77, 0), E( -77, 0),
935+ E( 78, 0), E( -78, 0), E( 79, 0), E( -79, 0), E( 80, 0),
936+ E( -80, 0), E( 81, 0), E( -81, 0), E( 82, 0), E( -82, 0),
937+ E( 83, 0), E( -83, 0), E( 84, 0), E( -84, 0), E( 85, 0),
938+ E( -85, 0), E( 86, 0), E( -86, 0), E( 87, 0), E( -87, 0),
939+ E( 88, 0), E( -88, 0), E( 89, 0), E( -89, 0), E( 90, 0),
940+ E( -90, 0), E( 91, 0), E( -91, 0), E( 92, 0), E( -92, 0),
941+ E( 93, 0), E( -93, 0), E( 94, 0), E( -94, 0), E( 95, 0),
942+ E( -95, 0), E( 96, 0), E( -96, 0), E( 97, 0), E( -97, 0),
943+ E( 98, 0), E( -98, 0), E( 99, 0), E( -99, 0), E( 100, 0),
944+ E(-100, 0), E( 101, 0), E(-101, 0), E( 102, 0), E(-102, 0),
945+ E( 103, 0), E(-103, 0), E( 104, 0), E(-104, 0), E( 105, 0),
946+ E(-105, 0), E( 106, 0), E(-106, 0), E( 107, 0), E(-107, 0),
947+ E( 108, 0), E(-108, 0), E( 109, 0), E(-109, 0), E( 110, 0),
948+ E(-110, 0), E( 111, 0), E(-111, 0), E( 112, 0), E(-112, 0),
949+ E( 113, 0), E(-113, 0), E( 114, 0), E(-114, 0), E( 115, 0),
950+ E(-115, 0), E( 116, 0), E(-116, 0), E( 117, 0), E(-117, 0),
951+ E( 118, 0), E(-118, 0), E( 119, 0), E(-119, 0), E( 120, 0),
952+ E(-120, 0), E( 121, 0), E(-121, 0), E( 122, 0), E(-122, 0),
953+ E( 123, 0), E(-123, 0), E( 124, 0), E(-124, 0), E( 125, 0),
954+ E(-125, 0), E( 126, 0), E(-126, 0), E( 127, 0), E(-127, 0),
955+ E( 128, 0), E(-128, 0), E( 129, 0), E(-129, 0), E( 130, 0),
956+ E(-130, 0), E( 131, 0), E(-131, 0), E( 132, 0), E(-132, 0),
957+ E( 133, 0), E(-133, 0), E( 134, 0), E(-134, 0), E( 135, 0),
958+ E(-135, 0), E( 136, 0), E(-136, 0), E( 137, 0), E(-137, 0),
959+ E( 138, 0), E(-138, 0), E( 139, 0), E(-139, 0), E( 140, 0),
960+ E(-140, 0), E( 141, 0), E(-141, 0), E( 142, 0), E(-142, 0),
961+ E( 143, 0), E(-143, 0), E( 144, 0), E(-144, 0), E( 145, 0),
962+ E(-145, 0), E( 146, 0), E(-146, 0), E( 147, 0), E(-147, 0),
963+ E( 148, 0), E(-148, 0), E( 149, 0), E(-149, 0), E( 150, 0),
964+ E(-150, 0), E( 151, 0), E(-151, 0), E( 152, 0), E(-152, 0),
965+ E( 153, 0), E(-153, 0), E( 154, 0), E(-154, 0), E( 155, 0),
966+ E(-155, 0), E( 156, 0), E(-156, 0), E( 157, 0), E(-157, 0),
967+ E( 158, 0), E(-158, 0), E( 159, 0), E(-159, 0), E( 160, 0),
968+ E(-160, 0), E( 161, 0), E(-161, 0), E( 162, 0), E(-162, 0),
969+ E( 163, 0), E(-163, 0), E( 164, 0), E(-164, 0), E( 165, 0),
970+ E(-165, 0), E( 166, 0), E(-166, 0), E( 167, 0), E(-167, 0),
971+ E( 168, 0), E(-168, 0), E( 169, 0), E(-169, 0), E( 170, 0),
972+ E(-170, 0), E( 171, 0), E(-171, 0), E( 172, 0), E(-172, 0),
973+ E( 173, 0), E(-173, 0), E( 174, 0), E(-174, 0), E( 175, 0),
974+ E(-175, 0), E( 176, 0), E(-176, 0), E( 177, 0), E(-177, 0),
975+ E( 178, 0), E(-178, 0), E( 179, 0), E(-179, 0), E( 180, 0),
976+ E(-180, 0), E( 181, 0), E(-181, 0), E( 182, 0), E(-182, 0),
977+ E( 183, 0), E(-183, 0), E( 184, 0), E(-184, 0), E( 185, 0),
978+ E(-185, 0), E( 186, 0), E(-186, 0), E( 187, 0), E(-187, 0),
979+ E( 188, 0), E(-188, 0), E( 189, 0), E(-189, 0), E( 190, 0),
980+ E(-190, 0), E( 191, 0), E(-191, 0), E( 192, 0), E(-192, 0),
981+ E( 193, 0), E(-193, 0), E( 194, 0), E(-194, 0), E( 195, 0),
982+ E(-195, 0), E( 196, 0), E(-196, 0), E( 197, 0), E(-197, 0),
983+ E( 198, 0), E(-198, 0), E( 199, 0), E(-199, 0), E( 200, 0),
984+ E(-200, 0), E( 201, 0), E(-201, 0), E( 202, 0), E(-202, 0),
985+ E( 203, 0), E(-203, 0), E( 204, 0), E(-204, 0), E( 205, 0),
986+ E(-205, 0), E( 206, 0), E(-206, 0), E( 207, 0), E(-207, 0),
987+ E( 208, 0), E(-208, 0), E( 209, 0), E(-209, 0), E( 210, 0),
988+ E(-210, 0), E( 211, 0), E(-211, 0), E( 212, 0), E(-212, 0),
989+ E( 213, 0), E(-213, 0), E( 214, 0), E(-214, 0), E( 215, 0),
990+ E(-215, 0), E( 216, 0), E(-216, 0), E( 217, 0), E(-217, 0),
991+ E( 218, 0), E(-218, 0), E( 219, 0), E(-219, 0), E( 220, 0),
992+ E(-220, 0), E( 221, 0), E(-221, 0), E( 222, 0), E(-222, 0),
993+ E( 223, 0), E(-223, 0), E( 224, 0), E(-224, 0), E( 225, 0),
994+ E(-225, 0), E( 226, 0), E(-226, 0), E( 227, 0), E(-227, 0),
995+ E( 228, 0), E(-228, 0), E( 229, 0), E(-229, 0), E( 230, 0),
996+ E(-230, 0), E( 231, 0), E(-231, 0), E( 232, 0), E(-232, 0),
997+ E( 233, 0), E(-233, 0), E( 234, 0), E(-234, 0), E( 235, 0),
998+ E(-235, 0), E( 236, 0), E(-236, 0), E( 237, 0), E(-237, 0),
999+ E( 238, 0), E(-238, 0), E( 239, 0), E(-239, 0), E( 240, 0),
1000+ E(-240, 0), E( 241, 0), E(-241, 0), E( 242, 0), E(-242, 0),
1001+ E( 243, 0), E(-243, 0), E( 244, 0), E(-244, 0), E( 245, 0),
1002+ E(-245, 0), E( 246, 0), E(-246, 0), E( 247, 0), E(-247, 0),
1003+ E( 248, 0), E(-248, 0), E( 249, 0), E(-249, 0), E( 250, 0),
1004+ E(-250, 0), E( 251, 0), E(-251, 0), E( 252, 0), E(-252, 0),
1005+ E( 253, 0), E(-253, 0), E( 254, 0), E(-254, 0), E( 255, 0),
1006+ E(-255, 0), E( 13, 0), E( -13, 0), E( 14, 0), E( -14, 0),
1007+ E( 15, 0), E( -15, 0), E( 16, 0), E( -16, 0), E( 17, 0),
1008+ E( -17, 0), E( 18, 0), E( -18, 0), E( 5, 1), E( -5, 1),
1009+ E( 6, 1), E( -6, 1), E( 2, 2), E( -2, 2), E( 1, 3),
1010+ E( -1, 3), E( 0, 0), E( 19, 0), E( -19, 0), E( 20, 0),
1011+ E( -20, 0), E( 21, 0), E( -21, 0), E( 22, 0), E( -22, 0),
1012+ E( 23, 0), E( -23, 0), E( 24, 0), E( -24, 0), E( 25, 0),
1013+ E( -25, 0), E( 7, 1), E( -7, 1), E( 8, 1), E( -8, 1),
1014+ E( 3, 2), E( -3, 2), E( 2, 3), E( -2, 3), E( 1, 4),
1015+ E( -1, 4), E( 1, 5), E( -1, 5), E( 26, 0), E( -26, 0),
1016+ E( 27, 0), E( -27, 0), E( 28, 0), E( -28, 0), E( 29, 0),
1017+ E( -29, 0), E( 30, 0), E( -30, 0), E( 31, 0), E( -31, 0),
1018+ E( 32, 0), E( -32, 0), E( 33, 0), E( -33, 0), E( 34, 0),
1019+ E( -34, 0), E( 35, 0), E( -35, 0), E( 36, 0), E( -36, 0),
1020+ E( 0, 1), E( 9, 1), E( -9, 1), E( 10, 1), E( -10, 1),
1021+ E( 11, 1), E( -11, 1), E( 12, 1), E( -12, 1), E( 0, 2),
1022+ E( 4, 2), E( -4, 2), E( 5, 2), E( -5, 2), E( 6, 2),
1023+ E( -6, 2), E( 0, 3), E( 3, 3), E( -3, 3), E( 4, 3),
1024+ E( -4, 3), E( 0, 4), E( 2, 4), E( -2, 4), E( 0, 5),
1025+ E( 1, 6), E( -1, 6), E( 1, 7), E( -1, 7), E( 1, 8),
1026+ E( -1, 8), E( 37, 0), E( -37, 0), E( 38, 0), E( -38, 0),
1027+ E( 39, 0), E( -39, 0), E( 40, 0), E( -40, 0), E( 41, 0),
1028+ E( -41, 0), E( 42, 0), E( -42, 0), E( 43, 0), E( -43, 0),
1029+ E( 44, 0), E( -44, 0), E( 45, 0), E( -45, 0), E( 46, 0),
1030+ E( -46, 0), E( 47, 0), E( -47, 0), E( 48, 0), E( -48, 0),
1031+ E( 13, 1), E( -13, 1), E( 14, 1), E( -14, 1), E( 15, 1),
1032+ E( -15, 1), E( 16, 1), E( -16, 1), E( 7, 2), E( -7, 2),
1033+ E( 8, 2), E( -8, 2), E( 5, 3), E( -5, 3), E( 6, 3),
1034+ E( -6, 3), E( 3, 4), E( -3, 4), E( 4, 4), E( -4, 4),
1035+ E( 2, 5), E( -2, 5), E( 0, 6), E( 2, 6), E( -2, 6),
1036+ E( 0, 7), E( 0, 8), E( 0, 9), E( 1, 9), E( -1, 9),
1037+ E( 1, 10), E( -1, 10), E( 1, 11), E( -1, 11), E( 1, 12),
1038+ E( -1, 12), E( 49, 0), E( -49, 0), E( 50, 0), E( -50, 0),
1039+ E( 51, 0), E( -51, 0), E( 52, 0), E( -52, 0), E( 53, 0),
1040+ E( -53, 0), E( 54, 0), E( -54, 0), E( 55, 0), E( -55, 0),
1041+ E( 56, 0), E( -56, 0), E( 57, 0), E( -57, 0), E( 58, 0),
1042+ E( -58, 0), E( 59, 0), E( -59, 0), E( 60, 0), E( -60, 0),
1043+ E( 61, 0), E( -61, 0), E( 62, 0), E( -62, 0), E( 63, 0),
1044+ E( -63, 0), E( 17, 1), E( -17, 1), E( 18, 1), E( -18, 1),
1045+ E( 19, 1), E( -19, 1), E( 20, 1), E( -20, 1), E( 21, 1),
1046+ E( -21, 1), E( 22, 1), E( -22, 1), E( 23, 1), E( -23, 1),
1047+ E( 24, 1), E( -24, 1), E( 9, 2), E( -9, 2), E( 10, 2),
1048+ E( -10, 2), E( 11, 2), E( -11, 2), E( 12, 2), E( -12, 2),
1049+ E( 7, 3), E( -7, 3), E( 8, 3), E( -8, 3), E( 5, 4),
1050+ E( -5, 4), E( 6, 4), E( -6, 4), E( 3, 5), E( -3, 5),
1051+ E( 4, 5), E( -4, 5), E( 5, 5), E( -5, 5), E( 6, 5),
1052+ E( -6, 5), E( 3, 6), E( -3, 6), E( 4, 6), E( -4, 6),
1053+ E( 2, 7), E( -2, 7), E( 2, 8), E( -2, 8), E( 2, 9),
1054+ E( -2, 9), E( 0, 10), E( 2, 10), E( -2, 10), E( 0, 11),
1055+ E( 0, 12), E( 0, 13), E( 1, 13), E( -1, 13), E( 1, 14),
1056+ E( -1, 14), E( 0, 0), E( 0, 1), E( 0, 2), E( 0, 3),
1057+ E( 0, 4), E( 0, 5), E( 0, 6), E( 0, 7), E( 0, 8),
1058+ E( 0, 9), E( 0, 10), E( 0, 11), E( 0, 12), E( 0, 13),
1059+ E( 0, 14), E( 0, 15), E( 0, 16), E( 0, 17), E( 0, 18),
1060+ E( 0, 19), E( 0, 20), E( 0, 21), E( 0, 22), E( 0, 23),
1061+ E( 0, 24), E( 0, 25), E( 0, 26), E( 0, 27), E( 0, 28),
1062+ E( 0, 29), E( 0, 30), E( 0, 31), E( 0, 32), E( 0, 33),
1063+ E( 0, 34), E( 0, 35), E( 0, 36), E( 0, 37), E( 0, 38),
1064+ E( 0, 39), E( 0, 40), E( 0, 41), E( 0, 42), E( 0, 43),
1065+ E( 0, 44), E( 0, 45), E( 0, 46), E( 0, 47), E( 0, 48),
1066+ E( 0, 49), E( 0, 50), E( 0, 51), E( 0, 52), E( 0, 53),
1067+ E( 0, 54), E( 0, 55), E( 0, 56), E( 0, 57), E( 0, 58),
1068+ E( 0, 59), E( 0, 60), E( 0, 61), E( 0, 62), E( 0, 63),
1069+ E( 25, 1), E( -25, 1), E( 26, 1), E( -26, 1), E( 27, 1),
1070+ E( -27, 1), E( 28, 1), E( -28, 1), E( 29, 1), E( -29, 1),
1071+ E( 30, 1), E( -30, 1), E( 31, 1), E( -31, 1), E( 32, 1),
1072+ E( -32, 1), E( 13, 2), E( -13, 2), E( 14, 2), E( -14, 2),
1073+ E( 15, 2), E( -15, 2), E( 16, 2), E( -16, 2), E( 9, 3),
1074+ E( -9, 3), E( 10, 3), E( -10, 3), E( 11, 3), E( -11, 3),
1075+ E( 7, 4), E( -7, 4), E( 3, 7), E( -3, 7), E( 4, 7),
1076+ E( -4, 7), E( 3, 8), E( -3, 8), E( 4, 8), E( -4, 8),
1077+ E( 3, 9), E( -3, 9), E( 2, 11), E( -2, 11), E( 2, 12),
1078+ E( -2, 12), E( 0, 14),
1079+ // AC table Q16 - 512 elements
1080+ E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0),
1081+ E( -3, 0), E( 4, 0), E( -4, 0), E( 1, 1), E( -1, 1),
1082+ E( 0, 64), E( 5, 0), E( -5, 0), E( 6, 0), E( -6, 0),
1083+ E( 2, 1), E( -2, 1), E( 1, 2), E( -1, 2), E( 7, 0),
1084+ E( -7, 0), E( 8, 0), E( -8, 0), E( 9, 0), E( -9, 0),
1085+ E( 3, 1), E( -3, 1), E( 1, 3), E( -1, 3), E( 1, 4),
1086+ E( -1, 4), E( 10, 0), E( -10, 0), E( 11, 0), E( -11, 0),
1087+ E( 12, 0), E( -12, 0), E( 4, 1), E( -4, 1), E( 2, 2),
1088+ E( -2, 2), E( 1, 5), E( -1, 5), E( 1, 6), E( -1, 6),
1089+ E( 13, 0), E( -13, 0), E( 14, 0), E( -14, 0), E( 15, 0),
1090+ E( -15, 0), E( 16, 0), E( -16, 0), E( 17, 0), E( -17, 0),
1091+ E( 5, 1), E( -5, 1), E( 2, 3), E( -2, 3), E( 1, 7),
1092+ E( -1, 7), E( 1, 8), E( -1, 8), E( 1, 9), E( -1, 9),
1093+ E( 1, 10), E( -1, 10), E( 0, 0), E( 18, 0), E( -18, 0),
1094+ E( 19, 0), E( -19, 0), E( 20, 0), E( -20, 0), E( 21, 0),
1095+ E( -21, 0), E( 22, 0), E( -22, 0), E( 6, 1), E( -6, 1),
1096+ E( 7, 1), E( -7, 1), E( 3, 2), E( -3, 2), E( 2, 4),
1097+ E( -2, 4), E( 2, 5), E( -2, 5), E( 1, 11), E( -1, 11),
1098+ E( 1, 12), E( -1, 12), E( 1, 13), E( -1, 13), E( 0, 0),
1099+ E( 0, 1), E( 0, 2), E( 0, 3), E( 0, 4), E( 0, 5),
1100+ E( 0, 6), E( 0, 7), E( 0, 8), E( 0, 9), E( 0, 10),
1101+ E( 0, 11), E( 0, 12), E( 0, 13), E( 0, 14), E( 0, 15),
1102+ E( 0, 16), E( 0, 17), E( 0, 18), E( 0, 19), E( 0, 20),
1103+ E( 0, 21), E( 0, 22), E( 0, 23), E( 0, 24), E( 0, 25),
1104+ E( 0, 26), E( 0, 27), E( 0, 28), E( 0, 29), E( 0, 30),
1105+ E( 0, 31), E( 0, 32), E( 0, 33), E( 0, 34), E( 0, 35),
1106+ E( 0, 36), E( 0, 37), E( 0, 38), E( 0, 39), E( 0, 40),
1107+ E( 0, 41), E( 0, 42), E( 0, 43), E( 0, 44), E( 0, 45),
1108+ E( 0, 46), E( 0, 47), E( 0, 48), E( 0, 49), E( 0, 50),
1109+ E( 0, 51), E( 0, 52), E( 0, 53), E( 0, 54), E( 0, 55),
1110+ E( 0, 56), E( 0, 57), E( 0, 58), E( 0, 59), E( 0, 60),
1111+ E( 0, 61), E( 0, 62), E( 0, 63), E( 0, 0), E( 1, 0),
1112+ E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0), E( -3, 0),
1113+ E( 4, 0), E( -4, 0), E( 5, 0), E( -5, 0), E( 6, 0),
1114+ E( -6, 0), E( 7, 0), E( -7, 0), E( 8, 0), E( -8, 0),
1115+ E( 9, 0), E( -9, 0), E( 10, 0), E( -10, 0), E( 11, 0),
1116+ E( -11, 0), E( 12, 0), E( -12, 0), E( 13, 0), E( -13, 0),
1117+ E( 14, 0), E( -14, 0), E( 15, 0), E( -15, 0), E( 16, 0),
1118+ E( -16, 0), E( 17, 0), E( -17, 0), E( 18, 0), E( -18, 0),
1119+ E( 19, 0), E( -19, 0), E( 20, 0), E( -20, 0), E( 21, 0),
1120+ E( -21, 0), E( 22, 0), E( -22, 0), E( 23, 0), E( -23, 0),
1121+ E( 24, 0), E( -24, 0), E( 25, 0), E( -25, 0), E( 26, 0),
1122+ E( -26, 0), E( 27, 0), E( -27, 0), E( 28, 0), E( -28, 0),
1123+ E( 29, 0), E( -29, 0), E( 30, 0), E( -30, 0), E( 31, 0),
1124+ E( -31, 0), E( 32, 0), E( -32, 0), E( 33, 0), E( -33, 0),
1125+ E( 34, 0), E( -34, 0), E( 35, 0), E( -35, 0), E( 36, 0),
1126+ E( -36, 0), E( 37, 0), E( -37, 0), E( 38, 0), E( -38, 0),
1127+ E( 39, 0), E( -39, 0), E( 40, 0), E( -40, 0), E( 41, 0),
1128+ E( -41, 0), E( 42, 0), E( -42, 0), E( 43, 0), E( -43, 0),
1129+ E( 44, 0), E( -44, 0), E( 45, 0), E( -45, 0), E( 46, 0),
1130+ E( -46, 0), E( 47, 0), E( -47, 0), E( 48, 0), E( -48, 0),
1131+ E( 49, 0), E( -49, 0), E( 50, 0), E( -50, 0), E( 51, 0),
1132+ E( -51, 0), E( 52, 0), E( -52, 0), E( 53, 0), E( -53, 0),
1133+ E( 54, 0), E( -54, 0), E( 55, 0), E( -55, 0), E( 56, 0),
1134+ E( -56, 0), E( 57, 0), E( -57, 0), E( 58, 0), E( -58, 0),
1135+ E( 59, 0), E( -59, 0), E( 60, 0), E( -60, 0), E( 61, 0),
1136+ E( -61, 0), E( 62, 0), E( -62, 0), E( 63, 0), E( -63, 0),
1137+ E( 64, 0), E( -64, 0), E( 65, 0), E( -65, 0), E( 66, 0),
1138+ E( -66, 0), E( 67, 0), E( -67, 0), E( 68, 0), E( -68, 0),
1139+ E( 69, 0), E( -69, 0), E( 70, 0), E( -70, 0), E( 71, 0),
1140+ E( -71, 0), E( 72, 0), E( -72, 0), E( 73, 0), E( -73, 0),
1141+ E( 74, 0), E( -74, 0), E( 75, 0), E( -75, 0), E( 76, 0),
1142+ E( -76, 0), E( 77, 0), E( -77, 0), E( 78, 0), E( -78, 0),
1143+ E( 79, 0), E( -79, 0), E( 80, 0), E( -80, 0), E( 81, 0),
1144+ E( -81, 0), E( 82, 0), E( -82, 0), E( 83, 0), E( -83, 0),
1145+ E( 84, 0), E( -84, 0), E( 85, 0), E( -85, 0), E( 86, 0),
1146+ E( -86, 0), E( 87, 0), E( -87, 0), E( 88, 0), E( -88, 0),
1147+ E( 89, 0), E( -89, 0), E( 90, 0), E( -90, 0), E( 91, 0),
1148+ E( -91, 0), E( 92, 0), E( -92, 0), E( 93, 0), E( -93, 0),
1149+ E( 94, 0), E( -94, 0), E( 95, 0), E( -95, 0), E( 96, 0),
1150+ E( -96, 0), E( 97, 0), E( -97, 0), E( 98, 0), E( -98, 0),
1151+ E( 99, 0), E( -99, 0), E( 100, 0), E(-100, 0), E( 101, 0),
1152+ E(-101, 0), E( 102, 0), E(-102, 0), E( 103, 0), E(-103, 0),
1153+ E( 104, 0), E(-104, 0), E( 105, 0), E(-105, 0), E( 106, 0),
1154+ E(-106, 0), E( 107, 0), E(-107, 0), E( 108, 0), E(-108, 0),
1155+ E( 109, 0), E(-109, 0), E( 110, 0), E(-110, 0), E( 111, 0),
1156+ E(-111, 0), E( 112, 0), E(-112, 0), E( 113, 0), E(-113, 0),
1157+ E( 114, 0), E(-114, 0), E( 115, 0), E(-115, 0), E( 116, 0),
1158+ E(-116, 0), E( 117, 0), E(-117, 0), E( 118, 0), E(-118, 0),
1159+ E( 119, 0), E(-119, 0), E( 120, 0), E(-120, 0), E( 121, 0),
1160+ E(-121, 0), E( 122, 0), E(-122, 0), E( 123, 0), E(-123, 0),
1161+ E( 124, 0), E(-124, 0), E( 125, 0), E(-125, 0), E( 126, 0),
1162+ E(-126, 0), E( 127, 0), E(-127, 0), E( 23, 0), E( -23, 0),
1163+ E( 24, 0), E( -24, 0), E( 25, 0), E( -25, 0), E( 26, 0),
1164+ E( -26, 0), E( 27, 0), E( -27, 0), E( 28, 0), E( -28, 0),
1165+ E( 8, 1), E( -8, 1), E( 9, 1), E( -9, 1), E( 4, 2),
1166+ E( -4, 2), E( 3, 3), E( -3, 3), E( 3, 4), E( -3, 4),
1167+ E( 2, 6), E( -2, 6), E( 2, 7), E( -2, 7), E( 29, 0),
1168+ E( -29, 0), E( 30, 0), E( -30, 0), E( 31, 0), E( -31, 0),
1169+ E( 32, 0), E( -32, 0), E( 33, 0), E( -33, 0), E( 34, 0),
1170+ E( -34, 0), E( 35, 0), E( -35, 0), E( 0, 1), E( 10, 1),
1171+ E( -10, 1), E( 11, 1), E( -11, 1), E( 12, 1), E( -12, 1),
1172+ E( 0, 2), E( 5, 2), E( -5, 2), E( 0, 3), E( 4, 3),
1173+ E( -4, 3), E( 3, 5), E( -3, 5), E( 2, 8), E( -2, 8),
1174+ E( 2, 9), E( -2, 9), E( 1, 14), E( -1, 14), E( 1, 15),
1175+ E( -1, 15), E( 36, 0), E( -36, 0), E( 37, 0), E( -37, 0),
1176+ E( 38, 0), E( -38, 0), E( 39, 0), E( -39, 0), E( 40, 0),
1177+ E( -40, 0), E( 13, 1), E( -13, 1), E( 14, 1), E( -14, 1),
1178+ E( 15, 1), E( -15, 1), E( 6, 2), E( -6, 2), E( 7, 2),
1179+ E( -7, 2), E( 5, 3), E( -5, 3), E( 0, 4), E( 4, 4),
1180+ E( -4, 4), E( 0, 5), E( 0, 6), E( 3, 6), E( -3, 6),
1181+ E( 0, 7), E( 3, 7), E( -3, 7), E( 2, 10), E( -2, 10),
1182+ E( 1, 16), E( -1, 16),
1183+ // AC table Q32 - 354 elements
1184+ E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0), E( 0, 64), E( 3, 0),
1185+ E( -3, 0), E( 1, 1), E( -1, 1), E( 4, 0), E( -4, 0), E( 5, 0),
1186+ E( -5, 0), E( 2, 1), E( -2, 1), E( 1, 2), E( -1, 2), E( 1, 3),
1187+ E( -1, 3), E( 6, 0), E( -6, 0), E( 7, 0), E( -7, 0), E( 3, 1),
1188+ E( -3, 1), E( 1, 4), E( -1, 4), E( 1, 5), E( -1, 5), E( 8, 0),
1189+ E( -8, 0), E( 9, 0), E( -9, 0), E( 10, 0), E(-10, 0), E( 4, 1),
1190+ E( -4, 1), E( 2, 2), E( -2, 2), E( 1, 6), E( -1, 6), E( 1, 7),
1191+ E( -1, 7), E( 1, 8), E( -1, 8), E( 11, 0), E(-11, 0), E( 12, 0),
1192+ E(-12, 0), E( 13, 0), E(-13, 0), E( 5, 1), E( -5, 1), E( 2, 3),
1193+ E( -2, 3), E( 1, 9), E( -1, 9), E( 1, 10), E( -1, 10), E( 14, 0),
1194+ E(-14, 0), E( 15, 0), E(-15, 0), E( 16, 0), E(-16, 0), E( 6, 1),
1195+ E( -6, 1), E( 7, 1), E( -7, 1), E( 3, 2), E( -3, 2), E( 3, 3),
1196+ E( -3, 3), E( 2, 4), E( -2, 4), E( 2, 5), E( -2, 5), E( 1, 11),
1197+ E( -1, 11), E( 1, 12), E( -1, 12), E( 1, 13), E( -1, 13), E( 0, 0),
1198+ E( 0, 1), E( 0, 2), E( 0, 3), E( 0, 4), E( 0, 5), E( 0, 6),
1199+ E( 0, 7), E( 0, 8), E( 0, 9), E( 0, 10), E( 0, 11), E( 0, 12),
1200+ E( 0, 13), E( 0, 14), E( 0, 15), E( 0, 16), E( 0, 17), E( 0, 18),
1201+ E( 0, 19), E( 0, 20), E( 0, 21), E( 0, 22), E( 0, 23), E( 0, 24),
1202+ E( 0, 25), E( 0, 26), E( 0, 27), E( 0, 28), E( 0, 29), E( 0, 30),
1203+ E( 0, 31), E( 0, 32), E( 0, 33), E( 0, 34), E( 0, 35), E( 0, 36),
1204+ E( 0, 37), E( 0, 38), E( 0, 39), E( 0, 40), E( 0, 41), E( 0, 42),
1205+ E( 0, 43), E( 0, 44), E( 0, 45), E( 0, 46), E( 0, 47), E( 0, 48),
1206+ E( 0, 49), E( 0, 50), E( 0, 51), E( 0, 52), E( 0, 53), E( 0, 54),
1207+ E( 0, 55), E( 0, 56), E( 0, 57), E( 0, 58), E( 0, 59), E( 0, 60),
1208+ E( 0, 61), E( 0, 62), E( 0, 63), E( 0, 0), E( 17, 0), E(-17, 0),
1209+ E( 18, 0), E(-18, 0), E( 19, 0), E(-19, 0), E( 20, 0), E(-20, 0),
1210+ E( 8, 1), E( -8, 1), E( 9, 1), E( -9, 1), E( 4, 2), E( -4, 2),
1211+ E( 3, 4), E( -3, 4), E( 2, 6), E( -2, 6), E( 2, 7), E( -2, 7),
1212+ E( 2, 8), E( -2, 8), E( 1, 14), E( -1, 14), E( 0, 0), E( 1, 0),
1213+ E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0), E( -3, 0), E( 4, 0),
1214+ E( -4, 0), E( 5, 0), E( -5, 0), E( 6, 0), E( -6, 0), E( 7, 0),
1215+ E( -7, 0), E( 8, 0), E( -8, 0), E( 9, 0), E( -9, 0), E( 10, 0),
1216+ E(-10, 0), E( 11, 0), E(-11, 0), E( 12, 0), E(-12, 0), E( 13, 0),
1217+ E(-13, 0), E( 14, 0), E(-14, 0), E( 15, 0), E(-15, 0), E( 16, 0),
1218+ E(-16, 0), E( 17, 0), E(-17, 0), E( 18, 0), E(-18, 0), E( 19, 0),
1219+ E(-19, 0), E( 20, 0), E(-20, 0), E( 21, 0), E(-21, 0), E( 22, 0),
1220+ E(-22, 0), E( 23, 0), E(-23, 0), E( 24, 0), E(-24, 0), E( 25, 0),
1221+ E(-25, 0), E( 26, 0), E(-26, 0), E( 27, 0), E(-27, 0), E( 28, 0),
1222+ E(-28, 0), E( 29, 0), E(-29, 0), E( 30, 0), E(-30, 0), E( 31, 0),
1223+ E(-31, 0), E( 32, 0), E(-32, 0), E( 33, 0), E(-33, 0), E( 34, 0),
1224+ E(-34, 0), E( 35, 0), E(-35, 0), E( 36, 0), E(-36, 0), E( 37, 0),
1225+ E(-37, 0), E( 38, 0), E(-38, 0), E( 39, 0), E(-39, 0), E( 40, 0),
1226+ E(-40, 0), E( 41, 0), E(-41, 0), E( 42, 0), E(-42, 0), E( 43, 0),
1227+ E(-43, 0), E( 44, 0), E(-44, 0), E( 45, 0), E(-45, 0), E( 46, 0),
1228+ E(-46, 0), E( 47, 0), E(-47, 0), E( 48, 0), E(-48, 0), E( 49, 0),
1229+ E(-49, 0), E( 50, 0), E(-50, 0), E( 51, 0), E(-51, 0), E( 52, 0),
1230+ E(-52, 0), E( 53, 0), E(-53, 0), E( 54, 0), E(-54, 0), E( 55, 0),
1231+ E(-55, 0), E( 56, 0), E(-56, 0), E( 57, 0), E(-57, 0), E( 58, 0),
1232+ E(-58, 0), E( 59, 0), E(-59, 0), E( 60, 0), E(-60, 0), E( 61, 0),
1233+ E(-61, 0), E( 62, 0), E(-62, 0), E( 63, 0), E(-63, 0), E( 21, 0),
1234+ E(-21, 0), E( 22, 0), E(-22, 0), E( 23, 0), E(-23, 0), E( 0, 1),
1235+ E( 10, 1), E(-10, 1), E( 11, 1), E(-11, 1), E( 0, 2), E( 5, 2),
1236+ E( -5, 2), E( 6, 2), E( -6, 2), E( 0, 3), E( 4, 3), E( -4, 3),
1237+ E( 0, 4), E( 3, 5), E( -3, 5), E( 3, 6), E( -3, 6), E( 2, 9),
1238+ E( -2, 9), E( 1, 15), E( -1, 15), E( 24, 0), E(-24, 0), E( 25, 0),
1239+ E(-25, 0), E( 26, 0), E(-26, 0), E( 12, 1), E(-12, 1), E( 13, 1),
1240+ E(-13, 1), E( 5, 3), E( -5, 3), E( 4, 4), E( -4, 4), E( 0, 5),
1241+ E( 4, 5), E( -4, 5), E( 0, 6), E( 0, 7), E( 3, 7), E( -3, 7),
1242+ E( 0, 8), E( 3, 8), E( -3, 8), E( 0, 9), E( 1, 16), E( -1, 16),
1243+ // AC table Q64 - 257 elements
1244+ E( 1, 0), E( -1, 0), E( 0, 64), E( 2, 0), E( -2, 0), E( 3, 0),
1245+ E( -3, 0), E( 1, 1), E( -1, 1), E( 4, 0), E( -4, 0), E( 2, 1),
1246+ E( -2, 1), E( 1, 2), E( -1, 2), E( 5, 0), E( -5, 0), E( 1, 3),
1247+ E( -1, 3), E( 1, 4), E( -1, 4), E( 6, 0), E( -6, 0), E( 3, 1),
1248+ E( -3, 1), E( 2, 2), E( -2, 2), E( 1, 5), E( -1, 5), E( 1, 6),
1249+ E( -1, 6), E( 1, 7), E( -1, 7), E( 7, 0), E( -7, 0), E( 8, 0),
1250+ E( -8, 0), E( 4, 1), E( -4, 1), E( 2, 3), E( -2, 3), E( 1, 8),
1251+ E( -1, 8), E( 1, 9), E( -1, 9), E( 9, 0), E( -9, 0), E( 10, 0),
1252+ E(-10, 0), E( 5, 1), E( -5, 1), E( 3, 2), E( -3, 2), E( 2, 4),
1253+ E( -2, 4), E( 2, 5), E( -2, 5), E( 1, 10), E( -1, 10), E( 1, 11),
1254+ E( -1, 11), E( 0, 0), E( 0, 1), E( 0, 2), E( 0, 3), E( 0, 4),
1255+ E( 0, 5), E( 0, 6), E( 0, 7), E( 0, 8), E( 0, 9), E( 0, 10),
1256+ E( 0, 11), E( 0, 12), E( 0, 13), E( 0, 14), E( 0, 15), E( 0, 16),
1257+ E( 0, 17), E( 0, 18), E( 0, 19), E( 0, 20), E( 0, 21), E( 0, 22),
1258+ E( 0, 23), E( 0, 24), E( 0, 25), E( 0, 26), E( 0, 27), E( 0, 28),
1259+ E( 0, 29), E( 0, 30), E( 0, 31), E( 0, 32), E( 0, 33), E( 0, 34),
1260+ E( 0, 35), E( 0, 36), E( 0, 37), E( 0, 38), E( 0, 39), E( 0, 40),
1261+ E( 0, 41), E( 0, 42), E( 0, 43), E( 0, 44), E( 0, 45), E( 0, 46),
1262+ E( 0, 47), E( 0, 48), E( 0, 49), E( 0, 50), E( 0, 51), E( 0, 52),
1263+ E( 0, 53), E( 0, 54), E( 0, 55), E( 0, 56), E( 0, 57), E( 0, 58),
1264+ E( 0, 59), E( 0, 60), E( 0, 61), E( 0, 62), E( 0, 63), E( 0, 0),
1265+ E( 11, 0), E(-11, 0), E( 12, 0), E(-12, 0), E( 6, 1), E( -6, 1),
1266+ E( 7, 1), E( -7, 1), E( 3, 3), E( -3, 3), E( 3, 4), E( -3, 4),
1267+ E( 3, 5), E( -3, 5), E( 2, 6), E( -2, 6), E( 2, 7), E( -2, 7),
1268+ E( 1, 12), E( -1, 12), E( 1, 13), E( -1, 13), E( 1, 14), E( -1, 14),
1269+ E( 13, 0), E(-13, 0), E( 14, 0), E(-14, 0), E( 0, 1), E( 8, 1),
1270+ E( -8, 1), E( 4, 2), E( -4, 2), E( 4, 3), E( -4, 3), E( 2, 8),
1271+ E( -2, 8), E( 2, 9), E( -2, 9), E( 1, 15), E( -1, 15), E( 0, 0),
1272+ E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0), E( -3, 0),
1273+ E( 4, 0), E( -4, 0), E( 5, 0), E( -5, 0), E( 6, 0), E( -6, 0),
1274+ E( 7, 0), E( -7, 0), E( 8, 0), E( -8, 0), E( 9, 0), E( -9, 0),
1275+ E( 10, 0), E(-10, 0), E( 11, 0), E(-11, 0), E( 12, 0), E(-12, 0),
1276+ E( 13, 0), E(-13, 0), E( 14, 0), E(-14, 0), E( 15, 0), E(-15, 0),
1277+ E( 16, 0), E(-16, 0), E( 17, 0), E(-17, 0), E( 18, 0), E(-18, 0),
1278+ E( 19, 0), E(-19, 0), E( 20, 0), E(-20, 0), E( 21, 0), E(-21, 0),
1279+ E( 22, 0), E(-22, 0), E( 23, 0), E(-23, 0), E( 24, 0), E(-24, 0),
1280+ E( 25, 0), E(-25, 0), E( 26, 0), E(-26, 0), E( 27, 0), E(-27, 0),
1281+ E( 28, 0), E(-28, 0), E( 29, 0), E(-29, 0), E( 30, 0), E(-30, 0),
1282+ E( 31, 0), E(-31, 0), E( 15, 0), E(-15, 0), E( 9, 1), E( -9, 1),
1283+ E( 10, 1), E(-10, 1), E( 0, 2), E( 5, 2), E( -5, 2), E( 0, 3),
1284+ E( 5, 3), E( -5, 3), E( 0, 4), E( 4, 4), E( -4, 4), E( 0, 5),
1285+ E( 4, 5), E( -4, 5), E( 0, 6), E( 3, 6), E( -3, 6), E( 3, 7),
1286+ E( -3, 7), E( 1, 16), E( -1, 16), E( 1, 17), E( -1, 17),
1287+ // AC table Q128 - 194 elements
1288+ E( 1, 0), E( -1, 0), E( 0, 64), E( 1, 1), E( -1, 1), E( 2, 0),
1289+ E( -2, 0), E( 3, 0), E( -3, 0), E( 2, 1), E( -2, 1), E( 1, 2),
1290+ E( -1, 2), E( 1, 3), E( -1, 3), E( 1, 4), E( -1, 4), E( 4, 0),
1291+ E( -4, 0), E( 1, 5), E( -1, 5), E( 1, 6), E( -1, 6), E( 1, 7),
1292+ E( -1, 7), E( 5, 0), E( -5, 0), E( 3, 1), E( -3, 1), E( 2, 2),
1293+ E( -2, 2), E( 2, 3), E( -2, 3), E( 1, 8), E( -1, 8), E( 1, 9),
1294+ E( -1, 9), E( 6, 0), E( -6, 0), E( 4, 1), E( -4, 1), E( 2, 4),
1295+ E( -2, 4), E( 2, 5), E( -2, 5), E( 1, 10), E( -1, 10), E( 7, 0),
1296+ E( -7, 0), E( 5, 1), E( -5, 1), E( 3, 2), E( -3, 2), E( 3, 3),
1297+ E( -3, 3), E( 2, 6), E( -2, 6), E( 0, 0), E( 0, 1), E( 0, 2),
1298+ E( 0, 3), E( 0, 4), E( 0, 5), E( 0, 6), E( 0, 7), E( 0, 8),
1299+ E( 0, 9), E( 0, 10), E( 0, 11), E( 0, 12), E( 0, 13), E( 0, 14),
1300+ E( 0, 15), E( 0, 16), E( 0, 17), E( 0, 18), E( 0, 19), E( 0, 20),
1301+ E( 0, 21), E( 0, 22), E( 0, 23), E( 0, 24), E( 0, 25), E( 0, 26),
1302+ E( 0, 27), E( 0, 28), E( 0, 29), E( 0, 30), E( 0, 31), E( 0, 32),
1303+ E( 0, 33), E( 0, 34), E( 0, 35), E( 0, 36), E( 0, 37), E( 0, 38),
1304+ E( 0, 39), E( 0, 40), E( 0, 41), E( 0, 42), E( 0, 43), E( 0, 44),
1305+ E( 0, 45), E( 0, 46), E( 0, 47), E( 0, 48), E( 0, 49), E( 0, 50),
1306+ E( 0, 51), E( 0, 52), E( 0, 53), E( 0, 54), E( 0, 55), E( 0, 56),
1307+ E( 0, 57), E( 0, 58), E( 0, 59), E( 0, 60), E( 0, 61), E( 0, 62),
1308+ E( 0, 63), E( 6, 1), E( -6, 1), E( 7, 1), E( -7, 1), E( 3, 4),
1309+ E( -3, 4), E( 3, 5), E( -3, 5), E( 2, 7), E( -2, 7), E( 2, 8),
1310+ E( -2, 8), E( 2, 9), E( -2, 9), E( 1, 11), E( -1, 11), E( 1, 12),
1311+ E( -1, 12), E( 1, 13), E( -1, 13), E( 0, 0), E( 8, 0), E( -8, 0),
1312+ E( 9, 0), E( -9, 0), E( 8, 1), E( -8, 1), E( 4, 2), E( -4, 2),
1313+ E( 4, 3), E( -4, 3), E( 3, 6), E( -3, 6), E( 1, 14), E( -1, 14),
1314+ E( 1, 15), E( -1, 15), E( 1, 16), E( -1, 16), E( 0, 1), E( 0, 2),
1315+ E( 0, 3), E( 0, 0), E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0),
1316+ E( 3, 0), E( -3, 0), E( 4, 0), E( -4, 0), E( 5, 0), E( -5, 0),
1317+ E( 6, 0), E( -6, 0), E( 7, 0), E( -7, 0), E( 8, 0), E( -8, 0),
1318+ E( 9, 0), E( -9, 0), E( 10, 0), E(-10, 0), E( 11, 0), E(-11, 0),
1319+ E( 12, 0), E(-12, 0), E( 13, 0), E(-13, 0), E( 14, 0), E(-14, 0),
1320+ E( 15, 0), E(-15, 0),
17751321 };
17761322
1777−static const HQXLUT ac32_lut[] = {
1778− RPT_256 ( 1, 0, 3 ), RPT_256 ( -1, 0, 3 ),
1779− RPT_128 ( 2, 0, 4 ), RPT_128 ( -2, 0, 4 ),
1780− RPT_256 ( 0, 64, 3 ), RPT_64 ( 3, 0, 5 ),
1781− RPT_64 ( -3, 0, 5 ), RPT_64 ( 1, 1, 5 ),
1782− RPT_64 ( -1, 1, 5 ), RPT_32 ( 4, 0, 6 ),
1783− RPT_32 ( -4, 0, 6 ), RPT_32 ( 5, 0, 6 ),
1784− RPT_32 ( -5, 0, 6 ), RPT_32 ( 2, 1, 6 ),
1785− RPT_32 ( -2, 1, 6 ), RPT_32 ( 1, 2, 6 ),
1786− RPT_32 ( -1, 2, 6 ), RPT_32 ( 1, 3, 6 ),
1787− RPT_32 ( -1, 3, 6 ), RPT_16 ( 6, 0, 7 ),
1788− RPT_16 ( -6, 0, 7 ), RPT_16 ( 7, 0, 7 ),
1789− RPT_16 ( -7, 0, 7 ), RPT_16 ( 3, 1, 7 ),
1790− RPT_16 ( -3, 1, 7 ), RPT_16 ( 1, 4, 7 ),
1791− RPT_16 ( -1, 4, 7 ), RPT_16 ( 1, 5, 7 ),
1792− RPT_16 ( -1, 5, 7 ), RPT_8 ( 8, 0, 8 ),
1793− RPT_8 ( -8, 0, 8 ), RPT_8 ( 9, 0, 8 ),
1794− RPT_8 ( -9, 0, 8 ), RPT_8 ( 10, 0, 8 ),
1795− RPT_8 ( -10, 0, 8 ), RPT_8 ( 4, 1, 8 ),
1796− RPT_8 ( -4, 1, 8 ), RPT_8 ( 2, 2, 8 ),
1797− RPT_8 ( -2, 2, 8 ), RPT_8 ( 1, 6, 8 ),
1798− RPT_8 ( -1, 6, 8 ), RPT_8 ( 1, 7, 8 ),
1799− RPT_8 ( -1, 7, 8 ), RPT_8 ( 1, 8, 8 ),
1800− RPT_8 ( -1, 8, 8 ), RPT_4 ( 11, 0, 9 ),
1801− RPT_4 ( -11, 0, 9 ), RPT_4 ( 12, 0, 9 ),
1802− RPT_4 ( -12, 0, 9 ), RPT_4 ( 13, 0, 9 ),
1803− RPT_4 ( -13, 0, 9 ), RPT_4 ( 5, 1, 9 ),
1804− RPT_4 ( -5, 1, 9 ), RPT_4 ( 2, 3, 9 ),
1805− RPT_4 ( -2, 3, 9 ), RPT_4 ( 1, 9, 9 ),
1806− RPT_4 ( -1, 9, 9 ), RPT_4 ( 1, 10, 9 ),
1807− RPT_4 ( -1, 10, 9 ), RPT_2 ( 14, 0, 10 ),
1808− RPT_2 ( -14, 0, 10 ), RPT_2 ( 15, 0, 10 ),
1809− RPT_2 ( -15, 0, 10 ), RPT_2 ( 16, 0, 10 ),
1810− RPT_2 ( -16, 0, 10 ), RPT_2 ( 6, 1, 10 ),
1811− RPT_2 ( -6, 1, 10 ), RPT_2 ( 7, 1, 10 ),
1812− RPT_2 ( -7, 1, 10 ), RPT_2 ( 3, 2, 10 ),
1813− RPT_2 ( -3, 2, 10 ), RPT_2 ( 3, 3, 10 ),
1814− RPT_2 ( -3, 3, 10 ), RPT_2 ( 2, 4, 10 ),
1815− RPT_2 ( -2, 4, 10 ), RPT_2 ( 2, 5, 10 ),
1816− RPT_2 ( -2, 5, 10 ), RPT_2 ( 1, 11, 10 ),
1817− RPT_2 ( -1, 11, 10 ), RPT_2 ( 1, 12, 10 ),
1818− RPT_2 ( -1, 12, 10 ), RPT_2 ( 1, 13, 10 ),
1819− RPT_2 ( -1, 13, 10 ), { 2048, 0, -1 }, { 2112, 0, -1 },
1820− { 2176, 0, -1 }, { 2240, 0, -1 }, RPT_2 ( 0, 0, 10 ),
1821− { 17, 0, 11 }, { -17, 0, 11 }, { 18, 0, 11 }, { -18, 0, 11 },
1822− { 19, 0, 11 }, { -19, 0, 11 }, { 20, 0, 11 }, { -20, 0, 11 },
1823− { 8, 1, 11 }, { -8, 1, 11 }, { 9, 1, 11 }, { -9, 1, 11 },
1824− { 4, 2, 11 }, { -4, 2, 11 }, { 3, 4, 11 }, { -3, 4, 11 },
1825− { 2, 6, 11 }, { -2, 6, 11 }, { 2, 7, 11 }, { -2, 7, 11 },
1826− { 2, 8, 11 }, { -2, 8, 11 }, { 1, 14, 11 }, { -1, 14, 11 },
1827− { 2304, 0, -1 }, { 2368, 0, -1 }, { 2432, 0, -1 }, { 2496, 0, -1 },
1828− { 2560, 0, -1 }, { 0, 1, 11 }, { 2624, 0, -1 }, { 2688, 0, -1 },
1829− { 0, 2, 11 }, { 2752, 0, -1 }, { 2816, 0, -1 }, { 0, 3, 11 },
1830− { 2880, 0, -1 }, { 0, 4, 11 }, { 2944, 0, -1 }, { 3008, 0, -1 },
1831− { 3072, 0, -1 }, { 3136, 0, -1 }, { 3200, 0, -1 }, { 3264, 0, -1 },
1832− { 3328, 0, -1 }, { 3392, 0, -1 }, { 3456, 0, -1 }, { 3520, 0, -1 },
1833− { 3584, 0, -1 }, { 3648, 0, -1 }, RPT_4 ( 0, 0, 15 ),
1834− RPT_4 ( 0, 1, 15 ), RPT_4 ( 0, 2, 15 ),
1835− RPT_4 ( 0, 3, 15 ), RPT_4 ( 0, 4, 15 ),
1836− RPT_4 ( 0, 5, 15 ), RPT_4 ( 0, 6, 15 ),
1837− RPT_4 ( 0, 7, 15 ), RPT_4 ( 0, 8, 15 ),
1838− RPT_4 ( 0, 9, 15 ), RPT_4 ( 0, 10, 15 ),
1839− RPT_4 ( 0, 11, 15 ), RPT_4 ( 0, 12, 15 ),
1840− RPT_4 ( 0, 13, 15 ), RPT_4 ( 0, 14, 15 ),
1841− RPT_4 ( 0, 15, 15 ), RPT_4 ( 0, 16, 15 ),
1842− RPT_4 ( 0, 17, 15 ), RPT_4 ( 0, 18, 15 ),
1843− RPT_4 ( 0, 19, 15 ), RPT_4 ( 0, 20, 15 ),
1844− RPT_4 ( 0, 21, 15 ), RPT_4 ( 0, 22, 15 ),
1845− RPT_4 ( 0, 23, 15 ), RPT_4 ( 0, 24, 15 ),
1846− RPT_4 ( 0, 25, 15 ), RPT_4 ( 0, 26, 15 ),
1847− RPT_4 ( 0, 27, 15 ), RPT_4 ( 0, 28, 15 ),
1848− RPT_4 ( 0, 29, 15 ), RPT_4 ( 0, 30, 15 ),
1849− RPT_4 ( 0, 31, 15 ), RPT_4 ( 0, 32, 15 ),
1850− RPT_4 ( 0, 33, 15 ), RPT_4 ( 0, 34, 15 ),
1851− RPT_4 ( 0, 35, 15 ), RPT_4 ( 0, 36, 15 ),
1852− RPT_4 ( 0, 37, 15 ), RPT_4 ( 0, 38, 15 ),
1853− RPT_4 ( 0, 39, 15 ), RPT_4 ( 0, 40, 15 ),
1854− RPT_4 ( 0, 41, 15 ), RPT_4 ( 0, 42, 15 ),
1855− RPT_4 ( 0, 43, 15 ), RPT_4 ( 0, 44, 15 ),
1856− RPT_4 ( 0, 45, 15 ), RPT_4 ( 0, 46, 15 ),
1857− RPT_4 ( 0, 47, 15 ), RPT_4 ( 0, 48, 15 ),
1858− RPT_4 ( 0, 49, 15 ), RPT_4 ( 0, 50, 15 ),
1859− RPT_4 ( 0, 51, 15 ), RPT_4 ( 0, 52, 15 ),
1860− RPT_4 ( 0, 53, 15 ), RPT_4 ( 0, 54, 15 ),
1861− RPT_4 ( 0, 55, 15 ), RPT_4 ( 0, 56, 15 ),
1862− RPT_4 ( 0, 57, 15 ), RPT_4 ( 0, 58, 15 ),
1863− RPT_4 ( 0, 59, 15 ), RPT_4 ( 0, 60, 15 ),
1864− RPT_4 ( 0, 61, 15 ), RPT_4 ( 0, 62, 15 ),
1865− RPT_4 ( 0, 63, 15 ), RPT_2 ( 0, 0, 16 ),
1866− { 1, 0, 17 }, { -1, 0, 17 }, { 2, 0, 17 }, { -2, 0, 17 },
1867− { 3, 0, 17 }, { -3, 0, 17 }, { 4, 0, 17 }, { -4, 0, 17 },
1868− { 5, 0, 17 }, { -5, 0, 17 }, { 6, 0, 17 }, { -6, 0, 17 },
1869− { 7, 0, 17 }, { -7, 0, 17 }, { 8, 0, 17 }, { -8, 0, 17 },
1870− { 9, 0, 17 }, { -9, 0, 17 }, { 10, 0, 17 }, { -10, 0, 17 },
1871− { 11, 0, 17 }, { -11, 0, 17 }, { 12, 0, 17 }, { -12, 0, 17 },
1872− { 13, 0, 17 }, { -13, 0, 17 }, { 14, 0, 17 }, { -14, 0, 17 },
1873− { 15, 0, 17 }, { -15, 0, 17 }, { 16, 0, 17 }, { -16, 0, 17 },
1874− { 17, 0, 17 }, { -17, 0, 17 }, { 18, 0, 17 }, { -18, 0, 17 },
1875− { 19, 0, 17 }, { -19, 0, 17 }, { 20, 0, 17 }, { -20, 0, 17 },
1876− { 21, 0, 17 }, { -21, 0, 17 }, { 22, 0, 17 }, { -22, 0, 17 },
1877− { 23, 0, 17 }, { -23, 0, 17 }, { 24, 0, 17 }, { -24, 0, 17 },
1878− { 25, 0, 17 }, { -25, 0, 17 }, { 26, 0, 17 }, { -26, 0, 17 },
1879− { 27, 0, 17 }, { -27, 0, 17 }, { 28, 0, 17 }, { -28, 0, 17 },
1880− { 29, 0, 17 }, { -29, 0, 17 }, { 30, 0, 17 }, { -30, 0, 17 },
1881− { 31, 0, 17 }, { -31, 0, 17 }, { 32, 0, 17 }, { -32, 0, 17 },
1882− { 33, 0, 17 }, { -33, 0, 17 }, { 34, 0, 17 }, { -34, 0, 17 },
1883− { 35, 0, 17 }, { -35, 0, 17 }, { 36, 0, 17 }, { -36, 0, 17 },
1884− { 37, 0, 17 }, { -37, 0, 17 }, { 38, 0, 17 }, { -38, 0, 17 },
1885− { 39, 0, 17 }, { -39, 0, 17 }, { 40, 0, 17 }, { -40, 0, 17 },
1886− { 41, 0, 17 }, { -41, 0, 17 }, { 42, 0, 17 }, { -42, 0, 17 },
1887− { 43, 0, 17 }, { -43, 0, 17 }, { 44, 0, 17 }, { -44, 0, 17 },
1888− { 45, 0, 17 }, { -45, 0, 17 }, { 46, 0, 17 }, { -46, 0, 17 },
1889− { 47, 0, 17 }, { -47, 0, 17 }, { 48, 0, 17 }, { -48, 0, 17 },
1890− { 49, 0, 17 }, { -49, 0, 17 }, { 50, 0, 17 }, { -50, 0, 17 },
1891− { 51, 0, 17 }, { -51, 0, 17 }, { 52, 0, 17 }, { -52, 0, 17 },
1892− { 53, 0, 17 }, { -53, 0, 17 }, { 54, 0, 17 }, { -54, 0, 17 },
1893− { 55, 0, 17 }, { -55, 0, 17 }, { 56, 0, 17 }, { -56, 0, 17 },
1894− { 57, 0, 17 }, { -57, 0, 17 }, { 58, 0, 17 }, { -58, 0, 17 },
1895− { 59, 0, 17 }, { -59, 0, 17 }, { 60, 0, 17 }, { -60, 0, 17 },
1896− { 61, 0, 17 }, { -61, 0, 17 }, { 62, 0, 17 }, { -62, 0, 17 },
1897− { 63, 0, 17 }, { -63, 0, 17 }, RPT_32 ( 21, 0, 12 ),
1898− RPT_32 ( -21, 0, 12 ), RPT_32 ( 22, 0, 12 ),
1899− RPT_32 ( -22, 0, 12 ), RPT_32 ( 23, 0, 12 ),
1900− RPT_32 ( -23, 0, 12 ), RPT_32 ( 10, 1, 12 ),
1901− RPT_32 ( -10, 1, 12 ), RPT_32 ( 11, 1, 12 ),
1902− RPT_32 ( -11, 1, 12 ), RPT_32 ( 5, 2, 12 ),
1903− RPT_32 ( -5, 2, 12 ), RPT_32 ( 6, 2, 12 ),
1904− RPT_32 ( -6, 2, 12 ), RPT_32 ( 4, 3, 12 ),
1905− RPT_32 ( -4, 3, 12 ), RPT_32 ( 3, 5, 12 ),
1906− RPT_32 ( -3, 5, 12 ), RPT_32 ( 3, 6, 12 ),
1907− RPT_32 ( -3, 6, 12 ), RPT_32 ( 2, 9, 12 ),
1908− RPT_32 ( -2, 9, 12 ), RPT_32 ( 1, 15, 12 ),
1909− RPT_32 ( -1, 15, 12 ), RPT_16 ( 24, 0, 13 ),
1910− RPT_16 ( -24, 0, 13 ), RPT_16 ( 25, 0, 13 ),
1911− RPT_16 ( -25, 0, 13 ), RPT_16 ( 26, 0, 13 ),
1912− RPT_16 ( -26, 0, 13 ), RPT_16 ( 12, 1, 13 ),
1913− RPT_16 ( -12, 1, 13 ), RPT_16 ( 13, 1, 13 ),
1914− RPT_16 ( -13, 1, 13 ), RPT_16 ( 5, 3, 13 ),
1915− RPT_16 ( -5, 3, 13 ), RPT_16 ( 4, 4, 13 ),
1916− RPT_16 ( -4, 4, 13 ), RPT_32 ( 0, 5, 12 ),
1917− RPT_16 ( 4, 5, 13 ), RPT_16 ( -4, 5, 13 ),
1918− RPT_32 ( 0, 6, 12 ), RPT_32 ( 0, 7, 12 ),
1919− RPT_16 ( 3, 7, 13 ), RPT_16 ( -3, 7, 13 ),
1920− RPT_32 ( 0, 8, 12 ), RPT_16 ( 3, 8, 13 ),
1921− RPT_16 ( -3, 8, 13 ), RPT_32 ( 0, 9, 12 ),
1922− RPT_16 ( 1, 16, 13 ), RPT_16 ( -1, 16, 13 ),
1323+static const uint8_t hqx_ac_lens[] = {
1324+ // AC table Q0 - 815 elements
1325+ 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,
1326+ 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1327+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1328+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1329+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1330+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1331+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1332+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1333+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1334+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1335+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1336+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1337+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1338+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1339+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1340+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1341+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1342+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1343+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1344+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1345+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1346+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1347+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1348+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1349+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1350+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1351+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1352+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1353+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1354+ 14, 14, 14, 14, 14, 14, 14, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1355+ 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
1356+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
1357+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1358+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1359+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1360+ 10, 10, 10, 10, 10, 10, 10, 9, 10, 10, 10, 10, 10, 10, 10, 10, 9, 10,
1361+ 10, 9, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1362+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1363+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1364+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1365+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1366+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1367+ 11, 11, 11, 11, 11, 11, 10, 11, 11, 10, 10, 11, 11, 11, 11, 12, 12, 12,
1368+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1369+ 12, 12, 12, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13,
1370+ 13, 13, 13, 13, 13,
1371+ // AC table Q8 - 907 elements
1372+ 4, 4, 4, 4, 5, 5, 5, 5, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6,
1373+ 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14,
1374+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1375+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1376+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1377+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1378+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1379+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1380+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1381+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1382+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1383+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1384+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1385+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1386+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1387+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1388+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1389+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1390+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1391+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1392+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1393+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1394+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1395+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1396+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1397+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1398+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1399+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1400+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1401+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1402+ 15, 15, 15, 15, 15, 15, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
1403+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1404+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10,
1405+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1406+ 10, 10, 10, 9, 10, 10, 10, 10, 10, 10, 10, 10, 9, 10, 10, 10, 10, 10,
1407+ 10, 9, 10, 10, 10, 10, 9, 10, 10, 9, 10, 10, 10, 10, 10, 10, 11, 11,
1408+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1409+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1410+ 11, 11, 11, 11, 11, 11, 11, 11, 10, 11, 11, 10, 10, 10, 11, 11, 11, 11,
1411+ 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1412+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1413+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1414+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1415+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 12, 12, 11, 11, 11,
1416+ 12, 12, 12, 12, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1417+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1418+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1419+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 13, 13, 13, 13,
1420+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1421+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1422+ 13, 13, 13, 13, 13, 13, 12,
1423+ // AC table Q16 - 512 elements
1424+ 3, 3, 4, 4, 5, 5, 5, 5, 5, 5, 4, 6, 6, 6, 6, 6, 6, 6,
1425+ 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8,
1426+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1427+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
1428+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1429+ 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1430+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1431+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1432+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 17, 17, 17,
1433+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1434+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1435+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1436+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1437+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1438+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1439+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1440+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1441+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1442+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1443+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1444+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1445+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1446+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 11,
1447+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1448+ 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1449+ 12, 12, 12, 11, 12, 12, 12, 12, 12, 12, 11, 12, 12, 11, 12, 12, 12, 12,
1450+ 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1451+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 13, 13, 12, 12, 13,
1452+ 13, 12, 13, 13, 13, 13, 13, 13,
1453+ // AC table Q32 - 354 elements
1454+ 3, 3, 4, 4, 3, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6,
1455+ 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8,
1456+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1457+ 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1458+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15,
1459+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1460+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1461+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1462+ 15, 15, 15, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1463+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 16, 17, 17, 17, 17, 17, 17, 17,
1464+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1465+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1466+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1467+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1468+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1469+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1470+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 12, 12, 12, 12, 12, 12, 11,
1471+ 12, 12, 12, 12, 11, 12, 12, 12, 12, 11, 12, 12, 11, 12, 12, 12, 12, 12,
1472+ 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12,
1473+ 13, 13, 12, 12, 13, 13, 12, 13, 13, 12, 13, 13,
1474+ // AC table Q64 - 257 elements
1475+ 3, 3, 2, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7,
1476+ 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9,
1477+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1478+ 10, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1479+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1480+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1481+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 10,
1482+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1483+ 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 11, 12, 12, 12, 12, 12, 12, 12,
1484+ 12, 12, 12, 12, 12, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1485+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1486+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1487+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 13, 13, 13, 13,
1488+ 13, 13, 12, 13, 13, 12, 13, 13, 12, 13, 13, 12, 13, 13, 12, 13, 13, 13,
1489+ 13, 13, 13, 13, 13,
1490+ // AC table Q128 - 194 elements
1491+ 3, 3, 2, 4, 4, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
1492+ 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
1493+ 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10,
1494+ 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1495+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1496+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1497+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 11, 11, 11, 11, 11,
1498+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12,
1499+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1500+ 12, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1501+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
19231502 };
19241503
1925−static const HQXLUT ac64_lut[] = {
1926− RPT_512 ( 1, 0, 3 ), RPT_512 ( -1, 0, 3 ),
1927− RPT_1024( 0, 64, 2 ), RPT_256 ( 2, 0, 4 ),
1928− RPT_256 ( -2, 0, 4 ), RPT_128 ( 3, 0, 5 ),
1929− RPT_128 ( -3, 0, 5 ), RPT_128 ( 1, 1, 5 ),
1930− RPT_128 ( -1, 1, 5 ), RPT_64 ( 4, 0, 6 ),
1931− RPT_64 ( -4, 0, 6 ), RPT_64 ( 2, 1, 6 ),
1932− RPT_64 ( -2, 1, 6 ), RPT_64 ( 1, 2, 6 ),
1933− RPT_64 ( -1, 2, 6 ), RPT_32 ( 5, 0, 7 ),
1934− RPT_32 ( -5, 0, 7 ), RPT_32 ( 1, 3, 7 ),
1935− RPT_32 ( -1, 3, 7 ), RPT_32 ( 1, 4, 7 ),
1936− RPT_32 ( -1, 4, 7 ), RPT_16 ( 6, 0, 8 ),
1937− RPT_16 ( -6, 0, 8 ), RPT_16 ( 3, 1, 8 ),
1938− RPT_16 ( -3, 1, 8 ), RPT_16 ( 2, 2, 8 ),
1939− RPT_16 ( -2, 2, 8 ), RPT_16 ( 1, 5, 8 ),
1940− RPT_16 ( -1, 5, 8 ), RPT_16 ( 1, 6, 8 ),
1941− RPT_16 ( -1, 6, 8 ), RPT_16 ( 1, 7, 8 ),
1942− RPT_16 ( -1, 7, 8 ), RPT_8 ( 7, 0, 9 ),
1943− RPT_8 ( -7, 0, 9 ), RPT_8 ( 8, 0, 9 ),
1944− RPT_8 ( -8, 0, 9 ), RPT_8 ( 4, 1, 9 ),
1945− RPT_8 ( -4, 1, 9 ), RPT_8 ( 2, 3, 9 ),
1946− RPT_8 ( -2, 3, 9 ), RPT_8 ( 1, 8, 9 ),
1947− RPT_8 ( -1, 8, 9 ), RPT_8 ( 1, 9, 9 ),
1948− RPT_8 ( -1, 9, 9 ), RPT_4 ( 9, 0, 10 ),
1949− RPT_4 ( -9, 0, 10 ), RPT_4 ( 10, 0, 10 ),
1950− RPT_4 ( -10, 0, 10 ), RPT_4 ( 5, 1, 10 ),
1951− RPT_4 ( -5, 1, 10 ), RPT_4 ( 3, 2, 10 ),
1952− RPT_4 ( -3, 2, 10 ), RPT_4 ( 2, 4, 10 ),
1953− RPT_4 ( -2, 4, 10 ), RPT_4 ( 2, 5, 10 ),
1954− RPT_4 ( -2, 5, 10 ), RPT_4 ( 1, 10, 10 ),
1955− RPT_4 ( -1, 10, 10 ), RPT_4 ( 1, 11, 10 ),
1956− RPT_4 ( -1, 11, 10 ), { 4096, 0, -1 }, { 4128, 0, -1 },
1957− { 4160, 0, -1 }, { 4192, 0, -1 }, { 4224, 0, -1 }, { 4256, 0, -1 },
1958− { 4288, 0, -1 }, { 4320, 0, -1 }, RPT_4 ( 0, 0, 10 ),
1959− RPT_2 ( 11, 0, 11 ), RPT_2 ( -11, 0, 11 ),
1960− RPT_2 ( 12, 0, 11 ), RPT_2 ( -12, 0, 11 ),
1961− RPT_2 ( 6, 1, 11 ), RPT_2 ( -6, 1, 11 ),
1962− RPT_2 ( 7, 1, 11 ), RPT_2 ( -7, 1, 11 ),
1963− RPT_2 ( 3, 3, 11 ), RPT_2 ( -3, 3, 11 ),
1964− RPT_2 ( 3, 4, 11 ), RPT_2 ( -3, 4, 11 ),
1965− RPT_2 ( 3, 5, 11 ), RPT_2 ( -3, 5, 11 ),
1966− RPT_2 ( 2, 6, 11 ), RPT_2 ( -2, 6, 11 ),
1967− RPT_2 ( 2, 7, 11 ), RPT_2 ( -2, 7, 11 ),
1968− RPT_2 ( 1, 12, 11 ), RPT_2 ( -1, 12, 11 ),
1969− RPT_2 ( 1, 13, 11 ), RPT_2 ( -1, 13, 11 ),
1970− RPT_2 ( 1, 14, 11 ), RPT_2 ( -1, 14, 11 ),
1971− { 13, 0, 12 }, { -13, 0, 12 }, { 14, 0, 12 }, { -14, 0, 12 },
1972− RPT_2 ( 0, 1, 11 ), { 8, 1, 12 }, { -8, 1, 12 },
1973− { 4, 2, 12 }, { -4, 2, 12 }, { 4, 3, 12 }, { -4, 3, 12 },
1974− { 2, 8, 12 }, { -2, 8, 12 }, { 2, 9, 12 }, { -2, 9, 12 },
1975− { 1, 15, 12 }, { -1, 15, 12 }, { 4352, 0, -1 }, { 4384, 0, -1 },
1976− { 4416, 0, -1 }, { 4448, 0, -1 }, { 4480, 0, -1 }, { 0, 2, 12 },
1977− { 4512, 0, -1 }, { 0, 3, 12 }, { 4544, 0, -1 }, { 0, 4, 12 },
1978− { 4576, 0, -1 }, { 0, 5, 12 }, { 4608, 0, -1 }, { 0, 6, 12 },
1979− { 4640, 0, -1 }, { 4672, 0, -1 }, { 4704, 0, -1 }, { 4736, 0, -1 },
1980− RPT_4 ( 0, 0, 15 ), RPT_4 ( 0, 1, 15 ),
1981− RPT_4 ( 0, 2, 15 ), RPT_4 ( 0, 3, 15 ),
1982− RPT_4 ( 0, 4, 15 ), RPT_4 ( 0, 5, 15 ),
1983− RPT_4 ( 0, 6, 15 ), RPT_4 ( 0, 7, 15 ),
1984− RPT_4 ( 0, 8, 15 ), RPT_4 ( 0, 9, 15 ),
1985− RPT_4 ( 0, 10, 15 ), RPT_4 ( 0, 11, 15 ),
1986− RPT_4 ( 0, 12, 15 ), RPT_4 ( 0, 13, 15 ),
1987− RPT_4 ( 0, 14, 15 ), RPT_4 ( 0, 15, 15 ),
1988− RPT_4 ( 0, 16, 15 ), RPT_4 ( 0, 17, 15 ),
1989− RPT_4 ( 0, 18, 15 ), RPT_4 ( 0, 19, 15 ),
1990− RPT_4 ( 0, 20, 15 ), RPT_4 ( 0, 21, 15 ),
1991− RPT_4 ( 0, 22, 15 ), RPT_4 ( 0, 23, 15 ),
1992− RPT_4 ( 0, 24, 15 ), RPT_4 ( 0, 25, 15 ),
1993− RPT_4 ( 0, 26, 15 ), RPT_4 ( 0, 27, 15 ),
1994− RPT_4 ( 0, 28, 15 ), RPT_4 ( 0, 29, 15 ),
1995− RPT_4 ( 0, 30, 15 ), RPT_4 ( 0, 31, 15 ),
1996− RPT_4 ( 0, 32, 15 ), RPT_4 ( 0, 33, 15 ),
1997− RPT_4 ( 0, 34, 15 ), RPT_4 ( 0, 35, 15 ),
1998− RPT_4 ( 0, 36, 15 ), RPT_4 ( 0, 37, 15 ),
1999− RPT_4 ( 0, 38, 15 ), RPT_4 ( 0, 39, 15 ),
2000− RPT_4 ( 0, 40, 15 ), RPT_4 ( 0, 41, 15 ),
2001− RPT_4 ( 0, 42, 15 ), RPT_4 ( 0, 43, 15 ),
2002− RPT_4 ( 0, 44, 15 ), RPT_4 ( 0, 45, 15 ),
2003− RPT_4 ( 0, 46, 15 ), RPT_4 ( 0, 47, 15 ),
2004− RPT_4 ( 0, 48, 15 ), RPT_4 ( 0, 49, 15 ),
2005− RPT_4 ( 0, 50, 15 ), RPT_4 ( 0, 51, 15 ),
2006− RPT_4 ( 0, 52, 15 ), RPT_4 ( 0, 53, 15 ),
2007− RPT_4 ( 0, 54, 15 ), RPT_4 ( 0, 55, 15 ),
2008− RPT_4 ( 0, 56, 15 ), RPT_4 ( 0, 57, 15 ),
2009− RPT_4 ( 0, 58, 15 ), RPT_4 ( 0, 59, 15 ),
2010− RPT_4 ( 0, 60, 15 ), RPT_4 ( 0, 61, 15 ),
2011− RPT_4 ( 0, 62, 15 ), RPT_4 ( 0, 63, 15 ),
2012− RPT_2 ( 0, 0, 16 ), { 1, 0, 17 }, { -1, 0, 17 },
2013− { 2, 0, 17 }, { -2, 0, 17 }, { 3, 0, 17 }, { -3, 0, 17 },
2014− { 4, 0, 17 }, { -4, 0, 17 }, { 5, 0, 17 }, { -5, 0, 17 },
2015− { 6, 0, 17 }, { -6, 0, 17 }, { 7, 0, 17 }, { -7, 0, 17 },
2016− { 8, 0, 17 }, { -8, 0, 17 }, { 9, 0, 17 }, { -9, 0, 17 },
2017− { 10, 0, 17 }, { -10, 0, 17 }, { 11, 0, 17 }, { -11, 0, 17 },
2018− { 12, 0, 17 }, { -12, 0, 17 }, { 13, 0, 17 }, { -13, 0, 17 },
2019− { 14, 0, 17 }, { -14, 0, 17 }, { 15, 0, 17 }, { -15, 0, 17 },
2020− { 16, 0, 17 }, { -16, 0, 17 }, { 17, 0, 17 }, { -17, 0, 17 },
2021− { 18, 0, 17 }, { -18, 0, 17 }, { 19, 0, 17 }, { -19, 0, 17 },
2022− { 20, 0, 17 }, { -20, 0, 17 }, { 21, 0, 17 }, { -21, 0, 17 },
2023− { 22, 0, 17 }, { -22, 0, 17 }, { 23, 0, 17 }, { -23, 0, 17 },
2024− { 24, 0, 17 }, { -24, 0, 17 }, { 25, 0, 17 }, { -25, 0, 17 },
2025− { 26, 0, 17 }, { -26, 0, 17 }, { 27, 0, 17 }, { -27, 0, 17 },
2026− { 28, 0, 17 }, { -28, 0, 17 }, { 29, 0, 17 }, { -29, 0, 17 },
2027− { 30, 0, 17 }, { -30, 0, 17 }, { 31, 0, 17 }, { -31, 0, 17 },
2028− RPT_16 ( 15, 0, 13 ), RPT_16 ( -15, 0, 13 ),
2029− RPT_16 ( 9, 1, 13 ), RPT_16 ( -9, 1, 13 ),
2030− RPT_16 ( 10, 1, 13 ), RPT_16 ( -10, 1, 13 ),
2031− RPT_16 ( 5, 2, 13 ), RPT_16 ( -5, 2, 13 ),
2032− RPT_16 ( 5, 3, 13 ), RPT_16 ( -5, 3, 13 ),
2033− RPT_16 ( 4, 4, 13 ), RPT_16 ( -4, 4, 13 ),
2034− RPT_16 ( 4, 5, 13 ), RPT_16 ( -4, 5, 13 ),
2035− RPT_16 ( 3, 6, 13 ), RPT_16 ( -3, 6, 13 ),
2036− RPT_16 ( 3, 7, 13 ), RPT_16 ( -3, 7, 13 ),
2037− RPT_16 ( 1, 16, 13 ), RPT_16 ( -1, 16, 13 ),
2038− RPT_16 ( 1, 17, 13 ), RPT_16 ( -1, 17, 13 ),
2039−};
1504+static const uint16_t hqx_ac_nb_elems[] = { 815, 907, 512, 354, 257, 194 };
20401505
2041−static const HQXLUT ac128_lut[] = {
2042− RPT_256 ( 1, 0, 3 ), RPT_256 ( -1, 0, 3 ),
2043− RPT_512 ( 0, 64, 2 ), RPT_128 ( 1, 1, 4 ),
2044− RPT_128 ( -1, 1, 4 ), RPT_64 ( 2, 0, 5 ),
2045− RPT_64 ( -2, 0, 5 ), RPT_32 ( 3, 0, 6 ),
2046− RPT_32 ( -3, 0, 6 ), RPT_32 ( 2, 1, 6 ),
2047− RPT_32 ( -2, 1, 6 ), RPT_32 ( 1, 2, 6 ),
2048− RPT_32 ( -1, 2, 6 ), RPT_32 ( 1, 3, 6 ),
2049− RPT_32 ( -1, 3, 6 ), RPT_32 ( 1, 4, 6 ),
2050− RPT_32 ( -1, 4, 6 ), RPT_16 ( 4, 0, 7 ),
2051− RPT_16 ( -4, 0, 7 ), RPT_16 ( 1, 5, 7 ),
2052− RPT_16 ( -1, 5, 7 ), RPT_16 ( 1, 6, 7 ),
2053− RPT_16 ( -1, 6, 7 ), RPT_16 ( 1, 7, 7 ),
2054− RPT_16 ( -1, 7, 7 ), RPT_8 ( 5, 0, 8 ),
2055− RPT_8 ( -5, 0, 8 ), RPT_8 ( 3, 1, 8 ),
2056− RPT_8 ( -3, 1, 8 ), RPT_8 ( 2, 2, 8 ),
2057− RPT_8 ( -2, 2, 8 ), RPT_8 ( 2, 3, 8 ),
2058− RPT_8 ( -2, 3, 8 ), RPT_8 ( 1, 8, 8 ),
2059− RPT_8 ( -1, 8, 8 ), RPT_8 ( 1, 9, 8 ),
2060− RPT_8 ( -1, 9, 8 ), RPT_4 ( 6, 0, 9 ),
2061− RPT_4 ( -6, 0, 9 ), RPT_4 ( 4, 1, 9 ),
2062− RPT_4 ( -4, 1, 9 ), RPT_4 ( 2, 4, 9 ),
2063− RPT_4 ( -2, 4, 9 ), RPT_4 ( 2, 5, 9 ),
2064− RPT_4 ( -2, 5, 9 ), RPT_4 ( 1, 10, 9 ),
2065− RPT_4 ( -1, 10, 9 ), RPT_2 ( 7, 0, 10 ),
2066− RPT_2 ( -7, 0, 10 ), RPT_2 ( 5, 1, 10 ),
2067− RPT_2 ( -5, 1, 10 ), RPT_2 ( 3, 2, 10 ),
2068− RPT_2 ( -3, 2, 10 ), RPT_2 ( 3, 3, 10 ),
2069− RPT_2 ( -3, 3, 10 ), RPT_2 ( 2, 6, 10 ),
2070− RPT_2 ( -2, 6, 10 ), { 2048, 0, -1 }, { 2112, 0, -1 },
2071− { 2176, 0, -1 }, { 2240, 0, -1 }, { 6, 1, 11 }, { -6, 1, 11 },
2072− { 7, 1, 11 }, { -7, 1, 11 }, { 3, 4, 11 }, { -3, 4, 11 },
2073− { 3, 5, 11 }, { -3, 5, 11 }, { 2, 7, 11 }, { -2, 7, 11 },
2074− { 2, 8, 11 }, { -2, 8, 11 }, { 2, 9, 11 }, { -2, 9, 11 },
2075− { 1, 11, 11 }, { -1, 11, 11 }, { 1, 12, 11 }, { -1, 12, 11 },
2076− { 1, 13, 11 }, { -1, 13, 11 }, { 0, 0, 11 }, { 2304, 0, -1 },
2077− { 2368, 0, -1 }, { 2432, 0, -1 }, { 2496, 0, -1 }, { 2560, 0, -1 },
2078− { 2624, 0, -1 }, { 2688, 0, -1 }, { 2752, 0, -1 }, { 2816, 0, -1 },
2079− { 2880, 0, -1 }, { 2944, 0, -1 }, RPT_4 ( 0, 0, 15 ),
2080− RPT_4 ( 0, 1, 15 ), RPT_4 ( 0, 2, 15 ),
2081− RPT_4 ( 0, 3, 15 ), RPT_4 ( 0, 4, 15 ),
2082− RPT_4 ( 0, 5, 15 ), RPT_4 ( 0, 6, 15 ),
2083− RPT_4 ( 0, 7, 15 ), RPT_4 ( 0, 8, 15 ),
2084− RPT_4 ( 0, 9, 15 ), RPT_4 ( 0, 10, 15 ),
2085− RPT_4 ( 0, 11, 15 ), RPT_4 ( 0, 12, 15 ),
2086− RPT_4 ( 0, 13, 15 ), RPT_4 ( 0, 14, 15 ),
2087− RPT_4 ( 0, 15, 15 ), RPT_4 ( 0, 16, 15 ),
2088− RPT_4 ( 0, 17, 15 ), RPT_4 ( 0, 18, 15 ),
2089− RPT_4 ( 0, 19, 15 ), RPT_4 ( 0, 20, 15 ),
2090− RPT_4 ( 0, 21, 15 ), RPT_4 ( 0, 22, 15 ),
2091− RPT_4 ( 0, 23, 15 ), RPT_4 ( 0, 24, 15 ),
2092− RPT_4 ( 0, 25, 15 ), RPT_4 ( 0, 26, 15 ),
2093− RPT_4 ( 0, 27, 15 ), RPT_4 ( 0, 28, 15 ),
2094− RPT_4 ( 0, 29, 15 ), RPT_4 ( 0, 30, 15 ),
2095− RPT_4 ( 0, 31, 15 ), RPT_4 ( 0, 32, 15 ),
2096− RPT_4 ( 0, 33, 15 ), RPT_4 ( 0, 34, 15 ),
2097− RPT_4 ( 0, 35, 15 ), RPT_4 ( 0, 36, 15 ),
2098− RPT_4 ( 0, 37, 15 ), RPT_4 ( 0, 38, 15 ),
2099− RPT_4 ( 0, 39, 15 ), RPT_4 ( 0, 40, 15 ),
2100− RPT_4 ( 0, 41, 15 ), RPT_4 ( 0, 42, 15 ),
2101− RPT_4 ( 0, 43, 15 ), RPT_4 ( 0, 44, 15 ),
2102− RPT_4 ( 0, 45, 15 ), RPT_4 ( 0, 46, 15 ),
2103− RPT_4 ( 0, 47, 15 ), RPT_4 ( 0, 48, 15 ),
2104− RPT_4 ( 0, 49, 15 ), RPT_4 ( 0, 50, 15 ),
2105− RPT_4 ( 0, 51, 15 ), RPT_4 ( 0, 52, 15 ),
2106− RPT_4 ( 0, 53, 15 ), RPT_4 ( 0, 54, 15 ),
2107− RPT_4 ( 0, 55, 15 ), RPT_4 ( 0, 56, 15 ),
2108− RPT_4 ( 0, 57, 15 ), RPT_4 ( 0, 58, 15 ),
2109− RPT_4 ( 0, 59, 15 ), RPT_4 ( 0, 60, 15 ),
2110− RPT_4 ( 0, 61, 15 ), RPT_4 ( 0, 62, 15 ),
2111− RPT_4 ( 0, 63, 15 ), RPT_32 ( 8, 0, 12 ),
2112− RPT_32 ( -8, 0, 12 ), RPT_32 ( 9, 0, 12 ),
2113− RPT_32 ( -9, 0, 12 ), RPT_32 ( 8, 1, 12 ),
2114− RPT_32 ( -8, 1, 12 ), RPT_32 ( 4, 2, 12 ),
2115− RPT_32 ( -4, 2, 12 ), RPT_32 ( 4, 3, 12 ),
2116− RPT_32 ( -4, 3, 12 ), RPT_32 ( 3, 6, 12 ),
2117− RPT_32 ( -3, 6, 12 ), RPT_32 ( 1, 14, 12 ),
2118− RPT_32 ( -1, 14, 12 ), RPT_32 ( 1, 15, 12 ),
2119− RPT_32 ( -1, 15, 12 ), RPT_32 ( 1, 16, 12 ),
2120− RPT_32 ( -1, 16, 12 ), RPT_32 ( 0, 1, 12 ),
2121− RPT_32 ( 0, 2, 12 ), RPT_32 ( 0, 3, 12 ),
2122− RPT_2 ( 0, 0, 16 ), { 1, 0, 17 }, { -1, 0, 17 },
2123− { 2, 0, 17 }, { -2, 0, 17 }, { 3, 0, 17 }, { -3, 0, 17 },
2124− { 4, 0, 17 }, { -4, 0, 17 }, { 5, 0, 17 }, { -5, 0, 17 },
2125− { 6, 0, 17 }, { -6, 0, 17 }, { 7, 0, 17 }, { -7, 0, 17 },
2126− { 8, 0, 17 }, { -8, 0, 17 }, { 9, 0, 17 }, { -9, 0, 17 },
2127− { 10, 0, 17 }, { -10, 0, 17 }, { 11, 0, 17 }, { -11, 0, 17 },
2128− { 12, 0, 17 }, { -12, 0, 17 }, { 13, 0, 17 }, { -13, 0, 17 },
2129− { 14, 0, 17 }, { -14, 0, 17 }, { 15, 0, 17 }, { -15, 0, 17 },
2130−};
2131−
2132−const HQXAC ff_hqx_ac[NUM_HQX_AC] = {
2133− { 10, 5, ac0_lut },
2134− { 11, 6, ac8_lut },
2135− { 11, 6, ac16_lut },
2136− { 11, 6, ac32_lut },
2137− { 12, 5, ac64_lut },
2138− { 11, 6, ac128_lut },
2139−};
1506+static RL_VLC_ELEM hqx_ac_rl_vlc[15630];
21401507
21411508 #define INIT_DC_TABLE(idx, name) \
21421509 do { \
@@ -2148,8 +1515,47 @@ const HQXAC ff_hqx_ac[NUM_HQX_AC] = { · 5 unmodified lines
21481515 return ret; \
21491516 } while (0)
21501517
1518+static av_cold void hqx_init_static(void)
1519+{
1520+ VLCInitState state = VLC_INIT_STATE(hqx_ac_rl_vlc);
1521+ const uint8_t *lens = hqx_ac_lens;
1522+ const int16_t *run_level = hqx_ac_run_level;
1523+
1524+ for (int i = 0; i < NUM_HQX_AC; ++i) {
1525+ RL_VLC_ELEM *lut = state.table;
1526+ unsigned nb_codes = state.size;
1527+
1528+ ff_hqx_ac[i].lut =
1529+ ff_vlc_init_tables_from_lengths(&state, ff_hqx_ac[i].bits,
1530+ hqx_ac_nb_elems[i], lens, 1,
1531+ run_level, 2, 2, 0, 0);
1532+
1533+ nb_codes -= state.size;
1534+
1535+ for (unsigned j = 0; j < nb_codes; ++j) {
1536+ // lut[j] is in VLC (not RL_VLC) state
1537+ int sym = lut[j].sym;
1538+ int len = lut[j].len;
1539+ int level;
1540+
1541+ if (len < 0) {
1542+ level = sym;
1543+ } else {
1544+ level = sym >> 7;
1545+ lut[j].run = sym & 0x7f;
1546+ }
1547+ // lut[j] is now in RL_VLC state
1548+ lut[j].len8 = len;
1549+ lut[j].level = level;
1550+ }
1551+ lens += hqx_ac_nb_elems[i];
1552+ run_level += hqx_ac_nb_elems[i];
1553+ }
1554+}
1555+
21511556 av_cold int ff_hqx_init_vlcs(HQXContext *ctx)
21521557 {
1558+ static AVOnce init_static_once = AV_ONCE_INIT;
21531559 int ret = vlc_init(&ctx->cbp_vlc, HQX_CBP_VLC_BITS, FF_ARRAY_ELEMS(cbp_vlc_lens),
21541560 cbp_vlc_lens, 1, 1, cbp_vlc_bits, 1, 1, 0);
21551561 if (ret < 0)
@@ -2159,5 +1565,7 @@ av_cold int ff_hqx_init_vlcs(HQXContext *ctx) · 3 unmodified lines
21591565 INIT_DC_TABLE(1, dc10);
21601566 INIT_DC_TABLE(2, dc11);
21611567
1568+ ff_thread_once(&init_static_once, hqx_init_static);
1569+
21621570 return 0;
21631571 }

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t