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 1334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |