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

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

Issue 591313008: Add support for Rec709 color space videos in software YUV convert path. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix rec709 coefficients Created 6 years 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
« 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 a YUV conversion table, the macros RGBY, RGBU, RGBV and
10 // ALPHA macros must be defined.
11 //
12 // The following table defines the RGBA contributions
13 // for each component of YUVA. The Y table is first followed
14 // by the U, and V tables. The alpha multiplier table follows.
15 // These tables are aligned and kept adjacent to optimize for
16 // SIMD and caching.
17 #define DEFINE_YUV_CONVERSION_TABLE(TABLE_NAME)\
18 SIMD_ALIGNED(const int16 TABLE_NAME[256 * 4][4]) = {\
19 RGBY(0x00), RGBY(0x01), RGBY(0x02), RGBY(0x03),\
20 RGBY(0x04), RGBY(0x05), RGBY(0x06), RGBY(0x07),\
21 RGBY(0x08), RGBY(0x09), RGBY(0x0A), RGBY(0x0B),\
22 RGBY(0x0C), RGBY(0x0D), RGBY(0x0E), RGBY(0x0F),\
23 RGBY(0x10), RGBY(0x11), RGBY(0x12), RGBY(0x13),\
24 RGBY(0x14), RGBY(0x15), RGBY(0x16), RGBY(0x17),\
25 RGBY(0x18), RGBY(0x19), RGBY(0x1A), RGBY(0x1B),\
26 RGBY(0x1C), RGBY(0x1D), RGBY(0x1E), RGBY(0x1F),\
27 RGBY(0x20), RGBY(0x21), RGBY(0x22), RGBY(0x23),\
28 RGBY(0x24), RGBY(0x25), RGBY(0x26), RGBY(0x27),\
29 RGBY(0x28), RGBY(0x29), RGBY(0x2A), RGBY(0x2B),\
30 RGBY(0x2C), RGBY(0x2D), RGBY(0x2E), RGBY(0x2F),\
31 RGBY(0x30), RGBY(0x31), RGBY(0x32), RGBY(0x33),\
32 RGBY(0x34), RGBY(0x35), RGBY(0x36), RGBY(0x37),\
33 RGBY(0x38), RGBY(0x39), RGBY(0x3A), RGBY(0x3B),\
34 RGBY(0x3C), RGBY(0x3D), RGBY(0x3E), RGBY(0x3F),\
35 RGBY(0x40), RGBY(0x41), RGBY(0x42), RGBY(0x43),\
36 RGBY(0x44), RGBY(0x45), RGBY(0x46), RGBY(0x47),\
37 RGBY(0x48), RGBY(0x49), RGBY(0x4A), RGBY(0x4B),\
38 RGBY(0x4C), RGBY(0x4D), RGBY(0x4E), RGBY(0x4F),\
39 RGBY(0x50), RGBY(0x51), RGBY(0x52), RGBY(0x53),\
40 RGBY(0x54), RGBY(0x55), RGBY(0x56), RGBY(0x57),\
41 RGBY(0x58), RGBY(0x59), RGBY(0x5A), RGBY(0x5B),\
42 RGBY(0x5C), RGBY(0x5D), RGBY(0x5E), RGBY(0x5F),\
43 RGBY(0x60), RGBY(0x61), RGBY(0x62), RGBY(0x63),\
44 RGBY(0x64), RGBY(0x65), RGBY(0x66), RGBY(0x67),\
45 RGBY(0x68), RGBY(0x69), RGBY(0x6A), RGBY(0x6B),\
46 RGBY(0x6C), RGBY(0x6D), RGBY(0x6E), RGBY(0x6F),\
47 RGBY(0x70), RGBY(0x71), RGBY(0x72), RGBY(0x73),\
48 RGBY(0x74), RGBY(0x75), RGBY(0x76), RGBY(0x77),\
49 RGBY(0x78), RGBY(0x79), RGBY(0x7A), RGBY(0x7B),\
50 RGBY(0x7C), RGBY(0x7D), RGBY(0x7E), RGBY(0x7F),\
51 RGBY(0x80), RGBY(0x81), RGBY(0x82), RGBY(0x83),\
52 RGBY(0x84), RGBY(0x85), RGBY(0x86), RGBY(0x87),\
53 RGBY(0x88), RGBY(0x89), RGBY(0x8A), RGBY(0x8B),\
54 RGBY(0x8C), RGBY(0x8D), RGBY(0x8E), RGBY(0x8F),\
55 RGBY(0x90), RGBY(0x91), RGBY(0x92), RGBY(0x93),\
56 RGBY(0x94), RGBY(0x95), RGBY(0x96), RGBY(0x97),\
57 RGBY(0x98), RGBY(0x99), RGBY(0x9A), RGBY(0x9B),\
58 RGBY(0x9C), RGBY(0x9D), RGBY(0x9E), RGBY(0x9F),\
59 RGBY(0xA0), RGBY(0xA1), RGBY(0xA2), RGBY(0xA3),\
60 RGBY(0xA4), RGBY(0xA5), RGBY(0xA6), RGBY(0xA7),\
61 RGBY(0xA8), RGBY(0xA9), RGBY(0xAA), RGBY(0xAB),\
62 RGBY(0xAC), RGBY(0xAD), RGBY(0xAE), RGBY(0xAF),\
63 RGBY(0xB0), RGBY(0xB1), RGBY(0xB2), RGBY(0xB3),\
64 RGBY(0xB4), RGBY(0xB5), RGBY(0xB6), RGBY(0xB7),\
65 RGBY(0xB8), RGBY(0xB9), RGBY(0xBA), RGBY(0xBB),\
66 RGBY(0xBC), RGBY(0xBD), RGBY(0xBE), RGBY(0xBF),\
67 RGBY(0xC0), RGBY(0xC1), RGBY(0xC2), RGBY(0xC3),\
68 RGBY(0xC4), RGBY(0xC5), RGBY(0xC6), RGBY(0xC7),\
69 RGBY(0xC8), RGBY(0xC9), RGBY(0xCA), RGBY(0xCB),\
70 RGBY(0xCC), RGBY(0xCD), RGBY(0xCE), RGBY(0xCF),\
71 RGBY(0xD0), RGBY(0xD1), RGBY(0xD2), RGBY(0xD3),\
72 RGBY(0xD4), RGBY(0xD5), RGBY(0xD6), RGBY(0xD7),\
73 RGBY(0xD8), RGBY(0xD9), RGBY(0xDA), RGBY(0xDB),\
74 RGBY(0xDC), RGBY(0xDD), RGBY(0xDE), RGBY(0xDF),\
75 RGBY(0xE0), RGBY(0xE1), RGBY(0xE2), RGBY(0xE3),\
76 RGBY(0xE4), RGBY(0xE5), RGBY(0xE6), RGBY(0xE7),\
77 RGBY(0xE8), RGBY(0xE9), RGBY(0xEA), RGBY(0xEB),\
78 RGBY(0xEC), RGBY(0xED), RGBY(0xEE), RGBY(0xEF),\
79 RGBY(0xF0), RGBY(0xF1), RGBY(0xF2), RGBY(0xF3),\
80 RGBY(0xF4), RGBY(0xF5), RGBY(0xF6), RGBY(0xF7),\
81 RGBY(0xF8), RGBY(0xF9), RGBY(0xFA), RGBY(0xFB),\
82 RGBY(0xFC), RGBY(0xFD), RGBY(0xFE), RGBY(0xFF),\
83 /* Chroma U table. */\
84 RGBU(0x00), RGBU(0x01), RGBU(0x02), RGBU(0x03),\
85 RGBU(0x04), RGBU(0x05), RGBU(0x06), RGBU(0x07),\
86 RGBU(0x08), RGBU(0x09), RGBU(0x0A), RGBU(0x0B),\
87 RGBU(0x0C), RGBU(0x0D), RGBU(0x0E), RGBU(0x0F),\
88 RGBU(0x10), RGBU(0x11), RGBU(0x12), RGBU(0x13),\
89 RGBU(0x14), RGBU(0x15), RGBU(0x16), RGBU(0x17),\
90 RGBU(0x18), RGBU(0x19), RGBU(0x1A), RGBU(0x1B),\
91 RGBU(0x1C), RGBU(0x1D), RGBU(0x1E), RGBU(0x1F),\
92 RGBU(0x20), RGBU(0x21), RGBU(0x22), RGBU(0x23),\
93 RGBU(0x24), RGBU(0x25), RGBU(0x26), RGBU(0x27),\
94 RGBU(0x28), RGBU(0x29), RGBU(0x2A), RGBU(0x2B),\
95 RGBU(0x2C), RGBU(0x2D), RGBU(0x2E), RGBU(0x2F),\
96 RGBU(0x30), RGBU(0x31), RGBU(0x32), RGBU(0x33),\
97 RGBU(0x34), RGBU(0x35), RGBU(0x36), RGBU(0x37),\
98 RGBU(0x38), RGBU(0x39), RGBU(0x3A), RGBU(0x3B),\
99 RGBU(0x3C), RGBU(0x3D), RGBU(0x3E), RGBU(0x3F),\
100 RGBU(0x40), RGBU(0x41), RGBU(0x42), RGBU(0x43),\
101 RGBU(0x44), RGBU(0x45), RGBU(0x46), RGBU(0x47),\
102 RGBU(0x48), RGBU(0x49), RGBU(0x4A), RGBU(0x4B),\
103 RGBU(0x4C), RGBU(0x4D), RGBU(0x4E), RGBU(0x4F),\
104 RGBU(0x50), RGBU(0x51), RGBU(0x52), RGBU(0x53),\
105 RGBU(0x54), RGBU(0x55), RGBU(0x56), RGBU(0x57),\
106 RGBU(0x58), RGBU(0x59), RGBU(0x5A), RGBU(0x5B),\
107 RGBU(0x5C), RGBU(0x5D), RGBU(0x5E), RGBU(0x5F),\
108 RGBU(0x60), RGBU(0x61), RGBU(0x62), RGBU(0x63),\
109 RGBU(0x64), RGBU(0x65), RGBU(0x66), RGBU(0x67),\
110 RGBU(0x68), RGBU(0x69), RGBU(0x6A), RGBU(0x6B),\
111 RGBU(0x6C), RGBU(0x6D), RGBU(0x6E), RGBU(0x6F),\
112 RGBU(0x70), RGBU(0x71), RGBU(0x72), RGBU(0x73),\
113 RGBU(0x74), RGBU(0x75), RGBU(0x76), RGBU(0x77),\
114 RGBU(0x78), RGBU(0x79), RGBU(0x7A), RGBU(0x7B),\
115 RGBU(0x7C), RGBU(0x7D), RGBU(0x7E), RGBU(0x7F),\
116 RGBU(0x80), RGBU(0x81), RGBU(0x82), RGBU(0x83),\
117 RGBU(0x84), RGBU(0x85), RGBU(0x86), RGBU(0x87),\
118 RGBU(0x88), RGBU(0x89), RGBU(0x8A), RGBU(0x8B),\
119 RGBU(0x8C), RGBU(0x8D), RGBU(0x8E), RGBU(0x8F),\
120 RGBU(0x90), RGBU(0x91), RGBU(0x92), RGBU(0x93),\
121 RGBU(0x94), RGBU(0x95), RGBU(0x96), RGBU(0x97),\
122 RGBU(0x98), RGBU(0x99), RGBU(0x9A), RGBU(0x9B),\
123 RGBU(0x9C), RGBU(0x9D), RGBU(0x9E), RGBU(0x9F),\
124 RGBU(0xA0), RGBU(0xA1), RGBU(0xA2), RGBU(0xA3),\
125 RGBU(0xA4), RGBU(0xA5), RGBU(0xA6), RGBU(0xA7),\
126 RGBU(0xA8), RGBU(0xA9), RGBU(0xAA), RGBU(0xAB),\
127 RGBU(0xAC), RGBU(0xAD), RGBU(0xAE), RGBU(0xAF),\
128 RGBU(0xB0), RGBU(0xB1), RGBU(0xB2), RGBU(0xB3),\
129 RGBU(0xB4), RGBU(0xB5), RGBU(0xB6), RGBU(0xB7),\
130 RGBU(0xB8), RGBU(0xB9), RGBU(0xBA), RGBU(0xBB),\
131 RGBU(0xBC), RGBU(0xBD), RGBU(0xBE), RGBU(0xBF),\
132 RGBU(0xC0), RGBU(0xC1), RGBU(0xC2), RGBU(0xC3),\
133 RGBU(0xC4), RGBU(0xC5), RGBU(0xC6), RGBU(0xC7),\
134 RGBU(0xC8), RGBU(0xC9), RGBU(0xCA), RGBU(0xCB),\
135 RGBU(0xCC), RGBU(0xCD), RGBU(0xCE), RGBU(0xCF),\
136 RGBU(0xD0), RGBU(0xD1), RGBU(0xD2), RGBU(0xD3),\
137 RGBU(0xD4), RGBU(0xD5), RGBU(0xD6), RGBU(0xD7),\
138 RGBU(0xD8), RGBU(0xD9), RGBU(0xDA), RGBU(0xDB),\
139 RGBU(0xDC), RGBU(0xDD), RGBU(0xDE), RGBU(0xDF),\
140 RGBU(0xE0), RGBU(0xE1), RGBU(0xE2), RGBU(0xE3),\
141 RGBU(0xE4), RGBU(0xE5), RGBU(0xE6), RGBU(0xE7),\
142 RGBU(0xE8), RGBU(0xE9), RGBU(0xEA), RGBU(0xEB),\
143 RGBU(0xEC), RGBU(0xED), RGBU(0xEE), RGBU(0xEF),\
144 RGBU(0xF0), RGBU(0xF1), RGBU(0xF2), RGBU(0xF3),\
145 RGBU(0xF4), RGBU(0xF5), RGBU(0xF6), RGBU(0xF7),\
146 RGBU(0xF8), RGBU(0xF9), RGBU(0xFA), RGBU(0xFB),\
147 RGBU(0xFC), RGBU(0xFD), RGBU(0xFE), RGBU(0xFF),\
148 /* Chroma V table. */\
149 RGBV(0x00), RGBV(0x01), RGBV(0x02), RGBV(0x03),\
150 RGBV(0x04), RGBV(0x05), RGBV(0x06), RGBV(0x07),\
151 RGBV(0x08), RGBV(0x09), RGBV(0x0A), RGBV(0x0B),\
152 RGBV(0x0C), RGBV(0x0D), RGBV(0x0E), RGBV(0x0F),\
153 RGBV(0x10), RGBV(0x11), RGBV(0x12), RGBV(0x13),\
154 RGBV(0x14), RGBV(0x15), RGBV(0x16), RGBV(0x17),\
155 RGBV(0x18), RGBV(0x19), RGBV(0x1A), RGBV(0x1B),\
156 RGBV(0x1C), RGBV(0x1D), RGBV(0x1E), RGBV(0x1F),\
157 RGBV(0x20), RGBV(0x21), RGBV(0x22), RGBV(0x23),\
158 RGBV(0x24), RGBV(0x25), RGBV(0x26), RGBV(0x27),\
159 RGBV(0x28), RGBV(0x29), RGBV(0x2A), RGBV(0x2B),\
160 RGBV(0x2C), RGBV(0x2D), RGBV(0x2E), RGBV(0x2F),\
161 RGBV(0x30), RGBV(0x31), RGBV(0x32), RGBV(0x33),\
162 RGBV(0x34), RGBV(0x35), RGBV(0x36), RGBV(0x37),\
163 RGBV(0x38), RGBV(0x39), RGBV(0x3A), RGBV(0x3B),\
164 RGBV(0x3C), RGBV(0x3D), RGBV(0x3E), RGBV(0x3F),\
165 RGBV(0x40), RGBV(0x41), RGBV(0x42), RGBV(0x43),\
166 RGBV(0x44), RGBV(0x45), RGBV(0x46), RGBV(0x47),\
167 RGBV(0x48), RGBV(0x49), RGBV(0x4A), RGBV(0x4B),\
168 RGBV(0x4C), RGBV(0x4D), RGBV(0x4E), RGBV(0x4F),\
169 RGBV(0x50), RGBV(0x51), RGBV(0x52), RGBV(0x53),\
170 RGBV(0x54), RGBV(0x55), RGBV(0x56), RGBV(0x57),\
171 RGBV(0x58), RGBV(0x59), RGBV(0x5A), RGBV(0x5B),\
172 RGBV(0x5C), RGBV(0x5D), RGBV(0x5E), RGBV(0x5F),\
173 RGBV(0x60), RGBV(0x61), RGBV(0x62), RGBV(0x63),\
174 RGBV(0x64), RGBV(0x65), RGBV(0x66), RGBV(0x67),\
175 RGBV(0x68), RGBV(0x69), RGBV(0x6A), RGBV(0x6B),\
176 RGBV(0x6C), RGBV(0x6D), RGBV(0x6E), RGBV(0x6F),\
177 RGBV(0x70), RGBV(0x71), RGBV(0x72), RGBV(0x73),\
178 RGBV(0x74), RGBV(0x75), RGBV(0x76), RGBV(0x77),\
179 RGBV(0x78), RGBV(0x79), RGBV(0x7A), RGBV(0x7B),\
180 RGBV(0x7C), RGBV(0x7D), RGBV(0x7E), RGBV(0x7F),\
181 RGBV(0x80), RGBV(0x81), RGBV(0x82), RGBV(0x83),\
182 RGBV(0x84), RGBV(0x85), RGBV(0x86), RGBV(0x87),\
183 RGBV(0x88), RGBV(0x89), RGBV(0x8A), RGBV(0x8B),\
184 RGBV(0x8C), RGBV(0x8D), RGBV(0x8E), RGBV(0x8F),\
185 RGBV(0x90), RGBV(0x91), RGBV(0x92), RGBV(0x93),\
186 RGBV(0x94), RGBV(0x95), RGBV(0x96), RGBV(0x97),\
187 RGBV(0x98), RGBV(0x99), RGBV(0x9A), RGBV(0x9B),\
188 RGBV(0x9C), RGBV(0x9D), RGBV(0x9E), RGBV(0x9F),\
189 RGBV(0xA0), RGBV(0xA1), RGBV(0xA2), RGBV(0xA3),\
190 RGBV(0xA4), RGBV(0xA5), RGBV(0xA6), RGBV(0xA7),\
191 RGBV(0xA8), RGBV(0xA9), RGBV(0xAA), RGBV(0xAB),\
192 RGBV(0xAC), RGBV(0xAD), RGBV(0xAE), RGBV(0xAF),\
193 RGBV(0xB0), RGBV(0xB1), RGBV(0xB2), RGBV(0xB3),\
194 RGBV(0xB4), RGBV(0xB5), RGBV(0xB6), RGBV(0xB7),\
195 RGBV(0xB8), RGBV(0xB9), RGBV(0xBA), RGBV(0xBB),\
196 RGBV(0xBC), RGBV(0xBD), RGBV(0xBE), RGBV(0xBF),\
197 RGBV(0xC0), RGBV(0xC1), RGBV(0xC2), RGBV(0xC3),\
198 RGBV(0xC4), RGBV(0xC5), RGBV(0xC6), RGBV(0xC7),\
199 RGBV(0xC8), RGBV(0xC9), RGBV(0xCA), RGBV(0xCB),\
200 RGBV(0xCC), RGBV(0xCD), RGBV(0xCE), RGBV(0xCF),\
201 RGBV(0xD0), RGBV(0xD1), RGBV(0xD2), RGBV(0xD3),\
202 RGBV(0xD4), RGBV(0xD5), RGBV(0xD6), RGBV(0xD7),\
203 RGBV(0xD8), RGBV(0xD9), RGBV(0xDA), RGBV(0xDB),\
204 RGBV(0xDC), RGBV(0xDD), RGBV(0xDE), RGBV(0xDF),\
205 RGBV(0xE0), RGBV(0xE1), RGBV(0xE2), RGBV(0xE3),\
206 RGBV(0xE4), RGBV(0xE5), RGBV(0xE6), RGBV(0xE7),\
207 RGBV(0xE8), RGBV(0xE9), RGBV(0xEA), RGBV(0xEB),\
208 RGBV(0xEC), RGBV(0xED), RGBV(0xEE), RGBV(0xEF),\
209 RGBV(0xF0), RGBV(0xF1), RGBV(0xF2), RGBV(0xF3),\
210 RGBV(0xF4), RGBV(0xF5), RGBV(0xF6), RGBV(0xF7),\
211 RGBV(0xF8), RGBV(0xF9), RGBV(0xFA), RGBV(0xFB),\
212 RGBV(0xFC), RGBV(0xFD), RGBV(0xFE), RGBV(0xFF),\
213 /* Alpha multipliers for each alpha level. */\
214 ALPHA(0x00), ALPHA(0x01), ALPHA(0x02), ALPHA(0x03),\
215 ALPHA(0x04), ALPHA(0x05), ALPHA(0x06), ALPHA(0x07),\
216 ALPHA(0x08), ALPHA(0x09), ALPHA(0x0A), ALPHA(0x0B),\
217 ALPHA(0x0C), ALPHA(0x0D), ALPHA(0x0E), ALPHA(0x0F),\
218 ALPHA(0x10), ALPHA(0x11), ALPHA(0x12), ALPHA(0x13),\
219 ALPHA(0x14), ALPHA(0x15), ALPHA(0x16), ALPHA(0x17),\
220 ALPHA(0x18), ALPHA(0x19), ALPHA(0x1A), ALPHA(0x1B),\
221 ALPHA(0x1C), ALPHA(0x1D), ALPHA(0x1E), ALPHA(0x1F),\
222 ALPHA(0x20), ALPHA(0x21), ALPHA(0x22), ALPHA(0x23),\
223 ALPHA(0x24), ALPHA(0x25), ALPHA(0x26), ALPHA(0x27),\
224 ALPHA(0x28), ALPHA(0x29), ALPHA(0x2A), ALPHA(0x2B),\
225 ALPHA(0x2C), ALPHA(0x2D), ALPHA(0x2E), ALPHA(0x2F),\
226 ALPHA(0x30), ALPHA(0x31), ALPHA(0x32), ALPHA(0x33),\
227 ALPHA(0x34), ALPHA(0x35), ALPHA(0x36), ALPHA(0x37),\
228 ALPHA(0x38), ALPHA(0x39), ALPHA(0x3A), ALPHA(0x3B),\
229 ALPHA(0x3C), ALPHA(0x3D), ALPHA(0x3E), ALPHA(0x3F),\
230 ALPHA(0x40), ALPHA(0x41), ALPHA(0x42), ALPHA(0x43),\
231 ALPHA(0x44), ALPHA(0x45), ALPHA(0x46), ALPHA(0x47),\
232 ALPHA(0x48), ALPHA(0x49), ALPHA(0x4A), ALPHA(0x4B),\
233 ALPHA(0x4C), ALPHA(0x4D), ALPHA(0x4E), ALPHA(0x4F),\
234 ALPHA(0x50), ALPHA(0x51), ALPHA(0x52), ALPHA(0x53),\
235 ALPHA(0x54), ALPHA(0x55), ALPHA(0x56), ALPHA(0x57),\
236 ALPHA(0x58), ALPHA(0x59), ALPHA(0x5A), ALPHA(0x5B),\
237 ALPHA(0x5C), ALPHA(0x5D), ALPHA(0x5E), ALPHA(0x5F),\
238 ALPHA(0x60), ALPHA(0x61), ALPHA(0x62), ALPHA(0x63),\
239 ALPHA(0x64), ALPHA(0x65), ALPHA(0x66), ALPHA(0x67),\
240 ALPHA(0x68), ALPHA(0x69), ALPHA(0x6A), ALPHA(0x6B),\
241 ALPHA(0x6C), ALPHA(0x6D), ALPHA(0x6E), ALPHA(0x6F),\
242 ALPHA(0x70), ALPHA(0x71), ALPHA(0x72), ALPHA(0x73),\
243 ALPHA(0x74), ALPHA(0x75), ALPHA(0x76), ALPHA(0x77),\
244 ALPHA(0x78), ALPHA(0x79), ALPHA(0x7A), ALPHA(0x7B),\
245 ALPHA(0x7C), ALPHA(0x7D), ALPHA(0x7E), ALPHA(0x7F),\
246 ALPHA(0x80), ALPHA(0x81), ALPHA(0x82), ALPHA(0x83),\
247 ALPHA(0x84), ALPHA(0x85), ALPHA(0x86), ALPHA(0x87),\
248 ALPHA(0x88), ALPHA(0x89), ALPHA(0x8A), ALPHA(0x8B),\
249 ALPHA(0x8C), ALPHA(0x8D), ALPHA(0x8E), ALPHA(0x8F),\
250 ALPHA(0x90), ALPHA(0x91), ALPHA(0x92), ALPHA(0x93),\
251 ALPHA(0x94), ALPHA(0x95), ALPHA(0x96), ALPHA(0x97),\
252 ALPHA(0x98), ALPHA(0x99), ALPHA(0x9A), ALPHA(0x9B),\
253 ALPHA(0x9C), ALPHA(0x9D), ALPHA(0x9E), ALPHA(0x9F),\
254 ALPHA(0xA0), ALPHA(0xA1), ALPHA(0xA2), ALPHA(0xA3),\
255 ALPHA(0xA4), ALPHA(0xA5), ALPHA(0xA6), ALPHA(0xA7),\
256 ALPHA(0xA8), ALPHA(0xA9), ALPHA(0xAA), ALPHA(0xAB),\
257 ALPHA(0xAC), ALPHA(0xAD), ALPHA(0xAE), ALPHA(0xAF),\
258 ALPHA(0xB0), ALPHA(0xB1), ALPHA(0xB2), ALPHA(0xB3),\
259 ALPHA(0xB4), ALPHA(0xB5), ALPHA(0xB6), ALPHA(0xB7),\
260 ALPHA(0xB8), ALPHA(0xB9), ALPHA(0xBA), ALPHA(0xBB),\
261 ALPHA(0xBC), ALPHA(0xBD), ALPHA(0xBE), ALPHA(0xBF),\
262 ALPHA(0xC0), ALPHA(0xC1), ALPHA(0xC2), ALPHA(0xC3),\
263 ALPHA(0xC4), ALPHA(0xC5), ALPHA(0xC6), ALPHA(0xC7),\
264 ALPHA(0xC8), ALPHA(0xC9), ALPHA(0xCA), ALPHA(0xCB),\
265 ALPHA(0xCC), ALPHA(0xCD), ALPHA(0xCE), ALPHA(0xCF),\
266 ALPHA(0xD0), ALPHA(0xD1), ALPHA(0xD2), ALPHA(0xD3),\
267 ALPHA(0xD4), ALPHA(0xD5), ALPHA(0xD6), ALPHA(0xD7),\
268 ALPHA(0xD8), ALPHA(0xD9), ALPHA(0xDA), ALPHA(0xDB),\
269 ALPHA(0xDC), ALPHA(0xDD), ALPHA(0xDE), ALPHA(0xDF),\
270 ALPHA(0xE0), ALPHA(0xE1), ALPHA(0xE2), ALPHA(0xE3),\
271 ALPHA(0xE4), ALPHA(0xE5), ALPHA(0xE6), ALPHA(0xE7),\
272 ALPHA(0xE8), ALPHA(0xE9), ALPHA(0xEA), ALPHA(0xEB),\
273 ALPHA(0xEC), ALPHA(0xED), ALPHA(0xEE), ALPHA(0xEF),\
274 ALPHA(0xF0), ALPHA(0xF1), ALPHA(0xF2), ALPHA(0xF3),\
275 ALPHA(0xF4), ALPHA(0xF5), ALPHA(0xF6), ALPHA(0xF7),\
276 ALPHA(0xF8), ALPHA(0xF9), ALPHA(0xFA), ALPHA(0xFB),\
277 ALPHA(0xFC), ALPHA(0xFD), ALPHA(0xFE), ALPHA(0xFF),\
278 }
279
280 // The most common Rec601 color space:
281
9 // Defines the R,G,B,A contributions from Y. 282 // Defines the R,G,B,A contributions from Y.
10 #define RGBY(i) { \ 283 #define RGBY(i) { \
11 static_cast<int16>(1.164 * 64 * (i - 16) + 0.5), \ 284 static_cast<int16>(1.164 * 64 * (i - 16) + 0.5), \
12 static_cast<int16>(1.164 * 64 * (i - 16) + 0.5), \ 285 static_cast<int16>(1.164 * 64 * (i - 16) + 0.5), \
13 static_cast<int16>(1.164 * 64 * (i - 16) + 0.5), \ 286 static_cast<int16>(1.164 * 64 * (i - 16) + 0.5), \
14 0 \ 287 0 \
15 } 288 }
16 289
17 // Defines the R,G,B,A contributions from U. 290 // Defines the R,G,B,A contributions from U.
18 // The contribution to A is the same for any value of U 291 // The contribution to A is the same for any value of U
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 static_cast<int16>(1.596 * 64 * (i - 128) + 0.5), \ 325 static_cast<int16>(1.596 * 64 * (i - 128) + 0.5), \
53 0 \ 326 0 \
54 } 327 }
55 #endif 328 #endif
56 329
57 // Used to define a set of multiplier words for each alpha level. 330 // Used to define a set of multiplier words for each alpha level.
58 #define ALPHA(i) { \ 331 #define ALPHA(i) { \
59 i, i, i, i \ 332 i, i, i, i \
60 } 333 }
61 334
62 // The following table defines the RGBA contributions 335 DEFINE_YUV_CONVERSION_TABLE(kCoefficientsRgbY);
63 // for each component of YUVA. The Y table is first followed
64 // by the U, and V tables. The alpha multiplier table follows.
65 // These tables are aligned and kept adjacent to optimize for
66 // SIMD and cacheing.
67
68 SIMD_ALIGNED(const int16 kCoefficientsRgbY[256 * 4][4]) = {
69 RGBY(0x00), RGBY(0x01), RGBY(0x02), RGBY(0x03),
70 RGBY(0x04), RGBY(0x05), RGBY(0x06), RGBY(0x07),
71 RGBY(0x08), RGBY(0x09), RGBY(0x0A), RGBY(0x0B),
72 RGBY(0x0C), RGBY(0x0D), RGBY(0x0E), RGBY(0x0F),
73 RGBY(0x10), RGBY(0x11), RGBY(0x12), RGBY(0x13),
74 RGBY(0x14), RGBY(0x15), RGBY(0x16), RGBY(0x17),
75 RGBY(0x18), RGBY(0x19), RGBY(0x1A), RGBY(0x1B),
76 RGBY(0x1C), RGBY(0x1D), RGBY(0x1E), RGBY(0x1F),
77 RGBY(0x20), RGBY(0x21), RGBY(0x22), RGBY(0x23),
78 RGBY(0x24), RGBY(0x25), RGBY(0x26), RGBY(0x27),
79 RGBY(0x28), RGBY(0x29), RGBY(0x2A), RGBY(0x2B),
80 RGBY(0x2C), RGBY(0x2D), RGBY(0x2E), RGBY(0x2F),
81 RGBY(0x30), RGBY(0x31), RGBY(0x32), RGBY(0x33),
82 RGBY(0x34), RGBY(0x35), RGBY(0x36), RGBY(0x37),
83 RGBY(0x38), RGBY(0x39), RGBY(0x3A), RGBY(0x3B),
84 RGBY(0x3C), RGBY(0x3D), RGBY(0x3E), RGBY(0x3F),
85 RGBY(0x40), RGBY(0x41), RGBY(0x42), RGBY(0x43),
86 RGBY(0x44), RGBY(0x45), RGBY(0x46), RGBY(0x47),
87 RGBY(0x48), RGBY(0x49), RGBY(0x4A), RGBY(0x4B),
88 RGBY(0x4C), RGBY(0x4D), RGBY(0x4E), RGBY(0x4F),
89 RGBY(0x50), RGBY(0x51), RGBY(0x52), RGBY(0x53),
90 RGBY(0x54), RGBY(0x55), RGBY(0x56), RGBY(0x57),
91 RGBY(0x58), RGBY(0x59), RGBY(0x5A), RGBY(0x5B),
92 RGBY(0x5C), RGBY(0x5D), RGBY(0x5E), RGBY(0x5F),
93 RGBY(0x60), RGBY(0x61), RGBY(0x62), RGBY(0x63),
94 RGBY(0x64), RGBY(0x65), RGBY(0x66), RGBY(0x67),
95 RGBY(0x68), RGBY(0x69), RGBY(0x6A), RGBY(0x6B),
96 RGBY(0x6C), RGBY(0x6D), RGBY(0x6E), RGBY(0x6F),
97 RGBY(0x70), RGBY(0x71), RGBY(0x72), RGBY(0x73),
98 RGBY(0x74), RGBY(0x75), RGBY(0x76), RGBY(0x77),
99 RGBY(0x78), RGBY(0x79), RGBY(0x7A), RGBY(0x7B),
100 RGBY(0x7C), RGBY(0x7D), RGBY(0x7E), RGBY(0x7F),
101 RGBY(0x80), RGBY(0x81), RGBY(0x82), RGBY(0x83),
102 RGBY(0x84), RGBY(0x85), RGBY(0x86), RGBY(0x87),
103 RGBY(0x88), RGBY(0x89), RGBY(0x8A), RGBY(0x8B),
104 RGBY(0x8C), RGBY(0x8D), RGBY(0x8E), RGBY(0x8F),
105 RGBY(0x90), RGBY(0x91), RGBY(0x92), RGBY(0x93),
106 RGBY(0x94), RGBY(0x95), RGBY(0x96), RGBY(0x97),
107 RGBY(0x98), RGBY(0x99), RGBY(0x9A), RGBY(0x9B),
108 RGBY(0x9C), RGBY(0x9D), RGBY(0x9E), RGBY(0x9F),
109 RGBY(0xA0), RGBY(0xA1), RGBY(0xA2), RGBY(0xA3),
110 RGBY(0xA4), RGBY(0xA5), RGBY(0xA6), RGBY(0xA7),
111 RGBY(0xA8), RGBY(0xA9), RGBY(0xAA), RGBY(0xAB),
112 RGBY(0xAC), RGBY(0xAD), RGBY(0xAE), RGBY(0xAF),
113 RGBY(0xB0), RGBY(0xB1), RGBY(0xB2), RGBY(0xB3),
114 RGBY(0xB4), RGBY(0xB5), RGBY(0xB6), RGBY(0xB7),
115 RGBY(0xB8), RGBY(0xB9), RGBY(0xBA), RGBY(0xBB),
116 RGBY(0xBC), RGBY(0xBD), RGBY(0xBE), RGBY(0xBF),
117 RGBY(0xC0), RGBY(0xC1), RGBY(0xC2), RGBY(0xC3),
118 RGBY(0xC4), RGBY(0xC5), RGBY(0xC6), RGBY(0xC7),
119 RGBY(0xC8), RGBY(0xC9), RGBY(0xCA), RGBY(0xCB),
120 RGBY(0xCC), RGBY(0xCD), RGBY(0xCE), RGBY(0xCF),
121 RGBY(0xD0), RGBY(0xD1), RGBY(0xD2), RGBY(0xD3),
122 RGBY(0xD4), RGBY(0xD5), RGBY(0xD6), RGBY(0xD7),
123 RGBY(0xD8), RGBY(0xD9), RGBY(0xDA), RGBY(0xDB),
124 RGBY(0xDC), RGBY(0xDD), RGBY(0xDE), RGBY(0xDF),
125 RGBY(0xE0), RGBY(0xE1), RGBY(0xE2), RGBY(0xE3),
126 RGBY(0xE4), RGBY(0xE5), RGBY(0xE6), RGBY(0xE7),
127 RGBY(0xE8), RGBY(0xE9), RGBY(0xEA), RGBY(0xEB),
128 RGBY(0xEC), RGBY(0xED), RGBY(0xEE), RGBY(0xEF),
129 RGBY(0xF0), RGBY(0xF1), RGBY(0xF2), RGBY(0xF3),
130 RGBY(0xF4), RGBY(0xF5), RGBY(0xF6), RGBY(0xF7),
131 RGBY(0xF8), RGBY(0xF9), RGBY(0xFA), RGBY(0xFB),
132 RGBY(0xFC), RGBY(0xFD), RGBY(0xFE), RGBY(0xFF),
133
134 // Chroma U table.
135 RGBU(0x00), RGBU(0x01), RGBU(0x02), RGBU(0x03),
136 RGBU(0x04), RGBU(0x05), RGBU(0x06), RGBU(0x07),
137 RGBU(0x08), RGBU(0x09), RGBU(0x0A), RGBU(0x0B),
138 RGBU(0x0C), RGBU(0x0D), RGBU(0x0E), RGBU(0x0F),
139 RGBU(0x10), RGBU(0x11), RGBU(0x12), RGBU(0x13),
140 RGBU(0x14), RGBU(0x15), RGBU(0x16), RGBU(0x17),
141 RGBU(0x18), RGBU(0x19), RGBU(0x1A), RGBU(0x1B),
142 RGBU(0x1C), RGBU(0x1D), RGBU(0x1E), RGBU(0x1F),
143 RGBU(0x20), RGBU(0x21), RGBU(0x22), RGBU(0x23),
144 RGBU(0x24), RGBU(0x25), RGBU(0x26), RGBU(0x27),
145 RGBU(0x28), RGBU(0x29), RGBU(0x2A), RGBU(0x2B),
146 RGBU(0x2C), RGBU(0x2D), RGBU(0x2E), RGBU(0x2F),
147 RGBU(0x30), RGBU(0x31), RGBU(0x32), RGBU(0x33),
148 RGBU(0x34), RGBU(0x35), RGBU(0x36), RGBU(0x37),
149 RGBU(0x38), RGBU(0x39), RGBU(0x3A), RGBU(0x3B),
150 RGBU(0x3C), RGBU(0x3D), RGBU(0x3E), RGBU(0x3F),
151 RGBU(0x40), RGBU(0x41), RGBU(0x42), RGBU(0x43),
152 RGBU(0x44), RGBU(0x45), RGBU(0x46), RGBU(0x47),
153 RGBU(0x48), RGBU(0x49), RGBU(0x4A), RGBU(0x4B),
154 RGBU(0x4C), RGBU(0x4D), RGBU(0x4E), RGBU(0x4F),
155 RGBU(0x50), RGBU(0x51), RGBU(0x52), RGBU(0x53),
156 RGBU(0x54), RGBU(0x55), RGBU(0x56), RGBU(0x57),
157 RGBU(0x58), RGBU(0x59), RGBU(0x5A), RGBU(0x5B),
158 RGBU(0x5C), RGBU(0x5D), RGBU(0x5E), RGBU(0x5F),
159 RGBU(0x60), RGBU(0x61), RGBU(0x62), RGBU(0x63),
160 RGBU(0x64), RGBU(0x65), RGBU(0x66), RGBU(0x67),
161 RGBU(0x68), RGBU(0x69), RGBU(0x6A), RGBU(0x6B),
162 RGBU(0x6C), RGBU(0x6D), RGBU(0x6E), RGBU(0x6F),
163 RGBU(0x70), RGBU(0x71), RGBU(0x72), RGBU(0x73),
164 RGBU(0x74), RGBU(0x75), RGBU(0x76), RGBU(0x77),
165 RGBU(0x78), RGBU(0x79), RGBU(0x7A), RGBU(0x7B),
166 RGBU(0x7C), RGBU(0x7D), RGBU(0x7E), RGBU(0x7F),
167 RGBU(0x80), RGBU(0x81), RGBU(0x82), RGBU(0x83),
168 RGBU(0x84), RGBU(0x85), RGBU(0x86), RGBU(0x87),
169 RGBU(0x88), RGBU(0x89), RGBU(0x8A), RGBU(0x8B),
170 RGBU(0x8C), RGBU(0x8D), RGBU(0x8E), RGBU(0x8F),
171 RGBU(0x90), RGBU(0x91), RGBU(0x92), RGBU(0x93),
172 RGBU(0x94), RGBU(0x95), RGBU(0x96), RGBU(0x97),
173 RGBU(0x98), RGBU(0x99), RGBU(0x9A), RGBU(0x9B),
174 RGBU(0x9C), RGBU(0x9D), RGBU(0x9E), RGBU(0x9F),
175 RGBU(0xA0), RGBU(0xA1), RGBU(0xA2), RGBU(0xA3),
176 RGBU(0xA4), RGBU(0xA5), RGBU(0xA6), RGBU(0xA7),
177 RGBU(0xA8), RGBU(0xA9), RGBU(0xAA), RGBU(0xAB),
178 RGBU(0xAC), RGBU(0xAD), RGBU(0xAE), RGBU(0xAF),
179 RGBU(0xB0), RGBU(0xB1), RGBU(0xB2), RGBU(0xB3),
180 RGBU(0xB4), RGBU(0xB5), RGBU(0xB6), RGBU(0xB7),
181 RGBU(0xB8), RGBU(0xB9), RGBU(0xBA), RGBU(0xBB),
182 RGBU(0xBC), RGBU(0xBD), RGBU(0xBE), RGBU(0xBF),
183 RGBU(0xC0), RGBU(0xC1), RGBU(0xC2), RGBU(0xC3),
184 RGBU(0xC4), RGBU(0xC5), RGBU(0xC6), RGBU(0xC7),
185 RGBU(0xC8), RGBU(0xC9), RGBU(0xCA), RGBU(0xCB),
186 RGBU(0xCC), RGBU(0xCD), RGBU(0xCE), RGBU(0xCF),
187 RGBU(0xD0), RGBU(0xD1), RGBU(0xD2), RGBU(0xD3),
188 RGBU(0xD4), RGBU(0xD5), RGBU(0xD6), RGBU(0xD7),
189 RGBU(0xD8), RGBU(0xD9), RGBU(0xDA), RGBU(0xDB),
190 RGBU(0xDC), RGBU(0xDD), RGBU(0xDE), RGBU(0xDF),
191 RGBU(0xE0), RGBU(0xE1), RGBU(0xE2), RGBU(0xE3),
192 RGBU(0xE4), RGBU(0xE5), RGBU(0xE6), RGBU(0xE7),
193 RGBU(0xE8), RGBU(0xE9), RGBU(0xEA), RGBU(0xEB),
194 RGBU(0xEC), RGBU(0xED), RGBU(0xEE), RGBU(0xEF),
195 RGBU(0xF0), RGBU(0xF1), RGBU(0xF2), RGBU(0xF3),
196 RGBU(0xF4), RGBU(0xF5), RGBU(0xF6), RGBU(0xF7),
197 RGBU(0xF8), RGBU(0xF9), RGBU(0xFA), RGBU(0xFB),
198 RGBU(0xFC), RGBU(0xFD), RGBU(0xFE), RGBU(0xFF),
199
200 // Chroma V table.
201 RGBV(0x00), RGBV(0x01), RGBV(0x02), RGBV(0x03),
202 RGBV(0x04), RGBV(0x05), RGBV(0x06), RGBV(0x07),
203 RGBV(0x08), RGBV(0x09), RGBV(0x0A), RGBV(0x0B),
204 RGBV(0x0C), RGBV(0x0D), RGBV(0x0E), RGBV(0x0F),
205 RGBV(0x10), RGBV(0x11), RGBV(0x12), RGBV(0x13),
206 RGBV(0x14), RGBV(0x15), RGBV(0x16), RGBV(0x17),
207 RGBV(0x18), RGBV(0x19), RGBV(0x1A), RGBV(0x1B),
208 RGBV(0x1C), RGBV(0x1D), RGBV(0x1E), RGBV(0x1F),
209 RGBV(0x20), RGBV(0x21), RGBV(0x22), RGBV(0x23),
210 RGBV(0x24), RGBV(0x25), RGBV(0x26), RGBV(0x27),
211 RGBV(0x28), RGBV(0x29), RGBV(0x2A), RGBV(0x2B),
212 RGBV(0x2C), RGBV(0x2D), RGBV(0x2E), RGBV(0x2F),
213 RGBV(0x30), RGBV(0x31), RGBV(0x32), RGBV(0x33),
214 RGBV(0x34), RGBV(0x35), RGBV(0x36), RGBV(0x37),
215 RGBV(0x38), RGBV(0x39), RGBV(0x3A), RGBV(0x3B),
216 RGBV(0x3C), RGBV(0x3D), RGBV(0x3E), RGBV(0x3F),
217 RGBV(0x40), RGBV(0x41), RGBV(0x42), RGBV(0x43),
218 RGBV(0x44), RGBV(0x45), RGBV(0x46), RGBV(0x47),
219 RGBV(0x48), RGBV(0x49), RGBV(0x4A), RGBV(0x4B),
220 RGBV(0x4C), RGBV(0x4D), RGBV(0x4E), RGBV(0x4F),
221 RGBV(0x50), RGBV(0x51), RGBV(0x52), RGBV(0x53),
222 RGBV(0x54), RGBV(0x55), RGBV(0x56), RGBV(0x57),
223 RGBV(0x58), RGBV(0x59), RGBV(0x5A), RGBV(0x5B),
224 RGBV(0x5C), RGBV(0x5D), RGBV(0x5E), RGBV(0x5F),
225 RGBV(0x60), RGBV(0x61), RGBV(0x62), RGBV(0x63),
226 RGBV(0x64), RGBV(0x65), RGBV(0x66), RGBV(0x67),
227 RGBV(0x68), RGBV(0x69), RGBV(0x6A), RGBV(0x6B),
228 RGBV(0x6C), RGBV(0x6D), RGBV(0x6E), RGBV(0x6F),
229 RGBV(0x70), RGBV(0x71), RGBV(0x72), RGBV(0x73),
230 RGBV(0x74), RGBV(0x75), RGBV(0x76), RGBV(0x77),
231 RGBV(0x78), RGBV(0x79), RGBV(0x7A), RGBV(0x7B),
232 RGBV(0x7C), RGBV(0x7D), RGBV(0x7E), RGBV(0x7F),
233 RGBV(0x80), RGBV(0x81), RGBV(0x82), RGBV(0x83),
234 RGBV(0x84), RGBV(0x85), RGBV(0x86), RGBV(0x87),
235 RGBV(0x88), RGBV(0x89), RGBV(0x8A), RGBV(0x8B),
236 RGBV(0x8C), RGBV(0x8D), RGBV(0x8E), RGBV(0x8F),
237 RGBV(0x90), RGBV(0x91), RGBV(0x92), RGBV(0x93),
238 RGBV(0x94), RGBV(0x95), RGBV(0x96), RGBV(0x97),
239 RGBV(0x98), RGBV(0x99), RGBV(0x9A), RGBV(0x9B),
240 RGBV(0x9C), RGBV(0x9D), RGBV(0x9E), RGBV(0x9F),
241 RGBV(0xA0), RGBV(0xA1), RGBV(0xA2), RGBV(0xA3),
242 RGBV(0xA4), RGBV(0xA5), RGBV(0xA6), RGBV(0xA7),
243 RGBV(0xA8), RGBV(0xA9), RGBV(0xAA), RGBV(0xAB),
244 RGBV(0xAC), RGBV(0xAD), RGBV(0xAE), RGBV(0xAF),
245 RGBV(0xB0), RGBV(0xB1), RGBV(0xB2), RGBV(0xB3),
246 RGBV(0xB4), RGBV(0xB5), RGBV(0xB6), RGBV(0xB7),
247 RGBV(0xB8), RGBV(0xB9), RGBV(0xBA), RGBV(0xBB),
248 RGBV(0xBC), RGBV(0xBD), RGBV(0xBE), RGBV(0xBF),
249 RGBV(0xC0), RGBV(0xC1), RGBV(0xC2), RGBV(0xC3),
250 RGBV(0xC4), RGBV(0xC5), RGBV(0xC6), RGBV(0xC7),
251 RGBV(0xC8), RGBV(0xC9), RGBV(0xCA), RGBV(0xCB),
252 RGBV(0xCC), RGBV(0xCD), RGBV(0xCE), RGBV(0xCF),
253 RGBV(0xD0), RGBV(0xD1), RGBV(0xD2), RGBV(0xD3),
254 RGBV(0xD4), RGBV(0xD5), RGBV(0xD6), RGBV(0xD7),
255 RGBV(0xD8), RGBV(0xD9), RGBV(0xDA), RGBV(0xDB),
256 RGBV(0xDC), RGBV(0xDD), RGBV(0xDE), RGBV(0xDF),
257 RGBV(0xE0), RGBV(0xE1), RGBV(0xE2), RGBV(0xE3),
258 RGBV(0xE4), RGBV(0xE5), RGBV(0xE6), RGBV(0xE7),
259 RGBV(0xE8), RGBV(0xE9), RGBV(0xEA), RGBV(0xEB),
260 RGBV(0xEC), RGBV(0xED), RGBV(0xEE), RGBV(0xEF),
261 RGBV(0xF0), RGBV(0xF1), RGBV(0xF2), RGBV(0xF3),
262 RGBV(0xF4), RGBV(0xF5), RGBV(0xF6), RGBV(0xF7),
263 RGBV(0xF8), RGBV(0xF9), RGBV(0xFA), RGBV(0xFB),
264 RGBV(0xFC), RGBV(0xFD), RGBV(0xFE), RGBV(0xFF),
265
266 // Alpha multipliers for each alpha level.
267 ALPHA(0x00), ALPHA(0x01), ALPHA(0x02), ALPHA(0x03),
268 ALPHA(0x04), ALPHA(0x05), ALPHA(0x06), ALPHA(0x07),
269 ALPHA(0x08), ALPHA(0x09), ALPHA(0x0A), ALPHA(0x0B),
270 ALPHA(0x0C), ALPHA(0x0D), ALPHA(0x0E), ALPHA(0x0F),
271 ALPHA(0x10), ALPHA(0x11), ALPHA(0x12), ALPHA(0x13),
272 ALPHA(0x14), ALPHA(0x15), ALPHA(0x16), ALPHA(0x17),
273 ALPHA(0x18), ALPHA(0x19), ALPHA(0x1A), ALPHA(0x1B),
274 ALPHA(0x1C), ALPHA(0x1D), ALPHA(0x1E), ALPHA(0x1F),
275 ALPHA(0x20), ALPHA(0x21), ALPHA(0x22), ALPHA(0x23),
276 ALPHA(0x24), ALPHA(0x25), ALPHA(0x26), ALPHA(0x27),
277 ALPHA(0x28), ALPHA(0x29), ALPHA(0x2A), ALPHA(0x2B),
278 ALPHA(0x2C), ALPHA(0x2D), ALPHA(0x2E), ALPHA(0x2F),
279 ALPHA(0x30), ALPHA(0x31), ALPHA(0x32), ALPHA(0x33),
280 ALPHA(0x34), ALPHA(0x35), ALPHA(0x36), ALPHA(0x37),
281 ALPHA(0x38), ALPHA(0x39), ALPHA(0x3A), ALPHA(0x3B),
282 ALPHA(0x3C), ALPHA(0x3D), ALPHA(0x3E), ALPHA(0x3F),
283 ALPHA(0x40), ALPHA(0x41), ALPHA(0x42), ALPHA(0x43),
284 ALPHA(0x44), ALPHA(0x45), ALPHA(0x46), ALPHA(0x47),
285 ALPHA(0x48), ALPHA(0x49), ALPHA(0x4A), ALPHA(0x4B),
286 ALPHA(0x4C), ALPHA(0x4D), ALPHA(0x4E), ALPHA(0x4F),
287 ALPHA(0x50), ALPHA(0x51), ALPHA(0x52), ALPHA(0x53),
288 ALPHA(0x54), ALPHA(0x55), ALPHA(0x56), ALPHA(0x57),
289 ALPHA(0x58), ALPHA(0x59), ALPHA(0x5A), ALPHA(0x5B),
290 ALPHA(0x5C), ALPHA(0x5D), ALPHA(0x5E), ALPHA(0x5F),
291 ALPHA(0x60), ALPHA(0x61), ALPHA(0x62), ALPHA(0x63),
292 ALPHA(0x64), ALPHA(0x65), ALPHA(0x66), ALPHA(0x67),
293 ALPHA(0x68), ALPHA(0x69), ALPHA(0x6A), ALPHA(0x6B),
294 ALPHA(0x6C), ALPHA(0x6D), ALPHA(0x6E), ALPHA(0x6F),
295 ALPHA(0x70), ALPHA(0x71), ALPHA(0x72), ALPHA(0x73),
296 ALPHA(0x74), ALPHA(0x75), ALPHA(0x76), ALPHA(0x77),
297 ALPHA(0x78), ALPHA(0x79), ALPHA(0x7A), ALPHA(0x7B),
298 ALPHA(0x7C), ALPHA(0x7D), ALPHA(0x7E), ALPHA(0x7F),
299 ALPHA(0x80), ALPHA(0x81), ALPHA(0x82), ALPHA(0x83),
300 ALPHA(0x84), ALPHA(0x85), ALPHA(0x86), ALPHA(0x87),
301 ALPHA(0x88), ALPHA(0x89), ALPHA(0x8A), ALPHA(0x8B),
302 ALPHA(0x8C), ALPHA(0x8D), ALPHA(0x8E), ALPHA(0x8F),
303 ALPHA(0x90), ALPHA(0x91), ALPHA(0x92), ALPHA(0x93),
304 ALPHA(0x94), ALPHA(0x95), ALPHA(0x96), ALPHA(0x97),
305 ALPHA(0x98), ALPHA(0x99), ALPHA(0x9A), ALPHA(0x9B),
306 ALPHA(0x9C), ALPHA(0x9D), ALPHA(0x9E), ALPHA(0x9F),
307 ALPHA(0xA0), ALPHA(0xA1), ALPHA(0xA2), ALPHA(0xA3),
308 ALPHA(0xA4), ALPHA(0xA5), ALPHA(0xA6), ALPHA(0xA7),
309 ALPHA(0xA8), ALPHA(0xA9), ALPHA(0xAA), ALPHA(0xAB),
310 ALPHA(0xAC), ALPHA(0xAD), ALPHA(0xAE), ALPHA(0xAF),
311 ALPHA(0xB0), ALPHA(0xB1), ALPHA(0xB2), ALPHA(0xB3),
312 ALPHA(0xB4), ALPHA(0xB5), ALPHA(0xB6), ALPHA(0xB7),
313 ALPHA(0xB8), ALPHA(0xB9), ALPHA(0xBA), ALPHA(0xBB),
314 ALPHA(0xBC), ALPHA(0xBD), ALPHA(0xBE), ALPHA(0xBF),
315 ALPHA(0xC0), ALPHA(0xC1), ALPHA(0xC2), ALPHA(0xC3),
316 ALPHA(0xC4), ALPHA(0xC5), ALPHA(0xC6), ALPHA(0xC7),
317 ALPHA(0xC8), ALPHA(0xC9), ALPHA(0xCA), ALPHA(0xCB),
318 ALPHA(0xCC), ALPHA(0xCD), ALPHA(0xCE), ALPHA(0xCF),
319 ALPHA(0xD0), ALPHA(0xD1), ALPHA(0xD2), ALPHA(0xD3),
320 ALPHA(0xD4), ALPHA(0xD5), ALPHA(0xD6), ALPHA(0xD7),
321 ALPHA(0xD8), ALPHA(0xD9), ALPHA(0xDA), ALPHA(0xDB),
322 ALPHA(0xDC), ALPHA(0xDD), ALPHA(0xDE), ALPHA(0xDF),
323 ALPHA(0xE0), ALPHA(0xE1), ALPHA(0xE2), ALPHA(0xE3),
324 ALPHA(0xE4), ALPHA(0xE5), ALPHA(0xE6), ALPHA(0xE7),
325 ALPHA(0xE8), ALPHA(0xE9), ALPHA(0xEA), ALPHA(0xEB),
326 ALPHA(0xEC), ALPHA(0xED), ALPHA(0xEE), ALPHA(0xEF),
327 ALPHA(0xF0), ALPHA(0xF1), ALPHA(0xF2), ALPHA(0xF3),
328 ALPHA(0xF4), ALPHA(0xF5), ALPHA(0xF6), ALPHA(0xF7),
329 ALPHA(0xF8), ALPHA(0xF9), ALPHA(0xFA), ALPHA(0xFB),
330 ALPHA(0xFC), ALPHA(0xFD), ALPHA(0xFE), ALPHA(0xFF),
331 };
332 336
333 #undef RGBY 337 #undef RGBY
334 #undef RGBU 338 #undef RGBU
335 #undef RGBV 339 #undef RGBV
336 #undef ALPHA 340 #undef ALPHA
337 341
338 // JPEG color range version: 342 // JPEG color range version:
339 343
340 // Defines the R,G,B,A contributions from Y. 344 // Defines the R,G,B,A contributions from Y.
341 #define RGBY(i) { \ 345 #define RGBY(i) { \
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 static_cast<int16>(1.402 * 64 * (i - 128) + 0.5), \ 387 static_cast<int16>(1.402 * 64 * (i - 128) + 0.5), \
384 0 \ 388 0 \
385 } 389 }
386 #endif 390 #endif
387 391
388 // Used to define a set of multiplier words for each alpha level. 392 // Used to define a set of multiplier words for each alpha level.
389 #define ALPHA(i) { \ 393 #define ALPHA(i) { \
390 i, i, i, i \ 394 i, i, i, i \
391 } 395 }
392 396
393 // The following table defines the RGBA contributions 397 DEFINE_YUV_CONVERSION_TABLE(kCoefficientsRgbY_JPEG);
394 // for each component of YUVA. The Y table is first followed
395 // by the U, and V tables. The alpha multiplier table follows.
396 // These tables are aligned and kept adjacent to optimize for
397 // SIMD and caching.
398
399 SIMD_ALIGNED(const int16 kCoefficientsRgbY_JPEG[256 * 4][4]) = {
400 RGBY(0x00), RGBY(0x01), RGBY(0x02), RGBY(0x03),
401 RGBY(0x04), RGBY(0x05), RGBY(0x06), RGBY(0x07),
402 RGBY(0x08), RGBY(0x09), RGBY(0x0A), RGBY(0x0B),
403 RGBY(0x0C), RGBY(0x0D), RGBY(0x0E), RGBY(0x0F),
404 RGBY(0x10), RGBY(0x11), RGBY(0x12), RGBY(0x13),
405 RGBY(0x14), RGBY(0x15), RGBY(0x16), RGBY(0x17),
406 RGBY(0x18), RGBY(0x19), RGBY(0x1A), RGBY(0x1B),
407 RGBY(0x1C), RGBY(0x1D), RGBY(0x1E), RGBY(0x1F),
408 RGBY(0x20), RGBY(0x21), RGBY(0x22), RGBY(0x23),
409 RGBY(0x24), RGBY(0x25), RGBY(0x26), RGBY(0x27),
410 RGBY(0x28), RGBY(0x29), RGBY(0x2A), RGBY(0x2B),
411 RGBY(0x2C), RGBY(0x2D), RGBY(0x2E), RGBY(0x2F),
412 RGBY(0x30), RGBY(0x31), RGBY(0x32), RGBY(0x33),
413 RGBY(0x34), RGBY(0x35), RGBY(0x36), RGBY(0x37),
414 RGBY(0x38), RGBY(0x39), RGBY(0x3A), RGBY(0x3B),
415 RGBY(0x3C), RGBY(0x3D), RGBY(0x3E), RGBY(0x3F),
416 RGBY(0x40), RGBY(0x41), RGBY(0x42), RGBY(0x43),
417 RGBY(0x44), RGBY(0x45), RGBY(0x46), RGBY(0x47),
418 RGBY(0x48), RGBY(0x49), RGBY(0x4A), RGBY(0x4B),
419 RGBY(0x4C), RGBY(0x4D), RGBY(0x4E), RGBY(0x4F),
420 RGBY(0x50), RGBY(0x51), RGBY(0x52), RGBY(0x53),
421 RGBY(0x54), RGBY(0x55), RGBY(0x56), RGBY(0x57),
422 RGBY(0x58), RGBY(0x59), RGBY(0x5A), RGBY(0x5B),
423 RGBY(0x5C), RGBY(0x5D), RGBY(0x5E), RGBY(0x5F),
424 RGBY(0x60), RGBY(0x61), RGBY(0x62), RGBY(0x63),
425 RGBY(0x64), RGBY(0x65), RGBY(0x66), RGBY(0x67),
426 RGBY(0x68), RGBY(0x69), RGBY(0x6A), RGBY(0x6B),
427 RGBY(0x6C), RGBY(0x6D), RGBY(0x6E), RGBY(0x6F),
428 RGBY(0x70), RGBY(0x71), RGBY(0x72), RGBY(0x73),
429 RGBY(0x74), RGBY(0x75), RGBY(0x76), RGBY(0x77),
430 RGBY(0x78), RGBY(0x79), RGBY(0x7A), RGBY(0x7B),
431 RGBY(0x7C), RGBY(0x7D), RGBY(0x7E), RGBY(0x7F),
432 RGBY(0x80), RGBY(0x81), RGBY(0x82), RGBY(0x83),
433 RGBY(0x84), RGBY(0x85), RGBY(0x86), RGBY(0x87),
434 RGBY(0x88), RGBY(0x89), RGBY(0x8A), RGBY(0x8B),
435 RGBY(0x8C), RGBY(0x8D), RGBY(0x8E), RGBY(0x8F),
436 RGBY(0x90), RGBY(0x91), RGBY(0x92), RGBY(0x93),
437 RGBY(0x94), RGBY(0x95), RGBY(0x96), RGBY(0x97),
438 RGBY(0x98), RGBY(0x99), RGBY(0x9A), RGBY(0x9B),
439 RGBY(0x9C), RGBY(0x9D), RGBY(0x9E), RGBY(0x9F),
440 RGBY(0xA0), RGBY(0xA1), RGBY(0xA2), RGBY(0xA3),
441 RGBY(0xA4), RGBY(0xA5), RGBY(0xA6), RGBY(0xA7),
442 RGBY(0xA8), RGBY(0xA9), RGBY(0xAA), RGBY(0xAB),
443 RGBY(0xAC), RGBY(0xAD), RGBY(0xAE), RGBY(0xAF),
444 RGBY(0xB0), RGBY(0xB1), RGBY(0xB2), RGBY(0xB3),
445 RGBY(0xB4), RGBY(0xB5), RGBY(0xB6), RGBY(0xB7),
446 RGBY(0xB8), RGBY(0xB9), RGBY(0xBA), RGBY(0xBB),
447 RGBY(0xBC), RGBY(0xBD), RGBY(0xBE), RGBY(0xBF),
448 RGBY(0xC0), RGBY(0xC1), RGBY(0xC2), RGBY(0xC3),
449 RGBY(0xC4), RGBY(0xC5), RGBY(0xC6), RGBY(0xC7),
450 RGBY(0xC8), RGBY(0xC9), RGBY(0xCA), RGBY(0xCB),
451 RGBY(0xCC), RGBY(0xCD), RGBY(0xCE), RGBY(0xCF),
452 RGBY(0xD0), RGBY(0xD1), RGBY(0xD2), RGBY(0xD3),
453 RGBY(0xD4), RGBY(0xD5), RGBY(0xD6), RGBY(0xD7),
454 RGBY(0xD8), RGBY(0xD9), RGBY(0xDA), RGBY(0xDB),
455 RGBY(0xDC), RGBY(0xDD), RGBY(0xDE), RGBY(0xDF),
456 RGBY(0xE0), RGBY(0xE1), RGBY(0xE2), RGBY(0xE3),
457 RGBY(0xE4), RGBY(0xE5), RGBY(0xE6), RGBY(0xE7),
458 RGBY(0xE8), RGBY(0xE9), RGBY(0xEA), RGBY(0xEB),
459 RGBY(0xEC), RGBY(0xED), RGBY(0xEE), RGBY(0xEF),
460 RGBY(0xF0), RGBY(0xF1), RGBY(0xF2), RGBY(0xF3),
461 RGBY(0xF4), RGBY(0xF5), RGBY(0xF6), RGBY(0xF7),
462 RGBY(0xF8), RGBY(0xF9), RGBY(0xFA), RGBY(0xFB),
463 RGBY(0xFC), RGBY(0xFD), RGBY(0xFE), RGBY(0xFF),
464
465 // Chroma U table.
466 RGBU(0x00), RGBU(0x01), RGBU(0x02), RGBU(0x03),
467 RGBU(0x04), RGBU(0x05), RGBU(0x06), RGBU(0x07),
468 RGBU(0x08), RGBU(0x09), RGBU(0x0A), RGBU(0x0B),
469 RGBU(0x0C), RGBU(0x0D), RGBU(0x0E), RGBU(0x0F),
470 RGBU(0x10), RGBU(0x11), RGBU(0x12), RGBU(0x13),
471 RGBU(0x14), RGBU(0x15), RGBU(0x16), RGBU(0x17),
472 RGBU(0x18), RGBU(0x19), RGBU(0x1A), RGBU(0x1B),
473 RGBU(0x1C), RGBU(0x1D), RGBU(0x1E), RGBU(0x1F),
474 RGBU(0x20), RGBU(0x21), RGBU(0x22), RGBU(0x23),
475 RGBU(0x24), RGBU(0x25), RGBU(0x26), RGBU(0x27),
476 RGBU(0x28), RGBU(0x29), RGBU(0x2A), RGBU(0x2B),
477 RGBU(0x2C), RGBU(0x2D), RGBU(0x2E), RGBU(0x2F),
478 RGBU(0x30), RGBU(0x31), RGBU(0x32), RGBU(0x33),
479 RGBU(0x34), RGBU(0x35), RGBU(0x36), RGBU(0x37),
480 RGBU(0x38), RGBU(0x39), RGBU(0x3A), RGBU(0x3B),
481 RGBU(0x3C), RGBU(0x3D), RGBU(0x3E), RGBU(0x3F),
482 RGBU(0x40), RGBU(0x41), RGBU(0x42), RGBU(0x43),
483 RGBU(0x44), RGBU(0x45), RGBU(0x46), RGBU(0x47),
484 RGBU(0x48), RGBU(0x49), RGBU(0x4A), RGBU(0x4B),
485 RGBU(0x4C), RGBU(0x4D), RGBU(0x4E), RGBU(0x4F),
486 RGBU(0x50), RGBU(0x51), RGBU(0x52), RGBU(0x53),
487 RGBU(0x54), RGBU(0x55), RGBU(0x56), RGBU(0x57),
488 RGBU(0x58), RGBU(0x59), RGBU(0x5A), RGBU(0x5B),
489 RGBU(0x5C), RGBU(0x5D), RGBU(0x5E), RGBU(0x5F),
490 RGBU(0x60), RGBU(0x61), RGBU(0x62), RGBU(0x63),
491 RGBU(0x64), RGBU(0x65), RGBU(0x66), RGBU(0x67),
492 RGBU(0x68), RGBU(0x69), RGBU(0x6A), RGBU(0x6B),
493 RGBU(0x6C), RGBU(0x6D), RGBU(0x6E), RGBU(0x6F),
494 RGBU(0x70), RGBU(0x71), RGBU(0x72), RGBU(0x73),
495 RGBU(0x74), RGBU(0x75), RGBU(0x76), RGBU(0x77),
496 RGBU(0x78), RGBU(0x79), RGBU(0x7A), RGBU(0x7B),
497 RGBU(0x7C), RGBU(0x7D), RGBU(0x7E), RGBU(0x7F),
498 RGBU(0x80), RGBU(0x81), RGBU(0x82), RGBU(0x83),
499 RGBU(0x84), RGBU(0x85), RGBU(0x86), RGBU(0x87),
500 RGBU(0x88), RGBU(0x89), RGBU(0x8A), RGBU(0x8B),
501 RGBU(0x8C), RGBU(0x8D), RGBU(0x8E), RGBU(0x8F),
502 RGBU(0x90), RGBU(0x91), RGBU(0x92), RGBU(0x93),
503 RGBU(0x94), RGBU(0x95), RGBU(0x96), RGBU(0x97),
504 RGBU(0x98), RGBU(0x99), RGBU(0x9A), RGBU(0x9B),
505 RGBU(0x9C), RGBU(0x9D), RGBU(0x9E), RGBU(0x9F),
506 RGBU(0xA0), RGBU(0xA1), RGBU(0xA2), RGBU(0xA3),
507 RGBU(0xA4), RGBU(0xA5), RGBU(0xA6), RGBU(0xA7),
508 RGBU(0xA8), RGBU(0xA9), RGBU(0xAA), RGBU(0xAB),
509 RGBU(0xAC), RGBU(0xAD), RGBU(0xAE), RGBU(0xAF),
510 RGBU(0xB0), RGBU(0xB1), RGBU(0xB2), RGBU(0xB3),
511 RGBU(0xB4), RGBU(0xB5), RGBU(0xB6), RGBU(0xB7),
512 RGBU(0xB8), RGBU(0xB9), RGBU(0xBA), RGBU(0xBB),
513 RGBU(0xBC), RGBU(0xBD), RGBU(0xBE), RGBU(0xBF),
514 RGBU(0xC0), RGBU(0xC1), RGBU(0xC2), RGBU(0xC3),
515 RGBU(0xC4), RGBU(0xC5), RGBU(0xC6), RGBU(0xC7),
516 RGBU(0xC8), RGBU(0xC9), RGBU(0xCA), RGBU(0xCB),
517 RGBU(0xCC), RGBU(0xCD), RGBU(0xCE), RGBU(0xCF),
518 RGBU(0xD0), RGBU(0xD1), RGBU(0xD2), RGBU(0xD3),
519 RGBU(0xD4), RGBU(0xD5), RGBU(0xD6), RGBU(0xD7),
520 RGBU(0xD8), RGBU(0xD9), RGBU(0xDA), RGBU(0xDB),
521 RGBU(0xDC), RGBU(0xDD), RGBU(0xDE), RGBU(0xDF),
522 RGBU(0xE0), RGBU(0xE1), RGBU(0xE2), RGBU(0xE3),
523 RGBU(0xE4), RGBU(0xE5), RGBU(0xE6), RGBU(0xE7),
524 RGBU(0xE8), RGBU(0xE9), RGBU(0xEA), RGBU(0xEB),
525 RGBU(0xEC), RGBU(0xED), RGBU(0xEE), RGBU(0xEF),
526 RGBU(0xF0), RGBU(0xF1), RGBU(0xF2), RGBU(0xF3),
527 RGBU(0xF4), RGBU(0xF5), RGBU(0xF6), RGBU(0xF7),
528 RGBU(0xF8), RGBU(0xF9), RGBU(0xFA), RGBU(0xFB),
529 RGBU(0xFC), RGBU(0xFD), RGBU(0xFE), RGBU(0xFF),
530
531 // Chroma V table.
532 RGBV(0x00), RGBV(0x01), RGBV(0x02), RGBV(0x03),
533 RGBV(0x04), RGBV(0x05), RGBV(0x06), RGBV(0x07),
534 RGBV(0x08), RGBV(0x09), RGBV(0x0A), RGBV(0x0B),
535 RGBV(0x0C), RGBV(0x0D), RGBV(0x0E), RGBV(0x0F),
536 RGBV(0x10), RGBV(0x11), RGBV(0x12), RGBV(0x13),
537 RGBV(0x14), RGBV(0x15), RGBV(0x16), RGBV(0x17),
538 RGBV(0x18), RGBV(0x19), RGBV(0x1A), RGBV(0x1B),
539 RGBV(0x1C), RGBV(0x1D), RGBV(0x1E), RGBV(0x1F),
540 RGBV(0x20), RGBV(0x21), RGBV(0x22), RGBV(0x23),
541 RGBV(0x24), RGBV(0x25), RGBV(0x26), RGBV(0x27),
542 RGBV(0x28), RGBV(0x29), RGBV(0x2A), RGBV(0x2B),
543 RGBV(0x2C), RGBV(0x2D), RGBV(0x2E), RGBV(0x2F),
544 RGBV(0x30), RGBV(0x31), RGBV(0x32), RGBV(0x33),
545 RGBV(0x34), RGBV(0x35), RGBV(0x36), RGBV(0x37),
546 RGBV(0x38), RGBV(0x39), RGBV(0x3A), RGBV(0x3B),
547 RGBV(0x3C), RGBV(0x3D), RGBV(0x3E), RGBV(0x3F),
548 RGBV(0x40), RGBV(0x41), RGBV(0x42), RGBV(0x43),
549 RGBV(0x44), RGBV(0x45), RGBV(0x46), RGBV(0x47),
550 RGBV(0x48), RGBV(0x49), RGBV(0x4A), RGBV(0x4B),
551 RGBV(0x4C), RGBV(0x4D), RGBV(0x4E), RGBV(0x4F),
552 RGBV(0x50), RGBV(0x51), RGBV(0x52), RGBV(0x53),
553 RGBV(0x54), RGBV(0x55), RGBV(0x56), RGBV(0x57),
554 RGBV(0x58), RGBV(0x59), RGBV(0x5A), RGBV(0x5B),
555 RGBV(0x5C), RGBV(0x5D), RGBV(0x5E), RGBV(0x5F),
556 RGBV(0x60), RGBV(0x61), RGBV(0x62), RGBV(0x63),
557 RGBV(0x64), RGBV(0x65), RGBV(0x66), RGBV(0x67),
558 RGBV(0x68), RGBV(0x69), RGBV(0x6A), RGBV(0x6B),
559 RGBV(0x6C), RGBV(0x6D), RGBV(0x6E), RGBV(0x6F),
560 RGBV(0x70), RGBV(0x71), RGBV(0x72), RGBV(0x73),
561 RGBV(0x74), RGBV(0x75), RGBV(0x76), RGBV(0x77),
562 RGBV(0x78), RGBV(0x79), RGBV(0x7A), RGBV(0x7B),
563 RGBV(0x7C), RGBV(0x7D), RGBV(0x7E), RGBV(0x7F),
564 RGBV(0x80), RGBV(0x81), RGBV(0x82), RGBV(0x83),
565 RGBV(0x84), RGBV(0x85), RGBV(0x86), RGBV(0x87),
566 RGBV(0x88), RGBV(0x89), RGBV(0x8A), RGBV(0x8B),
567 RGBV(0x8C), RGBV(0x8D), RGBV(0x8E), RGBV(0x8F),
568 RGBV(0x90), RGBV(0x91), RGBV(0x92), RGBV(0x93),
569 RGBV(0x94), RGBV(0x95), RGBV(0x96), RGBV(0x97),
570 RGBV(0x98), RGBV(0x99), RGBV(0x9A), RGBV(0x9B),
571 RGBV(0x9C), RGBV(0x9D), RGBV(0x9E), RGBV(0x9F),
572 RGBV(0xA0), RGBV(0xA1), RGBV(0xA2), RGBV(0xA3),
573 RGBV(0xA4), RGBV(0xA5), RGBV(0xA6), RGBV(0xA7),
574 RGBV(0xA8), RGBV(0xA9), RGBV(0xAA), RGBV(0xAB),
575 RGBV(0xAC), RGBV(0xAD), RGBV(0xAE), RGBV(0xAF),
576 RGBV(0xB0), RGBV(0xB1), RGBV(0xB2), RGBV(0xB3),
577 RGBV(0xB4), RGBV(0xB5), RGBV(0xB6), RGBV(0xB7),
578 RGBV(0xB8), RGBV(0xB9), RGBV(0xBA), RGBV(0xBB),
579 RGBV(0xBC), RGBV(0xBD), RGBV(0xBE), RGBV(0xBF),
580 RGBV(0xC0), RGBV(0xC1), RGBV(0xC2), RGBV(0xC3),
581 RGBV(0xC4), RGBV(0xC5), RGBV(0xC6), RGBV(0xC7),
582 RGBV(0xC8), RGBV(0xC9), RGBV(0xCA), RGBV(0xCB),
583 RGBV(0xCC), RGBV(0xCD), RGBV(0xCE), RGBV(0xCF),
584 RGBV(0xD0), RGBV(0xD1), RGBV(0xD2), RGBV(0xD3),
585 RGBV(0xD4), RGBV(0xD5), RGBV(0xD6), RGBV(0xD7),
586 RGBV(0xD8), RGBV(0xD9), RGBV(0xDA), RGBV(0xDB),
587 RGBV(0xDC), RGBV(0xDD), RGBV(0xDE), RGBV(0xDF),
588 RGBV(0xE0), RGBV(0xE1), RGBV(0xE2), RGBV(0xE3),
589 RGBV(0xE4), RGBV(0xE5), RGBV(0xE6), RGBV(0xE7),
590 RGBV(0xE8), RGBV(0xE9), RGBV(0xEA), RGBV(0xEB),
591 RGBV(0xEC), RGBV(0xED), RGBV(0xEE), RGBV(0xEF),
592 RGBV(0xF0), RGBV(0xF1), RGBV(0xF2), RGBV(0xF3),
593 RGBV(0xF4), RGBV(0xF5), RGBV(0xF6), RGBV(0xF7),
594 RGBV(0xF8), RGBV(0xF9), RGBV(0xFA), RGBV(0xFB),
595 RGBV(0xFC), RGBV(0xFD), RGBV(0xFE), RGBV(0xFF),
596
597 // Alpha multipliers for each alpha level.
598 ALPHA(0x00), ALPHA(0x01), ALPHA(0x02), ALPHA(0x03),
599 ALPHA(0x04), ALPHA(0x05), ALPHA(0x06), ALPHA(0x07),
600 ALPHA(0x08), ALPHA(0x09), ALPHA(0x0A), ALPHA(0x0B),
601 ALPHA(0x0C), ALPHA(0x0D), ALPHA(0x0E), ALPHA(0x0F),
602 ALPHA(0x10), ALPHA(0x11), ALPHA(0x12), ALPHA(0x13),
603 ALPHA(0x14), ALPHA(0x15), ALPHA(0x16), ALPHA(0x17),
604 ALPHA(0x18), ALPHA(0x19), ALPHA(0x1A), ALPHA(0x1B),
605 ALPHA(0x1C), ALPHA(0x1D), ALPHA(0x1E), ALPHA(0x1F),
606 ALPHA(0x20), ALPHA(0x21), ALPHA(0x22), ALPHA(0x23),
607 ALPHA(0x24), ALPHA(0x25), ALPHA(0x26), ALPHA(0x27),
608 ALPHA(0x28), ALPHA(0x29), ALPHA(0x2A), ALPHA(0x2B),
609 ALPHA(0x2C), ALPHA(0x2D), ALPHA(0x2E), ALPHA(0x2F),
610 ALPHA(0x30), ALPHA(0x31), ALPHA(0x32), ALPHA(0x33),
611 ALPHA(0x34), ALPHA(0x35), ALPHA(0x36), ALPHA(0x37),
612 ALPHA(0x38), ALPHA(0x39), ALPHA(0x3A), ALPHA(0x3B),
613 ALPHA(0x3C), ALPHA(0x3D), ALPHA(0x3E), ALPHA(0x3F),
614 ALPHA(0x40), ALPHA(0x41), ALPHA(0x42), ALPHA(0x43),
615 ALPHA(0x44), ALPHA(0x45), ALPHA(0x46), ALPHA(0x47),
616 ALPHA(0x48), ALPHA(0x49), ALPHA(0x4A), ALPHA(0x4B),
617 ALPHA(0x4C), ALPHA(0x4D), ALPHA(0x4E), ALPHA(0x4F),
618 ALPHA(0x50), ALPHA(0x51), ALPHA(0x52), ALPHA(0x53),
619 ALPHA(0x54), ALPHA(0x55), ALPHA(0x56), ALPHA(0x57),
620 ALPHA(0x58), ALPHA(0x59), ALPHA(0x5A), ALPHA(0x5B),
621 ALPHA(0x5C), ALPHA(0x5D), ALPHA(0x5E), ALPHA(0x5F),
622 ALPHA(0x60), ALPHA(0x61), ALPHA(0x62), ALPHA(0x63),
623 ALPHA(0x64), ALPHA(0x65), ALPHA(0x66), ALPHA(0x67),
624 ALPHA(0x68), ALPHA(0x69), ALPHA(0x6A), ALPHA(0x6B),
625 ALPHA(0x6C), ALPHA(0x6D), ALPHA(0x6E), ALPHA(0x6F),
626 ALPHA(0x70), ALPHA(0x71), ALPHA(0x72), ALPHA(0x73),
627 ALPHA(0x74), ALPHA(0x75), ALPHA(0x76), ALPHA(0x77),
628 ALPHA(0x78), ALPHA(0x79), ALPHA(0x7A), ALPHA(0x7B),
629 ALPHA(0x7C), ALPHA(0x7D), ALPHA(0x7E), ALPHA(0x7F),
630 ALPHA(0x80), ALPHA(0x81), ALPHA(0x82), ALPHA(0x83),
631 ALPHA(0x84), ALPHA(0x85), ALPHA(0x86), ALPHA(0x87),
632 ALPHA(0x88), ALPHA(0x89), ALPHA(0x8A), ALPHA(0x8B),
633 ALPHA(0x8C), ALPHA(0x8D), ALPHA(0x8E), ALPHA(0x8F),
634 ALPHA(0x90), ALPHA(0x91), ALPHA(0x92), ALPHA(0x93),
635 ALPHA(0x94), ALPHA(0x95), ALPHA(0x96), ALPHA(0x97),
636 ALPHA(0x98), ALPHA(0x99), ALPHA(0x9A), ALPHA(0x9B),
637 ALPHA(0x9C), ALPHA(0x9D), ALPHA(0x9E), ALPHA(0x9F),
638 ALPHA(0xA0), ALPHA(0xA1), ALPHA(0xA2), ALPHA(0xA3),
639 ALPHA(0xA4), ALPHA(0xA5), ALPHA(0xA6), ALPHA(0xA7),
640 ALPHA(0xA8), ALPHA(0xA9), ALPHA(0xAA), ALPHA(0xAB),
641 ALPHA(0xAC), ALPHA(0xAD), ALPHA(0xAE), ALPHA(0xAF),
642 ALPHA(0xB0), ALPHA(0xB1), ALPHA(0xB2), ALPHA(0xB3),
643 ALPHA(0xB4), ALPHA(0xB5), ALPHA(0xB6), ALPHA(0xB7),
644 ALPHA(0xB8), ALPHA(0xB9), ALPHA(0xBA), ALPHA(0xBB),
645 ALPHA(0xBC), ALPHA(0xBD), ALPHA(0xBE), ALPHA(0xBF),
646 ALPHA(0xC0), ALPHA(0xC1), ALPHA(0xC2), ALPHA(0xC3),
647 ALPHA(0xC4), ALPHA(0xC5), ALPHA(0xC6), ALPHA(0xC7),
648 ALPHA(0xC8), ALPHA(0xC9), ALPHA(0xCA), ALPHA(0xCB),
649 ALPHA(0xCC), ALPHA(0xCD), ALPHA(0xCE), ALPHA(0xCF),
650 ALPHA(0xD0), ALPHA(0xD1), ALPHA(0xD2), ALPHA(0xD3),
651 ALPHA(0xD4), ALPHA(0xD5), ALPHA(0xD6), ALPHA(0xD7),
652 ALPHA(0xD8), ALPHA(0xD9), ALPHA(0xDA), ALPHA(0xDB),
653 ALPHA(0xDC), ALPHA(0xDD), ALPHA(0xDE), ALPHA(0xDF),
654 ALPHA(0xE0), ALPHA(0xE1), ALPHA(0xE2), ALPHA(0xE3),
655 ALPHA(0xE4), ALPHA(0xE5), ALPHA(0xE6), ALPHA(0xE7),
656 ALPHA(0xE8), ALPHA(0xE9), ALPHA(0xEA), ALPHA(0xEB),
657 ALPHA(0xEC), ALPHA(0xED), ALPHA(0xEE), ALPHA(0xEF),
658 ALPHA(0xF0), ALPHA(0xF1), ALPHA(0xF2), ALPHA(0xF3),
659 ALPHA(0xF4), ALPHA(0xF5), ALPHA(0xF6), ALPHA(0xF7),
660 ALPHA(0xF8), ALPHA(0xF9), ALPHA(0xFA), ALPHA(0xFB),
661 ALPHA(0xFC), ALPHA(0xFD), ALPHA(0xFE), ALPHA(0xFF),
662 };
663 398
664 #undef RGBY 399 #undef RGBY
665 #undef RGBU 400 #undef RGBU
666 #undef RGBV 401 #undef RGBV
667 #undef ALPHA 402 #undef ALPHA
668 403
404 // Rec709 color space version:
405 // Values taken from http://www.equasys.de/colorconversion.html
406
407 // Defines the R,G,B,A contributions from Y.
408 #define RGBY(i) { \
409 static_cast<int16>(1.164 * 64 * (i - 16) + 0.5), \
410 static_cast<int16>(1.164 * 64 * (i - 16) + 0.5), \
411 static_cast<int16>(1.164 * 64 * (i - 16) + 0.5), \
412 0 \
413 }
414
415 // Defines the R,G,B,A contributions from U.
416 // The contribution to A is the same for any value of U
417 // causing the final A value to be 255 in every conversion.
418 // Android's pixel layout is RGBA, while other platforms
419 // are BGRA.
420 #if defined(OS_ANDROID)
421 #define RGBU(i) { \
422 0, \
423 static_cast<int16>(-0.213 * 64 * (i - 128) + 0.5), \
424 static_cast<int16>(2.112 * 64 * (i - 128) + 0.5), \
425 static_cast<int16>(256 * 64 - 1) \
426 }
427 #else
428 #define RGBU(i) { \
429 static_cast<int16>(2.112 * 64 * (i - 128) + 0.5), \
430 static_cast<int16>(-0.213 * 64 * (i - 128) + 0.5), \
431 0, \
432 static_cast<int16>(256 * 64 - 1) \
433 }
434 #endif
435
436 // Defines the R,G,B,A contributions from V.
437 // Android's pixel layout is RGBA, while other platforms
438 // are BGRA.
439 #if defined(OS_ANDROID)
440 #define RGBV(i) { \
441 static_cast<int16>(1.793 * 64 * (i - 128) + 0.5), \
442 static_cast<int16>(-0.533 * 64 * (i - 128) + 0.5), \
443 0, \
444 0 \
445 }
446 #else
447 #define RGBV(i) { \
448 0, \
449 static_cast<int16>(-0.533 * 64 * (i - 128) + 0.5), \
450 static_cast<int16>(1.793 * 64 * (i - 128) + 0.5), \
451 0 \
452 }
453 #endif
454
DaleCurtis 2014/12/16 22:20:44 Extra space.
455
456 // Used to define a set of multiplier words for each alpha level.
457 #define ALPHA(i) { \
458 i, i, i, i \
459 }
460
461 DEFINE_YUV_CONVERSION_TABLE(kCoefficientsRgbY_Rec709);
462
463 #undef RGBY
464 #undef RGBU
465 #undef RGBV
466 #undef ALPHA
467 #undef DEFINE_YUV_CONVERSION_TABLE
468
669 } // extern "C" 469 } // 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