[FFmpeg-cvslog] avcodec/hqxvlc: Avoid hardcoded RL VLC table
Andreas Rheinhardt
git at videolan.org
Mon Mar 17 04:40:18 EET 2025
ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at outlook.com> | Thu Mar 13 10:57:56 2025 +0100| [abffd9313dc97aa56b1977fe4d4303e03874cd80] | committer: Andreas Rheinhardt
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.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=abffd9313dc97aa56b1977fe4d4303e03874cd80
---
libavcodec/hqx.c | 21 +-
libavcodec/hqx.h | 12 +-
libavcodec/hqxvlc.c | 2226 +++++++++++++++++++--------------------------------
3 files changed, 829 insertions(+), 1430 deletions(-)
diff --git a/libavcodec/hqx.c b/libavcodec/hqx.c
index ee6c5a6622..b31c35bbcc 100644
--- a/libavcodec/hqx.c
+++ b/libavcodec/hqx.c
@@ -97,19 +97,16 @@ static inline void put_blocks(HQXContext *ctx, int plane,
}
static inline void hqx_get_ac(GetBitContext *gb, const HQXAC *ac,
- int *run, int *lev)
+ int *runp, int *lev)
{
- int val;
-
- val = show_bits(gb, ac->lut_bits);
- if (ac->lut[val].bits == -1) {
- GetBitContext gb2 = *gb;
- skip_bits(&gb2, ac->lut_bits);
- val = ac->lut[val].lev + show_bits(&gb2, ac->extra_bits);
- }
- *run = ac->lut[val].run;
- *lev = ac->lut[val].lev;
- skip_bits(gb, ac->lut[val].bits);
+ int level, run;
+ OPEN_READER(re, gb);
+
+ UPDATE_CACHE(re, gb);
+ GET_RL_VLC(level, run, re, gb, ac->lut, ac->bits, 2, 0);
+ CLOSE_READER(re, gb);
+ *runp = run;
+ *lev = level;
}
static int decode_block(GetBitContext *gb, VLC *vlc,
diff --git a/libavcodec/hqx.h b/libavcodec/hqx.h
index 155ec7f84f..4f313a1dc3 100644
--- a/libavcodec/hqx.h
+++ b/libavcodec/hqx.h
@@ -39,15 +39,9 @@ enum HQXACMode {
NUM_HQX_AC
};
-typedef struct HQXLUT {
- int16_t lev;
- uint8_t run;
- int8_t bits;
-} HQXLUT;
-
typedef struct HQXAC {
- int lut_bits, extra_bits;
- const HQXLUT *lut;
+ int bits;
+ const RL_VLC_ELEM *lut;
} HQXAC;
struct HQXContext;
@@ -81,7 +75,7 @@ typedef struct HQXContext {
#define HQX_CBP_VLC_BITS 5
#define HQX_DC_VLC_BITS 9
-extern const HQXAC ff_hqx_ac[NUM_HQX_AC];
+extern HQXAC ff_hqx_ac[NUM_HQX_AC];
int ff_hqx_init_vlcs(HQXContext *ctx);
diff --git a/libavcodec/hqxvlc.c b/libavcodec/hqxvlc.c
index 1eeda4fcce..94ab21724c 100644
--- a/libavcodec/hqxvlc.c
+++ b/libavcodec/hqxvlc.c
@@ -19,6 +19,7 @@
*/
#include "hqx.h"
+#include "libavutil/thread.h"
static const uint8_t cbp_vlc_bits[16] = {
0x04, 0x1C, 0x1D, 0x09, 0x1E, 0x0B, 0x1B, 0x08,
@@ -719,1424 +720,790 @@ static const uint8_t dc11_vlc_lens[2048] = {
8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7,
};
-#define RPT_2(a, b, c) { a, b, c }, { a, b, c }
-#define RPT_4(a, b, c) RPT_2( a, b, c), RPT_2( a, b, c)
-#define RPT_8(a, b, c) RPT_4( a, b, c), RPT_4( a, b, c)
-#define RPT_16(a, b, c) RPT_8( a, b, c), RPT_8( a, b, c)
-#define RPT_32(a, b, c) RPT_16( a, b, c), RPT_16( a, b, c)
-#define RPT_64(a, b, c) RPT_32( a, b, c), RPT_32( a, b, c)
-#define RPT_128(a, b, c) RPT_64( a, b, c), RPT_64( a, b, c)
-#define RPT_256(a, b, c) RPT_128(a, b, c), RPT_128(a, b, c)
-#define RPT_512(a, b, c) RPT_256(a, b, c), RPT_256(a, b, c)
-#define RPT_1024(a, b, c) RPT_512(a, b, c), RPT_512(a, b, c)
-static const HQXLUT ac0_lut[] = {
- RPT_64 ( 1, 0, 4 ), RPT_64 ( -1, 0, 4 ),
- RPT_64 ( 2, 0, 4 ), RPT_64 ( -2, 0, 4 ),
- RPT_32 ( 3, 0, 5 ), RPT_32 ( -3, 0, 5 ),
- RPT_32 ( 4, 0, 5 ), RPT_32 ( -4, 0, 5 ),
- RPT_32 ( 1, 1, 5 ), RPT_32 ( -1, 1, 5 ),
- RPT_16 ( 5, 0, 6 ), RPT_16 ( -5, 0, 6 ),
- RPT_16 ( 6, 0, 6 ), RPT_16 ( -6, 0, 6 ),
- RPT_16 ( 7, 0, 6 ), RPT_16 ( -7, 0, 6 ),
- RPT_16 ( 8, 0, 6 ), RPT_16 ( -8, 0, 6 ),
- { 1024, 0, -1 }, { 1056, 0, -1 }, { 1088, 0, -1 }, { 1120, 0, -1 },
- { 1152, 0, -1 }, { 1184, 0, -1 }, { 1216, 0, -1 }, { 1248, 0, -1 },
- { 1280, 0, -1 }, { 1312, 0, -1 }, { 1344, 0, -1 }, { 1376, 0, -1 },
- { 1408, 0, -1 }, { 1440, 0, -1 }, { 1472, 0, -1 }, { 1504, 0, -1 },
- { 1536, 0, -1 }, { 1568, 0, -1 }, { 1600, 0, -1 }, { 1632, 0, -1 },
- { 1664, 0, -1 }, { 1696, 0, -1 }, { 1728, 0, -1 }, { 1760, 0, -1 },
- { 1792, 0, -1 }, { 1824, 0, -1 }, { 1856, 0, -1 }, { 1888, 0, -1 },
- { 1920, 0, -1 }, { 1952, 0, -1 }, { 1984, 0, -1 }, { 2016, 0, -1 },
- RPT_32 ( 0, 64, 5 ), RPT_8 ( 9, 0, 7 ),
- RPT_8 ( -9, 0, 7 ), RPT_8 ( 10, 0, 7 ),
- RPT_8 ( -10, 0, 7 ), RPT_8 ( 11, 0, 7 ),
- RPT_8 ( -11, 0, 7 ), RPT_8 ( 12, 0, 7 ),
- RPT_8 ( -12, 0, 7 ), RPT_8 ( 13, 0, 7 ),
- RPT_8 ( -13, 0, 7 ), RPT_8 ( 14, 0, 7 ),
- RPT_8 ( -14, 0, 7 ), RPT_8 ( 2, 1, 7 ),
- RPT_8 ( -2, 1, 7 ), RPT_8 ( 1, 2, 7 ),
- RPT_8 ( -1, 2, 7 ), RPT_4 ( 15, 0, 8 ),
- RPT_4 ( -15, 0, 8 ), RPT_4 ( 16, 0, 8 ),
- RPT_4 ( -16, 0, 8 ), RPT_4 ( 17, 0, 8 ),
- RPT_4 ( -17, 0, 8 ), RPT_4 ( 18, 0, 8 ),
- RPT_4 ( -18, 0, 8 ), RPT_4 ( 19, 0, 8 ),
- RPT_4 ( -19, 0, 8 ), RPT_4 ( 20, 0, 8 ),
- RPT_4 ( -20, 0, 8 ), RPT_4 ( 21, 0, 8 ),
- RPT_4 ( -21, 0, 8 ), RPT_4 ( 3, 1, 8 ),
- RPT_4 ( -3, 1, 8 ), RPT_4 ( 4, 1, 8 ),
- RPT_4 ( -4, 1, 8 ), RPT_4 ( 1, 3, 8 ),
- RPT_4 ( -1, 3, 8 ), RPT_4 ( 1, 4, 8 ),
- RPT_4 ( -1, 4, 8 ), RPT_4 ( 0, 0, 8 ),
- RPT_2 ( 22, 0, 9 ), RPT_2 ( -22, 0, 9 ),
- RPT_2 ( 23, 0, 9 ), RPT_2 ( -23, 0, 9 ),
- RPT_2 ( 24, 0, 9 ), RPT_2 ( -24, 0, 9 ),
- RPT_2 ( 25, 0, 9 ), RPT_2 ( -25, 0, 9 ),
- RPT_2 ( 26, 0, 9 ), RPT_2 ( -26, 0, 9 ),
- RPT_2 ( 27, 0, 9 ), RPT_2 ( -27, 0, 9 ),
- RPT_2 ( 28, 0, 9 ), RPT_2 ( -28, 0, 9 ),
- RPT_2 ( 29, 0, 9 ), RPT_2 ( -29, 0, 9 ),
- RPT_2 ( 30, 0, 9 ), RPT_2 ( -30, 0, 9 ),
- RPT_2 ( 31, 0, 9 ), RPT_2 ( -31, 0, 9 ),
- RPT_2 ( 32, 0, 9 ), RPT_2 ( -32, 0, 9 ),
- RPT_2 ( 33, 0, 9 ), RPT_2 ( -33, 0, 9 ),
- RPT_2 ( 5, 1, 9 ), RPT_2 ( -5, 1, 9 ),
- RPT_2 ( 6, 1, 9 ), RPT_2 ( -6, 1, 9 ),
- RPT_2 ( 2, 2, 9 ), RPT_2 ( -2, 2, 9 ),
- RPT_2 ( 1, 5, 9 ), RPT_2 ( -1, 5, 9 ),
- RPT_2 ( 1, 6, 9 ), RPT_2 ( -1, 6, 9 ),
- { 34, 0, 10 }, { -34, 0, 10 }, { 35, 0, 10 }, { -35, 0, 10 },
- { 36, 0, 10 }, { -36, 0, 10 }, { 37, 0, 10 }, { -37, 0, 10 },
- { 38, 0, 10 }, { -38, 0, 10 }, { 39, 0, 10 }, { -39, 0, 10 },
- { 40, 0, 10 }, { -40, 0, 10 }, { 41, 0, 10 }, { -41, 0, 10 },
- { 42, 0, 10 }, { -42, 0, 10 }, { 43, 0, 10 }, { -43, 0, 10 },
- { 44, 0, 10 }, { -44, 0, 10 }, { 45, 0, 10 }, { -45, 0, 10 },
- { 46, 0, 10 }, { -46, 0, 10 }, { 47, 0, 10 }, { -47, 0, 10 },
- { 48, 0, 10 }, { -48, 0, 10 }, { 49, 0, 10 }, { -49, 0, 10 },
- { 50, 0, 10 }, { -50, 0, 10 }, RPT_2 ( 0, 1, 9 ),
- { 7, 1, 10 }, { -7, 1, 10 }, { 8, 1, 10 }, { -8, 1, 10 },
- { 9, 1, 10 }, { -9, 1, 10 }, { 10, 1, 10 }, { -10, 1, 10 },
- RPT_2 ( 0, 2, 9 ), { 3, 2, 10 }, { -3, 2, 10 },
- RPT_2 ( 0, 3, 9 ), { 2, 3, 10 }, { -2, 3, 10 },
- { 1, 7, 10 }, { -1, 7, 10 }, { 1, 8, 10 }, { -1, 8, 10 },
- { 2048, 0, -1 }, { 2080, 0, -1 }, { 2112, 0, -1 }, { 2144, 0, -1 },
- { 2176, 0, -1 }, { 2208, 0, -1 }, { 2240, 0, -1 }, { 2272, 0, -1 },
- { 2304, 0, -1 }, { 2336, 0, -1 }, { 2368, 0, -1 }, { 2400, 0, -1 },
- { 2432, 0, -1 }, { 2464, 0, -1 }, { 2496, 0, -1 }, { 2528, 0, -1 },
- { 2560, 0, -1 }, { 2592, 0, -1 }, { 2624, 0, -1 }, { 2656, 0, -1 },
- { 2688, 0, -1 }, { 2720, 0, -1 }, { 2752, 0, -1 }, { 0, 4, 10 },
- { 2784, 0, -1 }, { 0, 5, 10 }, { 0, 6, 10 }, { 2816, 0, -1 },
- { 2848, 0, -1 }, { 2880, 0, -1 }, { 2912, 0, -1 }, { 2944, 0, -1 },
- { 2976, 0, -1 }, { 3008, 0, -1 }, { 3040, 0, -1 }, { 3072, 0, -1 },
- { 3104, 0, -1 }, { 3136, 0, -1 }, { 3168, 0, -1 }, { 3200, 0, -1 },
- RPT_4 ( 0, 0, 13 ), RPT_2 ( 1, 0, 14 ),
- RPT_2 ( -1, 0, 14 ), RPT_2 ( 2, 0, 14 ),
- RPT_2 ( -2, 0, 14 ), RPT_2 ( 3, 0, 14 ),
- RPT_2 ( -3, 0, 14 ), RPT_2 ( 4, 0, 14 ),
- RPT_2 ( -4, 0, 14 ), RPT_2 ( 5, 0, 14 ),
- RPT_2 ( -5, 0, 14 ), RPT_2 ( 6, 0, 14 ),
- RPT_2 ( -6, 0, 14 ), RPT_2 ( 7, 0, 14 ),
- RPT_2 ( -7, 0, 14 ), RPT_2 ( 8, 0, 14 ),
- RPT_2 ( -8, 0, 14 ), RPT_2 ( 9, 0, 14 ),
- RPT_2 ( -9, 0, 14 ), RPT_2 ( 10, 0, 14 ),
- RPT_2 ( -10, 0, 14 ), RPT_2 ( 11, 0, 14 ),
- RPT_2 ( -11, 0, 14 ), RPT_2 ( 12, 0, 14 ),
- RPT_2 ( -12, 0, 14 ), RPT_2 ( 13, 0, 14 ),
- RPT_2 ( -13, 0, 14 ), RPT_2 ( 14, 0, 14 ),
- RPT_2 ( -14, 0, 14 ), RPT_2 ( 15, 0, 14 ),
- RPT_2 ( -15, 0, 14 ), RPT_2 ( 16, 0, 14 ),
- RPT_2 ( -16, 0, 14 ), RPT_2 ( 17, 0, 14 ),
- RPT_2 ( -17, 0, 14 ), RPT_2 ( 18, 0, 14 ),
- RPT_2 ( -18, 0, 14 ), RPT_2 ( 19, 0, 14 ),
- RPT_2 ( -19, 0, 14 ), RPT_2 ( 20, 0, 14 ),
- RPT_2 ( -20, 0, 14 ), RPT_2 ( 21, 0, 14 ),
- RPT_2 ( -21, 0, 14 ), RPT_2 ( 22, 0, 14 ),
- RPT_2 ( -22, 0, 14 ), RPT_2 ( 23, 0, 14 ),
- RPT_2 ( -23, 0, 14 ), RPT_2 ( 24, 0, 14 ),
- RPT_2 ( -24, 0, 14 ), RPT_2 ( 25, 0, 14 ),
- RPT_2 ( -25, 0, 14 ), RPT_2 ( 26, 0, 14 ),
- RPT_2 ( -26, 0, 14 ), RPT_2 ( 27, 0, 14 ),
- RPT_2 ( -27, 0, 14 ), RPT_2 ( 28, 0, 14 ),
- RPT_2 ( -28, 0, 14 ), RPT_2 ( 29, 0, 14 ),
- RPT_2 ( -29, 0, 14 ), RPT_2 ( 30, 0, 14 ),
- RPT_2 ( -30, 0, 14 ), RPT_2 ( 31, 0, 14 ),
- RPT_2 ( -31, 0, 14 ), RPT_2 ( 32, 0, 14 ),
- RPT_2 ( -32, 0, 14 ), RPT_2 ( 33, 0, 14 ),
- RPT_2 ( -33, 0, 14 ), RPT_2 ( 34, 0, 14 ),
- RPT_2 ( -34, 0, 14 ), RPT_2 ( 35, 0, 14 ),
- RPT_2 ( -35, 0, 14 ), RPT_2 ( 36, 0, 14 ),
- RPT_2 ( -36, 0, 14 ), RPT_2 ( 37, 0, 14 ),
- RPT_2 ( -37, 0, 14 ), RPT_2 ( 38, 0, 14 ),
- RPT_2 ( -38, 0, 14 ), RPT_2 ( 39, 0, 14 ),
- RPT_2 ( -39, 0, 14 ), RPT_2 ( 40, 0, 14 ),
- RPT_2 ( -40, 0, 14 ), RPT_2 ( 41, 0, 14 ),
- RPT_2 ( -41, 0, 14 ), RPT_2 ( 42, 0, 14 ),
- RPT_2 ( -42, 0, 14 ), RPT_2 ( 43, 0, 14 ),
- RPT_2 ( -43, 0, 14 ), RPT_2 ( 44, 0, 14 ),
- RPT_2 ( -44, 0, 14 ), RPT_2 ( 45, 0, 14 ),
- RPT_2 ( -45, 0, 14 ), RPT_2 ( 46, 0, 14 ),
- RPT_2 ( -46, 0, 14 ), RPT_2 ( 47, 0, 14 ),
- RPT_2 ( -47, 0, 14 ), RPT_2 ( 48, 0, 14 ),
- RPT_2 ( -48, 0, 14 ), RPT_2 ( 49, 0, 14 ),
- RPT_2 ( -49, 0, 14 ), RPT_2 ( 50, 0, 14 ),
- RPT_2 ( -50, 0, 14 ), RPT_2 ( 51, 0, 14 ),
- RPT_2 ( -51, 0, 14 ), RPT_2 ( 52, 0, 14 ),
- RPT_2 ( -52, 0, 14 ), RPT_2 ( 53, 0, 14 ),
- RPT_2 ( -53, 0, 14 ), RPT_2 ( 54, 0, 14 ),
- RPT_2 ( -54, 0, 14 ), RPT_2 ( 55, 0, 14 ),
- RPT_2 ( -55, 0, 14 ), RPT_2 ( 56, 0, 14 ),
- RPT_2 ( -56, 0, 14 ), RPT_2 ( 57, 0, 14 ),
- RPT_2 ( -57, 0, 14 ), RPT_2 ( 58, 0, 14 ),
- RPT_2 ( -58, 0, 14 ), RPT_2 ( 59, 0, 14 ),
- RPT_2 ( -59, 0, 14 ), RPT_2 ( 60, 0, 14 ),
- RPT_2 ( -60, 0, 14 ), RPT_2 ( 61, 0, 14 ),
- RPT_2 ( -61, 0, 14 ), RPT_2 ( 62, 0, 14 ),
- RPT_2 ( -62, 0, 14 ), RPT_2 ( 63, 0, 14 ),
- RPT_2 ( -63, 0, 14 ), RPT_2 ( 64, 0, 14 ),
- RPT_2 ( -64, 0, 14 ), RPT_2 ( 65, 0, 14 ),
- RPT_2 ( -65, 0, 14 ), RPT_2 ( 66, 0, 14 ),
- RPT_2 ( -66, 0, 14 ), RPT_2 ( 67, 0, 14 ),
- RPT_2 ( -67, 0, 14 ), RPT_2 ( 68, 0, 14 ),
- RPT_2 ( -68, 0, 14 ), RPT_2 ( 69, 0, 14 ),
- RPT_2 ( -69, 0, 14 ), RPT_2 ( 70, 0, 14 ),
- RPT_2 ( -70, 0, 14 ), RPT_2 ( 71, 0, 14 ),
- RPT_2 ( -71, 0, 14 ), RPT_2 ( 72, 0, 14 ),
- RPT_2 ( -72, 0, 14 ), RPT_2 ( 73, 0, 14 ),
- RPT_2 ( -73, 0, 14 ), RPT_2 ( 74, 0, 14 ),
- RPT_2 ( -74, 0, 14 ), RPT_2 ( 75, 0, 14 ),
- RPT_2 ( -75, 0, 14 ), RPT_2 ( 76, 0, 14 ),
- RPT_2 ( -76, 0, 14 ), RPT_2 ( 77, 0, 14 ),
- RPT_2 ( -77, 0, 14 ), RPT_2 ( 78, 0, 14 ),
- RPT_2 ( -78, 0, 14 ), RPT_2 ( 79, 0, 14 ),
- RPT_2 ( -79, 0, 14 ), RPT_2 ( 80, 0, 14 ),
- RPT_2 ( -80, 0, 14 ), RPT_2 ( 81, 0, 14 ),
- RPT_2 ( -81, 0, 14 ), RPT_2 ( 82, 0, 14 ),
- RPT_2 ( -82, 0, 14 ), RPT_2 ( 83, 0, 14 ),
- RPT_2 ( -83, 0, 14 ), RPT_2 ( 84, 0, 14 ),
- RPT_2 ( -84, 0, 14 ), RPT_2 ( 85, 0, 14 ),
- RPT_2 ( -85, 0, 14 ), RPT_2 ( 86, 0, 14 ),
- RPT_2 ( -86, 0, 14 ), RPT_2 ( 87, 0, 14 ),
- RPT_2 ( -87, 0, 14 ), RPT_2 ( 88, 0, 14 ),
- RPT_2 ( -88, 0, 14 ), RPT_2 ( 89, 0, 14 ),
- RPT_2 ( -89, 0, 14 ), RPT_2 ( 90, 0, 14 ),
- RPT_2 ( -90, 0, 14 ), RPT_2 ( 91, 0, 14 ),
- RPT_2 ( -91, 0, 14 ), RPT_2 ( 92, 0, 14 ),
- RPT_2 ( -92, 0, 14 ), RPT_2 ( 93, 0, 14 ),
- RPT_2 ( -93, 0, 14 ), RPT_2 ( 94, 0, 14 ),
- RPT_2 ( -94, 0, 14 ), RPT_2 ( 95, 0, 14 ),
- RPT_2 ( -95, 0, 14 ), RPT_2 ( 96, 0, 14 ),
- RPT_2 ( -96, 0, 14 ), RPT_2 ( 97, 0, 14 ),
- RPT_2 ( -97, 0, 14 ), RPT_2 ( 98, 0, 14 ),
- RPT_2 ( -98, 0, 14 ), RPT_2 ( 99, 0, 14 ),
- RPT_2 ( -99, 0, 14 ), RPT_2 ( 100, 0, 14 ),
- RPT_2 (-100, 0, 14 ), RPT_2 ( 101, 0, 14 ),
- RPT_2 (-101, 0, 14 ), RPT_2 ( 102, 0, 14 ),
- RPT_2 (-102, 0, 14 ), RPT_2 ( 103, 0, 14 ),
- RPT_2 (-103, 0, 14 ), RPT_2 ( 104, 0, 14 ),
- RPT_2 (-104, 0, 14 ), RPT_2 ( 105, 0, 14 ),
- RPT_2 (-105, 0, 14 ), RPT_2 ( 106, 0, 14 ),
- RPT_2 (-106, 0, 14 ), RPT_2 ( 107, 0, 14 ),
- RPT_2 (-107, 0, 14 ), RPT_2 ( 108, 0, 14 ),
- RPT_2 (-108, 0, 14 ), RPT_2 ( 109, 0, 14 ),
- RPT_2 (-109, 0, 14 ), RPT_2 ( 110, 0, 14 ),
- RPT_2 (-110, 0, 14 ), RPT_2 ( 111, 0, 14 ),
- RPT_2 (-111, 0, 14 ), RPT_2 ( 112, 0, 14 ),
- RPT_2 (-112, 0, 14 ), RPT_2 ( 113, 0, 14 ),
- RPT_2 (-113, 0, 14 ), RPT_2 ( 114, 0, 14 ),
- RPT_2 (-114, 0, 14 ), RPT_2 ( 115, 0, 14 ),
- RPT_2 (-115, 0, 14 ), RPT_2 ( 116, 0, 14 ),
- RPT_2 (-116, 0, 14 ), RPT_2 ( 117, 0, 14 ),
- RPT_2 (-117, 0, 14 ), RPT_2 ( 118, 0, 14 ),
- RPT_2 (-118, 0, 14 ), RPT_2 ( 119, 0, 14 ),
- RPT_2 (-119, 0, 14 ), RPT_2 ( 120, 0, 14 ),
- RPT_2 (-120, 0, 14 ), RPT_2 ( 121, 0, 14 ),
- RPT_2 (-121, 0, 14 ), RPT_2 ( 122, 0, 14 ),
- RPT_2 (-122, 0, 14 ), RPT_2 ( 123, 0, 14 ),
- RPT_2 (-123, 0, 14 ), RPT_2 ( 124, 0, 14 ),
- RPT_2 (-124, 0, 14 ), RPT_2 ( 125, 0, 14 ),
- RPT_2 (-125, 0, 14 ), RPT_2 ( 126, 0, 14 ),
- RPT_2 (-126, 0, 14 ), RPT_2 ( 127, 0, 14 ),
- RPT_2 (-127, 0, 14 ), RPT_2 ( 128, 0, 14 ),
- RPT_2 (-128, 0, 14 ), RPT_2 ( 129, 0, 14 ),
- RPT_2 (-129, 0, 14 ), RPT_2 ( 130, 0, 14 ),
- RPT_2 (-130, 0, 14 ), RPT_2 ( 131, 0, 14 ),
- RPT_2 (-131, 0, 14 ), RPT_2 ( 132, 0, 14 ),
- RPT_2 (-132, 0, 14 ), RPT_2 ( 133, 0, 14 ),
- RPT_2 (-133, 0, 14 ), RPT_2 ( 134, 0, 14 ),
- RPT_2 (-134, 0, 14 ), RPT_2 ( 135, 0, 14 ),
- RPT_2 (-135, 0, 14 ), RPT_2 ( 136, 0, 14 ),
- RPT_2 (-136, 0, 14 ), RPT_2 ( 137, 0, 14 ),
- RPT_2 (-137, 0, 14 ), RPT_2 ( 138, 0, 14 ),
- RPT_2 (-138, 0, 14 ), RPT_2 ( 139, 0, 14 ),
- RPT_2 (-139, 0, 14 ), RPT_2 ( 140, 0, 14 ),
- RPT_2 (-140, 0, 14 ), RPT_2 ( 141, 0, 14 ),
- RPT_2 (-141, 0, 14 ), RPT_2 ( 142, 0, 14 ),
- RPT_2 (-142, 0, 14 ), RPT_2 ( 143, 0, 14 ),
- RPT_2 (-143, 0, 14 ), RPT_2 ( 144, 0, 14 ),
- RPT_2 (-144, 0, 14 ), RPT_2 ( 145, 0, 14 ),
- RPT_2 (-145, 0, 14 ), RPT_2 ( 146, 0, 14 ),
- RPT_2 (-146, 0, 14 ), RPT_2 ( 147, 0, 14 ),
- RPT_2 (-147, 0, 14 ), RPT_2 ( 148, 0, 14 ),
- RPT_2 (-148, 0, 14 ), RPT_2 ( 149, 0, 14 ),
- RPT_2 (-149, 0, 14 ), RPT_2 ( 150, 0, 14 ),
- RPT_2 (-150, 0, 14 ), RPT_2 ( 151, 0, 14 ),
- RPT_2 (-151, 0, 14 ), RPT_2 ( 152, 0, 14 ),
- RPT_2 (-152, 0, 14 ), RPT_2 ( 153, 0, 14 ),
- RPT_2 (-153, 0, 14 ), RPT_2 ( 154, 0, 14 ),
- RPT_2 (-154, 0, 14 ), RPT_2 ( 155, 0, 14 ),
- RPT_2 (-155, 0, 14 ), RPT_2 ( 156, 0, 14 ),
- RPT_2 (-156, 0, 14 ), RPT_2 ( 157, 0, 14 ),
- RPT_2 (-157, 0, 14 ), RPT_2 ( 158, 0, 14 ),
- RPT_2 (-158, 0, 14 ), RPT_2 ( 159, 0, 14 ),
- RPT_2 (-159, 0, 14 ), RPT_2 ( 160, 0, 14 ),
- RPT_2 (-160, 0, 14 ), RPT_2 ( 161, 0, 14 ),
- RPT_2 (-161, 0, 14 ), RPT_2 ( 162, 0, 14 ),
- RPT_2 (-162, 0, 14 ), RPT_2 ( 163, 0, 14 ),
- RPT_2 (-163, 0, 14 ), RPT_2 ( 164, 0, 14 ),
- RPT_2 (-164, 0, 14 ), RPT_2 ( 165, 0, 14 ),
- RPT_2 (-165, 0, 14 ), RPT_2 ( 166, 0, 14 ),
- RPT_2 (-166, 0, 14 ), RPT_2 ( 167, 0, 14 ),
- RPT_2 (-167, 0, 14 ), RPT_2 ( 168, 0, 14 ),
- RPT_2 (-168, 0, 14 ), RPT_2 ( 169, 0, 14 ),
- RPT_2 (-169, 0, 14 ), RPT_2 ( 170, 0, 14 ),
- RPT_2 (-170, 0, 14 ), RPT_2 ( 171, 0, 14 ),
- RPT_2 (-171, 0, 14 ), RPT_2 ( 172, 0, 14 ),
- RPT_2 (-172, 0, 14 ), RPT_2 ( 173, 0, 14 ),
- RPT_2 (-173, 0, 14 ), RPT_2 ( 174, 0, 14 ),
- RPT_2 (-174, 0, 14 ), RPT_2 ( 175, 0, 14 ),
- RPT_2 (-175, 0, 14 ), RPT_2 ( 176, 0, 14 ),
- RPT_2 (-176, 0, 14 ), RPT_2 ( 177, 0, 14 ),
- RPT_2 (-177, 0, 14 ), RPT_2 ( 178, 0, 14 ),
- RPT_2 (-178, 0, 14 ), RPT_2 ( 179, 0, 14 ),
- RPT_2 (-179, 0, 14 ), RPT_2 ( 180, 0, 14 ),
- RPT_2 (-180, 0, 14 ), RPT_2 ( 181, 0, 14 ),
- RPT_2 (-181, 0, 14 ), RPT_2 ( 182, 0, 14 ),
- RPT_2 (-182, 0, 14 ), RPT_2 ( 183, 0, 14 ),
- RPT_2 (-183, 0, 14 ), RPT_2 ( 184, 0, 14 ),
- RPT_2 (-184, 0, 14 ), RPT_2 ( 185, 0, 14 ),
- RPT_2 (-185, 0, 14 ), RPT_2 ( 186, 0, 14 ),
- RPT_2 (-186, 0, 14 ), RPT_2 ( 187, 0, 14 ),
- RPT_2 (-187, 0, 14 ), RPT_2 ( 188, 0, 14 ),
- RPT_2 (-188, 0, 14 ), RPT_2 ( 189, 0, 14 ),
- RPT_2 (-189, 0, 14 ), RPT_2 ( 190, 0, 14 ),
- RPT_2 (-190, 0, 14 ), RPT_2 ( 191, 0, 14 ),
- RPT_2 (-191, 0, 14 ), RPT_2 ( 192, 0, 14 ),
- RPT_2 (-192, 0, 14 ), RPT_2 ( 193, 0, 14 ),
- RPT_2 (-193, 0, 14 ), RPT_2 ( 194, 0, 14 ),
- RPT_2 (-194, 0, 14 ), RPT_2 ( 195, 0, 14 ),
- RPT_2 (-195, 0, 14 ), RPT_2 ( 196, 0, 14 ),
- RPT_2 (-196, 0, 14 ), RPT_2 ( 197, 0, 14 ),
- RPT_2 (-197, 0, 14 ), RPT_2 ( 198, 0, 14 ),
- RPT_2 (-198, 0, 14 ), RPT_2 ( 199, 0, 14 ),
- RPT_2 (-199, 0, 14 ), RPT_2 ( 200, 0, 14 ),
- RPT_2 (-200, 0, 14 ), RPT_2 ( 201, 0, 14 ),
- RPT_2 (-201, 0, 14 ), RPT_2 ( 202, 0, 14 ),
- RPT_2 (-202, 0, 14 ), RPT_2 ( 203, 0, 14 ),
- RPT_2 (-203, 0, 14 ), RPT_2 ( 204, 0, 14 ),
- RPT_2 (-204, 0, 14 ), RPT_2 ( 205, 0, 14 ),
- RPT_2 (-205, 0, 14 ), RPT_2 ( 206, 0, 14 ),
- RPT_2 (-206, 0, 14 ), RPT_2 ( 207, 0, 14 ),
- RPT_2 (-207, 0, 14 ), RPT_2 ( 208, 0, 14 ),
- RPT_2 (-208, 0, 14 ), RPT_2 ( 209, 0, 14 ),
- RPT_2 (-209, 0, 14 ), RPT_2 ( 210, 0, 14 ),
- RPT_2 (-210, 0, 14 ), RPT_2 ( 211, 0, 14 ),
- RPT_2 (-211, 0, 14 ), RPT_2 ( 212, 0, 14 ),
- RPT_2 (-212, 0, 14 ), RPT_2 ( 213, 0, 14 ),
- RPT_2 (-213, 0, 14 ), RPT_2 ( 214, 0, 14 ),
- RPT_2 (-214, 0, 14 ), RPT_2 ( 215, 0, 14 ),
- RPT_2 (-215, 0, 14 ), RPT_2 ( 216, 0, 14 ),
- RPT_2 (-216, 0, 14 ), RPT_2 ( 217, 0, 14 ),
- RPT_2 (-217, 0, 14 ), RPT_2 ( 218, 0, 14 ),
- RPT_2 (-218, 0, 14 ), RPT_2 ( 219, 0, 14 ),
- RPT_2 (-219, 0, 14 ), RPT_2 ( 220, 0, 14 ),
- RPT_2 (-220, 0, 14 ), RPT_2 ( 221, 0, 14 ),
- RPT_2 (-221, 0, 14 ), RPT_2 ( 222, 0, 14 ),
- RPT_2 (-222, 0, 14 ), RPT_2 ( 223, 0, 14 ),
- RPT_2 (-223, 0, 14 ), RPT_2 ( 224, 0, 14 ),
- RPT_2 (-224, 0, 14 ), RPT_2 ( 225, 0, 14 ),
- RPT_2 (-225, 0, 14 ), RPT_2 ( 226, 0, 14 ),
- RPT_2 (-226, 0, 14 ), RPT_2 ( 227, 0, 14 ),
- RPT_2 (-227, 0, 14 ), RPT_2 ( 228, 0, 14 ),
- RPT_2 (-228, 0, 14 ), RPT_2 ( 229, 0, 14 ),
- RPT_2 (-229, 0, 14 ), RPT_2 ( 230, 0, 14 ),
- RPT_2 (-230, 0, 14 ), RPT_2 ( 231, 0, 14 ),
- RPT_2 (-231, 0, 14 ), RPT_2 ( 232, 0, 14 ),
- RPT_2 (-232, 0, 14 ), RPT_2 ( 233, 0, 14 ),
- RPT_2 (-233, 0, 14 ), RPT_2 ( 234, 0, 14 ),
- RPT_2 (-234, 0, 14 ), RPT_2 ( 235, 0, 14 ),
- RPT_2 (-235, 0, 14 ), RPT_2 ( 236, 0, 14 ),
- RPT_2 (-236, 0, 14 ), RPT_2 ( 237, 0, 14 ),
- RPT_2 (-237, 0, 14 ), RPT_2 ( 238, 0, 14 ),
- RPT_2 (-238, 0, 14 ), RPT_2 ( 239, 0, 14 ),
- RPT_2 (-239, 0, 14 ), RPT_2 ( 240, 0, 14 ),
- RPT_2 (-240, 0, 14 ), RPT_2 ( 241, 0, 14 ),
- RPT_2 (-241, 0, 14 ), RPT_2 ( 242, 0, 14 ),
- RPT_2 (-242, 0, 14 ), RPT_2 ( 243, 0, 14 ),
- RPT_2 (-243, 0, 14 ), RPT_2 ( 244, 0, 14 ),
- RPT_2 (-244, 0, 14 ), RPT_2 ( 245, 0, 14 ),
- RPT_2 (-245, 0, 14 ), RPT_2 ( 246, 0, 14 ),
- RPT_2 (-246, 0, 14 ), RPT_2 ( 247, 0, 14 ),
- RPT_2 (-247, 0, 14 ), RPT_2 ( 248, 0, 14 ),
- RPT_2 (-248, 0, 14 ), RPT_2 ( 249, 0, 14 ),
- RPT_2 (-249, 0, 14 ), RPT_2 ( 250, 0, 14 ),
- RPT_2 (-250, 0, 14 ), RPT_2 ( 251, 0, 14 ),
- RPT_2 (-251, 0, 14 ), RPT_2 ( 252, 0, 14 ),
- RPT_2 (-252, 0, 14 ), RPT_2 ( 253, 0, 14 ),
- RPT_2 (-253, 0, 14 ), RPT_2 ( 254, 0, 14 ),
- RPT_2 (-254, 0, 14 ), RPT_2 ( 255, 0, 14 ),
- RPT_2 (-255, 0, 14 ), { 0, 0, 15 }, { 0, 1, 15 },
- { 0, 2, 15 }, { 0, 3, 15 }, { 0, 4, 15 }, { 0, 5, 15 },
- { 0, 6, 15 }, { 0, 7, 15 }, { 0, 8, 15 }, { 0, 9, 15 },
- { 0, 10, 15 }, { 0, 11, 15 }, { 0, 12, 15 }, { 0, 13, 15 },
- { 0, 14, 15 }, { 0, 15, 15 }, { 0, 16, 15 }, { 0, 17, 15 },
- { 0, 18, 15 }, { 0, 19, 15 }, { 0, 20, 15 }, { 0, 21, 15 },
- { 0, 22, 15 }, { 0, 23, 15 }, { 0, 24, 15 }, { 0, 25, 15 },
- { 0, 26, 15 }, { 0, 27, 15 }, { 0, 28, 15 }, { 0, 29, 15 },
- { 0, 30, 15 }, { 0, 31, 15 }, { 0, 32, 15 }, { 0, 33, 15 },
- { 0, 34, 15 }, { 0, 35, 15 }, { 0, 36, 15 }, { 0, 37, 15 },
- { 0, 38, 15 }, { 0, 39, 15 }, { 0, 40, 15 }, { 0, 41, 15 },
- { 0, 42, 15 }, { 0, 43, 15 }, { 0, 44, 15 }, { 0, 45, 15 },
- { 0, 46, 15 }, { 0, 47, 15 }, { 0, 48, 15 }, { 0, 49, 15 },
- { 0, 50, 15 }, { 0, 51, 15 }, { 0, 52, 15 }, { 0, 53, 15 },
- { 0, 54, 15 }, { 0, 55, 15 }, { 0, 56, 15 }, { 0, 57, 15 },
- { 0, 58, 15 }, { 0, 59, 15 }, { 0, 60, 15 }, { 0, 61, 15 },
- { 0, 62, 15 }, { 0, 63, 15 }, RPT_16 ( 51, 0, 11 ),
- RPT_16 ( -51, 0, 11 ), RPT_16 ( 52, 0, 11 ),
- RPT_16 ( -52, 0, 11 ), RPT_16 ( 53, 0, 11 ),
- RPT_16 ( -53, 0, 11 ), RPT_16 ( 54, 0, 11 ),
- RPT_16 ( -54, 0, 11 ), RPT_16 ( 55, 0, 11 ),
- RPT_16 ( -55, 0, 11 ), RPT_16 ( 56, 0, 11 ),
- RPT_16 ( -56, 0, 11 ), RPT_16 ( 57, 0, 11 ),
- RPT_16 ( -57, 0, 11 ), RPT_16 ( 58, 0, 11 ),
- RPT_16 ( -58, 0, 11 ), RPT_16 ( 59, 0, 11 ),
- RPT_16 ( -59, 0, 11 ), RPT_16 ( 60, 0, 11 ),
- RPT_16 ( -60, 0, 11 ), RPT_16 ( 61, 0, 11 ),
- RPT_16 ( -61, 0, 11 ), RPT_16 ( 62, 0, 11 ),
- RPT_16 ( -62, 0, 11 ), RPT_16 ( 63, 0, 11 ),
- RPT_16 ( -63, 0, 11 ), RPT_16 ( 11, 1, 11 ),
- RPT_16 ( -11, 1, 11 ), RPT_16 ( 12, 1, 11 ),
- RPT_16 ( -12, 1, 11 ), RPT_16 ( 13, 1, 11 ),
- RPT_16 ( -13, 1, 11 ), RPT_16 ( 14, 1, 11 ),
- RPT_16 ( -14, 1, 11 ), RPT_16 ( 4, 2, 11 ),
- RPT_16 ( -4, 2, 11 ), RPT_16 ( 5, 2, 11 ),
- RPT_16 ( -5, 2, 11 ), RPT_16 ( 6, 2, 11 ),
- RPT_16 ( -6, 2, 11 ), RPT_16 ( 3, 3, 11 ),
- RPT_16 ( -3, 3, 11 ), RPT_16 ( 2, 4, 11 ),
- RPT_16 ( -2, 4, 11 ), RPT_16 ( 1, 9, 11 ),
- RPT_16 ( -1, 9, 11 ), RPT_16 ( 1, 10, 11 ),
- RPT_16 ( -1, 10, 11 ), RPT_8 ( 15, 1, 12 ),
- RPT_8 ( -15, 1, 12 ), RPT_8 ( 16, 1, 12 ),
- RPT_8 ( -16, 1, 12 ), RPT_8 ( 17, 1, 12 ),
- RPT_8 ( -17, 1, 12 ), RPT_8 ( 18, 1, 12 ),
- RPT_8 ( -18, 1, 12 ), RPT_8 ( 7, 2, 12 ),
- RPT_8 ( -7, 2, 12 ), RPT_8 ( 8, 2, 12 ),
- RPT_8 ( -8, 2, 12 ), RPT_8 ( 9, 2, 12 ),
- RPT_8 ( -9, 2, 12 ), RPT_8 ( 10, 2, 12 ),
- RPT_8 ( -10, 2, 12 ), RPT_8 ( 4, 3, 12 ),
- RPT_8 ( -4, 3, 12 ), RPT_8 ( 5, 3, 12 ),
- RPT_8 ( -5, 3, 12 ), RPT_8 ( 6, 3, 12 ),
- RPT_8 ( -6, 3, 12 ), RPT_8 ( 2, 5, 12 ),
- RPT_8 ( -2, 5, 12 ), RPT_16 ( 0, 7, 11 ),
- RPT_16 ( 0, 8, 11 ), RPT_16 ( 0, 9, 11 ),
- RPT_16 ( 0, 10, 11 ), RPT_8 ( 1, 11, 12 ),
- RPT_8 ( -1, 11, 12 ), RPT_8 ( 1, 12, 12 ),
- RPT_8 ( -1, 12, 12 ), RPT_8 ( 1, 13, 12 ),
- RPT_8 ( -1, 13, 12 ), RPT_8 ( 1, 14, 12 ),
- RPT_8 ( -1, 14, 12 ), RPT_4 ( 19, 1, 13 ),
- RPT_4 ( -19, 1, 13 ), RPT_4 ( 20, 1, 13 ),
- RPT_4 ( -20, 1, 13 ), RPT_4 ( 3, 4, 13 ),
- RPT_4 ( -3, 4, 13 ), RPT_4 ( 2, 6, 13 ),
- RPT_4 ( -2, 6, 13 ),
+HQXAC ff_hqx_ac[NUM_HQX_AC] = {
+ { 10 }, { 11 }, { 11 }, { 11 }, { 12 }, { 11 },
};
-static const HQXLUT ac8_lut[] = {
- RPT_128 ( 1, 0, 4 ), RPT_128 ( -1, 0, 4 ),
- RPT_128 ( 2, 0, 4 ), RPT_128 ( -2, 0, 4 ),
- RPT_64 ( 3, 0, 5 ), RPT_64 ( -3, 0, 5 ),
- RPT_64 ( 4, 0, 5 ), RPT_64 ( -4, 0, 5 ),
- RPT_128 ( 0, 64, 4 ), RPT_32 ( 5, 0, 6 ),
- RPT_32 ( -5, 0, 6 ), RPT_32 ( 6, 0, 6 ),
- RPT_32 ( -6, 0, 6 ), RPT_32 ( 7, 0, 6 ),
- RPT_32 ( -7, 0, 6 ), RPT_32 ( 8, 0, 6 ),
- RPT_32 ( -8, 0, 6 ), RPT_32 ( 1, 1, 6 ),
- RPT_32 ( -1, 1, 6 ), RPT_32 ( 2, 1, 6 ),
- RPT_32 ( -2, 1, 6 ), RPT_16 ( 9, 0, 7 ),
- RPT_16 ( -9, 0, 7 ), RPT_16 ( 10, 0, 7 ),
- RPT_16 ( -10, 0, 7 ), RPT_16 ( 11, 0, 7 ),
- RPT_16 ( -11, 0, 7 ), RPT_16 ( 12, 0, 7 ),
- RPT_16 ( -12, 0, 7 ), RPT_16 ( 3, 1, 7 ),
- RPT_16 ( -3, 1, 7 ), RPT_16 ( 4, 1, 7 ),
- RPT_16 ( -4, 1, 7 ), RPT_16 ( 1, 2, 7 ),
- RPT_16 ( -1, 2, 7 ), { 2048, 0, -1 }, { 2112, 0, -1 },
- { 2176, 0, -1 }, { 2240, 0, -1 }, { 2304, 0, -1 }, { 2368, 0, -1 },
- { 2432, 0, -1 }, { 2496, 0, -1 }, { 2560, 0, -1 }, { 2624, 0, -1 },
- { 2688, 0, -1 }, { 2752, 0, -1 }, { 2816, 0, -1 }, { 2880, 0, -1 },
- { 2944, 0, -1 }, { 3008, 0, -1 }, { 3072, 0, -1 }, { 3136, 0, -1 },
- { 3200, 0, -1 }, { 3264, 0, -1 }, { 3328, 0, -1 }, { 3392, 0, -1 },
- { 3456, 0, -1 }, { 3520, 0, -1 }, { 3584, 0, -1 }, { 3648, 0, -1 },
- { 3712, 0, -1 }, { 3776, 0, -1 }, { 3840, 0, -1 }, { 3904, 0, -1 },
- { 3968, 0, -1 }, { 4032, 0, -1 }, RPT_8 ( 13, 0, 8 ),
- RPT_8 ( -13, 0, 8 ), RPT_8 ( 14, 0, 8 ),
- RPT_8 ( -14, 0, 8 ), RPT_8 ( 15, 0, 8 ),
- RPT_8 ( -15, 0, 8 ), RPT_8 ( 16, 0, 8 ),
- RPT_8 ( -16, 0, 8 ), RPT_8 ( 17, 0, 8 ),
- RPT_8 ( -17, 0, 8 ), RPT_8 ( 18, 0, 8 ),
- RPT_8 ( -18, 0, 8 ), RPT_8 ( 5, 1, 8 ),
- RPT_8 ( -5, 1, 8 ), RPT_8 ( 6, 1, 8 ),
- RPT_8 ( -6, 1, 8 ), RPT_8 ( 2, 2, 8 ),
- RPT_8 ( -2, 2, 8 ), RPT_8 ( 1, 3, 8 ),
- RPT_8 ( -1, 3, 8 ), RPT_8 ( 0, 0, 8 ),
- RPT_4 ( 19, 0, 9 ), RPT_4 ( -19, 0, 9 ),
- RPT_4 ( 20, 0, 9 ), RPT_4 ( -20, 0, 9 ),
- RPT_4 ( 21, 0, 9 ), RPT_4 ( -21, 0, 9 ),
- RPT_4 ( 22, 0, 9 ), RPT_4 ( -22, 0, 9 ),
- RPT_4 ( 23, 0, 9 ), RPT_4 ( -23, 0, 9 ),
- RPT_4 ( 24, 0, 9 ), RPT_4 ( -24, 0, 9 ),
- RPT_4 ( 25, 0, 9 ), RPT_4 ( -25, 0, 9 ),
- RPT_4 ( 7, 1, 9 ), RPT_4 ( -7, 1, 9 ),
- RPT_4 ( 8, 1, 9 ), RPT_4 ( -8, 1, 9 ),
- RPT_4 ( 3, 2, 9 ), RPT_4 ( -3, 2, 9 ),
- RPT_4 ( 2, 3, 9 ), RPT_4 ( -2, 3, 9 ),
- RPT_4 ( 1, 4, 9 ), RPT_4 ( -1, 4, 9 ),
- RPT_4 ( 1, 5, 9 ), RPT_4 ( -1, 5, 9 ),
- RPT_2 ( 26, 0, 10 ), RPT_2 ( -26, 0, 10 ),
- RPT_2 ( 27, 0, 10 ), RPT_2 ( -27, 0, 10 ),
- RPT_2 ( 28, 0, 10 ), RPT_2 ( -28, 0, 10 ),
- RPT_2 ( 29, 0, 10 ), RPT_2 ( -29, 0, 10 ),
- RPT_2 ( 30, 0, 10 ), RPT_2 ( -30, 0, 10 ),
- RPT_2 ( 31, 0, 10 ), RPT_2 ( -31, 0, 10 ),
- RPT_2 ( 32, 0, 10 ), RPT_2 ( -32, 0, 10 ),
- RPT_2 ( 33, 0, 10 ), RPT_2 ( -33, 0, 10 ),
- RPT_2 ( 34, 0, 10 ), RPT_2 ( -34, 0, 10 ),
- RPT_2 ( 35, 0, 10 ), RPT_2 ( -35, 0, 10 ),
- RPT_2 ( 36, 0, 10 ), RPT_2 ( -36, 0, 10 ),
- RPT_4 ( 0, 1, 9 ), RPT_2 ( 9, 1, 10 ),
- RPT_2 ( -9, 1, 10 ), RPT_2 ( 10, 1, 10 ),
- RPT_2 ( -10, 1, 10 ), RPT_2 ( 11, 1, 10 ),
- RPT_2 ( -11, 1, 10 ), RPT_2 ( 12, 1, 10 ),
- RPT_2 ( -12, 1, 10 ), RPT_4 ( 0, 2, 9 ),
- RPT_2 ( 4, 2, 10 ), RPT_2 ( -4, 2, 10 ),
- RPT_2 ( 5, 2, 10 ), RPT_2 ( -5, 2, 10 ),
- RPT_2 ( 6, 2, 10 ), RPT_2 ( -6, 2, 10 ),
- RPT_4 ( 0, 3, 9 ), RPT_2 ( 3, 3, 10 ),
- RPT_2 ( -3, 3, 10 ), RPT_2 ( 4, 3, 10 ),
- RPT_2 ( -4, 3, 10 ), RPT_4 ( 0, 4, 9 ),
- RPT_2 ( 2, 4, 10 ), RPT_2 ( -2, 4, 10 ),
- RPT_4 ( 0, 5, 9 ), RPT_2 ( 1, 6, 10 ),
- RPT_2 ( -1, 6, 10 ), RPT_2 ( 1, 7, 10 ),
- RPT_2 ( -1, 7, 10 ), RPT_2 ( 1, 8, 10 ),
- RPT_2 ( -1, 8, 10 ), { 37, 0, 11 }, { -37, 0, 11 },
- { 38, 0, 11 }, { -38, 0, 11 }, { 39, 0, 11 }, { -39, 0, 11 },
- { 40, 0, 11 }, { -40, 0, 11 }, { 41, 0, 11 }, { -41, 0, 11 },
- { 42, 0, 11 }, { -42, 0, 11 }, { 43, 0, 11 }, { -43, 0, 11 },
- { 44, 0, 11 }, { -44, 0, 11 }, { 45, 0, 11 }, { -45, 0, 11 },
- { 46, 0, 11 }, { -46, 0, 11 }, { 47, 0, 11 }, { -47, 0, 11 },
- { 48, 0, 11 }, { -48, 0, 11 }, { 13, 1, 11 }, { -13, 1, 11 },
- { 14, 1, 11 }, { -14, 1, 11 }, { 15, 1, 11 }, { -15, 1, 11 },
- { 16, 1, 11 }, { -16, 1, 11 }, { 7, 2, 11 }, { -7, 2, 11 },
- { 8, 2, 11 }, { -8, 2, 11 }, { 5, 3, 11 }, { -5, 3, 11 },
- { 6, 3, 11 }, { -6, 3, 11 }, { 3, 4, 11 }, { -3, 4, 11 },
- { 4, 4, 11 }, { -4, 4, 11 }, { 2, 5, 11 }, { -2, 5, 11 },
- RPT_2 ( 0, 6, 10 ), { 2, 6, 11 }, { -2, 6, 11 },
- RPT_2 ( 0, 7, 10 ), RPT_2 ( 0, 8, 10 ),
- RPT_2 ( 0, 9, 10 ), { 1, 9, 11 }, { -1, 9, 11 },
- { 1, 10, 11 }, { -1, 10, 11 }, { 1, 11, 11 }, { -1, 11, 11 },
- { 1, 12, 11 }, { -1, 12, 11 }, { 4096, 0, -1 }, { 4160, 0, -1 },
- { 4224, 0, -1 }, { 4288, 0, -1 }, { 4352, 0, -1 }, { 4416, 0, -1 },
- { 4480, 0, -1 }, { 4544, 0, -1 }, { 4608, 0, -1 }, { 4672, 0, -1 },
- { 4736, 0, -1 }, { 4800, 0, -1 }, { 4864, 0, -1 }, { 4928, 0, -1 },
- { 4992, 0, -1 }, { 5056, 0, -1 }, { 5120, 0, -1 }, { 5184, 0, -1 },
- { 5248, 0, -1 }, { 5312, 0, -1 }, { 5376, 0, -1 }, { 5440, 0, -1 },
- { 5504, 0, -1 }, { 5568, 0, -1 }, { 5632, 0, -1 }, { 5696, 0, -1 },
- { 5760, 0, -1 }, { 5824, 0, -1 }, { 5888, 0, -1 }, { 5952, 0, -1 },
- { 6016, 0, -1 }, { 6080, 0, -1 }, { 6144, 0, -1 }, { 6208, 0, -1 },
- { 6272, 0, -1 }, { 6336, 0, -1 }, { 6400, 0, -1 }, { 6464, 0, -1 },
- { 6528, 0, -1 }, { 6592, 0, -1 }, { 0, 10, 11 }, { 6656, 0, -1 },
- { 0, 11, 11 }, { 0, 12, 11 }, { 0, 13, 11 }, { 6720, 0, -1 },
- { 6784, 0, -1 }, { 6848, 0, -1 }, { 6912, 0, -1 }, { 6976, 0, -1 },
- { 7040, 0, -1 }, { 7104, 0, -1 }, { 7168, 0, -1 }, { 7232, 0, -1 },
- { 7296, 0, -1 }, { 7360, 0, -1 }, { 7424, 0, -1 }, { 7488, 0, -1 },
- { 7552, 0, -1 }, { 7616, 0, -1 }, RPT_8 ( 0, 0, 14 ),
- RPT_4 ( 1, 0, 15 ), RPT_4 ( -1, 0, 15 ),
- RPT_4 ( 2, 0, 15 ), RPT_4 ( -2, 0, 15 ),
- RPT_4 ( 3, 0, 15 ), RPT_4 ( -3, 0, 15 ),
- RPT_4 ( 4, 0, 15 ), RPT_4 ( -4, 0, 15 ),
- RPT_4 ( 5, 0, 15 ), RPT_4 ( -5, 0, 15 ),
- RPT_4 ( 6, 0, 15 ), RPT_4 ( -6, 0, 15 ),
- RPT_4 ( 7, 0, 15 ), RPT_4 ( -7, 0, 15 ),
- RPT_4 ( 8, 0, 15 ), RPT_4 ( -8, 0, 15 ),
- RPT_4 ( 9, 0, 15 ), RPT_4 ( -9, 0, 15 ),
- RPT_4 ( 10, 0, 15 ), RPT_4 ( -10, 0, 15 ),
- RPT_4 ( 11, 0, 15 ), RPT_4 ( -11, 0, 15 ),
- RPT_4 ( 12, 0, 15 ), RPT_4 ( -12, 0, 15 ),
- RPT_4 ( 13, 0, 15 ), RPT_4 ( -13, 0, 15 ),
- RPT_4 ( 14, 0, 15 ), RPT_4 ( -14, 0, 15 ),
- RPT_4 ( 15, 0, 15 ), RPT_4 ( -15, 0, 15 ),
- RPT_4 ( 16, 0, 15 ), RPT_4 ( -16, 0, 15 ),
- RPT_4 ( 17, 0, 15 ), RPT_4 ( -17, 0, 15 ),
- RPT_4 ( 18, 0, 15 ), RPT_4 ( -18, 0, 15 ),
- RPT_4 ( 19, 0, 15 ), RPT_4 ( -19, 0, 15 ),
- RPT_4 ( 20, 0, 15 ), RPT_4 ( -20, 0, 15 ),
- RPT_4 ( 21, 0, 15 ), RPT_4 ( -21, 0, 15 ),
- RPT_4 ( 22, 0, 15 ), RPT_4 ( -22, 0, 15 ),
- RPT_4 ( 23, 0, 15 ), RPT_4 ( -23, 0, 15 ),
- RPT_4 ( 24, 0, 15 ), RPT_4 ( -24, 0, 15 ),
- RPT_4 ( 25, 0, 15 ), RPT_4 ( -25, 0, 15 ),
- RPT_4 ( 26, 0, 15 ), RPT_4 ( -26, 0, 15 ),
- RPT_4 ( 27, 0, 15 ), RPT_4 ( -27, 0, 15 ),
- RPT_4 ( 28, 0, 15 ), RPT_4 ( -28, 0, 15 ),
- RPT_4 ( 29, 0, 15 ), RPT_4 ( -29, 0, 15 ),
- RPT_4 ( 30, 0, 15 ), RPT_4 ( -30, 0, 15 ),
- RPT_4 ( 31, 0, 15 ), RPT_4 ( -31, 0, 15 ),
- RPT_4 ( 32, 0, 15 ), RPT_4 ( -32, 0, 15 ),
- RPT_4 ( 33, 0, 15 ), RPT_4 ( -33, 0, 15 ),
- RPT_4 ( 34, 0, 15 ), RPT_4 ( -34, 0, 15 ),
- RPT_4 ( 35, 0, 15 ), RPT_4 ( -35, 0, 15 ),
- RPT_4 ( 36, 0, 15 ), RPT_4 ( -36, 0, 15 ),
- RPT_4 ( 37, 0, 15 ), RPT_4 ( -37, 0, 15 ),
- RPT_4 ( 38, 0, 15 ), RPT_4 ( -38, 0, 15 ),
- RPT_4 ( 39, 0, 15 ), RPT_4 ( -39, 0, 15 ),
- RPT_4 ( 40, 0, 15 ), RPT_4 ( -40, 0, 15 ),
- RPT_4 ( 41, 0, 15 ), RPT_4 ( -41, 0, 15 ),
- RPT_4 ( 42, 0, 15 ), RPT_4 ( -42, 0, 15 ),
- RPT_4 ( 43, 0, 15 ), RPT_4 ( -43, 0, 15 ),
- RPT_4 ( 44, 0, 15 ), RPT_4 ( -44, 0, 15 ),
- RPT_4 ( 45, 0, 15 ), RPT_4 ( -45, 0, 15 ),
- RPT_4 ( 46, 0, 15 ), RPT_4 ( -46, 0, 15 ),
- RPT_4 ( 47, 0, 15 ), RPT_4 ( -47, 0, 15 ),
- RPT_4 ( 48, 0, 15 ), RPT_4 ( -48, 0, 15 ),
- RPT_4 ( 49, 0, 15 ), RPT_4 ( -49, 0, 15 ),
- RPT_4 ( 50, 0, 15 ), RPT_4 ( -50, 0, 15 ),
- RPT_4 ( 51, 0, 15 ), RPT_4 ( -51, 0, 15 ),
- RPT_4 ( 52, 0, 15 ), RPT_4 ( -52, 0, 15 ),
- RPT_4 ( 53, 0, 15 ), RPT_4 ( -53, 0, 15 ),
- RPT_4 ( 54, 0, 15 ), RPT_4 ( -54, 0, 15 ),
- RPT_4 ( 55, 0, 15 ), RPT_4 ( -55, 0, 15 ),
- RPT_4 ( 56, 0, 15 ), RPT_4 ( -56, 0, 15 ),
- RPT_4 ( 57, 0, 15 ), RPT_4 ( -57, 0, 15 ),
- RPT_4 ( 58, 0, 15 ), RPT_4 ( -58, 0, 15 ),
- RPT_4 ( 59, 0, 15 ), RPT_4 ( -59, 0, 15 ),
- RPT_4 ( 60, 0, 15 ), RPT_4 ( -60, 0, 15 ),
- RPT_4 ( 61, 0, 15 ), RPT_4 ( -61, 0, 15 ),
- RPT_4 ( 62, 0, 15 ), RPT_4 ( -62, 0, 15 ),
- RPT_4 ( 63, 0, 15 ), RPT_4 ( -63, 0, 15 ),
- RPT_4 ( 64, 0, 15 ), RPT_4 ( -64, 0, 15 ),
- RPT_4 ( 65, 0, 15 ), RPT_4 ( -65, 0, 15 ),
- RPT_4 ( 66, 0, 15 ), RPT_4 ( -66, 0, 15 ),
- RPT_4 ( 67, 0, 15 ), RPT_4 ( -67, 0, 15 ),
- RPT_4 ( 68, 0, 15 ), RPT_4 ( -68, 0, 15 ),
- RPT_4 ( 69, 0, 15 ), RPT_4 ( -69, 0, 15 ),
- RPT_4 ( 70, 0, 15 ), RPT_4 ( -70, 0, 15 ),
- RPT_4 ( 71, 0, 15 ), RPT_4 ( -71, 0, 15 ),
- RPT_4 ( 72, 0, 15 ), RPT_4 ( -72, 0, 15 ),
- RPT_4 ( 73, 0, 15 ), RPT_4 ( -73, 0, 15 ),
- RPT_4 ( 74, 0, 15 ), RPT_4 ( -74, 0, 15 ),
- RPT_4 ( 75, 0, 15 ), RPT_4 ( -75, 0, 15 ),
- RPT_4 ( 76, 0, 15 ), RPT_4 ( -76, 0, 15 ),
- RPT_4 ( 77, 0, 15 ), RPT_4 ( -77, 0, 15 ),
- RPT_4 ( 78, 0, 15 ), RPT_4 ( -78, 0, 15 ),
- RPT_4 ( 79, 0, 15 ), RPT_4 ( -79, 0, 15 ),
- RPT_4 ( 80, 0, 15 ), RPT_4 ( -80, 0, 15 ),
- RPT_4 ( 81, 0, 15 ), RPT_4 ( -81, 0, 15 ),
- RPT_4 ( 82, 0, 15 ), RPT_4 ( -82, 0, 15 ),
- RPT_4 ( 83, 0, 15 ), RPT_4 ( -83, 0, 15 ),
- RPT_4 ( 84, 0, 15 ), RPT_4 ( -84, 0, 15 ),
- RPT_4 ( 85, 0, 15 ), RPT_4 ( -85, 0, 15 ),
- RPT_4 ( 86, 0, 15 ), RPT_4 ( -86, 0, 15 ),
- RPT_4 ( 87, 0, 15 ), RPT_4 ( -87, 0, 15 ),
- RPT_4 ( 88, 0, 15 ), RPT_4 ( -88, 0, 15 ),
- RPT_4 ( 89, 0, 15 ), RPT_4 ( -89, 0, 15 ),
- RPT_4 ( 90, 0, 15 ), RPT_4 ( -90, 0, 15 ),
- RPT_4 ( 91, 0, 15 ), RPT_4 ( -91, 0, 15 ),
- RPT_4 ( 92, 0, 15 ), RPT_4 ( -92, 0, 15 ),
- RPT_4 ( 93, 0, 15 ), RPT_4 ( -93, 0, 15 ),
- RPT_4 ( 94, 0, 15 ), RPT_4 ( -94, 0, 15 ),
- RPT_4 ( 95, 0, 15 ), RPT_4 ( -95, 0, 15 ),
- RPT_4 ( 96, 0, 15 ), RPT_4 ( -96, 0, 15 ),
- RPT_4 ( 97, 0, 15 ), RPT_4 ( -97, 0, 15 ),
- RPT_4 ( 98, 0, 15 ), RPT_4 ( -98, 0, 15 ),
- RPT_4 ( 99, 0, 15 ), RPT_4 ( -99, 0, 15 ),
- RPT_4 ( 100, 0, 15 ), RPT_4 (-100, 0, 15 ),
- RPT_4 ( 101, 0, 15 ), RPT_4 (-101, 0, 15 ),
- RPT_4 ( 102, 0, 15 ), RPT_4 (-102, 0, 15 ),
- RPT_4 ( 103, 0, 15 ), RPT_4 (-103, 0, 15 ),
- RPT_4 ( 104, 0, 15 ), RPT_4 (-104, 0, 15 ),
- RPT_4 ( 105, 0, 15 ), RPT_4 (-105, 0, 15 ),
- RPT_4 ( 106, 0, 15 ), RPT_4 (-106, 0, 15 ),
- RPT_4 ( 107, 0, 15 ), RPT_4 (-107, 0, 15 ),
- RPT_4 ( 108, 0, 15 ), RPT_4 (-108, 0, 15 ),
- RPT_4 ( 109, 0, 15 ), RPT_4 (-109, 0, 15 ),
- RPT_4 ( 110, 0, 15 ), RPT_4 (-110, 0, 15 ),
- RPT_4 ( 111, 0, 15 ), RPT_4 (-111, 0, 15 ),
- RPT_4 ( 112, 0, 15 ), RPT_4 (-112, 0, 15 ),
- RPT_4 ( 113, 0, 15 ), RPT_4 (-113, 0, 15 ),
- RPT_4 ( 114, 0, 15 ), RPT_4 (-114, 0, 15 ),
- RPT_4 ( 115, 0, 15 ), RPT_4 (-115, 0, 15 ),
- RPT_4 ( 116, 0, 15 ), RPT_4 (-116, 0, 15 ),
- RPT_4 ( 117, 0, 15 ), RPT_4 (-117, 0, 15 ),
- RPT_4 ( 118, 0, 15 ), RPT_4 (-118, 0, 15 ),
- RPT_4 ( 119, 0, 15 ), RPT_4 (-119, 0, 15 ),
- RPT_4 ( 120, 0, 15 ), RPT_4 (-120, 0, 15 ),
- RPT_4 ( 121, 0, 15 ), RPT_4 (-121, 0, 15 ),
- RPT_4 ( 122, 0, 15 ), RPT_4 (-122, 0, 15 ),
- RPT_4 ( 123, 0, 15 ), RPT_4 (-123, 0, 15 ),
- RPT_4 ( 124, 0, 15 ), RPT_4 (-124, 0, 15 ),
- RPT_4 ( 125, 0, 15 ), RPT_4 (-125, 0, 15 ),
- RPT_4 ( 126, 0, 15 ), RPT_4 (-126, 0, 15 ),
- RPT_4 ( 127, 0, 15 ), RPT_4 (-127, 0, 15 ),
- RPT_4 ( 128, 0, 15 ), RPT_4 (-128, 0, 15 ),
- RPT_4 ( 129, 0, 15 ), RPT_4 (-129, 0, 15 ),
- RPT_4 ( 130, 0, 15 ), RPT_4 (-130, 0, 15 ),
- RPT_4 ( 131, 0, 15 ), RPT_4 (-131, 0, 15 ),
- RPT_4 ( 132, 0, 15 ), RPT_4 (-132, 0, 15 ),
- RPT_4 ( 133, 0, 15 ), RPT_4 (-133, 0, 15 ),
- RPT_4 ( 134, 0, 15 ), RPT_4 (-134, 0, 15 ),
- RPT_4 ( 135, 0, 15 ), RPT_4 (-135, 0, 15 ),
- RPT_4 ( 136, 0, 15 ), RPT_4 (-136, 0, 15 ),
- RPT_4 ( 137, 0, 15 ), RPT_4 (-137, 0, 15 ),
- RPT_4 ( 138, 0, 15 ), RPT_4 (-138, 0, 15 ),
- RPT_4 ( 139, 0, 15 ), RPT_4 (-139, 0, 15 ),
- RPT_4 ( 140, 0, 15 ), RPT_4 (-140, 0, 15 ),
- RPT_4 ( 141, 0, 15 ), RPT_4 (-141, 0, 15 ),
- RPT_4 ( 142, 0, 15 ), RPT_4 (-142, 0, 15 ),
- RPT_4 ( 143, 0, 15 ), RPT_4 (-143, 0, 15 ),
- RPT_4 ( 144, 0, 15 ), RPT_4 (-144, 0, 15 ),
- RPT_4 ( 145, 0, 15 ), RPT_4 (-145, 0, 15 ),
- RPT_4 ( 146, 0, 15 ), RPT_4 (-146, 0, 15 ),
- RPT_4 ( 147, 0, 15 ), RPT_4 (-147, 0, 15 ),
- RPT_4 ( 148, 0, 15 ), RPT_4 (-148, 0, 15 ),
- RPT_4 ( 149, 0, 15 ), RPT_4 (-149, 0, 15 ),
- RPT_4 ( 150, 0, 15 ), RPT_4 (-150, 0, 15 ),
- RPT_4 ( 151, 0, 15 ), RPT_4 (-151, 0, 15 ),
- RPT_4 ( 152, 0, 15 ), RPT_4 (-152, 0, 15 ),
- RPT_4 ( 153, 0, 15 ), RPT_4 (-153, 0, 15 ),
- RPT_4 ( 154, 0, 15 ), RPT_4 (-154, 0, 15 ),
- RPT_4 ( 155, 0, 15 ), RPT_4 (-155, 0, 15 ),
- RPT_4 ( 156, 0, 15 ), RPT_4 (-156, 0, 15 ),
- RPT_4 ( 157, 0, 15 ), RPT_4 (-157, 0, 15 ),
- RPT_4 ( 158, 0, 15 ), RPT_4 (-158, 0, 15 ),
- RPT_4 ( 159, 0, 15 ), RPT_4 (-159, 0, 15 ),
- RPT_4 ( 160, 0, 15 ), RPT_4 (-160, 0, 15 ),
- RPT_4 ( 161, 0, 15 ), RPT_4 (-161, 0, 15 ),
- RPT_4 ( 162, 0, 15 ), RPT_4 (-162, 0, 15 ),
- RPT_4 ( 163, 0, 15 ), RPT_4 (-163, 0, 15 ),
- RPT_4 ( 164, 0, 15 ), RPT_4 (-164, 0, 15 ),
- RPT_4 ( 165, 0, 15 ), RPT_4 (-165, 0, 15 ),
- RPT_4 ( 166, 0, 15 ), RPT_4 (-166, 0, 15 ),
- RPT_4 ( 167, 0, 15 ), RPT_4 (-167, 0, 15 ),
- RPT_4 ( 168, 0, 15 ), RPT_4 (-168, 0, 15 ),
- RPT_4 ( 169, 0, 15 ), RPT_4 (-169, 0, 15 ),
- RPT_4 ( 170, 0, 15 ), RPT_4 (-170, 0, 15 ),
- RPT_4 ( 171, 0, 15 ), RPT_4 (-171, 0, 15 ),
- RPT_4 ( 172, 0, 15 ), RPT_4 (-172, 0, 15 ),
- RPT_4 ( 173, 0, 15 ), RPT_4 (-173, 0, 15 ),
- RPT_4 ( 174, 0, 15 ), RPT_4 (-174, 0, 15 ),
- RPT_4 ( 175, 0, 15 ), RPT_4 (-175, 0, 15 ),
- RPT_4 ( 176, 0, 15 ), RPT_4 (-176, 0, 15 ),
- RPT_4 ( 177, 0, 15 ), RPT_4 (-177, 0, 15 ),
- RPT_4 ( 178, 0, 15 ), RPT_4 (-178, 0, 15 ),
- RPT_4 ( 179, 0, 15 ), RPT_4 (-179, 0, 15 ),
- RPT_4 ( 180, 0, 15 ), RPT_4 (-180, 0, 15 ),
- RPT_4 ( 181, 0, 15 ), RPT_4 (-181, 0, 15 ),
- RPT_4 ( 182, 0, 15 ), RPT_4 (-182, 0, 15 ),
- RPT_4 ( 183, 0, 15 ), RPT_4 (-183, 0, 15 ),
- RPT_4 ( 184, 0, 15 ), RPT_4 (-184, 0, 15 ),
- RPT_4 ( 185, 0, 15 ), RPT_4 (-185, 0, 15 ),
- RPT_4 ( 186, 0, 15 ), RPT_4 (-186, 0, 15 ),
- RPT_4 ( 187, 0, 15 ), RPT_4 (-187, 0, 15 ),
- RPT_4 ( 188, 0, 15 ), RPT_4 (-188, 0, 15 ),
- RPT_4 ( 189, 0, 15 ), RPT_4 (-189, 0, 15 ),
- RPT_4 ( 190, 0, 15 ), RPT_4 (-190, 0, 15 ),
- RPT_4 ( 191, 0, 15 ), RPT_4 (-191, 0, 15 ),
- RPT_4 ( 192, 0, 15 ), RPT_4 (-192, 0, 15 ),
- RPT_4 ( 193, 0, 15 ), RPT_4 (-193, 0, 15 ),
- RPT_4 ( 194, 0, 15 ), RPT_4 (-194, 0, 15 ),
- RPT_4 ( 195, 0, 15 ), RPT_4 (-195, 0, 15 ),
- RPT_4 ( 196, 0, 15 ), RPT_4 (-196, 0, 15 ),
- RPT_4 ( 197, 0, 15 ), RPT_4 (-197, 0, 15 ),
- RPT_4 ( 198, 0, 15 ), RPT_4 (-198, 0, 15 ),
- RPT_4 ( 199, 0, 15 ), RPT_4 (-199, 0, 15 ),
- RPT_4 ( 200, 0, 15 ), RPT_4 (-200, 0, 15 ),
- RPT_4 ( 201, 0, 15 ), RPT_4 (-201, 0, 15 ),
- RPT_4 ( 202, 0, 15 ), RPT_4 (-202, 0, 15 ),
- RPT_4 ( 203, 0, 15 ), RPT_4 (-203, 0, 15 ),
- RPT_4 ( 204, 0, 15 ), RPT_4 (-204, 0, 15 ),
- RPT_4 ( 205, 0, 15 ), RPT_4 (-205, 0, 15 ),
- RPT_4 ( 206, 0, 15 ), RPT_4 (-206, 0, 15 ),
- RPT_4 ( 207, 0, 15 ), RPT_4 (-207, 0, 15 ),
- RPT_4 ( 208, 0, 15 ), RPT_4 (-208, 0, 15 ),
- RPT_4 ( 209, 0, 15 ), RPT_4 (-209, 0, 15 ),
- RPT_4 ( 210, 0, 15 ), RPT_4 (-210, 0, 15 ),
- RPT_4 ( 211, 0, 15 ), RPT_4 (-211, 0, 15 ),
- RPT_4 ( 212, 0, 15 ), RPT_4 (-212, 0, 15 ),
- RPT_4 ( 213, 0, 15 ), RPT_4 (-213, 0, 15 ),
- RPT_4 ( 214, 0, 15 ), RPT_4 (-214, 0, 15 ),
- RPT_4 ( 215, 0, 15 ), RPT_4 (-215, 0, 15 ),
- RPT_4 ( 216, 0, 15 ), RPT_4 (-216, 0, 15 ),
- RPT_4 ( 217, 0, 15 ), RPT_4 (-217, 0, 15 ),
- RPT_4 ( 218, 0, 15 ), RPT_4 (-218, 0, 15 ),
- RPT_4 ( 219, 0, 15 ), RPT_4 (-219, 0, 15 ),
- RPT_4 ( 220, 0, 15 ), RPT_4 (-220, 0, 15 ),
- RPT_4 ( 221, 0, 15 ), RPT_4 (-221, 0, 15 ),
- RPT_4 ( 222, 0, 15 ), RPT_4 (-222, 0, 15 ),
- RPT_4 ( 223, 0, 15 ), RPT_4 (-223, 0, 15 ),
- RPT_4 ( 224, 0, 15 ), RPT_4 (-224, 0, 15 ),
- RPT_4 ( 225, 0, 15 ), RPT_4 (-225, 0, 15 ),
- RPT_4 ( 226, 0, 15 ), RPT_4 (-226, 0, 15 ),
- RPT_4 ( 227, 0, 15 ), RPT_4 (-227, 0, 15 ),
- RPT_4 ( 228, 0, 15 ), RPT_4 (-228, 0, 15 ),
- RPT_4 ( 229, 0, 15 ), RPT_4 (-229, 0, 15 ),
- RPT_4 ( 230, 0, 15 ), RPT_4 (-230, 0, 15 ),
- RPT_4 ( 231, 0, 15 ), RPT_4 (-231, 0, 15 ),
- RPT_4 ( 232, 0, 15 ), RPT_4 (-232, 0, 15 ),
- RPT_4 ( 233, 0, 15 ), RPT_4 (-233, 0, 15 ),
- RPT_4 ( 234, 0, 15 ), RPT_4 (-234, 0, 15 ),
- RPT_4 ( 235, 0, 15 ), RPT_4 (-235, 0, 15 ),
- RPT_4 ( 236, 0, 15 ), RPT_4 (-236, 0, 15 ),
- RPT_4 ( 237, 0, 15 ), RPT_4 (-237, 0, 15 ),
- RPT_4 ( 238, 0, 15 ), RPT_4 (-238, 0, 15 ),
- RPT_4 ( 239, 0, 15 ), RPT_4 (-239, 0, 15 ),
- RPT_4 ( 240, 0, 15 ), RPT_4 (-240, 0, 15 ),
- RPT_4 ( 241, 0, 15 ), RPT_4 (-241, 0, 15 ),
- RPT_4 ( 242, 0, 15 ), RPT_4 (-242, 0, 15 ),
- RPT_4 ( 243, 0, 15 ), RPT_4 (-243, 0, 15 ),
- RPT_4 ( 244, 0, 15 ), RPT_4 (-244, 0, 15 ),
- RPT_4 ( 245, 0, 15 ), RPT_4 (-245, 0, 15 ),
- RPT_4 ( 246, 0, 15 ), RPT_4 (-246, 0, 15 ),
- RPT_4 ( 247, 0, 15 ), RPT_4 (-247, 0, 15 ),
- RPT_4 ( 248, 0, 15 ), RPT_4 (-248, 0, 15 ),
- RPT_4 ( 249, 0, 15 ), RPT_4 (-249, 0, 15 ),
- RPT_4 ( 250, 0, 15 ), RPT_4 (-250, 0, 15 ),
- RPT_4 ( 251, 0, 15 ), RPT_4 (-251, 0, 15 ),
- RPT_4 ( 252, 0, 15 ), RPT_4 (-252, 0, 15 ),
- RPT_4 ( 253, 0, 15 ), RPT_4 (-253, 0, 15 ),
- RPT_4 ( 254, 0, 15 ), RPT_4 (-254, 0, 15 ),
- RPT_4 ( 255, 0, 15 ), RPT_4 (-255, 0, 15 ),
- RPT_32 ( 49, 0, 12 ), RPT_32 ( -49, 0, 12 ),
- RPT_32 ( 50, 0, 12 ), RPT_32 ( -50, 0, 12 ),
- RPT_32 ( 51, 0, 12 ), RPT_32 ( -51, 0, 12 ),
- RPT_32 ( 52, 0, 12 ), RPT_32 ( -52, 0, 12 ),
- RPT_32 ( 53, 0, 12 ), RPT_32 ( -53, 0, 12 ),
- RPT_32 ( 54, 0, 12 ), RPT_32 ( -54, 0, 12 ),
- RPT_32 ( 55, 0, 12 ), RPT_32 ( -55, 0, 12 ),
- RPT_32 ( 56, 0, 12 ), RPT_32 ( -56, 0, 12 ),
- RPT_32 ( 57, 0, 12 ), RPT_32 ( -57, 0, 12 ),
- RPT_32 ( 58, 0, 12 ), RPT_32 ( -58, 0, 12 ),
- RPT_32 ( 59, 0, 12 ), RPT_32 ( -59, 0, 12 ),
- RPT_32 ( 60, 0, 12 ), RPT_32 ( -60, 0, 12 ),
- RPT_32 ( 61, 0, 12 ), RPT_32 ( -61, 0, 12 ),
- RPT_32 ( 62, 0, 12 ), RPT_32 ( -62, 0, 12 ),
- RPT_32 ( 63, 0, 12 ), RPT_32 ( -63, 0, 12 ),
- RPT_32 ( 17, 1, 12 ), RPT_32 ( -17, 1, 12 ),
- RPT_32 ( 18, 1, 12 ), RPT_32 ( -18, 1, 12 ),
- RPT_32 ( 19, 1, 12 ), RPT_32 ( -19, 1, 12 ),
- RPT_32 ( 20, 1, 12 ), RPT_32 ( -20, 1, 12 ),
- RPT_32 ( 21, 1, 12 ), RPT_32 ( -21, 1, 12 ),
- RPT_32 ( 22, 1, 12 ), RPT_32 ( -22, 1, 12 ),
- RPT_32 ( 23, 1, 12 ), RPT_32 ( -23, 1, 12 ),
- RPT_32 ( 24, 1, 12 ), RPT_32 ( -24, 1, 12 ),
- RPT_32 ( 9, 2, 12 ), RPT_32 ( -9, 2, 12 ),
- RPT_32 ( 10, 2, 12 ), RPT_32 ( -10, 2, 12 ),
- RPT_32 ( 11, 2, 12 ), RPT_32 ( -11, 2, 12 ),
- RPT_32 ( 12, 2, 12 ), RPT_32 ( -12, 2, 12 ),
- RPT_32 ( 7, 3, 12 ), RPT_32 ( -7, 3, 12 ),
- RPT_32 ( 8, 3, 12 ), RPT_32 ( -8, 3, 12 ),
- RPT_32 ( 5, 4, 12 ), RPT_32 ( -5, 4, 12 ),
- RPT_32 ( 6, 4, 12 ), RPT_32 ( -6, 4, 12 ),
- RPT_32 ( 3, 5, 12 ), RPT_32 ( -3, 5, 12 ),
- RPT_32 ( 4, 5, 12 ), RPT_32 ( -4, 5, 12 ),
- RPT_32 ( 5, 5, 12 ), RPT_32 ( -5, 5, 12 ),
- RPT_32 ( 6, 5, 12 ), RPT_32 ( -6, 5, 12 ),
- RPT_32 ( 3, 6, 12 ), RPT_32 ( -3, 6, 12 ),
- RPT_32 ( 4, 6, 12 ), RPT_32 ( -4, 6, 12 ),
- RPT_32 ( 2, 7, 12 ), RPT_32 ( -2, 7, 12 ),
- RPT_32 ( 2, 8, 12 ), RPT_32 ( -2, 8, 12 ),
- RPT_32 ( 2, 9, 12 ), RPT_32 ( -2, 9, 12 ),
- RPT_32 ( 2, 10, 12 ), RPT_32 ( -2, 10, 12 ),
- RPT_32 ( 1, 13, 12 ), RPT_32 ( -1, 13, 12 ),
- RPT_32 ( 1, 14, 12 ), RPT_32 ( -1, 14, 12 ),
- { 0, 0, 17 }, { 0, 1, 17 }, { 0, 2, 17 }, { 0, 3, 17 },
- { 0, 4, 17 }, { 0, 5, 17 }, { 0, 6, 17 }, { 0, 7, 17 },
- { 0, 8, 17 }, { 0, 9, 17 }, { 0, 10, 17 }, { 0, 11, 17 },
- { 0, 12, 17 }, { 0, 13, 17 }, { 0, 14, 17 }, { 0, 15, 17 },
- { 0, 16, 17 }, { 0, 17, 17 }, { 0, 18, 17 }, { 0, 19, 17 },
- { 0, 20, 17 }, { 0, 21, 17 }, { 0, 22, 17 }, { 0, 23, 17 },
- { 0, 24, 17 }, { 0, 25, 17 }, { 0, 26, 17 }, { 0, 27, 17 },
- { 0, 28, 17 }, { 0, 29, 17 }, { 0, 30, 17 }, { 0, 31, 17 },
- { 0, 32, 17 }, { 0, 33, 17 }, { 0, 34, 17 }, { 0, 35, 17 },
- { 0, 36, 17 }, { 0, 37, 17 }, { 0, 38, 17 }, { 0, 39, 17 },
- { 0, 40, 17 }, { 0, 41, 17 }, { 0, 42, 17 }, { 0, 43, 17 },
- { 0, 44, 17 }, { 0, 45, 17 }, { 0, 46, 17 }, { 0, 47, 17 },
- { 0, 48, 17 }, { 0, 49, 17 }, { 0, 50, 17 }, { 0, 51, 17 },
- { 0, 52, 17 }, { 0, 53, 17 }, { 0, 54, 17 }, { 0, 55, 17 },
- { 0, 56, 17 }, { 0, 57, 17 }, { 0, 58, 17 }, { 0, 59, 17 },
- { 0, 60, 17 }, { 0, 61, 17 }, { 0, 62, 17 }, { 0, 63, 17 },
- RPT_16 ( 25, 1, 13 ), RPT_16 ( -25, 1, 13 ),
- RPT_16 ( 26, 1, 13 ), RPT_16 ( -26, 1, 13 ),
- RPT_16 ( 27, 1, 13 ), RPT_16 ( -27, 1, 13 ),
- RPT_16 ( 28, 1, 13 ), RPT_16 ( -28, 1, 13 ),
- RPT_16 ( 29, 1, 13 ), RPT_16 ( -29, 1, 13 ),
- RPT_16 ( 30, 1, 13 ), RPT_16 ( -30, 1, 13 ),
- RPT_16 ( 31, 1, 13 ), RPT_16 ( -31, 1, 13 ),
- RPT_16 ( 32, 1, 13 ), RPT_16 ( -32, 1, 13 ),
- RPT_16 ( 13, 2, 13 ), RPT_16 ( -13, 2, 13 ),
- RPT_16 ( 14, 2, 13 ), RPT_16 ( -14, 2, 13 ),
- RPT_16 ( 15, 2, 13 ), RPT_16 ( -15, 2, 13 ),
- RPT_16 ( 16, 2, 13 ), RPT_16 ( -16, 2, 13 ),
- RPT_16 ( 9, 3, 13 ), RPT_16 ( -9, 3, 13 ),
- RPT_16 ( 10, 3, 13 ), RPT_16 ( -10, 3, 13 ),
- RPT_16 ( 11, 3, 13 ), RPT_16 ( -11, 3, 13 ),
- RPT_16 ( 7, 4, 13 ), RPT_16 ( -7, 4, 13 ),
- RPT_16 ( 3, 7, 13 ), RPT_16 ( -3, 7, 13 ),
- RPT_16 ( 4, 7, 13 ), RPT_16 ( -4, 7, 13 ),
- RPT_16 ( 3, 8, 13 ), RPT_16 ( -3, 8, 13 ),
- RPT_16 ( 4, 8, 13 ), RPT_16 ( -4, 8, 13 ),
- RPT_16 ( 3, 9, 13 ), RPT_16 ( -3, 9, 13 ),
- RPT_16 ( 2, 11, 13 ), RPT_16 ( -2, 11, 13 ),
- RPT_16 ( 2, 12, 13 ), RPT_16 ( -2, 12, 13 ),
- RPT_32 ( 0, 14, 12 ),
-};
+// level is in -255..255 range, run 0..64, so it fits into 16 bits.
+#define E(level, run) ((level * 128) | run)
-static const HQXLUT ac16_lut[] = {
- RPT_256 ( 1, 0, 3 ), RPT_256 ( -1, 0, 3 ),
- RPT_128 ( 2, 0, 4 ), RPT_128 ( -2, 0, 4 ),
- RPT_64 ( 3, 0, 5 ), RPT_64 ( -3, 0, 5 ),
- RPT_64 ( 4, 0, 5 ), RPT_64 ( -4, 0, 5 ),
- RPT_64 ( 1, 1, 5 ), RPT_64 ( -1, 1, 5 ),
- RPT_128 ( 0, 64, 4 ), RPT_32 ( 5, 0, 6 ),
- RPT_32 ( -5, 0, 6 ), RPT_32 ( 6, 0, 6 ),
- RPT_32 ( -6, 0, 6 ), RPT_32 ( 2, 1, 6 ),
- RPT_32 ( -2, 1, 6 ), RPT_32 ( 1, 2, 6 ),
- RPT_32 ( -1, 2, 6 ), RPT_16 ( 7, 0, 7 ),
- RPT_16 ( -7, 0, 7 ), RPT_16 ( 8, 0, 7 ),
- RPT_16 ( -8, 0, 7 ), RPT_16 ( 9, 0, 7 ),
- RPT_16 ( -9, 0, 7 ), RPT_16 ( 3, 1, 7 ),
- RPT_16 ( -3, 1, 7 ), RPT_16 ( 1, 3, 7 ),
- RPT_16 ( -1, 3, 7 ), RPT_16 ( 1, 4, 7 ),
- RPT_16 ( -1, 4, 7 ), RPT_8 ( 10, 0, 8 ),
- RPT_8 ( -10, 0, 8 ), RPT_8 ( 11, 0, 8 ),
- RPT_8 ( -11, 0, 8 ), RPT_8 ( 12, 0, 8 ),
- RPT_8 ( -12, 0, 8 ), RPT_8 ( 4, 1, 8 ),
- RPT_8 ( -4, 1, 8 ), RPT_8 ( 2, 2, 8 ),
- RPT_8 ( -2, 2, 8 ), RPT_8 ( 1, 5, 8 ),
- RPT_8 ( -1, 5, 8 ), RPT_8 ( 1, 6, 8 ),
- RPT_8 ( -1, 6, 8 ), RPT_4 ( 13, 0, 9 ),
- RPT_4 ( -13, 0, 9 ), RPT_4 ( 14, 0, 9 ),
- RPT_4 ( -14, 0, 9 ), RPT_4 ( 15, 0, 9 ),
- RPT_4 ( -15, 0, 9 ), RPT_4 ( 16, 0, 9 ),
- RPT_4 ( -16, 0, 9 ), RPT_4 ( 17, 0, 9 ),
- RPT_4 ( -17, 0, 9 ), RPT_4 ( 5, 1, 9 ),
- RPT_4 ( -5, 1, 9 ), RPT_4 ( 2, 3, 9 ),
- RPT_4 ( -2, 3, 9 ), RPT_4 ( 1, 7, 9 ),
- RPT_4 ( -1, 7, 9 ), RPT_4 ( 1, 8, 9 ),
- RPT_4 ( -1, 8, 9 ), RPT_4 ( 1, 9, 9 ),
- RPT_4 ( -1, 9, 9 ), RPT_4 ( 1, 10, 9 ),
- RPT_4 ( -1, 10, 9 ), RPT_4 ( 0, 0, 9 ),
- RPT_2 ( 18, 0, 10 ), RPT_2 ( -18, 0, 10 ),
- RPT_2 ( 19, 0, 10 ), RPT_2 ( -19, 0, 10 ),
- RPT_2 ( 20, 0, 10 ), RPT_2 ( -20, 0, 10 ),
- RPT_2 ( 21, 0, 10 ), RPT_2 ( -21, 0, 10 ),
- RPT_2 ( 22, 0, 10 ), RPT_2 ( -22, 0, 10 ),
- RPT_2 ( 6, 1, 10 ), RPT_2 ( -6, 1, 10 ),
- RPT_2 ( 7, 1, 10 ), RPT_2 ( -7, 1, 10 ),
- RPT_2 ( 3, 2, 10 ), RPT_2 ( -3, 2, 10 ),
- RPT_2 ( 2, 4, 10 ), RPT_2 ( -2, 4, 10 ),
- RPT_2 ( 2, 5, 10 ), RPT_2 ( -2, 5, 10 ),
- RPT_2 ( 1, 11, 10 ), RPT_2 ( -1, 11, 10 ),
- RPT_2 ( 1, 12, 10 ), RPT_2 ( -1, 12, 10 ),
- RPT_2 ( 1, 13, 10 ), RPT_2 ( -1, 13, 10 ),
- { 2048, 0, -1 }, { 2112, 0, -1 }, { 2176, 0, -1 }, { 2240, 0, -1 },
- { 2304, 0, -1 }, { 2368, 0, -1 }, { 2432, 0, -1 }, { 2496, 0, -1 },
- { 23, 0, 11 }, { -23, 0, 11 }, { 24, 0, 11 }, { -24, 0, 11 },
- { 25, 0, 11 }, { -25, 0, 11 }, { 26, 0, 11 }, { -26, 0, 11 },
- { 27, 0, 11 }, { -27, 0, 11 }, { 28, 0, 11 }, { -28, 0, 11 },
- { 8, 1, 11 }, { -8, 1, 11 }, { 9, 1, 11 }, { -9, 1, 11 },
- { 4, 2, 11 }, { -4, 2, 11 }, { 3, 3, 11 }, { -3, 3, 11 },
- { 3, 4, 11 }, { -3, 4, 11 }, { 2, 6, 11 }, { -2, 6, 11 },
- { 2, 7, 11 }, { -2, 7, 11 }, { 2560, 0, -1 }, { 2624, 0, -1 },
- { 2688, 0, -1 }, { 2752, 0, -1 }, { 2816, 0, -1 }, { 2880, 0, -1 },
- { 2944, 0, -1 }, { 0, 1, 11 }, { 3008, 0, -1 }, { 3072, 0, -1 },
- { 3136, 0, -1 }, { 0, 2, 11 }, { 3200, 0, -1 }, { 0, 3, 11 },
- { 3264, 0, -1 }, { 3328, 0, -1 }, { 3392, 0, -1 }, { 3456, 0, -1 },
- { 3520, 0, -1 }, { 3584, 0, -1 }, { 3648, 0, -1 }, { 3712, 0, -1 },
- { 3776, 0, -1 }, { 3840, 0, -1 }, { 3904, 0, -1 }, { 3968, 0, -1 },
- { 4032, 0, -1 }, { 4096, 0, -1 }, { 4160, 0, -1 }, { 4224, 0, -1 },
- RPT_4 ( 0, 0, 15 ), RPT_4 ( 0, 1, 15 ),
- RPT_4 ( 0, 2, 15 ), RPT_4 ( 0, 3, 15 ),
- RPT_4 ( 0, 4, 15 ), RPT_4 ( 0, 5, 15 ),
- RPT_4 ( 0, 6, 15 ), RPT_4 ( 0, 7, 15 ),
- RPT_4 ( 0, 8, 15 ), RPT_4 ( 0, 9, 15 ),
- RPT_4 ( 0, 10, 15 ), RPT_4 ( 0, 11, 15 ),
- RPT_4 ( 0, 12, 15 ), RPT_4 ( 0, 13, 15 ),
- RPT_4 ( 0, 14, 15 ), RPT_4 ( 0, 15, 15 ),
- RPT_4 ( 0, 16, 15 ), RPT_4 ( 0, 17, 15 ),
- RPT_4 ( 0, 18, 15 ), RPT_4 ( 0, 19, 15 ),
- RPT_4 ( 0, 20, 15 ), RPT_4 ( 0, 21, 15 ),
- RPT_4 ( 0, 22, 15 ), RPT_4 ( 0, 23, 15 ),
- RPT_4 ( 0, 24, 15 ), RPT_4 ( 0, 25, 15 ),
- RPT_4 ( 0, 26, 15 ), RPT_4 ( 0, 27, 15 ),
- RPT_4 ( 0, 28, 15 ), RPT_4 ( 0, 29, 15 ),
- RPT_4 ( 0, 30, 15 ), RPT_4 ( 0, 31, 15 ),
- RPT_4 ( 0, 32, 15 ), RPT_4 ( 0, 33, 15 ),
- RPT_4 ( 0, 34, 15 ), RPT_4 ( 0, 35, 15 ),
- RPT_4 ( 0, 36, 15 ), RPT_4 ( 0, 37, 15 ),
- RPT_4 ( 0, 38, 15 ), RPT_4 ( 0, 39, 15 ),
- RPT_4 ( 0, 40, 15 ), RPT_4 ( 0, 41, 15 ),
- RPT_4 ( 0, 42, 15 ), RPT_4 ( 0, 43, 15 ),
- RPT_4 ( 0, 44, 15 ), RPT_4 ( 0, 45, 15 ),
- RPT_4 ( 0, 46, 15 ), RPT_4 ( 0, 47, 15 ),
- RPT_4 ( 0, 48, 15 ), RPT_4 ( 0, 49, 15 ),
- RPT_4 ( 0, 50, 15 ), RPT_4 ( 0, 51, 15 ),
- RPT_4 ( 0, 52, 15 ), RPT_4 ( 0, 53, 15 ),
- RPT_4 ( 0, 54, 15 ), RPT_4 ( 0, 55, 15 ),
- RPT_4 ( 0, 56, 15 ), RPT_4 ( 0, 57, 15 ),
- RPT_4 ( 0, 58, 15 ), RPT_4 ( 0, 59, 15 ),
- RPT_4 ( 0, 60, 15 ), RPT_4 ( 0, 61, 15 ),
- RPT_4 ( 0, 62, 15 ), RPT_4 ( 0, 63, 15 ),
- RPT_2 ( 0, 0, 16 ), { 1, 0, 17 }, { -1, 0, 17 },
- { 2, 0, 17 }, { -2, 0, 17 }, { 3, 0, 17 }, { -3, 0, 17 },
- { 4, 0, 17 }, { -4, 0, 17 }, { 5, 0, 17 }, { -5, 0, 17 },
- { 6, 0, 17 }, { -6, 0, 17 }, { 7, 0, 17 }, { -7, 0, 17 },
- { 8, 0, 17 }, { -8, 0, 17 }, { 9, 0, 17 }, { -9, 0, 17 },
- { 10, 0, 17 }, { -10, 0, 17 }, { 11, 0, 17 }, { -11, 0, 17 },
- { 12, 0, 17 }, { -12, 0, 17 }, { 13, 0, 17 }, { -13, 0, 17 },
- { 14, 0, 17 }, { -14, 0, 17 }, { 15, 0, 17 }, { -15, 0, 17 },
- { 16, 0, 17 }, { -16, 0, 17 }, { 17, 0, 17 }, { -17, 0, 17 },
- { 18, 0, 17 }, { -18, 0, 17 }, { 19, 0, 17 }, { -19, 0, 17 },
- { 20, 0, 17 }, { -20, 0, 17 }, { 21, 0, 17 }, { -21, 0, 17 },
- { 22, 0, 17 }, { -22, 0, 17 }, { 23, 0, 17 }, { -23, 0, 17 },
- { 24, 0, 17 }, { -24, 0, 17 }, { 25, 0, 17 }, { -25, 0, 17 },
- { 26, 0, 17 }, { -26, 0, 17 }, { 27, 0, 17 }, { -27, 0, 17 },
- { 28, 0, 17 }, { -28, 0, 17 }, { 29, 0, 17 }, { -29, 0, 17 },
- { 30, 0, 17 }, { -30, 0, 17 }, { 31, 0, 17 }, { -31, 0, 17 },
- { 32, 0, 17 }, { -32, 0, 17 }, { 33, 0, 17 }, { -33, 0, 17 },
- { 34, 0, 17 }, { -34, 0, 17 }, { 35, 0, 17 }, { -35, 0, 17 },
- { 36, 0, 17 }, { -36, 0, 17 }, { 37, 0, 17 }, { -37, 0, 17 },
- { 38, 0, 17 }, { -38, 0, 17 }, { 39, 0, 17 }, { -39, 0, 17 },
- { 40, 0, 17 }, { -40, 0, 17 }, { 41, 0, 17 }, { -41, 0, 17 },
- { 42, 0, 17 }, { -42, 0, 17 }, { 43, 0, 17 }, { -43, 0, 17 },
- { 44, 0, 17 }, { -44, 0, 17 }, { 45, 0, 17 }, { -45, 0, 17 },
- { 46, 0, 17 }, { -46, 0, 17 }, { 47, 0, 17 }, { -47, 0, 17 },
- { 48, 0, 17 }, { -48, 0, 17 }, { 49, 0, 17 }, { -49, 0, 17 },
- { 50, 0, 17 }, { -50, 0, 17 }, { 51, 0, 17 }, { -51, 0, 17 },
- { 52, 0, 17 }, { -52, 0, 17 }, { 53, 0, 17 }, { -53, 0, 17 },
- { 54, 0, 17 }, { -54, 0, 17 }, { 55, 0, 17 }, { -55, 0, 17 },
- { 56, 0, 17 }, { -56, 0, 17 }, { 57, 0, 17 }, { -57, 0, 17 },
- { 58, 0, 17 }, { -58, 0, 17 }, { 59, 0, 17 }, { -59, 0, 17 },
- { 60, 0, 17 }, { -60, 0, 17 }, { 61, 0, 17 }, { -61, 0, 17 },
- { 62, 0, 17 }, { -62, 0, 17 }, { 63, 0, 17 }, { -63, 0, 17 },
- { 64, 0, 17 }, { -64, 0, 17 }, { 65, 0, 17 }, { -65, 0, 17 },
- { 66, 0, 17 }, { -66, 0, 17 }, { 67, 0, 17 }, { -67, 0, 17 },
- { 68, 0, 17 }, { -68, 0, 17 }, { 69, 0, 17 }, { -69, 0, 17 },
- { 70, 0, 17 }, { -70, 0, 17 }, { 71, 0, 17 }, { -71, 0, 17 },
- { 72, 0, 17 }, { -72, 0, 17 }, { 73, 0, 17 }, { -73, 0, 17 },
- { 74, 0, 17 }, { -74, 0, 17 }, { 75, 0, 17 }, { -75, 0, 17 },
- { 76, 0, 17 }, { -76, 0, 17 }, { 77, 0, 17 }, { -77, 0, 17 },
- { 78, 0, 17 }, { -78, 0, 17 }, { 79, 0, 17 }, { -79, 0, 17 },
- { 80, 0, 17 }, { -80, 0, 17 }, { 81, 0, 17 }, { -81, 0, 17 },
- { 82, 0, 17 }, { -82, 0, 17 }, { 83, 0, 17 }, { -83, 0, 17 },
- { 84, 0, 17 }, { -84, 0, 17 }, { 85, 0, 17 }, { -85, 0, 17 },
- { 86, 0, 17 }, { -86, 0, 17 }, { 87, 0, 17 }, { -87, 0, 17 },
- { 88, 0, 17 }, { -88, 0, 17 }, { 89, 0, 17 }, { -89, 0, 17 },
- { 90, 0, 17 }, { -90, 0, 17 }, { 91, 0, 17 }, { -91, 0, 17 },
- { 92, 0, 17 }, { -92, 0, 17 }, { 93, 0, 17 }, { -93, 0, 17 },
- { 94, 0, 17 }, { -94, 0, 17 }, { 95, 0, 17 }, { -95, 0, 17 },
- { 96, 0, 17 }, { -96, 0, 17 }, { 97, 0, 17 }, { -97, 0, 17 },
- { 98, 0, 17 }, { -98, 0, 17 }, { 99, 0, 17 }, { -99, 0, 17 },
- { 100, 0, 17 }, { -100, 0, 17 }, { 101, 0, 17 }, { -101, 0, 17 },
- { 102, 0, 17 }, { -102, 0, 17 }, { 103, 0, 17 }, { -103, 0, 17 },
- { 104, 0, 17 }, { -104, 0, 17 }, { 105, 0, 17 }, { -105, 0, 17 },
- { 106, 0, 17 }, { -106, 0, 17 }, { 107, 0, 17 }, { -107, 0, 17 },
- { 108, 0, 17 }, { -108, 0, 17 }, { 109, 0, 17 }, { -109, 0, 17 },
- { 110, 0, 17 }, { -110, 0, 17 }, { 111, 0, 17 }, { -111, 0, 17 },
- { 112, 0, 17 }, { -112, 0, 17 }, { 113, 0, 17 }, { -113, 0, 17 },
- { 114, 0, 17 }, { -114, 0, 17 }, { 115, 0, 17 }, { -115, 0, 17 },
- { 116, 0, 17 }, { -116, 0, 17 }, { 117, 0, 17 }, { -117, 0, 17 },
- { 118, 0, 17 }, { -118, 0, 17 }, { 119, 0, 17 }, { -119, 0, 17 },
- { 120, 0, 17 }, { -120, 0, 17 }, { 121, 0, 17 }, { -121, 0, 17 },
- { 122, 0, 17 }, { -122, 0, 17 }, { 123, 0, 17 }, { -123, 0, 17 },
- { 124, 0, 17 }, { -124, 0, 17 }, { 125, 0, 17 }, { -125, 0, 17 },
- { 126, 0, 17 }, { -126, 0, 17 }, { 127, 0, 17 }, { -127, 0, 17 },
- RPT_32 ( 29, 0, 12 ), RPT_32 ( -29, 0, 12 ),
- RPT_32 ( 30, 0, 12 ), RPT_32 ( -30, 0, 12 ),
- RPT_32 ( 31, 0, 12 ), RPT_32 ( -31, 0, 12 ),
- RPT_32 ( 32, 0, 12 ), RPT_32 ( -32, 0, 12 ),
- RPT_32 ( 33, 0, 12 ), RPT_32 ( -33, 0, 12 ),
- RPT_32 ( 34, 0, 12 ), RPT_32 ( -34, 0, 12 ),
- RPT_32 ( 35, 0, 12 ), RPT_32 ( -35, 0, 12 ),
- RPT_32 ( 10, 1, 12 ), RPT_32 ( -10, 1, 12 ),
- RPT_32 ( 11, 1, 12 ), RPT_32 ( -11, 1, 12 ),
- RPT_32 ( 12, 1, 12 ), RPT_32 ( -12, 1, 12 ),
- RPT_32 ( 5, 2, 12 ), RPT_32 ( -5, 2, 12 ),
- RPT_32 ( 4, 3, 12 ), RPT_32 ( -4, 3, 12 ),
- RPT_32 ( 3, 5, 12 ), RPT_32 ( -3, 5, 12 ),
- RPT_32 ( 2, 8, 12 ), RPT_32 ( -2, 8, 12 ),
- RPT_32 ( 2, 9, 12 ), RPT_32 ( -2, 9, 12 ),
- RPT_32 ( 1, 14, 12 ), RPT_32 ( -1, 14, 12 ),
- RPT_32 ( 1, 15, 12 ), RPT_32 ( -1, 15, 12 ),
- RPT_16 ( 36, 0, 13 ), RPT_16 ( -36, 0, 13 ),
- RPT_16 ( 37, 0, 13 ), RPT_16 ( -37, 0, 13 ),
- RPT_16 ( 38, 0, 13 ), RPT_16 ( -38, 0, 13 ),
- RPT_16 ( 39, 0, 13 ), RPT_16 ( -39, 0, 13 ),
- RPT_16 ( 40, 0, 13 ), RPT_16 ( -40, 0, 13 ),
- RPT_16 ( 13, 1, 13 ), RPT_16 ( -13, 1, 13 ),
- RPT_16 ( 14, 1, 13 ), RPT_16 ( -14, 1, 13 ),
- RPT_16 ( 15, 1, 13 ), RPT_16 ( -15, 1, 13 ),
- RPT_16 ( 6, 2, 13 ), RPT_16 ( -6, 2, 13 ),
- RPT_16 ( 7, 2, 13 ), RPT_16 ( -7, 2, 13 ),
- RPT_16 ( 5, 3, 13 ), RPT_16 ( -5, 3, 13 ),
- RPT_32 ( 0, 4, 12 ), RPT_16 ( 4, 4, 13 ),
- RPT_16 ( -4, 4, 13 ), RPT_32 ( 0, 5, 12 ),
- RPT_32 ( 0, 6, 12 ), RPT_16 ( 3, 6, 13 ),
- RPT_16 ( -3, 6, 13 ), RPT_32 ( 0, 7, 12 ),
- RPT_16 ( 3, 7, 13 ), RPT_16 ( -3, 7, 13 ),
- RPT_16 ( 2, 10, 13 ), RPT_16 ( -2, 10, 13 ),
- RPT_16 ( 1, 16, 13 ), RPT_16 ( -1, 16, 13 ),
+static const int16_t hqx_ac_run_level[] = {
+ // AC table Q0 - 815 elements
+ E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0),
+ E( -3, 0), E( 4, 0), E( -4, 0), E( 1, 1), E( -1, 1),
+ E( 5, 0), E( -5, 0), E( 6, 0), E( -6, 0), E( 7, 0),
+ E( -7, 0), E( 8, 0), E( -8, 0), E( 0, 0), E( 1, 0),
+ E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0), E( -3, 0),
+ E( 4, 0), E( -4, 0), E( 5, 0), E( -5, 0), E( 6, 0),
+ E( -6, 0), E( 7, 0), E( -7, 0), E( 8, 0), E( -8, 0),
+ E( 9, 0), E( -9, 0), E( 10, 0), E( -10, 0), E( 11, 0),
+ E( -11, 0), E( 12, 0), E( -12, 0), E( 13, 0), E( -13, 0),
+ E( 14, 0), E( -14, 0), E( 15, 0), E( -15, 0), E( 16, 0),
+ E( -16, 0), E( 17, 0), E( -17, 0), E( 18, 0), E( -18, 0),
+ E( 19, 0), E( -19, 0), E( 20, 0), E( -20, 0), E( 21, 0),
+ E( -21, 0), E( 22, 0), E( -22, 0), E( 23, 0), E( -23, 0),
+ E( 24, 0), E( -24, 0), E( 25, 0), E( -25, 0), E( 26, 0),
+ E( -26, 0), E( 27, 0), E( -27, 0), E( 28, 0), E( -28, 0),
+ E( 29, 0), E( -29, 0), E( 30, 0), E( -30, 0), E( 31, 0),
+ E( -31, 0), E( 32, 0), E( -32, 0), E( 33, 0), E( -33, 0),
+ E( 34, 0), E( -34, 0), E( 35, 0), E( -35, 0), E( 36, 0),
+ E( -36, 0), E( 37, 0), E( -37, 0), E( 38, 0), E( -38, 0),
+ E( 39, 0), E( -39, 0), E( 40, 0), E( -40, 0), E( 41, 0),
+ E( -41, 0), E( 42, 0), E( -42, 0), E( 43, 0), E( -43, 0),
+ E( 44, 0), E( -44, 0), E( 45, 0), E( -45, 0), E( 46, 0),
+ E( -46, 0), E( 47, 0), E( -47, 0), E( 48, 0), E( -48, 0),
+ E( 49, 0), E( -49, 0), E( 50, 0), E( -50, 0), E( 51, 0),
+ E( -51, 0), E( 52, 0), E( -52, 0), E( 53, 0), E( -53, 0),
+ E( 54, 0), E( -54, 0), E( 55, 0), E( -55, 0), E( 56, 0),
+ E( -56, 0), E( 57, 0), E( -57, 0), E( 58, 0), E( -58, 0),
+ E( 59, 0), E( -59, 0), E( 60, 0), E( -60, 0), E( 61, 0),
+ E( -61, 0), E( 62, 0), E( -62, 0), E( 63, 0), E( -63, 0),
+ E( 64, 0), E( -64, 0), E( 65, 0), E( -65, 0), E( 66, 0),
+ E( -66, 0), E( 67, 0), E( -67, 0), E( 68, 0), E( -68, 0),
+ E( 69, 0), E( -69, 0), E( 70, 0), E( -70, 0), E( 71, 0),
+ E( -71, 0), E( 72, 0), E( -72, 0), E( 73, 0), E( -73, 0),
+ E( 74, 0), E( -74, 0), E( 75, 0), E( -75, 0), E( 76, 0),
+ E( -76, 0), E( 77, 0), E( -77, 0), E( 78, 0), E( -78, 0),
+ E( 79, 0), E( -79, 0), E( 80, 0), E( -80, 0), E( 81, 0),
+ E( -81, 0), E( 82, 0), E( -82, 0), E( 83, 0), E( -83, 0),
+ E( 84, 0), E( -84, 0), E( 85, 0), E( -85, 0), E( 86, 0),
+ E( -86, 0), E( 87, 0), E( -87, 0), E( 88, 0), E( -88, 0),
+ E( 89, 0), E( -89, 0), E( 90, 0), E( -90, 0), E( 91, 0),
+ E( -91, 0), E( 92, 0), E( -92, 0), E( 93, 0), E( -93, 0),
+ E( 94, 0), E( -94, 0), E( 95, 0), E( -95, 0), E( 96, 0),
+ E( -96, 0), E( 97, 0), E( -97, 0), E( 98, 0), E( -98, 0),
+ E( 99, 0), E( -99, 0), E( 100, 0), E(-100, 0), E( 101, 0),
+ E(-101, 0), E( 102, 0), E(-102, 0), E( 103, 0), E(-103, 0),
+ E( 104, 0), E(-104, 0), E( 105, 0), E(-105, 0), E( 106, 0),
+ E(-106, 0), E( 107, 0), E(-107, 0), E( 108, 0), E(-108, 0),
+ E( 109, 0), E(-109, 0), E( 110, 0), E(-110, 0), E( 111, 0),
+ E(-111, 0), E( 112, 0), E(-112, 0), E( 113, 0), E(-113, 0),
+ E( 114, 0), E(-114, 0), E( 115, 0), E(-115, 0), E( 116, 0),
+ E(-116, 0), E( 117, 0), E(-117, 0), E( 118, 0), E(-118, 0),
+ E( 119, 0), E(-119, 0), E( 120, 0), E(-120, 0), E( 121, 0),
+ E(-121, 0), E( 122, 0), E(-122, 0), E( 123, 0), E(-123, 0),
+ E( 124, 0), E(-124, 0), E( 125, 0), E(-125, 0), E( 126, 0),
+ E(-126, 0), E( 127, 0), E(-127, 0), E( 128, 0), E(-128, 0),
+ E( 129, 0), E(-129, 0), E( 130, 0), E(-130, 0), E( 131, 0),
+ E(-131, 0), E( 132, 0), E(-132, 0), E( 133, 0), E(-133, 0),
+ E( 134, 0), E(-134, 0), E( 135, 0), E(-135, 0), E( 136, 0),
+ E(-136, 0), E( 137, 0), E(-137, 0), E( 138, 0), E(-138, 0),
+ E( 139, 0), E(-139, 0), E( 140, 0), E(-140, 0), E( 141, 0),
+ E(-141, 0), E( 142, 0), E(-142, 0), E( 143, 0), E(-143, 0),
+ E( 144, 0), E(-144, 0), E( 145, 0), E(-145, 0), E( 146, 0),
+ E(-146, 0), E( 147, 0), E(-147, 0), E( 148, 0), E(-148, 0),
+ E( 149, 0), E(-149, 0), E( 150, 0), E(-150, 0), E( 151, 0),
+ E(-151, 0), E( 152, 0), E(-152, 0), E( 153, 0), E(-153, 0),
+ E( 154, 0), E(-154, 0), E( 155, 0), E(-155, 0), E( 156, 0),
+ E(-156, 0), E( 157, 0), E(-157, 0), E( 158, 0), E(-158, 0),
+ E( 159, 0), E(-159, 0), E( 160, 0), E(-160, 0), E( 161, 0),
+ E(-161, 0), E( 162, 0), E(-162, 0), E( 163, 0), E(-163, 0),
+ E( 164, 0), E(-164, 0), E( 165, 0), E(-165, 0), E( 166, 0),
+ E(-166, 0), E( 167, 0), E(-167, 0), E( 168, 0), E(-168, 0),
+ E( 169, 0), E(-169, 0), E( 170, 0), E(-170, 0), E( 171, 0),
+ E(-171, 0), E( 172, 0), E(-172, 0), E( 173, 0), E(-173, 0),
+ E( 174, 0), E(-174, 0), E( 175, 0), E(-175, 0), E( 176, 0),
+ E(-176, 0), E( 177, 0), E(-177, 0), E( 178, 0), E(-178, 0),
+ E( 179, 0), E(-179, 0), E( 180, 0), E(-180, 0), E( 181, 0),
+ E(-181, 0), E( 182, 0), E(-182, 0), E( 183, 0), E(-183, 0),
+ E( 184, 0), E(-184, 0), E( 185, 0), E(-185, 0), E( 186, 0),
+ E(-186, 0), E( 187, 0), E(-187, 0), E( 188, 0), E(-188, 0),
+ E( 189, 0), E(-189, 0), E( 190, 0), E(-190, 0), E( 191, 0),
+ E(-191, 0), E( 192, 0), E(-192, 0), E( 193, 0), E(-193, 0),
+ E( 194, 0), E(-194, 0), E( 195, 0), E(-195, 0), E( 196, 0),
+ E(-196, 0), E( 197, 0), E(-197, 0), E( 198, 0), E(-198, 0),
+ E( 199, 0), E(-199, 0), E( 200, 0), E(-200, 0), E( 201, 0),
+ E(-201, 0), E( 202, 0), E(-202, 0), E( 203, 0), E(-203, 0),
+ E( 204, 0), E(-204, 0), E( 205, 0), E(-205, 0), E( 206, 0),
+ E(-206, 0), E( 207, 0), E(-207, 0), E( 208, 0), E(-208, 0),
+ E( 209, 0), E(-209, 0), E( 210, 0), E(-210, 0), E( 211, 0),
+ E(-211, 0), E( 212, 0), E(-212, 0), E( 213, 0), E(-213, 0),
+ E( 214, 0), E(-214, 0), E( 215, 0), E(-215, 0), E( 216, 0),
+ E(-216, 0), E( 217, 0), E(-217, 0), E( 218, 0), E(-218, 0),
+ E( 219, 0), E(-219, 0), E( 220, 0), E(-220, 0), E( 221, 0),
+ E(-221, 0), E( 222, 0), E(-222, 0), E( 223, 0), E(-223, 0),
+ E( 224, 0), E(-224, 0), E( 225, 0), E(-225, 0), E( 226, 0),
+ E(-226, 0), E( 227, 0), E(-227, 0), E( 228, 0), E(-228, 0),
+ E( 229, 0), E(-229, 0), E( 230, 0), E(-230, 0), E( 231, 0),
+ E(-231, 0), E( 232, 0), E(-232, 0), E( 233, 0), E(-233, 0),
+ E( 234, 0), E(-234, 0), E( 235, 0), E(-235, 0), E( 236, 0),
+ E(-236, 0), E( 237, 0), E(-237, 0), E( 238, 0), E(-238, 0),
+ E( 239, 0), E(-239, 0), E( 240, 0), E(-240, 0), E( 241, 0),
+ E(-241, 0), E( 242, 0), E(-242, 0), E( 243, 0), E(-243, 0),
+ E( 244, 0), E(-244, 0), E( 245, 0), E(-245, 0), E( 246, 0),
+ E(-246, 0), E( 247, 0), E(-247, 0), E( 248, 0), E(-248, 0),
+ E( 249, 0), E(-249, 0), E( 250, 0), E(-250, 0), E( 251, 0),
+ E(-251, 0), E( 252, 0), E(-252, 0), E( 253, 0), E(-253, 0),
+ E( 254, 0), E(-254, 0), E( 255, 0), E(-255, 0), E( 0, 64),
+ E( 9, 0), E( -9, 0), E( 10, 0), E( -10, 0), E( 11, 0),
+ E( -11, 0), E( 12, 0), E( -12, 0), E( 13, 0), E( -13, 0),
+ E( 14, 0), E( -14, 0), E( 2, 1), E( -2, 1), E( 1, 2),
+ E( -1, 2), E( 15, 0), E( -15, 0), E( 16, 0), E( -16, 0),
+ E( 17, 0), E( -17, 0), E( 18, 0), E( -18, 0), E( 19, 0),
+ E( -19, 0), E( 20, 0), E( -20, 0), E( 21, 0), E( -21, 0),
+ E( 3, 1), E( -3, 1), E( 4, 1), E( -4, 1), E( 1, 3),
+ E( -1, 3), E( 1, 4), E( -1, 4), E( 0, 0), E( 22, 0),
+ E( -22, 0), E( 23, 0), E( -23, 0), E( 24, 0), E( -24, 0),
+ E( 25, 0), E( -25, 0), E( 26, 0), E( -26, 0), E( 27, 0),
+ E( -27, 0), E( 28, 0), E( -28, 0), E( 29, 0), E( -29, 0),
+ E( 30, 0), E( -30, 0), E( 31, 0), E( -31, 0), E( 32, 0),
+ E( -32, 0), E( 33, 0), E( -33, 0), E( 5, 1), E( -5, 1),
+ E( 6, 1), E( -6, 1), E( 2, 2), E( -2, 2), E( 1, 5),
+ E( -1, 5), E( 1, 6), E( -1, 6), E( 34, 0), E( -34, 0),
+ E( 35, 0), E( -35, 0), E( 36, 0), E( -36, 0), E( 37, 0),
+ E( -37, 0), E( 38, 0), E( -38, 0), E( 39, 0), E( -39, 0),
+ E( 40, 0), E( -40, 0), E( 41, 0), E( -41, 0), E( 42, 0),
+ E( -42, 0), E( 43, 0), E( -43, 0), E( 44, 0), E( -44, 0),
+ E( 45, 0), E( -45, 0), E( 46, 0), E( -46, 0), E( 47, 0),
+ E( -47, 0), E( 48, 0), E( -48, 0), E( 49, 0), E( -49, 0),
+ E( 50, 0), E( -50, 0), E( 0, 1), E( 7, 1), E( -7, 1),
+ E( 8, 1), E( -8, 1), E( 9, 1), E( -9, 1), E( 10, 1),
+ E( -10, 1), E( 0, 2), E( 3, 2), E( -3, 2), E( 0, 3),
+ E( 2, 3), E( -2, 3), E( 1, 7), E( -1, 7), E( 1, 8),
+ E( -1, 8), E( 0, 0), E( 0, 1), E( 0, 2), E( 0, 3),
+ E( 0, 4), E( 0, 5), E( 0, 6), E( 0, 7), E( 0, 8),
+ E( 0, 9), E( 0, 10), E( 0, 11), E( 0, 12), E( 0, 13),
+ E( 0, 14), E( 0, 15), E( 0, 16), E( 0, 17), E( 0, 18),
+ E( 0, 19), E( 0, 20), E( 0, 21), E( 0, 22), E( 0, 23),
+ E( 0, 24), E( 0, 25), E( 0, 26), E( 0, 27), E( 0, 28),
+ E( 0, 29), E( 0, 30), E( 0, 31), E( 0, 32), E( 0, 33),
+ E( 0, 34), E( 0, 35), E( 0, 36), E( 0, 37), E( 0, 38),
+ E( 0, 39), E( 0, 40), E( 0, 41), E( 0, 42), E( 0, 43),
+ E( 0, 44), E( 0, 45), E( 0, 46), E( 0, 47), E( 0, 48),
+ E( 0, 49), E( 0, 50), E( 0, 51), E( 0, 52), E( 0, 53),
+ E( 0, 54), E( 0, 55), E( 0, 56), E( 0, 57), E( 0, 58),
+ E( 0, 59), E( 0, 60), E( 0, 61), E( 0, 62), E( 0, 63),
+ E( 51, 0), E( -51, 0), E( 52, 0), E( -52, 0), E( 53, 0),
+ E( -53, 0), E( 54, 0), E( -54, 0), E( 55, 0), E( -55, 0),
+ E( 56, 0), E( -56, 0), E( 57, 0), E( -57, 0), E( 58, 0),
+ E( -58, 0), E( 59, 0), E( -59, 0), E( 60, 0), E( -60, 0),
+ E( 61, 0), E( -61, 0), E( 62, 0), E( -62, 0), E( 63, 0),
+ E( -63, 0), E( 11, 1), E( -11, 1), E( 12, 1), E( -12, 1),
+ E( 13, 1), E( -13, 1), E( 14, 1), E( -14, 1), E( 4, 2),
+ E( -4, 2), E( 5, 2), E( -5, 2), E( 6, 2), E( -6, 2),
+ E( 3, 3), E( -3, 3), E( 0, 4), E( 2, 4), E( -2, 4),
+ E( 0, 5), E( 0, 6), E( 1, 9), E( -1, 9), E( 1, 10),
+ E( -1, 10), E( 15, 1), E( -15, 1), E( 16, 1), E( -16, 1),
+ E( 17, 1), E( -17, 1), E( 18, 1), E( -18, 1), E( 7, 2),
+ E( -7, 2), E( 8, 2), E( -8, 2), E( 9, 2), E( -9, 2),
+ E( 10, 2), E( -10, 2), E( 4, 3), E( -4, 3), E( 5, 3),
+ E( -5, 3), E( 6, 3), E( -6, 3), E( 2, 5), E( -2, 5),
+ E( 0, 7), E( 0, 8), E( 0, 9), E( 0, 10), E( 1, 11),
+ E( -1, 11), E( 1, 12), E( -1, 12), E( 1, 13), E( -1, 13),
+ E( 1, 14), E( -1, 14), E( 19, 1), E( -19, 1), E( 20, 1),
+ E( -20, 1), E( 3, 4), E( -3, 4), E( 2, 6), E( -2, 6),
+ // AC table Q8 - 907 elements
+ E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0),
+ E( -3, 0), E( 4, 0), E( -4, 0), E( 0, 64), E( 5, 0),
+ E( -5, 0), E( 6, 0), E( -6, 0), E( 7, 0), E( -7, 0),
+ E( 8, 0), E( -8, 0), E( 1, 1), E( -1, 1), E( 2, 1),
+ E( -2, 1), E( 9, 0), E( -9, 0), E( 10, 0), E( -10, 0),
+ E( 11, 0), E( -11, 0), E( 12, 0), E( -12, 0), E( 3, 1),
+ E( -3, 1), E( 4, 1), E( -4, 1), E( 1, 2), E( -1, 2),
+ E( 0, 0), E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0),
+ E( 3, 0), E( -3, 0), E( 4, 0), E( -4, 0), E( 5, 0),
+ E( -5, 0), E( 6, 0), E( -6, 0), E( 7, 0), E( -7, 0),
+ E( 8, 0), E( -8, 0), E( 9, 0), E( -9, 0), E( 10, 0),
+ E( -10, 0), E( 11, 0), E( -11, 0), E( 12, 0), E( -12, 0),
+ E( 13, 0), E( -13, 0), E( 14, 0), E( -14, 0), E( 15, 0),
+ E( -15, 0), E( 16, 0), E( -16, 0), E( 17, 0), E( -17, 0),
+ E( 18, 0), E( -18, 0), E( 19, 0), E( -19, 0), E( 20, 0),
+ E( -20, 0), E( 21, 0), E( -21, 0), E( 22, 0), E( -22, 0),
+ E( 23, 0), E( -23, 0), E( 24, 0), E( -24, 0), E( 25, 0),
+ E( -25, 0), E( 26, 0), E( -26, 0), E( 27, 0), E( -27, 0),
+ E( 28, 0), E( -28, 0), E( 29, 0), E( -29, 0), E( 30, 0),
+ E( -30, 0), E( 31, 0), E( -31, 0), E( 32, 0), E( -32, 0),
+ E( 33, 0), E( -33, 0), E( 34, 0), E( -34, 0), E( 35, 0),
+ E( -35, 0), E( 36, 0), E( -36, 0), E( 37, 0), E( -37, 0),
+ E( 38, 0), E( -38, 0), E( 39, 0), E( -39, 0), E( 40, 0),
+ E( -40, 0), E( 41, 0), E( -41, 0), E( 42, 0), E( -42, 0),
+ E( 43, 0), E( -43, 0), E( 44, 0), E( -44, 0), E( 45, 0),
+ E( -45, 0), E( 46, 0), E( -46, 0), E( 47, 0), E( -47, 0),
+ E( 48, 0), E( -48, 0), E( 49, 0), E( -49, 0), E( 50, 0),
+ E( -50, 0), E( 51, 0), E( -51, 0), E( 52, 0), E( -52, 0),
+ E( 53, 0), E( -53, 0), E( 54, 0), E( -54, 0), E( 55, 0),
+ E( -55, 0), E( 56, 0), E( -56, 0), E( 57, 0), E( -57, 0),
+ E( 58, 0), E( -58, 0), E( 59, 0), E( -59, 0), E( 60, 0),
+ E( -60, 0), E( 61, 0), E( -61, 0), E( 62, 0), E( -62, 0),
+ E( 63, 0), E( -63, 0), E( 64, 0), E( -64, 0), E( 65, 0),
+ E( -65, 0), E( 66, 0), E( -66, 0), E( 67, 0), E( -67, 0),
+ E( 68, 0), E( -68, 0), E( 69, 0), E( -69, 0), E( 70, 0),
+ E( -70, 0), E( 71, 0), E( -71, 0), E( 72, 0), E( -72, 0),
+ E( 73, 0), E( -73, 0), E( 74, 0), E( -74, 0), E( 75, 0),
+ E( -75, 0), E( 76, 0), E( -76, 0), E( 77, 0), E( -77, 0),
+ E( 78, 0), E( -78, 0), E( 79, 0), E( -79, 0), E( 80, 0),
+ E( -80, 0), E( 81, 0), E( -81, 0), E( 82, 0), E( -82, 0),
+ E( 83, 0), E( -83, 0), E( 84, 0), E( -84, 0), E( 85, 0),
+ E( -85, 0), E( 86, 0), E( -86, 0), E( 87, 0), E( -87, 0),
+ E( 88, 0), E( -88, 0), E( 89, 0), E( -89, 0), E( 90, 0),
+ E( -90, 0), E( 91, 0), E( -91, 0), E( 92, 0), E( -92, 0),
+ E( 93, 0), E( -93, 0), E( 94, 0), E( -94, 0), E( 95, 0),
+ E( -95, 0), E( 96, 0), E( -96, 0), E( 97, 0), E( -97, 0),
+ E( 98, 0), E( -98, 0), E( 99, 0), E( -99, 0), E( 100, 0),
+ E(-100, 0), E( 101, 0), E(-101, 0), E( 102, 0), E(-102, 0),
+ E( 103, 0), E(-103, 0), E( 104, 0), E(-104, 0), E( 105, 0),
+ E(-105, 0), E( 106, 0), E(-106, 0), E( 107, 0), E(-107, 0),
+ E( 108, 0), E(-108, 0), E( 109, 0), E(-109, 0), E( 110, 0),
+ E(-110, 0), E( 111, 0), E(-111, 0), E( 112, 0), E(-112, 0),
+ E( 113, 0), E(-113, 0), E( 114, 0), E(-114, 0), E( 115, 0),
+ E(-115, 0), E( 116, 0), E(-116, 0), E( 117, 0), E(-117, 0),
+ E( 118, 0), E(-118, 0), E( 119, 0), E(-119, 0), E( 120, 0),
+ E(-120, 0), E( 121, 0), E(-121, 0), E( 122, 0), E(-122, 0),
+ E( 123, 0), E(-123, 0), E( 124, 0), E(-124, 0), E( 125, 0),
+ E(-125, 0), E( 126, 0), E(-126, 0), E( 127, 0), E(-127, 0),
+ E( 128, 0), E(-128, 0), E( 129, 0), E(-129, 0), E( 130, 0),
+ E(-130, 0), E( 131, 0), E(-131, 0), E( 132, 0), E(-132, 0),
+ E( 133, 0), E(-133, 0), E( 134, 0), E(-134, 0), E( 135, 0),
+ E(-135, 0), E( 136, 0), E(-136, 0), E( 137, 0), E(-137, 0),
+ E( 138, 0), E(-138, 0), E( 139, 0), E(-139, 0), E( 140, 0),
+ E(-140, 0), E( 141, 0), E(-141, 0), E( 142, 0), E(-142, 0),
+ E( 143, 0), E(-143, 0), E( 144, 0), E(-144, 0), E( 145, 0),
+ E(-145, 0), E( 146, 0), E(-146, 0), E( 147, 0), E(-147, 0),
+ E( 148, 0), E(-148, 0), E( 149, 0), E(-149, 0), E( 150, 0),
+ E(-150, 0), E( 151, 0), E(-151, 0), E( 152, 0), E(-152, 0),
+ E( 153, 0), E(-153, 0), E( 154, 0), E(-154, 0), E( 155, 0),
+ E(-155, 0), E( 156, 0), E(-156, 0), E( 157, 0), E(-157, 0),
+ E( 158, 0), E(-158, 0), E( 159, 0), E(-159, 0), E( 160, 0),
+ E(-160, 0), E( 161, 0), E(-161, 0), E( 162, 0), E(-162, 0),
+ E( 163, 0), E(-163, 0), E( 164, 0), E(-164, 0), E( 165, 0),
+ E(-165, 0), E( 166, 0), E(-166, 0), E( 167, 0), E(-167, 0),
+ E( 168, 0), E(-168, 0), E( 169, 0), E(-169, 0), E( 170, 0),
+ E(-170, 0), E( 171, 0), E(-171, 0), E( 172, 0), E(-172, 0),
+ E( 173, 0), E(-173, 0), E( 174, 0), E(-174, 0), E( 175, 0),
+ E(-175, 0), E( 176, 0), E(-176, 0), E( 177, 0), E(-177, 0),
+ E( 178, 0), E(-178, 0), E( 179, 0), E(-179, 0), E( 180, 0),
+ E(-180, 0), E( 181, 0), E(-181, 0), E( 182, 0), E(-182, 0),
+ E( 183, 0), E(-183, 0), E( 184, 0), E(-184, 0), E( 185, 0),
+ E(-185, 0), E( 186, 0), E(-186, 0), E( 187, 0), E(-187, 0),
+ E( 188, 0), E(-188, 0), E( 189, 0), E(-189, 0), E( 190, 0),
+ E(-190, 0), E( 191, 0), E(-191, 0), E( 192, 0), E(-192, 0),
+ E( 193, 0), E(-193, 0), E( 194, 0), E(-194, 0), E( 195, 0),
+ E(-195, 0), E( 196, 0), E(-196, 0), E( 197, 0), E(-197, 0),
+ E( 198, 0), E(-198, 0), E( 199, 0), E(-199, 0), E( 200, 0),
+ E(-200, 0), E( 201, 0), E(-201, 0), E( 202, 0), E(-202, 0),
+ E( 203, 0), E(-203, 0), E( 204, 0), E(-204, 0), E( 205, 0),
+ E(-205, 0), E( 206, 0), E(-206, 0), E( 207, 0), E(-207, 0),
+ E( 208, 0), E(-208, 0), E( 209, 0), E(-209, 0), E( 210, 0),
+ E(-210, 0), E( 211, 0), E(-211, 0), E( 212, 0), E(-212, 0),
+ E( 213, 0), E(-213, 0), E( 214, 0), E(-214, 0), E( 215, 0),
+ E(-215, 0), E( 216, 0), E(-216, 0), E( 217, 0), E(-217, 0),
+ E( 218, 0), E(-218, 0), E( 219, 0), E(-219, 0), E( 220, 0),
+ E(-220, 0), E( 221, 0), E(-221, 0), E( 222, 0), E(-222, 0),
+ E( 223, 0), E(-223, 0), E( 224, 0), E(-224, 0), E( 225, 0),
+ E(-225, 0), E( 226, 0), E(-226, 0), E( 227, 0), E(-227, 0),
+ E( 228, 0), E(-228, 0), E( 229, 0), E(-229, 0), E( 230, 0),
+ E(-230, 0), E( 231, 0), E(-231, 0), E( 232, 0), E(-232, 0),
+ E( 233, 0), E(-233, 0), E( 234, 0), E(-234, 0), E( 235, 0),
+ E(-235, 0), E( 236, 0), E(-236, 0), E( 237, 0), E(-237, 0),
+ E( 238, 0), E(-238, 0), E( 239, 0), E(-239, 0), E( 240, 0),
+ E(-240, 0), E( 241, 0), E(-241, 0), E( 242, 0), E(-242, 0),
+ E( 243, 0), E(-243, 0), E( 244, 0), E(-244, 0), E( 245, 0),
+ E(-245, 0), E( 246, 0), E(-246, 0), E( 247, 0), E(-247, 0),
+ E( 248, 0), E(-248, 0), E( 249, 0), E(-249, 0), E( 250, 0),
+ E(-250, 0), E( 251, 0), E(-251, 0), E( 252, 0), E(-252, 0),
+ E( 253, 0), E(-253, 0), E( 254, 0), E(-254, 0), E( 255, 0),
+ E(-255, 0), E( 13, 0), E( -13, 0), E( 14, 0), E( -14, 0),
+ E( 15, 0), E( -15, 0), E( 16, 0), E( -16, 0), E( 17, 0),
+ E( -17, 0), E( 18, 0), E( -18, 0), E( 5, 1), E( -5, 1),
+ E( 6, 1), E( -6, 1), E( 2, 2), E( -2, 2), E( 1, 3),
+ E( -1, 3), E( 0, 0), E( 19, 0), E( -19, 0), E( 20, 0),
+ E( -20, 0), E( 21, 0), E( -21, 0), E( 22, 0), E( -22, 0),
+ E( 23, 0), E( -23, 0), E( 24, 0), E( -24, 0), E( 25, 0),
+ E( -25, 0), E( 7, 1), E( -7, 1), E( 8, 1), E( -8, 1),
+ E( 3, 2), E( -3, 2), E( 2, 3), E( -2, 3), E( 1, 4),
+ E( -1, 4), E( 1, 5), E( -1, 5), E( 26, 0), E( -26, 0),
+ E( 27, 0), E( -27, 0), E( 28, 0), E( -28, 0), E( 29, 0),
+ E( -29, 0), E( 30, 0), E( -30, 0), E( 31, 0), E( -31, 0),
+ E( 32, 0), E( -32, 0), E( 33, 0), E( -33, 0), E( 34, 0),
+ E( -34, 0), E( 35, 0), E( -35, 0), E( 36, 0), E( -36, 0),
+ E( 0, 1), E( 9, 1), E( -9, 1), E( 10, 1), E( -10, 1),
+ E( 11, 1), E( -11, 1), E( 12, 1), E( -12, 1), E( 0, 2),
+ E( 4, 2), E( -4, 2), E( 5, 2), E( -5, 2), E( 6, 2),
+ E( -6, 2), E( 0, 3), E( 3, 3), E( -3, 3), E( 4, 3),
+ E( -4, 3), E( 0, 4), E( 2, 4), E( -2, 4), E( 0, 5),
+ E( 1, 6), E( -1, 6), E( 1, 7), E( -1, 7), E( 1, 8),
+ E( -1, 8), E( 37, 0), E( -37, 0), E( 38, 0), E( -38, 0),
+ E( 39, 0), E( -39, 0), E( 40, 0), E( -40, 0), E( 41, 0),
+ E( -41, 0), E( 42, 0), E( -42, 0), E( 43, 0), E( -43, 0),
+ E( 44, 0), E( -44, 0), E( 45, 0), E( -45, 0), E( 46, 0),
+ E( -46, 0), E( 47, 0), E( -47, 0), E( 48, 0), E( -48, 0),
+ E( 13, 1), E( -13, 1), E( 14, 1), E( -14, 1), E( 15, 1),
+ E( -15, 1), E( 16, 1), E( -16, 1), E( 7, 2), E( -7, 2),
+ E( 8, 2), E( -8, 2), E( 5, 3), E( -5, 3), E( 6, 3),
+ E( -6, 3), E( 3, 4), E( -3, 4), E( 4, 4), E( -4, 4),
+ E( 2, 5), E( -2, 5), E( 0, 6), E( 2, 6), E( -2, 6),
+ E( 0, 7), E( 0, 8), E( 0, 9), E( 1, 9), E( -1, 9),
+ E( 1, 10), E( -1, 10), E( 1, 11), E( -1, 11), E( 1, 12),
+ E( -1, 12), E( 49, 0), E( -49, 0), E( 50, 0), E( -50, 0),
+ E( 51, 0), E( -51, 0), E( 52, 0), E( -52, 0), E( 53, 0),
+ E( -53, 0), E( 54, 0), E( -54, 0), E( 55, 0), E( -55, 0),
+ E( 56, 0), E( -56, 0), E( 57, 0), E( -57, 0), E( 58, 0),
+ E( -58, 0), E( 59, 0), E( -59, 0), E( 60, 0), E( -60, 0),
+ E( 61, 0), E( -61, 0), E( 62, 0), E( -62, 0), E( 63, 0),
+ E( -63, 0), E( 17, 1), E( -17, 1), E( 18, 1), E( -18, 1),
+ E( 19, 1), E( -19, 1), E( 20, 1), E( -20, 1), E( 21, 1),
+ E( -21, 1), E( 22, 1), E( -22, 1), E( 23, 1), E( -23, 1),
+ E( 24, 1), E( -24, 1), E( 9, 2), E( -9, 2), E( 10, 2),
+ E( -10, 2), E( 11, 2), E( -11, 2), E( 12, 2), E( -12, 2),
+ E( 7, 3), E( -7, 3), E( 8, 3), E( -8, 3), E( 5, 4),
+ E( -5, 4), E( 6, 4), E( -6, 4), E( 3, 5), E( -3, 5),
+ E( 4, 5), E( -4, 5), E( 5, 5), E( -5, 5), E( 6, 5),
+ E( -6, 5), E( 3, 6), E( -3, 6), E( 4, 6), E( -4, 6),
+ E( 2, 7), E( -2, 7), E( 2, 8), E( -2, 8), E( 2, 9),
+ E( -2, 9), E( 0, 10), E( 2, 10), E( -2, 10), E( 0, 11),
+ E( 0, 12), E( 0, 13), E( 1, 13), E( -1, 13), E( 1, 14),
+ E( -1, 14), E( 0, 0), E( 0, 1), E( 0, 2), E( 0, 3),
+ E( 0, 4), E( 0, 5), E( 0, 6), E( 0, 7), E( 0, 8),
+ E( 0, 9), E( 0, 10), E( 0, 11), E( 0, 12), E( 0, 13),
+ E( 0, 14), E( 0, 15), E( 0, 16), E( 0, 17), E( 0, 18),
+ E( 0, 19), E( 0, 20), E( 0, 21), E( 0, 22), E( 0, 23),
+ E( 0, 24), E( 0, 25), E( 0, 26), E( 0, 27), E( 0, 28),
+ E( 0, 29), E( 0, 30), E( 0, 31), E( 0, 32), E( 0, 33),
+ E( 0, 34), E( 0, 35), E( 0, 36), E( 0, 37), E( 0, 38),
+ E( 0, 39), E( 0, 40), E( 0, 41), E( 0, 42), E( 0, 43),
+ E( 0, 44), E( 0, 45), E( 0, 46), E( 0, 47), E( 0, 48),
+ E( 0, 49), E( 0, 50), E( 0, 51), E( 0, 52), E( 0, 53),
+ E( 0, 54), E( 0, 55), E( 0, 56), E( 0, 57), E( 0, 58),
+ E( 0, 59), E( 0, 60), E( 0, 61), E( 0, 62), E( 0, 63),
+ E( 25, 1), E( -25, 1), E( 26, 1), E( -26, 1), E( 27, 1),
+ E( -27, 1), E( 28, 1), E( -28, 1), E( 29, 1), E( -29, 1),
+ E( 30, 1), E( -30, 1), E( 31, 1), E( -31, 1), E( 32, 1),
+ E( -32, 1), E( 13, 2), E( -13, 2), E( 14, 2), E( -14, 2),
+ E( 15, 2), E( -15, 2), E( 16, 2), E( -16, 2), E( 9, 3),
+ E( -9, 3), E( 10, 3), E( -10, 3), E( 11, 3), E( -11, 3),
+ E( 7, 4), E( -7, 4), E( 3, 7), E( -3, 7), E( 4, 7),
+ E( -4, 7), E( 3, 8), E( -3, 8), E( 4, 8), E( -4, 8),
+ E( 3, 9), E( -3, 9), E( 2, 11), E( -2, 11), E( 2, 12),
+ E( -2, 12), E( 0, 14),
+ // AC table Q16 - 512 elements
+ E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0),
+ E( -3, 0), E( 4, 0), E( -4, 0), E( 1, 1), E( -1, 1),
+ E( 0, 64), E( 5, 0), E( -5, 0), E( 6, 0), E( -6, 0),
+ E( 2, 1), E( -2, 1), E( 1, 2), E( -1, 2), E( 7, 0),
+ E( -7, 0), E( 8, 0), E( -8, 0), E( 9, 0), E( -9, 0),
+ E( 3, 1), E( -3, 1), E( 1, 3), E( -1, 3), E( 1, 4),
+ E( -1, 4), E( 10, 0), E( -10, 0), E( 11, 0), E( -11, 0),
+ E( 12, 0), E( -12, 0), E( 4, 1), E( -4, 1), E( 2, 2),
+ E( -2, 2), E( 1, 5), E( -1, 5), E( 1, 6), E( -1, 6),
+ E( 13, 0), E( -13, 0), E( 14, 0), E( -14, 0), E( 15, 0),
+ E( -15, 0), E( 16, 0), E( -16, 0), E( 17, 0), E( -17, 0),
+ E( 5, 1), E( -5, 1), E( 2, 3), E( -2, 3), E( 1, 7),
+ E( -1, 7), E( 1, 8), E( -1, 8), E( 1, 9), E( -1, 9),
+ E( 1, 10), E( -1, 10), E( 0, 0), E( 18, 0), E( -18, 0),
+ E( 19, 0), E( -19, 0), E( 20, 0), E( -20, 0), E( 21, 0),
+ E( -21, 0), E( 22, 0), E( -22, 0), E( 6, 1), E( -6, 1),
+ E( 7, 1), E( -7, 1), E( 3, 2), E( -3, 2), E( 2, 4),
+ E( -2, 4), E( 2, 5), E( -2, 5), E( 1, 11), E( -1, 11),
+ E( 1, 12), E( -1, 12), E( 1, 13), E( -1, 13), E( 0, 0),
+ E( 0, 1), E( 0, 2), E( 0, 3), E( 0, 4), E( 0, 5),
+ E( 0, 6), E( 0, 7), E( 0, 8), E( 0, 9), E( 0, 10),
+ E( 0, 11), E( 0, 12), E( 0, 13), E( 0, 14), E( 0, 15),
+ E( 0, 16), E( 0, 17), E( 0, 18), E( 0, 19), E( 0, 20),
+ E( 0, 21), E( 0, 22), E( 0, 23), E( 0, 24), E( 0, 25),
+ E( 0, 26), E( 0, 27), E( 0, 28), E( 0, 29), E( 0, 30),
+ E( 0, 31), E( 0, 32), E( 0, 33), E( 0, 34), E( 0, 35),
+ E( 0, 36), E( 0, 37), E( 0, 38), E( 0, 39), E( 0, 40),
+ E( 0, 41), E( 0, 42), E( 0, 43), E( 0, 44), E( 0, 45),
+ E( 0, 46), E( 0, 47), E( 0, 48), E( 0, 49), E( 0, 50),
+ E( 0, 51), E( 0, 52), E( 0, 53), E( 0, 54), E( 0, 55),
+ E( 0, 56), E( 0, 57), E( 0, 58), E( 0, 59), E( 0, 60),
+ E( 0, 61), E( 0, 62), E( 0, 63), E( 0, 0), E( 1, 0),
+ E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0), E( -3, 0),
+ E( 4, 0), E( -4, 0), E( 5, 0), E( -5, 0), E( 6, 0),
+ E( -6, 0), E( 7, 0), E( -7, 0), E( 8, 0), E( -8, 0),
+ E( 9, 0), E( -9, 0), E( 10, 0), E( -10, 0), E( 11, 0),
+ E( -11, 0), E( 12, 0), E( -12, 0), E( 13, 0), E( -13, 0),
+ E( 14, 0), E( -14, 0), E( 15, 0), E( -15, 0), E( 16, 0),
+ E( -16, 0), E( 17, 0), E( -17, 0), E( 18, 0), E( -18, 0),
+ E( 19, 0), E( -19, 0), E( 20, 0), E( -20, 0), E( 21, 0),
+ E( -21, 0), E( 22, 0), E( -22, 0), E( 23, 0), E( -23, 0),
+ E( 24, 0), E( -24, 0), E( 25, 0), E( -25, 0), E( 26, 0),
+ E( -26, 0), E( 27, 0), E( -27, 0), E( 28, 0), E( -28, 0),
+ E( 29, 0), E( -29, 0), E( 30, 0), E( -30, 0), E( 31, 0),
+ E( -31, 0), E( 32, 0), E( -32, 0), E( 33, 0), E( -33, 0),
+ E( 34, 0), E( -34, 0), E( 35, 0), E( -35, 0), E( 36, 0),
+ E( -36, 0), E( 37, 0), E( -37, 0), E( 38, 0), E( -38, 0),
+ E( 39, 0), E( -39, 0), E( 40, 0), E( -40, 0), E( 41, 0),
+ E( -41, 0), E( 42, 0), E( -42, 0), E( 43, 0), E( -43, 0),
+ E( 44, 0), E( -44, 0), E( 45, 0), E( -45, 0), E( 46, 0),
+ E( -46, 0), E( 47, 0), E( -47, 0), E( 48, 0), E( -48, 0),
+ E( 49, 0), E( -49, 0), E( 50, 0), E( -50, 0), E( 51, 0),
+ E( -51, 0), E( 52, 0), E( -52, 0), E( 53, 0), E( -53, 0),
+ E( 54, 0), E( -54, 0), E( 55, 0), E( -55, 0), E( 56, 0),
+ E( -56, 0), E( 57, 0), E( -57, 0), E( 58, 0), E( -58, 0),
+ E( 59, 0), E( -59, 0), E( 60, 0), E( -60, 0), E( 61, 0),
+ E( -61, 0), E( 62, 0), E( -62, 0), E( 63, 0), E( -63, 0),
+ E( 64, 0), E( -64, 0), E( 65, 0), E( -65, 0), E( 66, 0),
+ E( -66, 0), E( 67, 0), E( -67, 0), E( 68, 0), E( -68, 0),
+ E( 69, 0), E( -69, 0), E( 70, 0), E( -70, 0), E( 71, 0),
+ E( -71, 0), E( 72, 0), E( -72, 0), E( 73, 0), E( -73, 0),
+ E( 74, 0), E( -74, 0), E( 75, 0), E( -75, 0), E( 76, 0),
+ E( -76, 0), E( 77, 0), E( -77, 0), E( 78, 0), E( -78, 0),
+ E( 79, 0), E( -79, 0), E( 80, 0), E( -80, 0), E( 81, 0),
+ E( -81, 0), E( 82, 0), E( -82, 0), E( 83, 0), E( -83, 0),
+ E( 84, 0), E( -84, 0), E( 85, 0), E( -85, 0), E( 86, 0),
+ E( -86, 0), E( 87, 0), E( -87, 0), E( 88, 0), E( -88, 0),
+ E( 89, 0), E( -89, 0), E( 90, 0), E( -90, 0), E( 91, 0),
+ E( -91, 0), E( 92, 0), E( -92, 0), E( 93, 0), E( -93, 0),
+ E( 94, 0), E( -94, 0), E( 95, 0), E( -95, 0), E( 96, 0),
+ E( -96, 0), E( 97, 0), E( -97, 0), E( 98, 0), E( -98, 0),
+ E( 99, 0), E( -99, 0), E( 100, 0), E(-100, 0), E( 101, 0),
+ E(-101, 0), E( 102, 0), E(-102, 0), E( 103, 0), E(-103, 0),
+ E( 104, 0), E(-104, 0), E( 105, 0), E(-105, 0), E( 106, 0),
+ E(-106, 0), E( 107, 0), E(-107, 0), E( 108, 0), E(-108, 0),
+ E( 109, 0), E(-109, 0), E( 110, 0), E(-110, 0), E( 111, 0),
+ E(-111, 0), E( 112, 0), E(-112, 0), E( 113, 0), E(-113, 0),
+ E( 114, 0), E(-114, 0), E( 115, 0), E(-115, 0), E( 116, 0),
+ E(-116, 0), E( 117, 0), E(-117, 0), E( 118, 0), E(-118, 0),
+ E( 119, 0), E(-119, 0), E( 120, 0), E(-120, 0), E( 121, 0),
+ E(-121, 0), E( 122, 0), E(-122, 0), E( 123, 0), E(-123, 0),
+ E( 124, 0), E(-124, 0), E( 125, 0), E(-125, 0), E( 126, 0),
+ E(-126, 0), E( 127, 0), E(-127, 0), E( 23, 0), E( -23, 0),
+ E( 24, 0), E( -24, 0), E( 25, 0), E( -25, 0), E( 26, 0),
+ E( -26, 0), E( 27, 0), E( -27, 0), E( 28, 0), E( -28, 0),
+ E( 8, 1), E( -8, 1), E( 9, 1), E( -9, 1), E( 4, 2),
+ E( -4, 2), E( 3, 3), E( -3, 3), E( 3, 4), E( -3, 4),
+ E( 2, 6), E( -2, 6), E( 2, 7), E( -2, 7), E( 29, 0),
+ E( -29, 0), E( 30, 0), E( -30, 0), E( 31, 0), E( -31, 0),
+ E( 32, 0), E( -32, 0), E( 33, 0), E( -33, 0), E( 34, 0),
+ E( -34, 0), E( 35, 0), E( -35, 0), E( 0, 1), E( 10, 1),
+ E( -10, 1), E( 11, 1), E( -11, 1), E( 12, 1), E( -12, 1),
+ E( 0, 2), E( 5, 2), E( -5, 2), E( 0, 3), E( 4, 3),
+ E( -4, 3), E( 3, 5), E( -3, 5), E( 2, 8), E( -2, 8),
+ E( 2, 9), E( -2, 9), E( 1, 14), E( -1, 14), E( 1, 15),
+ E( -1, 15), E( 36, 0), E( -36, 0), E( 37, 0), E( -37, 0),
+ E( 38, 0), E( -38, 0), E( 39, 0), E( -39, 0), E( 40, 0),
+ E( -40, 0), E( 13, 1), E( -13, 1), E( 14, 1), E( -14, 1),
+ E( 15, 1), E( -15, 1), E( 6, 2), E( -6, 2), E( 7, 2),
+ E( -7, 2), E( 5, 3), E( -5, 3), E( 0, 4), E( 4, 4),
+ E( -4, 4), E( 0, 5), E( 0, 6), E( 3, 6), E( -3, 6),
+ E( 0, 7), E( 3, 7), E( -3, 7), E( 2, 10), E( -2, 10),
+ E( 1, 16), E( -1, 16),
+ // AC table Q32 - 354 elements
+ E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0), E( 0, 64), E( 3, 0),
+ E( -3, 0), E( 1, 1), E( -1, 1), E( 4, 0), E( -4, 0), E( 5, 0),
+ E( -5, 0), E( 2, 1), E( -2, 1), E( 1, 2), E( -1, 2), E( 1, 3),
+ E( -1, 3), E( 6, 0), E( -6, 0), E( 7, 0), E( -7, 0), E( 3, 1),
+ E( -3, 1), E( 1, 4), E( -1, 4), E( 1, 5), E( -1, 5), E( 8, 0),
+ E( -8, 0), E( 9, 0), E( -9, 0), E( 10, 0), E(-10, 0), E( 4, 1),
+ E( -4, 1), E( 2, 2), E( -2, 2), E( 1, 6), E( -1, 6), E( 1, 7),
+ E( -1, 7), E( 1, 8), E( -1, 8), E( 11, 0), E(-11, 0), E( 12, 0),
+ E(-12, 0), E( 13, 0), E(-13, 0), E( 5, 1), E( -5, 1), E( 2, 3),
+ E( -2, 3), E( 1, 9), E( -1, 9), E( 1, 10), E( -1, 10), E( 14, 0),
+ E(-14, 0), E( 15, 0), E(-15, 0), E( 16, 0), E(-16, 0), E( 6, 1),
+ E( -6, 1), E( 7, 1), E( -7, 1), E( 3, 2), E( -3, 2), E( 3, 3),
+ E( -3, 3), E( 2, 4), E( -2, 4), E( 2, 5), E( -2, 5), E( 1, 11),
+ E( -1, 11), E( 1, 12), E( -1, 12), E( 1, 13), E( -1, 13), E( 0, 0),
+ E( 0, 1), E( 0, 2), E( 0, 3), E( 0, 4), E( 0, 5), E( 0, 6),
+ E( 0, 7), E( 0, 8), E( 0, 9), E( 0, 10), E( 0, 11), E( 0, 12),
+ E( 0, 13), E( 0, 14), E( 0, 15), E( 0, 16), E( 0, 17), E( 0, 18),
+ E( 0, 19), E( 0, 20), E( 0, 21), E( 0, 22), E( 0, 23), E( 0, 24),
+ E( 0, 25), E( 0, 26), E( 0, 27), E( 0, 28), E( 0, 29), E( 0, 30),
+ E( 0, 31), E( 0, 32), E( 0, 33), E( 0, 34), E( 0, 35), E( 0, 36),
+ E( 0, 37), E( 0, 38), E( 0, 39), E( 0, 40), E( 0, 41), E( 0, 42),
+ E( 0, 43), E( 0, 44), E( 0, 45), E( 0, 46), E( 0, 47), E( 0, 48),
+ E( 0, 49), E( 0, 50), E( 0, 51), E( 0, 52), E( 0, 53), E( 0, 54),
+ E( 0, 55), E( 0, 56), E( 0, 57), E( 0, 58), E( 0, 59), E( 0, 60),
+ E( 0, 61), E( 0, 62), E( 0, 63), E( 0, 0), E( 17, 0), E(-17, 0),
+ E( 18, 0), E(-18, 0), E( 19, 0), E(-19, 0), E( 20, 0), E(-20, 0),
+ E( 8, 1), E( -8, 1), E( 9, 1), E( -9, 1), E( 4, 2), E( -4, 2),
+ E( 3, 4), E( -3, 4), E( 2, 6), E( -2, 6), E( 2, 7), E( -2, 7),
+ E( 2, 8), E( -2, 8), E( 1, 14), E( -1, 14), E( 0, 0), E( 1, 0),
+ E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0), E( -3, 0), E( 4, 0),
+ E( -4, 0), E( 5, 0), E( -5, 0), E( 6, 0), E( -6, 0), E( 7, 0),
+ E( -7, 0), E( 8, 0), E( -8, 0), E( 9, 0), E( -9, 0), E( 10, 0),
+ E(-10, 0), E( 11, 0), E(-11, 0), E( 12, 0), E(-12, 0), E( 13, 0),
+ E(-13, 0), E( 14, 0), E(-14, 0), E( 15, 0), E(-15, 0), E( 16, 0),
+ E(-16, 0), E( 17, 0), E(-17, 0), E( 18, 0), E(-18, 0), E( 19, 0),
+ E(-19, 0), E( 20, 0), E(-20, 0), E( 21, 0), E(-21, 0), E( 22, 0),
+ E(-22, 0), E( 23, 0), E(-23, 0), E( 24, 0), E(-24, 0), E( 25, 0),
+ E(-25, 0), E( 26, 0), E(-26, 0), E( 27, 0), E(-27, 0), E( 28, 0),
+ E(-28, 0), E( 29, 0), E(-29, 0), E( 30, 0), E(-30, 0), E( 31, 0),
+ E(-31, 0), E( 32, 0), E(-32, 0), E( 33, 0), E(-33, 0), E( 34, 0),
+ E(-34, 0), E( 35, 0), E(-35, 0), E( 36, 0), E(-36, 0), E( 37, 0),
+ E(-37, 0), E( 38, 0), E(-38, 0), E( 39, 0), E(-39, 0), E( 40, 0),
+ E(-40, 0), E( 41, 0), E(-41, 0), E( 42, 0), E(-42, 0), E( 43, 0),
+ E(-43, 0), E( 44, 0), E(-44, 0), E( 45, 0), E(-45, 0), E( 46, 0),
+ E(-46, 0), E( 47, 0), E(-47, 0), E( 48, 0), E(-48, 0), E( 49, 0),
+ E(-49, 0), E( 50, 0), E(-50, 0), E( 51, 0), E(-51, 0), E( 52, 0),
+ E(-52, 0), E( 53, 0), E(-53, 0), E( 54, 0), E(-54, 0), E( 55, 0),
+ E(-55, 0), E( 56, 0), E(-56, 0), E( 57, 0), E(-57, 0), E( 58, 0),
+ E(-58, 0), E( 59, 0), E(-59, 0), E( 60, 0), E(-60, 0), E( 61, 0),
+ E(-61, 0), E( 62, 0), E(-62, 0), E( 63, 0), E(-63, 0), E( 21, 0),
+ E(-21, 0), E( 22, 0), E(-22, 0), E( 23, 0), E(-23, 0), E( 0, 1),
+ E( 10, 1), E(-10, 1), E( 11, 1), E(-11, 1), E( 0, 2), E( 5, 2),
+ E( -5, 2), E( 6, 2), E( -6, 2), E( 0, 3), E( 4, 3), E( -4, 3),
+ E( 0, 4), E( 3, 5), E( -3, 5), E( 3, 6), E( -3, 6), E( 2, 9),
+ E( -2, 9), E( 1, 15), E( -1, 15), E( 24, 0), E(-24, 0), E( 25, 0),
+ E(-25, 0), E( 26, 0), E(-26, 0), E( 12, 1), E(-12, 1), E( 13, 1),
+ E(-13, 1), E( 5, 3), E( -5, 3), E( 4, 4), E( -4, 4), E( 0, 5),
+ E( 4, 5), E( -4, 5), E( 0, 6), E( 0, 7), E( 3, 7), E( -3, 7),
+ E( 0, 8), E( 3, 8), E( -3, 8), E( 0, 9), E( 1, 16), E( -1, 16),
+ // AC table Q64 - 257 elements
+ E( 1, 0), E( -1, 0), E( 0, 64), E( 2, 0), E( -2, 0), E( 3, 0),
+ E( -3, 0), E( 1, 1), E( -1, 1), E( 4, 0), E( -4, 0), E( 2, 1),
+ E( -2, 1), E( 1, 2), E( -1, 2), E( 5, 0), E( -5, 0), E( 1, 3),
+ E( -1, 3), E( 1, 4), E( -1, 4), E( 6, 0), E( -6, 0), E( 3, 1),
+ E( -3, 1), E( 2, 2), E( -2, 2), E( 1, 5), E( -1, 5), E( 1, 6),
+ E( -1, 6), E( 1, 7), E( -1, 7), E( 7, 0), E( -7, 0), E( 8, 0),
+ E( -8, 0), E( 4, 1), E( -4, 1), E( 2, 3), E( -2, 3), E( 1, 8),
+ E( -1, 8), E( 1, 9), E( -1, 9), E( 9, 0), E( -9, 0), E( 10, 0),
+ E(-10, 0), E( 5, 1), E( -5, 1), E( 3, 2), E( -3, 2), E( 2, 4),
+ E( -2, 4), E( 2, 5), E( -2, 5), E( 1, 10), E( -1, 10), E( 1, 11),
+ E( -1, 11), E( 0, 0), E( 0, 1), E( 0, 2), E( 0, 3), E( 0, 4),
+ E( 0, 5), E( 0, 6), E( 0, 7), E( 0, 8), E( 0, 9), E( 0, 10),
+ E( 0, 11), E( 0, 12), E( 0, 13), E( 0, 14), E( 0, 15), E( 0, 16),
+ E( 0, 17), E( 0, 18), E( 0, 19), E( 0, 20), E( 0, 21), E( 0, 22),
+ E( 0, 23), E( 0, 24), E( 0, 25), E( 0, 26), E( 0, 27), E( 0, 28),
+ E( 0, 29), E( 0, 30), E( 0, 31), E( 0, 32), E( 0, 33), E( 0, 34),
+ E( 0, 35), E( 0, 36), E( 0, 37), E( 0, 38), E( 0, 39), E( 0, 40),
+ E( 0, 41), E( 0, 42), E( 0, 43), E( 0, 44), E( 0, 45), E( 0, 46),
+ E( 0, 47), E( 0, 48), E( 0, 49), E( 0, 50), E( 0, 51), E( 0, 52),
+ E( 0, 53), E( 0, 54), E( 0, 55), E( 0, 56), E( 0, 57), E( 0, 58),
+ E( 0, 59), E( 0, 60), E( 0, 61), E( 0, 62), E( 0, 63), E( 0, 0),
+ E( 11, 0), E(-11, 0), E( 12, 0), E(-12, 0), E( 6, 1), E( -6, 1),
+ E( 7, 1), E( -7, 1), E( 3, 3), E( -3, 3), E( 3, 4), E( -3, 4),
+ E( 3, 5), E( -3, 5), E( 2, 6), E( -2, 6), E( 2, 7), E( -2, 7),
+ E( 1, 12), E( -1, 12), E( 1, 13), E( -1, 13), E( 1, 14), E( -1, 14),
+ E( 13, 0), E(-13, 0), E( 14, 0), E(-14, 0), E( 0, 1), E( 8, 1),
+ E( -8, 1), E( 4, 2), E( -4, 2), E( 4, 3), E( -4, 3), E( 2, 8),
+ E( -2, 8), E( 2, 9), E( -2, 9), E( 1, 15), E( -1, 15), E( 0, 0),
+ E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0), E( -3, 0),
+ E( 4, 0), E( -4, 0), E( 5, 0), E( -5, 0), E( 6, 0), E( -6, 0),
+ E( 7, 0), E( -7, 0), E( 8, 0), E( -8, 0), E( 9, 0), E( -9, 0),
+ E( 10, 0), E(-10, 0), E( 11, 0), E(-11, 0), E( 12, 0), E(-12, 0),
+ E( 13, 0), E(-13, 0), E( 14, 0), E(-14, 0), E( 15, 0), E(-15, 0),
+ E( 16, 0), E(-16, 0), E( 17, 0), E(-17, 0), E( 18, 0), E(-18, 0),
+ E( 19, 0), E(-19, 0), E( 20, 0), E(-20, 0), E( 21, 0), E(-21, 0),
+ E( 22, 0), E(-22, 0), E( 23, 0), E(-23, 0), E( 24, 0), E(-24, 0),
+ E( 25, 0), E(-25, 0), E( 26, 0), E(-26, 0), E( 27, 0), E(-27, 0),
+ E( 28, 0), E(-28, 0), E( 29, 0), E(-29, 0), E( 30, 0), E(-30, 0),
+ E( 31, 0), E(-31, 0), E( 15, 0), E(-15, 0), E( 9, 1), E( -9, 1),
+ E( 10, 1), E(-10, 1), E( 0, 2), E( 5, 2), E( -5, 2), E( 0, 3),
+ E( 5, 3), E( -5, 3), E( 0, 4), E( 4, 4), E( -4, 4), E( 0, 5),
+ E( 4, 5), E( -4, 5), E( 0, 6), E( 3, 6), E( -3, 6), E( 3, 7),
+ E( -3, 7), E( 1, 16), E( -1, 16), E( 1, 17), E( -1, 17),
+ // AC table Q128 - 194 elements
+ E( 1, 0), E( -1, 0), E( 0, 64), E( 1, 1), E( -1, 1), E( 2, 0),
+ E( -2, 0), E( 3, 0), E( -3, 0), E( 2, 1), E( -2, 1), E( 1, 2),
+ E( -1, 2), E( 1, 3), E( -1, 3), E( 1, 4), E( -1, 4), E( 4, 0),
+ E( -4, 0), E( 1, 5), E( -1, 5), E( 1, 6), E( -1, 6), E( 1, 7),
+ E( -1, 7), E( 5, 0), E( -5, 0), E( 3, 1), E( -3, 1), E( 2, 2),
+ E( -2, 2), E( 2, 3), E( -2, 3), E( 1, 8), E( -1, 8), E( 1, 9),
+ E( -1, 9), E( 6, 0), E( -6, 0), E( 4, 1), E( -4, 1), E( 2, 4),
+ E( -2, 4), E( 2, 5), E( -2, 5), E( 1, 10), E( -1, 10), E( 7, 0),
+ E( -7, 0), E( 5, 1), E( -5, 1), E( 3, 2), E( -3, 2), E( 3, 3),
+ E( -3, 3), E( 2, 6), E( -2, 6), E( 0, 0), E( 0, 1), E( 0, 2),
+ E( 0, 3), E( 0, 4), E( 0, 5), E( 0, 6), E( 0, 7), E( 0, 8),
+ E( 0, 9), E( 0, 10), E( 0, 11), E( 0, 12), E( 0, 13), E( 0, 14),
+ E( 0, 15), E( 0, 16), E( 0, 17), E( 0, 18), E( 0, 19), E( 0, 20),
+ E( 0, 21), E( 0, 22), E( 0, 23), E( 0, 24), E( 0, 25), E( 0, 26),
+ E( 0, 27), E( 0, 28), E( 0, 29), E( 0, 30), E( 0, 31), E( 0, 32),
+ E( 0, 33), E( 0, 34), E( 0, 35), E( 0, 36), E( 0, 37), E( 0, 38),
+ E( 0, 39), E( 0, 40), E( 0, 41), E( 0, 42), E( 0, 43), E( 0, 44),
+ E( 0, 45), E( 0, 46), E( 0, 47), E( 0, 48), E( 0, 49), E( 0, 50),
+ E( 0, 51), E( 0, 52), E( 0, 53), E( 0, 54), E( 0, 55), E( 0, 56),
+ E( 0, 57), E( 0, 58), E( 0, 59), E( 0, 60), E( 0, 61), E( 0, 62),
+ E( 0, 63), E( 6, 1), E( -6, 1), E( 7, 1), E( -7, 1), E( 3, 4),
+ E( -3, 4), E( 3, 5), E( -3, 5), E( 2, 7), E( -2, 7), E( 2, 8),
+ E( -2, 8), E( 2, 9), E( -2, 9), E( 1, 11), E( -1, 11), E( 1, 12),
+ E( -1, 12), E( 1, 13), E( -1, 13), E( 0, 0), E( 8, 0), E( -8, 0),
+ E( 9, 0), E( -9, 0), E( 8, 1), E( -8, 1), E( 4, 2), E( -4, 2),
+ E( 4, 3), E( -4, 3), E( 3, 6), E( -3, 6), E( 1, 14), E( -1, 14),
+ E( 1, 15), E( -1, 15), E( 1, 16), E( -1, 16), E( 0, 1), E( 0, 2),
+ E( 0, 3), E( 0, 0), E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0),
+ E( 3, 0), E( -3, 0), E( 4, 0), E( -4, 0), E( 5, 0), E( -5, 0),
+ E( 6, 0), E( -6, 0), E( 7, 0), E( -7, 0), E( 8, 0), E( -8, 0),
+ E( 9, 0), E( -9, 0), E( 10, 0), E(-10, 0), E( 11, 0), E(-11, 0),
+ E( 12, 0), E(-12, 0), E( 13, 0), E(-13, 0), E( 14, 0), E(-14, 0),
+ E( 15, 0), E(-15, 0),
};
-static const HQXLUT ac32_lut[] = {
- RPT_256 ( 1, 0, 3 ), RPT_256 ( -1, 0, 3 ),
- RPT_128 ( 2, 0, 4 ), RPT_128 ( -2, 0, 4 ),
- RPT_256 ( 0, 64, 3 ), RPT_64 ( 3, 0, 5 ),
- RPT_64 ( -3, 0, 5 ), RPT_64 ( 1, 1, 5 ),
- RPT_64 ( -1, 1, 5 ), RPT_32 ( 4, 0, 6 ),
- RPT_32 ( -4, 0, 6 ), RPT_32 ( 5, 0, 6 ),
- RPT_32 ( -5, 0, 6 ), RPT_32 ( 2, 1, 6 ),
- RPT_32 ( -2, 1, 6 ), RPT_32 ( 1, 2, 6 ),
- RPT_32 ( -1, 2, 6 ), RPT_32 ( 1, 3, 6 ),
- RPT_32 ( -1, 3, 6 ), RPT_16 ( 6, 0, 7 ),
- RPT_16 ( -6, 0, 7 ), RPT_16 ( 7, 0, 7 ),
- RPT_16 ( -7, 0, 7 ), RPT_16 ( 3, 1, 7 ),
- RPT_16 ( -3, 1, 7 ), RPT_16 ( 1, 4, 7 ),
- RPT_16 ( -1, 4, 7 ), RPT_16 ( 1, 5, 7 ),
- RPT_16 ( -1, 5, 7 ), RPT_8 ( 8, 0, 8 ),
- RPT_8 ( -8, 0, 8 ), RPT_8 ( 9, 0, 8 ),
- RPT_8 ( -9, 0, 8 ), RPT_8 ( 10, 0, 8 ),
- RPT_8 ( -10, 0, 8 ), RPT_8 ( 4, 1, 8 ),
- RPT_8 ( -4, 1, 8 ), RPT_8 ( 2, 2, 8 ),
- RPT_8 ( -2, 2, 8 ), RPT_8 ( 1, 6, 8 ),
- RPT_8 ( -1, 6, 8 ), RPT_8 ( 1, 7, 8 ),
- RPT_8 ( -1, 7, 8 ), RPT_8 ( 1, 8, 8 ),
- RPT_8 ( -1, 8, 8 ), RPT_4 ( 11, 0, 9 ),
- RPT_4 ( -11, 0, 9 ), RPT_4 ( 12, 0, 9 ),
- RPT_4 ( -12, 0, 9 ), RPT_4 ( 13, 0, 9 ),
- RPT_4 ( -13, 0, 9 ), RPT_4 ( 5, 1, 9 ),
- RPT_4 ( -5, 1, 9 ), RPT_4 ( 2, 3, 9 ),
- RPT_4 ( -2, 3, 9 ), RPT_4 ( 1, 9, 9 ),
- RPT_4 ( -1, 9, 9 ), RPT_4 ( 1, 10, 9 ),
- RPT_4 ( -1, 10, 9 ), RPT_2 ( 14, 0, 10 ),
- RPT_2 ( -14, 0, 10 ), RPT_2 ( 15, 0, 10 ),
- RPT_2 ( -15, 0, 10 ), RPT_2 ( 16, 0, 10 ),
- RPT_2 ( -16, 0, 10 ), RPT_2 ( 6, 1, 10 ),
- RPT_2 ( -6, 1, 10 ), RPT_2 ( 7, 1, 10 ),
- RPT_2 ( -7, 1, 10 ), RPT_2 ( 3, 2, 10 ),
- RPT_2 ( -3, 2, 10 ), RPT_2 ( 3, 3, 10 ),
- RPT_2 ( -3, 3, 10 ), RPT_2 ( 2, 4, 10 ),
- RPT_2 ( -2, 4, 10 ), RPT_2 ( 2, 5, 10 ),
- RPT_2 ( -2, 5, 10 ), RPT_2 ( 1, 11, 10 ),
- RPT_2 ( -1, 11, 10 ), RPT_2 ( 1, 12, 10 ),
- RPT_2 ( -1, 12, 10 ), RPT_2 ( 1, 13, 10 ),
- RPT_2 ( -1, 13, 10 ), { 2048, 0, -1 }, { 2112, 0, -1 },
- { 2176, 0, -1 }, { 2240, 0, -1 }, RPT_2 ( 0, 0, 10 ),
- { 17, 0, 11 }, { -17, 0, 11 }, { 18, 0, 11 }, { -18, 0, 11 },
- { 19, 0, 11 }, { -19, 0, 11 }, { 20, 0, 11 }, { -20, 0, 11 },
- { 8, 1, 11 }, { -8, 1, 11 }, { 9, 1, 11 }, { -9, 1, 11 },
- { 4, 2, 11 }, { -4, 2, 11 }, { 3, 4, 11 }, { -3, 4, 11 },
- { 2, 6, 11 }, { -2, 6, 11 }, { 2, 7, 11 }, { -2, 7, 11 },
- { 2, 8, 11 }, { -2, 8, 11 }, { 1, 14, 11 }, { -1, 14, 11 },
- { 2304, 0, -1 }, { 2368, 0, -1 }, { 2432, 0, -1 }, { 2496, 0, -1 },
- { 2560, 0, -1 }, { 0, 1, 11 }, { 2624, 0, -1 }, { 2688, 0, -1 },
- { 0, 2, 11 }, { 2752, 0, -1 }, { 2816, 0, -1 }, { 0, 3, 11 },
- { 2880, 0, -1 }, { 0, 4, 11 }, { 2944, 0, -1 }, { 3008, 0, -1 },
- { 3072, 0, -1 }, { 3136, 0, -1 }, { 3200, 0, -1 }, { 3264, 0, -1 },
- { 3328, 0, -1 }, { 3392, 0, -1 }, { 3456, 0, -1 }, { 3520, 0, -1 },
- { 3584, 0, -1 }, { 3648, 0, -1 }, RPT_4 ( 0, 0, 15 ),
- RPT_4 ( 0, 1, 15 ), RPT_4 ( 0, 2, 15 ),
- RPT_4 ( 0, 3, 15 ), RPT_4 ( 0, 4, 15 ),
- RPT_4 ( 0, 5, 15 ), RPT_4 ( 0, 6, 15 ),
- RPT_4 ( 0, 7, 15 ), RPT_4 ( 0, 8, 15 ),
- RPT_4 ( 0, 9, 15 ), RPT_4 ( 0, 10, 15 ),
- RPT_4 ( 0, 11, 15 ), RPT_4 ( 0, 12, 15 ),
- RPT_4 ( 0, 13, 15 ), RPT_4 ( 0, 14, 15 ),
- RPT_4 ( 0, 15, 15 ), RPT_4 ( 0, 16, 15 ),
- RPT_4 ( 0, 17, 15 ), RPT_4 ( 0, 18, 15 ),
- RPT_4 ( 0, 19, 15 ), RPT_4 ( 0, 20, 15 ),
- RPT_4 ( 0, 21, 15 ), RPT_4 ( 0, 22, 15 ),
- RPT_4 ( 0, 23, 15 ), RPT_4 ( 0, 24, 15 ),
- RPT_4 ( 0, 25, 15 ), RPT_4 ( 0, 26, 15 ),
- RPT_4 ( 0, 27, 15 ), RPT_4 ( 0, 28, 15 ),
- RPT_4 ( 0, 29, 15 ), RPT_4 ( 0, 30, 15 ),
- RPT_4 ( 0, 31, 15 ), RPT_4 ( 0, 32, 15 ),
- RPT_4 ( 0, 33, 15 ), RPT_4 ( 0, 34, 15 ),
- RPT_4 ( 0, 35, 15 ), RPT_4 ( 0, 36, 15 ),
- RPT_4 ( 0, 37, 15 ), RPT_4 ( 0, 38, 15 ),
- RPT_4 ( 0, 39, 15 ), RPT_4 ( 0, 40, 15 ),
- RPT_4 ( 0, 41, 15 ), RPT_4 ( 0, 42, 15 ),
- RPT_4 ( 0, 43, 15 ), RPT_4 ( 0, 44, 15 ),
- RPT_4 ( 0, 45, 15 ), RPT_4 ( 0, 46, 15 ),
- RPT_4 ( 0, 47, 15 ), RPT_4 ( 0, 48, 15 ),
- RPT_4 ( 0, 49, 15 ), RPT_4 ( 0, 50, 15 ),
- RPT_4 ( 0, 51, 15 ), RPT_4 ( 0, 52, 15 ),
- RPT_4 ( 0, 53, 15 ), RPT_4 ( 0, 54, 15 ),
- RPT_4 ( 0, 55, 15 ), RPT_4 ( 0, 56, 15 ),
- RPT_4 ( 0, 57, 15 ), RPT_4 ( 0, 58, 15 ),
- RPT_4 ( 0, 59, 15 ), RPT_4 ( 0, 60, 15 ),
- RPT_4 ( 0, 61, 15 ), RPT_4 ( 0, 62, 15 ),
- RPT_4 ( 0, 63, 15 ), RPT_2 ( 0, 0, 16 ),
- { 1, 0, 17 }, { -1, 0, 17 }, { 2, 0, 17 }, { -2, 0, 17 },
- { 3, 0, 17 }, { -3, 0, 17 }, { 4, 0, 17 }, { -4, 0, 17 },
- { 5, 0, 17 }, { -5, 0, 17 }, { 6, 0, 17 }, { -6, 0, 17 },
- { 7, 0, 17 }, { -7, 0, 17 }, { 8, 0, 17 }, { -8, 0, 17 },
- { 9, 0, 17 }, { -9, 0, 17 }, { 10, 0, 17 }, { -10, 0, 17 },
- { 11, 0, 17 }, { -11, 0, 17 }, { 12, 0, 17 }, { -12, 0, 17 },
- { 13, 0, 17 }, { -13, 0, 17 }, { 14, 0, 17 }, { -14, 0, 17 },
- { 15, 0, 17 }, { -15, 0, 17 }, { 16, 0, 17 }, { -16, 0, 17 },
- { 17, 0, 17 }, { -17, 0, 17 }, { 18, 0, 17 }, { -18, 0, 17 },
- { 19, 0, 17 }, { -19, 0, 17 }, { 20, 0, 17 }, { -20, 0, 17 },
- { 21, 0, 17 }, { -21, 0, 17 }, { 22, 0, 17 }, { -22, 0, 17 },
- { 23, 0, 17 }, { -23, 0, 17 }, { 24, 0, 17 }, { -24, 0, 17 },
- { 25, 0, 17 }, { -25, 0, 17 }, { 26, 0, 17 }, { -26, 0, 17 },
- { 27, 0, 17 }, { -27, 0, 17 }, { 28, 0, 17 }, { -28, 0, 17 },
- { 29, 0, 17 }, { -29, 0, 17 }, { 30, 0, 17 }, { -30, 0, 17 },
- { 31, 0, 17 }, { -31, 0, 17 }, { 32, 0, 17 }, { -32, 0, 17 },
- { 33, 0, 17 }, { -33, 0, 17 }, { 34, 0, 17 }, { -34, 0, 17 },
- { 35, 0, 17 }, { -35, 0, 17 }, { 36, 0, 17 }, { -36, 0, 17 },
- { 37, 0, 17 }, { -37, 0, 17 }, { 38, 0, 17 }, { -38, 0, 17 },
- { 39, 0, 17 }, { -39, 0, 17 }, { 40, 0, 17 }, { -40, 0, 17 },
- { 41, 0, 17 }, { -41, 0, 17 }, { 42, 0, 17 }, { -42, 0, 17 },
- { 43, 0, 17 }, { -43, 0, 17 }, { 44, 0, 17 }, { -44, 0, 17 },
- { 45, 0, 17 }, { -45, 0, 17 }, { 46, 0, 17 }, { -46, 0, 17 },
- { 47, 0, 17 }, { -47, 0, 17 }, { 48, 0, 17 }, { -48, 0, 17 },
- { 49, 0, 17 }, { -49, 0, 17 }, { 50, 0, 17 }, { -50, 0, 17 },
- { 51, 0, 17 }, { -51, 0, 17 }, { 52, 0, 17 }, { -52, 0, 17 },
- { 53, 0, 17 }, { -53, 0, 17 }, { 54, 0, 17 }, { -54, 0, 17 },
- { 55, 0, 17 }, { -55, 0, 17 }, { 56, 0, 17 }, { -56, 0, 17 },
- { 57, 0, 17 }, { -57, 0, 17 }, { 58, 0, 17 }, { -58, 0, 17 },
- { 59, 0, 17 }, { -59, 0, 17 }, { 60, 0, 17 }, { -60, 0, 17 },
- { 61, 0, 17 }, { -61, 0, 17 }, { 62, 0, 17 }, { -62, 0, 17 },
- { 63, 0, 17 }, { -63, 0, 17 }, RPT_32 ( 21, 0, 12 ),
- RPT_32 ( -21, 0, 12 ), RPT_32 ( 22, 0, 12 ),
- RPT_32 ( -22, 0, 12 ), RPT_32 ( 23, 0, 12 ),
- RPT_32 ( -23, 0, 12 ), RPT_32 ( 10, 1, 12 ),
- RPT_32 ( -10, 1, 12 ), RPT_32 ( 11, 1, 12 ),
- RPT_32 ( -11, 1, 12 ), RPT_32 ( 5, 2, 12 ),
- RPT_32 ( -5, 2, 12 ), RPT_32 ( 6, 2, 12 ),
- RPT_32 ( -6, 2, 12 ), RPT_32 ( 4, 3, 12 ),
- RPT_32 ( -4, 3, 12 ), RPT_32 ( 3, 5, 12 ),
- RPT_32 ( -3, 5, 12 ), RPT_32 ( 3, 6, 12 ),
- RPT_32 ( -3, 6, 12 ), RPT_32 ( 2, 9, 12 ),
- RPT_32 ( -2, 9, 12 ), RPT_32 ( 1, 15, 12 ),
- RPT_32 ( -1, 15, 12 ), RPT_16 ( 24, 0, 13 ),
- RPT_16 ( -24, 0, 13 ), RPT_16 ( 25, 0, 13 ),
- RPT_16 ( -25, 0, 13 ), RPT_16 ( 26, 0, 13 ),
- RPT_16 ( -26, 0, 13 ), RPT_16 ( 12, 1, 13 ),
- RPT_16 ( -12, 1, 13 ), RPT_16 ( 13, 1, 13 ),
- RPT_16 ( -13, 1, 13 ), RPT_16 ( 5, 3, 13 ),
- RPT_16 ( -5, 3, 13 ), RPT_16 ( 4, 4, 13 ),
- RPT_16 ( -4, 4, 13 ), RPT_32 ( 0, 5, 12 ),
- RPT_16 ( 4, 5, 13 ), RPT_16 ( -4, 5, 13 ),
- RPT_32 ( 0, 6, 12 ), RPT_32 ( 0, 7, 12 ),
- RPT_16 ( 3, 7, 13 ), RPT_16 ( -3, 7, 13 ),
- RPT_32 ( 0, 8, 12 ), RPT_16 ( 3, 8, 13 ),
- RPT_16 ( -3, 8, 13 ), RPT_32 ( 0, 9, 12 ),
- RPT_16 ( 1, 16, 13 ), RPT_16 ( -1, 16, 13 ),
+static const uint8_t hqx_ac_lens[] = {
+ // AC table Q0 - 815 elements
+ 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,
+ 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 9, 10, 10, 10, 10, 10, 10, 10, 10, 9, 10,
+ 10, 9, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 10, 11, 11, 10, 10, 11, 11, 11, 11, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13,
+ 13, 13, 13, 13, 13,
+ // AC table Q8 - 907 elements
+ 4, 4, 4, 4, 5, 5, 5, 5, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 9, 10, 10, 10, 10, 10, 10, 10, 10, 9, 10, 10, 10, 10, 10,
+ 10, 9, 10, 10, 10, 10, 9, 10, 10, 9, 10, 10, 10, 10, 10, 10, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 10, 11, 11, 10, 10, 10, 11, 11, 11, 11,
+ 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 12, 12, 11, 11, 11,
+ 12, 12, 12, 12, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 12,
+ // AC table Q16 - 512 elements
+ 3, 3, 4, 4, 5, 5, 5, 5, 5, 5, 4, 6, 6, 6, 6, 6, 6, 6,
+ 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 11, 12, 12, 12, 12, 12, 12, 11, 12, 12, 11, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 13, 13, 12, 12, 13,
+ 13, 12, 13, 13, 13, 13, 13, 13,
+ // AC table Q32 - 354 elements
+ 3, 3, 4, 4, 3, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 16, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 12, 12, 12, 12, 12, 12, 11,
+ 12, 12, 12, 12, 11, 12, 12, 12, 12, 11, 12, 12, 11, 12, 12, 12, 12, 12,
+ 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12,
+ 13, 13, 12, 12, 13, 13, 12, 13, 13, 12, 13, 13,
+ // AC table Q64 - 257 elements
+ 3, 3, 2, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7,
+ 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 10,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 11, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 13, 13, 13, 13,
+ 13, 13, 12, 13, 13, 12, 13, 13, 12, 13, 13, 12, 13, 13, 12, 13, 13, 13,
+ 13, 13, 13, 13, 13,
+ // AC table Q128 - 194 elements
+ 3, 3, 2, 4, 4, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
+ 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
};
-static const HQXLUT ac64_lut[] = {
- RPT_512 ( 1, 0, 3 ), RPT_512 ( -1, 0, 3 ),
- RPT_1024( 0, 64, 2 ), RPT_256 ( 2, 0, 4 ),
- RPT_256 ( -2, 0, 4 ), RPT_128 ( 3, 0, 5 ),
- RPT_128 ( -3, 0, 5 ), RPT_128 ( 1, 1, 5 ),
- RPT_128 ( -1, 1, 5 ), RPT_64 ( 4, 0, 6 ),
- RPT_64 ( -4, 0, 6 ), RPT_64 ( 2, 1, 6 ),
- RPT_64 ( -2, 1, 6 ), RPT_64 ( 1, 2, 6 ),
- RPT_64 ( -1, 2, 6 ), RPT_32 ( 5, 0, 7 ),
- RPT_32 ( -5, 0, 7 ), RPT_32 ( 1, 3, 7 ),
- RPT_32 ( -1, 3, 7 ), RPT_32 ( 1, 4, 7 ),
- RPT_32 ( -1, 4, 7 ), RPT_16 ( 6, 0, 8 ),
- RPT_16 ( -6, 0, 8 ), RPT_16 ( 3, 1, 8 ),
- RPT_16 ( -3, 1, 8 ), RPT_16 ( 2, 2, 8 ),
- RPT_16 ( -2, 2, 8 ), RPT_16 ( 1, 5, 8 ),
- RPT_16 ( -1, 5, 8 ), RPT_16 ( 1, 6, 8 ),
- RPT_16 ( -1, 6, 8 ), RPT_16 ( 1, 7, 8 ),
- RPT_16 ( -1, 7, 8 ), RPT_8 ( 7, 0, 9 ),
- RPT_8 ( -7, 0, 9 ), RPT_8 ( 8, 0, 9 ),
- RPT_8 ( -8, 0, 9 ), RPT_8 ( 4, 1, 9 ),
- RPT_8 ( -4, 1, 9 ), RPT_8 ( 2, 3, 9 ),
- RPT_8 ( -2, 3, 9 ), RPT_8 ( 1, 8, 9 ),
- RPT_8 ( -1, 8, 9 ), RPT_8 ( 1, 9, 9 ),
- RPT_8 ( -1, 9, 9 ), RPT_4 ( 9, 0, 10 ),
- RPT_4 ( -9, 0, 10 ), RPT_4 ( 10, 0, 10 ),
- RPT_4 ( -10, 0, 10 ), RPT_4 ( 5, 1, 10 ),
- RPT_4 ( -5, 1, 10 ), RPT_4 ( 3, 2, 10 ),
- RPT_4 ( -3, 2, 10 ), RPT_4 ( 2, 4, 10 ),
- RPT_4 ( -2, 4, 10 ), RPT_4 ( 2, 5, 10 ),
- RPT_4 ( -2, 5, 10 ), RPT_4 ( 1, 10, 10 ),
- RPT_4 ( -1, 10, 10 ), RPT_4 ( 1, 11, 10 ),
- RPT_4 ( -1, 11, 10 ), { 4096, 0, -1 }, { 4128, 0, -1 },
- { 4160, 0, -1 }, { 4192, 0, -1 }, { 4224, 0, -1 }, { 4256, 0, -1 },
- { 4288, 0, -1 }, { 4320, 0, -1 }, RPT_4 ( 0, 0, 10 ),
- RPT_2 ( 11, 0, 11 ), RPT_2 ( -11, 0, 11 ),
- RPT_2 ( 12, 0, 11 ), RPT_2 ( -12, 0, 11 ),
- RPT_2 ( 6, 1, 11 ), RPT_2 ( -6, 1, 11 ),
- RPT_2 ( 7, 1, 11 ), RPT_2 ( -7, 1, 11 ),
- RPT_2 ( 3, 3, 11 ), RPT_2 ( -3, 3, 11 ),
- RPT_2 ( 3, 4, 11 ), RPT_2 ( -3, 4, 11 ),
- RPT_2 ( 3, 5, 11 ), RPT_2 ( -3, 5, 11 ),
- RPT_2 ( 2, 6, 11 ), RPT_2 ( -2, 6, 11 ),
- RPT_2 ( 2, 7, 11 ), RPT_2 ( -2, 7, 11 ),
- RPT_2 ( 1, 12, 11 ), RPT_2 ( -1, 12, 11 ),
- RPT_2 ( 1, 13, 11 ), RPT_2 ( -1, 13, 11 ),
- RPT_2 ( 1, 14, 11 ), RPT_2 ( -1, 14, 11 ),
- { 13, 0, 12 }, { -13, 0, 12 }, { 14, 0, 12 }, { -14, 0, 12 },
- RPT_2 ( 0, 1, 11 ), { 8, 1, 12 }, { -8, 1, 12 },
- { 4, 2, 12 }, { -4, 2, 12 }, { 4, 3, 12 }, { -4, 3, 12 },
- { 2, 8, 12 }, { -2, 8, 12 }, { 2, 9, 12 }, { -2, 9, 12 },
- { 1, 15, 12 }, { -1, 15, 12 }, { 4352, 0, -1 }, { 4384, 0, -1 },
- { 4416, 0, -1 }, { 4448, 0, -1 }, { 4480, 0, -1 }, { 0, 2, 12 },
- { 4512, 0, -1 }, { 0, 3, 12 }, { 4544, 0, -1 }, { 0, 4, 12 },
- { 4576, 0, -1 }, { 0, 5, 12 }, { 4608, 0, -1 }, { 0, 6, 12 },
- { 4640, 0, -1 }, { 4672, 0, -1 }, { 4704, 0, -1 }, { 4736, 0, -1 },
- RPT_4 ( 0, 0, 15 ), RPT_4 ( 0, 1, 15 ),
- RPT_4 ( 0, 2, 15 ), RPT_4 ( 0, 3, 15 ),
- RPT_4 ( 0, 4, 15 ), RPT_4 ( 0, 5, 15 ),
- RPT_4 ( 0, 6, 15 ), RPT_4 ( 0, 7, 15 ),
- RPT_4 ( 0, 8, 15 ), RPT_4 ( 0, 9, 15 ),
- RPT_4 ( 0, 10, 15 ), RPT_4 ( 0, 11, 15 ),
- RPT_4 ( 0, 12, 15 ), RPT_4 ( 0, 13, 15 ),
- RPT_4 ( 0, 14, 15 ), RPT_4 ( 0, 15, 15 ),
- RPT_4 ( 0, 16, 15 ), RPT_4 ( 0, 17, 15 ),
- RPT_4 ( 0, 18, 15 ), RPT_4 ( 0, 19, 15 ),
- RPT_4 ( 0, 20, 15 ), RPT_4 ( 0, 21, 15 ),
- RPT_4 ( 0, 22, 15 ), RPT_4 ( 0, 23, 15 ),
- RPT_4 ( 0, 24, 15 ), RPT_4 ( 0, 25, 15 ),
- RPT_4 ( 0, 26, 15 ), RPT_4 ( 0, 27, 15 ),
- RPT_4 ( 0, 28, 15 ), RPT_4 ( 0, 29, 15 ),
- RPT_4 ( 0, 30, 15 ), RPT_4 ( 0, 31, 15 ),
- RPT_4 ( 0, 32, 15 ), RPT_4 ( 0, 33, 15 ),
- RPT_4 ( 0, 34, 15 ), RPT_4 ( 0, 35, 15 ),
- RPT_4 ( 0, 36, 15 ), RPT_4 ( 0, 37, 15 ),
- RPT_4 ( 0, 38, 15 ), RPT_4 ( 0, 39, 15 ),
- RPT_4 ( 0, 40, 15 ), RPT_4 ( 0, 41, 15 ),
- RPT_4 ( 0, 42, 15 ), RPT_4 ( 0, 43, 15 ),
- RPT_4 ( 0, 44, 15 ), RPT_4 ( 0, 45, 15 ),
- RPT_4 ( 0, 46, 15 ), RPT_4 ( 0, 47, 15 ),
- RPT_4 ( 0, 48, 15 ), RPT_4 ( 0, 49, 15 ),
- RPT_4 ( 0, 50, 15 ), RPT_4 ( 0, 51, 15 ),
- RPT_4 ( 0, 52, 15 ), RPT_4 ( 0, 53, 15 ),
- RPT_4 ( 0, 54, 15 ), RPT_4 ( 0, 55, 15 ),
- RPT_4 ( 0, 56, 15 ), RPT_4 ( 0, 57, 15 ),
- RPT_4 ( 0, 58, 15 ), RPT_4 ( 0, 59, 15 ),
- RPT_4 ( 0, 60, 15 ), RPT_4 ( 0, 61, 15 ),
- RPT_4 ( 0, 62, 15 ), RPT_4 ( 0, 63, 15 ),
- RPT_2 ( 0, 0, 16 ), { 1, 0, 17 }, { -1, 0, 17 },
- { 2, 0, 17 }, { -2, 0, 17 }, { 3, 0, 17 }, { -3, 0, 17 },
- { 4, 0, 17 }, { -4, 0, 17 }, { 5, 0, 17 }, { -5, 0, 17 },
- { 6, 0, 17 }, { -6, 0, 17 }, { 7, 0, 17 }, { -7, 0, 17 },
- { 8, 0, 17 }, { -8, 0, 17 }, { 9, 0, 17 }, { -9, 0, 17 },
- { 10, 0, 17 }, { -10, 0, 17 }, { 11, 0, 17 }, { -11, 0, 17 },
- { 12, 0, 17 }, { -12, 0, 17 }, { 13, 0, 17 }, { -13, 0, 17 },
- { 14, 0, 17 }, { -14, 0, 17 }, { 15, 0, 17 }, { -15, 0, 17 },
- { 16, 0, 17 }, { -16, 0, 17 }, { 17, 0, 17 }, { -17, 0, 17 },
- { 18, 0, 17 }, { -18, 0, 17 }, { 19, 0, 17 }, { -19, 0, 17 },
- { 20, 0, 17 }, { -20, 0, 17 }, { 21, 0, 17 }, { -21, 0, 17 },
- { 22, 0, 17 }, { -22, 0, 17 }, { 23, 0, 17 }, { -23, 0, 17 },
- { 24, 0, 17 }, { -24, 0, 17 }, { 25, 0, 17 }, { -25, 0, 17 },
- { 26, 0, 17 }, { -26, 0, 17 }, { 27, 0, 17 }, { -27, 0, 17 },
- { 28, 0, 17 }, { -28, 0, 17 }, { 29, 0, 17 }, { -29, 0, 17 },
- { 30, 0, 17 }, { -30, 0, 17 }, { 31, 0, 17 }, { -31, 0, 17 },
- RPT_16 ( 15, 0, 13 ), RPT_16 ( -15, 0, 13 ),
- RPT_16 ( 9, 1, 13 ), RPT_16 ( -9, 1, 13 ),
- RPT_16 ( 10, 1, 13 ), RPT_16 ( -10, 1, 13 ),
- RPT_16 ( 5, 2, 13 ), RPT_16 ( -5, 2, 13 ),
- RPT_16 ( 5, 3, 13 ), RPT_16 ( -5, 3, 13 ),
- RPT_16 ( 4, 4, 13 ), RPT_16 ( -4, 4, 13 ),
- RPT_16 ( 4, 5, 13 ), RPT_16 ( -4, 5, 13 ),
- RPT_16 ( 3, 6, 13 ), RPT_16 ( -3, 6, 13 ),
- RPT_16 ( 3, 7, 13 ), RPT_16 ( -3, 7, 13 ),
- RPT_16 ( 1, 16, 13 ), RPT_16 ( -1, 16, 13 ),
- RPT_16 ( 1, 17, 13 ), RPT_16 ( -1, 17, 13 ),
-};
+static const uint16_t hqx_ac_nb_elems[] = { 815, 907, 512, 354, 257, 194 };
-static const HQXLUT ac128_lut[] = {
- RPT_256 ( 1, 0, 3 ), RPT_256 ( -1, 0, 3 ),
- RPT_512 ( 0, 64, 2 ), RPT_128 ( 1, 1, 4 ),
- RPT_128 ( -1, 1, 4 ), RPT_64 ( 2, 0, 5 ),
- RPT_64 ( -2, 0, 5 ), RPT_32 ( 3, 0, 6 ),
- RPT_32 ( -3, 0, 6 ), RPT_32 ( 2, 1, 6 ),
- RPT_32 ( -2, 1, 6 ), RPT_32 ( 1, 2, 6 ),
- RPT_32 ( -1, 2, 6 ), RPT_32 ( 1, 3, 6 ),
- RPT_32 ( -1, 3, 6 ), RPT_32 ( 1, 4, 6 ),
- RPT_32 ( -1, 4, 6 ), RPT_16 ( 4, 0, 7 ),
- RPT_16 ( -4, 0, 7 ), RPT_16 ( 1, 5, 7 ),
- RPT_16 ( -1, 5, 7 ), RPT_16 ( 1, 6, 7 ),
- RPT_16 ( -1, 6, 7 ), RPT_16 ( 1, 7, 7 ),
- RPT_16 ( -1, 7, 7 ), RPT_8 ( 5, 0, 8 ),
- RPT_8 ( -5, 0, 8 ), RPT_8 ( 3, 1, 8 ),
- RPT_8 ( -3, 1, 8 ), RPT_8 ( 2, 2, 8 ),
- RPT_8 ( -2, 2, 8 ), RPT_8 ( 2, 3, 8 ),
- RPT_8 ( -2, 3, 8 ), RPT_8 ( 1, 8, 8 ),
- RPT_8 ( -1, 8, 8 ), RPT_8 ( 1, 9, 8 ),
- RPT_8 ( -1, 9, 8 ), RPT_4 ( 6, 0, 9 ),
- RPT_4 ( -6, 0, 9 ), RPT_4 ( 4, 1, 9 ),
- RPT_4 ( -4, 1, 9 ), RPT_4 ( 2, 4, 9 ),
- RPT_4 ( -2, 4, 9 ), RPT_4 ( 2, 5, 9 ),
- RPT_4 ( -2, 5, 9 ), RPT_4 ( 1, 10, 9 ),
- RPT_4 ( -1, 10, 9 ), RPT_2 ( 7, 0, 10 ),
- RPT_2 ( -7, 0, 10 ), RPT_2 ( 5, 1, 10 ),
- RPT_2 ( -5, 1, 10 ), RPT_2 ( 3, 2, 10 ),
- RPT_2 ( -3, 2, 10 ), RPT_2 ( 3, 3, 10 ),
- RPT_2 ( -3, 3, 10 ), RPT_2 ( 2, 6, 10 ),
- RPT_2 ( -2, 6, 10 ), { 2048, 0, -1 }, { 2112, 0, -1 },
- { 2176, 0, -1 }, { 2240, 0, -1 }, { 6, 1, 11 }, { -6, 1, 11 },
- { 7, 1, 11 }, { -7, 1, 11 }, { 3, 4, 11 }, { -3, 4, 11 },
- { 3, 5, 11 }, { -3, 5, 11 }, { 2, 7, 11 }, { -2, 7, 11 },
- { 2, 8, 11 }, { -2, 8, 11 }, { 2, 9, 11 }, { -2, 9, 11 },
- { 1, 11, 11 }, { -1, 11, 11 }, { 1, 12, 11 }, { -1, 12, 11 },
- { 1, 13, 11 }, { -1, 13, 11 }, { 0, 0, 11 }, { 2304, 0, -1 },
- { 2368, 0, -1 }, { 2432, 0, -1 }, { 2496, 0, -1 }, { 2560, 0, -1 },
- { 2624, 0, -1 }, { 2688, 0, -1 }, { 2752, 0, -1 }, { 2816, 0, -1 },
- { 2880, 0, -1 }, { 2944, 0, -1 }, RPT_4 ( 0, 0, 15 ),
- RPT_4 ( 0, 1, 15 ), RPT_4 ( 0, 2, 15 ),
- RPT_4 ( 0, 3, 15 ), RPT_4 ( 0, 4, 15 ),
- RPT_4 ( 0, 5, 15 ), RPT_4 ( 0, 6, 15 ),
- RPT_4 ( 0, 7, 15 ), RPT_4 ( 0, 8, 15 ),
- RPT_4 ( 0, 9, 15 ), RPT_4 ( 0, 10, 15 ),
- RPT_4 ( 0, 11, 15 ), RPT_4 ( 0, 12, 15 ),
- RPT_4 ( 0, 13, 15 ), RPT_4 ( 0, 14, 15 ),
- RPT_4 ( 0, 15, 15 ), RPT_4 ( 0, 16, 15 ),
- RPT_4 ( 0, 17, 15 ), RPT_4 ( 0, 18, 15 ),
- RPT_4 ( 0, 19, 15 ), RPT_4 ( 0, 20, 15 ),
- RPT_4 ( 0, 21, 15 ), RPT_4 ( 0, 22, 15 ),
- RPT_4 ( 0, 23, 15 ), RPT_4 ( 0, 24, 15 ),
- RPT_4 ( 0, 25, 15 ), RPT_4 ( 0, 26, 15 ),
- RPT_4 ( 0, 27, 15 ), RPT_4 ( 0, 28, 15 ),
- RPT_4 ( 0, 29, 15 ), RPT_4 ( 0, 30, 15 ),
- RPT_4 ( 0, 31, 15 ), RPT_4 ( 0, 32, 15 ),
- RPT_4 ( 0, 33, 15 ), RPT_4 ( 0, 34, 15 ),
- RPT_4 ( 0, 35, 15 ), RPT_4 ( 0, 36, 15 ),
- RPT_4 ( 0, 37, 15 ), RPT_4 ( 0, 38, 15 ),
- RPT_4 ( 0, 39, 15 ), RPT_4 ( 0, 40, 15 ),
- RPT_4 ( 0, 41, 15 ), RPT_4 ( 0, 42, 15 ),
- RPT_4 ( 0, 43, 15 ), RPT_4 ( 0, 44, 15 ),
- RPT_4 ( 0, 45, 15 ), RPT_4 ( 0, 46, 15 ),
- RPT_4 ( 0, 47, 15 ), RPT_4 ( 0, 48, 15 ),
- RPT_4 ( 0, 49, 15 ), RPT_4 ( 0, 50, 15 ),
- RPT_4 ( 0, 51, 15 ), RPT_4 ( 0, 52, 15 ),
- RPT_4 ( 0, 53, 15 ), RPT_4 ( 0, 54, 15 ),
- RPT_4 ( 0, 55, 15 ), RPT_4 ( 0, 56, 15 ),
- RPT_4 ( 0, 57, 15 ), RPT_4 ( 0, 58, 15 ),
- RPT_4 ( 0, 59, 15 ), RPT_4 ( 0, 60, 15 ),
- RPT_4 ( 0, 61, 15 ), RPT_4 ( 0, 62, 15 ),
- RPT_4 ( 0, 63, 15 ), RPT_32 ( 8, 0, 12 ),
- RPT_32 ( -8, 0, 12 ), RPT_32 ( 9, 0, 12 ),
- RPT_32 ( -9, 0, 12 ), RPT_32 ( 8, 1, 12 ),
- RPT_32 ( -8, 1, 12 ), RPT_32 ( 4, 2, 12 ),
- RPT_32 ( -4, 2, 12 ), RPT_32 ( 4, 3, 12 ),
- RPT_32 ( -4, 3, 12 ), RPT_32 ( 3, 6, 12 ),
- RPT_32 ( -3, 6, 12 ), RPT_32 ( 1, 14, 12 ),
- RPT_32 ( -1, 14, 12 ), RPT_32 ( 1, 15, 12 ),
- RPT_32 ( -1, 15, 12 ), RPT_32 ( 1, 16, 12 ),
- RPT_32 ( -1, 16, 12 ), RPT_32 ( 0, 1, 12 ),
- RPT_32 ( 0, 2, 12 ), RPT_32 ( 0, 3, 12 ),
- RPT_2 ( 0, 0, 16 ), { 1, 0, 17 }, { -1, 0, 17 },
- { 2, 0, 17 }, { -2, 0, 17 }, { 3, 0, 17 }, { -3, 0, 17 },
- { 4, 0, 17 }, { -4, 0, 17 }, { 5, 0, 17 }, { -5, 0, 17 },
- { 6, 0, 17 }, { -6, 0, 17 }, { 7, 0, 17 }, { -7, 0, 17 },
- { 8, 0, 17 }, { -8, 0, 17 }, { 9, 0, 17 }, { -9, 0, 17 },
- { 10, 0, 17 }, { -10, 0, 17 }, { 11, 0, 17 }, { -11, 0, 17 },
- { 12, 0, 17 }, { -12, 0, 17 }, { 13, 0, 17 }, { -13, 0, 17 },
- { 14, 0, 17 }, { -14, 0, 17 }, { 15, 0, 17 }, { -15, 0, 17 },
-};
-
-const HQXAC ff_hqx_ac[NUM_HQX_AC] = {
- { 10, 5, ac0_lut },
- { 11, 6, ac8_lut },
- { 11, 6, ac16_lut },
- { 11, 6, ac32_lut },
- { 12, 5, ac64_lut },
- { 11, 6, ac128_lut },
-};
+static RL_VLC_ELEM hqx_ac_rl_vlc[15630];
#define INIT_DC_TABLE(idx, name) \
do { \
@@ -2148,8 +1515,47 @@ const HQXAC ff_hqx_ac[NUM_HQX_AC] = {
return ret; \
} while (0)
+static av_cold void hqx_init_static(void)
+{
+ VLCInitState state = VLC_INIT_STATE(hqx_ac_rl_vlc);
+ const uint8_t *lens = hqx_ac_lens;
+ const int16_t *run_level = hqx_ac_run_level;
+
+ for (int i = 0; i < NUM_HQX_AC; ++i) {
+ RL_VLC_ELEM *lut = state.table;
+ unsigned nb_codes = state.size;
+
+ ff_hqx_ac[i].lut =
+ ff_vlc_init_tables_from_lengths(&state, ff_hqx_ac[i].bits,
+ hqx_ac_nb_elems[i], lens, 1,
+ run_level, 2, 2, 0, 0);
+
+ nb_codes -= state.size;
+
+ for (unsigned j = 0; j < nb_codes; ++j) {
+ // lut[j] is in VLC (not RL_VLC) state
+ int sym = lut[j].sym;
+ int len = lut[j].len;
+ int level;
+
+ if (len < 0) {
+ level = sym;
+ } else {
+ level = sym >> 7;
+ lut[j].run = sym & 0x7f;
+ }
+ // lut[j] is now in RL_VLC state
+ lut[j].len8 = len;
+ lut[j].level = level;
+ }
+ lens += hqx_ac_nb_elems[i];
+ run_level += hqx_ac_nb_elems[i];
+ }
+}
+
av_cold int ff_hqx_init_vlcs(HQXContext *ctx)
{
+ static AVOnce init_static_once = AV_ONCE_INIT;
int ret = vlc_init(&ctx->cbp_vlc, HQX_CBP_VLC_BITS, FF_ARRAY_ELEMS(cbp_vlc_lens),
cbp_vlc_lens, 1, 1, cbp_vlc_bits, 1, 1, 0);
if (ret < 0)
@@ -2159,5 +1565,7 @@ av_cold int ff_hqx_init_vlcs(HQXContext *ctx)
INIT_DC_TABLE(1, dc10);
INIT_DC_TABLE(2, dc11);
+ ff_thread_once(&init_static_once, hqx_init_static);
+
return 0;
}
More information about the ffmpeg-cvslog
mailing list