videoeditorengine/mp3aacManipLib/AACGain/src/sbr_rom.cpp
author Mikael Laine <mikael.laine@ixonos.com>
Fri, 29 Jan 2010 14:08:33 +0200
changeset 0 951a5db380a0
permissions -rw-r--r--
Committing the Video Editor package under the Eclipse Public License

/*
* Copyright (c) 2010 Ixonos Plc.
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - Initial contribution
*
* Contributors:
* Ixonos Plc
*
* Description:
*
*/


/*
  \file
  \brief SBR ROM tables (constant data) $Revision: 1.1.1.1.4.3 $
*/

/**************************************************************************
  sbr_rom.cpp - SBR ROM tables (constant data).
 
  Author(s): Juha Ojanpera
  Copyright (c) 2004 by Nokia Research Center, Multimedia Technologies.
  *************************************************************************/

/*-- System Headers. --*/
#include "sbr_rom.h"

const uint32 bitArray[SBR_BIT_ARRAY_SIZE] = {128, 64, 32, 16, 8, 4, 2, 1};

const uint8 sbr_start_freq_16[16] = {16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31};
const uint8 sbr_start_freq_22[16] = {12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 28, 30};
const uint8 sbr_start_freq_24[16] = {11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 27, 29, 32};
const uint8 sbr_start_freq_32[16] = {10, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 27, 29, 32};
const uint8 sbr_start_freq_44[16] = { 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 23, 25, 28, 32};
const uint8 sbr_start_freq_48[16] = { 7,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 24, 27, 31};
const uint8 sbr_start_freq_64[16] = { 6,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 21, 23, 26, 30};
const uint8 sbr_start_freq_88[16] = { 5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 16, 18, 20, 23, 27, 31};


/* Lookup-table for inverse of integers */
const FLOAT sbr_invIntTable[INV_INT_TABLE_SIZE] = {
  0.0f,
  1.0f,
  1.0f / 2.0f,
  1.0f / 3.0f,
  1.0f / 4.0f,
  1.0f / 5.0f,
  1.0f / 6.0f,
  1.0f / 7.0f,
  1.0f / 8.0f,
  1.0f / 9.0f,
  1.0f / 10.0f,
  1.0f / 11.0f,
  1.0f / 12.0f,
  1.0f / 13.0f,
  1.0f / 14.0f,
  1.0f / 15.0f,
  1.0f / 16.0f,
  1.0f / 17.0f,
  1.0f / 18.0f,
  1.0f / 19.0f,
  1.0f / 20.0f,
  1.0f / 21.0f,
  1.0f / 22.0f,
  1.0f / 23.0f,
  1.0f / 24.0f,
  1.0f / 25.0f,
  1.0f / 26.0f,
  1.0f / 27.0f,
  1.0f / 28.0f,
  1.0f / 29.0f,
  1.0f / 30.0f,
  1.0f / 31.0f,
  1.0f / 32.0f,
  1.0f / 33.0f,
  1.0f / 34.0f,
  1.0f / 35.0f,
  1.0f / 36.0f,
  1.0f / 37.0f,
  1.0f / 38.0f,
  1.0f / 39.0f,
  1.0f / 40.0f,
  1.0f / 41.0f,
  1.0f / 42.0f,
  1.0f / 43.0f,
  1.0f / 44.0f,
  1.0f / 45.0f,
  1.0f / 46.0f,
  1.0f / 47.0f,
  1.0f / 48.0f,
  1.0f / 49.0f,
  1.0f / 50.0f,
  1.0f / 51.0f,
  1.0f / 52.0f,
  1.0f / 53.0f,
  1.0f / 54.0f
};

const FLOAT logDualisTable[LOG_DUALIS_TABLE_SIZE] = {
 -1.0f,               0.000000000000000f, 1.000000000000000f,
  1.584962500721156f, 2.000000000000000f, 2.321928094887363f,
  2.584962500721156f, 2.807354922057604f, 3.000000000000000f,
  3.169925001442313f, 3.321928094887363f, 3.459431618637297f,
  3.584962500721157f, 3.700439718141092f, 3.807354922057604f,
  3.906890595608519f, 4.000000000000000f, 4.087462841250340f,
  4.169925001442312f, 4.247927513443585f, 4.321928094887363f,
  4.392317422778761f, 4.459431618637297f, 4.523561956057013f,
  4.584962500721156f, 4.643856189774725f, 4.700439718141093f,
  4.754887502163469f, 4.807354922057605f, 4.857980995127572f,
  4.906890595608519f, 4.954196310386876f, 5.000000000000000f,
  5.044394119358453f, 5.087462841250340f, 5.129283016944966f,
  5.169925001442312f, 5.209453365628950f, 5.247927513443586f,
  5.285402218862249f, 5.321928094887363f, 5.357552004618084f,
  5.392317422778761f, 5.426264754702098f, 5.459431618637297f,
  5.491853096329675f, 5.523561956057013f, 5.554588851677638f,
  5.584962500721156f, 5.614709844115208f, 5.643856189774725f,
  5.672425341971496f, 5.700439718141093f, 5.727920454563200f,
  5.754887502163469f, 5.781359713524660f, 5.807354922057605f,
  5.832890014164742f, 5.857980995127573f, 5.882643049361842f,
  5.906890595608519f, 5.930737337562887f, 5.954196310386876f,
  5.977279923499917f, 6.000000000000000f,
};


