• Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files
  • Examples
  • File List
  • Globals

libavcodec/vp8data.h

Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 2010 David Conrad
00003  * Copyright (C) 2010 Ronald S. Bultje
00004  *
00005  * This file is part of Libav.
00006  *
00007  * Libav is free software; you can redistribute it and/or
00008  * modify it under the terms of the GNU Lesser General Public
00009  * License as published by the Free Software Foundation; either
00010  * version 2.1 of the License, or (at your option) any later version.
00011  *
00012  * Libav is distributed in the hope that it will be useful,
00013  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00015  * Lesser General Public License for more details.
00016  *
00017  * You should have received a copy of the GNU Lesser General Public
00018  * License along with Libav; if not, write to the Free Software
00019  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
00020  */
00021 
00027 #ifndef AVCODEC_VP8DATA_H
00028 #define AVCODEC_VP8DATA_H
00029 
00030 #include "vp8.h"
00031 #include "h264pred.h"
00032 
00033 static const uint8_t vp8_pred4x4_mode[] =
00034 {
00035     [DC_PRED8x8]    = DC_PRED,
00036     [VERT_PRED8x8]  = VERT_PRED,
00037     [HOR_PRED8x8]   = HOR_PRED,
00038     [PLANE_PRED8x8] = TM_VP8_PRED,
00039 };
00040 
00041 static const int8_t vp8_pred16x16_tree_intra[4][2] =
00042 {
00043     { -MODE_I4x4, 1 },                      // '0'
00044      { 2, 3 },
00045       {  -DC_PRED8x8,  -VERT_PRED8x8 },     // '100', '101'
00046       { -HOR_PRED8x8, -PLANE_PRED8x8 },     // '110', '111'
00047 };
00048 
00049 static const int8_t vp8_pred16x16_tree_inter[4][2] =
00050 {
00051     { -DC_PRED8x8, 1 },                     // '0'
00052      { 2, 3 },
00053       {  -VERT_PRED8x8, -HOR_PRED8x8 },     // '100', '101'
00054       { -PLANE_PRED8x8, -MODE_I4x4 },       // '110', '111'
00055 };
00056 
00057 static const int vp8_mode_contexts[6][4] = {
00058     {   7,   1,   1, 143 },
00059     {  14,  18,  14, 107 },
00060     { 135,  64,  57,  68 },
00061     {  60,  56, 128,  65 },
00062     { 159, 134, 128,  34 },
00063     { 234, 188, 128,  28 },
00064 };
00065 
00066 static const uint8_t vp8_mbsplits[5][16] = {
00067     {  0,  0,  0,  0,  0,  0,  0,  0,
00068        1,  1,  1,  1,  1,  1,  1,  1  },
00069     {  0,  0,  1,  1,  0,  0,  1,  1,
00070        0,  0,  1,  1,  0,  0,  1,  1  },
00071     {  0,  0,  1,  1,  0,  0,  1,  1,
00072        2,  2,  3,  3,  2,  2,  3,  3  },
00073     {  0,  1,  2,  3,  4,  5,  6,  7,
00074        8,  9, 10, 11, 12, 13, 14, 15  },
00075     {  0,  0,  0,  0,  0,  0,  0,  0,
00076        0,  0,  0,  0,  0,  0,  0,  0  }
00077 };
00078 
00079 static const uint8_t vp8_mbfirstidx[4][16] = {
00080     {  0,  8 }, {  0,  2 }, {  0,  2,  8,  10 },
00081     {  0,  1,  2,  3,  4,  5,  6,  7,
00082        8,  9, 10, 11, 12, 13, 14, 15 }
00083 };
00084 
00085 static const uint8_t vp8_mbsplit_count[4] = {   2,   2,   4,  16 };
00086 static const uint8_t vp8_mbsplit_prob[3]  = { 110, 111, 150 };
00087 
00088 static const uint8_t vp8_submv_prob[5][3] = {
00089     { 147, 136,  18 },
00090     { 106, 145,   1 },
00091     { 179, 121,   1 },
00092     { 223,   1,  34 },
00093     { 208,   1,   1 }
00094 };
00095 
00096 static const uint8_t vp8_pred16x16_prob_intra[4] = { 145, 156, 163, 128 };
00097 static const uint8_t vp8_pred16x16_prob_inter[4] = { 112,  86, 140,  37 };
00098 
00099 static const int8_t vp8_pred4x4_tree[9][2] =
00100 {
00101     { -DC_PRED, 1 },                                    // '0'
00102      { -TM_VP8_PRED, 2 },                               // '10'
00103       { -VERT_PRED, 3 },                                // '110'
00104        { 4, 6 },
00105         { -HOR_PRED, 5 },                               // '11100'
00106          { -DIAG_DOWN_RIGHT_PRED, -VERT_RIGHT_PRED },   // '111010', '111011'
00107         { -DIAG_DOWN_LEFT_PRED, 7 },                    // '11110'
00108          { -VERT_LEFT_PRED, 8 },                        // '111110'
00109           { -HOR_DOWN_PRED, -HOR_UP_PRED },             // '1111110', '1111111'
00110 };
00111 
00112 static const int8_t vp8_pred8x8c_tree[3][2] =
00113 {
00114     { -DC_PRED8x8, 1 },                 // '0'
00115      { -VERT_PRED8x8, 2 },              // '10
00116       { -HOR_PRED8x8, -PLANE_PRED8x8 }, // '110', '111'
00117 };
00118 
00119 static const uint8_t vp8_pred8x8c_prob_intra[3] = { 142, 114, 183 };
00120 static const uint8_t vp8_pred8x8c_prob_inter[3] = { 162, 101, 204 };
00121 
00122 static const uint8_t vp8_pred4x4_prob_inter[9] =
00123 {
00124     120, 90, 79, 133, 87, 85, 80, 111, 151
00125 };
00126 
00127 static const uint8_t vp8_pred4x4_prob_intra[10][10][9] =
00128 {
00129     {
00130         {  39,  53, 200,  87,  26,  21,  43, 232, 171 },
00131         {  56,  34,  51, 104, 114, 102,  29,  93,  77 },
00132         {  88,  88, 147, 150,  42,  46,  45, 196, 205 },
00133         { 107,  54,  32,  26,  51,   1,  81,  43,  31 },
00134         {  39,  28,  85, 171,  58, 165,  90,  98,  64 },
00135         {  34,  22, 116, 206,  23,  34,  43, 166,  73 },
00136         {  34,  19,  21, 102, 132, 188,  16,  76, 124 },
00137         {  68,  25, 106,  22,  64, 171,  36, 225, 114 },
00138         {  62,  18,  78,  95,  85,  57,  50,  48,  51 },
00139         {  43,  97, 183, 117,  85,  38,  35, 179,  61 },
00140     },
00141     {
00142         { 112, 113,  77,  85, 179, 255,  38, 120, 114 },
00143         {  40,  42,   1, 196, 245, 209,  10,  25, 109 },
00144         { 193, 101,  35, 159, 215, 111,  89,  46, 111 },
00145         { 100,  80,   8,  43, 154,   1,  51,  26,  71 },
00146         {  88,  43,  29, 140, 166, 213,  37,  43, 154 },
00147         {  61,  63,  30, 155,  67,  45,  68,   1, 209 },
00148         {  41,  40,   5, 102, 211, 183,   4,   1, 221 },
00149         { 142,  78,  78,  16, 255, 128,  34, 197, 171 },
00150         {  51,  50,  17, 168, 209, 192,  23,  25,  82 },
00151         {  60, 148,  31, 172, 219, 228,  21,  18, 111 },
00152     },
00153     {
00154         { 175,  69, 143,  80,  85,  82,  72, 155, 103 },
00155         {  56,  58,  10, 171, 218, 189,  17,  13, 152 },
00156         { 231, 120,  48,  89, 115, 113, 120, 152, 112 },
00157         { 144,  71,  10,  38, 171, 213, 144,  34,  26 },
00158         { 114,  26,  17, 163,  44, 195,  21,  10, 173 },
00159         { 121,  24,  80, 195,  26,  62,  44,  64,  85 },
00160         {  63,  20,   8, 114, 114, 208,  12,   9, 226 },
00161         { 170,  46,  55,  19, 136, 160,  33, 206,  71 },
00162         {  81,  40,  11,  96, 182,  84,  29,  16,  36 },
00163         { 152, 179,  64, 126, 170, 118,  46,  70,  95 },
00164     },
00165     {
00166         {  75,  79, 123,  47,  51, 128,  81, 171,   1 },
00167         {  57,  17,   5,  71, 102,  57,  53,  41,  49 },
00168         { 125,  98,  42,  88, 104,  85, 117, 175,  82 },
00169         { 115,  21,   2,  10, 102, 255, 166,  23,   6 },
00170         {  38,  33,  13, 121,  57,  73,  26,   1,  85 },
00171         {  41,  10,  67, 138,  77, 110,  90,  47, 114 },
00172         {  57,  18,  10, 102, 102, 213,  34,  20,  43 },
00173         { 101,  29,  16,  10,  85, 128, 101, 196,  26 },
00174         { 117,  20,  15,  36, 163, 128,  68,   1,  26 },
00175         {  95,  84,  53,  89, 128, 100, 113, 101,  45 },
00176     },
00177     {
00178         {  63,  59,  90, 180,  59, 166,  93,  73, 154 },
00179         {  40,  40,  21, 116, 143, 209,  34,  39, 175 },
00180         { 138,  31,  36, 171,  27, 166,  38,  44, 229 },
00181         {  57,  46,  22,  24, 128,   1,  54,  17,  37 },
00182         {  47,  15,  16, 183,  34, 223,  49,  45, 183 },
00183         {  46,  17,  33, 183,   6,  98,  15,  32, 183 },
00184         {  40,   3,   9, 115,  51, 192,  18,   6, 223 },
00185         {  65,  32,  73, 115,  28, 128,  23, 128, 205 },
00186         {  87,  37,   9, 115,  59,  77,  64,  21,  47 },
00187         {  67,  87,  58, 169,  82, 115,  26,  59, 179 },
00188     },
00189     {
00190         {  54,  57, 112, 184,   5,  41,  38, 166, 213 },
00191         {  30,  34,  26, 133, 152, 116,  10,  32, 134 },
00192         { 104,  55,  44, 218,   9,  54,  53, 130, 226 },
00193         {  75,  32,  12,  51, 192, 255, 160,  43,  51 },
00194         {  39,  19,  53, 221,  26, 114,  32,  73, 255 },
00195         {  31,   9,  65, 234,   2,  15,   1, 118,  73 },
00196         {  56,  21,  23, 111,  59, 205,  45,  37, 192 },
00197         {  88,  31,  35,  67, 102,  85,  55, 186,  85 },
00198         {  55,  38,  70, 124,  73, 102,   1,  34,  98 },
00199         {  64,  90,  70, 205,  40,  41,  23,  26,  57 },
00200     },
00201     {
00202         {  86,  40,  64, 135, 148, 224,  45, 183, 128 },
00203         {  22,  26,  17, 131, 240, 154,  14,   1, 209 },
00204         { 164,  50,  31, 137, 154, 133,  25,  35, 218 },
00205         {  83,  12,  13,  54, 192, 255,  68,  47,  28 },
00206         {  45,  16,  21,  91,  64, 222,   7,   1, 197 },
00207         {  56,  21,  39, 155,  60, 138,  23, 102, 213 },
00208         {  18,  11,   7,  63, 144, 171,   4,   4, 246 },
00209         {  85,  26,  85,  85, 128, 128,  32, 146, 171 },
00210         {  35,  27,  10, 146, 174, 171,  12,  26, 128 },
00211         {  51, 103,  44, 131, 131, 123,  31,   6, 158 },
00212     },
00213     {
00214         {  68,  45, 128,  34,   1,  47,  11, 245, 171 },
00215         {  62,  17,  19,  70, 146,  85,  55,  62,  70 },
00216         { 102,  61,  71,  37,  34,  53,  31, 243, 192 },
00217         {  75,  15,   9,   9,  64, 255, 184, 119,  16 },
00218         {  37,  43,  37, 154, 100, 163,  85, 160,   1 },
00219         {  63,   9,  92, 136,  28,  64,  32, 201,  85 },
00220         {  56,   8,  17, 132, 137, 255,  55, 116, 128 },
00221         {  86,   6,  28,   5,  64, 255,  25, 248,   1 },
00222         {  58,  15,  20,  82, 135,  57,  26, 121,  40 },
00223         {  69,  60,  71,  38,  73, 119,  28, 222,  37 },
00224     },
00225     {
00226         { 101,  75, 128, 139, 118, 146, 116, 128,  85 },
00227         {  56,  41,  15, 176, 236,  85,  37,   9,  62 },
00228         { 190,  80,  35,  99, 180,  80, 126,  54,  45 },
00229         { 146,  36,  19,  30, 171, 255,  97,  27,  20 },
00230         {  71,  30,  17, 119, 118, 255,  17,  18, 138 },
00231         { 101,  38,  60, 138,  55,  70,  43,  26, 142 },
00232         {  32,  41,  20, 117, 151, 142,  20,  21, 163 },
00233         { 138,  45,  61,  62, 219,   1,  81, 188,  64 },
00234         { 112,  19,  12,  61, 195, 128,  48,   4,  24 },
00235         {  85, 126,  47,  87, 176,  51,  41,  20,  32 },
00236     },
00237     {
00238         {  66, 102, 167,  99,  74,  62,  40, 234, 128 },
00239         {  41,  53,   9, 178, 241, 141,  26,   8, 107 },
00240         { 134, 183,  89, 137,  98, 101, 106, 165, 148 },
00241         { 104,  79,  12,  27, 217, 255,  87,  17,   7 },
00242         {  74,  43,  26, 146,  73, 166,  49,  23, 157 },
00243         {  65,  38, 105, 160,  51,  52,  31, 115, 128 },
00244         {  47,  41,  14, 110, 182, 183,  21,  17, 194 },
00245         {  87,  68,  71,  44, 114,  51,  15, 186,  23 },
00246         {  66,  45,  25, 102, 197, 189,  23,  18,  22 },
00247         {  72, 187, 100, 130, 157, 111,  32,  75,  80 },
00248     },
00249 };
00250 
00251 static const int8_t vp8_segmentid_tree[][2] =
00252 {
00253     { 1, 2 },
00254      { -0, -1 },    // '00', '01'
00255      { -2, -3 },    // '10', '11'
00256 };
00257 
00258 static const uint8_t vp8_coeff_band[16] =
00259 {
00260     0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7
00261 };
00262 
00263 /* Inverse of vp8_coeff_band: mappings of bands to coefficient indexes.
00264  * Each list is -1-terminated. */
00265 static const int8_t vp8_coeff_band_indexes[8][10] =
00266 {
00267     {0, -1},
00268     {1, -1},
00269     {2, -1},
00270     {3, -1},
00271     {5, -1},
00272     {6, -1},
00273     {4, 7, 8, 9, 10, 11, 12, 13, 14, -1},
00274     {15, -1}
00275 };
00276 
00277 static const uint8_t vp8_dct_cat1_prob[] = { 159, 0 };
00278 static const uint8_t vp8_dct_cat2_prob[] = { 165, 145, 0 };
00279 static const uint8_t vp8_dct_cat3_prob[] = { 173, 148, 140, 0 };
00280 static const uint8_t vp8_dct_cat4_prob[] = { 176, 155, 140, 135, 0 };
00281 static const uint8_t vp8_dct_cat5_prob[] = { 180, 157, 141, 134, 130, 0 };
00282 static const uint8_t vp8_dct_cat6_prob[] = { 254, 254, 243, 230, 196, 177, 153, 140, 133, 130, 129, 0 };
00283 
00284 // only used for cat3 and above; cat 1 and 2 are referenced directly
00285 const uint8_t * const ff_vp8_dct_cat_prob[] =
00286 {
00287     vp8_dct_cat3_prob,
00288     vp8_dct_cat4_prob,
00289     vp8_dct_cat5_prob,
00290     vp8_dct_cat6_prob,
00291 };
00292 
00293 static const uint8_t vp8_token_default_probs[4][8][3][NUM_DCT_TOKENS-1] =
00294 {
00295     {
00296         {
00297             { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
00298             { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
00299             { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
00300         },
00301         {
00302             { 253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128 },
00303             { 189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128 },
00304             { 106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128 },
00305         },
00306         {
00307             {   1,  98, 248, 255, 236, 226, 255, 255, 128, 128, 128 },
00308             { 181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128 },
00309             {  78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128 },
00310         },
00311         {
00312             {   1, 185, 249, 255, 243, 255, 128, 128, 128, 128, 128 },
00313             { 184, 150, 247, 255, 236, 224, 128, 128, 128, 128, 128 },
00314             {  77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128 },
00315         },
00316         {
00317             {   1, 101, 251, 255, 241, 255, 128, 128, 128, 128, 128 },
00318             { 170, 139, 241, 252, 236, 209, 255, 255, 128, 128, 128 },
00319             {  37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128 },
00320         },
00321         {
00322             {   1, 204, 254, 255, 245, 255, 128, 128, 128, 128, 128 },
00323             { 207, 160, 250, 255, 238, 128, 128, 128, 128, 128, 128 },
00324             { 102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128 },
00325         },
00326         {
00327             {   1, 152, 252, 255, 240, 255, 128, 128, 128, 128, 128 },
00328             { 177, 135, 243, 255, 234, 225, 128, 128, 128, 128, 128 },
00329             {  80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128 },
00330         },
00331         {
00332             {   1,   1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
00333             { 246,   1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
00334             { 255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
00335         },
00336     },
00337     {
00338         {
00339             { 198,  35, 237, 223, 193, 187, 162, 160, 145, 155,  62 },
00340             { 131,  45, 198, 221, 172, 176, 220, 157, 252, 221,   1 },
00341             {  68,  47, 146, 208, 149, 167, 221, 162, 255, 223, 128 },
00342         },
00343         {
00344             {   1, 149, 241, 255, 221, 224, 255, 255, 128, 128, 128 },
00345             { 184, 141, 234, 253, 222, 220, 255, 199, 128, 128, 128 },
00346             {  81,  99, 181, 242, 176, 190, 249, 202, 255, 255, 128 },
00347         },
00348         {
00349             {   1, 129, 232, 253, 214, 197, 242, 196, 255, 255, 128 },
00350             {  99, 121, 210, 250, 201, 198, 255, 202, 128, 128, 128 },
00351             {  23,  91, 163, 242, 170, 187, 247, 210, 255, 255, 128 },
00352         },
00353         {
00354             {   1, 200, 246, 255, 234, 255, 128, 128, 128, 128, 128 },
00355             { 109, 178, 241, 255, 231, 245, 255, 255, 128, 128, 128 },
00356             {  44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128 },
00357         },
00358         {
00359             {   1, 132, 239, 251, 219, 209, 255, 165, 128, 128, 128 },
00360             {  94, 136, 225, 251, 218, 190, 255, 255, 128, 128, 128 },
00361             {  22, 100, 174, 245, 186, 161, 255, 199, 128, 128, 128 },
00362         },
00363         {
00364             {   1, 182, 249, 255, 232, 235, 128, 128, 128, 128, 128 },
00365             { 124, 143, 241, 255, 227, 234, 128, 128, 128, 128, 128 },
00366             {  35,  77, 181, 251, 193, 211, 255, 205, 128, 128, 128 },
00367         },
00368         {
00369             {   1, 157, 247, 255, 236, 231, 255, 255, 128, 128, 128 },
00370             { 121, 141, 235, 255, 225, 227, 255, 255, 128, 128, 128 },
00371             {  45,  99, 188, 251, 195, 217, 255, 224, 128, 128, 128 },
00372         },
00373         {
00374             {   1,   1, 251, 255, 213, 255, 128, 128, 128, 128, 128 },
00375             { 203,   1, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
00376             { 137,   1, 177, 255, 224, 255, 128, 128, 128, 128, 128 },
00377         },
00378     },
00379     {
00380         {
00381             { 253,   9, 248, 251, 207, 208, 255, 192, 128, 128, 128 },
00382             { 175,  13, 224, 243, 193, 185, 249, 198, 255, 255, 128 },
00383             {  73,  17, 171, 221, 161, 179, 236, 167, 255, 234, 128 },
00384         },
00385         {
00386             {   1,  95, 247, 253, 212, 183, 255, 255, 128, 128, 128 },
00387             { 239,  90, 244, 250, 211, 209, 255, 255, 128, 128, 128 },
00388             { 155,  77, 195, 248, 188, 195, 255, 255, 128, 128, 128 },
00389         },
00390         {
00391             {   1,  24, 239, 251, 218, 219, 255, 205, 128, 128, 128 },
00392             { 201,  51, 219, 255, 196, 186, 128, 128, 128, 128, 128 },
00393             {  69,  46, 190, 239, 201, 218, 255, 228, 128, 128, 128 },
00394         },
00395         {
00396             {   1, 191, 251, 255, 255, 128, 128, 128, 128, 128, 128 },
00397             { 223, 165, 249, 255, 213, 255, 128, 128, 128, 128, 128 },
00398             { 141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
00399         },
00400         {
00401             {   1,  16, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
00402             { 190,  36, 230, 255, 236, 255, 128, 128, 128, 128, 128 },
00403             { 149,   1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
00404         },
00405         {
00406             {   1, 226, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
00407             { 247, 192, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
00408             { 240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
00409         },
00410         {
00411             {   1, 134, 252, 255, 255, 128, 128, 128, 128, 128, 128 },
00412             { 213,  62, 250, 255, 255, 128, 128, 128, 128, 128, 128 },
00413             {  55,  93, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
00414         },
00415         {
00416             { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
00417             { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
00418             { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
00419         },
00420     },
00421     {
00422         {
00423             { 202,  24, 213, 235, 186, 191, 220, 160, 240, 175, 255 },
00424             { 126,  38, 182, 232, 169, 184, 228, 174, 255, 187, 128 },
00425             {  61,  46, 138, 219, 151, 178, 240, 170, 255, 216, 128 },
00426         },
00427         {
00428             {   1, 112, 230, 250, 199, 191, 247, 159, 255, 255, 128 },
00429             { 166, 109, 228, 252, 211, 215, 255, 174, 128, 128, 128 },
00430             {  39,  77, 162, 232, 172, 180, 245, 178, 255, 255, 128 },
00431         },
00432         {
00433             {   1,  52, 220, 246, 198, 199, 249, 220, 255, 255, 128 },
00434             { 124,  74, 191, 243, 183, 193, 250, 221, 255, 255, 128 },
00435             {  24,  71, 130, 219, 154, 170, 243, 182, 255, 255, 128 },
00436         },
00437         {
00438             {   1, 182, 225, 249, 219, 240, 255, 224, 128, 128, 128 },
00439             { 149, 150, 226, 252, 216, 205, 255, 171, 128, 128, 128 },
00440             {  28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128 },
00441         },
00442         {
00443             {   1,  81, 230, 252, 204, 203, 255, 192, 128, 128, 128 },
00444             { 123, 102, 209, 247, 188, 196, 255, 233, 128, 128, 128 },
00445             {  20,  95, 153, 243, 164, 173, 255, 203, 128, 128, 128 },
00446         },
00447         {
00448             {   1, 222, 248, 255, 216, 213, 128, 128, 128, 128, 128 },
00449             { 168, 175, 246, 252, 235, 205, 255, 255, 128, 128, 128 },
00450             {  47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128 },
00451         },
00452         {
00453             {   1, 121, 236, 253, 212, 214, 255, 255, 128, 128, 128 },
00454             { 141,  84, 213, 252, 201, 202, 255, 219, 128, 128, 128 },
00455             {  42,  80, 160, 240, 162, 185, 255, 205, 128, 128, 128 },
00456         },
00457         {
00458             {   1,   1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
00459             { 244,   1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
00460             { 238,   1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
00461         },
00462     },
00463 };
00464 
00465 static const uint8_t vp8_token_update_probs[4][8][3][NUM_DCT_TOKENS-1] =
00466 {
00467     {
00468         {
00469             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00470             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00471             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00472         },
00473         {
00474             { 176, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00475             { 223, 241, 252, 255, 255, 255, 255, 255, 255, 255, 255 },
00476             { 249, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
00477         },
00478         {
00479             { 255, 244, 252, 255, 255, 255, 255, 255, 255, 255, 255 },
00480             { 234, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
00481             { 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00482         },
00483         {
00484             { 255, 246, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
00485             { 239, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
00486             { 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
00487         },
00488         {
00489             { 255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
00490             { 251, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
00491             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00492         },
00493         {
00494             { 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
00495             { 251, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
00496             { 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
00497         },
00498         {
00499             { 255, 254, 253, 255, 254, 255, 255, 255, 255, 255, 255 },
00500             { 250, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255 },
00501             { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00502         },
00503         {
00504             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00505             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00506             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00507         },
00508     },
00509     {
00510         {
00511             { 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00512             { 225, 252, 241, 253, 255, 255, 254, 255, 255, 255, 255 },
00513             { 234, 250, 241, 250, 253, 255, 253, 254, 255, 255, 255 },
00514         },
00515         {
00516             { 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00517             { 223, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
00518             { 238, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255 },
00519         },
00520         {
00521             { 255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
00522             { 249, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00523             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00524         },
00525         {
00526             { 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00527             { 247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00528             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00529         },
00530         {
00531             { 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
00532             { 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00533             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00534         },
00535         {
00536             { 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
00537             { 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00538             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00539         },
00540         {
00541             { 255, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
00542             { 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00543             { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00544         },
00545         {
00546             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00547             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00548             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00549         },
00550     },
00551     {
00552         {
00553             { 186, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255 },
00554             { 234, 251, 244, 254, 255, 255, 255, 255, 255, 255, 255 },
00555             { 251, 251, 243, 253, 254, 255, 254, 255, 255, 255, 255 },
00556         },
00557         {
00558             { 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
00559             { 236, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
00560             { 251, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255 },
00561         },
00562         {
00563             { 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
00564             { 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
00565             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00566         },
00567         {
00568             { 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00569             { 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00570             { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00571         },
00572         {
00573             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00574             { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00575             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00576         },
00577         {
00578             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00579             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00580             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00581         },
00582         {
00583             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00584             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00585             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00586         },
00587         {
00588             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00589             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00590             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00591         },
00592     },
00593     {
00594         {
00595             { 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00596             { 250, 254, 252, 254, 255, 255, 255, 255, 255, 255, 255 },
00597             { 248, 254, 249, 253, 255, 255, 255, 255, 255, 255, 255 },
00598         },
00599         {
00600             { 255, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
00601             { 246, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
00602             { 252, 254, 251, 254, 254, 255, 255, 255, 255, 255, 255 },
00603         },
00604         {
00605             { 255, 254, 252, 255, 255, 255, 255, 255, 255, 255, 255 },
00606             { 248, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
00607             { 253, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255 },
00608         },
00609         {
00610             { 255, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
00611             { 245, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
00612             { 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
00613         },
00614         {
00615             { 255, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
00616             { 252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
00617             { 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00618         },
00619         {
00620             { 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00621             { 249, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
00622             { 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 },
00623         },
00624         {
00625             { 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255 },
00626             { 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00627             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00628         },
00629         {
00630             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00631             { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00632             { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
00633         },
00634     },
00635 };
00636 
00637 // fixme: copied from h264data.h
00638 static const uint8_t zigzag_scan[16]={
00639     0+0*4, 1+0*4, 0+1*4, 0+2*4,
00640     1+1*4, 2+0*4, 3+0*4, 2+1*4,
00641     1+2*4, 0+3*4, 1+3*4, 2+2*4,
00642     3+1*4, 3+2*4, 2+3*4, 3+3*4,
00643 };
00644 
00645 static const uint8_t vp8_dc_qlookup[VP8_MAX_QUANT+1] =
00646 {
00647       4,   5,   6,   7,   8,   9,  10,  10,  11,  12,  13,  14,  15,  16,  17,  17,
00648      18,  19,  20,  20,  21,  21,  22,  22,  23,  23,  24,  25,  25,  26,  27,  28,
00649      29,  30,  31,  32,  33,  34,  35,  36,  37,  37,  38,  39,  40,  41,  42,  43,
00650      44,  45,  46,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,
00651      59,  60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
00652      75,  76,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
00653      91,  93,  95,  96,  98, 100, 101, 102, 104, 106, 108, 110, 112, 114, 116, 118,
00654     122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 143, 145, 148, 151, 154, 157,
00655 };
00656 
00657 static const uint16_t vp8_ac_qlookup[VP8_MAX_QUANT+1] =
00658 {
00659       4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,  16,  17,  18,  19,
00660      20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,  32,  33,  34,  35,
00661      36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,  48,  49,  50,  51,
00662      52,  53,  54,  55,  56,  57,  58,  60,  62,  64,  66,  68,  70,  72,  74,  76,
00663      78,  80,  82,  84,  86,  88,  90,  92,  94,  96,  98, 100, 102, 104, 106, 108,
00664     110, 112, 114, 116, 119, 122, 125, 128, 131, 134, 137, 140, 143, 146, 149, 152,
00665     155, 158, 161, 164, 167, 170, 173, 177, 181, 185, 189, 193, 197, 201, 205, 209,
00666     213, 217, 221, 225, 229, 234, 239, 245, 249, 254, 259, 264, 269, 274, 279, 284,
00667 };
00668 
00669 static const uint8_t vp8_mv_update_prob[2][19] = {
00670     { 237,
00671       246,
00672       253, 253, 254, 254, 254, 254, 254,
00673       254, 254, 254, 254, 254, 250, 250, 252, 254, 254 },
00674     { 231,
00675       243,
00676       245, 253, 254, 254, 254, 254, 254,
00677       254, 254, 254, 254, 254, 251, 251, 254, 254, 254 }
00678 };
00679 
00680 static const uint8_t vp8_mv_default_prob[2][19] = {
00681     { 162,
00682       128,
00683       225, 146, 172, 147, 214, 39, 156,
00684       128, 129, 132,  75, 145, 178, 206, 239, 254, 254 },
00685     { 164,
00686       128,
00687       204, 170, 119, 235, 140, 230, 228,
00688       128, 130, 130,  74, 148, 180, 203, 236, 254, 254 }
00689 };
00690 
00691 #endif /* AVCODEC_VP8DATA_H */
Generated on Thu Jul 11 2013 15:38:22 for Libav by doxygen 1.7.1