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 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
385 #if defined(HAS_YUY2TOYROW_NEON) | 385 #if defined(HAS_YUY2TOYROW_NEON) |
386 if (TestCpuFlag(kCpuHasNEON)) { | 386 if (TestCpuFlag(kCpuHasNEON)) { |
387 YUY2ToYRow = YUY2ToYRow_Any_NEON; | 387 YUY2ToYRow = YUY2ToYRow_Any_NEON; |
388 YUY2ToUVRow = YUY2ToUVRow_Any_NEON; | 388 YUY2ToUVRow = YUY2ToUVRow_Any_NEON; |
389 if (IS_ALIGNED(width, 16)) { | 389 if (IS_ALIGNED(width, 16)) { |
390 YUY2ToYRow = YUY2ToYRow_NEON; | 390 YUY2ToYRow = YUY2ToYRow_NEON; |
391 YUY2ToUVRow = YUY2ToUVRow_NEON; | 391 YUY2ToUVRow = YUY2ToUVRow_NEON; |
392 } | 392 } |
393 } | 393 } |
394 #endif | 394 #endif |
| 395 #if defined(HAS_YUY2TOYROW_MSA) |
| 396 if (TestCpuFlag(kCpuHasMSA)) { |
| 397 YUY2ToYRow = YUY2ToYRow_Any_MSA; |
| 398 YUY2ToUVRow = YUY2ToUVRow_Any_MSA; |
| 399 if (IS_ALIGNED(width, 32)) { |
| 400 YUY2ToYRow = YUY2ToYRow_MSA; |
| 401 YUY2ToUVRow = YUY2ToUVRow_MSA; |
| 402 } |
| 403 } |
| 404 #endif |
395 | 405 |
396 for (y = 0; y < height - 1; y += 2) { | 406 for (y = 0; y < height - 1; y += 2) { |
397 YUY2ToUVRow(src_yuy2, src_stride_yuy2, dst_u, dst_v, width); | 407 YUY2ToUVRow(src_yuy2, src_stride_yuy2, dst_u, dst_v, width); |
398 YUY2ToYRow(src_yuy2, dst_y, width); | 408 YUY2ToYRow(src_yuy2, dst_y, width); |
399 YUY2ToYRow(src_yuy2 + src_stride_yuy2, dst_y + dst_stride_y, width); | 409 YUY2ToYRow(src_yuy2 + src_stride_yuy2, dst_y + dst_stride_y, width); |
400 src_yuy2 += src_stride_yuy2 * 2; | 410 src_yuy2 += src_stride_yuy2 * 2; |
401 dst_y += dst_stride_y * 2; | 411 dst_y += dst_stride_y * 2; |
402 dst_u += dst_stride_u; | 412 dst_u += dst_stride_u; |
403 dst_v += dst_stride_v; | 413 dst_v += dst_stride_v; |
404 } | 414 } |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
450 #if defined(HAS_UYVYTOYROW_NEON) | 460 #if defined(HAS_UYVYTOYROW_NEON) |
451 if (TestCpuFlag(kCpuHasNEON)) { | 461 if (TestCpuFlag(kCpuHasNEON)) { |
452 UYVYToYRow = UYVYToYRow_Any_NEON; | 462 UYVYToYRow = UYVYToYRow_Any_NEON; |
453 UYVYToUVRow = UYVYToUVRow_Any_NEON; | 463 UYVYToUVRow = UYVYToUVRow_Any_NEON; |
454 if (IS_ALIGNED(width, 16)) { | 464 if (IS_ALIGNED(width, 16)) { |
455 UYVYToYRow = UYVYToYRow_NEON; | 465 UYVYToYRow = UYVYToYRow_NEON; |
456 UYVYToUVRow = UYVYToUVRow_NEON; | 466 UYVYToUVRow = UYVYToUVRow_NEON; |
457 } | 467 } |
458 } | 468 } |
459 #endif | 469 #endif |
| 470 #if defined(HAS_UYVYTOYROW_MSA) |
| 471 if (TestCpuFlag(kCpuHasMSA)) { |
| 472 UYVYToYRow = UYVYToYRow_Any_MSA; |
| 473 UYVYToUVRow = UYVYToUVRow_Any_MSA; |
| 474 if (IS_ALIGNED(width, 32)) { |
| 475 UYVYToYRow = UYVYToYRow_MSA; |
| 476 UYVYToUVRow = UYVYToUVRow_MSA; |
| 477 } |
| 478 } |
| 479 #endif |
460 | 480 |
461 for (y = 0; y < height - 1; y += 2) { | 481 for (y = 0; y < height - 1; y += 2) { |
462 UYVYToUVRow(src_uyvy, src_stride_uyvy, dst_u, dst_v, width); | 482 UYVYToUVRow(src_uyvy, src_stride_uyvy, dst_u, dst_v, width); |
463 UYVYToYRow(src_uyvy, dst_y, width); | 483 UYVYToYRow(src_uyvy, dst_y, width); |
464 UYVYToYRow(src_uyvy + src_stride_uyvy, dst_y + dst_stride_y, width); | 484 UYVYToYRow(src_uyvy + src_stride_uyvy, dst_y + dst_stride_y, width); |
465 src_uyvy += src_stride_uyvy * 2; | 485 src_uyvy += src_stride_uyvy * 2; |
466 dst_y += dst_stride_y * 2; | 486 dst_y += dst_stride_y * 2; |
467 dst_u += dst_stride_u; | 487 dst_u += dst_stride_u; |
468 dst_v += dst_stride_v; | 488 dst_v += dst_stride_v; |
469 } | 489 } |
(...skipping 948 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1418 dst_u += dst_stride_u; | 1438 dst_u += dst_stride_u; |
1419 dst_v += dst_stride_v; | 1439 dst_v += dst_stride_v; |
1420 } | 1440 } |
1421 return 0; | 1441 return 0; |
1422 } | 1442 } |
1423 | 1443 |
1424 #ifdef __cplusplus | 1444 #ifdef __cplusplus |
1425 } // extern "C" | 1445 } // extern "C" |
1426 } // namespace libyuv | 1446 } // namespace libyuv |
1427 #endif | 1447 #endif |
OLD | NEW |