OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2011 The LibYuv Project Authors. All rights reserved. | 2 * Copyright 2011 The LibYuv Project Authors. All rights reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 169 matching lines...) Loading... |
180 #endif | 180 #endif |
181 | 181 |
182 // The following are available on x64 Visual C and clangcl. | 182 // The following are available on x64 Visual C and clangcl. |
183 // TODO(fbarchard): Port to gcc. | 183 // TODO(fbarchard): Port to gcc. |
184 #if !defined(LIBYUV_DISABLE_X86) && defined (_M_X64) && \ | 184 #if !defined(LIBYUV_DISABLE_X86) && defined (_M_X64) && \ |
185 (!defined(__clang__) || defined(__SSSE3__)) | 185 (!defined(__clang__) || defined(__SSSE3__)) |
186 #define HAS_I422TOARGBROW_SSSE3 | 186 #define HAS_I422TOARGBROW_SSSE3 |
187 #define HAS_I422TOABGRROW_SSSE3 | 187 #define HAS_I422TOABGRROW_SSSE3 |
188 #endif | 188 #endif |
189 | 189 |
| 190 |
| 191 // The following are available on 32 bit x86 Visual C and clangcl. |
| 192 // TODO(fbarchard): Port to gcc. |
| 193 #if !defined(LIBYUV_DISABLE_X86) && defined (_M_IX86) |
| 194 #define HAS_I422ALPHATOARGBROW_SSSE3 |
| 195 #define HAS_I422ALPHATOABGRROW_SSSE3 |
| 196 #endif |
| 197 |
190 // The following are available for AVX2 Visual C and clangcl 32 bit: | 198 // The following are available for AVX2 Visual C and clangcl 32 bit: |
191 // TODO(fbarchard): Port to gcc. | 199 // TODO(fbarchard): Port to gcc. |
192 #if !defined(LIBYUV_DISABLE_X86) && defined(_M_IX86) && \ | 200 #if !defined(LIBYUV_DISABLE_X86) && defined(_M_IX86) && \ |
193 (defined(VISUALC_HAS_AVX2) || defined(CLANG_HAS_AVX2)) | 201 (defined(VISUALC_HAS_AVX2) || defined(CLANG_HAS_AVX2)) |
194 #define HAS_ARGB1555TOARGBROW_AVX2 | 202 #define HAS_ARGB1555TOARGBROW_AVX2 |
195 #define HAS_ARGB4444TOARGBROW_AVX2 | 203 #define HAS_ARGB4444TOARGBROW_AVX2 |
196 #define HAS_ARGBTOARGB1555ROW_AVX2 | 204 #define HAS_ARGBTOARGB1555ROW_AVX2 |
197 #define HAS_ARGBTOARGB4444ROW_AVX2 | 205 #define HAS_ARGBTOARGB4444ROW_AVX2 |
198 #define HAS_ARGBTORGB565DITHERROW_AVX2 | 206 #define HAS_ARGBTORGB565DITHERROW_AVX2 |
199 #define HAS_ARGBTORGB565DITHERROW_SSE2 | 207 #define HAS_ARGBTORGB565DITHERROW_SSE2 |
(...skipping 50 matching lines...) Loading... |
250 | 258 |
251 // Effects: | 259 // Effects: |
252 #define HAS_ARGBADDROW_AVX2 | 260 #define HAS_ARGBADDROW_AVX2 |
253 #define HAS_ARGBATTENUATEROW_AVX2 | 261 #define HAS_ARGBATTENUATEROW_AVX2 |
254 #define HAS_ARGBMULTIPLYROW_AVX2 | 262 #define HAS_ARGBMULTIPLYROW_AVX2 |
255 #define HAS_ARGBSUBTRACTROW_AVX2 | 263 #define HAS_ARGBSUBTRACTROW_AVX2 |
256 #define HAS_ARGBUNATTENUATEROW_AVX2 | 264 #define HAS_ARGBUNATTENUATEROW_AVX2 |
257 #endif | 265 #endif |
258 | 266 |
259 // The following are disabled when SSSE3 is available: | 267 // The following are disabled when SSSE3 is available: |
| 268 // TODO(fbarchard): remove sse2. ssse3 is faster and well supported. |
260 #if !defined(LIBYUV_DISABLE_X86) && \ | 269 #if !defined(LIBYUV_DISABLE_X86) && \ |
261 (defined(_M_IX86) || defined(__x86_64__) || defined(__i386__)) && \ | 270 (defined(_M_IX86) || defined(__x86_64__) || defined(__i386__)) && \ |
262 !defined(LIBYUV_SSSE3_ONLY) | 271 !defined(LIBYUV_SSSE3_ONLY) |
263 #define HAS_ARGBATTENUATEROW_SSE2 | 272 #define HAS_ARGBATTENUATEROW_SSE2 |
264 #define HAS_ARGBBLENDROW_SSE2 | 273 #define HAS_ARGBBLENDROW_SSE2 |
265 #define HAS_MIRRORROW_SSE2 | 274 #define HAS_MIRRORROW_SSE2 |
266 #endif | 275 #endif |
267 | 276 |
268 // The following are available on Neon platforms: | 277 // The following are available on Neon platforms: |
269 #if !defined(LIBYUV_DISABLE_NEON) && \ | 278 #if !defined(LIBYUV_DISABLE_NEON) && \ |
(...skipping 768 matching lines...) Loading... |
1038 const uint8* src_v, | 1047 const uint8* src_v, |
1039 uint8* dst_argb, | 1048 uint8* dst_argb, |
1040 struct YuvConstants* yuvconstants, | 1049 struct YuvConstants* yuvconstants, |
1041 int width); | 1050 int width); |
1042 void I422ToARGBRow_C(const uint8* src_y, | 1051 void I422ToARGBRow_C(const uint8* src_y, |
1043 const uint8* src_u, | 1052 const uint8* src_u, |
1044 const uint8* src_v, | 1053 const uint8* src_v, |
1045 uint8* dst_argb, | 1054 uint8* dst_argb, |
1046 struct YuvConstants* yuvconstants, | 1055 struct YuvConstants* yuvconstants, |
1047 int width); | 1056 int width); |
| 1057 void I422AlphaToARGBRow_C(const uint8* y_buf, |
| 1058 const uint8* u_buf, |
| 1059 const uint8* v_buf, |
| 1060 const uint8* a_buf, |
| 1061 uint8* dst_argb, |
| 1062 struct YuvConstants* yuvconstants, |
| 1063 int width); |
| 1064 void I422AlphaToABGRRow_C(const uint8* y_buf, |
| 1065 const uint8* u_buf, |
| 1066 const uint8* v_buf, |
| 1067 const uint8* a_buf, |
| 1068 uint8* dst_argb, |
| 1069 struct YuvConstants* yuvconstants, |
| 1070 int width); |
1048 void I422ToABGRRow_C(const uint8* src_y, | 1071 void I422ToABGRRow_C(const uint8* src_y, |
1049 const uint8* src_u, | 1072 const uint8* src_u, |
1050 const uint8* src_v, | 1073 const uint8* src_v, |
1051 uint8* dst_argb, | 1074 uint8* dst_argb, |
1052 struct YuvConstants* yuvconstants, | 1075 struct YuvConstants* yuvconstants, |
1053 int width); | 1076 int width); |
1054 void I411ToARGBRow_C(const uint8* src_y, | 1077 void I411ToARGBRow_C(const uint8* src_y, |
1055 const uint8* src_u, | 1078 const uint8* src_u, |
1056 const uint8* src_v, | 1079 const uint8* src_v, |
1057 uint8* dst_argb, | 1080 uint8* dst_argb, |
(...skipping 148 matching lines...) Loading... |
1206 const uint8* src_v, | 1229 const uint8* src_v, |
1207 uint8* dst_abgr, | 1230 uint8* dst_abgr, |
1208 struct YuvConstants* yuvconstants, | 1231 struct YuvConstants* yuvconstants, |
1209 int width); | 1232 int width); |
1210 void I422ToARGBRow_SSSE3(const uint8* src_y, | 1233 void I422ToARGBRow_SSSE3(const uint8* src_y, |
1211 const uint8* src_u, | 1234 const uint8* src_u, |
1212 const uint8* src_v, | 1235 const uint8* src_v, |
1213 uint8* dst_argb, | 1236 uint8* dst_argb, |
1214 struct YuvConstants* yuvconstants, | 1237 struct YuvConstants* yuvconstants, |
1215 int width); | 1238 int width); |
| 1239 void I422AlphaToARGBRow_SSSE3(const uint8* y_buf, |
| 1240 const uint8* u_buf, |
| 1241 const uint8* v_buf, |
| 1242 const uint8* a_buf, |
| 1243 uint8* dst_argb, |
| 1244 struct YuvConstants* yuvconstants, |
| 1245 int width); |
| 1246 void I422AlphaToABGRRow_SSSE3(const uint8* y_buf, |
| 1247 const uint8* u_buf, |
| 1248 const uint8* v_buf, |
| 1249 const uint8* a_buf, |
| 1250 uint8* dst_argb, |
| 1251 struct YuvConstants* yuvconstants, |
| 1252 int width); |
1216 void I422ToARGBRow_SSSE3(const uint8* src_y, | 1253 void I422ToARGBRow_SSSE3(const uint8* src_y, |
1217 const uint8* src_u, | 1254 const uint8* src_u, |
1218 const uint8* src_v, | 1255 const uint8* src_v, |
1219 uint8* dst_argb, | 1256 uint8* dst_argb, |
1220 struct YuvConstants* yuvconstants, | 1257 struct YuvConstants* yuvconstants, |
1221 int width); | 1258 int width); |
1222 void I422ToABGRRow_SSSE3(const uint8* src_y, | 1259 void I422ToABGRRow_SSSE3(const uint8* src_y, |
1223 const uint8* src_u, | 1260 const uint8* src_u, |
1224 const uint8* src_v, | 1261 const uint8* src_v, |
1225 uint8* dst_argb, | 1262 uint8* dst_argb, |
(...skipping 172 matching lines...) Loading... |
1398 const uint8* src_v, | 1435 const uint8* src_v, |
1399 uint8* dst_abgr, | 1436 uint8* dst_abgr, |
1400 struct YuvConstants* yuvconstants, | 1437 struct YuvConstants* yuvconstants, |
1401 int width); | 1438 int width); |
1402 void I422ToARGBRow_Any_SSSE3(const uint8* src_y, | 1439 void I422ToARGBRow_Any_SSSE3(const uint8* src_y, |
1403 const uint8* src_u, | 1440 const uint8* src_u, |
1404 const uint8* src_v, | 1441 const uint8* src_v, |
1405 uint8* dst_argb, | 1442 uint8* dst_argb, |
1406 struct YuvConstants* yuvconstants, | 1443 struct YuvConstants* yuvconstants, |
1407 int width); | 1444 int width); |
| 1445 void I422AlphaToARGBRow_Any_SSSE3(const uint8* y_buf, |
| 1446 const uint8* u_buf, |
| 1447 const uint8* v_buf, |
| 1448 const uint8* a_buf, |
| 1449 uint8* dst_argb, |
| 1450 struct YuvConstants* yuvconstants, |
| 1451 int width); |
| 1452 void I422AlphaToABGRRow_Any_SSSE3(const uint8* y_buf, |
| 1453 const uint8* u_buf, |
| 1454 const uint8* v_buf, |
| 1455 const uint8* a_buf, |
| 1456 uint8* dst_abgr, |
| 1457 struct YuvConstants* yuvconstants, |
| 1458 int width); |
1408 void I411ToARGBRow_Any_SSSE3(const uint8* src_y, | 1459 void I411ToARGBRow_Any_SSSE3(const uint8* src_y, |
1409 const uint8* src_u, | 1460 const uint8* src_u, |
1410 const uint8* src_v, | 1461 const uint8* src_v, |
1411 uint8* dst_argb, | 1462 uint8* dst_argb, |
1412 struct YuvConstants* yuvconstants, | 1463 struct YuvConstants* yuvconstants, |
1413 int width); | 1464 int width); |
1414 void I411ToARGBRow_Any_AVX2(const uint8* src_y, | 1465 void I411ToARGBRow_Any_AVX2(const uint8* src_y, |
1415 const uint8* src_u, | 1466 const uint8* src_u, |
1416 const uint8* src_v, | 1467 const uint8* src_v, |
1417 uint8* dst_argb, | 1468 uint8* dst_argb, |
(...skipping 620 matching lines...) Loading... |
2038 void ARGBLumaColorTableRow_SSSE3(const uint8* src_argb, uint8* dst_argb, | 2089 void ARGBLumaColorTableRow_SSSE3(const uint8* src_argb, uint8* dst_argb, |
2039 int width, | 2090 int width, |
2040 const uint8* luma, uint32 lumacoeff); | 2091 const uint8* luma, uint32 lumacoeff); |
2041 | 2092 |
2042 #ifdef __cplusplus | 2093 #ifdef __cplusplus |
2043 } // extern "C" | 2094 } // extern "C" |
2044 } // namespace libyuv | 2095 } // namespace libyuv |
2045 #endif | 2096 #endif |
2046 | 2097 |
2047 #endif // INCLUDE_LIBYUV_ROW_H_ NOLINT | 2098 #endif // INCLUDE_LIBYUV_ROW_H_ NOLINT |
OLD | NEW |