Home | History | Annotate | Download | only in enc
      1 // Copyright 2011 Google Inc. All Rights Reserved.
      2 //
      3 // Use of this source code is governed by a BSD-style license
      4 // that can be found in the COPYING file in the root of the source
      5 // tree. An additional intellectual property rights grant can be found
      6 // in the file PATENTS. All contributing project authors may
      7 // be found in the AUTHORS file in the root of the source tree.
      8 // -----------------------------------------------------------------------------
      9 //
     10 // Cost tables for level and modes
     11 //
     12 // Author: Skal (pascal.massimino (at) gmail.com)
     13 
     14 #include "./cost.h"
     15 
     16 //------------------------------------------------------------------------------
     17 // Boolean-cost cost table
     18 
     19 const uint16_t VP8EntropyCost[256] = {
     20   1792, 1792, 1792, 1536, 1536, 1408, 1366, 1280, 1280, 1216,
     21   1178, 1152, 1110, 1076, 1061, 1024, 1024,  992,  968,  951,
     22    939,  911,  896,  878,  871,  854,  838,  820,  811,  794,
     23    786,  768,  768,  752,  740,  732,  720,  709,  704,  690,
     24    683,  672,  666,  655,  647,  640,  631,  622,  615,  607,
     25    598,  592,  586,  576,  572,  564,  559,  555,  547,  541,
     26    534,  528,  522,  512,  512,  504,  500,  494,  488,  483,
     27    477,  473,  467,  461,  458,  452,  448,  443,  438,  434,
     28    427,  424,  419,  415,  410,  406,  403,  399,  394,  390,
     29    384,  384,  377,  374,  370,  366,  362,  359,  355,  351,
     30    347,  342,  342,  336,  333,  330,  326,  323,  320,  316,
     31    312,  308,  305,  302,  299,  296,  293,  288,  287,  283,
     32    280,  277,  274,  272,  268,  266,  262,  256,  256,  256,
     33    251,  248,  245,  242,  240,  237,  234,  232,  228,  226,
     34    223,  221,  218,  216,  214,  211,  208,  205,  203,  201,
     35    198,  196,  192,  191,  188,  187,  183,  181,  179,  176,
     36    175,  171,  171,  168,  165,  163,  160,  159,  156,  154,
     37    152,  150,  148,  146,  144,  142,  139,  138,  135,  133,
     38    131,  128,  128,  125,  123,  121,  119,  117,  115,  113,
     39    111,  110,  107,  105,  103,  102,  100,   98,   96,   94,
     40     92,   91,   89,   86,   86,   83,   82,   80,   77,   76,
     41     74,   73,   71,   69,   67,   66,   64,   63,   61,   59,
     42     57,   55,   54,   52,   51,   49,   47,   46,   44,   43,
     43     41,   40,   38,   36,   35,   33,   32,   30,   29,   27,
     44     25,   24,   22,   21,   19,   18,   16,   15,   13,   12,
     45     10,    9,    7,    6,    4,    3
     46 };
     47 
     48 //------------------------------------------------------------------------------
     49 // Level cost tables
     50 
     51 // For each given level, the following table gives the pattern of contexts to
     52 // use for coding it (in [][0]) as well as the bit value to use for each
     53 // context (in [][1]).
     54 const uint16_t VP8LevelCodes[MAX_VARIABLE_LEVEL][2] = {
     55                   {0x001, 0x000}, {0x007, 0x001}, {0x00f, 0x005},
     56   {0x00f, 0x00d}, {0x033, 0x003}, {0x033, 0x003}, {0x033, 0x023},
     57   {0x033, 0x023}, {0x033, 0x023}, {0x033, 0x023}, {0x0d3, 0x013},
     58   {0x0d3, 0x013}, {0x0d3, 0x013}, {0x0d3, 0x013}, {0x0d3, 0x013},
     59   {0x0d3, 0x013}, {0x0d3, 0x013}, {0x0d3, 0x013}, {0x0d3, 0x093},
     60   {0x0d3, 0x093}, {0x0d3, 0x093}, {0x0d3, 0x093}, {0x0d3, 0x093},
     61   {0x0d3, 0x093}, {0x0d3, 0x093}, {0x0d3, 0x093}, {0x0d3, 0x093},
     62   {0x0d3, 0x093}, {0x0d3, 0x093}, {0x0d3, 0x093}, {0x0d3, 0x093},
     63   {0x0d3, 0x093}, {0x0d3, 0x093}, {0x0d3, 0x093}, {0x153, 0x053},
     64   {0x153, 0x053}, {0x153, 0x053}, {0x153, 0x053}, {0x153, 0x053},
     65   {0x153, 0x053}, {0x153, 0x053}, {0x153, 0x053}, {0x153, 0x053},
     66   {0x153, 0x053}, {0x153, 0x053}, {0x153, 0x053}, {0x153, 0x053},
     67   {0x153, 0x053}, {0x153, 0x053}, {0x153, 0x053}, {0x153, 0x053},
     68   {0x153, 0x053}, {0x153, 0x053}, {0x153, 0x053}, {0x153, 0x053},
     69   {0x153, 0x053}, {0x153, 0x053}, {0x153, 0x053}, {0x153, 0x053},
     70   {0x153, 0x053}, {0x153, 0x053}, {0x153, 0x053}, {0x153, 0x053},
     71   {0x153, 0x053}, {0x153, 0x053}, {0x153, 0x053}, {0x153, 0x153}
     72 };
     73 
     74 // fixed costs for coding levels, deduce from the coding tree.
     75 // This is only the part that doesn't depend on the probability state.
     76 const uint16_t VP8LevelFixedCosts[MAX_LEVEL + 1] = {
     77      0,  256,  256,  256,  256,  432,  618,  630,
     78    731,  640,  640,  828,  901,  948, 1021, 1101,
     79   1174, 1221, 1294, 1042, 1085, 1115, 1158, 1202,
     80   1245, 1275, 1318, 1337, 1380, 1410, 1453, 1497,
     81   1540, 1570, 1613, 1280, 1295, 1317, 1332, 1358,
     82   1373, 1395, 1410, 1454, 1469, 1491, 1506, 1532,
     83   1547, 1569, 1584, 1601, 1616, 1638, 1653, 1679,
     84   1694, 1716, 1731, 1775, 1790, 1812, 1827, 1853,
     85   1868, 1890, 1905, 1727, 1733, 1742, 1748, 1759,
     86   1765, 1774, 1780, 1800, 1806, 1815, 1821, 1832,
     87   1838, 1847, 1853, 1878, 1884, 1893, 1899, 1910,
     88   1916, 1925, 1931, 1951, 1957, 1966, 1972, 1983,
     89   1989, 1998, 2004, 2027, 2033, 2042, 2048, 2059,
     90   2065, 2074, 2080, 2100, 2106, 2115, 2121, 2132,
     91   2138, 2147, 2153, 2178, 2184, 2193, 2199, 2210,
     92   2216, 2225, 2231, 2251, 2257, 2266, 2272, 2283,
     93   2289, 2298, 2304, 2168, 2174, 2183, 2189, 2200,
     94   2206, 2215, 2221, 2241, 2247, 2256, 2262, 2273,
     95   2279, 2288, 2294, 2319, 2325, 2334, 2340, 2351,
     96   2357, 2366, 2372, 2392, 2398, 2407, 2413, 2424,
     97   2430, 2439, 2445, 2468, 2474, 2483, 2489, 2500,
     98   2506, 2515, 2521, 2541, 2547, 2556, 2562, 2573,
     99   2579, 2588, 2594, 2619, 2625, 2634, 2640, 2651,
    100   2657, 2666, 2672, 2692, 2698, 2707, 2713, 2724,
    101   2730, 2739, 2745, 2540, 2546, 2555, 2561, 2572,
    102   2578, 2587, 2593, 2613, 2619, 2628, 2634, 2645,
    103   2651, 2660, 2666, 2691, 2697, 2706, 2712, 2723,
    104   2729, 2738, 2744, 2764, 2770, 2779, 2785, 2796,
    105   2802, 2811, 2817, 2840, 2846, 2855, 2861, 2872,
    106   2878, 2887, 2893, 2913, 2919, 2928, 2934, 2945,
    107   2951, 2960, 2966, 2991, 2997, 3006, 3012, 3023,
    108   3029, 3038, 3044, 3064, 3070, 3079, 3085, 3096,
    109   3102, 3111, 3117, 2981, 2987, 2996, 3002, 3013,
    110   3019, 3028, 3034, 3054, 3060, 3069, 3075, 3086,
    111   3092, 3101, 3107, 3132, 3138, 3147, 3153, 3164,
    112   3170, 3179, 3185, 3205, 3211, 3220, 3226, 3237,
    113   3243, 3252, 3258, 3281, 3287, 3296, 3302, 3313,
    114   3319, 3328, 3334, 3354, 3360, 3369, 3375, 3386,
    115   3392, 3401, 3407, 3432, 3438, 3447, 3453, 3464,
    116   3470, 3479, 3485, 3505, 3511, 3520, 3526, 3537,
    117   3543, 3552, 3558, 2816, 2822, 2831, 2837, 2848,
    118   2854, 2863, 2869, 2889, 2895, 2904, 2910, 2921,
    119   2927, 2936, 2942, 2967, 2973, 2982, 2988, 2999,
    120   3005, 3014, 3020, 3040, 3046, 3055, 3061, 3072,
    121   3078, 3087, 3093, 3116, 3122, 3131, 3137, 3148,
    122   3154, 3163, 3169, 3189, 3195, 3204, 3210, 3221,
    123   3227, 3236, 3242, 3267, 3273, 3282, 3288, 3299,
    124   3305, 3314, 3320, 3340, 3346, 3355, 3361, 3372,
    125   3378, 3387, 3393, 3257, 3263, 3272, 3278, 3289,
    126   3295, 3304, 3310, 3330, 3336, 3345, 3351, 3362,
    127   3368, 3377, 3383, 3408, 3414, 3423, 3429, 3440,
    128   3446, 3455, 3461, 3481, 3487, 3496, 3502, 3513,
    129   3519, 3528, 3534, 3557, 3563, 3572, 3578, 3589,
    130   3595, 3604, 3610, 3630, 3636, 3645, 3651, 3662,
    131   3668, 3677, 3683, 3708, 3714, 3723, 3729, 3740,
    132   3746, 3755, 3761, 3781, 3787, 3796, 3802, 3813,
    133   3819, 3828, 3834, 3629, 3635, 3644, 3650, 3661,
    134   3667, 3676, 3682, 3702, 3708, 3717, 3723, 3734,
    135   3740, 3749, 3755, 3780, 3786, 3795, 3801, 3812,
    136   3818, 3827, 3833, 3853, 3859, 3868, 3874, 3885,
    137   3891, 3900, 3906, 3929, 3935, 3944, 3950, 3961,
    138   3967, 3976, 3982, 4002, 4008, 4017, 4023, 4034,
    139   4040, 4049, 4055, 4080, 4086, 4095, 4101, 4112,
    140   4118, 4127, 4133, 4153, 4159, 4168, 4174, 4185,
    141   4191, 4200, 4206, 4070, 4076, 4085, 4091, 4102,
    142   4108, 4117, 4123, 4143, 4149, 4158, 4164, 4175,
    143   4181, 4190, 4196, 4221, 4227, 4236, 4242, 4253,
    144   4259, 4268, 4274, 4294, 4300, 4309, 4315, 4326,
    145   4332, 4341, 4347, 4370, 4376, 4385, 4391, 4402,
    146   4408, 4417, 4423, 4443, 4449, 4458, 4464, 4475,
    147   4481, 4490, 4496, 4521, 4527, 4536, 4542, 4553,
    148   4559, 4568, 4574, 4594, 4600, 4609, 4615, 4626,
    149   4632, 4641, 4647, 3515, 3521, 3530, 3536, 3547,
    150   3553, 3562, 3568, 3588, 3594, 3603, 3609, 3620,
    151   3626, 3635, 3641, 3666, 3672, 3681, 3687, 3698,
    152   3704, 3713, 3719, 3739, 3745, 3754, 3760, 3771,
    153   3777, 3786, 3792, 3815, 3821, 3830, 3836, 3847,
    154   3853, 3862, 3868, 3888, 3894, 3903, 3909, 3920,
    155   3926, 3935, 3941, 3966, 3972, 3981, 3987, 3998,
    156   4004, 4013, 4019, 4039, 4045, 4054, 4060, 4071,
    157   4077, 4086, 4092, 3956, 3962, 3971, 3977, 3988,
    158   3994, 4003, 4009, 4029, 4035, 4044, 4050, 4061,
    159   4067, 4076, 4082, 4107, 4113, 4122, 4128, 4139,
    160   4145, 4154, 4160, 4180, 4186, 4195, 4201, 4212,
    161   4218, 4227, 4233, 4256, 4262, 4271, 4277, 4288,
    162   4294, 4303, 4309, 4329, 4335, 4344, 4350, 4361,
    163   4367, 4376, 4382, 4407, 4413, 4422, 4428, 4439,
    164   4445, 4454, 4460, 4480, 4486, 4495, 4501, 4512,
    165   4518, 4527, 4533, 4328, 4334, 4343, 4349, 4360,
    166   4366, 4375, 4381, 4401, 4407, 4416, 4422, 4433,
    167   4439, 4448, 4454, 4479, 4485, 4494, 4500, 4511,
    168   4517, 4526, 4532, 4552, 4558, 4567, 4573, 4584,
    169   4590, 4599, 4605, 4628, 4634, 4643, 4649, 4660,
    170   4666, 4675, 4681, 4701, 4707, 4716, 4722, 4733,
    171   4739, 4748, 4754, 4779, 4785, 4794, 4800, 4811,
    172   4817, 4826, 4832, 4852, 4858, 4867, 4873, 4884,
    173   4890, 4899, 4905, 4769, 4775, 4784, 4790, 4801,
    174   4807, 4816, 4822, 4842, 4848, 4857, 4863, 4874,
    175   4880, 4889, 4895, 4920, 4926, 4935, 4941, 4952,
    176   4958, 4967, 4973, 4993, 4999, 5008, 5014, 5025,
    177   5031, 5040, 5046, 5069, 5075, 5084, 5090, 5101,
    178   5107, 5116, 5122, 5142, 5148, 5157, 5163, 5174,
    179   5180, 5189, 5195, 5220, 5226, 5235, 5241, 5252,
    180   5258, 5267, 5273, 5293, 5299, 5308, 5314, 5325,
    181   5331, 5340, 5346, 4604, 4610, 4619, 4625, 4636,
    182   4642, 4651, 4657, 4677, 4683, 4692, 4698, 4709,
    183   4715, 4724, 4730, 4755, 4761, 4770, 4776, 4787,
    184   4793, 4802, 4808, 4828, 4834, 4843, 4849, 4860,
    185   4866, 4875, 4881, 4904, 4910, 4919, 4925, 4936,
    186   4942, 4951, 4957, 4977, 4983, 4992, 4998, 5009,
    187   5015, 5024, 5030, 5055, 5061, 5070, 5076, 5087,
    188   5093, 5102, 5108, 5128, 5134, 5143, 5149, 5160,
    189   5166, 5175, 5181, 5045, 5051, 5060, 5066, 5077,
    190   5083, 5092, 5098, 5118, 5124, 5133, 5139, 5150,
    191   5156, 5165, 5171, 5196, 5202, 5211, 5217, 5228,
    192   5234, 5243, 5249, 5269, 5275, 5284, 5290, 5301,
    193   5307, 5316, 5322, 5345, 5351, 5360, 5366, 5377,
    194   5383, 5392, 5398, 5418, 5424, 5433, 5439, 5450,
    195   5456, 5465, 5471, 5496, 5502, 5511, 5517, 5528,
    196   5534, 5543, 5549, 5569, 5575, 5584, 5590, 5601,
    197   5607, 5616, 5622, 5417, 5423, 5432, 5438, 5449,
    198   5455, 5464, 5470, 5490, 5496, 5505, 5511, 5522,
    199   5528, 5537, 5543, 5568, 5574, 5583, 5589, 5600,
    200   5606, 5615, 5621, 5641, 5647, 5656, 5662, 5673,
    201   5679, 5688, 5694, 5717, 5723, 5732, 5738, 5749,
    202   5755, 5764, 5770, 5790, 5796, 5805, 5811, 5822,
    203   5828, 5837, 5843, 5868, 5874, 5883, 5889, 5900,
    204   5906, 5915, 5921, 5941, 5947, 5956, 5962, 5973,
    205   5979, 5988, 5994, 5858, 5864, 5873, 5879, 5890,
    206   5896, 5905, 5911, 5931, 5937, 5946, 5952, 5963,
    207   5969, 5978, 5984, 6009, 6015, 6024, 6030, 6041,
    208   6047, 6056, 6062, 6082, 6088, 6097, 6103, 6114,
    209   6120, 6129, 6135, 6158, 6164, 6173, 6179, 6190,
    210   6196, 6205, 6211, 6231, 6237, 6246, 6252, 6263,
    211   6269, 6278, 6284, 6309, 6315, 6324, 6330, 6341,
    212   6347, 6356, 6362, 6382, 6388, 6397, 6403, 6414,
    213   6420, 6429, 6435, 3515, 3521, 3530, 3536, 3547,
    214   3553, 3562, 3568, 3588, 3594, 3603, 3609, 3620,
    215   3626, 3635, 3641, 3666, 3672, 3681, 3687, 3698,
    216   3704, 3713, 3719, 3739, 3745, 3754, 3760, 3771,
    217   3777, 3786, 3792, 3815, 3821, 3830, 3836, 3847,
    218   3853, 3862, 3868, 3888, 3894, 3903, 3909, 3920,
    219   3926, 3935, 3941, 3966, 3972, 3981, 3987, 3998,
    220   4004, 4013, 4019, 4039, 4045, 4054, 4060, 4071,
    221   4077, 4086, 4092, 3956, 3962, 3971, 3977, 3988,
    222   3994, 4003, 4009, 4029, 4035, 4044, 4050, 4061,
    223   4067, 4076, 4082, 4107, 4113, 4122, 4128, 4139,
    224   4145, 4154, 4160, 4180, 4186, 4195, 4201, 4212,
    225   4218, 4227, 4233, 4256, 4262, 4271, 4277, 4288,
    226   4294, 4303, 4309, 4329, 4335, 4344, 4350, 4361,
    227   4367, 4376, 4382, 4407, 4413, 4422, 4428, 4439,
    228   4445, 4454, 4460, 4480, 4486, 4495, 4501, 4512,
    229   4518, 4527, 4533, 4328, 4334, 4343, 4349, 4360,
    230   4366, 4375, 4381, 4401, 4407, 4416, 4422, 4433,
    231   4439, 4448, 4454, 4479, 4485, 4494, 4500, 4511,
    232   4517, 4526, 4532, 4552, 4558, 4567, 4573, 4584,
    233   4590, 4599, 4605, 4628, 4634, 4643, 4649, 4660,
    234   4666, 4675, 4681, 4701, 4707, 4716, 4722, 4733,
    235   4739, 4748, 4754, 4779, 4785, 4794, 4800, 4811,
    236   4817, 4826, 4832, 4852, 4858, 4867, 4873, 4884,
    237   4890, 4899, 4905, 4769, 4775, 4784, 4790, 4801,
    238   4807, 4816, 4822, 4842, 4848, 4857, 4863, 4874,
    239   4880, 4889, 4895, 4920, 4926, 4935, 4941, 4952,
    240   4958, 4967, 4973, 4993, 4999, 5008, 5014, 5025,
    241   5031, 5040, 5046, 5069, 5075, 5084, 5090, 5101,
    242   5107, 5116, 5122, 5142, 5148, 5157, 5163, 5174,
    243   5180, 5189, 5195, 5220, 5226, 5235, 5241, 5252,
    244   5258, 5267, 5273, 5293, 5299, 5308, 5314, 5325,
    245   5331, 5340, 5346, 4604, 4610, 4619, 4625, 4636,
    246   4642, 4651, 4657, 4677, 4683, 4692, 4698, 4709,
    247   4715, 4724, 4730, 4755, 4761, 4770, 4776, 4787,
    248   4793, 4802, 4808, 4828, 4834, 4843, 4849, 4860,
    249   4866, 4875, 4881, 4904, 4910, 4919, 4925, 4936,
    250   4942, 4951, 4957, 4977, 4983, 4992, 4998, 5009,
    251   5015, 5024, 5030, 5055, 5061, 5070, 5076, 5087,
    252   5093, 5102, 5108, 5128, 5134, 5143, 5149, 5160,
    253   5166, 5175, 5181, 5045, 5051, 5060, 5066, 5077,
    254   5083, 5092, 5098, 5118, 5124, 5133, 5139, 5150,
    255   5156, 5165, 5171, 5196, 5202, 5211, 5217, 5228,
    256   5234, 5243, 5249, 5269, 5275, 5284, 5290, 5301,
    257   5307, 5316, 5322, 5345, 5351, 5360, 5366, 5377,
    258   5383, 5392, 5398, 5418, 5424, 5433, 5439, 5450,
    259   5456, 5465, 5471, 5496, 5502, 5511, 5517, 5528,
    260   5534, 5543, 5549, 5569, 5575, 5584, 5590, 5601,
    261   5607, 5616, 5622, 5417, 5423, 5432, 5438, 5449,
    262   5455, 5464, 5470, 5490, 5496, 5505, 5511, 5522,
    263   5528, 5537, 5543, 5568, 5574, 5583, 5589, 5600,
    264   5606, 5615, 5621, 5641, 5647, 5656, 5662, 5673,
    265   5679, 5688, 5694, 5717, 5723, 5732, 5738, 5749,
    266   5755, 5764, 5770, 5790, 5796, 5805, 5811, 5822,
    267   5828, 5837, 5843, 5868, 5874, 5883, 5889, 5900,
    268   5906, 5915, 5921, 5941, 5947, 5956, 5962, 5973,
    269   5979, 5988, 5994, 5858, 5864, 5873, 5879, 5890,
    270   5896, 5905, 5911, 5931, 5937, 5946, 5952, 5963,
    271   5969, 5978, 5984, 6009, 6015, 6024, 6030, 6041,
    272   6047, 6056, 6062, 6082, 6088, 6097, 6103, 6114,
    273   6120, 6129, 6135, 6158, 6164, 6173, 6179, 6190,
    274   6196, 6205, 6211, 6231, 6237, 6246, 6252, 6263,
    275   6269, 6278, 6284, 6309, 6315, 6324, 6330, 6341,
    276   6347, 6356, 6362, 6382, 6388, 6397, 6403, 6414,
    277   6420, 6429, 6435, 5303, 5309, 5318, 5324, 5335,
    278   5341, 5350, 5356, 5376, 5382, 5391, 5397, 5408,
    279   5414, 5423, 5429, 5454, 5460, 5469, 5475, 5486,
    280   5492, 5501, 5507, 5527, 5533, 5542, 5548, 5559,
    281   5565, 5574, 5580, 5603, 5609, 5618, 5624, 5635,
    282   5641, 5650, 5656, 5676, 5682, 5691, 5697, 5708,
    283   5714, 5723, 5729, 5754, 5760, 5769, 5775, 5786,
    284   5792, 5801, 5807, 5827, 5833, 5842, 5848, 5859,
    285   5865, 5874, 5880, 5744, 5750, 5759, 5765, 5776,
    286   5782, 5791, 5797, 5817, 5823, 5832, 5838, 5849,
    287   5855, 5864, 5870, 5895, 5901, 5910, 5916, 5927,
    288   5933, 5942, 5948, 5968, 5974, 5983, 5989, 6000,
    289   6006, 6015, 6021, 6044, 6050, 6059, 6065, 6076,
    290   6082, 6091, 6097, 6117, 6123, 6132, 6138, 6149,
    291   6155, 6164, 6170, 6195, 6201, 6210, 6216, 6227,
    292   6233, 6242, 6248, 6268, 6274, 6283, 6289, 6300,
    293   6306, 6315, 6321, 6116, 6122, 6131, 6137, 6148,
    294   6154, 6163, 6169, 6189, 6195, 6204, 6210, 6221,
    295   6227, 6236, 6242, 6267, 6273, 6282, 6288, 6299,
    296   6305, 6314, 6320, 6340, 6346, 6355, 6361, 6372,
    297   6378, 6387, 6393, 6416, 6422, 6431, 6437, 6448,
    298   6454, 6463, 6469, 6489, 6495, 6504, 6510, 6521,
    299   6527, 6536, 6542, 6567, 6573, 6582, 6588, 6599,
    300   6605, 6614, 6620, 6640, 6646, 6655, 6661, 6672,
    301   6678, 6687, 6693, 6557, 6563, 6572, 6578, 6589,
    302   6595, 6604, 6610, 6630, 6636, 6645, 6651, 6662,
    303   6668, 6677, 6683, 6708, 6714, 6723, 6729, 6740,
    304   6746, 6755, 6761, 6781, 6787, 6796, 6802, 6813,
    305   6819, 6828, 6834, 6857, 6863, 6872, 6878, 6889,
    306   6895, 6904, 6910, 6930, 6936, 6945, 6951, 6962,
    307   6968, 6977, 6983, 7008, 7014, 7023, 7029, 7040,
    308   7046, 7055, 7061, 7081, 7087, 7096, 7102, 7113,
    309   7119, 7128, 7134, 6392, 6398, 6407, 6413, 6424,
    310   6430, 6439, 6445, 6465, 6471, 6480, 6486, 6497,
    311   6503, 6512, 6518, 6543, 6549, 6558, 6564, 6575,
    312   6581, 6590, 6596, 6616, 6622, 6631, 6637, 6648,
    313   6654, 6663, 6669, 6692, 6698, 6707, 6713, 6724,
    314   6730, 6739, 6745, 6765, 6771, 6780, 6786, 6797,
    315   6803, 6812, 6818, 6843, 6849, 6858, 6864, 6875,
    316   6881, 6890, 6896, 6916, 6922, 6931, 6937, 6948,
    317   6954, 6963, 6969, 6833, 6839, 6848, 6854, 6865,
    318   6871, 6880, 6886, 6906, 6912, 6921, 6927, 6938,
    319   6944, 6953, 6959, 6984, 6990, 6999, 7005, 7016,
    320   7022, 7031, 7037, 7057, 7063, 7072, 7078, 7089,
    321   7095, 7104, 7110, 7133, 7139, 7148, 7154, 7165,
    322   7171, 7180, 7186, 7206, 7212, 7221, 7227, 7238,
    323   7244, 7253, 7259, 7284, 7290, 7299, 7305, 7316,
    324   7322, 7331, 7337, 7357, 7363, 7372, 7378, 7389,
    325   7395, 7404, 7410, 7205, 7211, 7220, 7226, 7237,
    326   7243, 7252, 7258, 7278, 7284, 7293, 7299, 7310,
    327   7316, 7325, 7331, 7356, 7362, 7371, 7377, 7388,
    328   7394, 7403, 7409, 7429, 7435, 7444, 7450, 7461,
    329   7467, 7476, 7482, 7505, 7511, 7520, 7526, 7537,
    330   7543, 7552, 7558, 7578, 7584, 7593, 7599, 7610,
    331   7616, 7625, 7631, 7656, 7662, 7671, 7677, 7688,
    332   7694, 7703, 7709, 7729, 7735, 7744, 7750, 7761
    333 };
    334 
    335 static int VariableLevelCost(int level, const uint8_t probas[NUM_PROBAS]) {
    336   int pattern = VP8LevelCodes[level - 1][0];
    337   int bits = VP8LevelCodes[level - 1][1];
    338   int cost = 0;
    339   int i;
    340   for (i = 2; pattern; ++i) {
    341     if (pattern & 1) {
    342       cost += VP8BitCost(bits & 1, probas[i]);
    343     }
    344     bits >>= 1;
    345     pattern >>= 1;
    346   }
    347   return cost;
    348 }
    349 
    350 //------------------------------------------------------------------------------
    351 // Pre-calc level costs once for all
    352 
    353 void VP8CalculateLevelCosts(VP8Proba* const proba) {
    354   int ctype, band, ctx;
    355 
    356   if (!proba->dirty_) return;  // nothing to do.
    357 
    358   for (ctype = 0; ctype < NUM_TYPES; ++ctype) {
    359     for (band = 0; band < NUM_BANDS; ++band) {
    360       for (ctx = 0; ctx < NUM_CTX; ++ctx) {
    361         const uint8_t* const p = proba->coeffs_[ctype][band][ctx];
    362         uint16_t* const table = proba->level_cost_[ctype][band][ctx];
    363         const int cost0 = (ctx > 0) ? VP8BitCost(1, p[0]) : 0;
    364         const int cost_base = VP8BitCost(1, p[1]) + cost0;
    365         int v;
    366         table[0] = VP8BitCost(0, p[1]) + cost0;
    367         for (v = 1; v <= MAX_VARIABLE_LEVEL; ++v) {
    368           table[v] = cost_base + VariableLevelCost(v, p);
    369         }
    370         // Starting at level 67 and up, the variable part of the cost is
    371         // actually constant.
    372       }
    373     }
    374   }
    375   proba->dirty_ = 0;
    376 }
    377 
    378 //------------------------------------------------------------------------------
    379 // Mode cost tables.
    380 
    381 // These are the fixed probabilities (in the coding trees) turned into bit-cost
    382 // by calling VP8BitCost().
    383 const uint16_t VP8FixedCostsUV[4] = { 302, 984, 439, 642 };
    384 // note: these values include the fixed VP8BitCost(1, 145) mode selection cost.
    385 const uint16_t VP8FixedCostsI16[4] = { 663, 919, 872, 919 };
    386 const uint16_t VP8FixedCostsI4[NUM_BMODES][NUM_BMODES][NUM_BMODES] = {
    387   { {   40, 1151, 1723, 1874, 2103, 2019, 1628, 1777, 2226, 2137 },
    388     {  192,  469, 1296, 1308, 1849, 1794, 1781, 1703, 1713, 1522 },
    389     {  142,  910,  762, 1684, 1849, 1576, 1460, 1305, 1801, 1657 },
    390     {  559,  641, 1370,  421, 1182, 1569, 1612, 1725,  863, 1007 },
    391     {  299, 1059, 1256, 1108,  636, 1068, 1581, 1883,  869, 1142 },
    392     {  277, 1111,  707, 1362, 1089,  672, 1603, 1541, 1545, 1291 },
    393     {  214,  781, 1609, 1303, 1632, 2229,  726, 1560, 1713,  918 },
    394     {  152, 1037, 1046, 1759, 1983, 2174, 1358,  742, 1740, 1390 },
    395     {  512, 1046, 1420,  753,  752, 1297, 1486, 1613,  460, 1207 },
    396     {  424,  827, 1362,  719, 1462, 1202, 1199, 1476, 1199,  538 } },
    397   { {  240,  402, 1134, 1491, 1659, 1505, 1517, 1555, 1979, 2099 },
    398     {  467,  242,  960, 1232, 1714, 1620, 1834, 1570, 1676, 1391 },
    399     {  500,  455,  463, 1507, 1699, 1282, 1564,  982, 2114, 2114 },
    400     {  672,  643, 1372,  331, 1589, 1667, 1453, 1938,  996,  876 },
    401     {  458,  783, 1037,  911,  738,  968, 1165, 1518,  859, 1033 },
    402     {  504,  815,  504, 1139, 1219,  719, 1506, 1085, 1268, 1268 },
    403     {  333,  630, 1445, 1239, 1883, 3672,  799, 1548, 1865,  598 },
    404     {  399,  644,  746, 1342, 1856, 1350, 1493,  613, 1855, 1015 },
    405     {  622,  749, 1205,  608, 1066, 1408, 1290, 1406,  546,  971 },
    406     {  500,  753, 1041,  668, 1230, 1617, 1297, 1425, 1383,  523 } },
    407   { {  394,  553,  523, 1502, 1536,  981, 1608, 1142, 1666, 2181 },
    408     {  655,  430,  375, 1411, 1861, 1220, 1677, 1135, 1978, 1553 },
    409     {  690,  640,  245, 1954, 2070, 1194, 1528,  982, 1972, 2232 },
    410     {  559,  834,  741,  867, 1131,  980, 1225,  852, 1092,  784 },
    411     {  690,  875,  516,  959,  673,  894, 1056, 1190, 1528, 1126 },
    412     {  740,  951,  384, 1277, 1177,  492, 1579, 1155, 1846, 1513 },
    413     {  323,  775, 1062, 1776, 3062, 1274,  813, 1188, 1372,  655 },
    414     {  488,  971,  484, 1767, 1515, 1775, 1115,  503, 1539, 1461 },
    415     {  740, 1006,  998,  709,  851, 1230, 1337,  788,  741,  721 },
    416     {  522, 1073,  573, 1045, 1346,  887, 1046, 1146, 1203,  697 } },
    417   { {  105,  864, 1442, 1009, 1934, 1840, 1519, 1920, 1673, 1579 },
    418     {  534,  305, 1193,  683, 1388, 2164, 1802, 1894, 1264, 1170 },
    419     {  305,  518,  877, 1108, 1426, 3215, 1425, 1064, 1320, 1242 },
    420     {  683,  732, 1927,  257, 1493, 2048, 1858, 1552, 1055,  947 },
    421     {  394,  814, 1024,  660,  959, 1556, 1282, 1289,  893, 1047 },
    422     {  528,  615,  996,  940, 1201,  635, 1094, 2515,  803, 1358 },
    423     {  347,  614, 1609, 1187, 3133, 1345, 1007, 1339, 1017,  667 },
    424     {  218,  740,  878, 1605, 3650, 3650, 1345,  758, 1357, 1617 },
    425     {  672,  750, 1541,  558, 1257, 1599, 1870, 2135,  402, 1087 },
    426     {  592,  684, 1161,  430, 1092, 1497, 1475, 1489, 1095,  822 } },
    427   { {  228, 1056, 1059, 1368,  752,  982, 1512, 1518,  987, 1782 },
    428     {  494,  514,  818,  942,  965,  892, 1610, 1356, 1048, 1363 },
    429     {  512,  648,  591, 1042,  761,  991, 1196, 1454, 1309, 1463 },
    430     {  683,  749, 1043,  676,  841, 1396, 1133, 1138,  654,  939 },
    431     {  622, 1101, 1126,  994,  361, 1077, 1203, 1318,  877, 1219 },
    432     {  631, 1068,  857, 1650,  651,  477, 1650, 1419,  828, 1170 },
    433     {  555,  727, 1068, 1335, 3127, 1339,  820, 1331, 1077,  429 },
    434     {  504,  879,  624, 1398,  889,  889, 1392,  808,  891, 1406 },
    435     {  683, 1602, 1289,  977,  578,  983, 1280, 1708,  406, 1122 },
    436     {  399,  865, 1433, 1070, 1072,  764,  968, 1477, 1223,  678 } },
    437   { {  333,  760,  935, 1638, 1010,  529, 1646, 1410, 1472, 2219 },
    438     {  512,  494,  750, 1160, 1215,  610, 1870, 1868, 1628, 1169 },
    439     {  572,  646,  492, 1934, 1208,  603, 1580, 1099, 1398, 1995 },
    440     {  786,  789,  942,  581, 1018,  951, 1599, 1207,  731,  768 },
    441     {  690, 1015,  672, 1078,  582,  504, 1693, 1438, 1108, 2897 },
    442     {  768, 1267,  571, 2005, 1243,  244, 2881, 1380, 1786, 1453 },
    443     {  452,  899, 1293,  903, 1311, 3100,  465, 1311, 1319,  813 },
    444     {  394,  927,  942, 1103, 1358, 1104,  946,  593, 1363, 1109 },
    445     {  559, 1005, 1007, 1016,  658, 1173, 1021, 1164,  623, 1028 },
    446     {  564,  796,  632, 1005, 1014,  863, 2316, 1268,  938,  764 } },
    447   { {  266,  606, 1098, 1228, 1497, 1243,  948, 1030, 1734, 1461 },
    448     {  366,  585,  901, 1060, 1407, 1247,  876, 1134, 1620, 1054 },
    449     {  452,  565,  542, 1729, 1479, 1479, 1016,  886, 2938, 1150 },
    450     {  555, 1088, 1533,  950, 1354,  895,  834, 1019, 1021,  496 },
    451     {  704,  815, 1193,  971,  973,  640, 1217, 2214,  832,  578 },
    452     {  672, 1245,  579,  871,  875,  774,  872, 1273, 1027,  949 },
    453     {  296, 1134, 2050, 1784, 1636, 3425,  442, 1550, 2076,  722 },
    454     {  342,  982, 1259, 1846, 1848, 1848,  622,  568, 1847, 1052 },
    455     {  555, 1064, 1304,  828,  746, 1343, 1075, 1329, 1078,  494 },
    456     {  288, 1167, 1285, 1174, 1639, 1639,  833, 2254, 1304,  509 } },
    457   { {  342,  719,  767, 1866, 1757, 1270, 1246,  550, 1746, 2151 },
    458     {  483,  653,  694, 1509, 1459, 1410, 1218,  507, 1914, 1266 },
    459     {  488,  757,  447, 2979, 1813, 1268, 1654,  539, 1849, 2109 },
    460     {  522, 1097, 1085,  851, 1365, 1111,  851,  901,  961,  605 },
    461     {  709,  716,  841,  728,  736,  945,  941,  862, 2845, 1057 },
    462     {  512, 1323,  500, 1336, 1083,  681, 1342,  717, 1604, 1350 },
    463     {  452, 1155, 1372, 1900, 1501, 3290,  311,  944, 1919,  922 },
    464     {  403, 1520,  977, 2132, 1733, 3522, 1076,  276, 3335, 1547 },
    465     {  559, 1374, 1101,  615,  673, 2462,  974,  795,  984,  984 },
    466     {  547, 1122, 1062,  812, 1410,  951, 1140,  622, 1268,  651 } },
    467   { {  165,  982, 1235,  938, 1334, 1366, 1659, 1578,  964, 1612 },
    468     {  592,  422,  925,  847, 1139, 1112, 1387, 2036,  861, 1041 },
    469     {  403,  837,  732,  770,  941, 1658, 1250,  809, 1407, 1407 },
    470     {  896,  874, 1071,  381, 1568, 1722, 1437, 2192,  480, 1035 },
    471     {  640, 1098, 1012, 1032,  684, 1382, 1581, 2106,  416,  865 },
    472     {  559, 1005,  819,  914,  710,  770, 1418,  920,  838, 1435 },
    473     {  415, 1258, 1245,  870, 1278, 3067,  770, 1021, 1287,  522 },
    474     {  406,  990,  601, 1009, 1265, 1265, 1267,  759, 1017, 1277 },
    475     {  968, 1182, 1329,  788, 1032, 1292, 1705, 1714,  203, 1403 },
    476     {  732,  877, 1279,  471,  901, 1161, 1545, 1294,  755,  755 } },
    477   { {  111,  931, 1378, 1185, 1933, 1648, 1148, 1714, 1873, 1307 },
    478     {  406,  414, 1030, 1023, 1910, 1404, 1313, 1647, 1509,  793 },
    479     {  342,  640,  575, 1088, 1241, 1349, 1161, 1350, 1756, 1502 },
    480     {  559,  766, 1185,  357, 1682, 1428, 1329, 1897, 1219,  802 },
    481     {  473,  909, 1164,  771,  719, 2508, 1427, 1432,  722,  782 },
    482     {  342,  892,  785, 1145, 1150,  794, 1296, 1550,  973, 1057 },
    483     {  208, 1036, 1326, 1343, 1606, 3395,  815, 1455, 1618,  712 },
    484     {  228,  928,  890, 1046, 3499, 1711,  994,  829, 1720, 1318 },
    485     {  768,  724, 1058,  636,  991, 1075, 1319, 1324,  616,  825 },
    486     {  305, 1167, 1358,  899, 1587, 1587,  987, 1988, 1332,  501 } }
    487 };
    488 
    489 //------------------------------------------------------------------------------
    490 // Mode costs
    491 
    492 static int GetResidualCost(int ctx0, const VP8Residual* const res) {
    493   int n = res->first;
    494   // should be prob[VP8EncBands[n]], but it's equivalent for n=0 or 1
    495   const int p0 = res->prob[n][ctx0][0];
    496   const uint16_t* t = res->cost[n][ctx0];
    497   // bit_cost(1, p0) is already incorporated in t[] tables, but only if ctx != 0
    498   // (as required by the syntax). For ctx0 == 0, we need to add it here or it'll
    499   // be missing during the loop.
    500   int cost = (ctx0 == 0) ? VP8BitCost(1, p0) : 0;
    501 
    502   if (res->last < 0) {
    503     return VP8BitCost(0, p0);
    504   }
    505   for (; n < res->last; ++n) {
    506     const int v = abs(res->coeffs[n]);
    507     const int b = VP8EncBands[n + 1];
    508     const int ctx = (v >= 2) ? 2 : v;
    509     cost += VP8LevelCost(t, v);
    510     t = res->cost[b][ctx];
    511   }
    512   // Last coefficient is always non-zero
    513   {
    514     const int v = abs(res->coeffs[n]);
    515     assert(v != 0);
    516     cost += VP8LevelCost(t, v);
    517     if (n < 15) {
    518       const int b = VP8EncBands[n + 1];
    519       const int ctx = (v == 1) ? 1 : 2;
    520       const int last_p0 = res->prob[b][ctx][0];
    521       cost += VP8BitCost(0, last_p0);
    522     }
    523   }
    524   return cost;
    525 }
    526 
    527 //------------------------------------------------------------------------------
    528 // init function
    529 
    530 #if defined(WEBP_USE_MIPS32)
    531 extern int VP8GetResidualCostMIPS32(int ctx0, const VP8Residual* const res);
    532 #endif  // WEBP_USE_MIPS32
    533 
    534 // TODO(skal): this, and GetResidualCost(), should probably go somewhere
    535 // under src/dsp/ at some point.
    536 VP8GetResidualCostFunc VP8GetResidualCost;
    537 
    538 void VP8GetResidualCostInit(void) {
    539   VP8GetResidualCost = GetResidualCost;
    540   if (VP8GetCPUInfo != NULL) {
    541 #if defined(WEBP_USE_MIPS32)
    542     if (VP8GetCPUInfo(kMIPS32)) {
    543       VP8GetResidualCost = VP8GetResidualCostMIPS32;
    544     }
    545 #endif
    546   }
    547 }
    548 
    549 //------------------------------------------------------------------------------
    550 // helper functions for residuals struct VP8Residual.
    551 
    552 void VP8InitResidual(int first, int coeff_type,
    553                      VP8Encoder* const enc, VP8Residual* const res) {
    554   res->coeff_type = coeff_type;
    555   res->prob  = enc->proba_.coeffs_[coeff_type];
    556   res->stats = enc->proba_.stats_[coeff_type];
    557   res->cost  = enc->proba_.level_cost_[coeff_type];
    558   res->first = first;
    559 }
    560 
    561 static void SetResidualCoeffs(const int16_t* const coeffs,
    562                               VP8Residual* const res) {
    563   int n;
    564   res->last = -1;
    565   assert(res->first == 0 || coeffs[0] == 0);
    566   for (n = 15; n >= 0; --n) {
    567     if (coeffs[n]) {
    568       res->last = n;
    569       break;
    570     }
    571   }
    572   res->coeffs = coeffs;
    573 }
    574 
    575 //------------------------------------------------------------------------------
    576 // init function
    577 
    578 #if defined(WEBP_USE_SSE2)
    579 extern void VP8SetResidualCoeffsSSE2(const int16_t* const coeffs,
    580                                      VP8Residual* const res);
    581 #endif  // WEBP_USE_SSE2
    582 
    583 VP8SetResidualCoeffsFunc VP8SetResidualCoeffs;
    584 
    585 void VP8SetResidualCoeffsInit(void) {
    586   VP8SetResidualCoeffs = SetResidualCoeffs;
    587   if (VP8GetCPUInfo != NULL) {
    588 #if defined(WEBP_USE_SSE2)
    589     if (VP8GetCPUInfo(kSSE2)) {
    590       VP8SetResidualCoeffs = VP8SetResidualCoeffsSSE2;
    591     }
    592 #endif
    593   }
    594 }
    595 
    596 //------------------------------------------------------------------------------
    597 // Mode costs
    598 
    599 int VP8GetCostLuma4(VP8EncIterator* const it, const int16_t levels[16]) {
    600   const int x = (it->i4_ & 3), y = (it->i4_ >> 2);
    601   VP8Residual res;
    602   VP8Encoder* const enc = it->enc_;
    603   int R = 0;
    604   int ctx;
    605 
    606   VP8InitResidual(0, 3, enc, &res);
    607   ctx = it->top_nz_[x] + it->left_nz_[y];
    608   VP8SetResidualCoeffs(levels, &res);
    609   R += VP8GetResidualCost(ctx, &res);
    610   return R;
    611 }
    612 
    613 int VP8GetCostLuma16(VP8EncIterator* const it, const VP8ModeScore* const rd) {
    614   VP8Residual res;
    615   VP8Encoder* const enc = it->enc_;
    616   int x, y;
    617   int R = 0;
    618 
    619   VP8IteratorNzToBytes(it);   // re-import the non-zero context
    620 
    621   // DC
    622   VP8InitResidual(0, 1, enc, &res);
    623   VP8SetResidualCoeffs(rd->y_dc_levels, &res);
    624   R += VP8GetResidualCost(it->top_nz_[8] + it->left_nz_[8], &res);
    625 
    626   // AC
    627   VP8InitResidual(1, 0, enc, &res);
    628   for (y = 0; y < 4; ++y) {
    629     for (x = 0; x < 4; ++x) {
    630       const int ctx = it->top_nz_[x] + it->left_nz_[y];
    631       VP8SetResidualCoeffs(rd->y_ac_levels[x + y * 4], &res);
    632       R += VP8GetResidualCost(ctx, &res);
    633       it->top_nz_[x] = it->left_nz_[y] = (res.last >= 0);
    634     }
    635   }
    636   return R;
    637 }
    638 
    639 int VP8GetCostUV(VP8EncIterator* const it, const VP8ModeScore* const rd) {
    640   VP8Residual res;
    641   VP8Encoder* const enc = it->enc_;
    642   int ch, x, y;
    643   int R = 0;
    644 
    645   VP8IteratorNzToBytes(it);  // re-import the non-zero context
    646 
    647   VP8InitResidual(0, 2, enc, &res);
    648   for (ch = 0; ch <= 2; ch += 2) {
    649     for (y = 0; y < 2; ++y) {
    650       for (x = 0; x < 2; ++x) {
    651         const int ctx = it->top_nz_[4 + ch + x] + it->left_nz_[4 + ch + y];
    652         VP8SetResidualCoeffs(rd->uv_levels[ch * 2 + x + y * 2], &res);
    653         R += VP8GetResidualCost(ctx, &res);
    654         it->top_nz_[4 + ch + x] = it->left_nz_[4 + ch + y] = (res.last >= 0);
    655       }
    656     }
    657   }
    658   return R;
    659 }
    660 
    661 
    662 //------------------------------------------------------------------------------
    663 // Recording of token probabilities.
    664 
    665 // Record proba context used
    666 static int Record(int bit, proba_t* const stats) {
    667   proba_t p = *stats;
    668   if (p >= 0xffff0000u) {               // an overflow is inbound.
    669     p = ((p + 1u) >> 1) & 0x7fff7fffu;  // -> divide the stats by 2.
    670   }
    671   // record bit count (lower 16 bits) and increment total count (upper 16 bits).
    672   p += 0x00010000u + bit;
    673   *stats = p;
    674   return bit;
    675 }
    676 
    677 // We keep the table-free variant around for reference, in case.
    678 #define USE_LEVEL_CODE_TABLE
    679 
    680 // Simulate block coding, but only record statistics.
    681 // Note: no need to record the fixed probas.
    682 int VP8RecordCoeffs(int ctx, const VP8Residual* const res) {
    683   int n = res->first;
    684   // should be stats[VP8EncBands[n]], but it's equivalent for n=0 or 1
    685   proba_t* s = res->stats[n][ctx];
    686   if (res->last  < 0) {
    687     Record(0, s + 0);
    688     return 0;
    689   }
    690   while (n <= res->last) {
    691     int v;
    692     Record(1, s + 0);  // order of record doesn't matter
    693     while ((v = res->coeffs[n++]) == 0) {
    694       Record(0, s + 1);
    695       s = res->stats[VP8EncBands[n]][0];
    696     }
    697     Record(1, s + 1);
    698     if (!Record(2u < (unsigned int)(v + 1), s + 2)) {  // v = -1 or 1
    699       s = res->stats[VP8EncBands[n]][1];
    700     } else {
    701       v = abs(v);
    702 #if !defined(USE_LEVEL_CODE_TABLE)
    703       if (!Record(v > 4, s + 3)) {
    704         if (Record(v != 2, s + 4))
    705           Record(v == 4, s + 5);
    706       } else if (!Record(v > 10, s + 6)) {
    707         Record(v > 6, s + 7);
    708       } else if (!Record((v >= 3 + (8 << 2)), s + 8)) {
    709         Record((v >= 3 + (8 << 1)), s + 9);
    710       } else {
    711         Record((v >= 3 + (8 << 3)), s + 10);
    712       }
    713 #else
    714       if (v > MAX_VARIABLE_LEVEL) {
    715         v = MAX_VARIABLE_LEVEL;
    716       }
    717 
    718       {
    719         const int bits = VP8LevelCodes[v - 1][1];
    720         int pattern = VP8LevelCodes[v - 1][0];
    721         int i;
    722         for (i = 0; (pattern >>= 1) != 0; ++i) {
    723           const int mask = 2 << i;
    724           if (pattern & 1) Record(!!(bits & mask), s + 3 + i);
    725         }
    726       }
    727 #endif
    728       s = res->stats[VP8EncBands[n]][2];
    729     }
    730   }
    731   if (n < 16) Record(0, s + 0);
    732   return 1;
    733 }
    734 
    735 //------------------------------------------------------------------------------
    736