Chromium Code Reviews

Side by Side Diff: include/libyuv/row.h

Issue 1367093002: I420Alpha row function in 1 pass (Closed) Base URL: https://chromium.googlesource.com/libyuv/libyuv@master
Patch Set: bump version Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
« no previous file with comments | « include/libyuv/convert_argb.h ('k') | include/libyuv/version.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 /* 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...)
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...)
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...)
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...)
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...)
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...)
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
OLDNEW
« no previous file with comments | « include/libyuv/convert_argb.h ('k') | include/libyuv/version.h » ('j') | no next file with comments »

Powered by Google App Engine