/*
  \name FrameInfoDefaults

  Predefined envelope positions for the FIX-FIX case (static framing)
*/
//@{
//const FRAME_INFO sbr_frame_info1_16 = {0, 1, 1, 1};
//const FRAME_INFO sbr_frame_info2_16 = {0, 2, 3, 2};
//const FRAME_INFO sbr_frame_info4_16 = {0, 4, 15, 2};
//const FRAME_INFO *sbr_staticFrameInfo[3] = 
//{&sbr_frame_info1_16, &sbr_frame_info2_16, &sbr_frame_info4_16};
const FRAME_INFO sbr_staticFrameInfo[3] = 
{
    {0, 1, 1, 1},
    {0, 2, 3, 2},
    {0, 4, 15, 2}
};


//@}

/*
  Default values for the time before the first SBR header is read
*/
const SbrHeaderData sbr_defaultHeader =
{
  SBR_NOT_INITIALIZED,
  16,
  2,
  1024,
  44100,
  SBR_AMP_RES_3_0,
  5,
  0,
  0,
  SBR_FREQ_SCALE_DEF,
  SBR_ALTER_SCALE_DEF,
  SBR_NOISE_BANDS_DEF,
  SBR_LIMITER_BANDS_DEF,
  SBR_LIMITER_GAINS_DEF,
  SBR_INTERPOL_FREQ_DEF,
  SBR_SMOOTHING_LENGTH_DEF,

  NULL
};


/*
  \name SBR_HuffmanTables

  SBR Huffman Table Overview:        \n
                                     \n
 o envelope level,   1.5 dB:         \n
    1)  sbr_huffBook_EnvLevel10T[120][2]   \n
    2)  sbr_huffBook_EnvLevel10F[120][2]   \n
                                     \n
 o envelope balance, 1.5 dB:         \n
    3)  sbr_huffBook_EnvBalance10T[48][2]  \n
    4)  sbr_huffBook_EnvBalance10F[48][2]  \n
                                     \n
 o envelope level,   3.0 dB:         \n
    5)  sbr_huffBook_EnvLevel11T[62][2]    \n
    6)  sbr_huffBook_EnvLevel11F[62][2]    \n
                                     \n
 o envelope balance, 3.0 dB:         \n
    7)  sbr_huffBook_EnvBalance11T[24][2]  \n
    8)  sbr_huffBook_EnvBalance11F[24][2]  \n
                                     \n
 o noise level,      3.0 dB:         \n
    9)  sbr_huffBook_NoiseLevel11T[62][2]  \n
    -) (sbr_huffBook_EnvLevel11F[62][2] is used for freq dir)\n
                                     \n
 o noise balance,    3.0 dB:         \n
   10)  sbr_huffBook_NoiseBalance11T[24][2]\n
    -) (sbr_huffBook_EnvBalance11F[24][2] is used for freq dir)\n
                                     \n
  (1.5 dB is never used for noise)

*/
//@{
const int8 sbr_huffBook_EnvLevel10T[120][2] = {
  {   1,   2 },    { -64, -65 },    {   3,   4 },    { -63, -66 },
  {   5,   6 },    { -62, -67 },    {   7,   8 },    { -61, -68 },
  {   9,  10 },    { -60, -69 },    {  11,  12 },    { -59, -70 },
  {  13,  14 },    { -58, -71 },    {  15,  16 },    { -57, -72 },
  {  17,  18 },    { -73, -56 },    {  19,  21 },    { -74,  20 },
  { -55, -75 },    {  22,  26 },    {  23,  24 },    { -54, -76 },
  { -77,  25 },    { -53, -78 },    {  27,  34 },    {  28,  29 },
  { -52, -79 },    {  30,  31 },    { -80, -51 },    {  32,  33 },
  { -83, -82 },    { -81, -50 },    {  35,  57 },    {  36,  40 },
  {  37,  38 },    { -88, -84 },    { -48,  39 },    { -90, -85 },
  {  41,  46 },    {  42,  43 },    { -49, -87 },    {  44,  45 },
  { -89, -86 },    {-124,-123 },    {  47,  50 },    {  48,  49 },
  {-122,-121 },    {-120,-119 },    {  51,  54 },    {  52,  53 },
  {-118,-117 },    {-116,-115 },    {  55,  56 },    {-114,-113 },
  {-112,-111 },    {  58,  89 },    {  59,  74 },    {  60,  67 },
  {  61,  64 },    {  62,  63 },    {-110,-109 },    {-108,-107 },
  {  65,  66 },    {-106,-105 },    {-104,-103 },    {  68,  71 },
  {  69,  70 },    {-102,-101 },    {-100, -99 },    {  72,  73 },
  { -98, -97 },    { -96, -95 },    {  75,  82 },    {  76,  79 },
  {  77,  78 },    { -94, -93 },    { -92, -91 },    {  80,  81 },
  { -47, -46 },    { -45, -44 },    {  83,  86 },    {  84,  85 },
  { -43, -42 },    { -41, -40 },    {  87,  88 },    { -39, -38 },
  { -37, -36 },    {  90, 105 },    {  91,  98 },    {  92,  95 },
  {  93,  94 },    { -35, -34 },    { -33, -32 },    {  96,  97 },
  { -31, -30 },    { -29, -28 },    {  99, 102 },    { 100, 101 },
  { -27, -26 },    { -25, -24 },    { 103, 104 },    { -23, -22 },
  { -21, -20 },    { 106, 113 },    { 107, 110 },    { 108, 109 },
  { -19, -18 },    { -17, -16 },    { 111, 112 },    { -15, -14 },
  { -13, -12 },    { 114, 117 },    { 115, 116 },    { -11, -10 },
  {  -9,  -8 },    { 118, 119 },    {  -7,  -6 },    {  -5,  -4 }
};

