Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(607)

Side by Side Diff: source/convert.cc

Issue 2397693002: Add MSA optimized YUY2ToI422, YUY2ToI420, UYVYToI422, UYVYToI420 functions (Closed)
Patch Set: Updates as per review comments Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « include/libyuv/row.h ('k') | source/planar_functions.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « include/libyuv/row.h ('k') | source/planar_functions.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698