| 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...) Expand 10 before | Expand all | Expand 10 after 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...) Expand 10 before | Expand all | Expand 10 after 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...) Expand 10 before | Expand all | Expand 10 after 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...) Expand 10 before | Expand all | Expand 10 after 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...) Expand 10 before | Expand all | Expand 10 after 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...) Expand 10 before | Expand all | Expand 10 after 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 |