const int8 sbr_huffBook_EnvLevel10F[120][2] = {
  {   1,   2 },    { -64, -65 },    {   3,   4 },    { -63, -66 },
  {   5,   6 },    { -67, -62 },    {   7,   8 },    { -68, -61 },
  {   9,  10 },    { -69, -60 },    {  11,  13 },    { -70,  12 },
  { -59, -71 },    {  14,  16 },    { -58,  15 },    { -72, -57 },
  {  17,  19 },    { -73,  18 },    { -56, -74 },    {  20,  23 },
  {  21,  22 },    { -55, -75 },    { -54, -53 },    {  24,  27 },
  {  25,  26 },    { -76, -52 },    { -77, -51 },    {  28,  31 },
  {  29,  30 },    { -50, -78 },    { -79, -49 },    {  32,  36 },
  {  33,  34 },    { -48, -47 },    { -80,  35 },    { -81, -82 },
  {  37,  47 },    {  38,  41 },    {  39,  40 },    { -83, -46 },
  { -45, -84 },    {  42,  44 },    { -85,  43 },    { -44, -43 },
  {  45,  46 },    { -88, -87 },    { -86, -90 },    {  48,  66 },
  {  49,  56 },    {  50,  53 },    {  51,  52 },    { -92, -42 },
  { -41, -39 },    {  54,  55 },    {-105, -89 },    { -38, -37 },
  {  57,  60 },    {  58,  59 },    { -94, -91 },    { -40, -36 },
  {  61,  63 },    { -20,  62 },    {-115,-110 },    {  64,  65 },
  {-108,-107 },    {-101, -97 },    {  67,  89 },    {  68,  75 },
  {  69,  72 },    {  70,  71 },    { -95, -93 },    { -34, -27 },
  {  73,  74 },    { -22, -17 },    { -16,-124 },    {  76,  82 },
  {  77,  79 },    {-123,  78 },    {-122,-121 },    {  80,  81 },
  {-120,-119 },    {-118,-117 },    {  83,  86 },    {  84,  85 },
  {-116,-114 },    {-113,-112 },    {  87,  88 },    {-111,-109 },
  {-106,-104 },    {  90, 105 },    {  91,  98 },    {  92,  95 },
  {  93,  94 },    {-103,-102 },    {-100, -99 },    {  96,  97 },
  { -98, -96 },    { -35, -33 },    {  99, 102 },    { 100, 101 },
  { -32, -31 },    { -30, -29 },    { 103, 104 },    { -28, -26 },
  { -25, -24 },    { 106, 113 },    { 107, 110 },    { 108, 109 },
  { -23, -21 },    { -19, -18 },    { 111, 112 },    { -15, -14 },
  { -13, -12 },    { 114, 117 },    { 115, 116 },    { -11, -10 },
  {  -9,  -8 },    { 118, 119 },    {  -7,  -6 },    {  -5,  -4 }
};

const int8 sbr_huffBook_EnvBalance10T[48][2] = {
  { -64,   1 },    { -63,   2 },    { -65,   3 },    { -62,   4 },
  { -66,   5 },    { -61,   6 },    { -67,   7 },    { -60,   8 },
  { -68,   9 },    {  10,  11 },    { -69, -59 },    {  12,  13 },
  { -70, -58 },    {  14,  28 },    {  15,  21 },    {  16,  18 },
  { -57,  17 },    { -71, -56 },    {  19,  20 },    { -88, -87 },
  { -86, -85 },    {  22,  25 },    {  23,  24 },    { -84, -83 },
  { -82, -81 },    {  26,  27 },    { -80, -79 },    { -78, -77 },
  {  29,  36 },    {  30,  33 },    {  31,  32 },    { -76, -75 },
  { -74, -73 },    {  34,  35 },    { -72, -55 },    { -54, -53 },
  {  37,  41 },    {  38,  39 },    { -52, -51 },    { -50,  40 },
  { -49, -48 },    {  42,  45 },    {  43,  44 },    { -47, -46 },
  { -45, -44 },    {  46,  47 },    { -43, -42 },    { -41, -40 }
};

const int8 sbr_huffBook_EnvBalance10F[48][2] = {
  { -64,   1 },    { -65,   2 },    { -63,   3 },    { -66,   4 },
  { -62,   5 },    { -61,   6 },    { -67,   7 },    { -68,   8 },
  { -60,   9 },    {  10,  11 },    { -69, -59 },    { -70,  12 },
  { -58,  13 },    {  14,  17 },    { -71,  15 },    { -57,  16 },
  { -56, -73 },    {  18,  32 },    {  19,  25 },    {  20,  22 },
  { -72,  21 },    { -88, -87 },    {  23,  24 },    { -86, -85 },
  { -84, -83 },    {  26,  29 },    {  27,  28 },    { -82, -81 },
  { -80, -79 },    {  30,  31 },    { -78, -77 },    { -76, -75 },
  {  33,  40 },    {  34,  37 },    {  35,  36 },    { -74, -55 },
  { -54, -53 },    {  38,  39 },    { -52, -51 },    { -50, -49 },
  {  41,  44 },    {  42,  43 },    { -48, -47 },    { -46, -45 },
  {  45,  46 },    { -44, -43 },    { -42,  47 },    { -41, -40 }
};

