From 918f6b32151f50440cb5ce57846e1ba1360e8dda Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Date: Wed, 9 Apr 2025 20:45:14 +0200 Subject: [PATCH 07/10] avcodec/hq_hqa: Use ff_vlc_init_from_lengths() This allows to avoid the codes table; furthermore, given that the runs fit into seven bits and level into nine, one can put them into one int16_t and use as symbols table in ff_vlc_init_from_lengths(). Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> --- libavcodec/hq_hqa.c | 20 +- libavcodec/hq_hqadata.h | 497 +++++++++++++++++----------------------- 2 files changed, 216 insertions(+), 301 deletions(-) diff --git a/libavcodec/hq_hqa.c b/libavcodec/hq_hqa.c index f67d6286b0..11388fb9fc 100644 --- a/libavcodec/hq_hqa.c +++ b/libavcodec/hq_hqa.c @@ -376,24 +376,22 @@ static int hq_hqa_decode_frame(AVCodecContext *avctx, AVFrame *pic, static av_cold void hq_init_static(void) { - VLC_INIT_STATIC_TABLE(hq_ac_rvlc, 9, NUM_HQ_AC_ENTRIES, - hq_ac_bits, 1, 1, hq_ac_codes, 2, 2, 0); + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(hq_ac_rvlc, 9, NUM_HQ_AC_ENTRIES, + hq_ac_lens, 1, hq_ac_sym, 2, 2, 0, 0); for (size_t i = 0; i < FF_ARRAY_ELEMS(hq_ac_rvlc); ++i) { int len = hq_ac_rvlc[i].len; - int sym = hq_ac_rvlc[i].sym, level = sym; - int run; + int sym = (int16_t)hq_ac_rvlc[i].sym, level = sym; + + // The invalid code has been remapped to HQ_AC_INVALID_RUN, + // so the VLC is complete. + av_assert1(len != 0); if (len > 0) { - level = hq_ac_syms[sym]; - run = hq_ac_skips[sym] + 1; - } else if (len < 0) { // More bits needed - run = 0; - } else { // Invalid code - run = HQ_AC_INVALID_RUN; + level = sym >> 7; + hq_ac_rvlc[i].run = sym & 0x7F; } hq_ac_rvlc[i].len8 = len; - hq_ac_rvlc[i].run = run; hq_ac_rvlc[i].level = level; } diff --git a/libavcodec/hq_hqadata.h b/libavcodec/hq_hqadata.h index e723cefaac..10120ee94f 100644 --- a/libavcodec/hq_hqadata.h +++ b/libavcodec/hq_hqadata.h @@ -23,7 +23,7 @@ #include <stdint.h> -#define NUM_HQ_AC_ENTRIES 746 +#define NUM_HQ_AC_ENTRIES 747 // includes one invalid entry #define NUM_HQ_PROFILES 22 #define NUM_HQ_QUANTS 16 @@ -1157,298 +1157,215 @@ static const uint8_t hq_quant_map[NUM_HQ_QUANTS][2][4] = #define HQ_AC_INVALID_RUN 0 -static const uint8_t hq_ac_bits[NUM_HQ_AC_ENTRIES] = { - 3, 3, 4, 4, 4, 5, 5, 5, 5, 5, 5, 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, 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, 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, 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, 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, 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, 13, 13, 13, 13, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, -}; - -static const uint16_t hq_ac_codes[NUM_HQ_AC_ENTRIES] = { - 0x0000, 0x0001, 0x0004, 0x0005, 0x0006, 0x000E, 0x000F, 0x0010, - 0x0011, 0x0012, 0x0013, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, - 0x002D, 0x002E, 0x002F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, - 0x0065, 0x0066, 0x0067, 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, - 0x00D5, 0x00D6, 0x00D7, 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, - 0x00DD, 0x00DE, 0x00DF, 0x01C0, 0x01C1, 0x01C2, 0x01C3, 0x01C4, - 0x01C5, 0x01C6, 0x01C7, 0x01C8, 0x01C9, 0x01CA, 0x01CB, 0x01CC, - 0x01CD, 0x01CE, 0x01CF, 0x01D0, 0x01D1, 0x01D2, 0x01D3, 0x01D4, - 0x01D5, 0x01D6, 0x01D7, 0x01D8, 0x01D9, 0x01DA, 0x01DB, 0x01DC, - 0x01DD, 0x01DE, 0x01DF, 0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, - 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, - 0x03CD, 0x03CE, 0x03CF, 0x03D0, 0x03D1, 0x03D2, 0x03D3, 0x03D4, - 0x03D5, 0x03D6, 0x03D7, 0x03D8, 0x03D9, 0x03DA, 0x03DB, 0x03DC, - 0x03DD, 0x03DE, 0x03DF, 0x07C0, 0x07C1, 0x07C2, 0x07C3, 0x07C4, - 0x07C5, 0x07C6, 0x07C7, 0x07C8, 0x07C9, 0x07CA, 0x07CB, 0x07CC, - 0x07CD, 0x07CE, 0x07CF, 0x0FA0, 0x0FA1, 0x0FA2, 0x0FA3, 0x0FA4, - 0x0FA5, 0x0FA6, 0x0FA7, 0x0FA8, 0x0FA9, 0x0FAA, 0x0FAB, 0x0FAC, - 0x0FAD, 0x0FAE, 0x0FAF, 0x1F60, 0x1F61, 0x1F62, 0x1F63, 0x1F64, - 0x1F65, 0x1F66, 0x1F67, 0x1F68, 0x1F69, 0x1F6A, 0x1F6B, 0x1F6C, - 0x1F6D, 0x1F6E, 0x1F6F, 0x1F70, 0x1F71, 0x1F72, 0x1F73, 0x1F74, - 0x1F75, 0x1F76, 0x1F77, 0x1F78, 0x1F79, 0x1F7A, 0x1F7B, 0x1F7C, - 0x1F7D, 0x1F7E, 0x1F7F, 0x1F80, 0x1F81, 0x1F82, 0x1F83, 0x1F84, - 0x1F85, 0x1F86, 0x1F87, 0x1F88, 0x1F89, 0x1F8A, 0x1F8B, 0x1F8C, - 0x1F8D, 0x1F8E, 0x1F8F, 0x1F90, 0x1F91, 0x1F92, 0x1F93, 0x1F94, - 0x1F95, 0x1F96, 0x1F97, 0x1F98, 0x1F99, 0x1F9A, 0x1F9B, 0x1F9C, - 0x1F9D, 0x1F9E, 0x1F9F, 0x1FA0, 0x1FA1, 0x1FA2, 0x1FA3, 0x1FA4, - 0x1FA5, 0x1FA6, 0x1FA7, 0x1FA8, 0x1FA9, 0x1FAA, 0x1FAB, 0x1FAC, - 0x1FAD, 0x1FAE, 0x1FAF, 0x1FB0, 0x1FB1, 0x1FB2, 0x1FB3, 0x1FB4, - 0x1FB5, 0x1FB6, 0x1FB7, 0x1FB8, 0x1FB9, 0x1FBA, 0x1FBB, 0x1FBC, - 0x1FBD, 0x1FBE, 0x1FBF, 0xFE00, 0xFE02, 0xFE03, 0xFE04, 0xFE05, - 0xFE06, 0xFE07, 0xFE08, 0xFE09, 0xFE0A, 0xFE0B, 0xFE0C, 0xFE0D, - 0xFE0E, 0xFE0F, 0xFE10, 0xFE11, 0xFE12, 0xFE13, 0xFE14, 0xFE15, - 0xFE16, 0xFE17, 0xFE18, 0xFE19, 0xFE1A, 0xFE1B, 0xFE1C, 0xFE1D, - 0xFE1E, 0xFE1F, 0xFE20, 0xFE21, 0xFE22, 0xFE23, 0xFE24, 0xFE25, - 0xFE26, 0xFE27, 0xFE28, 0xFE29, 0xFE2A, 0xFE2B, 0xFE2C, 0xFE2D, - 0xFE2E, 0xFE2F, 0xFE30, 0xFE31, 0xFE32, 0xFE33, 0xFE34, 0xFE35, - 0xFE36, 0xFE37, 0xFE38, 0xFE39, 0xFE3A, 0xFE3B, 0xFE3C, 0xFE3D, - 0xFE3E, 0xFE3F, 0xFE40, 0xFE41, 0xFE42, 0xFE43, 0xFE44, 0xFE45, - 0xFE46, 0xFE47, 0xFE48, 0xFE49, 0xFE4A, 0xFE4B, 0xFE4C, 0xFE4D, - 0xFE4E, 0xFE4F, 0xFE50, 0xFE51, 0xFE52, 0xFE53, 0xFE54, 0xFE55, - 0xFE56, 0xFE57, 0xFE58, 0xFE59, 0xFE5A, 0xFE5B, 0xFE5C, 0xFE5D, - 0xFE5E, 0xFE5F, 0xFE60, 0xFE61, 0xFE62, 0xFE63, 0xFE64, 0xFE65, - 0xFE66, 0xFE67, 0xFE68, 0xFE69, 0xFE6A, 0xFE6B, 0xFE6C, 0xFE6D, - 0xFE6E, 0xFE6F, 0xFE70, 0xFE71, 0xFE72, 0xFE73, 0xFE74, 0xFE75, - 0xFE76, 0xFE77, 0xFE78, 0xFE79, 0xFE7A, 0xFE7B, 0xFE7C, 0xFE7D, - 0xFE7E, 0xFE7F, 0xFE80, 0xFE81, 0xFE82, 0xFE83, 0xFE84, 0xFE85, - 0xFE86, 0xFE87, 0xFE88, 0xFE89, 0xFE8A, 0xFE8B, 0xFE8C, 0xFE8D, - 0xFE8E, 0xFE8F, 0xFE90, 0xFE91, 0xFE92, 0xFE93, 0xFE94, 0xFE95, - 0xFE96, 0xFE97, 0xFE98, 0xFE99, 0xFE9A, 0xFE9B, 0xFE9C, 0xFE9D, - 0xFE9E, 0xFE9F, 0xFEA0, 0xFEA1, 0xFEA2, 0xFEA3, 0xFEA4, 0xFEA5, - 0xFEA6, 0xFEA7, 0xFEA8, 0xFEA9, 0xFEAA, 0xFEAB, 0xFEAC, 0xFEAD, - 0xFEAE, 0xFEAF, 0xFEB0, 0xFEB1, 0xFEB2, 0xFEB3, 0xFEB4, 0xFEB5, - 0xFEB6, 0xFEB7, 0xFEB8, 0xFEB9, 0xFEBA, 0xFEBB, 0xFEBC, 0xFEBD, - 0xFEBE, 0xFEBF, 0xFEC0, 0xFEC1, 0xFEC2, 0xFEC3, 0xFEC4, 0xFEC5, - 0xFEC6, 0xFEC7, 0xFEC8, 0xFEC9, 0xFECA, 0xFECB, 0xFECC, 0xFECD, - 0xFECE, 0xFECF, 0xFED0, 0xFED1, 0xFED2, 0xFED3, 0xFED4, 0xFED5, - 0xFED6, 0xFED7, 0xFED8, 0xFED9, 0xFEDA, 0xFEDB, 0xFEDC, 0xFEDD, - 0xFEDE, 0xFEDF, 0xFEE0, 0xFEE1, 0xFEE2, 0xFEE3, 0xFEE4, 0xFEE5, - 0xFEE6, 0xFEE7, 0xFEE8, 0xFEE9, 0xFEEA, 0xFEEB, 0xFEEC, 0xFEED, - 0xFEEE, 0xFEEF, 0xFEF0, 0xFEF1, 0xFEF2, 0xFEF3, 0xFEF4, 0xFEF5, - 0xFEF6, 0xFEF7, 0xFEF8, 0xFEF9, 0xFEFA, 0xFEFB, 0xFEFC, 0xFEFD, - 0xFEFE, 0xFEFF, 0xFF00, 0xFF01, 0xFF02, 0xFF03, 0xFF04, 0xFF05, - 0xFF06, 0xFF07, 0xFF08, 0xFF09, 0xFF0A, 0xFF0B, 0xFF0C, 0xFF0D, - 0xFF0E, 0xFF0F, 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, - 0xFF16, 0xFF17, 0xFF18, 0xFF19, 0xFF1A, 0xFF1B, 0xFF1C, 0xFF1D, - 0xFF1E, 0xFF1F, 0xFF20, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, - 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, - 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, - 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF3B, 0xFF3C, 0xFF3D, - 0xFF3E, 0xFF3F, 0xFF40, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, - 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, - 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, - 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0xFF5B, 0xFF5C, 0xFF5D, - 0xFF5E, 0xFF5F, 0xFF60, 0xFF61, 0xFF62, 0xFF63, 0xFF64, 0xFF65, - 0xFF66, 0xFF67, 0xFF68, 0xFF69, 0xFF6A, 0xFF6B, 0xFF6C, 0xFF6D, - 0xFF6E, 0xFF6F, 0xFF70, 0xFF71, 0xFF72, 0xFF73, 0xFF74, 0xFF75, - 0xFF76, 0xFF77, 0xFF78, 0xFF79, 0xFF7A, 0xFF7B, 0xFF7C, 0xFF7D, - 0xFF7E, 0xFF7F, 0xFF80, 0xFF81, 0xFF82, 0xFF83, 0xFF84, 0xFF85, - 0xFF86, 0xFF87, 0xFF88, 0xFF89, 0xFF8A, 0xFF8B, 0xFF8C, 0xFF8D, - 0xFF8E, 0xFF8F, 0xFF90, 0xFF91, 0xFF92, 0xFF93, 0xFF94, 0xFF95, - 0xFF96, 0xFF97, 0xFF98, 0xFF99, 0xFF9A, 0xFF9B, 0xFF9C, 0xFF9D, - 0xFF9E, 0xFF9F, 0xFFA0, 0xFFA1, 0xFFA2, 0xFFA3, 0xFFA4, 0xFFA5, - 0xFFA6, 0xFFA7, 0xFFA8, 0xFFA9, 0xFFAA, 0xFFAB, 0xFFAC, 0xFFAD, - 0xFFAE, 0xFFAF, 0xFFB0, 0xFFB1, 0xFFB2, 0xFFB3, 0xFFB4, 0xFFB5, - 0xFFB6, 0xFFB7, 0xFFB8, 0xFFB9, 0xFFBA, 0xFFBB, 0xFFBC, 0xFFBD, - 0xFFBE, 0xFFBF, 0xFFC0, 0xFFC1, 0xFFC2, 0xFFC3, 0xFFC4, 0xFFC5, - 0xFFC6, 0xFFC7, 0xFFC8, 0xFFC9, 0xFFCA, 0xFFCB, 0xFFCC, 0xFFCD, - 0xFFCE, 0xFFCF, 0xFFD0, 0xFFD1, 0xFFD2, 0xFFD3, 0xFFD4, 0xFFD5, - 0xFFD6, 0xFFD7, 0xFFD8, 0xFFD9, 0xFFDA, 0xFFDB, 0xFFDC, 0xFFDD, - 0xFFDE, 0xFFDF, 0xFFE0, 0xFFE1, 0xFFE2, 0xFFE3, 0xFFE4, 0xFFE5, - 0xFFE6, 0xFFE7, 0xFFE8, 0xFFE9, 0xFFEA, 0xFFEB, 0xFFEC, 0xFFED, - 0xFFEE, 0xFFEF, 0xFFF0, 0xFFF1, 0xFFF2, 0xFFF3, 0xFFF4, 0xFFF5, - 0xFFF6, 0xFFF7, 0xFFF8, 0xFFF9, 0xFFFA, 0xFFFB, 0xFFFC, 0xFFFD, - 0xFFFE, 0xFFFF, -}; +#define E(level, skip) ((level * (1 << 7)) | (skip + 1)) +// The invalid entry has length 16 and is mapped to an invalid run. +#define INVALID_ENT HQ_AC_INVALID_RUN +#define INV 16 -static const uint8_t hq_ac_skips[NUM_HQ_AC_ENTRIES] = { - 0, 0, 0, 0, 64, 1, 1, 0, 0, 0, 0, 2, 2, 1, 1, 0, - 0, 0, 0, 3, 3, 4, 4, 0, 0, 0, 0, 5, 5, 6, 6, 2, - 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 7, 7, 8, 8, 9, - 9, 10, 10, 3, 3, 4, 4, 2, 2, 1, 1, 1, 1, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 12, 12, 13, - 13, 14, 14, 5, 5, 6, 6, 3, 3, 4, 4, 2, 2, 2, 2, 1, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 3, 3, 3, - 3, 2, 2, 1, 1, 1, 1, 1, 1, 0, 1, 6, 6, 4, 4, 3, - 3, 1, 1, 1, 1, 1, 1, 2, 3, 4, 5, 7, 7, 8, 8, 9, - 9, 10, 10, 7, 7, 8, 8, 4, 4, 3, 3, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 0, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +static const int16_t hq_ac_sym[NUM_HQ_AC_ENTRIES] = { + E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0), E( 0, 64), + E( 1, 1), E( -1, 1), E( 3, 0), E( -3, 0), E( 4, 0), + E( -4, 0), E( 1, 2), E( -1, 2), E( 2, 1), E( -2, 1), + E( 5, 0), E( -5, 0), E( 6, 0), E( -6, 0), E( 1, 3), + E( -1, 3), E( 1, 4), E( -1, 4), E( 7, 0), E( -7, 0), + E( 8, 0), E( -8, 0), E( 1, 5), E( -1, 5), E( 1, 6), + E( -1, 6), E( 2, 2), E( -2, 2), E( 3, 1), E( -3, 1), + E( 4, 1), E( -4, 1), E( 9, 0), E( -9, 0), E( 10, 0), + E( -10, 0), E( 11, 0), E( -11, 0), 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( 2, 3), E( -2, 3), E( 2, 4), E( -2, 4), + E( 3, 2), E( -3, 2), E( 5, 1), E( -5, 1), E( 6, 1), + E( -6, 1), E( 7, 1), E( -7, 1), 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( 1, 11), E( -1, 11), E( 1, 12), E( -1, 12), E( 1, 13), + E( -1, 13), E( 1, 14), E( -1, 14), E( 2, 5), E( -2, 5), + E( 2, 6), E( -2, 6), E( 3, 3), E( -3, 3), E( 3, 4), + E( -3, 4), E( 4, 2), E( -4, 2), E( 5, 2), E( -5, 2), + E( 8, 1), E( -8, 1), 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( 3, 5), E( -3, 5), E( 4, 3), + E( -4, 3), E( 5, 3), E( -5, 3), E( 6, 2), E( -6, 2), + E( 9, 1), E( -9, 1), E( 10, 1), E( -10, 1), E( 11, 1), + E( -11, 1), E( 0, 0), E( 0, 1), E( 3, 6), E( -3, 6), + E( 4, 4), E( -4, 4), E( 6, 3), E( -6, 3), E( 12, 1), + E( -12, 1), E( 13, 1), E( -13, 1), E( 14, 1), E( -14, 1), + E( 0, 2), E( 0, 3), E( 0, 4), E( 0, 5), E( 2, 7), + E( -2, 7), E( 2, 8), E( -2, 8), E( 2, 9), E( -2, 9), + E( 2, 10), E( -2, 10), E( 3, 7), E( -3, 7), E( 3, 8), + E( -3, 8), E( 5, 4), E( -5, 4), E( 7, 3), E( -7, 3), + 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( 11, 2), E( -11, 2), + E( 15, 1), E( -15, 1), E( 16, 1), E( -16, 1), E( 17, 1), + E( -17, 1), 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), INVALID_ENT, 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), }; -static const int16_t hq_ac_syms[NUM_HQ_AC_ENTRIES] = { - 1, -1, 2, -2, 0, 1, -1, 3, - -3, 4, -4, 1, -1, 2, -2, 5, - -5, 6, -6, 1, -1, 1, -1, 7, - -7, 8, -8, 1, -1, 1, -1, 2, - -2, 3, -3, 4, -4, 9, -9, 10, - -10, 11, -11, 1, -1, 1, -1, 1, - -1, 1, -1, 2, -2, 2, -2, 3, - -3, 5, -5, 6, -6, 7, -7, 12, - -12, 13, -13, 14, -14, 15, -15, 16, - -16, 17, -17, 1, -1, 1, -1, 1, - -1, 1, -1, 2, -2, 2, -2, 3, - -3, 3, -3, 4, -4, 5, -5, 8, - -8, 18, -18, 19, -19, 20, -20, 21, - -21, 22, -22, 3, -3, 4, -4, 5, - -5, 6, -6, 9, -9, 10, -10, 11, - -11, 0, 0, 3, -3, 4, -4, 6, - -6, 12, -12, 13, -13, 14, -14, 0, - 0, 0, 0, 2, -2, 2, -2, 2, - -2, 2, -2, 3, -3, 3, -3, 5, - -5, 7, -7, 7, -7, 8, -8, 9, - -9, 10, -10, 11, -11, 15, -15, 16, - -16, 17, -17, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, -1, 2, -2, - 3, -3, 4, -4, 5, -5, 6, -6, - 7, -7, 8, -8, 9, -9, 10, -10, - 11, -11, 12, -12, 13, -13, 14, -14, - 15, -15, 16, -16, 17, -17, 18, -18, - 19, -19, 20, -20, 21, -21, 22, -22, - 23, -23, 24, -24, 25, -25, 26, -26, - 27, -27, 28, -28, 29, -29, 30, -30, - 31, -31, 32, -32, 33, -33, 34, -34, - 35, -35, 36, -36, 37, -37, 38, -38, - 39, -39, 40, -40, 41, -41, 42, -42, - 43, -43, 44, -44, 45, -45, 46, -46, - 47, -47, 48, -48, 49, -49, 50, -50, - 51, -51, 52, -52, 53, -53, 54, -54, - 55, -55, 56, -56, 57, -57, 58, -58, - 59, -59, 60, -60, 61, -61, 62, -62, - 63, -63, 64, -64, 65, -65, 66, -66, - 67, -67, 68, -68, 69, -69, 70, -70, - 71, -71, 72, -72, 73, -73, 74, -74, - 75, -75, 76, -76, 77, -77, 78, -78, - 79, -79, 80, -80, 81, -81, 82, -82, - 83, -83, 84, -84, 85, -85, 86, -86, - 87, -87, 88, -88, 89, -89, 90, -90, - 91, -91, 92, -92, 93, -93, 94, -94, - 95, -95, 96, -96, 97, -97, 98, -98, - 99, -99, 100, -100, 101, -101, 102, -102, - 103, -103, 104, -104, 105, -105, 106, -106, - 107, -107, 108, -108, 109, -109, 110, -110, - 111, -111, 112, -112, 113, -113, 114, -114, - 115, -115, 116, -116, 117, -117, 118, -118, - 119, -119, 120, -120, 121, -121, 122, -122, - 123, -123, 124, -124, 125, -125, 126, -126, - 127, -127, 128, -128, 129, -129, 130, -130, - 131, -131, 132, -132, 133, -133, 134, -134, - 135, -135, 136, -136, 137, -137, 138, -138, - 139, -139, 140, -140, 141, -141, 142, -142, - 143, -143, 144, -144, 145, -145, 146, -146, - 147, -147, 148, -148, 149, -149, 150, -150, - 151, -151, 152, -152, 153, -153, 154, -154, - 155, -155, 156, -156, 157, -157, 158, -158, - 159, -159, 160, -160, 161, -161, 162, -162, - 163, -163, 164, -164, 165, -165, 166, -166, - 167, -167, 168, -168, 169, -169, 170, -170, - 171, -171, 172, -172, 173, -173, 174, -174, - 175, -175, 176, -176, 177, -177, 178, -178, - 179, -179, 180, -180, 181, -181, 182, -182, - 183, -183, 184, -184, 185, -185, 186, -186, - 187, -187, 188, -188, 189, -189, 190, -190, - 191, -191, 192, -192, 193, -193, 194, -194, - 195, -195, 196, -196, 197, -197, 198, -198, - 199, -199, 200, -200, 201, -201, 202, -202, - 203, -203, 204, -204, 205, -205, 206, -206, - 207, -207, 208, -208, 209, -209, 210, -210, - 211, -211, 212, -212, 213, -213, 214, -214, - 215, -215, 216, -216, 217, -217, 218, -218, - 219, -219, 220, -220, 221, -221, 222, -222, - 223, -223, 224, -224, 225, -225, 226, -226, - 227, -227, 228, -228, 229, -229, 230, -230, - 231, -231, 232, -232, 233, -233, 234, -234, - 235, -235, 236, -236, 237, -237, 238, -238, - 239, -239, 240, -240, 241, -241, 242, -242, - 243, -243, 244, -244, 245, -245, 246, -246, - 247, -247, 248, -248, 249, -249, 250, -250, - 251, -251, 252, -252, 253, -253, 254, -254, - 255, -255, +static const uint8_t hq_ac_lens[NUM_HQ_AC_ENTRIES] = { + 3, 3, 4, 4, 4, 5, 5, 5, 5, 5, 5, 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, 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, + 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, 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, 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, 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, 13, 13, 13, 13, 16, INV,16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, }; /* tables section - one per supported profile */ -- 2.45.2