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

Side by Side Diff: include/libyuv/row.h

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 | « docs/getting_started.md ('k') | source/convert.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 354 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 #define HAS_MIRRORUVROW_DSPR2 365 #define HAS_MIRRORUVROW_DSPR2
366 #define HAS_SPLITUVROW_DSPR2 366 #define HAS_SPLITUVROW_DSPR2
367 #endif 367 #endif
368 #endif 368 #endif
369 369
370 #if !defined(LIBYUV_DISABLE_MSA) && defined(__mips_msa) 370 #if !defined(LIBYUV_DISABLE_MSA) && defined(__mips_msa)
371 #define HAS_MIRRORROW_MSA 371 #define HAS_MIRRORROW_MSA
372 #define HAS_ARGBMIRRORROW_MSA 372 #define HAS_ARGBMIRRORROW_MSA
373 #define HAS_I422TOYUY2ROW_MSA 373 #define HAS_I422TOYUY2ROW_MSA
374 #define HAS_I422TOUYVYROW_MSA 374 #define HAS_I422TOUYVYROW_MSA
375 #define HAS_YUY2TOYROW_MSA
376 #define HAS_YUY2TOUVROW_MSA
377 #define HAS_YUY2TOUV422ROW_MSA
378 #define HAS_UYVYTOYROW_MSA
379 #define HAS_UYVYTOUVROW_MSA
380
375 #endif 381 #endif
376 382
377 #if defined(_MSC_VER) && !defined(__CLR_VER) && !defined(__clang__) 383 #if defined(_MSC_VER) && !defined(__CLR_VER) && !defined(__clang__)
378 #if defined(VISUALC_HAS_AVX2) 384 #if defined(VISUALC_HAS_AVX2)
379 #define SIMD_ALIGNED(var) __declspec(align(32)) var 385 #define SIMD_ALIGNED(var) __declspec(align(32)) var
380 #else 386 #else
381 #define SIMD_ALIGNED(var) __declspec(align(16)) var 387 #define SIMD_ALIGNED(var) __declspec(align(16)) var
382 #endif 388 #endif
383 typedef __declspec(align(16)) int16 vec16[8]; 389 typedef __declspec(align(16)) int16 vec16[8];
384 typedef __declspec(align(16)) int32 vec32[4]; 390 typedef __declspec(align(16)) int32 vec32[4];
(...skipping 1277 matching lines...) Expand 10 before | Expand all | Expand 10 after
1662 void YUY2ToYRow_SSE2(const uint8* src_yuy2, uint8* dst_y, int width); 1668 void YUY2ToYRow_SSE2(const uint8* src_yuy2, uint8* dst_y, int width);
1663 void YUY2ToUVRow_SSE2(const uint8* src_yuy2, int stride_yuy2, 1669 void YUY2ToUVRow_SSE2(const uint8* src_yuy2, int stride_yuy2,
1664 uint8* dst_u, uint8* dst_v, int width); 1670 uint8* dst_u, uint8* dst_v, int width);
1665 void YUY2ToUV422Row_SSE2(const uint8* src_yuy2, 1671 void YUY2ToUV422Row_SSE2(const uint8* src_yuy2,
1666 uint8* dst_u, uint8* dst_v, int width); 1672 uint8* dst_u, uint8* dst_v, int width);
1667 void YUY2ToYRow_NEON(const uint8* src_yuy2, uint8* dst_y, int width); 1673 void YUY2ToYRow_NEON(const uint8* src_yuy2, uint8* dst_y, int width);
1668 void YUY2ToUVRow_NEON(const uint8* src_yuy2, int stride_yuy2, 1674 void YUY2ToUVRow_NEON(const uint8* src_yuy2, int stride_yuy2,
1669 uint8* dst_u, uint8* dst_v, int width); 1675 uint8* dst_u, uint8* dst_v, int width);
1670 void YUY2ToUV422Row_NEON(const uint8* src_yuy2, 1676 void YUY2ToUV422Row_NEON(const uint8* src_yuy2,
1671 uint8* dst_u, uint8* dst_v, int width); 1677 uint8* dst_u, uint8* dst_v, int width);
1678 void YUY2ToYRow_MSA(const uint8* src_yuy2, uint8* dst_y, int width);
1679 void YUY2ToUVRow_MSA(const uint8* src_yuy2, int stride_yuy2,
1680 uint8* dst_u, uint8* dst_v, int width);
1681 void YUY2ToUV422Row_MSA(const uint8* src_yuy2,
1682 uint8* dst_u, uint8* dst_v, int width);
1672 void YUY2ToYRow_C(const uint8* src_yuy2, uint8* dst_y, int width); 1683 void YUY2ToYRow_C(const uint8* src_yuy2, uint8* dst_y, int width);
1673 void YUY2ToUVRow_C(const uint8* src_yuy2, int stride_yuy2, 1684 void YUY2ToUVRow_C(const uint8* src_yuy2, int stride_yuy2,
1674 uint8* dst_u, uint8* dst_v, int width); 1685 uint8* dst_u, uint8* dst_v, int width);
1675 void YUY2ToUV422Row_C(const uint8* src_yuy2, 1686 void YUY2ToUV422Row_C(const uint8* src_yuy2,
1676 uint8* dst_u, uint8* dst_v, int width); 1687 uint8* dst_u, uint8* dst_v, int width);
1677 void YUY2ToYRow_Any_AVX2(const uint8* src_yuy2, uint8* dst_y, int width); 1688 void YUY2ToYRow_Any_AVX2(const uint8* src_yuy2, uint8* dst_y, int width);
1678 void YUY2ToUVRow_Any_AVX2(const uint8* src_yuy2, int stride_yuy2, 1689 void YUY2ToUVRow_Any_AVX2(const uint8* src_yuy2, int stride_yuy2,
1679 uint8* dst_u, uint8* dst_v, int width); 1690 uint8* dst_u, uint8* dst_v, int width);
1680 void YUY2ToUV422Row_Any_AVX2(const uint8* src_yuy2, 1691 void YUY2ToUV422Row_Any_AVX2(const uint8* src_yuy2,
1681 uint8* dst_u, uint8* dst_v, int width); 1692 uint8* dst_u, uint8* dst_v, int width);
1682 void YUY2ToYRow_Any_SSE2(const uint8* src_yuy2, uint8* dst_y, int width); 1693 void YUY2ToYRow_Any_SSE2(const uint8* src_yuy2, uint8* dst_y, int width);
1683 void YUY2ToUVRow_Any_SSE2(const uint8* src_yuy2, int stride_yuy2, 1694 void YUY2ToUVRow_Any_SSE2(const uint8* src_yuy2, int stride_yuy2,
1684 uint8* dst_u, uint8* dst_v, int width); 1695 uint8* dst_u, uint8* dst_v, int width);
1685 void YUY2ToUV422Row_Any_SSE2(const uint8* src_yuy2, 1696 void YUY2ToUV422Row_Any_SSE2(const uint8* src_yuy2,
1686 uint8* dst_u, uint8* dst_v, int width); 1697 uint8* dst_u, uint8* dst_v, int width);
1687 void YUY2ToYRow_Any_NEON(const uint8* src_yuy2, uint8* dst_y, int width); 1698 void YUY2ToYRow_Any_NEON(const uint8* src_yuy2, uint8* dst_y, int width);
1688 void YUY2ToUVRow_Any_NEON(const uint8* src_yuy2, int stride_yuy2, 1699 void YUY2ToUVRow_Any_NEON(const uint8* src_yuy2, int stride_yuy2,
1689 uint8* dst_u, uint8* dst_v, int width); 1700 uint8* dst_u, uint8* dst_v, int width);
1690 void YUY2ToUV422Row_Any_NEON(const uint8* src_yuy2, 1701 void YUY2ToUV422Row_Any_NEON(const uint8* src_yuy2,
1691 uint8* dst_u, uint8* dst_v, int width); 1702 uint8* dst_u, uint8* dst_v, int width);
1703 void YUY2ToYRow_Any_MSA(const uint8* src_yuy2, uint8* dst_y, int width);
1704 void YUY2ToUVRow_Any_MSA(const uint8* src_yuy2, int stride_yuy2,
1705 uint8* dst_u, uint8* dst_v, int width);
1706 void YUY2ToUV422Row_Any_MSA(const uint8* src_yuy2,
1707 uint8* dst_u, uint8* dst_v, int width);
1692 void UYVYToYRow_AVX2(const uint8* src_uyvy, uint8* dst_y, int width); 1708 void UYVYToYRow_AVX2(const uint8* src_uyvy, uint8* dst_y, int width);
1693 void UYVYToUVRow_AVX2(const uint8* src_uyvy, int stride_uyvy, 1709 void UYVYToUVRow_AVX2(const uint8* src_uyvy, int stride_uyvy,
1694 uint8* dst_u, uint8* dst_v, int width); 1710 uint8* dst_u, uint8* dst_v, int width);
1695 void UYVYToUV422Row_AVX2(const uint8* src_uyvy, 1711 void UYVYToUV422Row_AVX2(const uint8* src_uyvy,
1696 uint8* dst_u, uint8* dst_v, int width); 1712 uint8* dst_u, uint8* dst_v, int width);
1697 void UYVYToYRow_SSE2(const uint8* src_uyvy, uint8* dst_y, int width); 1713 void UYVYToYRow_SSE2(const uint8* src_uyvy, uint8* dst_y, int width);
1698 void UYVYToUVRow_SSE2(const uint8* src_uyvy, int stride_uyvy, 1714 void UYVYToUVRow_SSE2(const uint8* src_uyvy, int stride_uyvy,
1699 uint8* dst_u, uint8* dst_v, int width); 1715 uint8* dst_u, uint8* dst_v, int width);
1700 void UYVYToUV422Row_SSE2(const uint8* src_uyvy, 1716 void UYVYToUV422Row_SSE2(const uint8* src_uyvy,
1701 uint8* dst_u, uint8* dst_v, int width); 1717 uint8* dst_u, uint8* dst_v, int width);
1702 void UYVYToYRow_AVX2(const uint8* src_uyvy, uint8* dst_y, int width); 1718 void UYVYToYRow_AVX2(const uint8* src_uyvy, uint8* dst_y, int width);
1703 void UYVYToUVRow_AVX2(const uint8* src_uyvy, int stride_uyvy, 1719 void UYVYToUVRow_AVX2(const uint8* src_uyvy, int stride_uyvy,
1704 uint8* dst_u, uint8* dst_v, int width); 1720 uint8* dst_u, uint8* dst_v, int width);
1705 void UYVYToUV422Row_AVX2(const uint8* src_uyvy, 1721 void UYVYToUV422Row_AVX2(const uint8* src_uyvy,
1706 uint8* dst_u, uint8* dst_v, int width); 1722 uint8* dst_u, uint8* dst_v, int width);
1707 void UYVYToYRow_NEON(const uint8* src_uyvy, uint8* dst_y, int width); 1723 void UYVYToYRow_NEON(const uint8* src_uyvy, uint8* dst_y, int width);
1708 void UYVYToUVRow_NEON(const uint8* src_uyvy, int stride_uyvy, 1724 void UYVYToUVRow_NEON(const uint8* src_uyvy, int stride_uyvy,
1709 uint8* dst_u, uint8* dst_v, int width); 1725 uint8* dst_u, uint8* dst_v, int width);
1710 void UYVYToUV422Row_NEON(const uint8* src_uyvy, 1726 void UYVYToUV422Row_NEON(const uint8* src_uyvy,
1711 uint8* dst_u, uint8* dst_v, int width); 1727 uint8* dst_u, uint8* dst_v, int width);
1728 void UYVYToYRow_MSA(const uint8* src_uyvy, uint8* dst_y, int width);
1729 void UYVYToUVRow_MSA(const uint8* src_uyvy, int stride_uyvy,
1730 uint8* dst_u, uint8* dst_v, int width);
1731 void UYVYToUV422Row_MSA(const uint8* src_uyvy,
1732 uint8* dst_u, uint8* dst_v, int width);
1712 1733
1713 void UYVYToYRow_C(const uint8* src_uyvy, uint8* dst_y, int width); 1734 void UYVYToYRow_C(const uint8* src_uyvy, uint8* dst_y, int width);
1714 void UYVYToUVRow_C(const uint8* src_uyvy, int stride_uyvy, 1735 void UYVYToUVRow_C(const uint8* src_uyvy, int stride_uyvy,
1715 uint8* dst_u, uint8* dst_v, int width); 1736 uint8* dst_u, uint8* dst_v, int width);
1716 void UYVYToUV422Row_C(const uint8* src_uyvy, 1737 void UYVYToUV422Row_C(const uint8* src_uyvy,
1717 uint8* dst_u, uint8* dst_v, int width); 1738 uint8* dst_u, uint8* dst_v, int width);
1718 void UYVYToYRow_Any_AVX2(const uint8* src_uyvy, uint8* dst_y, int width); 1739 void UYVYToYRow_Any_AVX2(const uint8* src_uyvy, uint8* dst_y, int width);
1719 void UYVYToUVRow_Any_AVX2(const uint8* src_uyvy, int stride_uyvy, 1740 void UYVYToUVRow_Any_AVX2(const uint8* src_uyvy, int stride_uyvy,
1720 uint8* dst_u, uint8* dst_v, int width); 1741 uint8* dst_u, uint8* dst_v, int width);
1721 void UYVYToUV422Row_Any_AVX2(const uint8* src_uyvy, 1742 void UYVYToUV422Row_Any_AVX2(const uint8* src_uyvy,
1722 uint8* dst_u, uint8* dst_v, int width); 1743 uint8* dst_u, uint8* dst_v, int width);
1723 void UYVYToYRow_Any_SSE2(const uint8* src_uyvy, uint8* dst_y, int width); 1744 void UYVYToYRow_Any_SSE2(const uint8* src_uyvy, uint8* dst_y, int width);
1724 void UYVYToUVRow_Any_SSE2(const uint8* src_uyvy, int stride_uyvy, 1745 void UYVYToUVRow_Any_SSE2(const uint8* src_uyvy, int stride_uyvy,
1725 uint8* dst_u, uint8* dst_v, int width); 1746 uint8* dst_u, uint8* dst_v, int width);
1726 void UYVYToUV422Row_Any_SSE2(const uint8* src_uyvy, 1747 void UYVYToUV422Row_Any_SSE2(const uint8* src_uyvy,
1727 uint8* dst_u, uint8* dst_v, int width); 1748 uint8* dst_u, uint8* dst_v, int width);
1728 void UYVYToYRow_Any_NEON(const uint8* src_uyvy, uint8* dst_y, int width); 1749 void UYVYToYRow_Any_NEON(const uint8* src_uyvy, uint8* dst_y, int width);
1729 void UYVYToUVRow_Any_NEON(const uint8* src_uyvy, int stride_uyvy, 1750 void UYVYToUVRow_Any_NEON(const uint8* src_uyvy, int stride_uyvy,
1730 uint8* dst_u, uint8* dst_v, int width); 1751 uint8* dst_u, uint8* dst_v, int width);
1731 void UYVYToUV422Row_Any_NEON(const uint8* src_uyvy, 1752 void UYVYToUV422Row_Any_NEON(const uint8* src_uyvy,
1732 uint8* dst_u, uint8* dst_v, int width); 1753 uint8* dst_u, uint8* dst_v, int width);
1754 void UYVYToYRow_Any_MSA(const uint8* src_uyvy, uint8* dst_y, int width);
1755 void UYVYToUVRow_Any_MSA(const uint8* src_uyvy, int stride_uyvy,
1756 uint8* dst_u, uint8* dst_v, int width);
1757 void UYVYToUV422Row_Any_MSA(const uint8* src_uyvy,
1758 uint8* dst_u, uint8* dst_v, int width);
1733 1759
1734 void I422ToYUY2Row_C(const uint8* src_y, 1760 void I422ToYUY2Row_C(const uint8* src_y,
1735 const uint8* src_u, 1761 const uint8* src_u,
1736 const uint8* src_v, 1762 const uint8* src_v,
1737 uint8* dst_yuy2, int width); 1763 uint8* dst_yuy2, int width);
1738 void I422ToUYVYRow_C(const uint8* src_y, 1764 void I422ToUYVYRow_C(const uint8* src_y,
1739 const uint8* src_u, 1765 const uint8* src_u,
1740 const uint8* src_v, 1766 const uint8* src_v,
1741 uint8* dst_uyvy, int width); 1767 uint8* dst_uyvy, int width);
1742 void I422ToYUY2Row_SSE2(const uint8* src_y, 1768 void I422ToYUY2Row_SSE2(const uint8* src_y,
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
1966 void ARGBLumaColorTableRow_SSSE3(const uint8* src_argb, uint8* dst_argb, 1992 void ARGBLumaColorTableRow_SSSE3(const uint8* src_argb, uint8* dst_argb,
1967 int width, 1993 int width,
1968 const uint8* luma, uint32 lumacoeff); 1994 const uint8* luma, uint32 lumacoeff);
1969 1995
1970 #ifdef __cplusplus 1996 #ifdef __cplusplus
1971 } // extern "C" 1997 } // extern "C"
1972 } // namespace libyuv 1998 } // namespace libyuv
1973 #endif 1999 #endif
1974 2000
1975 #endif // INCLUDE_LIBYUV_ROW_H_ 2001 #endif // INCLUDE_LIBYUV_ROW_H_
OLDNEW
« no previous file with comments | « docs/getting_started.md ('k') | source/convert.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698