const int8 sbr_huffBook_EnvLevel11T[62][2] = {
  { -64,   1 },    { -65,   2 },    { -63,   3 },    { -66,   4 },
  { -62,   5 },    { -67,   6 },    { -61,   7 },    { -68,   8 },
  { -60,   9 },    {  10,  11 },    { -69, -59 },    {  12,  14 },
  { -70,  13 },    { -71, -58 },    {  15,  18 },    {  16,  17 },
  { -72, -57 },    { -73, -74 },    {  19,  22 },    { -56,  20 },
  { -55,  21 },    { -54, -77 },    {  23,  31 },    {  24,  25 },
  { -75, -76 },    {  26,  27 },    { -78, -53 },    {  28,  29 },
  { -52, -95 },    { -94,  30 },    { -93, -92 },    {  32,  47 },
  {  33,  40 },    {  34,  37 },    {  35,  36 },    { -91, -90 },
  { -89, -88 },    {  38,  39 },    { -87, -86 },    { -85, -84 },
  {  41,  44 },    {  42,  43 },    { -83, -82 },    { -81, -80 },
  {  45,  46 },    { -79, -51 },    { -50, -49 },    {  48,  55 },
  {  49,  52 },    {  50,  51 },    { -48, -47 },    { -46, -45 },
  {  53,  54 },    { -44, -43 },    { -42, -41 },    {  56,  59 },
  {  57,  58 },    { -40, -39 },    { -38, -37 },    {  60,  61 },
  { -36, -35 },    { -34, -33 }
};

const int8 sbr_huffBook_EnvLevel11F[62][2] = {
  { -64,   1 },    { -65,   2 },    { -63,   3 },    { -66,   4 },
  { -62,   5 },    { -67,   6 },    {   7,   8 },    { -61, -68 },
  {   9,  10 },    { -60, -69 },    {  11,  12 },    { -59, -70 },
  {  13,  14 },    { -58, -71 },    {  15,  16 },    { -57, -72 },
  {  17,  19 },    { -56,  18 },    { -55, -73 },    {  20,  24 },
  {  21,  22 },    { -74, -54 },    { -53,  23 },    { -75, -76 },
  {  25,  30 },    {  26,  27 },    { -52, -51 },    {  28,  29 },
  { -77, -79 },    { -50, -49 },    {  31,  39 },    {  32,  35 },
  {  33,  34 },    { -78, -46 },    { -82, -88 },    {  36,  37 },
  { -83, -48 },    { -47,  38 },    { -86, -85 },    {  40,  47 },
  {  41,  44 },    {  42,  43 },    { -80, -44 },    { -43, -42 },
  {  45,  46 },    { -39, -87 },    { -84, -40 },    {  48,  55 },
  {  49,  52 },    {  50,  51 },    { -95, -94 },    { -93, -92 },
  {  53,  54 },    { -91, -90 },    { -89, -81 },    {  56,  59 },
  {  57,  58 },    { -45, -41 },    { -38, -37 },    {  60,  61 },
  { -36, -35 },    { -34, -33 }
};

const int8 sbr_huffBook_EnvBalance11T[24][2] = {
  { -64,   1 },    { -63,   2 },    { -65,   3 },    { -66,   4 },
  { -62,   5 },    { -61,   6 },    { -67,   7 },    { -68,   8 },
  { -60,   9 },    {  10,  16 },    {  11,  13 },    { -69,  12 },
  { -76, -75 },    {  14,  15 },    { -74, -73 },    { -72, -71 },
  {  17,  20 },    {  18,  19 },    { -70, -59 },    { -58, -57 },
  {  21,  22 },    { -56, -55 },    { -54,  23 },    { -53, -52 }
};

const int8 sbr_huffBook_EnvBalance11F[24][2] = {
  { -64,   1 },    { -65,   2 },    { -63,   3 },    { -66,   4 },
  { -62,   5 },    { -61,   6 },    { -67,   7 },    { -68,   8 },
  { -60,   9 },    {  10,  13 },    { -69,  11 },    { -59,  12 },
  { -58, -76 },    {  14,  17 },    {  15,  16 },    { -75, -74 },
  { -73, -72 },    {  18,  21 },    {  19,  20 },    { -71, -70 },
  { -57, -56 },    {  22,  23 },    { -55, -54 },    { -53, -52 }
};

const int8 sbr_huffBook_NoiseLevel11T[62][2] = {
  { -64,   1 },    { -63,   2 },    { -65,   3 },    { -66,   4 },
  { -62,   5 },    { -67,   6 },    {   7,   8 },    { -61, -68 },
  {   9,  30 },    {  10,  15 },    { -60,  11 },    { -69,  12 },
  {  13,  14 },    { -59, -53 },    { -95, -94 },    {  16,  23 },
  {  17,  20 },    {  18,  19 },    { -93, -92 },    { -91, -90 },
  {  21,  22 },    { -89, -88 },    { -87, -86 },    {  24,  27 },
  {  25,  26 },    { -85, -84 },    { -83, -82 },    {  28,  29 },
  { -81, -80 },    { -79, -78 },    {  31,  46 },    {  32,  39 },
  {  33,  36 },    {  34,  35 },    { -77, -76 },    { -75, -74 },
  {  37,  38 },    { -73, -72 },    { -71, -70 },    {  40,  43 },
  {  41,  42 },    { -58, -57 },    { -56, -55 },    {  44,  45 },
  { -54, -52 },    { -51, -50 },    {  47,  54 },    {  48,  51 },
  {  49,  50 },    { -49, -48 },    { -47, -46 },    {  52,  53 },
  { -45, -44 },    { -43, -42 },    {  55,  58 },    {  56,  57 },
  { -41, -40 },    { -39, -38 },    {  59,  60 },    { -37, -36 },
  { -35,  61 },    { -34, -33 }
};

const int8 sbr_huffBook_NoiseBalance11T[24][2] = {
  { -64,   1 },    { -65,   2 },    { -63,   3 },    {   4,   9 },
  { -66,   5 },    { -62,   6 },    {   7,   8 },    { -76, -75 },
  { -74, -73 },    {  10,  17 },    {  11,  14 },    {  12,  13 },
  { -72, -71 },    { -70, -69 },    {  15,  16 },    { -68, -67 },
  { -61, -60 },    {  18,  21 },    {  19,  20 },    { -59, -58 },
  { -57, -56 },    {  22,  23 },    { -55, -54 },    { -53, -52 }
};
//@}

