| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2012 The LibYuv Project Authors. All rights reserved. | 2 * Copyright 2012 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 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 } | 93 } |
| 94 #endif | 94 #endif |
| 95 #if defined(HAS_ARGBTOYROW_NEON) | 95 #if defined(HAS_ARGBTOYROW_NEON) |
| 96 if (TestCpuFlag(kCpuHasNEON)) { | 96 if (TestCpuFlag(kCpuHasNEON)) { |
| 97 ARGBToYRow = ARGBToYRow_Any_NEON; | 97 ARGBToYRow = ARGBToYRow_Any_NEON; |
| 98 if (IS_ALIGNED(width, 8)) { | 98 if (IS_ALIGNED(width, 8)) { |
| 99 ARGBToYRow = ARGBToYRow_NEON; | 99 ARGBToYRow = ARGBToYRow_NEON; |
| 100 } | 100 } |
| 101 } | 101 } |
| 102 #endif | 102 #endif |
| 103 #if defined(HAS_ARGBTOYROW_DSPR2) |
| 104 if (TestCpuFlag(kCpuHasDSPR2)) { |
| 105 ARGBToYRow = ARGBToYRow_Any_DSPR2; |
| 106 if (IS_ALIGNED(width, 8)) { |
| 107 ARGBToYRow = ARGBToYRow_DSPR2; |
| 108 } |
| 109 } |
| 110 #endif |
| 103 #if defined(HAS_ARGBTOYROW_MSA) | 111 #if defined(HAS_ARGBTOYROW_MSA) |
| 104 if (TestCpuFlag(kCpuHasMSA)) { | 112 if (TestCpuFlag(kCpuHasMSA)) { |
| 105 ARGBToYRow = ARGBToYRow_Any_MSA; | 113 ARGBToYRow = ARGBToYRow_Any_MSA; |
| 106 if (IS_ALIGNED(width, 16)) { | 114 if (IS_ALIGNED(width, 16)) { |
| 107 ARGBToYRow = ARGBToYRow_MSA; | 115 ARGBToYRow = ARGBToYRow_MSA; |
| 108 } | 116 } |
| 109 } | 117 } |
| 110 #endif | 118 #endif |
| 111 | 119 |
| 112 for (y = 0; y < height; ++y) { | 120 for (y = 0; y < height; ++y) { |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 182 } | 190 } |
| 183 #endif | 191 #endif |
| 184 #if defined(HAS_ARGBTOUVROW_NEON) | 192 #if defined(HAS_ARGBTOUVROW_NEON) |
| 185 if (TestCpuFlag(kCpuHasNEON)) { | 193 if (TestCpuFlag(kCpuHasNEON)) { |
| 186 ARGBToUVRow = ARGBToUVRow_Any_NEON; | 194 ARGBToUVRow = ARGBToUVRow_Any_NEON; |
| 187 if (IS_ALIGNED(width, 16)) { | 195 if (IS_ALIGNED(width, 16)) { |
| 188 ARGBToUVRow = ARGBToUVRow_NEON; | 196 ARGBToUVRow = ARGBToUVRow_NEON; |
| 189 } | 197 } |
| 190 } | 198 } |
| 191 #endif | 199 #endif |
| 200 #if defined(HAS_ARGBTOYROW_DSPR2) |
| 201 if (TestCpuFlag(kCpuHasDSPR2)) { |
| 202 ARGBToYRow = ARGBToYRow_Any_DSPR2; |
| 203 if (IS_ALIGNED(width, 8)) { |
| 204 ARGBToYRow = ARGBToYRow_DSPR2; |
| 205 } |
| 206 } |
| 207 #endif |
| 208 #if defined(HAS_ARGBTOUVROW_DSPR2) |
| 209 if (TestCpuFlag(kCpuHasDSPR2)) { |
| 210 ARGBToUVRow = ARGBToUVRow_Any_DSPR2; |
| 211 if (IS_ALIGNED(width, 16)) { |
| 212 ARGBToUVRow = ARGBToUVRow_DSPR2; |
| 213 } |
| 214 } |
| 215 #endif |
| 216 |
| 192 #if defined(HAS_ARGBTOYROW_MSA) | 217 #if defined(HAS_ARGBTOYROW_MSA) |
| 193 if (TestCpuFlag(kCpuHasMSA)) { | 218 if (TestCpuFlag(kCpuHasMSA)) { |
| 194 ARGBToYRow = ARGBToYRow_Any_MSA; | 219 ARGBToYRow = ARGBToYRow_Any_MSA; |
| 195 if (IS_ALIGNED(width, 16)) { | 220 if (IS_ALIGNED(width, 16)) { |
| 196 ARGBToYRow = ARGBToYRow_MSA; | 221 ARGBToYRow = ARGBToYRow_MSA; |
| 197 } | 222 } |
| 198 } | 223 } |
| 199 #endif | 224 #endif |
| 200 #if defined(HAS_ARGBTOUVROW_MSA) | 225 #if defined(HAS_ARGBTOUVROW_MSA) |
| 201 if (TestCpuFlag(kCpuHasMSA)) { | 226 if (TestCpuFlag(kCpuHasMSA)) { |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 312 } | 337 } |
| 313 #endif | 338 #endif |
| 314 #if defined(HAS_MERGEUVROW_NEON) | 339 #if defined(HAS_MERGEUVROW_NEON) |
| 315 if (TestCpuFlag(kCpuHasNEON)) { | 340 if (TestCpuFlag(kCpuHasNEON)) { |
| 316 MergeUVRow_ = MergeUVRow_Any_NEON; | 341 MergeUVRow_ = MergeUVRow_Any_NEON; |
| 317 if (IS_ALIGNED(halfwidth, 16)) { | 342 if (IS_ALIGNED(halfwidth, 16)) { |
| 318 MergeUVRow_ = MergeUVRow_NEON; | 343 MergeUVRow_ = MergeUVRow_NEON; |
| 319 } | 344 } |
| 320 } | 345 } |
| 321 #endif | 346 #endif |
| 347 #if defined(HAS_ARGBTOYROW_DSPR2) |
| 348 if (TestCpuFlag(kCpuHasDSPR2)) { |
| 349 ARGBToYRow = ARGBToYRow_Any_DSPR2; |
| 350 if (IS_ALIGNED(width, 8)) { |
| 351 ARGBToYRow = ARGBToYRow_DSPR2; |
| 352 } |
| 353 } |
| 354 #endif |
| 355 #if defined(HAS_ARGBTOUVROW_DSPR2) |
| 356 if (TestCpuFlag(kCpuHasDSPR2)) { |
| 357 ARGBToUVRow = ARGBToUVRow_Any_DSPR2; |
| 358 if (IS_ALIGNED(width, 16)) { |
| 359 ARGBToUVRow = ARGBToUVRow_DSPR2; |
| 360 } |
| 361 } |
| 362 #endif |
| 322 { | 363 { |
| 323 // Allocate a rows of uv. | 364 // Allocate a rows of uv. |
| 324 align_buffer_64(row_u, ((halfwidth + 31) & ~31) * 2); | 365 align_buffer_64(row_u, ((halfwidth + 31) & ~31) * 2); |
| 325 uint8* row_v = row_u + ((halfwidth + 31) & ~31); | 366 uint8* row_v = row_u + ((halfwidth + 31) & ~31); |
| 326 | 367 |
| 327 for (y = 0; y < height - 1; y += 2) { | 368 for (y = 0; y < height - 1; y += 2) { |
| 328 ARGBToUVRow(src_argb, src_stride_argb, row_u, row_v, width); | 369 ARGBToUVRow(src_argb, src_stride_argb, row_u, row_v, width); |
| 329 MergeUVRow_(row_u, row_v, dst_uv, halfwidth); | 370 MergeUVRow_(row_u, row_v, dst_uv, halfwidth); |
| 330 ARGBToYRow(src_argb, dst_y, width); | 371 ARGBToYRow(src_argb, dst_y, width); |
| 331 ARGBToYRow(src_argb + src_stride_argb, dst_y + dst_stride_y, width); | 372 ARGBToYRow(src_argb + src_stride_argb, dst_y + dst_stride_y, width); |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 439 } | 480 } |
| 440 #endif | 481 #endif |
| 441 #if defined(HAS_MERGEUVROW_NEON) | 482 #if defined(HAS_MERGEUVROW_NEON) |
| 442 if (TestCpuFlag(kCpuHasNEON)) { | 483 if (TestCpuFlag(kCpuHasNEON)) { |
| 443 MergeUVRow_ = MergeUVRow_Any_NEON; | 484 MergeUVRow_ = MergeUVRow_Any_NEON; |
| 444 if (IS_ALIGNED(halfwidth, 16)) { | 485 if (IS_ALIGNED(halfwidth, 16)) { |
| 445 MergeUVRow_ = MergeUVRow_NEON; | 486 MergeUVRow_ = MergeUVRow_NEON; |
| 446 } | 487 } |
| 447 } | 488 } |
| 448 #endif | 489 #endif |
| 490 #if defined(HAS_ARGBTOYROW_DSPR2) |
| 491 if (TestCpuFlag(kCpuHasDSPR2)) { |
| 492 ARGBToYRow = ARGBToYRow_Any_DSPR2; |
| 493 if (IS_ALIGNED(width, 8)) { |
| 494 ARGBToYRow = ARGBToYRow_DSPR2; |
| 495 } |
| 496 } |
| 497 #endif |
| 498 #if defined(HAS_ARGBTOUVROW_DSPR2) |
| 499 if (TestCpuFlag(kCpuHasDSPR2)) { |
| 500 ARGBToUVRow = ARGBToUVRow_Any_DSPR2; |
| 501 if (IS_ALIGNED(width, 16)) { |
| 502 ARGBToUVRow = ARGBToUVRow_DSPR2; |
| 503 } |
| 504 } |
| 505 #endif |
| 449 { | 506 { |
| 450 // Allocate a rows of uv. | 507 // Allocate a rows of uv. |
| 451 align_buffer_64(row_u, ((halfwidth + 31) & ~31) * 2); | 508 align_buffer_64(row_u, ((halfwidth + 31) & ~31) * 2); |
| 452 uint8* row_v = row_u + ((halfwidth + 31) & ~31); | 509 uint8* row_v = row_u + ((halfwidth + 31) & ~31); |
| 453 | 510 |
| 454 for (y = 0; y < height - 1; y += 2) { | 511 for (y = 0; y < height - 1; y += 2) { |
| 455 ARGBToUVRow(src_argb, src_stride_argb, row_u, row_v, width); | 512 ARGBToUVRow(src_argb, src_stride_argb, row_u, row_v, width); |
| 456 MergeUVRow_(row_v, row_u, dst_uv, halfwidth); | 513 MergeUVRow_(row_v, row_u, dst_uv, halfwidth); |
| 457 ARGBToYRow(src_argb, dst_y, width); | 514 ARGBToYRow(src_argb, dst_y, width); |
| 458 ARGBToYRow(src_argb + src_stride_argb, dst_y + dst_stride_y, width); | 515 ARGBToYRow(src_argb + src_stride_argb, dst_y + dst_stride_y, width); |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 563 } | 620 } |
| 564 #endif | 621 #endif |
| 565 #if defined(HAS_I422TOYUY2ROW_NEON) | 622 #if defined(HAS_I422TOYUY2ROW_NEON) |
| 566 if (TestCpuFlag(kCpuHasNEON)) { | 623 if (TestCpuFlag(kCpuHasNEON)) { |
| 567 I422ToYUY2Row = I422ToYUY2Row_Any_NEON; | 624 I422ToYUY2Row = I422ToYUY2Row_Any_NEON; |
| 568 if (IS_ALIGNED(width, 16)) { | 625 if (IS_ALIGNED(width, 16)) { |
| 569 I422ToYUY2Row = I422ToYUY2Row_NEON; | 626 I422ToYUY2Row = I422ToYUY2Row_NEON; |
| 570 } | 627 } |
| 571 } | 628 } |
| 572 #endif | 629 #endif |
| 630 #if defined(HAS_ARGBTOYROW_DSPR2) |
| 631 if (TestCpuFlag(kCpuHasDSPR2)) { |
| 632 ARGBToYRow = ARGBToYRow_Any_DSPR2; |
| 633 if (IS_ALIGNED(width, 8)) { |
| 634 ARGBToYRow = ARGBToYRow_DSPR2; |
| 635 } |
| 636 } |
| 637 #endif |
| 638 #if defined(HAS_ARGBTOUVROW_DSPR2) |
| 639 if (TestCpuFlag(kCpuHasDSPR2)) { |
| 640 ARGBToUVRow = ARGBToUVRow_Any_DSPR2; |
| 641 if (IS_ALIGNED(width, 16)) { |
| 642 ARGBToUVRow = ARGBToUVRow_DSPR2; |
| 643 } |
| 644 } |
| 645 #endif |
| 573 #if defined(HAS_I422TOYUY2ROW_MSA) | 646 #if defined(HAS_I422TOYUY2ROW_MSA) |
| 574 if (TestCpuFlag(kCpuHasMSA)) { | 647 if (TestCpuFlag(kCpuHasMSA)) { |
| 575 I422ToYUY2Row = I422ToYUY2Row_Any_MSA; | 648 I422ToYUY2Row = I422ToYUY2Row_Any_MSA; |
| 576 if (IS_ALIGNED(width, 32)) { | 649 if (IS_ALIGNED(width, 32)) { |
| 577 I422ToYUY2Row = I422ToYUY2Row_MSA; | 650 I422ToYUY2Row = I422ToYUY2Row_MSA; |
| 578 } | 651 } |
| 579 } | 652 } |
| 580 #endif | 653 #endif |
| 581 | 654 |
| 582 { | 655 { |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 691 } | 764 } |
| 692 #endif | 765 #endif |
| 693 #if defined(HAS_I422TOUYVYROW_NEON) | 766 #if defined(HAS_I422TOUYVYROW_NEON) |
| 694 if (TestCpuFlag(kCpuHasNEON)) { | 767 if (TestCpuFlag(kCpuHasNEON)) { |
| 695 I422ToUYVYRow = I422ToUYVYRow_Any_NEON; | 768 I422ToUYVYRow = I422ToUYVYRow_Any_NEON; |
| 696 if (IS_ALIGNED(width, 16)) { | 769 if (IS_ALIGNED(width, 16)) { |
| 697 I422ToUYVYRow = I422ToUYVYRow_NEON; | 770 I422ToUYVYRow = I422ToUYVYRow_NEON; |
| 698 } | 771 } |
| 699 } | 772 } |
| 700 #endif | 773 #endif |
| 774 #if defined(HAS_ARGBTOYROW_DSPR2) |
| 775 if (TestCpuFlag(kCpuHasDSPR2)) { |
| 776 ARGBToYRow = ARGBToYRow_Any_DSPR2; |
| 777 if (IS_ALIGNED(width, 8)) { |
| 778 ARGBToYRow = ARGBToYRow_DSPR2; |
| 779 } |
| 780 } |
| 781 #endif |
| 782 #if defined(HAS_ARGBTOUVROW_DSPR2) |
| 783 if (TestCpuFlag(kCpuHasDSPR2)) { |
| 784 ARGBToUVRow = ARGBToUVRow_Any_DSPR2; |
| 785 if (IS_ALIGNED(width, 16)) { |
| 786 ARGBToUVRow = ARGBToUVRow_DSPR2; |
| 787 } |
| 788 } |
| 789 #endif |
| 701 #if defined(HAS_I422TOUYVYROW_MSA) | 790 #if defined(HAS_I422TOUYVYROW_MSA) |
| 702 if (TestCpuFlag(kCpuHasMSA)) { | 791 if (TestCpuFlag(kCpuHasMSA)) { |
| 703 I422ToUYVYRow = I422ToUYVYRow_Any_MSA; | 792 I422ToUYVYRow = I422ToUYVYRow_Any_MSA; |
| 704 if (IS_ALIGNED(width, 32)) { | 793 if (IS_ALIGNED(width, 32)) { |
| 705 I422ToUYVYRow = I422ToUYVYRow_MSA; | 794 I422ToUYVYRow = I422ToUYVYRow_MSA; |
| 706 } | 795 } |
| 707 } | 796 } |
| 708 #endif | 797 #endif |
| 709 | 798 |
| 710 { | 799 { |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 768 } | 857 } |
| 769 #endif | 858 #endif |
| 770 #if defined(HAS_ARGBTOYROW_NEON) | 859 #if defined(HAS_ARGBTOYROW_NEON) |
| 771 if (TestCpuFlag(kCpuHasNEON)) { | 860 if (TestCpuFlag(kCpuHasNEON)) { |
| 772 ARGBToYRow = ARGBToYRow_Any_NEON; | 861 ARGBToYRow = ARGBToYRow_Any_NEON; |
| 773 if (IS_ALIGNED(width, 8)) { | 862 if (IS_ALIGNED(width, 8)) { |
| 774 ARGBToYRow = ARGBToYRow_NEON; | 863 ARGBToYRow = ARGBToYRow_NEON; |
| 775 } | 864 } |
| 776 } | 865 } |
| 777 #endif | 866 #endif |
| 867 #if defined(HAS_ARGBTOYROW_DSPR2) |
| 868 if (TestCpuFlag(kCpuHasDSPR2)) { |
| 869 ARGBToYRow = ARGBToYRow_Any_DSPR2; |
| 870 if (IS_ALIGNED(width, 8)) { |
| 871 ARGBToYRow = ARGBToYRow_DSPR2; |
| 872 } |
| 873 } |
| 874 #endif |
| 778 #if defined(HAS_ARGBTOYROW_MSA) | 875 #if defined(HAS_ARGBTOYROW_MSA) |
| 779 if (TestCpuFlag(kCpuHasMSA)) { | 876 if (TestCpuFlag(kCpuHasMSA)) { |
| 780 ARGBToYRow = ARGBToYRow_Any_MSA; | 877 ARGBToYRow = ARGBToYRow_Any_MSA; |
| 781 if (IS_ALIGNED(width, 16)) { | 878 if (IS_ALIGNED(width, 16)) { |
| 782 ARGBToYRow = ARGBToYRow_MSA; | 879 ARGBToYRow = ARGBToYRow_MSA; |
| 783 } | 880 } |
| 784 } | 881 } |
| 785 #endif | 882 #endif |
| 786 | 883 |
| 787 for (y = 0; y < height; ++y) { | 884 for (y = 0; y < height; ++y) { |
| (...skipping 618 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1406 src_argb += src_stride_argb; | 1503 src_argb += src_stride_argb; |
| 1407 dst_yj += dst_stride_yj; | 1504 dst_yj += dst_stride_yj; |
| 1408 } | 1505 } |
| 1409 return 0; | 1506 return 0; |
| 1410 } | 1507 } |
| 1411 | 1508 |
| 1412 #ifdef __cplusplus | 1509 #ifdef __cplusplus |
| 1413 } // extern "C" | 1510 } // extern "C" |
| 1414 } // namespace libyuv | 1511 } // namespace libyuv |
| 1415 #endif | 1512 #endif |
| OLD | NEW |