Merge mozilla-central and tracemonkey. (a=blockers)
[mozilla-central.git] / gfx / ycbcr / yuv_row_table.cpp
blobad713417691eda534f7a170d8d7f45082b7069dd
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
3 // found in the LICENSE file.
5 #include "yuv_row.h"
7 extern "C" {
9 #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), \
12 static_cast<int16>(1.164 * 64 * (i - 16) + 0.5), \
13 0 \
16 #define RGBU(i) { \
17 static_cast<int16>(2.018 * 64 * (i - 128) + 0.5), \
18 static_cast<int16>(-0.391 * 64 * (i - 128) + 0.5), \
19 0, \
20 static_cast<int16>(256 * 64 - 1) \
23 #define RGBV(i) { \
24 0, \
25 static_cast<int16>(-0.813 * 64 * (i - 128) + 0.5), \
26 static_cast<int16>(1.596 * 64 * (i - 128) + 0.5), \
27 0 \
30 SIMD_ALIGNED(int16 kCoefficientsRgbY[256 * 3][4]) = {
31 RGBY(0x00), RGBY(0x01), RGBY(0x02), RGBY(0x03),
32 RGBY(0x04), RGBY(0x05), RGBY(0x06), RGBY(0x07),
33 RGBY(0x08), RGBY(0x09), RGBY(0x0A), RGBY(0x0B),
34 RGBY(0x0C), RGBY(0x0D), RGBY(0x0E), RGBY(0x0F),
35 RGBY(0x10), RGBY(0x11), RGBY(0x12), RGBY(0x13),
36 RGBY(0x14), RGBY(0x15), RGBY(0x16), RGBY(0x17),
37 RGBY(0x18), RGBY(0x19), RGBY(0x1A), RGBY(0x1B),
38 RGBY(0x1C), RGBY(0x1D), RGBY(0x1E), RGBY(0x1F),
39 RGBY(0x20), RGBY(0x21), RGBY(0x22), RGBY(0x23),
40 RGBY(0x24), RGBY(0x25), RGBY(0x26), RGBY(0x27),
41 RGBY(0x28), RGBY(0x29), RGBY(0x2A), RGBY(0x2B),
42 RGBY(0x2C), RGBY(0x2D), RGBY(0x2E), RGBY(0x2F),
43 RGBY(0x30), RGBY(0x31), RGBY(0x32), RGBY(0x33),
44 RGBY(0x34), RGBY(0x35), RGBY(0x36), RGBY(0x37),
45 RGBY(0x38), RGBY(0x39), RGBY(0x3A), RGBY(0x3B),
46 RGBY(0x3C), RGBY(0x3D), RGBY(0x3E), RGBY(0x3F),
47 RGBY(0x40), RGBY(0x41), RGBY(0x42), RGBY(0x43),
48 RGBY(0x44), RGBY(0x45), RGBY(0x46), RGBY(0x47),
49 RGBY(0x48), RGBY(0x49), RGBY(0x4A), RGBY(0x4B),
50 RGBY(0x4C), RGBY(0x4D), RGBY(0x4E), RGBY(0x4F),
51 RGBY(0x50), RGBY(0x51), RGBY(0x52), RGBY(0x53),
52 RGBY(0x54), RGBY(0x55), RGBY(0x56), RGBY(0x57),
53 RGBY(0x58), RGBY(0x59), RGBY(0x5A), RGBY(0x5B),
54 RGBY(0x5C), RGBY(0x5D), RGBY(0x5E), RGBY(0x5F),
55 RGBY(0x60), RGBY(0x61), RGBY(0x62), RGBY(0x63),
56 RGBY(0x64), RGBY(0x65), RGBY(0x66), RGBY(0x67),
57 RGBY(0x68), RGBY(0x69), RGBY(0x6A), RGBY(0x6B),
58 RGBY(0x6C), RGBY(0x6D), RGBY(0x6E), RGBY(0x6F),
59 RGBY(0x70), RGBY(0x71), RGBY(0x72), RGBY(0x73),
60 RGBY(0x74), RGBY(0x75), RGBY(0x76), RGBY(0x77),
61 RGBY(0x78), RGBY(0x79), RGBY(0x7A), RGBY(0x7B),
62 RGBY(0x7C), RGBY(0x7D), RGBY(0x7E), RGBY(0x7F),
63 RGBY(0x80), RGBY(0x81), RGBY(0x82), RGBY(0x83),
64 RGBY(0x84), RGBY(0x85), RGBY(0x86), RGBY(0x87),
65 RGBY(0x88), RGBY(0x89), RGBY(0x8A), RGBY(0x8B),
66 RGBY(0x8C), RGBY(0x8D), RGBY(0x8E), RGBY(0x8F),
67 RGBY(0x90), RGBY(0x91), RGBY(0x92), RGBY(0x93),
68 RGBY(0x94), RGBY(0x95), RGBY(0x96), RGBY(0x97),
69 RGBY(0x98), RGBY(0x99), RGBY(0x9A), RGBY(0x9B),
70 RGBY(0x9C), RGBY(0x9D), RGBY(0x9E), RGBY(0x9F),
71 RGBY(0xA0), RGBY(0xA1), RGBY(0xA2), RGBY(0xA3),
72 RGBY(0xA4), RGBY(0xA5), RGBY(0xA6), RGBY(0xA7),
73 RGBY(0xA8), RGBY(0xA9), RGBY(0xAA), RGBY(0xAB),
74 RGBY(0xAC), RGBY(0xAD), RGBY(0xAE), RGBY(0xAF),
75 RGBY(0xB0), RGBY(0xB1), RGBY(0xB2), RGBY(0xB3),
76 RGBY(0xB4), RGBY(0xB5), RGBY(0xB6), RGBY(0xB7),
77 RGBY(0xB8), RGBY(0xB9), RGBY(0xBA), RGBY(0xBB),
78 RGBY(0xBC), RGBY(0xBD), RGBY(0xBE), RGBY(0xBF),
79 RGBY(0xC0), RGBY(0xC1), RGBY(0xC2), RGBY(0xC3),
80 RGBY(0xC4), RGBY(0xC5), RGBY(0xC6), RGBY(0xC7),
81 RGBY(0xC8), RGBY(0xC9), RGBY(0xCA), RGBY(0xCB),
82 RGBY(0xCC), RGBY(0xCD), RGBY(0xCE), RGBY(0xCF),
83 RGBY(0xD0), RGBY(0xD1), RGBY(0xD2), RGBY(0xD3),
84 RGBY(0xD4), RGBY(0xD5), RGBY(0xD6), RGBY(0xD7),
85 RGBY(0xD8), RGBY(0xD9), RGBY(0xDA), RGBY(0xDB),
86 RGBY(0xDC), RGBY(0xDD), RGBY(0xDE), RGBY(0xDF),
87 RGBY(0xE0), RGBY(0xE1), RGBY(0xE2), RGBY(0xE3),
88 RGBY(0xE4), RGBY(0xE5), RGBY(0xE6), RGBY(0xE7),
89 RGBY(0xE8), RGBY(0xE9), RGBY(0xEA), RGBY(0xEB),
90 RGBY(0xEC), RGBY(0xED), RGBY(0xEE), RGBY(0xEF),
91 RGBY(0xF0), RGBY(0xF1), RGBY(0xF2), RGBY(0xF3),
92 RGBY(0xF4), RGBY(0xF5), RGBY(0xF6), RGBY(0xF7),
93 RGBY(0xF8), RGBY(0xF9), RGBY(0xFA), RGBY(0xFB),
94 RGBY(0xFC), RGBY(0xFD), RGBY(0xFE), RGBY(0xFF),
96 // Chroma U table.
97 RGBU(0x00), RGBU(0x01), RGBU(0x02), RGBU(0x03),
98 RGBU(0x04), RGBU(0x05), RGBU(0x06), RGBU(0x07),
99 RGBU(0x08), RGBU(0x09), RGBU(0x0A), RGBU(0x0B),
100 RGBU(0x0C), RGBU(0x0D), RGBU(0x0E), RGBU(0x0F),
101 RGBU(0x10), RGBU(0x11), RGBU(0x12), RGBU(0x13),
102 RGBU(0x14), RGBU(0x15), RGBU(0x16), RGBU(0x17),
103 RGBU(0x18), RGBU(0x19), RGBU(0x1A), RGBU(0x1B),
104 RGBU(0x1C), RGBU(0x1D), RGBU(0x1E), RGBU(0x1F),
105 RGBU(0x20), RGBU(0x21), RGBU(0x22), RGBU(0x23),
106 RGBU(0x24), RGBU(0x25), RGBU(0x26), RGBU(0x27),
107 RGBU(0x28), RGBU(0x29), RGBU(0x2A), RGBU(0x2B),
108 RGBU(0x2C), RGBU(0x2D), RGBU(0x2E), RGBU(0x2F),
109 RGBU(0x30), RGBU(0x31), RGBU(0x32), RGBU(0x33),
110 RGBU(0x34), RGBU(0x35), RGBU(0x36), RGBU(0x37),
111 RGBU(0x38), RGBU(0x39), RGBU(0x3A), RGBU(0x3B),
112 RGBU(0x3C), RGBU(0x3D), RGBU(0x3E), RGBU(0x3F),
113 RGBU(0x40), RGBU(0x41), RGBU(0x42), RGBU(0x43),
114 RGBU(0x44), RGBU(0x45), RGBU(0x46), RGBU(0x47),
115 RGBU(0x48), RGBU(0x49), RGBU(0x4A), RGBU(0x4B),
116 RGBU(0x4C), RGBU(0x4D), RGBU(0x4E), RGBU(0x4F),
117 RGBU(0x50), RGBU(0x51), RGBU(0x52), RGBU(0x53),
118 RGBU(0x54), RGBU(0x55), RGBU(0x56), RGBU(0x57),
119 RGBU(0x58), RGBU(0x59), RGBU(0x5A), RGBU(0x5B),
120 RGBU(0x5C), RGBU(0x5D), RGBU(0x5E), RGBU(0x5F),
121 RGBU(0x60), RGBU(0x61), RGBU(0x62), RGBU(0x63),
122 RGBU(0x64), RGBU(0x65), RGBU(0x66), RGBU(0x67),
123 RGBU(0x68), RGBU(0x69), RGBU(0x6A), RGBU(0x6B),
124 RGBU(0x6C), RGBU(0x6D), RGBU(0x6E), RGBU(0x6F),
125 RGBU(0x70), RGBU(0x71), RGBU(0x72), RGBU(0x73),
126 RGBU(0x74), RGBU(0x75), RGBU(0x76), RGBU(0x77),
127 RGBU(0x78), RGBU(0x79), RGBU(0x7A), RGBU(0x7B),
128 RGBU(0x7C), RGBU(0x7D), RGBU(0x7E), RGBU(0x7F),
129 RGBU(0x80), RGBU(0x81), RGBU(0x82), RGBU(0x83),
130 RGBU(0x84), RGBU(0x85), RGBU(0x86), RGBU(0x87),
131 RGBU(0x88), RGBU(0x89), RGBU(0x8A), RGBU(0x8B),
132 RGBU(0x8C), RGBU(0x8D), RGBU(0x8E), RGBU(0x8F),
133 RGBU(0x90), RGBU(0x91), RGBU(0x92), RGBU(0x93),
134 RGBU(0x94), RGBU(0x95), RGBU(0x96), RGBU(0x97),
135 RGBU(0x98), RGBU(0x99), RGBU(0x9A), RGBU(0x9B),
136 RGBU(0x9C), RGBU(0x9D), RGBU(0x9E), RGBU(0x9F),
137 RGBU(0xA0), RGBU(0xA1), RGBU(0xA2), RGBU(0xA3),
138 RGBU(0xA4), RGBU(0xA5), RGBU(0xA6), RGBU(0xA7),
139 RGBU(0xA8), RGBU(0xA9), RGBU(0xAA), RGBU(0xAB),
140 RGBU(0xAC), RGBU(0xAD), RGBU(0xAE), RGBU(0xAF),
141 RGBU(0xB0), RGBU(0xB1), RGBU(0xB2), RGBU(0xB3),
142 RGBU(0xB4), RGBU(0xB5), RGBU(0xB6), RGBU(0xB7),
143 RGBU(0xB8), RGBU(0xB9), RGBU(0xBA), RGBU(0xBB),
144 RGBU(0xBC), RGBU(0xBD), RGBU(0xBE), RGBU(0xBF),
145 RGBU(0xC0), RGBU(0xC1), RGBU(0xC2), RGBU(0xC3),
146 RGBU(0xC4), RGBU(0xC5), RGBU(0xC6), RGBU(0xC7),
147 RGBU(0xC8), RGBU(0xC9), RGBU(0xCA), RGBU(0xCB),
148 RGBU(0xCC), RGBU(0xCD), RGBU(0xCE), RGBU(0xCF),
149 RGBU(0xD0), RGBU(0xD1), RGBU(0xD2), RGBU(0xD3),
150 RGBU(0xD4), RGBU(0xD5), RGBU(0xD6), RGBU(0xD7),
151 RGBU(0xD8), RGBU(0xD9), RGBU(0xDA), RGBU(0xDB),
152 RGBU(0xDC), RGBU(0xDD), RGBU(0xDE), RGBU(0xDF),
153 RGBU(0xE0), RGBU(0xE1), RGBU(0xE2), RGBU(0xE3),
154 RGBU(0xE4), RGBU(0xE5), RGBU(0xE6), RGBU(0xE7),
155 RGBU(0xE8), RGBU(0xE9), RGBU(0xEA), RGBU(0xEB),
156 RGBU(0xEC), RGBU(0xED), RGBU(0xEE), RGBU(0xEF),
157 RGBU(0xF0), RGBU(0xF1), RGBU(0xF2), RGBU(0xF3),
158 RGBU(0xF4), RGBU(0xF5), RGBU(0xF6), RGBU(0xF7),
159 RGBU(0xF8), RGBU(0xF9), RGBU(0xFA), RGBU(0xFB),
160 RGBU(0xFC), RGBU(0xFD), RGBU(0xFE), RGBU(0xFF),
162 // Chroma V table.
163 RGBV(0x00), RGBV(0x01), RGBV(0x02), RGBV(0x03),
164 RGBV(0x04), RGBV(0x05), RGBV(0x06), RGBV(0x07),
165 RGBV(0x08), RGBV(0x09), RGBV(0x0A), RGBV(0x0B),
166 RGBV(0x0C), RGBV(0x0D), RGBV(0x0E), RGBV(0x0F),
167 RGBV(0x10), RGBV(0x11), RGBV(0x12), RGBV(0x13),
168 RGBV(0x14), RGBV(0x15), RGBV(0x16), RGBV(0x17),
169 RGBV(0x18), RGBV(0x19), RGBV(0x1A), RGBV(0x1B),
170 RGBV(0x1C), RGBV(0x1D), RGBV(0x1E), RGBV(0x1F),
171 RGBV(0x20), RGBV(0x21), RGBV(0x22), RGBV(0x23),
172 RGBV(0x24), RGBV(0x25), RGBV(0x26), RGBV(0x27),
173 RGBV(0x28), RGBV(0x29), RGBV(0x2A), RGBV(0x2B),
174 RGBV(0x2C), RGBV(0x2D), RGBV(0x2E), RGBV(0x2F),
175 RGBV(0x30), RGBV(0x31), RGBV(0x32), RGBV(0x33),
176 RGBV(0x34), RGBV(0x35), RGBV(0x36), RGBV(0x37),
177 RGBV(0x38), RGBV(0x39), RGBV(0x3A), RGBV(0x3B),
178 RGBV(0x3C), RGBV(0x3D), RGBV(0x3E), RGBV(0x3F),
179 RGBV(0x40), RGBV(0x41), RGBV(0x42), RGBV(0x43),
180 RGBV(0x44), RGBV(0x45), RGBV(0x46), RGBV(0x47),
181 RGBV(0x48), RGBV(0x49), RGBV(0x4A), RGBV(0x4B),
182 RGBV(0x4C), RGBV(0x4D), RGBV(0x4E), RGBV(0x4F),
183 RGBV(0x50), RGBV(0x51), RGBV(0x52), RGBV(0x53),
184 RGBV(0x54), RGBV(0x55), RGBV(0x56), RGBV(0x57),
185 RGBV(0x58), RGBV(0x59), RGBV(0x5A), RGBV(0x5B),
186 RGBV(0x5C), RGBV(0x5D), RGBV(0x5E), RGBV(0x5F),
187 RGBV(0x60), RGBV(0x61), RGBV(0x62), RGBV(0x63),
188 RGBV(0x64), RGBV(0x65), RGBV(0x66), RGBV(0x67),
189 RGBV(0x68), RGBV(0x69), RGBV(0x6A), RGBV(0x6B),
190 RGBV(0x6C), RGBV(0x6D), RGBV(0x6E), RGBV(0x6F),
191 RGBV(0x70), RGBV(0x71), RGBV(0x72), RGBV(0x73),
192 RGBV(0x74), RGBV(0x75), RGBV(0x76), RGBV(0x77),
193 RGBV(0x78), RGBV(0x79), RGBV(0x7A), RGBV(0x7B),
194 RGBV(0x7C), RGBV(0x7D), RGBV(0x7E), RGBV(0x7F),
195 RGBV(0x80), RGBV(0x81), RGBV(0x82), RGBV(0x83),
196 RGBV(0x84), RGBV(0x85), RGBV(0x86), RGBV(0x87),
197 RGBV(0x88), RGBV(0x89), RGBV(0x8A), RGBV(0x8B),
198 RGBV(0x8C), RGBV(0x8D), RGBV(0x8E), RGBV(0x8F),
199 RGBV(0x90), RGBV(0x91), RGBV(0x92), RGBV(0x93),
200 RGBV(0x94), RGBV(0x95), RGBV(0x96), RGBV(0x97),
201 RGBV(0x98), RGBV(0x99), RGBV(0x9A), RGBV(0x9B),
202 RGBV(0x9C), RGBV(0x9D), RGBV(0x9E), RGBV(0x9F),
203 RGBV(0xA0), RGBV(0xA1), RGBV(0xA2), RGBV(0xA3),
204 RGBV(0xA4), RGBV(0xA5), RGBV(0xA6), RGBV(0xA7),
205 RGBV(0xA8), RGBV(0xA9), RGBV(0xAA), RGBV(0xAB),
206 RGBV(0xAC), RGBV(0xAD), RGBV(0xAE), RGBV(0xAF),
207 RGBV(0xB0), RGBV(0xB1), RGBV(0xB2), RGBV(0xB3),
208 RGBV(0xB4), RGBV(0xB5), RGBV(0xB6), RGBV(0xB7),
209 RGBV(0xB8), RGBV(0xB9), RGBV(0xBA), RGBV(0xBB),
210 RGBV(0xBC), RGBV(0xBD), RGBV(0xBE), RGBV(0xBF),
211 RGBV(0xC0), RGBV(0xC1), RGBV(0xC2), RGBV(0xC3),
212 RGBV(0xC4), RGBV(0xC5), RGBV(0xC6), RGBV(0xC7),
213 RGBV(0xC8), RGBV(0xC9), RGBV(0xCA), RGBV(0xCB),
214 RGBV(0xCC), RGBV(0xCD), RGBV(0xCE), RGBV(0xCF),
215 RGBV(0xD0), RGBV(0xD1), RGBV(0xD2), RGBV(0xD3),
216 RGBV(0xD4), RGBV(0xD5), RGBV(0xD6), RGBV(0xD7),
217 RGBV(0xD8), RGBV(0xD9), RGBV(0xDA), RGBV(0xDB),
218 RGBV(0xDC), RGBV(0xDD), RGBV(0xDE), RGBV(0xDF),
219 RGBV(0xE0), RGBV(0xE1), RGBV(0xE2), RGBV(0xE3),
220 RGBV(0xE4), RGBV(0xE5), RGBV(0xE6), RGBV(0xE7),
221 RGBV(0xE8), RGBV(0xE9), RGBV(0xEA), RGBV(0xEB),
222 RGBV(0xEC), RGBV(0xED), RGBV(0xEE), RGBV(0xEF),
223 RGBV(0xF0), RGBV(0xF1), RGBV(0xF2), RGBV(0xF3),
224 RGBV(0xF4), RGBV(0xF5), RGBV(0xF6), RGBV(0xF7),
225 RGBV(0xF8), RGBV(0xF9), RGBV(0xFA), RGBV(0xFB),
226 RGBV(0xFC), RGBV(0xFD), RGBV(0xFE), RGBV(0xFF),
229 #undef RGBY
230 #undef RGBU
231 #undef RGBV
233 } // extern "C"