const int32 v_Huff_envelopeLevelC10T[121] = {
  0x0003FFD6, 0x0003FFD7, 0x0003FFD8, 0x0003FFD9, 0x0003FFDA, 0x0003FFDB, 0x0007FFB8, 0x0007FFB9,
  0x0007FFBA, 0x0007FFBB, 0x0007FFBC, 0x0007FFBD, 0x0007FFBE, 0x0007FFBF, 0x0007FFC0, 0x0007FFC1,
  0x0007FFC2, 0x0007FFC3, 0x0007FFC4, 0x0007FFC5, 0x0007FFC6, 0x0007FFC7, 0x0007FFC8, 0x0007FFC9,
  0x0007FFCA, 0x0007FFCB, 0x0007FFCC, 0x0007FFCD, 0x0007FFCE, 0x0007FFCF, 0x0007FFD0, 0x0007FFD1,
  0x0007FFD2, 0x0007FFD3, 0x0001FFE6, 0x0003FFD4, 0x0000FFF0, 0x0001FFE9, 0x0003FFD5, 0x0001FFE7,
  0x0000FFF1, 0x0000FFEC, 0x0000FFED, 0x0000FFEE, 0x00007FF4, 0x00003FF9, 0x00003FF7, 0x00001FFA,
  0x00001FF9, 0x00000FFB, 0x000007FC, 0x000003FC, 0x000001FD, 0x000000FD, 0x0000007D, 0x0000003D,
  0x0000001D, 0x0000000D, 0x00000005, 0x00000001, 0x00000000, 0x00000004, 0x0000000C, 0x0000001C,
  0x0000003C, 0x0000007C, 0x000000FC, 0x000001FC, 0x000003FD, 0x00000FFA, 0x00001FF8, 0x00003FF6,
  0x00003FF8, 0x00007FF5, 0x0000FFEF, 0x0001FFE8, 0x0000FFF2, 0x0007FFD4, 0x0007FFD5, 0x0007FFD6,
  0x0007FFD7, 0x0007FFD8, 0x0007FFD9, 0x0007FFDA, 0x0007FFDB, 0x0007FFDC, 0x0007FFDD, 0x0007FFDE,
  0x0007FFDF, 0x0007FFE0, 0x0007FFE1, 0x0007FFE2, 0x0007FFE3, 0x0007FFE4, 0x0007FFE5, 0x0007FFE6,
  0x0007FFE7, 0x0007FFE8, 0x0007FFE9, 0x0007FFEA, 0x0007FFEB, 0x0007FFEC, 0x0007FFED, 0x0007FFEE,
  0x0007FFEF, 0x0007FFF0, 0x0007FFF1, 0x0007FFF2, 0x0007FFF3, 0x0007FFF4, 0x0007FFF5, 0x0007FFF6,
  0x0007FFF7, 0x0007FFF8, 0x0007FFF9, 0x0007FFFA, 0x0007FFFB, 0x0007FFFC, 0x0007FFFD, 0x0007FFFE,
  0x0007FFFF
};

const uint8 v_Huff_envelopeLevelL10T[121] = {
  0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000013, 0x00000013,
  0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013,
  0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013,
  0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013,
  0x00000013, 0x00000013, 0x00000011, 0x00000012, 0x00000010, 0x00000011, 0x00000012, 0x00000011,
  0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x0000000F, 0x0000000E, 0x0000000E, 0x0000000D,
  0x0000000D, 0x0000000C, 0x0000000B, 0x0000000A, 0x00000009, 0x00000008, 0x00000007, 0x00000006,
  0x00000005, 0x00000004, 0x00000003, 0x00000002, 0x00000002, 0x00000003, 0x00000004, 0x00000005,
  0x00000006, 0x00000007, 0x00000008, 0x00000009, 0x0000000A, 0x0000000C, 0x0000000D, 0x0000000E,
  0x0000000E, 0x0000000F, 0x00000010, 0x00000011, 0x00000010, 0x00000013, 0x00000013, 0x00000013,
  0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013,
  0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013,
  0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013,
  0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013,
  0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013,
  0x00000013
};

const int32 v_Huff_envelopeLevelC10F[121] = {
  0x0007FFE7, 0x0007FFE8, 0x000FFFD2, 0x000FFFD3, 0x000FFFD4, 0x000FFFD5, 0x000FFFD6, 0x000FFFD7,
  0x000FFFD8, 0x0007FFDA, 0x000FFFD9, 0x000FFFDA, 0x000FFFDB, 0x000FFFDC, 0x0007FFDB, 0x000FFFDD,
  0x0007FFDC, 0x0007FFDD, 0x000FFFDE, 0x0003FFE4, 0x000FFFDF, 0x000FFFE0, 0x000FFFE1, 0x0007FFDE,
  0x000FFFE2, 0x000FFFE3, 0x000FFFE4, 0x0007FFDF, 0x000FFFE5, 0x0007FFE0, 0x0003FFE8, 0x0007FFE1,
  0x0003FFE0, 0x0003FFE9, 0x0001FFEF, 0x0003FFE5, 0x0001FFEC, 0x0001FFED, 0x0001FFEE, 0x0000FFF4,
  0x0000FFF3, 0x0000FFF0, 0x00007FF7, 0x00007FF6, 0x00003FFA, 0x00001FFA, 0x00001FF9, 0x00000FFA,
  0x00000FF8, 0x000007F9, 0x000003FB, 0x000001FC, 0x000001FA, 0x000000FB, 0x0000007C, 0x0000003C,
  0x0000001C, 0x0000000C, 0x00000005, 0x00000001, 0x00000000, 0x00000004, 0x0000000D, 0x0000001D,
  0x0000003D, 0x000000FA, 0x000000FC, 0x000001FB, 0x000003FA, 0x000007F8, 0x000007FA, 0x000007FB,
  0x00000FF9, 0x00000FFB, 0x00001FF8, 0x00001FFB, 0x00003FF8, 0x00003FF9, 0x0000FFF1, 0x0000FFF2,
  0x0001FFEA, 0x0001FFEB, 0x0003FFE1, 0x0003FFE2, 0x0003FFEA, 0x0003FFE3, 0x0003FFE6, 0x0003FFE7,
  0x0003FFEB, 0x000FFFE6, 0x0007FFE2, 0x000FFFE7, 0x000FFFE8, 0x000FFFE9, 0x000FFFEA, 0x000FFFEB,
  0x000FFFEC, 0x0007FFE3, 0x000FFFED, 0x000FFFEE, 0x000FFFEF, 0x000FFFF0, 0x0007FFE4, 0x000FFFF1,
  0x0003FFEC, 0x000FFFF2, 0x000FFFF3, 0x0007FFE5, 0x0007FFE6, 0x000FFFF4, 0x000FFFF5, 0x000FFFF6,
  0x000FFFF7, 0x000FFFF8, 0x000FFFF9, 0x000FFFFA, 0x000FFFFB, 0x000FFFFC, 0x000FFFFD, 0x000FFFFE,
  0x000FFFFF
};

