2 * Copyright © 2014 Intel Corporation
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the
6 * "Software"), to deal in the Software without restriction, including
7 * without limitation the rights to use, copy, modify, merge, publish,
8 * distribute, sub license, and/or sell copies of the Software, and to
9 * permit persons to whom the Software is furnished to do so, subject to
10 * the following conditions:
12 * The above copyright notice and this permission notice (including the
13 * next paragraph) shall be included in all copies or substantial portions
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
19 * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
20 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 * This file defines some vp8 probability tables, and
28 * they are ported from libvpx (https://github.com/mrchapp/libvpx/).
29 * The original copyright and licence statement as below.
33 * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
35 * Use of this source code is governed by a BSD-style license
36 * that can be found in the LICENSE file in the root of the source
37 * tree. An additional intellectual property rights grant can be found
38 * in the file PATENTS. All contributing project authors may
39 * be found in the AUTHORS file in the root of the source tree.
45 static const unsigned char vp8_ymode_prob[4] =
50 static const unsigned char vp8_kf_ymode_prob[4] =
55 static const unsigned char vp8_uv_mode_prob[3] =
60 static const unsigned char vp8_kf_uv_mode_prob[3] =
65 static const unsigned char vp8_base_skip_false_prob[128] =
67 255, 255, 255, 255, 255, 255, 255, 255,
68 255, 255, 255, 255, 255, 255, 255, 255,
69 255, 255, 255, 255, 255, 255, 255, 255,
70 255, 255, 255, 255, 255, 255, 255, 255,
71 255, 255, 255, 255, 255, 255, 255, 255,
72 255, 255, 255, 255, 255, 255, 255, 255,
73 255, 255, 255, 255, 255, 255, 255, 255,
74 251, 248, 244, 240, 236, 232, 229, 225,
75 221, 217, 213, 208, 204, 199, 194, 190,
76 187, 183, 179, 175, 172, 168, 164, 160,
77 157, 153, 149, 145, 142, 138, 134, 130,
78 127, 124, 120, 117, 114, 110, 107, 104,
79 101, 98, 95, 92, 89, 86, 83, 80,
80 77, 74, 71, 68, 65, 62, 59, 56,
81 53, 50, 47, 44, 41, 38, 35, 32,
82 30, 28, 26, 24, 22, 20, 18, 16,
85 static const unsigned char vp8_mv_update_probs[2][19] =
90 253, 253, 254, 254, 254, 254, 254,
91 254, 254, 254, 254, 254, 250, 250, 252, 254, 254
96 245, 253, 254, 254, 254, 254, 254,
97 254, 254, 254, 254, 254, 251, 251, 254, 254, 254
101 static const unsigned char vp8_default_mv_context[2][19] =
106 225, 146, 172, 147, 214, 39, 156, /* short tree */
107 128, 129, 132, 75, 145, 178, 206, 239, 254, 254 /* long bits */
113 204, 170, 119, 235, 140, 230, 228,
114 128, 130, 130, 74, 148, 180, 203, 236, 254, 254
119 static const unsigned char vp8_default_coef_probs[4][8][3][11] =
121 { /* Block Type ( 0 ) */
122 { /* Coeff Band ( 0 )*/
123 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
124 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
125 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }
127 { /* Coeff Band ( 1 )*/
128 { 253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128 },
129 { 189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128 },
130 { 106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128 }
132 { /* Coeff Band ( 2 )*/
133 { 1, 98, 248, 255, 236, 226, 255, 255, 128, 128, 128 },
134 { 181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128 },
135 { 78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128 }
137 { /* Coeff Band ( 3 )*/
138 { 1, 185, 249, 255, 243, 255, 128, 128, 128, 128, 128 },
139 { 184, 150, 247, 255, 236, 224, 128, 128, 128, 128, 128 },
140 { 77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128 }
142 { /* Coeff Band ( 4 )*/
143 { 1, 101, 251, 255, 241, 255, 128, 128, 128, 128, 128 },
144 { 170, 139, 241, 252, 236, 209, 255, 255, 128, 128, 128 },
145 { 37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128 }
147 { /* Coeff Band ( 5 )*/
148 { 1, 204, 254, 255, 245, 255, 128, 128, 128, 128, 128 },
149 { 207, 160, 250, 255, 238, 128, 128, 128, 128, 128, 128 },
150 { 102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128 }
152 { /* Coeff Band ( 6 )*/
153 { 1, 152, 252, 255, 240, 255, 128, 128, 128, 128, 128 },
154 { 177, 135, 243, 255, 234, 225, 128, 128, 128, 128, 128 },
155 { 80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128 }
157 { /* Coeff Band ( 7 )*/
158 { 1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
159 { 246, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
160 { 255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }
163 { /* Block Type ( 1 ) */
164 { /* Coeff Band ( 0 )*/
165 { 198, 35, 237, 223, 193, 187, 162, 160, 145, 155, 62 },
166 { 131, 45, 198, 221, 172, 176, 220, 157, 252, 221, 1 },
167 { 68, 47, 146, 208, 149, 167, 221, 162, 255, 223, 128 }
169 { /* Coeff Band ( 1 )*/
170 { 1, 149, 241, 255, 221, 224, 255, 255, 128, 128, 128 },
171 { 184, 141, 234, 253, 222, 220, 255, 199, 128, 128, 128 },
172 { 81, 99, 181, 242, 176, 190, 249, 202, 255, 255, 128 }
174 { /* Coeff Band ( 2 )*/
175 { 1, 129, 232, 253, 214, 197, 242, 196, 255, 255, 128 },
176 { 99, 121, 210, 250, 201, 198, 255, 202, 128, 128, 128 },
177 { 23, 91, 163, 242, 170, 187, 247, 210, 255, 255, 128 }
179 { /* Coeff Band ( 3 )*/
180 { 1, 200, 246, 255, 234, 255, 128, 128, 128, 128, 128 },
181 { 109, 178, 241, 255, 231, 245, 255, 255, 128, 128, 128 },
182 { 44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128 }
184 { /* Coeff Band ( 4 )*/
185 { 1, 132, 239, 251, 219, 209, 255, 165, 128, 128, 128 },
186 { 94, 136, 225, 251, 218, 190, 255, 255, 128, 128, 128 },
187 { 22, 100, 174, 245, 186, 161, 255, 199, 128, 128, 128 }
189 { /* Coeff Band ( 5 )*/
190 { 1, 182, 249, 255, 232, 235, 128, 128, 128, 128, 128 },
191 { 124, 143, 241, 255, 227, 234, 128, 128, 128, 128, 128 },
192 { 35, 77, 181, 251, 193, 211, 255, 205, 128, 128, 128 }
194 { /* Coeff Band ( 6 )*/
195 { 1, 157, 247, 255, 236, 231, 255, 255, 128, 128, 128 },
196 { 121, 141, 235, 255, 225, 227, 255, 255, 128, 128, 128 },
197 { 45, 99, 188, 251, 195, 217, 255, 224, 128, 128, 128 }
199 { /* Coeff Band ( 7 )*/
200 { 1, 1, 251, 255, 213, 255, 128, 128, 128, 128, 128 },
201 { 203, 1, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
202 { 137, 1, 177, 255, 224, 255, 128, 128, 128, 128, 128 }
205 { /* Block Type ( 2 ) */
206 { /* Coeff Band ( 0 )*/
207 { 253, 9, 248, 251, 207, 208, 255, 192, 128, 128, 128 },
208 { 175, 13, 224, 243, 193, 185, 249, 198, 255, 255, 128 },
209 { 73, 17, 171, 221, 161, 179, 236, 167, 255, 234, 128 }
211 { /* Coeff Band ( 1 )*/
212 { 1, 95, 247, 253, 212, 183, 255, 255, 128, 128, 128 },
213 { 239, 90, 244, 250, 211, 209, 255, 255, 128, 128, 128 },
214 { 155, 77, 195, 248, 188, 195, 255, 255, 128, 128, 128 }
216 { /* Coeff Band ( 2 )*/
217 { 1, 24, 239, 251, 218, 219, 255, 205, 128, 128, 128 },
218 { 201, 51, 219, 255, 196, 186, 128, 128, 128, 128, 128 },
219 { 69, 46, 190, 239, 201, 218, 255, 228, 128, 128, 128 }
221 { /* Coeff Band ( 3 )*/
222 { 1, 191, 251, 255, 255, 128, 128, 128, 128, 128, 128 },
223 { 223, 165, 249, 255, 213, 255, 128, 128, 128, 128, 128 },
224 { 141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128 }
226 { /* Coeff Band ( 4 )*/
227 { 1, 16, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
228 { 190, 36, 230, 255, 236, 255, 128, 128, 128, 128, 128 },
229 { 149, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 }
231 { /* Coeff Band ( 5 )*/
232 { 1, 226, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
233 { 247, 192, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
234 { 240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128 }
236 { /* Coeff Band ( 6 )*/
237 { 1, 134, 252, 255, 255, 128, 128, 128, 128, 128, 128 },
238 { 213, 62, 250, 255, 255, 128, 128, 128, 128, 128, 128 },
239 { 55, 93, 255, 128, 128, 128, 128, 128, 128, 128, 128 }
241 { /* Coeff Band ( 7 )*/
242 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
243 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
244 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }
247 { /* Block Type ( 3 ) */
248 { /* Coeff Band ( 0 )*/
249 { 202, 24, 213, 235, 186, 191, 220, 160, 240, 175, 255 },
250 { 126, 38, 182, 232, 169, 184, 228, 174, 255, 187, 128 },
251 { 61, 46, 138, 219, 151, 178, 240, 170, 255, 216, 128 }
253 { /* Coeff Band ( 1 )*/
254 { 1, 112, 230, 250, 199, 191, 247, 159, 255, 255, 128 },
255 { 166, 109, 228, 252, 211, 215, 255, 174, 128, 128, 128 },
256 { 39, 77, 162, 232, 172, 180, 245, 178, 255, 255, 128 }
258 { /* Coeff Band ( 2 )*/
259 { 1, 52, 220, 246, 198, 199, 249, 220, 255, 255, 128 },
260 { 124, 74, 191, 243, 183, 193, 250, 221, 255, 255, 128 },
261 { 24, 71, 130, 219, 154, 170, 243, 182, 255, 255, 128 }
263 { /* Coeff Band ( 3 )*/
264 { 1, 182, 225, 249, 219, 240, 255, 224, 128, 128, 128 },
265 { 149, 150, 226, 252, 216, 205, 255, 171, 128, 128, 128 },
266 { 28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128 }
268 { /* Coeff Band ( 4 )*/
269 { 1, 81, 230, 252, 204, 203, 255, 192, 128, 128, 128 },
270 { 123, 102, 209, 247, 188, 196, 255, 233, 128, 128, 128 },
271 { 20, 95, 153, 243, 164, 173, 255, 203, 128, 128, 128 }
273 { /* Coeff Band ( 5 )*/
274 { 1, 222, 248, 255, 216, 213, 128, 128, 128, 128, 128 },
275 { 168, 175, 246, 252, 235, 205, 255, 255, 128, 128, 128 },
276 { 47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128 }
278 { /* Coeff Band ( 6 )*/
279 { 1, 121, 236, 253, 212, 214, 255, 255, 128, 128, 128 },
280 { 141, 84, 213, 252, 201, 202, 255, 219, 128, 128, 128 },
281 { 42, 80, 160, 240, 162, 185, 255, 205, 128, 128, 128 }
283 { /* Coeff Band ( 7 )*/
284 { 1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
285 { 244, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
286 { 238, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 }
291 /* Work in progress recalibration of baseline rate tables based on
292 * the assumption that bits per mb is inversely proportional to the
294 * Note: this table value multiplied by 512
296 static const int vp8_bits_per_mb[2][128] =
298 /* Intra case 450000/Qintra */
300 1125000,900000, 750000, 642857, 562500, 500000, 450000, 450000,
301 409090, 375000, 346153, 321428, 300000, 281250, 264705, 264705,
302 250000, 236842, 225000, 225000, 214285, 214285, 204545, 204545,
303 195652, 195652, 187500, 180000, 180000, 173076, 166666, 160714,
304 155172, 150000, 145161, 140625, 136363, 132352, 128571, 125000,
305 121621, 121621, 118421, 115384, 112500, 109756, 107142, 104651,
306 102272, 100000, 97826, 97826, 95744, 93750, 91836, 90000,
307 88235, 86538, 84905, 83333, 81818, 80357, 78947, 77586,
308 76271, 75000, 73770, 72580, 71428, 70312, 69230, 68181,
309 67164, 66176, 65217, 64285, 63380, 62500, 61643, 60810,
310 60000, 59210, 59210, 58441, 57692, 56962, 56250, 55555,
311 54878, 54216, 53571, 52941, 52325, 51724, 51136, 50561,
312 49450, 48387, 47368, 46875, 45918, 45000, 44554, 44117,
313 43269, 42452, 41666, 40909, 40178, 39473, 38793, 38135,
314 36885, 36290, 35714, 35156, 34615, 34090, 33582, 33088,
315 32608, 32142, 31468, 31034, 30405, 29801, 29220, 28662,
318 /* Inter case 285000/Qinter */
320 712500, 570000, 475000, 407142, 356250, 316666, 285000, 259090,
321 237500, 219230, 203571, 190000, 178125, 167647, 158333, 150000,
322 142500, 135714, 129545, 123913, 118750, 114000, 109615, 105555,
323 101785, 98275, 95000, 91935, 89062, 86363, 83823, 81428,
324 79166, 77027, 75000, 73076, 71250, 69512, 67857, 66279,
325 64772, 63333, 61956, 60638, 59375, 58163, 57000, 55882,
326 54807, 53773, 52777, 51818, 50892, 50000, 49137, 47500,
327 45967, 44531, 43181, 41911, 40714, 39583, 38513, 37500,
328 36538, 35625, 34756, 33928, 33139, 32386, 31666, 30978,
329 30319, 29687, 29081, 28500, 27941, 27403, 26886, 26388,
330 25909, 25446, 25000, 24568, 23949, 23360, 22800, 22265,
331 21755, 21268, 20802, 20357, 19930, 19520, 19127, 18750,
332 18387, 18037, 17701, 17378, 17065, 16764, 16473, 16101,
333 15745, 15405, 15079, 14766, 14467, 14179, 13902, 13636,
334 13380, 13133, 12895, 12666, 12445, 12179, 11924, 11632,
335 11445, 11220, 11003, 10795, 10594, 10401, 10215, 10035,
339 #endif /* _VP8_PROBS_H_ */