Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * Copyright (C) 2010 David Conrad
  3.  * Copyright (C) 2010 Ronald S. Bultje
  4.  *
  5.  * This file is part of FFmpeg.
  6.  *
  7.  * FFmpeg is free software; you can redistribute it and/or
  8.  * modify it under the terms of the GNU Lesser General Public
  9.  * License as published by the Free Software Foundation; either
  10.  * version 2.1 of the License, or (at your option) any later version.
  11.  *
  12.  * FFmpeg is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15.  * Lesser General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU Lesser General Public
  18.  * License along with FFmpeg; if not, write to the Free Software
  19.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  20.  */
  21.  
  22. /**
  23.  * @file
  24.  * VP8 compatible video decoder
  25.  */
  26.  
  27. #ifndef AVCODEC_VP8DATA_H
  28. #define AVCODEC_VP8DATA_H
  29.  
  30. #include "vp8.h"
  31. #include "h264pred.h"
  32.  
  33. static const uint8_t vp8_pred4x4_mode[] =
  34. {
  35.     [DC_PRED8x8]    = DC_PRED,
  36.     [VERT_PRED8x8]  = VERT_PRED,
  37.     [HOR_PRED8x8]   = HOR_PRED,
  38.     [PLANE_PRED8x8] = TM_VP8_PRED,
  39. };
  40.  
  41. static const int8_t vp8_pred16x16_tree_intra[4][2] =
  42. {
  43.     { -MODE_I4x4, 1 },                      // '0'
  44.      { 2, 3 },
  45.       {  -DC_PRED8x8,  -VERT_PRED8x8 },     // '100', '101'
  46.       { -HOR_PRED8x8, -PLANE_PRED8x8 },     // '110', '111'
  47. };
  48.  
  49. static const int8_t vp8_pred16x16_tree_inter[4][2] =
  50. {
  51.     { -DC_PRED8x8, 1 },                     // '0'
  52.      { 2, 3 },
  53.       {  -VERT_PRED8x8, -HOR_PRED8x8 },     // '100', '101'
  54.       { -PLANE_PRED8x8, -MODE_I4x4 },       // '110', '111'
  55. };
  56.  
  57. static const int vp8_mode_contexts[6][4] = {
  58.     {   7,   1,   1, 143 },
  59.     {  14,  18,  14, 107 },
  60.     { 135,  64,  57,  68 },
  61.     {  60,  56, 128,  65 },
  62.     { 159, 134, 128,  34 },
  63.     { 234, 188, 128,  28 },
  64. };
  65.  
  66. static const uint8_t vp8_mbsplits[5][16] = {
  67.     {  0,  0,  0,  0,  0,  0,  0,  0,
  68.        1,  1,  1,  1,  1,  1,  1,  1  },
  69.     {  0,  0,  1,  1,  0,  0,  1,  1,
  70.        0,  0,  1,  1,  0,  0,  1,  1  },
  71.     {  0,  0,  1,  1,  0,  0,  1,  1,
  72.        2,  2,  3,  3,  2,  2,  3,  3  },
  73.     {  0,  1,  2,  3,  4,  5,  6,  7,
  74.        8,  9, 10, 11, 12, 13, 14, 15  },
  75.     {  0,  0,  0,  0,  0,  0,  0,  0,
  76.        0,  0,  0,  0,  0,  0,  0,  0  }
  77. };
  78.  
  79. static const uint8_t vp8_mbfirstidx[4][16] = {
  80.     {  0,  8 }, {  0,  2 }, {  0,  2,  8,  10 },
  81.     {  0,  1,  2,  3,  4,  5,  6,  7,
  82.        8,  9, 10, 11, 12, 13, 14, 15 }
  83. };
  84.  
  85. static const uint8_t vp8_mbsplit_count[4] = {   2,   2,   4,  16 };
  86. static const uint8_t vp8_mbsplit_prob[3]  = { 110, 111, 150 };
  87.  
  88. static const uint8_t vp8_submv_prob[5][3] = {
  89.     { 147, 136,  18 },
  90.     { 106, 145,   1 },
  91.     { 179, 121,   1 },
  92.     { 223,   1,  34 },
  93.     { 208,   1,   1 }
  94. };
  95.  
  96. static const uint8_t vp8_pred16x16_prob_intra[4] = { 145, 156, 163, 128 };
  97. static const uint8_t vp8_pred16x16_prob_inter[4] = { 112,  86, 140,  37 };
  98.  
  99. static const int8_t vp8_pred4x4_tree[9][2] =
  100. {
  101.     { -DC_PRED, 1 },                                    // '0'
  102.      { -TM_VP8_PRED, 2 },                               // '10'
  103.       { -VERT_PRED, 3 },                                // '110'
  104.        { 4, 6 },
  105.         { -HOR_PRED, 5 },                               // '11100'
  106.          { -DIAG_DOWN_RIGHT_PRED, -VERT_RIGHT_PRED },   // '111010', '111011'
  107.         { -DIAG_DOWN_LEFT_PRED, 7 },                    // '11110'
  108.          { -VERT_LEFT_PRED, 8 },                        // '111110'
  109.           { -HOR_DOWN_PRED, -HOR_UP_PRED },             // '1111110', '1111111'
  110. };
  111.  
  112. static const int8_t vp8_pred8x8c_tree[3][2] =
  113. {
  114.     { -DC_PRED8x8, 1 },                 // '0'
  115.      { -VERT_PRED8x8, 2 },              // '10
  116.       { -HOR_PRED8x8, -PLANE_PRED8x8 }, // '110', '111'
  117. };
  118.  
  119. static const uint8_t vp8_pred8x8c_prob_intra[3] = { 142, 114, 183 };
  120. static const uint8_t vp8_pred8x8c_prob_inter[3] = { 162, 101, 204 };
  121.  
  122. static const uint8_t vp8_pred4x4_prob_inter[9] =
  123. {
  124.     120, 90, 79, 133, 87, 85, 80, 111, 151
  125. };
  126.  
  127. static const uint8_t vp8_pred4x4_prob_intra[10][10][9] =
  128. {
  129.     {
  130.         {  39,  53, 200,  87,  26,  21,  43, 232, 171 },
  131.         {  56,  34,  51, 104, 114, 102,  29,  93,  77 },
  132.         {  88,  88, 147, 150,  42,  46,  45, 196, 205 },
  133.         { 107,  54,  32,  26,  51,   1,  81,  43,  31 },
  134.         {  39,  28,  85, 171,  58, 165,  90,  98,  64 },
  135.         {  34,  22, 116, 206,  23,  34,  43, 166,  73 },
  136.         {  34,  19,  21, 102, 132, 188,  16,  76, 124 },
  137.         {  68,  25, 106,  22,  64, 171,  36, 225, 114 },
  138.         {  62,  18,  78,  95,  85,  57,  50,  48,  51 },
  139.         {  43,  97, 183, 117,  85,  38,  35, 179,  61 },
  140.     },
  141.     {
  142.         { 112, 113,  77,  85, 179, 255,  38, 120, 114 },
  143.         {  40,  42,   1, 196, 245, 209,  10,  25, 109 },
  144.         { 193, 101,  35, 159, 215, 111,  89,  46, 111 },
  145.         { 100,  80,   8,  43, 154,   1,  51,  26,  71 },
  146.         {  88,  43,  29, 140, 166, 213,  37,  43, 154 },
  147.         {  61,  63,  30, 155,  67,  45,  68,   1, 209 },
  148.         {  41,  40,   5, 102, 211, 183,   4,   1, 221 },
  149.         { 142,  78,  78,  16, 255, 128,  34, 197, 171 },
  150.         {  51,  50,  17, 168, 209, 192,  23,  25,  82 },
  151.         {  60, 148,  31, 172, 219, 228,  21,  18, 111 },
  152.     },
  153.     {
  154.         { 175,  69, 143,  80,  85,  82,  72, 155, 103 },
  155.         {  56,  58,  10, 171, 218, 189,  17,  13, 152 },
  156.         { 231, 120,  48,  89, 115, 113, 120, 152, 112 },
  157.         { 144,  71,  10,  38, 171, 213, 144,  34,  26 },
  158.         { 114,  26,  17, 163,  44, 195,  21,  10, 173 },
  159.         { 121,  24,  80, 195,  26,  62,  44,  64,  85 },
  160.         {  63,  20,   8, 114, 114, 208,  12,   9, 226 },
  161.         { 170,  46,  55,  19, 136, 160,  33, 206,  71 },
  162.         {  81,  40,  11,  96, 182,  84,  29,  16,  36 },
  163.         { 152, 179,  64, 126, 170, 118,  46,  70,  95 },
  164.     },
  165.     {
  166.         {  75,  79, 123,  47,  51, 128,  81, 171,   1 },
  167.         {  57,  17,   5,  71, 102,  57,  53,  41,  49 },
  168.         { 125,  98,  42,  88, 104,  85, 117, 175,  82 },
  169.         { 115,  21,   2,  10, 102, 255, 166,  23,   6 },
  170.         {  38,  33,  13, 121,  57,  73,  26,   1,  85 },
  171.         {  41,  10,  67, 138,  77, 110,  90,  47, 114 },
  172.         {  57,  18,  10, 102, 102, 213,  34,  20,  43 },
  173.         { 101,  29,  16,  10,  85, 128, 101, 196,  26 },
  174.         { 117,  20,  15,  36, 163, 128,  68,   1,  26 },
  175.         {  95,  84,  53,  89, 128, 100, 113, 101,  45 },
  176.     },
  177.     {
  178.         {  63,  59,  90, 180,  59, 166,  93,  73, 154 },
  179.         {  40,  40,  21, 116, 143, 209,  34,  39, 175 },
  180.         { 138,  31,  36, 171,  27, 166,  38,  44, 229 },
  181.         {  57,  46,  22,  24, 128,   1,  54,  17,  37 },
  182.         {  47,  15,  16, 183,  34, 223,  49,  45, 183 },
  183.         {  46,  17,  33, 183,   6,  98,  15,  32, 183 },
  184.         {  40,   3,   9, 115,  51, 192,  18,   6, 223 },
  185.         {  65,  32,  73, 115,  28, 128,  23, 128, 205 },
  186.         {  87,  37,   9, 115,  59,  77,  64,  21,  47 },
  187.         {  67,  87,  58, 169,  82, 115,  26,  59, 179 },
  188.     },
  189.     {
  190.         {  54,  57, 112, 184,   5,  41,  38, 166, 213 },
  191.         {  30,  34,  26, 133, 152, 116,  10,  32, 134 },
  192.         { 104,  55,  44, 218,   9,  54,  53, 130, 226 },
  193.         {  75,  32,  12,  51, 192, 255, 160,  43,  51 },
  194.         {  39,  19,  53, 221,  26, 114,  32,  73, 255 },
  195.         {  31,   9,  65, 234,   2,  15,   1, 118,  73 },
  196.         {  56,  21,  23, 111,  59, 205,  45,  37, 192 },
  197.         {  88,  31,  35,  67, 102,  85,  55, 186,  85 },
  198.         {  55,  38,  70, 124,  73, 102,   1,  34,  98 },
  199.         {  64,  90,  70, 205,  40,  41,  23,  26,  57 },
  200.     },
  201.     {
  202.         {  86,  40,  64, 135, 148, 224,  45, 183, 128 },
  203.         {  22,  26,  17, 131, 240, 154,  14,   1, 209 },
  204.         { 164,  50,  31, 137, 154, 133,  25,  35, 218 },
  205.         {  83,  12,  13,  54, 192, 255,  68,  47,  28 },
  206.         {  45,  16,  21,  91,  64, 222,   7,   1, 197 },
  207.         {  56,  21,  39, 155,  60, 138,  23, 102, 213 },
  208.         {  18,  11,   7,  63, 144, 171,   4,   4, 246 },
  209.         {  85,  26,  85,  85, 128, 128,  32, 146, 171 },
  210.         {  35,  27,  10, 146, 174, 171,  12,  26, 128 },
  211.         {  51, 103,  44, 131, 131, 123,  31,   6, 158 },
  212.     },
  213.     {
  214.         {  68,  45, 128,  34,   1,  47,  11, 245, 171 },
  215.         {  62,  17,  19,  70, 146,  85,  55,  62,  70 },
  216.         { 102,  61,  71,  37,  34,  53,  31, 243, 192 },
  217.         {  75,  15,   9,   9,  64, 255, 184, 119,  16 },
  218.         {  37,  43,  37, 154, 100, 163,  85, 160,   1 },
  219.         {  63,   9,  92, 136,  28,  64,  32, 201,  85 },
  220.         {  56,   8,  17, 132, 137, 255,  55, 116, 128 },
  221.         {  86,   6,  28,   5,  64, 255,  25, 248,   1 },
  222.         {  58,  15,  20,  82, 135,  57,  26, 121,  40 },
  223.         {  69,  60,  71,  38,  73, 119,  28, 222,  37 },
  224.     },
  225.     {
  226.         { 101,  75, 128, 139, 118, 146, 116, 128,  85 },
  227.         {  56,  41,  15, 176, 236,  85,  37,   9,  62 },
  228.         { 190,  80,  35,  99, 180,  80, 126,  54,  45 },
  229.         { 146,  36,  19,  30, 171, 255,  97,  27,  20 },
  230.         {  71,  30,  17, 119, 118, 255,  17,  18, 138 },
  231.         { 101,  38,  60, 138,  55,  70,  43,  26, 142 },
  232.         {  32,  41,  20, 117, 151, 142,  20,  21, 163 },
  233.         { 138,  45,  61,  62, 219,   1,  81, 188,  64 },
  234.         { 112,  19,  12,  61, 195, 128,  48,   4,  24 },
  235.         {  85, 126,  47,  87, 176,  51,  41,  20,  32 },
  236.     },
  237.     {
  238.         {  66, 102, 167,  99,  74,  62,  40, 234, 128 },
  239.         {  41,  53,   9, 178, 241, 141,  26,   8, 107 },
  240.         { 134, 183,  89, 137,  98, 101, 106, 165, 148 },
  241.         { 104,  79,  12,  27, 217, 255,  87,  17,   7 },
  242.         {  74,  43,  26, 146,  73, 166,  49,  23, 157 },
  243.         {  65,  38, 105, 160,  51,  52,  31, 115, 128 },
  244.         {  47,  41,  14, 110, 182, 183,  21,  17, 194 },
  245.         {  87,  68,  71,  44, 114,  51,  15, 186,  23 },
  246.         {  66,  45,  25, 102, 197, 189,  23,  18,  22 },
  247.         {  72, 187, 100, 130, 157, 111,  32,  75,  80 },
  248.     },
  249. };
  250.  
  251. static const int8_t vp8_segmentid_tree[][2] =
  252. {
  253.     { 1, 2 },
  254.      { -0, -1 },    // '00', '01'
  255.      { -2, -3 },    // '10', '11'
  256. };
  257.  
  258. static const uint8_t vp8_coeff_band[16] =
  259. {
  260.     0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7
  261. };
  262.  
  263. /* Inverse of vp8_coeff_band: mappings of bands to coefficient indexes.
  264.  * Each list is -1-terminated. */
  265. static const int8_t vp8_coeff_band_indexes[8][10] =
  266. {
  267.     {0, -1},
  268.     {1, -1},
  269.     {2, -1},
  270.     {3, -1},
  271.     {5, -1},
  272.     {6, -1},
  273.     {4, 7, 8, 9, 10, 11, 12, 13, 14, -1},
  274.     {15, -1}
  275. };
  276.  
  277. static const uint8_t vp8_dct_cat1_prob[] = { 159, 0 };
  278. static const uint8_t vp8_dct_cat2_prob[] = { 165, 145, 0 };
  279. static const uint8_t vp8_dct_cat3_prob[] = { 173, 148, 140, 0 };
  280. static const uint8_t vp8_dct_cat4_prob[] = { 176, 155, 140, 135, 0 };
  281. static const uint8_t vp8_dct_cat5_prob[] = { 180, 157, 141, 134, 130, 0 };
  282. static const uint8_t vp8_dct_cat6_prob[] = { 254, 254, 243, 230, 196, 177, 153, 140, 133, 130, 129, 0 };
  283.  
  284. // only used for cat3 and above; cat 1 and 2 are referenced directly
  285. const uint8_t * const ff_vp8_dct_cat_prob[] =
  286. {
  287.     vp8_dct_cat3_prob,
  288.     vp8_dct_cat4_prob,
  289.     vp8_dct_cat5_prob,
  290.     vp8_dct_cat6_prob,
  291. };
  292.  
  293. static const uint8_t vp8_token_default_probs[4][8][3][NUM_DCT_TOKENS-1] =
  294. {
  295.     {
  296.         {
  297.             { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
  298.             { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
  299.             { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
  300.         },
  301.         {
  302.             { 253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128 },
  303.             { 189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128 },
  304.             { 106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128 },
  305.         },
  306.         {
  307.             {   1,  98, 248, 255, 236, 226, 255, 255, 128, 128, 128 },
  308.             { 181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128 },
  309.             {  78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128 },
  310.         },
  311.         {
  312.             {   1, 185, 249, 255, 243, 255, 128, 128, 128, 128, 128 },
  313.             { 184, 150, 247, 255, 236, 224, 128, 128, 128, 128, 128 },
  314.             {  77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128 },
  315.         },
  316.         {
  317.             {   1, 101, 251, 255, 241, 255, 128, 128, 128, 128, 128 },
  318.             { 170, 139, 241, 252, 236, 209, 255, 255, 128, 128, 128 },
  319.             {  37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128 },
  320.         },
  321.         {
  322.             {   1, 204, 254, 255, 245, 255, 128, 128, 128, 128, 128 },
  323.             { 207, 160, 250, 255, 238, 128, 128, 128, 128, 128, 128 },
  324.             { 102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128 },
  325.         },
  326.         {
  327.             {   1, 152, 252, 255, 240, 255, 128, 128, 128, 128, 128 },
  328.             { 177, 135, 243, 255, 234, 225, 128, 128, 128, 128, 128 },
  329.             {  80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128 },
  330.         },
  331.         {
  332.             {   1,   1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
  333.             { 246,   1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
  334.             { 255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
  335.         },
  336.     },
  337.     {
  338.         {
  339.             { 198,  35, 237, 223, 193, 187, 162, 160, 145, 155,  62 },
  340.             { 131,  45, 198, 221, 172, 176, 220, 157, 252, 221,   1 },
  341.             {  68,  47, 146, 208, 149, 167, 221, 162, 255, 223, 128 },
  342.         },
  343.         {
  344.             {   1, 149, 241, 255, 221, 224, 255, 255, 128, 128, 128 },
  345.             { 184, 141, 234, 253, 222, 220, 255, 199, 128, 128, 128 },
  346.             {  81,  99, 181, 242, 176, 190, 249, 202, 255, 255, 128 },
  347.         },
  348.         {
  349.             {   1, 129, 232, 253, 214, 197, 242, 196, 255, 255, 128 },
  350.             {  99, 121, 210, 250, 201, 198, 255, 202, 128, 128, 128 },
  351.             {  23,  91, 163, 242, 170, 187, 247, 210, 255, 255, 128 },
  352.         },
  353.         {
  354.             {   1, 200, 246, 255, 234, 255, 128, 128, 128, 128, 128 },
  355.             { 109, 178, 241, 255, 231, 245, 255, 255, 128, 128, 128 },
  356.             {  44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128 },
  357.         },
  358.         {
  359.             {   1, 132, 239, 251, 219, 209, 255, 165, 128, 128, 128 },
  360.             {  94, 136, 225, 251, 218, 190, 255, 255, 128, 128, 128 },
  361.             {  22, 100, 174, 245, 186, 161, 255, 199, 128, 128, 128 },
  362.         },
  363.         {
  364.             {   1, 182, 249, 255, 232, 235, 128, 128, 128, 128, 128 },
  365.             { 124, 143, 241, 255, 227, 234, 128, 128, 128, 128, 128 },
  366.             {  35,  77, 181, 251, 193, 211, 255, 205, 128, 128, 128 },
  367.         },
  368.         {
  369.             {   1, 157, 247, 255, 236, 231, 255, 255, 128, 128, 128 },
  370.             { 121, 141, 235, 255, 225, 227, 255, 255, 128, 128, 128 },
  371.             {  45,  99, 188, 251, 195, 217, 255, 224, 128, 128, 128 },
  372.         },
  373.         {
  374.             {   1,   1, 251, 255, 213, 255, 128, 128, 128, 128, 128 },
  375.             { 203,   1, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
  376.             { 137,   1, 177, 255, 224, 255, 128, 128, 128, 128, 128 },
  377.         },
  378.     },
  379.     {
  380.         {
  381.             { 253,   9, 248, 251, 207, 208, 255, 192, 128, 128, 128 },
  382.             { 175,  13, 224, 243, 193, 185, 249, 198, 255, 255, 128 },
  383.             {  73,  17, 171, 221, 161, 179, 236, 167, 255, 234, 128 },
  384.         },
  385.         {
  386.             {   1,  95, 247, 253, 212, 183, 255, 255, 128, 128, 128 },
  387.             { 239,  90, 244, 250, 211, 209, 255, 255, 128, 128, 128 },
  388.             { 155,  77, 195, 248, 188, 195, 255, 255, 128, 128, 128 },
  389.         },
  390.         {
  391.             {   1,  24, 239, 251, 218, 219, 255, 205, 128, 128, 128 },
  392.             { 201,  51, 219, 255, 196, 186, 128, 128, 128, 128, 128 },
  393.             {  69,  46, 190, 239, 201, 218, 255, 228, 128, 128, 128 },
  394.         },
  395.         {
  396.             {   1, 191, 251, 255, 255, 128, 128, 128, 128, 128, 128 },
  397.             { 223, 165, 249, 255, 213, 255, 128, 128, 128, 128, 128 },
  398.             { 141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
  399.         },
  400.         {
  401.             {   1,  16, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
  402.             { 190,  36, 230, 255, 236, 255, 128, 128, 128, 128, 128 },
  403.             { 149,   1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
  404.         },
  405.         {
  406.             {   1, 226, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
  407.             { 247, 192, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
  408.             { 240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
  409.         },
  410.         {
  411.             {   1, 134, 252, 255, 255, 128, 128, 128, 128, 128, 128 },
  412.             { 213,  62, 250, 255, 255, 128, 128, 128, 128, 128, 128 },
  413.             {  55,  93, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
  414.         },
  415.         {
  416.             { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
  417.             { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
  418.             { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
  419.         },
  420.     },
  421.     {
  422.         {
  423.             { 202,  24, 213, 235, 186, 191, 220, 160, 240, 175, 255 },
  424.             { 126,  38, 182, 232, 169, 184, 228, 174, 255, 187, 128 },
  425.             {  61,  46, 138, 219, 151, 178, 240, 170, 255, 216, 128 },
  426.         },
  427.         {
  428.             {   1, 112, 230, 250, 199, 191, 247, 159, 255, 255, 128 },
  429.             { 166, 109, 228, 252, 211, 215, 255, 174, 128, 128, 128 },
  430.             {  39,  77, 162, 232, 172, 180, 245, 178, 255, 255, 128 },
  431.         },
  432.         {
  433.             {   1,  52, 220, 246, 198, 199, 249, 220, 255, 255, 128 },
  434.             { 124,  74, 191, 243, 183, 193, 250, 221, 255, 255, 128 },
  435.             {  24,  71, 130, 219, 154, 170, 243, 182, 255, 255, 128 },
  436.         },
  437.         {
  438.             {   1, 182, 225, 249, 219, 240, 255, 224, 128, 128, 128 },
  439.             { 149, 150, 226, 252, 216, 205, 255, 171, 128, 128, 128 },
  440.             {  28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128 },
  441.         },
  442.         {
  443.             {   1,  81, 230, 252, 204, 203, 255, 192, 128, 128, 128 },
  444.             { 123, 102, 209, 247, 188, 196, 255, 233, 128, 128, 128 },
  445.             {  20,  95, 153, 243, 164, 173, 255, 203, 128, 128, 128 },
  446.         },
  447.         {
  448.             {   1, 222, 248, 255, 216, 213, 128, 128, 128, 128, 128 },
  449.             { 168, 175, 246, 252, 235, 205, 255, 255, 128, 128, 128 },
  450.             {  47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128 },
  451.         },
  452.         {
  453.             {   1, 121, 236, 253, 212, 214, 255, 255, 128, 128, 128 },
  454.             { 141,  84, 213, 252, 201, 202, 255, 219, 128, 128, 128 },
  455.             {  42,  80, 160, 240, 162, 185, 255, 205, 128, 128, 128 },
  456.         },
  457.         {
  458.             {   1,   1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
  459.             { 244,   1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
  460.             { 238,   1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
  461.         },
  462.     },
  463. };
  464.  
  465. static const uint8_t vp8_token_update_probs[4][8][3][NUM_DCT_TOKENS-1] =
  466. {
  467.     {
  468.         {
  469.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  470.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  471.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  472.         },
  473.         {
  474.             { 176, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  475.             { 223, 241, 252, 255, 255, 255, 255, 255, 255, 255, 255 },
  476.             { 249, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
  477.         },
  478.         {
  479.             { 255, 244, 252, 255, 255, 255, 255, 255, 255, 255, 255 },
  480.             { 234, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
  481.             { 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  482.         },
  483.         {
  484.             { 255, 246, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
  485.             { 239, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
  486.             { 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
  487.         },
  488.         {
  489.             { 255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
  490.             { 251, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
  491.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  492.         },
  493.         {
  494.             { 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
  495.             { 251, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
  496.             { 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
  497.         },
  498.         {
  499.             { 255, 254, 253, 255, 254, 255, 255, 255, 255, 255, 255 },
  500.             { 250, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255 },
  501.             { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  502.         },
  503.         {
  504.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  505.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  506.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  507.         },
  508.     },
  509.     {
  510.         {
  511.             { 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  512.             { 225, 252, 241, 253, 255, 255, 254, 255, 255, 255, 255 },
  513.             { 234, 250, 241, 250, 253, 255, 253, 254, 255, 255, 255 },
  514.         },
  515.         {
  516.             { 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  517.             { 223, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
  518.             { 238, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255 },
  519.         },
  520.         {
  521.             { 255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
  522.             { 249, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  523.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  524.         },
  525.         {
  526.             { 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  527.             { 247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  528.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  529.         },
  530.         {
  531.             { 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
  532.             { 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  533.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  534.         },
  535.         {
  536.             { 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
  537.             { 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  538.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  539.         },
  540.         {
  541.             { 255, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
  542.             { 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  543.             { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  544.         },
  545.         {
  546.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  547.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  548.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  549.         },
  550.     },
  551.     {
  552.         {
  553.             { 186, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255 },
  554.             { 234, 251, 244, 254, 255, 255, 255, 255, 255, 255, 255 },
  555.             { 251, 251, 243, 253, 254, 255, 254, 255, 255, 255, 255 },
  556.         },
  557.         {
  558.             { 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
  559.             { 236, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
  560.             { 251, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255 },
  561.         },
  562.         {
  563.             { 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
  564.             { 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
  565.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  566.         },
  567.         {
  568.             { 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  569.             { 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  570.             { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  571.         },
  572.         {
  573.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  574.             { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  575.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  576.         },
  577.         {
  578.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  579.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  580.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  581.         },
  582.         {
  583.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  584.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  585.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  586.         },
  587.         {
  588.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  589.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  590.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  591.         },
  592.     },
  593.     {
  594.         {
  595.             { 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  596.             { 250, 254, 252, 254, 255, 255, 255, 255, 255, 255, 255 },
  597.             { 248, 254, 249, 253, 255, 255, 255, 255, 255, 255, 255 },
  598.         },
  599.         {
  600.             { 255, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
  601.             { 246, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
  602.             { 252, 254, 251, 254, 254, 255, 255, 255, 255, 255, 255 },
  603.         },
  604.         {
  605.             { 255, 254, 252, 255, 255, 255, 255, 255, 255, 255, 255 },
  606.             { 248, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
  607.             { 253, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255 },
  608.         },
  609.         {
  610.             { 255, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
  611.             { 245, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
  612.             { 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
  613.         },
  614.         {
  615.             { 255, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
  616.             { 252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
  617.             { 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  618.         },
  619.         {
  620.             { 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  621.             { 249, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
  622.             { 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
  623.         },
  624.         {
  625.             { 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
  626.             { 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  627.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  628.         },
  629.         {
  630.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  631.             { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  632.             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
  633.         },
  634.     },
  635. };
  636.  
  637. // fixme: copied from h264data.h
  638. static const uint8_t zigzag_scan[16]={
  639.     0+0*4, 1+0*4, 0+1*4, 0+2*4,
  640.     1+1*4, 2+0*4, 3+0*4, 2+1*4,
  641.     1+2*4, 0+3*4, 1+3*4, 2+2*4,
  642.     3+1*4, 3+2*4, 2+3*4, 3+3*4,
  643. };
  644.  
  645. static const uint8_t vp8_dc_qlookup[VP8_MAX_QUANT+1] =
  646. {
  647.       4,   5,   6,   7,   8,   9,  10,  10,  11,  12,  13,  14,  15,  16,  17,  17,
  648.      18,  19,  20,  20,  21,  21,  22,  22,  23,  23,  24,  25,  25,  26,  27,  28,
  649.      29,  30,  31,  32,  33,  34,  35,  36,  37,  37,  38,  39,  40,  41,  42,  43,
  650.      44,  45,  46,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,
  651.      59,  60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
  652.      75,  76,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
  653.      91,  93,  95,  96,  98, 100, 101, 102, 104, 106, 108, 110, 112, 114, 116, 118,
  654.     122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 143, 145, 148, 151, 154, 157,
  655. };
  656.  
  657. static const uint16_t vp8_ac_qlookup[VP8_MAX_QUANT+1] =
  658. {
  659.       4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,  16,  17,  18,  19,
  660.      20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,  32,  33,  34,  35,
  661.      36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,  48,  49,  50,  51,
  662.      52,  53,  54,  55,  56,  57,  58,  60,  62,  64,  66,  68,  70,  72,  74,  76,
  663.      78,  80,  82,  84,  86,  88,  90,  92,  94,  96,  98, 100, 102, 104, 106, 108,
  664.     110, 112, 114, 116, 119, 122, 125, 128, 131, 134, 137, 140, 143, 146, 149, 152,
  665.     155, 158, 161, 164, 167, 170, 173, 177, 181, 185, 189, 193, 197, 201, 205, 209,
  666.     213, 217, 221, 225, 229, 234, 239, 245, 249, 254, 259, 264, 269, 274, 279, 284,
  667. };
  668.  
  669. static const uint8_t vp8_mv_update_prob[2][19] = {
  670.     { 237,
  671.       246,
  672.       253, 253, 254, 254, 254, 254, 254,
  673.       254, 254, 254, 254, 254, 250, 250, 252, 254, 254 },
  674.     { 231,
  675.       243,
  676.       245, 253, 254, 254, 254, 254, 254,
  677.       254, 254, 254, 254, 254, 251, 251, 254, 254, 254 }
  678. };
  679.  
  680. static const uint8_t vp8_mv_default_prob[2][19] = {
  681.     { 162,
  682.       128,
  683.       225, 146, 172, 147, 214, 39, 156,
  684.       128, 129, 132,  75, 145, 178, 206, 239, 254, 254 },
  685.     { 164,
  686.       128,
  687.       204, 170, 119, 235, 140, 230, 228,
  688.       128, 130, 130,  74, 148, 180, 203, 236, 254, 254 }
  689. };
  690.  
  691. #endif /* AVCODEC_VP8DATA_H */
  692.