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 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
230 src_stride_y = -src_stride_y; | 230 src_stride_y = -src_stride_y; |
231 } | 231 } |
232 #if defined(HAS_MIRRORROW_NEON) | 232 #if defined(HAS_MIRRORROW_NEON) |
233 if (TestCpuFlag(kCpuHasNEON)) { | 233 if (TestCpuFlag(kCpuHasNEON)) { |
234 MirrorRow = MirrorRow_Any_NEON; | 234 MirrorRow = MirrorRow_Any_NEON; |
235 if (IS_ALIGNED(width, 16)) { | 235 if (IS_ALIGNED(width, 16)) { |
236 MirrorRow = MirrorRow_NEON; | 236 MirrorRow = MirrorRow_NEON; |
237 } | 237 } |
238 } | 238 } |
239 #endif | 239 #endif |
240 #if defined(HAS_MIRRORROW_SSE2) | |
241 if (TestCpuFlag(kCpuHasSSE2)) { | |
242 MirrorRow = MirrorRow_Any_SSE2; | |
243 if (IS_ALIGNED(width, 16)) { | |
244 MirrorRow = MirrorRow_SSE2; | |
245 } | |
246 } | |
247 #endif | |
248 #if defined(HAS_MIRRORROW_SSSE3) | 240 #if defined(HAS_MIRRORROW_SSSE3) |
249 if (TestCpuFlag(kCpuHasSSSE3)) { | 241 if (TestCpuFlag(kCpuHasSSSE3)) { |
250 MirrorRow = MirrorRow_Any_SSSE3; | 242 MirrorRow = MirrorRow_Any_SSSE3; |
251 if (IS_ALIGNED(width, 16)) { | 243 if (IS_ALIGNED(width, 16)) { |
252 MirrorRow = MirrorRow_SSSE3; | 244 MirrorRow = MirrorRow_SSSE3; |
253 } | 245 } |
254 } | 246 } |
255 #endif | 247 #endif |
256 #if defined(HAS_MIRRORROW_AVX2) | 248 #if defined(HAS_MIRRORROW_AVX2) |
257 if (TestCpuFlag(kCpuHasAVX2)) { | 249 if (TestCpuFlag(kCpuHasAVX2)) { |
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
534 LIBYUV_API | 526 LIBYUV_API |
535 ARGBBlendRow GetARGBBlend() { | 527 ARGBBlendRow GetARGBBlend() { |
536 void (*ARGBBlendRow)(const uint8* src_argb, const uint8* src_argb1, | 528 void (*ARGBBlendRow)(const uint8* src_argb, const uint8* src_argb1, |
537 uint8* dst_argb, int width) = ARGBBlendRow_C; | 529 uint8* dst_argb, int width) = ARGBBlendRow_C; |
538 #if defined(HAS_ARGBBLENDROW_SSSE3) | 530 #if defined(HAS_ARGBBLENDROW_SSSE3) |
539 if (TestCpuFlag(kCpuHasSSSE3)) { | 531 if (TestCpuFlag(kCpuHasSSSE3)) { |
540 ARGBBlendRow = ARGBBlendRow_SSSE3; | 532 ARGBBlendRow = ARGBBlendRow_SSSE3; |
541 return ARGBBlendRow; | 533 return ARGBBlendRow; |
542 } | 534 } |
543 #endif | 535 #endif |
544 #if defined(HAS_ARGBBLENDROW_SSE2) | |
545 if (TestCpuFlag(kCpuHasSSE2)) { | |
546 ARGBBlendRow = ARGBBlendRow_SSE2; | |
547 } | |
548 #endif | |
549 #if defined(HAS_ARGBBLENDROW_NEON) | 536 #if defined(HAS_ARGBBLENDROW_NEON) |
550 if (TestCpuFlag(kCpuHasNEON)) { | 537 if (TestCpuFlag(kCpuHasNEON)) { |
551 ARGBBlendRow = ARGBBlendRow_NEON; | 538 ARGBBlendRow = ARGBBlendRow_NEON; |
552 } | 539 } |
553 #endif | 540 #endif |
554 return ARGBBlendRow; | 541 return ARGBBlendRow; |
555 } | 542 } |
556 | 543 |
557 // Alpha Blend 2 ARGB images and store to destination. | 544 // Alpha Blend 2 ARGB images and store to destination. |
558 LIBYUV_API | 545 LIBYUV_API |
(...skipping 701 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1260 src_argb = src_argb + (height - 1) * src_stride_argb; | 1247 src_argb = src_argb + (height - 1) * src_stride_argb; |
1261 src_stride_argb = -src_stride_argb; | 1248 src_stride_argb = -src_stride_argb; |
1262 } | 1249 } |
1263 // Coalesce rows. | 1250 // Coalesce rows. |
1264 if (src_stride_argb == width * 4 && | 1251 if (src_stride_argb == width * 4 && |
1265 dst_stride_argb == width * 4) { | 1252 dst_stride_argb == width * 4) { |
1266 width *= height; | 1253 width *= height; |
1267 height = 1; | 1254 height = 1; |
1268 src_stride_argb = dst_stride_argb = 0; | 1255 src_stride_argb = dst_stride_argb = 0; |
1269 } | 1256 } |
1270 #if defined(HAS_ARGBATTENUATEROW_SSE2) | |
1271 if (TestCpuFlag(kCpuHasSSE2)) { | |
1272 ARGBAttenuateRow = ARGBAttenuateRow_Any_SSE2; | |
1273 if (IS_ALIGNED(width, 4)) { | |
1274 ARGBAttenuateRow = ARGBAttenuateRow_SSE2; | |
1275 } | |
1276 } | |
1277 #endif | |
1278 #if defined(HAS_ARGBATTENUATEROW_SSSE3) | 1257 #if defined(HAS_ARGBATTENUATEROW_SSSE3) |
1279 if (TestCpuFlag(kCpuHasSSSE3)) { | 1258 if (TestCpuFlag(kCpuHasSSSE3)) { |
1280 ARGBAttenuateRow = ARGBAttenuateRow_Any_SSSE3; | 1259 ARGBAttenuateRow = ARGBAttenuateRow_Any_SSSE3; |
1281 if (IS_ALIGNED(width, 4)) { | 1260 if (IS_ALIGNED(width, 4)) { |
1282 ARGBAttenuateRow = ARGBAttenuateRow_SSSE3; | 1261 ARGBAttenuateRow = ARGBAttenuateRow_SSSE3; |
1283 } | 1262 } |
1284 } | 1263 } |
1285 #endif | 1264 #endif |
1286 #if defined(HAS_ARGBATTENUATEROW_AVX2) | 1265 #if defined(HAS_ARGBATTENUATEROW_AVX2) |
1287 if (TestCpuFlag(kCpuHasAVX2)) { | 1266 if (TestCpuFlag(kCpuHasAVX2)) { |
(...skipping 1275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2563 } | 2542 } |
2564 free_aligned_buffer_64(rows); | 2543 free_aligned_buffer_64(rows); |
2565 } | 2544 } |
2566 return 0; | 2545 return 0; |
2567 } | 2546 } |
2568 | 2547 |
2569 #ifdef __cplusplus | 2548 #ifdef __cplusplus |
2570 } // extern "C" | 2549 } // extern "C" |
2571 } // namespace libyuv | 2550 } // namespace libyuv |
2572 #endif | 2551 #endif |
OLD | NEW |