| 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 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 } | 82 } |
| 83 #endif | 83 #endif |
| 84 #if defined(HAS_ARGBTOYROW_NEON) | 84 #if defined(HAS_ARGBTOYROW_NEON) |
| 85 if (TestCpuFlag(kCpuHasNEON)) { | 85 if (TestCpuFlag(kCpuHasNEON)) { |
| 86 ARGBToYRow = ARGBToYRow_Any_NEON; | 86 ARGBToYRow = ARGBToYRow_Any_NEON; |
| 87 if (IS_ALIGNED(width, 8)) { | 87 if (IS_ALIGNED(width, 8)) { |
| 88 ARGBToYRow = ARGBToYRow_NEON; | 88 ARGBToYRow = ARGBToYRow_NEON; |
| 89 } | 89 } |
| 90 } | 90 } |
| 91 #endif | 91 #endif |
| 92 #if defined(HAS_ARGBTOYROW_MSA) |
| 93 if (TestCpuFlag(kCpuHasMSA)) { |
| 94 ARGBToYRow = ARGBToYRow_Any_MSA; |
| 95 if (IS_ALIGNED(width, 16)) { |
| 96 ARGBToYRow = ARGBToYRow_MSA; |
| 97 } |
| 98 } |
| 99 #endif |
| 92 | 100 |
| 93 for (y = 0; y < height; ++y) { | 101 for (y = 0; y < height; ++y) { |
| 94 ARGBToUV444Row(src_argb, dst_u, dst_v, width); | 102 ARGBToUV444Row(src_argb, dst_u, dst_v, width); |
| 95 ARGBToYRow(src_argb, dst_y, width); | 103 ARGBToYRow(src_argb, dst_y, width); |
| 96 src_argb += src_stride_argb; | 104 src_argb += src_stride_argb; |
| 97 dst_y += dst_stride_y; | 105 dst_y += dst_stride_y; |
| 98 dst_u += dst_stride_u; | 106 dst_u += dst_stride_u; |
| 99 dst_v += dst_stride_v; | 107 dst_v += dst_stride_v; |
| 100 } | 108 } |
| 101 return 0; | 109 return 0; |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 162 } | 170 } |
| 163 #endif | 171 #endif |
| 164 #if defined(HAS_ARGBTOUVROW_NEON) | 172 #if defined(HAS_ARGBTOUVROW_NEON) |
| 165 if (TestCpuFlag(kCpuHasNEON)) { | 173 if (TestCpuFlag(kCpuHasNEON)) { |
| 166 ARGBToUVRow = ARGBToUVRow_Any_NEON; | 174 ARGBToUVRow = ARGBToUVRow_Any_NEON; |
| 167 if (IS_ALIGNED(width, 16)) { | 175 if (IS_ALIGNED(width, 16)) { |
| 168 ARGBToUVRow = ARGBToUVRow_NEON; | 176 ARGBToUVRow = ARGBToUVRow_NEON; |
| 169 } | 177 } |
| 170 } | 178 } |
| 171 #endif | 179 #endif |
| 180 #if defined(HAS_ARGBTOYROW_MSA) |
| 181 if (TestCpuFlag(kCpuHasMSA)) { |
| 182 ARGBToYRow = ARGBToYRow_Any_MSA; |
| 183 if (IS_ALIGNED(width, 16)) { |
| 184 ARGBToYRow = ARGBToYRow_MSA; |
| 185 } |
| 186 } |
| 187 #endif |
| 188 #if defined(HAS_ARGBTOUVROW_MSA) |
| 189 if (TestCpuFlag(kCpuHasMSA)) { |
| 190 ARGBToUVRow = ARGBToUVRow_Any_MSA; |
| 191 if (IS_ALIGNED(width, 32)) { |
| 192 ARGBToUVRow = ARGBToUVRow_MSA; |
| 193 } |
| 194 } |
| 195 #endif |
| 172 | 196 |
| 173 for (y = 0; y < height; ++y) { | 197 for (y = 0; y < height; ++y) { |
| 174 ARGBToUVRow(src_argb, 0, dst_u, dst_v, width); | 198 ARGBToUVRow(src_argb, 0, dst_u, dst_v, width); |
| 175 ARGBToYRow(src_argb, dst_y, width); | 199 ARGBToYRow(src_argb, dst_y, width); |
| 176 src_argb += src_stride_argb; | 200 src_argb += src_stride_argb; |
| 177 dst_y += dst_stride_y; | 201 dst_y += dst_stride_y; |
| 178 dst_u += dst_stride_u; | 202 dst_u += dst_stride_u; |
| 179 dst_v += dst_stride_v; | 203 dst_v += dst_stride_v; |
| 180 } | 204 } |
| 181 return 0; | 205 return 0; |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 } | 258 } |
| 235 #endif | 259 #endif |
| 236 #if defined(HAS_ARGBTOUVROW_NEON) | 260 #if defined(HAS_ARGBTOUVROW_NEON) |
| 237 if (TestCpuFlag(kCpuHasNEON)) { | 261 if (TestCpuFlag(kCpuHasNEON)) { |
| 238 ARGBToUVRow = ARGBToUVRow_Any_NEON; | 262 ARGBToUVRow = ARGBToUVRow_Any_NEON; |
| 239 if (IS_ALIGNED(width, 16)) { | 263 if (IS_ALIGNED(width, 16)) { |
| 240 ARGBToUVRow = ARGBToUVRow_NEON; | 264 ARGBToUVRow = ARGBToUVRow_NEON; |
| 241 } | 265 } |
| 242 } | 266 } |
| 243 #endif | 267 #endif |
| 268 #if defined(HAS_ARGBTOYROW_MSA) |
| 269 if (TestCpuFlag(kCpuHasMSA)) { |
| 270 ARGBToYRow = ARGBToYRow_Any_MSA; |
| 271 if (IS_ALIGNED(width, 16)) { |
| 272 ARGBToYRow = ARGBToYRow_MSA; |
| 273 } |
| 274 } |
| 275 #endif |
| 276 #if defined(HAS_ARGBTOUVROW_MSA) |
| 277 if (TestCpuFlag(kCpuHasMSA)) { |
| 278 ARGBToUVRow = ARGBToUVRow_Any_MSA; |
| 279 if (IS_ALIGNED(width, 32)) { |
| 280 ARGBToUVRow = ARGBToUVRow_MSA; |
| 281 } |
| 282 } |
| 283 #endif |
| 244 #if defined(HAS_MERGEUVROW_SSE2) | 284 #if defined(HAS_MERGEUVROW_SSE2) |
| 245 if (TestCpuFlag(kCpuHasSSE2)) { | 285 if (TestCpuFlag(kCpuHasSSE2)) { |
| 246 MergeUVRow_ = MergeUVRow_Any_SSE2; | 286 MergeUVRow_ = MergeUVRow_Any_SSE2; |
| 247 if (IS_ALIGNED(halfwidth, 16)) { | 287 if (IS_ALIGNED(halfwidth, 16)) { |
| 248 MergeUVRow_ = MergeUVRow_SSE2; | 288 MergeUVRow_ = MergeUVRow_SSE2; |
| 249 } | 289 } |
| 250 } | 290 } |
| 251 #endif | 291 #endif |
| 252 #if defined(HAS_MERGEUVROW_AVX2) | 292 #if defined(HAS_MERGEUVROW_AVX2) |
| 253 if (TestCpuFlag(kCpuHasAVX2)) { | 293 if (TestCpuFlag(kCpuHasAVX2)) { |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 343 } | 383 } |
| 344 #endif | 384 #endif |
| 345 #if defined(HAS_ARGBTOUVROW_NEON) | 385 #if defined(HAS_ARGBTOUVROW_NEON) |
| 346 if (TestCpuFlag(kCpuHasNEON)) { | 386 if (TestCpuFlag(kCpuHasNEON)) { |
| 347 ARGBToUVRow = ARGBToUVRow_Any_NEON; | 387 ARGBToUVRow = ARGBToUVRow_Any_NEON; |
| 348 if (IS_ALIGNED(width, 16)) { | 388 if (IS_ALIGNED(width, 16)) { |
| 349 ARGBToUVRow = ARGBToUVRow_NEON; | 389 ARGBToUVRow = ARGBToUVRow_NEON; |
| 350 } | 390 } |
| 351 } | 391 } |
| 352 #endif | 392 #endif |
| 393 #if defined(HAS_ARGBTOYROW_MSA) |
| 394 if (TestCpuFlag(kCpuHasMSA)) { |
| 395 ARGBToYRow = ARGBToYRow_Any_MSA; |
| 396 if (IS_ALIGNED(width, 16)) { |
| 397 ARGBToYRow = ARGBToYRow_MSA; |
| 398 } |
| 399 } |
| 400 #endif |
| 401 #if defined(HAS_ARGBTOUVROW_MSA) |
| 402 if (TestCpuFlag(kCpuHasMSA)) { |
| 403 ARGBToUVRow = ARGBToUVRow_Any_MSA; |
| 404 if (IS_ALIGNED(width, 32)) { |
| 405 ARGBToUVRow = ARGBToUVRow_MSA; |
| 406 } |
| 407 } |
| 408 #endif |
| 353 #if defined(HAS_MERGEUVROW_SSE2) | 409 #if defined(HAS_MERGEUVROW_SSE2) |
| 354 if (TestCpuFlag(kCpuHasSSE2)) { | 410 if (TestCpuFlag(kCpuHasSSE2)) { |
| 355 MergeUVRow_ = MergeUVRow_Any_SSE2; | 411 MergeUVRow_ = MergeUVRow_Any_SSE2; |
| 356 if (IS_ALIGNED(halfwidth, 16)) { | 412 if (IS_ALIGNED(halfwidth, 16)) { |
| 357 MergeUVRow_ = MergeUVRow_SSE2; | 413 MergeUVRow_ = MergeUVRow_SSE2; |
| 358 } | 414 } |
| 359 } | 415 } |
| 360 #endif | 416 #endif |
| 361 #if defined(HAS_MERGEUVROW_AVX2) | 417 #if defined(HAS_MERGEUVROW_AVX2) |
| 362 if (TestCpuFlag(kCpuHasAVX2)) { | 418 if (TestCpuFlag(kCpuHasAVX2)) { |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 457 } | 513 } |
| 458 #endif | 514 #endif |
| 459 #if defined(HAS_ARGBTOUVROW_NEON) | 515 #if defined(HAS_ARGBTOUVROW_NEON) |
| 460 if (TestCpuFlag(kCpuHasNEON)) { | 516 if (TestCpuFlag(kCpuHasNEON)) { |
| 461 ARGBToUVRow = ARGBToUVRow_Any_NEON; | 517 ARGBToUVRow = ARGBToUVRow_Any_NEON; |
| 462 if (IS_ALIGNED(width, 16)) { | 518 if (IS_ALIGNED(width, 16)) { |
| 463 ARGBToUVRow = ARGBToUVRow_NEON; | 519 ARGBToUVRow = ARGBToUVRow_NEON; |
| 464 } | 520 } |
| 465 } | 521 } |
| 466 #endif | 522 #endif |
| 523 #if defined(HAS_ARGBTOYROW_MSA) |
| 524 if (TestCpuFlag(kCpuHasMSA)) { |
| 525 ARGBToYRow = ARGBToYRow_Any_MSA; |
| 526 if (IS_ALIGNED(width, 16)) { |
| 527 ARGBToYRow = ARGBToYRow_MSA; |
| 528 } |
| 529 } |
| 530 #endif |
| 531 #if defined(HAS_ARGBTOUVROW_MSA) |
| 532 if (TestCpuFlag(kCpuHasMSA)) { |
| 533 ARGBToUVRow = ARGBToUVRow_Any_MSA; |
| 534 if (IS_ALIGNED(width, 32)) { |
| 535 ARGBToUVRow = ARGBToUVRow_MSA; |
| 536 } |
| 537 } |
| 538 #endif |
| 467 #if defined(HAS_I422TOYUY2ROW_SSE2) | 539 #if defined(HAS_I422TOYUY2ROW_SSE2) |
| 468 if (TestCpuFlag(kCpuHasSSE2)) { | 540 if (TestCpuFlag(kCpuHasSSE2)) { |
| 469 I422ToYUY2Row = I422ToYUY2Row_Any_SSE2; | 541 I422ToYUY2Row = I422ToYUY2Row_Any_SSE2; |
| 470 if (IS_ALIGNED(width, 16)) { | 542 if (IS_ALIGNED(width, 16)) { |
| 471 I422ToYUY2Row = I422ToYUY2Row_SSE2; | 543 I422ToYUY2Row = I422ToYUY2Row_SSE2; |
| 472 } | 544 } |
| 473 } | 545 } |
| 474 #endif | 546 #endif |
| 475 #if defined(HAS_I422TOYUY2ROW_NEON) | 547 #if defined(HAS_I422TOYUY2ROW_NEON) |
| 476 if (TestCpuFlag(kCpuHasNEON)) { | 548 if (TestCpuFlag(kCpuHasNEON)) { |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 567 } | 639 } |
| 568 #endif | 640 #endif |
| 569 #if defined(HAS_ARGBTOUVROW_NEON) | 641 #if defined(HAS_ARGBTOUVROW_NEON) |
| 570 if (TestCpuFlag(kCpuHasNEON)) { | 642 if (TestCpuFlag(kCpuHasNEON)) { |
| 571 ARGBToUVRow = ARGBToUVRow_Any_NEON; | 643 ARGBToUVRow = ARGBToUVRow_Any_NEON; |
| 572 if (IS_ALIGNED(width, 16)) { | 644 if (IS_ALIGNED(width, 16)) { |
| 573 ARGBToUVRow = ARGBToUVRow_NEON; | 645 ARGBToUVRow = ARGBToUVRow_NEON; |
| 574 } | 646 } |
| 575 } | 647 } |
| 576 #endif | 648 #endif |
| 649 #if defined(HAS_ARGBTOYROW_MSA) |
| 650 if (TestCpuFlag(kCpuHasMSA)) { |
| 651 ARGBToYRow = ARGBToYRow_Any_MSA; |
| 652 if (IS_ALIGNED(width, 16)) { |
| 653 ARGBToYRow = ARGBToYRow_MSA; |
| 654 } |
| 655 } |
| 656 #endif |
| 657 #if defined(HAS_ARGBTOUVROW_MSA) |
| 658 if (TestCpuFlag(kCpuHasMSA)) { |
| 659 ARGBToUVRow = ARGBToUVRow_Any_MSA; |
| 660 if (IS_ALIGNED(width, 32)) { |
| 661 ARGBToUVRow = ARGBToUVRow_MSA; |
| 662 } |
| 663 } |
| 664 #endif |
| 577 #if defined(HAS_I422TOUYVYROW_SSE2) | 665 #if defined(HAS_I422TOUYVYROW_SSE2) |
| 578 if (TestCpuFlag(kCpuHasSSE2)) { | 666 if (TestCpuFlag(kCpuHasSSE2)) { |
| 579 I422ToUYVYRow = I422ToUYVYRow_Any_SSE2; | 667 I422ToUYVYRow = I422ToUYVYRow_Any_SSE2; |
| 580 if (IS_ALIGNED(width, 16)) { | 668 if (IS_ALIGNED(width, 16)) { |
| 581 I422ToUYVYRow = I422ToUYVYRow_SSE2; | 669 I422ToUYVYRow = I422ToUYVYRow_SSE2; |
| 582 } | 670 } |
| 583 } | 671 } |
| 584 #endif | 672 #endif |
| 585 #if defined(HAS_I422TOUYVYROW_NEON) | 673 #if defined(HAS_I422TOUYVYROW_NEON) |
| 586 if (TestCpuFlag(kCpuHasNEON)) { | 674 if (TestCpuFlag(kCpuHasNEON)) { |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 658 } | 746 } |
| 659 #endif | 747 #endif |
| 660 #if defined(HAS_ARGBTOYROW_NEON) | 748 #if defined(HAS_ARGBTOYROW_NEON) |
| 661 if (TestCpuFlag(kCpuHasNEON)) { | 749 if (TestCpuFlag(kCpuHasNEON)) { |
| 662 ARGBToYRow = ARGBToYRow_Any_NEON; | 750 ARGBToYRow = ARGBToYRow_Any_NEON; |
| 663 if (IS_ALIGNED(width, 8)) { | 751 if (IS_ALIGNED(width, 8)) { |
| 664 ARGBToYRow = ARGBToYRow_NEON; | 752 ARGBToYRow = ARGBToYRow_NEON; |
| 665 } | 753 } |
| 666 } | 754 } |
| 667 #endif | 755 #endif |
| 756 #if defined(HAS_ARGBTOYROW_MSA) |
| 757 if (TestCpuFlag(kCpuHasMSA)) { |
| 758 ARGBToYRow = ARGBToYRow_Any_MSA; |
| 759 if (IS_ALIGNED(width, 16)) { |
| 760 ARGBToYRow = ARGBToYRow_MSA; |
| 761 } |
| 762 } |
| 763 #endif |
| 668 | 764 |
| 669 for (y = 0; y < height; ++y) { | 765 for (y = 0; y < height; ++y) { |
| 670 ARGBToYRow(src_argb, dst_y, width); | 766 ARGBToYRow(src_argb, dst_y, width); |
| 671 src_argb += src_stride_argb; | 767 src_argb += src_stride_argb; |
| 672 dst_y += dst_stride_y; | 768 dst_y += dst_stride_y; |
| 673 } | 769 } |
| 674 return 0; | 770 return 0; |
| 675 } | 771 } |
| 676 | 772 |
| 677 // Shuffle table for converting ARGB to RGBA. | 773 // Shuffle table for converting ARGB to RGBA. |
| (...skipping 542 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1220 src_argb += src_stride_argb; | 1316 src_argb += src_stride_argb; |
| 1221 dst_yj += dst_stride_yj; | 1317 dst_yj += dst_stride_yj; |
| 1222 } | 1318 } |
| 1223 return 0; | 1319 return 0; |
| 1224 } | 1320 } |
| 1225 | 1321 |
| 1226 #ifdef __cplusplus | 1322 #ifdef __cplusplus |
| 1227 } // extern "C" | 1323 } // extern "C" |
| 1228 } // namespace libyuv | 1324 } // namespace libyuv |
| 1229 #endif | 1325 #endif |
| OLD | NEW |