| OLD | NEW |
| 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 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 #define HAS_RGBCOLORTABLEROW_X86 | 167 #define HAS_RGBCOLORTABLEROW_X86 |
| 168 #define HAS_SOBELROW_SSE2 | 168 #define HAS_SOBELROW_SSE2 |
| 169 #define HAS_SOBELTOPLANEROW_SSE2 | 169 #define HAS_SOBELTOPLANEROW_SSE2 |
| 170 #define HAS_SOBELXROW_SSE2 | 170 #define HAS_SOBELXROW_SSE2 |
| 171 #define HAS_SOBELXYROW_SSE2 | 171 #define HAS_SOBELXYROW_SSE2 |
| 172 #define HAS_SOBELYROW_SSE2 | 172 #define HAS_SOBELYROW_SSE2 |
| 173 | 173 |
| 174 // The following functions fail on gcc/clang 32 bit with fpic and framepointer. | 174 // The following functions fail on gcc/clang 32 bit with fpic and framepointer. |
| 175 // caveat: clangcl uses row_win.cc which works. | 175 // caveat: clangcl uses row_win.cc which works. |
| 176 #if defined(NDEBUG) || !(defined(_DEBUG) && defined(__i386__)) || \ | 176 #if defined(NDEBUG) || !(defined(_DEBUG) && defined(__i386__)) || \ |
| 177 !defined(__i386__) || defined(_MSC_VER) | 177 !defined(__i386__) || defined(_MSC_VER) |
| 178 // TODO(fbarchard): fix build error on x86 debug | 178 // TODO(fbarchard): fix build error on x86 debug |
| 179 // https://code.google.com/p/libyuv/issues/detail?id=524 | 179 // https://code.google.com/p/libyuv/issues/detail?id=524 |
| 180 #define HAS_I411TOARGBROW_SSSE3 | 180 #define HAS_I411TOARGBROW_SSSE3 |
| 181 // TODO(fbarchard): fix build error on android_full_debug=1 | 181 // TODO(fbarchard): fix build error on android_full_debug=1 |
| 182 // https://code.google.com/p/libyuv/issues/detail?id=517 | 182 // https://code.google.com/p/libyuv/issues/detail?id=517 |
| 183 #define HAS_I422ALPHATOARGBROW_SSSE3 | 183 #define HAS_I422ALPHATOARGBROW_SSSE3 |
| 184 #endif | 184 #endif |
| 185 #endif | 185 #endif |
| 186 | 186 |
| 187 // The following are available on all x86 platforms, but | 187 // The following are available on all x86 platforms, but |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 348 #define HAS_SOBELXROW_NEON | 348 #define HAS_SOBELXROW_NEON |
| 349 #define HAS_SOBELXYROW_NEON | 349 #define HAS_SOBELXYROW_NEON |
| 350 #define HAS_SOBELYROW_NEON | 350 #define HAS_SOBELYROW_NEON |
| 351 #endif | 351 #endif |
| 352 | 352 |
| 353 // The following are available on Mips platforms: | 353 // The following are available on Mips platforms: |
| 354 #if !defined(LIBYUV_DISABLE_MIPS) && defined(__mips__) && \ | 354 #if !defined(LIBYUV_DISABLE_MIPS) && defined(__mips__) && \ |
| 355 (_MIPS_SIM == _MIPS_SIM_ABI32) && (__mips_isa_rev < 6) | 355 (_MIPS_SIM == _MIPS_SIM_ABI32) && (__mips_isa_rev < 6) |
| 356 #define HAS_COPYROW_MIPS | 356 #define HAS_COPYROW_MIPS |
| 357 #if defined(__mips_dsp) && (__mips_dsp_rev >= 2) | 357 #if defined(__mips_dsp) && (__mips_dsp_rev >= 2) |
| 358 #define HAS_I422TOARGBROW_MIPS_DSPR2 | 358 #define HAS_I422TOARGBROW_DSPR2 |
| 359 #define HAS_INTERPOLATEROW_MIPS_DSPR2 | 359 #define HAS_INTERPOLATEROW_DSPR2 |
| 360 #define HAS_MIRRORROW_MIPS_DSPR2 | 360 #define HAS_MIRRORROW_DSPR2 |
| 361 #define HAS_MIRRORUVROW_MIPS_DSPR2 | 361 #define HAS_MIRRORUVROW_DSPR2 |
| 362 #define HAS_SPLITUVROW_MIPS_DSPR2 | 362 #define HAS_SPLITUVROW_DSPR2 |
| 363 #endif | 363 #endif |
| 364 #endif | 364 #endif |
| 365 | 365 |
| 366 #if defined(_MSC_VER) && !defined(__CLR_VER) | 366 #if defined(_MSC_VER) && !defined(__CLR_VER) |
| 367 #define SIMD_ALIGNED(var) __declspec(align(16)) var | 367 #define SIMD_ALIGNED(var) __declspec(align(16)) var |
| 368 #define SIMD_ALIGNED32(var) __declspec(align(64)) var | 368 #define SIMD_ALIGNED32(var) __declspec(align(64)) var |
| 369 typedef __declspec(align(16)) int16 vec16[8]; | 369 typedef __declspec(align(16)) int16 vec16[8]; |
| 370 typedef __declspec(align(16)) int32 vec32[4]; | 370 typedef __declspec(align(16)) int32 vec32[4]; |
| 371 typedef __declspec(align(16)) int8 vec8[16]; | 371 typedef __declspec(align(16)) int8 vec8[16]; |
| 372 typedef __declspec(align(16)) uint16 uvec16[8]; | 372 typedef __declspec(align(16)) uint16 uvec16[8]; |
| (...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 783 uint8* dst_u, uint8* dst_v, int width); | 783 uint8* dst_u, uint8* dst_v, int width); |
| 784 | 784 |
| 785 void ARGBToUV444Row_C(const uint8* src_argb, | 785 void ARGBToUV444Row_C(const uint8* src_argb, |
| 786 uint8* dst_u, uint8* dst_v, int width); | 786 uint8* dst_u, uint8* dst_v, int width); |
| 787 void ARGBToUV411Row_C(const uint8* src_argb, | 787 void ARGBToUV411Row_C(const uint8* src_argb, |
| 788 uint8* dst_u, uint8* dst_v, int width); | 788 uint8* dst_u, uint8* dst_v, int width); |
| 789 | 789 |
| 790 void MirrorRow_AVX2(const uint8* src, uint8* dst, int width); | 790 void MirrorRow_AVX2(const uint8* src, uint8* dst, int width); |
| 791 void MirrorRow_SSSE3(const uint8* src, uint8* dst, int width); | 791 void MirrorRow_SSSE3(const uint8* src, uint8* dst, int width); |
| 792 void MirrorRow_NEON(const uint8* src, uint8* dst, int width); | 792 void MirrorRow_NEON(const uint8* src, uint8* dst, int width); |
| 793 void MirrorRow_MIPS_DSPR2(const uint8* src, uint8* dst, int width); | 793 void MirrorRow_DSPR2(const uint8* src, uint8* dst, int width); |
| 794 void MirrorRow_C(const uint8* src, uint8* dst, int width); | 794 void MirrorRow_C(const uint8* src, uint8* dst, int width); |
| 795 void MirrorRow_Any_AVX2(const uint8* src, uint8* dst, int width); | 795 void MirrorRow_Any_AVX2(const uint8* src, uint8* dst, int width); |
| 796 void MirrorRow_Any_SSSE3(const uint8* src, uint8* dst, int width); | 796 void MirrorRow_Any_SSSE3(const uint8* src, uint8* dst, int width); |
| 797 void MirrorRow_Any_SSE2(const uint8* src, uint8* dst, int width); | 797 void MirrorRow_Any_SSE2(const uint8* src, uint8* dst, int width); |
| 798 void MirrorRow_Any_NEON(const uint8* src, uint8* dst, int width); | 798 void MirrorRow_Any_NEON(const uint8* src, uint8* dst, int width); |
| 799 | 799 |
| 800 void MirrorUVRow_SSSE3(const uint8* src_uv, uint8* dst_u, uint8* dst_v, | 800 void MirrorUVRow_SSSE3(const uint8* src_uv, uint8* dst_u, uint8* dst_v, |
| 801 int width); | 801 int width); |
| 802 void MirrorUVRow_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v, | 802 void MirrorUVRow_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v, |
| 803 int width); | 803 int width); |
| 804 void MirrorUVRow_MIPS_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, | 804 void MirrorUVRow_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, |
| 805 int width); | 805 int width); |
| 806 void MirrorUVRow_C(const uint8* src_uv, uint8* dst_u, uint8* dst_v, | 806 void MirrorUVRow_C(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int width); |
| 807 int width); | |
| 808 | 807 |
| 809 void ARGBMirrorRow_AVX2(const uint8* src, uint8* dst, int width); | 808 void ARGBMirrorRow_AVX2(const uint8* src, uint8* dst, int width); |
| 810 void ARGBMirrorRow_SSE2(const uint8* src, uint8* dst, int width); | 809 void ARGBMirrorRow_SSE2(const uint8* src, uint8* dst, int width); |
| 811 void ARGBMirrorRow_NEON(const uint8* src, uint8* dst, int width); | 810 void ARGBMirrorRow_NEON(const uint8* src, uint8* dst, int width); |
| 812 void ARGBMirrorRow_C(const uint8* src, uint8* dst, int width); | 811 void ARGBMirrorRow_C(const uint8* src, uint8* dst, int width); |
| 813 void ARGBMirrorRow_Any_AVX2(const uint8* src, uint8* dst, int width); | 812 void ARGBMirrorRow_Any_AVX2(const uint8* src, uint8* dst, int width); |
| 814 void ARGBMirrorRow_Any_SSE2(const uint8* src, uint8* dst, int width); | 813 void ARGBMirrorRow_Any_SSE2(const uint8* src, uint8* dst, int width); |
| 815 void ARGBMirrorRow_Any_NEON(const uint8* src, uint8* dst, int width); | 814 void ARGBMirrorRow_Any_NEON(const uint8* src, uint8* dst, int width); |
| 816 | 815 |
| 817 void SplitUVRow_C(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int width); | 816 void SplitUVRow_C(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int width); |
| 818 void SplitUVRow_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, | 817 void SplitUVRow_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, |
| 819 int width); | 818 int width); |
| 820 void SplitUVRow_AVX2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, | 819 void SplitUVRow_AVX2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, |
| 821 int width); | 820 int width); |
| 822 void SplitUVRow_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v, | 821 void SplitUVRow_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v, |
| 823 int width); | 822 int width); |
| 824 void SplitUVRow_MIPS_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, | 823 void SplitUVRow_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, |
| 825 int width); | 824 int width); |
| 826 void SplitUVRow_Any_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, | 825 void SplitUVRow_Any_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, |
| 827 int width); | 826 int width); |
| 828 void SplitUVRow_Any_AVX2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, | 827 void SplitUVRow_Any_AVX2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, |
| 829 int width); | 828 int width); |
| 830 void SplitUVRow_Any_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v, | 829 void SplitUVRow_Any_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v, |
| 831 int width); | 830 int width); |
| 832 void SplitUVRow_Any_MIPS_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, | 831 void SplitUVRow_Any_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, |
| 833 int width); | 832 int width); |
| 834 | 833 |
| 835 void MergeUVRow_C(const uint8* src_u, const uint8* src_v, uint8* dst_uv, | 834 void MergeUVRow_C(const uint8* src_u, const uint8* src_v, uint8* dst_uv, |
| 836 int width); | 835 int width); |
| 837 void MergeUVRow_SSE2(const uint8* src_u, const uint8* src_v, uint8* dst_uv, | 836 void MergeUVRow_SSE2(const uint8* src_u, const uint8* src_v, uint8* dst_uv, |
| 838 int width); | 837 int width); |
| 839 void MergeUVRow_AVX2(const uint8* src_u, const uint8* src_v, uint8* dst_uv, | 838 void MergeUVRow_AVX2(const uint8* src_u, const uint8* src_v, uint8* dst_uv, |
| 840 int width); | 839 int width); |
| 841 void MergeUVRow_NEON(const uint8* src_u, const uint8* src_v, uint8* dst_uv, | 840 void MergeUVRow_NEON(const uint8* src_u, const uint8* src_v, uint8* dst_uv, |
| 842 int width); | 841 int width); |
| 843 void MergeUVRow_Any_SSE2(const uint8* src_u, const uint8* src_v, uint8* dst_uv, | 842 void MergeUVRow_Any_SSE2(const uint8* src_u, const uint8* src_v, uint8* dst_uv, |
| (...skipping 759 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1603 const struct YuvConstants* yuvconstants, | 1602 const struct YuvConstants* yuvconstants, |
| 1604 int width); | 1603 int width); |
| 1605 void YUY2ToARGBRow_Any_NEON(const uint8* src_yuy2, | 1604 void YUY2ToARGBRow_Any_NEON(const uint8* src_yuy2, |
| 1606 uint8* dst_argb, | 1605 uint8* dst_argb, |
| 1607 const struct YuvConstants* yuvconstants, | 1606 const struct YuvConstants* yuvconstants, |
| 1608 int width); | 1607 int width); |
| 1609 void UYVYToARGBRow_Any_NEON(const uint8* src_uyvy, | 1608 void UYVYToARGBRow_Any_NEON(const uint8* src_uyvy, |
| 1610 uint8* dst_argb, | 1609 uint8* dst_argb, |
| 1611 const struct YuvConstants* yuvconstants, | 1610 const struct YuvConstants* yuvconstants, |
| 1612 int width); | 1611 int width); |
| 1613 void I422ToARGBRow_MIPS_DSPR2(const uint8* src_y, | 1612 void I422ToARGBRow_DSPR2(const uint8* src_y, |
| 1614 const uint8* src_u, | 1613 const uint8* src_u, |
| 1615 const uint8* src_v, | 1614 const uint8* src_v, |
| 1616 uint8* dst_argb, | 1615 uint8* dst_argb, |
| 1617 const struct YuvConstants* yuvconstants, | 1616 const struct YuvConstants* yuvconstants, |
| 1618 int width); | 1617 int width); |
| 1619 void I422ToARGBRow_MIPS_DSPR2(const uint8* src_y, | 1618 void I422ToARGBRow_DSPR2(const uint8* src_y, |
| 1620 const uint8* src_u, | 1619 const uint8* src_u, |
| 1621 const uint8* src_v, | 1620 const uint8* src_v, |
| 1622 uint8* dst_argb, | 1621 uint8* dst_argb, |
| 1623 const struct YuvConstants* yuvconstants, | 1622 const struct YuvConstants* yuvconstants, |
| 1624 int width); | 1623 int width); |
| 1625 | 1624 |
| 1626 void YUY2ToYRow_AVX2(const uint8* src_yuy2, uint8* dst_y, int width); | 1625 void YUY2ToYRow_AVX2(const uint8* src_yuy2, uint8* dst_y, int width); |
| 1627 void YUY2ToUVRow_AVX2(const uint8* src_yuy2, int stride_yuy2, | 1626 void YUY2ToUVRow_AVX2(const uint8* src_yuy2, int stride_yuy2, |
| 1628 uint8* dst_u, uint8* dst_v, int width); | 1627 uint8* dst_u, uint8* dst_v, int width); |
| 1629 void YUY2ToUV422Row_AVX2(const uint8* src_yuy2, | 1628 void YUY2ToUV422Row_AVX2(const uint8* src_yuy2, |
| 1630 uint8* dst_u, uint8* dst_v, int width); | 1629 uint8* dst_u, uint8* dst_v, int width); |
| 1631 void YUY2ToYRow_SSE2(const uint8* src_yuy2, uint8* dst_y, int width); | 1630 void YUY2ToYRow_SSE2(const uint8* src_yuy2, uint8* dst_y, int width); |
| 1632 void YUY2ToUVRow_SSE2(const uint8* src_yuy2, int stride_yuy2, | 1631 void YUY2ToUVRow_SSE2(const uint8* src_yuy2, int stride_yuy2, |
| 1633 uint8* dst_u, uint8* dst_v, int width); | 1632 uint8* dst_u, uint8* dst_v, int width); |
| 1634 void YUY2ToUV422Row_SSE2(const uint8* src_yuy2, | 1633 void YUY2ToUV422Row_SSE2(const uint8* src_yuy2, |
| (...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1824 int width, int source_y_fraction); | 1823 int width, int source_y_fraction); |
| 1825 void InterpolateRow_SSSE3(uint8* dst_ptr, const uint8* src_ptr, | 1824 void InterpolateRow_SSSE3(uint8* dst_ptr, const uint8* src_ptr, |
| 1826 ptrdiff_t src_stride_ptr, int width, | 1825 ptrdiff_t src_stride_ptr, int width, |
| 1827 int source_y_fraction); | 1826 int source_y_fraction); |
| 1828 void InterpolateRow_AVX2(uint8* dst_ptr, const uint8* src_ptr, | 1827 void InterpolateRow_AVX2(uint8* dst_ptr, const uint8* src_ptr, |
| 1829 ptrdiff_t src_stride_ptr, int width, | 1828 ptrdiff_t src_stride_ptr, int width, |
| 1830 int source_y_fraction); | 1829 int source_y_fraction); |
| 1831 void InterpolateRow_NEON(uint8* dst_ptr, const uint8* src_ptr, | 1830 void InterpolateRow_NEON(uint8* dst_ptr, const uint8* src_ptr, |
| 1832 ptrdiff_t src_stride_ptr, int width, | 1831 ptrdiff_t src_stride_ptr, int width, |
| 1833 int source_y_fraction); | 1832 int source_y_fraction); |
| 1834 void InterpolateRow_MIPS_DSPR2(uint8* dst_ptr, const uint8* src_ptr, | 1833 void InterpolateRow_DSPR2(uint8* dst_ptr, const uint8* src_ptr, |
| 1835 ptrdiff_t src_stride_ptr, int width, | 1834 ptrdiff_t src_stride_ptr, int width, |
| 1836 int source_y_fraction); | 1835 int source_y_fraction); |
| 1837 void InterpolateRow_Any_NEON(uint8* dst_ptr, const uint8* src_ptr, | 1836 void InterpolateRow_Any_NEON(uint8* dst_ptr, const uint8* src_ptr, |
| 1838 ptrdiff_t src_stride_ptr, int width, | 1837 ptrdiff_t src_stride_ptr, int width, |
| 1839 int source_y_fraction); | 1838 int source_y_fraction); |
| 1840 void InterpolateRow_Any_SSSE3(uint8* dst_ptr, const uint8* src_ptr, | 1839 void InterpolateRow_Any_SSSE3(uint8* dst_ptr, const uint8* src_ptr, |
| 1841 ptrdiff_t src_stride_ptr, int width, | 1840 ptrdiff_t src_stride_ptr, int width, |
| 1842 int source_y_fraction); | 1841 int source_y_fraction); |
| 1843 void InterpolateRow_Any_AVX2(uint8* dst_ptr, const uint8* src_ptr, | 1842 void InterpolateRow_Any_AVX2(uint8* dst_ptr, const uint8* src_ptr, |
| 1844 ptrdiff_t src_stride_ptr, int width, | 1843 ptrdiff_t src_stride_ptr, int width, |
| 1845 int source_y_fraction); | 1844 int source_y_fraction); |
| 1846 void InterpolateRow_Any_MIPS_DSPR2(uint8* dst_ptr, const uint8* src_ptr, | 1845 void InterpolateRow_Any_DSPR2(uint8* dst_ptr, const uint8* src_ptr, |
| 1847 ptrdiff_t src_stride_ptr, int width, | 1846 ptrdiff_t src_stride_ptr, int width, |
| 1848 int source_y_fraction); | 1847 int source_y_fraction); |
| 1849 | 1848 |
| 1850 void InterpolateRow_16_C(uint16* dst_ptr, const uint16* src_ptr, | 1849 void InterpolateRow_16_C(uint16* dst_ptr, const uint16* src_ptr, |
| 1851 ptrdiff_t src_stride_ptr, | 1850 ptrdiff_t src_stride_ptr, |
| 1852 int width, int source_y_fraction); | 1851 int width, int source_y_fraction); |
| 1853 | 1852 |
| 1854 // Sobel images. | 1853 // Sobel images. |
| 1855 void SobelXRow_C(const uint8* src_y0, const uint8* src_y1, const uint8* src_y2, | 1854 void SobelXRow_C(const uint8* src_y0, const uint8* src_y1, const uint8* src_y2, |
| 1856 uint8* dst_sobelx, int width); | 1855 uint8* dst_sobelx, int width); |
| 1857 void SobelXRow_SSE2(const uint8* src_y0, const uint8* src_y1, | 1856 void SobelXRow_SSE2(const uint8* src_y0, const uint8* src_y1, |
| 1858 const uint8* src_y2, uint8* dst_sobelx, int width); | 1857 const uint8* src_y2, uint8* dst_sobelx, int width); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1910 void ARGBLumaColorTableRow_SSSE3(const uint8* src_argb, uint8* dst_argb, | 1909 void ARGBLumaColorTableRow_SSSE3(const uint8* src_argb, uint8* dst_argb, |
| 1911 int width, | 1910 int width, |
| 1912 const uint8* luma, uint32 lumacoeff); | 1911 const uint8* luma, uint32 lumacoeff); |
| 1913 | 1912 |
| 1914 #ifdef __cplusplus | 1913 #ifdef __cplusplus |
| 1915 } // extern "C" | 1914 } // extern "C" |
| 1916 } // namespace libyuv | 1915 } // namespace libyuv |
| 1917 #endif | 1916 #endif |
| 1918 | 1917 |
| 1919 #endif // INCLUDE_LIBYUV_ROW_H_ NOLINT | 1918 #endif // INCLUDE_LIBYUV_ROW_H_ NOLINT |
| OLD | NEW |