31 #define FREQ_BITS  14                      // bits used by frequency counters 
   32 #define VALUE_BITS 18                      // bits used to represent the values 
   33 #define TOP_VALUE  ((1 << VALUE_BITS) - 1) // maximum value 
   34 #define FIRST_QTR  (TOP_VALUE / 4 + 1)     // first quarter of values maximum value 
   35 #define HALF       (2 * FIRST_QTR)         // first half of values maximum value 
   36 #define THIRD_QTR  (3 * FIRST_QTR)         // third quarter of values maximum value 
   38 #define LUT_BITS   (FREQ_BITS - 8)         // number of bits used to index lookup tables 
   39 #define LUT_SIZE   (1 << LUT_BITS)         // size of the lookup tables 
   40 #define LUT_BUFF   4                       // number of buffered lookup tables 
   46         16384, 16066, 15748, 15431, 15114, 14799, 14485, 14173, 13861, 13552,
 
   47         13243, 12939, 12635, 12336, 12038, 11745, 11452, 11161, 10870, 10586,
 
   48         10303, 10027,  9751,  9483,  9215,  8953,  8692,  8440,  8189,  7946,
 
   49          7704,  7472,  7240,  7008,  6776,  6554,  6333,  6122,  5912,  5711,
 
   50          5512,  5320,  5128,  4947,  4766,  4595,  4425,  4264,  4104,  3946,
 
   51          3788,  3640,  3493,  3355,  3218,  3090,  2963,  2842,  2721,  2609,
 
   52          2498,  2395,  2292,  2196,  2100,  2004,  1908,  1820,  1732,  1651,
 
   53          1570,  1497,  1424,  1355,  1287,  1223,  1161,  1100,  1044,   988,
 
   54           938,   888,   839,   790,   746,   702,   662,   623,   588,   553,
 
   55           520,   488,   459,   431,   405,   380,   357,   334,   311,   288,
 
   56           268,   248,   230,   213,   197,   182,   168,   154,   142,   130,
 
   57           119,   108,    99,    90,    81,    72,    64,    56,    49,    42,
 
   58            36,    30,    25,    20,    15,    11,     7,     3,     0
 
   61         16384, 16080, 15776, 15473, 15170, 14868, 14567, 14268, 13970, 13674,
 
   62         13378, 13086, 12794, 12505, 12218, 11936, 11654, 11373, 11092, 10818,
 
   63         10544, 10276, 10008,  9749,  9490,  9236,  8982,  8737,  8492,  8256,
 
   64          8020,  7792,  7564,  7336,  7108,  6888,  6669,  6459,  6249,  6050,
 
   65          5852,  5660,  5468,  5286,  5104,  4931,  4760,  4598,  4436,  4275,
 
   66          4115,  3965,  3816,  3674,  3534,  3403,  3272,  3147,  3023,  2907,
 
   67          2792,  2684,  2577,  2476,  2375,  2274,  2173,  2079,  1986,  1897,
 
   68          1810,  1724,  1645,  1567,  1493,  1419,  1351,  1284,  1222,  1161,
 
   69          1105,  1050,   995,   941,   891,   842,   797,   753,   713,   673,
 
   70           636,   599,   566,   533,   503,   473,   446,   419,   392,   365,
 
   71           340,   316,   294,   272,   253,   234,   216,   199,   184,   169,
 
   72           155,   142,   130,   118,   106,    95,    85,    75,    66,    57,
 
   73            49,    41,    34,    27,    21,    15,    10,     5,     0
 
   76         16384, 16092, 15801, 15510, 15219, 14930, 14641, 14355, 14069, 13785,
 
   77         13501, 13219, 12938, 12661, 12384, 12112, 11841, 11571, 11301, 11037,
 
   78         10773, 10514, 10256, 10005,  9754,  9508,  9263,  9025,  8787,  8557,
 
   79          8327,  8103,  7879,  7655,  7431,  7215,  7000,  6792,  6585,  6387,
 
   80          6190,  5998,  5807,  5625,  5445,  5272,  5100,  4937,  4774,  4613,
 
   81          4452,  4301,  4150,  4007,  3865,  3731,  3597,  3469,  3341,  3218,
 
   82          3099,  2981,  2869,  2758,  2652,  2546,  2440,  2334,  2234,  2134,
 
   83          2041,  1949,  1864,  1779,  1699,  1620,  1547,  1474,  1407,  1340,
 
   84          1278,  1217,  1157,  1097,  1043,   989,   940,   891,   846,   801,
 
   85           759,   718,   680,   643,   609,   575,   543,   511,   479,   447,
 
   86           418,   389,   363,   337,   314,   291,   270,   249,   230,   212,
 
   87           195,   179,   164,   149,   135,   121,   108,    96,    85,    74,
 
   88           64,     54,    45,    36,    28,    20,    13,     6,     0
 
   95         16384, 16104, 15825, 15546, 15268, 14991, 14714, 14439, 14164, 13891,
 
   96         13620, 13350, 13081, 12815, 12549, 12287, 12025, 11765, 11505, 11250,
 
   97         10996, 10746, 10497, 10254, 10011,  9772,  9534,  9303,  9072,  8848,
 
   98          8624,  8406,  8188,  7970,  7752,  7539,  7327,  7123,  6919,  6724,
 
   99          6529,  6339,  6150,  5970,  5790,  5618,  5446,  5282,  5119,  4957,
 
  100          4795,  4642,  4490,  4345,  4201,  4065,  3929,  3798,  3669,  3547,
 
  101          3425,  3310,  3196,  3086,  2976,  2866,  2756,  2650,  2545,  2447,
 
  102          2350,  2260,  2170,  2085,  2000,  1921,  1843,  1770,  1698,  1632,
 
  103          1566,  1501,  1436,  1376,  1316,  1261,  1207,  1157,  1108,  1061,
 
  104          1015,   973,   931,   893,   855,   819,   783,   747,   711,   677,
 
  105           644,   614,   584,   557,   530,   505,   480,   458,   436,   416,
 
  106           396,   378,   360,   343,   326,   310,   295,   281,   267,   255,
 
  107           243,   232,   221,   211,   201,   192,   183,   174,   166,   158,
 
  108           150,   142,   134,   126,   119,   112,   106,   100,    95,    90,
 
  109            85,    80,    76,    72,    69,    66,    63,    60,    57,    54,
 
  110            51,    48,    46,    44,    42,    40,    38,    36,    34,    33,
 
  111            32,    31,    30,    29,    28,    27,    26,    25,    24,    23,
 
  112            22,    21,    20,    19,    18,    17,    16,    15,    14,    13,
 
  113            12,    11,    10,     9,     8,     7,     6,     5,     4,     3,
 
  117         16384, 16116, 15849, 15582, 15316, 15050, 14785, 14521, 14257, 13995,
 
  118         13734, 13476, 13218, 12963, 12708, 12457, 12206, 11956, 11706, 11460,
 
  119         11215, 10975, 10735, 10500, 10265, 10034,  9803,  9579,  9355,  9136,
 
  120          8917,  8703,  8489,  8275,  8061,  7853,  7645,  7444,  7244,  7051,
 
  121          6858,  6671,  6484,  6305,  6127,  5956,  5785,  5622,  5459,  5298,
 
  122          5137,  4983,  4830,  4684,  4539,  4401,  4263,  4131,  3999,  3874,
 
  123          3750,  3632,  3515,  3401,  3287,  3173,  3059,  2949,  2840,  2737,
 
  124          2635,  2539,  2444,  2354,  2264,  2181,  2098,  2020,  1943,  1872,
 
  125          1801,  1731,  1661,  1596,  1532,  1472,  1412,  1357,  1303,  1251,
 
  126          1200,  1153,  1106,  1063,  1020,   979,   938,   897,   856,   818,
 
  127           780,   746,   712,   681,   650,   621,   592,   566,   540,   517,
 
  128           494,   473,   452,   431,   410,   391,   373,   356,   340,   325,
 
  129           310,   296,   282,   270,   258,   247,   236,   225,   214,   203,
 
  130           192,   182,   172,   162,   153,   144,   136,   128,   121,   114,
 
  131           108,   102,    97,    92,    87,    82,    77,    73,    69,    65,
 
  132            62,    59,    56,    53,    50,    47,    45,    43,    41,    39,
 
  133            37,    35,    33,    31,    29,    27,    26,    25,    24,    23,
 
  134            22,    21,    20,    19,    18,    17,    16,    15,    14,    13,
 
  135            12,    11,    10,     9,     8,     7,     6,     5,     4,     3,
 
  139         16384, 16128, 15872, 15617, 15362, 15107, 14853, 14600, 14347, 14096,
 
  140         13846, 13597, 13350, 13105, 12860, 12618, 12376, 12135, 11894, 11657,
 
  141         11421, 11189, 10957, 10730, 10503, 10279, 10056,  9838,  9620,  9407,
 
  142          9195,  8987,  8779,  8571,  8363,  8159,  7955,  7758,  7561,  7371,
 
  143          7182,  6997,  6812,  6635,  6459,  6289,  6120,  5957,  5795,  5634,
 
  144          5473,  5319,  5165,  5018,  4871,  4732,  4593,  4458,  4324,  4197,
 
  145          4071,  3951,  3831,  3714,  3597,  3480,  3363,  3250,  3138,  3032,
 
  146          2927,  2828,  2729,  2635,  2541,  2453,  2366,  2284,  2202,  2126,
 
  147          2050,  1975,  1900,  1830,  1761,  1697,  1633,  1574,  1515,  1459,
 
  148          1403,  1351,  1300,  1252,  1205,  1160,  1115,  1070,  1025,   982,
 
  149           939,   899,   860,   824,   789,   756,   723,   693,   663,   636,
 
  150           609,   584,   559,   535,   511,   489,   467,   447,   427,   409,
 
  151           391,   374,   358,   343,   328,   313,   300,   287,   274,   261,
 
  152           248,   235,   223,   211,   200,   189,   179,   169,   160,   151,
 
  153           143,   135,   128,   121,   115,   109,   103,    97,    92,    87,
 
  154            82,    77,    73,    69,    65,    61,    58,    55,    52,    49,
 
  155            46,    43,    40,    37,    35,    33,    31,    29,    27,    25,
 
  156            23,    21,    20,    19,    18,    17,    16,    15,    14,    13,
 
  157            12,    11,    10,     9,     8,     7,     6,     5,     4,     3,
 
  161         16384, 16139, 15894, 15649, 15405, 15162, 14919, 14677, 14435, 14195,
 
  162         13955, 13717, 13479, 13243, 13008, 12775, 12542, 12310, 12079, 11851,
 
  163         11623, 11399, 11176, 10956, 10737, 10521, 10305, 10094,  9883,  9677,
 
  164          9471,  9268,  9065,  8862,  8659,  8459,  8260,  8067,  7874,  7688,
 
  165          7502,  7321,  7140,  6965,  6790,  6621,  6452,  6290,  6128,  5968,
 
  166          5808,  5655,  5503,  5356,  5209,  5069,  4929,  4794,  4660,  4532,
 
  167          4404,  4282,  4160,  4041,  3922,  3803,  3684,  3568,  3452,  3343,
 
  168          3234,  3131,  3029,  2931,  2833,  2741,  2649,  2563,  2477,  2396,
 
  169          2316,  2236,  2157,  2083,  2009,  1940,  1871,  1807,  1743,  1683,
 
  170          1623,  1567,  1511,  1459,  1407,  1357,  1307,  1257,  1207,  1159,
 
  171          1111,  1067,  1023,   983,   943,   905,   868,   834,   800,   769,
 
  172           738,   709,   681,   653,   625,   600,   575,   552,   529,   508,
 
  173           487,   466,   447,   428,   410,   392,   376,   360,   344,   328,
 
  174           313,   298,   283,   268,   255,   242,   230,   218,   207,   196,
 
  175           186,   176,   167,   158,   150,   142,   135,   128,   121,   114,
 
  176           108,   102,    97,    92,    87,    82,    78,    74,    70,    66,
 
  177            62,    58,    54,    50,    47,    44,    41,    38,    35,    32,
 
  178            30,    28,    26,    24,    22,    20,    18,    16,    14,    13,
 
  179            12,    11,    10,     9,     8,     7,     6,     5,     4,     3,
 
  183         16384, 16149, 15915, 15681, 15447, 15214, 14981, 14749, 14517, 14286,
 
  184         14055, 13827, 13599, 13373, 13147, 12923, 12699, 12476, 12253, 12034,
 
  185         11815, 11599, 11383, 11171, 10959, 10750, 10541, 10337, 10133,  9933,
 
  186          9733,  9536,  9339,  9142,  8945,  8751,  8557,  8369,  8181,  7998,
 
  187          7816,  7638,  7460,  7288,  7116,  6950,  6785,  6625,  6465,  6306,
 
  188          6147,  5995,  5843,  5697,  5551,  5411,  5271,  5135,  5000,  4871,
 
  189          4742,  4618,  4495,  4374,  4253,  4132,  4011,  3893,  3775,  3663,
 
  190          3552,  3446,  3340,  3239,  3138,  3043,  2948,  2858,  2768,  2684,
 
  191          2600,  2516,  2433,  2355,  2278,  2205,  2133,  2065,  1997,  1932,
 
  192          1867,  1807,  1747,  1690,  1634,  1580,  1526,  1472,  1418,  1366,
 
  193          1314,  1266,  1218,  1174,  1130,  1088,  1047,  1009,   971,   936,
 
  194           901,   868,   836,   804,   772,   743,   714,   685,   658,   631,
 
  195           606,   582,   559,   536,   515,   494,   475,   456,   437,   418,
 
  196           399,   380,   362,   344,   328,   312,   297,   283,   270,   257,
 
  197           245,   233,   222,   211,   201,   191,   181,   172,   163,   155,
 
  198           147,   139,   132,   125,   119,   113,   107,   101,    96,    91,
 
  199            86,    81,    76,    71,    66,    62,    58,    54,    50,    46,
 
  200            43,    40,    37,    34,    31,    28,    26,    24,    22,    20,
 
  201            18,    16,    14,    12,    10,     8,     6,     5,     4,     3,
 
  205         16384, 16159, 15934, 15709, 15485, 15261, 15038, 14816, 14594, 14373,
 
  206         14152, 13933, 13714, 13497, 13280, 13065, 12850, 12636, 12422, 12211,
 
  207         12000, 11791, 11583, 11378, 11173, 10971, 10769, 10571, 10373, 10179,
 
  208          9985,  9793,  9601,  9409,  9217,  9029,  8842,  8658,  8475,  8297,
 
  209          8120,  7946,  7773,  7604,  7435,  7271,  7108,  6950,  6792,  6634,
 
  210          6477,  6326,  6175,  6029,  5883,  5742,  5602,  5466,  5330,  5199,
 
  211          5068,  4943,  4818,  4696,  4574,  4452,  4330,  4211,  4093,  3979,
 
  212          3866,  3759,  3652,  3549,  3446,  3348,  3250,  3157,  3065,  2977,
 
  213          2889,  2802,  2716,  2634,  2553,  2476,  2399,  2326,  2254,  2185,
 
  214          2117,  2052,  1987,  1926,  1866,  1808,  1750,  1692,  1634,  1578,
 
  215          1522,  1470,  1418,  1369,  1321,  1275,  1229,  1187,  1145,  1105,
 
  216          1066,  1027,   991,   955,   919,   883,   850,   817,   786,   756,
 
  217           728,   700,   674,   648,   624,   600,   578,   556,   534,   512,
 
  218           490,   468,   447,   426,   407,   388,   371,   354,   338,   322,
 
  219           307,   293,   280,   267,   255,   243,   231,   219,   209,   199,
 
  220           189,   179,   170,   161,   153,   145,   138,   131,   124,   117,
 
  221           111,   105,    99,    93,    87,    81,    76,    71,    66,    61,
 
  222            57,    53,    49,    45,    42,    39,    36,    33,    30,    27,
 
  223            24,    21,    19,    17,    15,    13,    11,     9,     7,     5,
 
  227         16384, 16169, 15954, 15739, 15524, 15310, 15096, 14883, 14670, 14458,
 
  228         14246, 14035, 13824, 13614, 13405, 13198, 12991, 12785, 12579, 12376,
 
  229         12173, 11972, 11772, 11574, 11377, 11182, 10987, 10795, 10603, 10414,
 
  230         10226, 10040,  9854,  9668,  9482,  9299,  9116,  8937,  8759,  8585,
 
  231          8411,  8241,  8071,  7906,  7741,  7580,  7419,  7263,  7107,  6952,
 
  232          6797,  6647,  6497,  6353,  6209,  6070,  5931,  5796,  5661,  5531,
 
  233          5401,  5275,  5150,  5027,  4904,  4781,  4658,  4538,  4419,  4304,
 
  234          4190,  4081,  3972,  3867,  3762,  3662,  3562,  3467,  3372,  3281,
 
  235          3191,  3101,  3012,  2928,  2844,  2764,  2684,  2608,  2533,  2460,
 
  236          2387,  2318,  2250,  2185,  2121,  2059,  1997,  1935,  1873,  1813,
 
  237          1754,  1698,  1642,  1588,  1535,  1483,  1433,  1384,  1338,  1292,
 
  238          1249,  1206,  1165,  1125,  1085,  1045,  1008,   971,   937,   903,
 
  239           871,   840,   810,   780,   752,   724,   698,   672,   647,   622,
 
  240           597,   572,   548,   524,   502,   480,   460,   440,   421,   403,
 
  241           386,   369,   353,   337,   323,   309,   295,   281,   268,   255,
 
  242           243,   231,   220,   209,   199,   189,   180,   171,   163,   155,
 
  243           147,   139,   131,   123,   116,   109,   102,    95,    89,    83,
 
  244            77,    72,    67,    62,    57,    52,    48,    44,    40,    36,
 
  245            32,    28,    25,    22,    19,    16,    13,    10,     8,     6,
 
  249         16384, 16177, 15970, 15764, 15558, 15353, 15148, 14944, 14740, 14537,
 
  250         14334, 14132, 13930, 13729, 13529, 13330, 13131, 12933, 12735, 12539,
 
  251         12343, 12150, 11957, 11766, 11576, 11388, 11200, 11015, 10830, 10647,
 
  252         10465, 10285, 10105,  9925,  9745,  9568,  9391,  9218,  9045,  8876,
 
  253          8707,  8541,  8375,  8213,  8051,  7894,  7737,  7583,  7429,  7277,
 
  254          7125,  6977,  6830,  6687,  6544,  6406,  6268,  6133,  5998,  5868,
 
  255          5738,  5612,  5487,  5364,  5241,  5118,  4995,  4875,  4755,  4640,
 
  256          4525,  4414,  4304,  4198,  4092,  3990,  3888,  3790,  3693,  3600,
 
  257          3507,  3415,  3323,  3235,  3147,  3064,  2981,  2902,  2823,  2746,
 
  258          2670,  2594,  2522,  2450,  2382,  2314,  2248,  2182,  2116,  2050,
 
  259          1987,  1924,  1864,  1804,  1748,  1692,  1638,  1585,  1534,  1484,
 
  260          1437,  1390,  1346,  1302,  1258,  1215,  1174,  1133,  1095,  1057,
 
  261          1021,   986,   952,   918,   887,   856,   827,   798,   770,   742,
 
  262           714,   686,   659,   632,   607,   582,   559,   536,   514,   492,
 
  263           472,   452,   433,   415,   398,   381,   364,   348,   333,   318,
 
  264           304,   290,   277,   264,   252,   240,   229,   218,   208,   198,
 
  265           188,   178,   168,   158,   149,   140,   132,   124,   116,   108,
 
  266           101,    94,    87,    81,    75,    69,    64,    59,    54,    49,
 
  267            44,    39,    35,    31,    27,    23,    19,    15,    12,     9,
 
  275         16384, 16187, 15990, 15793, 15597, 15401, 15205, 15009, 14813, 14618,
 
  276         14423, 14230, 14037, 13845, 13653, 13463, 13273, 13083, 12894, 12706,
 
  277         12518, 12332, 12146, 11962, 11778, 11597, 11416, 11237, 11059, 10882,
 
  278         10706, 10532, 10358, 10184, 10010,  9838,  9666,  9497,  9328,  9163,
 
  279          8999,  8837,  8675,  8517,  8359,  8205,  8051,  7901,  7751,  7602,
 
  280          7453,  7308,  7163,  7022,  6882,  6745,  6609,  6476,  6343,  6214,
 
  281          6085,  5960,  5835,  5712,  5589,  5466,  5343,  5223,  5103,  4987,
 
  282          4872,  4761,  4650,  4542,  4435,  4332,  4229,  4130,  4031,  3936,
 
  283          3841,  3747,  3653,  3563,  3473,  3387,  3302,  3220,  3138,  3059,
 
  284          2980,  2905,  2830,  2759,  2688,  2619,  2550,  2481,  2412,  2345,
 
  285          2278,  2215,  2152,  2092,  2032,  1974,  1917,  1863,  1809,  1758,
 
  286          1707,  1659,  1611,  1564,  1517,  1473,  1429,  1387,  1346,  1307,
 
  287          1268,  1230,  1193,  1158,  1123,  1090,  1058,  1026,   994,   962,
 
  288           930,   899,   869,   841,   813,   786,   760,   735,   710,   687,
 
  289           664,   643,   622,   602,   582,   562,   543,   525,   507,   490,
 
  290           473,   457,   442,   427,   412,   398,   385,   373,   361,   349,
 
  291           337,   325,   313,   301,   290,   279,   269,   259,   249,   240,
 
  292           231,   222,   214,   206,   199,   192,   185,   178,   171,   165,
 
  293           159,   153,   148,   143,   138,   133,   128,   123,   119,   115,
 
  294           111,   107,   103,    99,    95,    91,    87,    83,    80,    77,
 
  295            74,    71,    68,    65,    63,    61,    59,    57,    55,    53,
 
  296            51,    49,    47,    45,    43,    41,    40,    39,    38,    37,
 
  297            36,    35,    34,    33,    32,    31,    30,    29,    28,    27,
 
  298            26,    25,    24,    23,    22,    21,    20,    19,    18,    17,
 
  299            16,    15,    14,    13,    12,    11,    10,     9,     8,     7,
 
  303         16384, 16195, 16006, 15817, 15629, 15441, 15253, 15065, 14878, 14692,
 
  304         14506, 14321, 14136, 13952, 13768, 13585, 13402, 13219, 13037, 12857,
 
  305         12677, 12499, 12321, 12144, 11967, 11792, 11617, 11444, 11271, 11100,
 
  306         10930, 10762, 10594, 10426, 10258, 10091,  9925,  9761,  9598,  9438,
 
  307          9278,  9120,  8963,  8809,  8655,  8504,  8354,  8207,  8060,  7914,
 
  308          7769,  7627,  7485,  7347,  7209,  7074,  6939,  6807,  6676,  6548,
 
  309          6420,  6296,  6172,  6050,  5928,  5806,  5684,  5564,  5444,  5328,
 
  310          5212,  5100,  4988,  4879,  4771,  4667,  4563,  4462,  4362,  4265,
 
  311          4169,  4073,  3978,  3886,  3795,  3707,  3619,  3535,  3451,  3369,
 
  312          3288,  3210,  3133,  3059,  2985,  2913,  2841,  2769,  2697,  2627,
 
  313          2557,  2490,  2424,  2360,  2297,  2237,  2177,  2119,  2062,  2007,
 
  314          1953,  1901,  1849,  1798,  1748,  1700,  1652,  1607,  1562,  1519,
 
  315          1476,  1435,  1394,  1355,  1317,  1281,  1245,  1210,  1175,  1140,
 
  316          1105,  1071,  1037,  1005,   973,   943,   913,   885,   857,   830,
 
  317           804,   779,   754,   731,   708,   685,   663,   642,   621,   601,
 
  318           581,   563,   545,   528,   511,   495,   479,   463,   448,   433,
 
  319           419,   405,   391,   377,   364,   351,   338,   326,   314,   302,
 
  320           291,   280,   270,   260,   251,   242,   234,   226,   218,   210,
 
  321           202,   195,   188,   181,   174,   168,   162,   156,   150,   144,
 
  322           139,   134,   129,   124,   119,   114,   109,   104,   100,    96,
 
  323            92,    88,    84,    80,    77,    74,    71,    68,    65,    62,
 
  324            59,    56,    54,    52,    50,    48,    46,    44,    42,    40,
 
  325            38,    36,    34,    33,    32,    31,    30,    29,    28,    27,
 
  326            26,    25,    24,    23,    22,    21,    20,    19,    18,    17,
 
  327            16,    15,    14,    13,    12,    11,    10,     9,     8,     7,
 
  331         16384, 16203, 16022, 15842, 15662, 15482, 15302, 15122, 14942, 14763,
 
  332         14584, 14406, 14228, 14051, 13874, 13698, 13522, 13347, 13172, 12998,
 
  333         12824, 12652, 12480, 12310, 12140, 11971, 11803, 11637, 11471, 11307,
 
  334         11143, 10980, 10817, 10654, 10491, 10330, 10169, 10011,  9853,  9697,
 
  335          9542,  9389,  9236,  9086,  8936,  8789,  8642,  8498,  8355,  8212,
 
  336          8070,  7931,  7792,  7656,  7520,  7388,  7256,  7126,  6996,  6870,
 
  337          6744,  6621,  6498,  6377,  6256,  6135,  6014,  5895,  5776,  5660,
 
  338          5545,  5433,  5321,  5212,  5104,  4999,  4895,  4793,  4692,  4594,
 
  339          4496,  4400,  4304,  4211,  4118,  4028,  3939,  3853,  3767,  3684,
 
  340          3601,  3521,  3441,  3364,  3287,  3212,  3137,  3062,  2987,  2915,
 
  341          2843,  2773,  2704,  2638,  2572,  2508,  2445,  2384,  2324,  2266,
 
  342          2208,  2153,  2098,  2044,  1990,  1939,  1888,  1839,  1791,  1745,
 
  343          1699,  1655,  1611,  1569,  1527,  1487,  1448,  1409,  1370,  1331,
 
  344          1292,  1255,  1218,  1183,  1148,  1115,  1082,  1051,  1020,   990,
 
  345           960,   932,   904,   878,   852,   826,   801,   777,   753,   731,
 
  346           709,   687,   666,   645,   625,   605,   586,   567,   550,   533,
 
  347           516,   499,   482,   465,   449,   433,   418,   403,   389,   375,
 
  348           362,   349,   337,   325,   314,   303,   293,   283,   273,   263,
 
  349           254,   245,   236,   227,   219,   211,   204,   197,   190,   183,
 
  350           177,   171,   165,   159,   153,   147,   141,   135,   130,   125,
 
  351           120,   115,   110,   105,   101,    97,    93,    89,    85,    81,
 
  352            77,    74,    71,    68,    65,    62,    59,    56,    53,    51,
 
  353            49,    47,    45,    43,    41,    39,    37,    35,    33,    31,
 
  354            29,    27,    25,    23,    22,    21,    20,    19,    18,    17,
 
  355            16,    15,    14,    13,    12,    11,    10,     9,     8,     7,
 
  359         16384, 16210, 16036, 15863, 15690, 15517, 15344, 15172, 15000, 14828,
 
  360         14656, 14485, 14314, 14145, 13976, 13808, 13640, 13472, 13304, 13137,
 
  361         12970, 12804, 12639, 12475, 12312, 12149, 11987, 11827, 11667, 11508,
 
  362         11349, 11192, 11035, 10878, 10721, 10565, 10410, 10257, 10104,  9953,
 
  363          9802,  9654,  9506,  9359,  9213,  9070,  8927,  8787,  8647,  8508,
 
  364          8369,  8233,  8097,  7964,  7831,  7700,  7570,  7442,  7315,  7190,
 
  365          7065,  6943,  6821,  6701,  6581,  6461,  6341,  6223,  6105,  5990,
 
  366          5876,  5764,  5653,  5545,  5437,  5331,  5226,  5124,  5022,  4924,
 
  367          4826,  4729,  4632,  4538,  4444,  4353,  4262,  4174,  4087,  4002,
 
  368          3917,  3835,  3753,  3674,  3595,  3518,  3441,  3364,  3287,  3212,
 
  369          3138,  3066,  2995,  2926,  2858,  2792,  2726,  2662,  2599,  2538,
 
  370          2478,  2420,  2362,  2305,  2249,  2195,  2141,  2089,  2037,  1988,
 
  371          1939,  1891,  1844,  1799,  1754,  1711,  1668,  1626,  1584,  1542,
 
  372          1500,  1459,  1418,  1380,  1342,  1305,  1269,  1234,  1199,  1166,
 
  373          1133,  1102,  1071,  1041,  1012,   983,   954,   926,   899,   872,
 
  374           847,   822,   798,   774,   751,   728,   707,   686,   666,   646,
 
  375           627,   608,   589,   570,   552,   534,   517,   500,   484,   468,
 
  376           453,   438,   424,   410,   397,   384,   372,   360,   348,   336,
 
  377           325,   314,   303,   293,   283,   273,   264,   255,   246,   237,
 
  378           229,   221,   213,   205,   197,   189,   181,   174,   167,   160,
 
  379           154,   148,   142,   136,   131,   126,   121,   116,   111,   106,
 
  380           101,    97,    93,    89,    85,    81,    77,    73,    70,    67,
 
  381            64,    61,    58,    55,    52,    49,    46,    43,    40,    37,
 
  382            35,    33,    31,    29,    27,    25,    23,    21,    19,    17,
 
  383            16,    15,    14,    13,    12,    11,    10,     9,     8,     7,
 
  387         16384, 16218, 16052, 15886, 15720, 15554, 15389, 15224, 15059, 14895,
 
  388         14731, 14567, 14403, 14240, 14077, 13915, 13753, 13591, 13429, 13269,
 
  389         13109, 12950, 12791, 12633, 12476, 12320, 12164, 12009, 11854, 11701,
 
  390         11548, 11396, 11244, 11092, 10940, 10790, 10640, 10492, 10344, 10198,
 
  391         10052,  9908,  9764,  9622,  9481,  9342,  9203,  9066,  8929,  8793,
 
  392          8657,  8524,  8391,  8261,  8131,  8003,  7875,  7749,  7624,  7502,
 
  393          7380,  7260,  7140,  7022,  6904,  6786,  6668,  6551,  6435,  6322,
 
  394          6209,  6099,  5989,  5881,  5773,  5668,  5563,  5461,  5359,  5260,
 
  395          5161,  5063,  4965,  4871,  4777,  4686,  4595,  4506,  4417,  4331,
 
  396          4245,  4162,  4079,  3999,  3919,  3841,  3763,  3685,  3607,  3530,
 
  397          3454,  3380,  3307,  3236,  3166,  3097,  3029,  2963,  2897,  2834,
 
  398          2771,  2710,  2650,  2591,  2532,  2475,  2418,  2363,  2309,  2257,
 
  399          2205,  2155,  2105,  2057,  2009,  1963,  1918,  1873,  1828,  1783,
 
  400          1738,  1694,  1650,  1607,  1565,  1524,  1484,  1445,  1407,  1369,
 
  401          1333,  1297,  1263,  1229,  1197,  1165,  1134,  1103,  1073,  1043,
 
  402          1015,   987,   960,   933,   907,   882,   858,   834,   811,   788,
 
  403           766,   744,   722,   700,   679,   658,   638,   618,   599,   581,
 
  404           563,   545,   528,   511,   495,   480,   465,   451,   437,   423,
 
  405           410,   397,   384,   372,   360,   348,   337,   326,   315,   305,
 
  406           295,   285,   275,   265,   255,   245,   236,   227,   219,   211,
 
  407           203,   195,   188,   181,   174,   167,   161,   155,   149,   143,
 
  408           137,   131,   126,   121,   116,   111,   106,   101,    97,    93,
 
  409            89,    85,    81,    77,    73,    69,    65,    61,    58,    55,
 
  410            52,    49,    46,    43,    40,    37,    34,    32,    30,    28,
 
  411            26,    24,    22,    20,    18,    16,    14,    12,    10,     8,
 
  419     cf_tables_2[1], cf_tables_2[2], cf_tables_2[3], cf_tables_2[4],
 
  420     cf_tables_2[5], cf_tables_2[6], cf_tables_2[7], 