const uint8 v_Huff_envelopeLevelL10F[121] = {
  0x00000013, 0x00000013, 0x00000014, 0x00000014, 0x00000014, 0x00000014, 0x00000014, 0x00000014,
  0x00000014, 0x00000013, 0x00000014, 0x00000014, 0x00000014, 0x00000014, 0x00000013, 0x00000014,
  0x00000013, 0x00000013, 0x00000014, 0x00000012, 0x00000014, 0x00000014, 0x00000014, 0x00000013,
  0x00000014, 0x00000014, 0x00000014, 0x00000013, 0x00000014, 0x00000013, 0x00000012, 0x00000013,
  0x00000012, 0x00000012, 0x00000011, 0x00000012, 0x00000011, 0x00000011, 0x00000011, 0x00000010,
  0x00000010, 0x00000010, 0x0000000F, 0x0000000F, 0x0000000E, 0x0000000D, 0x0000000D, 0x0000000C,
  0x0000000C, 0x0000000B, 0x0000000A, 0x00000009, 0x00000009, 0x00000008, 0x00000007, 0x00000006,
  0x00000005, 0x00000004, 0x00000003, 0x00000002, 0x00000002, 0x00000003, 0x00000004, 0x00000005,
  0x00000006, 0x00000008, 0x00000008, 0x00000009, 0x0000000A, 0x0000000B, 0x0000000B, 0x0000000B,
  0x0000000C, 0x0000000C, 0x0000000D, 0x0000000D, 0x0000000E, 0x0000000E, 0x00000010, 0x00000010,
  0x00000011, 0x00000011, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
  0x00000012, 0x00000014, 0x00000013, 0x00000014, 0x00000014, 0x00000014, 0x00000014, 0x00000014,
  0x00000014, 0x00000013, 0x00000014, 0x00000014, 0x00000014, 0x00000014, 0x00000013, 0x00000014,
  0x00000012, 0x00000014, 0x00000014, 0x00000013, 0x00000013, 0x00000014, 0x00000014, 0x00000014,
  0x00000014, 0x00000014, 0x00000014, 0x00000014, 0x00000014, 0x00000014, 0x00000014, 0x00000014,
  0x00000014
};

const int32 bookSbrEnvBalanceC10T[49] = {
  0x0000FFE4, 0x0000FFE5, 0x0000FFE6, 0x0000FFE7, 0x0000FFE8, 0x0000FFE9, 0x0000FFEA,
  0x0000FFEB, 0x0000FFEC, 0x0000FFED, 0x0000FFEE, 0x0000FFEF, 0x0000FFF0, 0x0000FFF1,
  0x0000FFF2, 0x0000FFF3, 0x0000FFF4, 0x0000FFE2, 0x00000FFC, 0x000007FC, 0x000001FE,
  0x0000007E, 0x0000001E, 0x00000006, 0x00000000, 0x00000002, 0x0000000E, 0x0000003E,
  0x000000FE, 0x000007FD, 0x00000FFD, 0x00007FF0, 0x0000FFE3, 0x0000FFF5, 0x0000FFF6,
  0x0000FFF7, 0x0000FFF8, 0x0000FFF9, 0x0000FFFA, 0x0001FFF6, 0x0001FFF7, 0x0001FFF8,
  0x0001FFF9, 0x0001FFFA, 0x0001FFFB, 0x0001FFFC, 0x0001FFFD, 0x0001FFFE, 0x0001FFFF
};

const uint8 bookSbrEnvBalanceL10T[49] = {
  0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 
  0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010,
  0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x0000000C, 0x0000000B, 0x00000009,
  0x00000007, 0x00000005, 0x00000003, 0x00000001, 0x00000002, 0x00000004, 0x00000006,
  0x00000008, 0x0000000B, 0x0000000C, 0x0000000F, 0x00000010, 0x00000010, 0x00000010,
  0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000011, 0x00000011, 0x00000011,
  0x00000011, 0x00000011, 0x00000011, 0x00000011, 0x00000011, 0x00000011, 0x00000011
};

