Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1445)

Side by Side Diff: media/base/simd/yuv_to_rgb_table.cc

Issue 12263013: media: Add support for playback of VP8 Alpha video streams (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « media/base/simd/yuv_to_rgb_table.h ('k') | media/base/video_frame.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/base/simd/yuv_to_rgb_table.h" 5 #include "media/base/simd/yuv_to_rgb_table.h"
6 6
7 extern "C" { 7 extern "C" {
8 8
9 // Defines the R,G,B,A contributions from Y.
9 #define RGBY(i) { \ 10 #define RGBY(i) { \
10 static_cast<int16>(1.164 * 64 * (i - 16) + 0.5), \ 11 static_cast<int16>(1.164 * 64 * (i - 16) + 0.5), \
11 static_cast<int16>(1.164 * 64 * (i - 16) + 0.5), \ 12 static_cast<int16>(1.164 * 64 * (i - 16) + 0.5), \
12 static_cast<int16>(1.164 * 64 * (i - 16) + 0.5), \ 13 static_cast<int16>(1.164 * 64 * (i - 16) + 0.5), \
13 0 \ 14 0 \
14 } 15 }
15 16
17 // Defines the R,G,B,A contributions from U.
18 // The contribution to A is the same for any value of U
19 // causing the final A value to be 255 in every conversion.
16 #define RGBU(i) { \ 20 #define RGBU(i) { \
17 static_cast<int16>(2.018 * 64 * (i - 128) + 0.5), \ 21 static_cast<int16>(2.018 * 64 * (i - 128) + 0.5), \
18 static_cast<int16>(-0.391 * 64 * (i - 128) + 0.5), \ 22 static_cast<int16>(-0.391 * 64 * (i - 128) + 0.5), \
19 0, \ 23 0, \
20 static_cast<int16>(256 * 64 - 1) \ 24 static_cast<int16>(256 * 64 - 1) \
21 } 25 }
22 26
27 // Defines the R,G,B,A contributions from V.
23 #define RGBV(i) { \ 28 #define RGBV(i) { \
24 0, \ 29 0, \
25 static_cast<int16>(-0.813 * 64 * (i - 128) + 0.5), \ 30 static_cast<int16>(-0.813 * 64 * (i - 128) + 0.5), \
26 static_cast<int16>(1.596 * 64 * (i - 128) + 0.5), \ 31 static_cast<int16>(1.596 * 64 * (i - 128) + 0.5), \
27 0 \ 32 0 \
28 } 33 }
29 34
30 SIMD_ALIGNED(int16 kCoefficientsRgbY[256 * 3][4]) = { 35 // Used to define a set of multiplier words for each alpha level.
36 #define ALPHA(i) { \
37 i, i, i, i \
38 }
39
40 // The following table defines the RGBA contributions
41 // for each component of YUVA. The Y table is first followed
42 // by the U, and V tables. The alpha multiplier table follows.
43 // These tables are aligned and kept adjacent to optimize for
44 // SIMD and cacheing.
45
46 SIMD_ALIGNED(int16 kCoefficientsRgbY[256 * 4][4]) = {
31 RGBY(0x00), RGBY(0x01), RGBY(0x02), RGBY(0x03), 47 RGBY(0x00), RGBY(0x01), RGBY(0x02), RGBY(0x03),
32 RGBY(0x04), RGBY(0x05), RGBY(0x06), RGBY(0x07), 48 RGBY(0x04), RGBY(0x05), RGBY(0x06), RGBY(0x07),
33 RGBY(0x08), RGBY(0x09), RGBY(0x0A), RGBY(0x0B), 49 RGBY(0x08), RGBY(0x09), RGBY(0x0A), RGBY(0x0B),
34 RGBY(0x0C), RGBY(0x0D), RGBY(0x0E), RGBY(0x0F), 50 RGBY(0x0C), RGBY(0x0D), RGBY(0x0E), RGBY(0x0F),
35 RGBY(0x10), RGBY(0x11), RGBY(0x12), RGBY(0x13), 51 RGBY(0x10), RGBY(0x11), RGBY(0x12), RGBY(0x13),
36 RGBY(0x14), RGBY(0x15), RGBY(0x16), RGBY(0x17), 52 RGBY(0x14), RGBY(0x15), RGBY(0x16), RGBY(0x17),
37 RGBY(0x18), RGBY(0x19), RGBY(0x1A), RGBY(0x1B), 53 RGBY(0x18), RGBY(0x19), RGBY(0x1A), RGBY(0x1B),
38 RGBY(0x1C), RGBY(0x1D), RGBY(0x1E), RGBY(0x1F), 54 RGBY(0x1C), RGBY(0x1D), RGBY(0x1E), RGBY(0x1F),
39 RGBY(0x20), RGBY(0x21), RGBY(0x22), RGBY(0x23), 55 RGBY(0x20), RGBY(0x21), RGBY(0x22), RGBY(0x23),
40 RGBY(0x24), RGBY(0x25), RGBY(0x26), RGBY(0x27), 56 RGBY(0x24), RGBY(0x25), RGBY(0x26), RGBY(0x27),
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 RGBV(0xD8), RGBV(0xD9), RGBV(0xDA), RGBV(0xDB), 233 RGBV(0xD8), RGBV(0xD9), RGBV(0xDA), RGBV(0xDB),
218 RGBV(0xDC), RGBV(0xDD), RGBV(0xDE), RGBV(0xDF), 234 RGBV(0xDC), RGBV(0xDD), RGBV(0xDE), RGBV(0xDF),
219 RGBV(0xE0), RGBV(0xE1), RGBV(0xE2), RGBV(0xE3), 235 RGBV(0xE0), RGBV(0xE1), RGBV(0xE2), RGBV(0xE3),
220 RGBV(0xE4), RGBV(0xE5), RGBV(0xE6), RGBV(0xE7), 236 RGBV(0xE4), RGBV(0xE5), RGBV(0xE6), RGBV(0xE7),
221 RGBV(0xE8), RGBV(0xE9), RGBV(0xEA), RGBV(0xEB), 237 RGBV(0xE8), RGBV(0xE9), RGBV(0xEA), RGBV(0xEB),
222 RGBV(0xEC), RGBV(0xED), RGBV(0xEE), RGBV(0xEF), 238 RGBV(0xEC), RGBV(0xED), RGBV(0xEE), RGBV(0xEF),
223 RGBV(0xF0), RGBV(0xF1), RGBV(0xF2), RGBV(0xF3), 239 RGBV(0xF0), RGBV(0xF1), RGBV(0xF2), RGBV(0xF3),
224 RGBV(0xF4), RGBV(0xF5), RGBV(0xF6), RGBV(0xF7), 240 RGBV(0xF4), RGBV(0xF5), RGBV(0xF6), RGBV(0xF7),
225 RGBV(0xF8), RGBV(0xF9), RGBV(0xFA), RGBV(0xFB), 241 RGBV(0xF8), RGBV(0xF9), RGBV(0xFA), RGBV(0xFB),
226 RGBV(0xFC), RGBV(0xFD), RGBV(0xFE), RGBV(0xFF), 242 RGBV(0xFC), RGBV(0xFD), RGBV(0xFE), RGBV(0xFF),
243
244 // Alpha multipliers for each alpha level.
245 ALPHA(0x00), ALPHA(0x01), ALPHA(0x02), ALPHA(0x03),
246 ALPHA(0x04), ALPHA(0x05), ALPHA(0x06), ALPHA(0x07),
247 ALPHA(0x08), ALPHA(0x09), ALPHA(0x0A), ALPHA(0x0B),
248 ALPHA(0x0C), ALPHA(0x0D), ALPHA(0x0E), ALPHA(0x0F),
249 ALPHA(0x10), ALPHA(0x11), ALPHA(0x12), ALPHA(0x13),
250 ALPHA(0x14), ALPHA(0x15), ALPHA(0x16), ALPHA(0x17),
251 ALPHA(0x18), ALPHA(0x19), ALPHA(0x1A), ALPHA(0x1B),
252 ALPHA(0x1C), ALPHA(0x1D), ALPHA(0x1E), ALPHA(0x1F),
253 ALPHA(0x20), ALPHA(0x21), ALPHA(0x22), ALPHA(0x23),
254 ALPHA(0x24), ALPHA(0x25), ALPHA(0x26), ALPHA(0x27),
255 ALPHA(0x28), ALPHA(0x29), ALPHA(0x2A), ALPHA(0x2B),
256 ALPHA(0x2C), ALPHA(0x2D), ALPHA(0x2E), ALPHA(0x2F),
257 ALPHA(0x30), ALPHA(0x31), ALPHA(0x32), ALPHA(0x33),
258 ALPHA(0x34), ALPHA(0x35), ALPHA(0x36), ALPHA(0x37),
259 ALPHA(0x38), ALPHA(0x39), ALPHA(0x3A), ALPHA(0x3B),
260 ALPHA(0x3C), ALPHA(0x3D), ALPHA(0x3E), ALPHA(0x3F),
261 ALPHA(0x40), ALPHA(0x41), ALPHA(0x42), ALPHA(0x43),
262 ALPHA(0x44), ALPHA(0x45), ALPHA(0x46), ALPHA(0x47),
263 ALPHA(0x48), ALPHA(0x49), ALPHA(0x4A), ALPHA(0x4B),
264 ALPHA(0x4C), ALPHA(0x4D), ALPHA(0x4E), ALPHA(0x4F),
265 ALPHA(0x50), ALPHA(0x51), ALPHA(0x52), ALPHA(0x53),
266 ALPHA(0x54), ALPHA(0x55), ALPHA(0x56), ALPHA(0x57),
267 ALPHA(0x58), ALPHA(0x59), ALPHA(0x5A), ALPHA(0x5B),
268 ALPHA(0x5C), ALPHA(0x5D), ALPHA(0x5E), ALPHA(0x5F),
269 ALPHA(0x60), ALPHA(0x61), ALPHA(0x62), ALPHA(0x63),
270 ALPHA(0x64), ALPHA(0x65), ALPHA(0x66), ALPHA(0x67),
271 ALPHA(0x68), ALPHA(0x69), ALPHA(0x6A), ALPHA(0x6B),
272 ALPHA(0x6C), ALPHA(0x6D), ALPHA(0x6E), ALPHA(0x6F),
273 ALPHA(0x70), ALPHA(0x71), ALPHA(0x72), ALPHA(0x73),
274 ALPHA(0x74), ALPHA(0x75), ALPHA(0x76), ALPHA(0x77),
275 ALPHA(0x78), ALPHA(0x79), ALPHA(0x7A), ALPHA(0x7B),
276 ALPHA(0x7C), ALPHA(0x7D), ALPHA(0x7E), ALPHA(0x7F),
277 ALPHA(0x80), ALPHA(0x81), ALPHA(0x82), ALPHA(0x83),
278 ALPHA(0x84), ALPHA(0x85), ALPHA(0x86), ALPHA(0x87),
279 ALPHA(0x88), ALPHA(0x89), ALPHA(0x8A), ALPHA(0x8B),
280 ALPHA(0x8C), ALPHA(0x8D), ALPHA(0x8E), ALPHA(0x8F),
281 ALPHA(0x90), ALPHA(0x91), ALPHA(0x92), ALPHA(0x93),
282 ALPHA(0x94), ALPHA(0x95), ALPHA(0x96), ALPHA(0x97),
283 ALPHA(0x98), ALPHA(0x99), ALPHA(0x9A), ALPHA(0x9B),
284 ALPHA(0x9C), ALPHA(0x9D), ALPHA(0x9E), ALPHA(0x9F),
285 ALPHA(0xA0), ALPHA(0xA1), ALPHA(0xA2), ALPHA(0xA3),
286 ALPHA(0xA4), ALPHA(0xA5), ALPHA(0xA6), ALPHA(0xA7),
287 ALPHA(0xA8), ALPHA(0xA9), ALPHA(0xAA), ALPHA(0xAB),
288 ALPHA(0xAC), ALPHA(0xAD), ALPHA(0xAE), ALPHA(0xAF),
289 ALPHA(0xB0), ALPHA(0xB1), ALPHA(0xB2), ALPHA(0xB3),
290 ALPHA(0xB4), ALPHA(0xB5), ALPHA(0xB6), ALPHA(0xB7),
291 ALPHA(0xB8), ALPHA(0xB9), ALPHA(0xBA), ALPHA(0xBB),
292 ALPHA(0xBC), ALPHA(0xBD), ALPHA(0xBE), ALPHA(0xBF),
293 ALPHA(0xC0), ALPHA(0xC1), ALPHA(0xC2), ALPHA(0xC3),
294 ALPHA(0xC4), ALPHA(0xC5), ALPHA(0xC6), ALPHA(0xC7),
295 ALPHA(0xC8), ALPHA(0xC9), ALPHA(0xCA), ALPHA(0xCB),
296 ALPHA(0xCC), ALPHA(0xCD), ALPHA(0xCE), ALPHA(0xCF),
297 ALPHA(0xD0), ALPHA(0xD1), ALPHA(0xD2), ALPHA(0xD3),
298 ALPHA(0xD4), ALPHA(0xD5), ALPHA(0xD6), ALPHA(0xD7),
299 ALPHA(0xD8), ALPHA(0xD9), ALPHA(0xDA), ALPHA(0xDB),
300 ALPHA(0xDC), ALPHA(0xDD), ALPHA(0xDE), ALPHA(0xDF),
301 ALPHA(0xE0), ALPHA(0xE1), ALPHA(0xE2), ALPHA(0xE3),
302 ALPHA(0xE4), ALPHA(0xE5), ALPHA(0xE6), ALPHA(0xE7),
303 ALPHA(0xE8), ALPHA(0xE9), ALPHA(0xEA), ALPHA(0xEB),
304 ALPHA(0xEC), ALPHA(0xED), ALPHA(0xEE), ALPHA(0xEF),
305 ALPHA(0xF0), ALPHA(0xF1), ALPHA(0xF2), ALPHA(0xF3),
306 ALPHA(0xF4), ALPHA(0xF5), ALPHA(0xF6), ALPHA(0xF7),
307 ALPHA(0xF8), ALPHA(0xF9), ALPHA(0xFA), ALPHA(0xFB),
308 ALPHA(0xFC), ALPHA(0xFD), ALPHA(0xFE), ALPHA(0xFF),
227 }; 309 };
228 310
229 #undef RGBY 311 #undef RGBY
230 #undef RGBU 312 #undef RGBU
231 #undef RGBV 313 #undef RGBV
314 #undef ALPHA
232 315
233 } // extern "C" 316 } // extern "C"
OLDNEW
« no previous file with comments | « media/base/simd/yuv_to_rgb_table.h ('k') | media/base/video_frame.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698