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

Side by Side Diff: source/convert_from_argb.cc

Issue 2641153003: Add MSA optimized ARGB/ABGR/BGRA/RGBA To Y/UV row functions (Closed)
Patch Set: Fixed loop increments Created 3 years, 11 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
OLDNEW
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 1334 matching lines...) Expand 10 before | Expand all | Expand 10 after
1345 } 1345 }
1346 #endif 1346 #endif
1347 #if defined(HAS_ARGBTOUVJROW_NEON) 1347 #if defined(HAS_ARGBTOUVJROW_NEON)
1348 if (TestCpuFlag(kCpuHasNEON)) { 1348 if (TestCpuFlag(kCpuHasNEON)) {
1349 ARGBToUVJRow = ARGBToUVJRow_Any_NEON; 1349 ARGBToUVJRow = ARGBToUVJRow_Any_NEON;
1350 if (IS_ALIGNED(width, 16)) { 1350 if (IS_ALIGNED(width, 16)) {
1351 ARGBToUVJRow = ARGBToUVJRow_NEON; 1351 ARGBToUVJRow = ARGBToUVJRow_NEON;
1352 } 1352 }
1353 } 1353 }
1354 #endif 1354 #endif
1355 #if defined(HAS_ARGBTOYJROW_MSA)
1356 if (TestCpuFlag(kCpuHasMSA)) {
1357 ARGBToYJRow = ARGBToYJRow_Any_MSA;
1358 if (IS_ALIGNED(width, 16)) {
1359 ARGBToYJRow = ARGBToYJRow_MSA;
1360 }
1361 }
1362 #endif
1363 #if defined(HAS_ARGBTOUVJROW_MSA)
1364 if (TestCpuFlag(kCpuHasMSA)) {
1365 ARGBToUVJRow = ARGBToUVJRow_Any_MSA;
1366 if (IS_ALIGNED(width, 32)) {
1367 ARGBToUVJRow = ARGBToUVJRow_MSA;
1368 }
1369 }
1370 #endif
1355 1371
1356 for (y = 0; y < height - 1; y += 2) { 1372 for (y = 0; y < height - 1; y += 2) {
1357 ARGBToUVJRow(src_argb, src_stride_argb, dst_u, dst_v, width); 1373 ARGBToUVJRow(src_argb, src_stride_argb, dst_u, dst_v, width);
1358 ARGBToYJRow(src_argb, dst_yj, width); 1374 ARGBToYJRow(src_argb, dst_yj, width);
1359 ARGBToYJRow(src_argb + src_stride_argb, dst_yj + dst_stride_yj, width); 1375 ARGBToYJRow(src_argb + src_stride_argb, dst_yj + dst_stride_yj, width);
1360 src_argb += src_stride_argb * 2; 1376 src_argb += src_stride_argb * 2;
1361 dst_yj += dst_stride_yj * 2; 1377 dst_yj += dst_stride_yj * 2;
1362 dst_u += dst_stride_u; 1378 dst_u += dst_stride_u;
1363 dst_v += dst_stride_v; 1379 dst_v += dst_stride_v;
1364 } 1380 }
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
1429 } 1445 }
1430 #endif 1446 #endif
1431 #if defined(HAS_ARGBTOUVJROW_NEON) 1447 #if defined(HAS_ARGBTOUVJROW_NEON)
1432 if (TestCpuFlag(kCpuHasNEON)) { 1448 if (TestCpuFlag(kCpuHasNEON)) {
1433 ARGBToUVJRow = ARGBToUVJRow_Any_NEON; 1449 ARGBToUVJRow = ARGBToUVJRow_Any_NEON;
1434 if (IS_ALIGNED(width, 16)) { 1450 if (IS_ALIGNED(width, 16)) {
1435 ARGBToUVJRow = ARGBToUVJRow_NEON; 1451 ARGBToUVJRow = ARGBToUVJRow_NEON;
1436 } 1452 }
1437 } 1453 }
1438 #endif 1454 #endif
1455 #if defined(HAS_ARGBTOYJROW_MSA)
1456 if (TestCpuFlag(kCpuHasMSA)) {
1457 ARGBToYJRow = ARGBToYJRow_Any_MSA;
1458 if (IS_ALIGNED(width, 16)) {
1459 ARGBToYJRow = ARGBToYJRow_MSA;
1460 }
1461 }
1462 #endif
1463 #if defined(HAS_ARGBTOUVJROW_MSA)
1464 if (TestCpuFlag(kCpuHasMSA)) {
1465 ARGBToUVJRow = ARGBToUVJRow_Any_MSA;
1466 if (IS_ALIGNED(width, 32)) {
1467 ARGBToUVJRow = ARGBToUVJRow_MSA;
1468 }
1469 }
1470 #endif
1439 1471
1440 for (y = 0; y < height; ++y) { 1472 for (y = 0; y < height; ++y) {
1441 ARGBToUVJRow(src_argb, 0, dst_u, dst_v, width); 1473 ARGBToUVJRow(src_argb, 0, dst_u, dst_v, width);
1442 ARGBToYJRow(src_argb, dst_yj, width); 1474 ARGBToYJRow(src_argb, dst_yj, width);
1443 src_argb += src_stride_argb; 1475 src_argb += src_stride_argb;
1444 dst_yj += dst_stride_yj; 1476 dst_yj += dst_stride_yj;
1445 dst_u += dst_stride_u; 1477 dst_u += dst_stride_u;
1446 dst_v += dst_stride_v; 1478 dst_v += dst_stride_v;
1447 } 1479 }
1448 return 0; 1480 return 0;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1490 } 1522 }
1491 #endif 1523 #endif
1492 #if defined(HAS_ARGBTOYJROW_NEON) 1524 #if defined(HAS_ARGBTOYJROW_NEON)
1493 if (TestCpuFlag(kCpuHasNEON)) { 1525 if (TestCpuFlag(kCpuHasNEON)) {
1494 ARGBToYJRow = ARGBToYJRow_Any_NEON; 1526 ARGBToYJRow = ARGBToYJRow_Any_NEON;
1495 if (IS_ALIGNED(width, 8)) { 1527 if (IS_ALIGNED(width, 8)) {
1496 ARGBToYJRow = ARGBToYJRow_NEON; 1528 ARGBToYJRow = ARGBToYJRow_NEON;
1497 } 1529 }
1498 } 1530 }
1499 #endif 1531 #endif
1532 #if defined(HAS_ARGBTOYJROW_MSA)
1533 if (TestCpuFlag(kCpuHasMSA)) {
1534 ARGBToYJRow = ARGBToYJRow_Any_MSA;
1535 if (IS_ALIGNED(width, 16)) {
1536 ARGBToYJRow = ARGBToYJRow_MSA;
1537 }
1538 }
1539 #endif
1500 1540
1501 for (y = 0; y < height; ++y) { 1541 for (y = 0; y < height; ++y) {
1502 ARGBToYJRow(src_argb, dst_yj, width); 1542 ARGBToYJRow(src_argb, dst_yj, width);
1503 src_argb += src_stride_argb; 1543 src_argb += src_stride_argb;
1504 dst_yj += dst_stride_yj; 1544 dst_yj += dst_stride_yj;
1505 } 1545 }
1506 return 0; 1546 return 0;
1507 } 1547 }
1508 1548
1509 #ifdef __cplusplus 1549 #ifdef __cplusplus
1510 } // extern "C" 1550 } // extern "C"
1511 } // namespace libyuv 1551 } // namespace libyuv
1512 #endif 1552 #endif
OLDNEW
« no previous file with comments | « source/convert.cc ('k') | source/planar_functions.cc » ('j') | source/row_msa.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698