const int32 bookSbrEnvBalanceC10F[49] = {
  0x0003FFE2, 0x0003FFE3, 0x0003FFE4, 0x0003FFE5, 0x0003FFE6, 0x0003FFE7,0x0003FFE8,
  0x0003FFE9, 0x0003FFEA, 0x0003FFEB, 0x0003FFEC, 0x0003FFED, 0x0003FFEE, 0x0003FFEF,
  0x0003FFF0, 0x0000FFF7, 0x0001FFF0, 0x00003FFC, 0x000007FE, 0x000007FC, 0x000000FE,
  0x0000007E, 0x0000000E, 0x00000002, 0x00000000, 0x00000006, 0x0000001E, 0x0000003E,
  0x000001FE, 0x000007FD, 0x00000FFE, 0x00007FFA, 0x0000FFF6, 0x0003FFF1, 0x0003FFF2,
  0x0003FFF3, 0x0003FFF4, 0x0003FFF5, 0x0003FFF6, 0x0003FFF7, 0x0003FFF8, 0x0003FFF9,
  0x0003FFFA, 0x0003FFFB, 0x0003FFFC, 0x0003FFFD, 0x0003FFFE, 0x0007FFFE, 0x0007FFFF
};

const uint8 bookSbrEnvBalanceL10F[49] = {
  0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
  0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
  0x00000012, 0x00000010, 0x00000011, 0x0000000E, 0x0000000B, 0x0000000B, 0x00000008,
  0x00000007, 0x00000004, 0x00000002, 0x00000001, 0x00000003, 0x00000005, 0x00000006,
  0x00000009, 0x0000000B, 0x0000000C, 0x0000000F, 0x00000010, 0x00000012, 0x00000012,
  0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012,
  0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0x00000013, 0x00000013
};

const int32 v_Huff_envelopeLevelC11T[63] = {
  0x0003FFED, 0x0003FFEE, 0x0007FFDE, 0x0007FFDF, 0x0007FFE0, 0x0007FFE1, 0x0007FFE2,
  0x0007FFE3, 0x0007FFE4, 0x0007FFE5, 0x0007FFE6, 0x0007FFE7, 0x0007FFE8, 0x0007FFE9,
  0x0007FFEA, 0x0007FFEB, 0x0007FFEC, 0x0001FFF4, 0x0000FFF7, 0x0000FFF9, 0x0000FFF8,
  0x00003FFB, 0x00003FFA, 0x00003FF8, 0x00001FFA, 0x00000FFC, 0x000007FC, 0x000000FE,
  0x0000003E, 0x0000000E, 0x00000002, 0x00000000, 0x00000006, 0x0000001E, 0x0000007E,
  0x000001FE, 0x000007FD, 0x00001FFB, 0x00003FF9, 0x00003FFC, 0x00007FFA, 0x0000FFF6,
  0x0001FFF5, 0x0003FFEC, 0x0007FFED, 0x0007FFEE, 0x0007FFEF, 0x0007FFF0, 0x0007FFF1,
  0x0007FFF2, 0x0007FFF3, 0x0007FFF4, 0x0007FFF5, 0x0007FFF6, 0x0007FFF7, 0x0007FFF8,
  0x0007FFF9, 0x0007FFFA, 0x0007FFFB, 0x0007FFFC, 0x0007FFFD, 0x0007FFFE, 0x0007FFFF
};

const uint8 v_Huff_envelopeLevelL11T[63] = {
  0x00000012, 0x00000012, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013,
  0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013,
  0x00000013, 0x00000013, 0x00000013, 0x00000011, 0x00000010, 0x00000010, 0x00000010,
  0x0000000E, 0x0000000E, 0x0000000E, 0x0000000D, 0x0000000C, 0x0000000B, 0x00000008,
  0x00000006, 0x00000004, 0x00000002, 0x00000001, 0x00000003, 0x00000005, 0x00000007,
  0x00000009, 0x0000000B, 0x0000000D, 0x0000000E, 0x0000000E, 0x0000000F, 0x00000010,
  0x00000011, 0x00000012, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013,
  0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013,
  0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000013
};

const int32 v_Huff_envelopeLevelC11F[63] = {
  0x000FFFF0, 0x000FFFF1, 0x000FFFF2, 0x000FFFF3, 0x000FFFF4, 0x000FFFF5, 0x000FFFF6,
  0x0003FFF3, 0x0007FFF5, 0x0007FFEE, 0x0007FFEF, 0x0007FFF6, 0x0003FFF4, 0x0003FFF2,
  0x000FFFF7, 0x0007FFF0, 0x0001FFF5, 0x0003FFF0, 0x0001FFF4, 0x0000FFF7, 0x0000FFF6,
  0x00007FF8, 0x00003FFB, 0x00000FFD, 0x000007FD, 0x000003FD, 0x000001FD, 0x000000FD,
  0x0000003E, 0x0000000E, 0x00000002, 0x00000000, 0x00000006, 0x0000001E, 0x000000FC,
  0x000001FC, 0x000003FC, 0x000007FC, 0x00000FFC, 0x00001FFC, 0x00003FFA, 0x00007FF9,
  0x00007FFA, 0x0000FFF8, 0x0000FFF9, 0x0001FFF6, 0x0001FFF7, 0x0003FFF5, 0x0003FFF6,
  0x0003FFF1, 0x000FFFF8, 0x0007FFF1, 0x0007FFF2, 0x0007FFF3, 0x000FFFF9, 0x0007FFF7,
  0x0007FFF4, 0x000FFFFA, 0x000FFFFB, 0x000FFFFC, 0x000FFFFD, 0x000FFFFE, 0x000FFFFF
};

