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 |