cf_tables_3[0],
 
  421     cf_tables_3[1], cf_tables_3[2], cf_tables_3[3], cf_tables_3[4]
 
  430     for (sx = 0; sx < 16; sx++)
 
  433             unsigned int symbol = 1 << 
delta;
 
  435             while (
cf_table[sx][symbol] > target)
 
  436                 symbol += 1 << 
delta;
 
  438             *lut++ = symbol >> 
delta;
 
  448     unsigned int i = av_clip(delta, 0, 
LUT_BUFF - 1);
 
  452     if (lut_status[i] != delta)
 
  461                          uint8_t **cf_lut, 
int **cf_lut_status)
 
  466     if (!*cf_lut || !*cf_lut_status) {
 
  472         memset(*cf_lut_status, -1, 
sizeof(**cf_lut_status) * LUT_BUFF);
 
  489                          unsigned int *l, 
unsigned int *
v)
 
  506                     int delta, 
unsigned int sx,
 
  507                     unsigned int *
h, 
unsigned int *l, 
unsigned int *
v,
 
  508                     uint8_t *cf_lut, 
int *cf_lut_status)
 
  514     unsigned int high  = *
h;
 
  515     unsigned int low   = *l;
 
  521     for (i = 0; i < num; i++) {
 
  522         unsigned int range  = high - low + 1;
 
  523         unsigned int target = (((value - low + 1) << 
FREQ_BITS) - 1) / range;
 
  526         while (
cf_table[sx][symbol] > target)
 
  527             symbol += 1 << 
delta;
 
  529         symbol = (symbol >> 
delta) - 1;
 
av_cold void ff_bgmc_end(uint8_t **cf_lut, int **cf_lut_status)
Release the lookup table arrays. 
 
static void skip_bits_long(GetBitContext *s, int n)
 
static uint8_t * bgmc_lut_getp(uint8_t *lut, int *lut_status, int delta)
Retune the index of a suitable lookup table for a given delta. 
 
Block Gilbert-Moore decoder header. 
 
Macro definitions for various function/variable attributes. 
 
static const uint16_t cf_tables_1[3][129]
Cumulative frequency tables for block Gilbert-Moore coding. 
 
void ff_bgmc_decode_init(GetBitContext *gb, unsigned int *h, unsigned int *l, unsigned int *v)
Initialize decoding and reads the first value. 
 
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered. 
 
void ff_bgmc_decode_end(GetBitContext *gb)
Finish decoding. 
 
static const uint16_t *const cf_table[16]
 
static const uint16_t cf_tables_3[5][257]
 
GLsizei GLboolean const GLfloat * value
 
void ff_bgmc_decode(GetBitContext *gb, unsigned int num, int32_t *dst, int delta, unsigned int sx, unsigned int *h, unsigned int *l, unsigned int *v, uint8_t *cf_lut, int *cf_lut_status)
Read and decode a block Gilbert-Moore coded symbol. 
 
main external API structure. 
 
static unsigned int get_bits1(GetBitContext *s)
 
static unsigned int get_bits_long(GetBitContext *s, int n)
Read 0-32 bits. 
 
static void bgmc_lut_fillp(uint8_t *lut, int *lut_status, int delta)
Initialize a given lookup table using a given delta. 
 
static const uint16_t cf_tables_2[8][193]
 
av_cold int ff_bgmc_init(AVCodecContext *avctx, uint8_t **cf_lut, int **cf_lut_status)
Initialize the lookup table arrays.