const uint8 v_Huff_envelopeLevelL11F[63] = {
  0x00000014, 0x00000014, 0x00000014, 0x00000014, 0x00000014, 0x00000014, 0x00000014,
  0x00000012, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0x00000012, 0x00000012,
  0x00000014, 0x00000013, 0x00000011, 0x00000012, 0x00000011, 0x00000010, 0x00000010,
  0x0000000F, 0x0000000E, 0x0000000C, 0x0000000B, 0x0000000A, 0x00000009, 0x00000008,
  0x00000006, 0x00000004, 0x00000002, 0x00000001, 0x00000003, 0x00000005, 0x00000008,
  0x00000009, 0x0000000A, 0x0000000B, 0x0000000C, 0x0000000D, 0x0000000E, 0x0000000F,
  0x0000000F, 0x00000010, 0x00000010, 0x00000011, 0x00000011, 0x00000012, 0x00000012,
  0x00000012, 0x00000014, 0x00000013, 0x00000013, 0x00000013, 0x00000014, 0x00000013,
  0x00000013, 0x00000014, 0x00000014, 0x00000014, 0x00000014, 0x00000014, 0x00000014
};

const uint16 bookSbrEnvBalanceC11T[25] = {
  0x00001FF2, 0x00001FF3, 0x00001FF4, 0x00001FF5, 0x00001FF6, 0x00001FF7, 0x00001FF8,
  0x00000FF8, 0x000000FE, 0x0000007E, 0x0000000E, 0x00000006, 0x00000000, 0x00000002,
  0x0000001E, 0x0000003E, 0x000001FE, 0x00001FF9, 0x00001FFA, 0x00001FFB, 0x00001FFC,
  0x00001FFD, 0x00001FFE, 0x00003FFE, 0x00003FFF
};

const uint8 bookSbrEnvBalanceL11T[25] = {
  0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D,
  0x0000000C, 0x00000008, 0x00000007, 0x00000004, 0x00000003, 0x00000001, 0x00000002,
  0x00000005, 0x00000006, 0x00000009, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D,
  0x0000000D, 0x0000000D, 0x0000000E, 0x0000000E
};

const uint16 bookSbrEnvBalanceC11F[25] = {
  0x00001FF7, 0x00001FF8, 0x00001FF9, 0x00001FFA, 0x00001FFB, 0x00003FF8, 0x00003FF9,
  0x000007FC, 0x000000FE, 0x0000007E, 0x0000000E, 0x00000002, 0x00000000, 0x00000006,
  0x0000001E, 0x0000003E, 0x000001FE, 0x00000FFA, 0x00001FF6, 0x00003FFA, 0x00003FFB,
  0x00003FFC, 0x00003FFD, 0x00003FFE, 0x00003FFF
};

const uint8 bookSbrEnvBalanceL11F[25] = {
  0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000E, 0x0000000E,
  0x0000000B, 0x00000008, 0x00000007, 0x00000004, 0x00000002, 0x00000001, 0x00000003,
  0x00000005, 0x00000006, 0x00000009, 0x0000000C, 0x0000000D, 0x0000000E, 0x0000000E,
  0x0000000E, 0x0000000E, 0x0000000E, 0x0000000E
};

const uint16 v_Huff_NoiseLevelC11T[63] = {
  0x00001FCE, 0x00001FCF, 0x00001FD0, 0x00001FD1, 0x00001FD2, 0x00001FD3, 0x00001FD4,
  0x00001FD5, 0x00001FD6, 0x00001FD7, 0x00001FD8, 0x00001FD9, 0x00001FDA, 0x00001FDB,
  0x00001FDC, 0x00001FDD, 0x00001FDE, 0x00001FDF, 0x00001FE0, 0x00001FE1, 0x00001FE2,
  0x00001FE3, 0x00001FE4, 0x00001FE5, 0x00001FE6, 0x00001FE7, 0x000007F2, 0x000000FD,
  0x0000003E, 0x0000000E, 0x00000006, 0x00000000, 0x00000002, 0x0000001E, 0x000000FC,
  0x000003F8, 0x00001FCC, 0x00001FE8, 0x00001FE9, 0x00001FEA, 0x00001FEB, 0x00001FEC,
  0x00001FCD, 0x00001FED, 0x00001FEE, 0x00001FEF, 0x00001FF0, 0x00001FF1, 0x00001FF2,
  0x00001FF3, 0x00001FF4, 0x00001FF5, 0x00001FF6, 0x00001FF7, 0x00001FF8, 0x00001FF9,
  0x00001FFA, 0x00001FFB, 0x00001FFC, 0x00001FFD, 0x00001FFE, 0x00003FFE, 0x00003FFF
};

const uint8 v_Huff_NoiseLevelL11T[63] = {
  0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D,
  0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D,
  0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D,
  0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000B, 0x00000008,
  0x00000006, 0x00000004, 0x00000003, 0x00000001, 0x00000002, 0x00000005, 0x00000008,
  0x0000000A, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 
  0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 
  0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 
  0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000D, 0x0000000E, 0x0000000E
};

const uint16 bookSbrNoiseBalanceC11T[25] = {
  0x000000EC, 0x000000ED, 0x000000EE, 0x000000EF, 0x000000F0, 0x000000F1, 0x000000F2,
  0x000000F3, 0x000000F4, 0x000000F5, 0x0000001C, 0x00000002, 0x00000000, 0x00000006,
  0x0000003A, 0x000000F6, 0x000000F7, 0x000000F8, 0x000000F9, 0x000000FA, 0x000000FB,
  0x000000FC, 0x000000FD, 0x000000FE, 0x000000FF
};

const uint8 bookSbrNoiseBalanceL11T[25] = {
  0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008,
  0x00000008, 0x00000008, 0x00000008, 0x00000005, 0x00000002, 0x00000001, 0x00000003,
  0x00000006, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008,
  0x00000008, 0x00000008, 0x00000008, 0x00000008
};