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

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

Issue 2636483002: Add MSA optimized NV12/21 To RGB row functions (Closed)
Patch Set: Incorporated review comments 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
« no previous file with comments | « no previous file | source/convert_argb.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 410 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 #define HAS_RGB24TOARGBROW_MSA 421 #define HAS_RGB24TOARGBROW_MSA
422 #define HAS_RAWTOARGBROW_MSA 422 #define HAS_RAWTOARGBROW_MSA
423 #define HAS_ARGB1555TOYROW_MSA 423 #define HAS_ARGB1555TOYROW_MSA
424 #define HAS_RGB565TOYROW_MSA 424 #define HAS_RGB565TOYROW_MSA
425 #define HAS_RGB24TOYROW_MSA 425 #define HAS_RGB24TOYROW_MSA
426 #define HAS_RAWTOYROW_MSA 426 #define HAS_RAWTOYROW_MSA
427 #define HAS_ARGB1555TOUVROW_MSA 427 #define HAS_ARGB1555TOUVROW_MSA
428 #define HAS_RGB565TOUVROW_MSA 428 #define HAS_RGB565TOUVROW_MSA
429 #define HAS_RGB24TOUVROW_MSA 429 #define HAS_RGB24TOUVROW_MSA
430 #define HAS_RAWTOUVROW_MSA 430 #define HAS_RAWTOUVROW_MSA
431 #define HAS_NV12TOARGBROW_MSA
432 #define HAS_NV12TORGB565ROW_MSA
433 #define HAS_NV21TOARGBROW_MSA
434 #define HAS_SOBELROW_MSA
435 #define HAS_SOBELTOPLANEROW_MSA
436 #define HAS_SOBELXYROW_MSA
431 #endif 437 #endif
432 438
433 #if defined(_MSC_VER) && !defined(__CLR_VER) && !defined(__clang__) 439 #if defined(_MSC_VER) && !defined(__CLR_VER) && !defined(__clang__)
434 #if defined(VISUALC_HAS_AVX2) 440 #if defined(VISUALC_HAS_AVX2)
435 #define SIMD_ALIGNED(var) __declspec(align(32)) var 441 #define SIMD_ALIGNED(var) __declspec(align(32)) var
436 #else 442 #else
437 #define SIMD_ALIGNED(var) __declspec(align(16)) var 443 #define SIMD_ALIGNED(var) __declspec(align(16)) var
438 #endif 444 #endif
439 typedef __declspec(align(16)) int16 vec16[8]; 445 typedef __declspec(align(16)) int16 vec16[8];
440 typedef __declspec(align(16)) int32 vec32[4]; 446 typedef __declspec(align(16)) int32 vec32[4];
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 const uint8* src_v, 755 const uint8* src_v,
750 uint8* dst_argb4444, 756 uint8* dst_argb4444,
751 const struct YuvConstants* yuvconstants, 757 const struct YuvConstants* yuvconstants,
752 int width); 758 int width);
753 void I422ToARGB1555Row_MSA(const uint8* src_y, 759 void I422ToARGB1555Row_MSA(const uint8* src_y,
754 const uint8* src_u, 760 const uint8* src_u,
755 const uint8* src_v, 761 const uint8* src_v,
756 uint8* dst_argb1555, 762 uint8* dst_argb1555,
757 const struct YuvConstants* yuvconstants, 763 const struct YuvConstants* yuvconstants,
758 int width); 764 int width);
765 void NV12ToARGBRow_MSA(const uint8* src_y,
766 const uint8* src_uv,
767 uint8* dst_argb,
768 const struct YuvConstants* yuvconstants,
769 int width);
770 void NV12ToRGB565Row_MSA(const uint8* src_y,
771 const uint8* src_uv,
772 uint8* dst_rgb565,
773 const struct YuvConstants* yuvconstants,
774 int width);
775 void NV21ToARGBRow_MSA(const uint8* src_y,
776 const uint8* src_vu,
777 uint8* dst_argb,
778 const struct YuvConstants* yuvconstants,
779 int width);
759 780
760 void ARGBToYRow_AVX2(const uint8* src_argb, uint8* dst_y, int width); 781 void ARGBToYRow_AVX2(const uint8* src_argb, uint8* dst_y, int width);
761 void ARGBToYRow_Any_AVX2(const uint8* src_argb, uint8* dst_y, int width); 782 void ARGBToYRow_Any_AVX2(const uint8* src_argb, uint8* dst_y, int width);
762 void ARGBToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int width); 783 void ARGBToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int width);
763 void ARGBToYJRow_AVX2(const uint8* src_argb, uint8* dst_y, int width); 784 void ARGBToYJRow_AVX2(const uint8* src_argb, uint8* dst_y, int width);
764 void ARGBToYJRow_Any_AVX2(const uint8* src_argb, uint8* dst_y, int width); 785 void ARGBToYJRow_Any_AVX2(const uint8* src_argb, uint8* dst_y, int width);
765 void ARGBToYJRow_SSSE3(const uint8* src_argb, uint8* dst_y, int width); 786 void ARGBToYJRow_SSSE3(const uint8* src_argb, uint8* dst_y, int width);
766 void BGRAToYRow_SSSE3(const uint8* src_bgra, uint8* dst_y, int width); 787 void BGRAToYRow_SSSE3(const uint8* src_bgra, uint8* dst_y, int width);
767 void ABGRToYRow_SSSE3(const uint8* src_abgr, uint8* dst_y, int width); 788 void ABGRToYRow_SSSE3(const uint8* src_abgr, uint8* dst_y, int width);
768 void RGBAToYRow_SSSE3(const uint8* src_rgba, uint8* dst_y, int width); 789 void RGBAToYRow_SSSE3(const uint8* src_rgba, uint8* dst_y, int width);
(...skipping 1552 matching lines...) Expand 10 before | Expand all | Expand 10 after
2321 const uint8* src_v, 2342 const uint8* src_v,
2322 uint8* dst_argb4444, 2343 uint8* dst_argb4444,
2323 const struct YuvConstants* yuvconstants, 2344 const struct YuvConstants* yuvconstants,
2324 int width); 2345 int width);
2325 void I422ToARGB1555Row_Any_MSA(const uint8* src_y, 2346 void I422ToARGB1555Row_Any_MSA(const uint8* src_y,
2326 const uint8* src_u, 2347 const uint8* src_u,
2327 const uint8* src_v, 2348 const uint8* src_v,
2328 uint8* dst_argb1555, 2349 uint8* dst_argb1555,
2329 const struct YuvConstants* yuvconstants, 2350 const struct YuvConstants* yuvconstants,
2330 int width); 2351 int width);
2352 void NV12ToARGBRow_Any_MSA(const uint8* src_y,
2353 const uint8* src_uv,
2354 uint8* dst_argb,
2355 const struct YuvConstants* yuvconstants,
2356 int width);
2357 void NV12ToRGB565Row_Any_MSA(const uint8* src_y,
2358 const uint8* src_uv,
2359 uint8* dst_argb,
2360 const struct YuvConstants* yuvconstants,
2361 int width);
2362 void NV21ToARGBRow_Any_MSA(const uint8* src_y,
2363 const uint8* src_vu,
2364 uint8* dst_argb,
2365 const struct YuvConstants* yuvconstants,
2366 int width);
2331 2367
2332 void YUY2ToYRow_AVX2(const uint8* src_yuy2, uint8* dst_y, int width); 2368 void YUY2ToYRow_AVX2(const uint8* src_yuy2, uint8* dst_y, int width);
2333 void YUY2ToUVRow_AVX2(const uint8* src_yuy2, 2369 void YUY2ToUVRow_AVX2(const uint8* src_yuy2,
2334 int stride_yuy2, 2370 int stride_yuy2,
2335 uint8* dst_u, 2371 uint8* dst_u,
2336 uint8* dst_v, 2372 uint8* dst_v,
2337 int width); 2373 int width);
2338 void YUY2ToUV422Row_AVX2(const uint8* src_yuy2, 2374 void YUY2ToUV422Row_AVX2(const uint8* src_yuy2,
2339 uint8* dst_u, 2375 uint8* dst_u,
2340 uint8* dst_v, 2376 uint8* dst_v,
(...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after
2810 uint8* dst_argb, 2846 uint8* dst_argb,
2811 int width); 2847 int width);
2812 void SobelRow_SSE2(const uint8* src_sobelx, 2848 void SobelRow_SSE2(const uint8* src_sobelx,
2813 const uint8* src_sobely, 2849 const uint8* src_sobely,
2814 uint8* dst_argb, 2850 uint8* dst_argb,
2815 int width); 2851 int width);
2816 void SobelRow_NEON(const uint8* src_sobelx, 2852 void SobelRow_NEON(const uint8* src_sobelx,
2817 const uint8* src_sobely, 2853 const uint8* src_sobely,
2818 uint8* dst_argb, 2854 uint8* dst_argb,
2819 int width); 2855 int width);
2856 void SobelRow_MSA(const uint8* src_sobelx,
2857 const uint8* src_sobely,
2858 uint8* dst_argb,
2859 int width);
2820 void SobelToPlaneRow_C(const uint8* src_sobelx, 2860 void SobelToPlaneRow_C(const uint8* src_sobelx,
2821 const uint8* src_sobely, 2861 const uint8* src_sobely,
2822 uint8* dst_y, 2862 uint8* dst_y,
2823 int width); 2863 int width);
2824 void SobelToPlaneRow_SSE2(const uint8* src_sobelx, 2864 void SobelToPlaneRow_SSE2(const uint8* src_sobelx,
2825 const uint8* src_sobely, 2865 const uint8* src_sobely,
2826 uint8* dst_y, 2866 uint8* dst_y,
2827 int width); 2867 int width);
2828 void SobelToPlaneRow_NEON(const uint8* src_sobelx, 2868 void SobelToPlaneRow_NEON(const uint8* src_sobelx,
2829 const uint8* src_sobely, 2869 const uint8* src_sobely,
2830 uint8* dst_y, 2870 uint8* dst_y,
2831 int width); 2871 int width);
2872 void SobelToPlaneRow_MSA(const uint8* src_sobelx,
2873 const uint8* src_sobely,
2874 uint8* dst_y,
2875 int width);
2832 void SobelXYRow_C(const uint8* src_sobelx, 2876 void SobelXYRow_C(const uint8* src_sobelx,
2833 const uint8* src_sobely, 2877 const uint8* src_sobely,
2834 uint8* dst_argb, 2878 uint8* dst_argb,
2835 int width); 2879 int width);
2836 void SobelXYRow_SSE2(const uint8* src_sobelx, 2880 void SobelXYRow_SSE2(const uint8* src_sobelx,
2837 const uint8* src_sobely, 2881 const uint8* src_sobely,
2838 uint8* dst_argb, 2882 uint8* dst_argb,
2839 int width); 2883 int width);
2840 void SobelXYRow_NEON(const uint8* src_sobelx, 2884 void SobelXYRow_NEON(const uint8* src_sobelx,
2841 const uint8* src_sobely, 2885 const uint8* src_sobely,
2842 uint8* dst_argb, 2886 uint8* dst_argb,
2843 int width); 2887 int width);
2888 void SobelXYRow_MSA(const uint8* src_sobelx,
2889 const uint8* src_sobely,
2890 uint8* dst_argb,
2891 int width);
2844 void SobelRow_Any_SSE2(const uint8* src_sobelx, 2892 void SobelRow_Any_SSE2(const uint8* src_sobelx,
2845 const uint8* src_sobely, 2893 const uint8* src_sobely,
2846 uint8* dst_argb, 2894 uint8* dst_argb,
2847 int width); 2895 int width);
2848 void SobelRow_Any_NEON(const uint8* src_sobelx, 2896 void SobelRow_Any_NEON(const uint8* src_sobelx,
2849 const uint8* src_sobely, 2897 const uint8* src_sobely,
2850 uint8* dst_argb, 2898 uint8* dst_argb,
2851 int width); 2899 int width);
2900 void SobelRow_Any_MSA(const uint8* src_sobelx,
2901 const uint8* src_sobely,
2902 uint8* dst_argb,
2903 int width);
2852 void SobelToPlaneRow_Any_SSE2(const uint8* src_sobelx, 2904 void SobelToPlaneRow_Any_SSE2(const uint8* src_sobelx,
2853 const uint8* src_sobely, 2905 const uint8* src_sobely,
2854 uint8* dst_y, 2906 uint8* dst_y,
2855 int width); 2907 int width);
2856 void SobelToPlaneRow_Any_NEON(const uint8* src_sobelx, 2908 void SobelToPlaneRow_Any_NEON(const uint8* src_sobelx,
2857 const uint8* src_sobely, 2909 const uint8* src_sobely,
2858 uint8* dst_y, 2910 uint8* dst_y,
2859 int width); 2911 int width);
2912 void SobelToPlaneRow_Any_MSA(const uint8* src_sobelx,
2913 const uint8* src_sobely,
2914 uint8* dst_y,
2915 int width);
2860 void SobelXYRow_Any_SSE2(const uint8* src_sobelx, 2916 void SobelXYRow_Any_SSE2(const uint8* src_sobelx,
2861 const uint8* src_sobely, 2917 const uint8* src_sobely,
2862 uint8* dst_argb, 2918 uint8* dst_argb,
2863 int width); 2919 int width);
2864 void SobelXYRow_Any_NEON(const uint8* src_sobelx, 2920 void SobelXYRow_Any_NEON(const uint8* src_sobelx,
2865 const uint8* src_sobely, 2921 const uint8* src_sobely,
2866 uint8* dst_argb, 2922 uint8* dst_argb,
2867 int width); 2923 int width);
2924 void SobelXYRow_Any_MSA(const uint8* src_sobelx,
2925 const uint8* src_sobely,
2926 uint8* dst_argb,
2927 int width);
2868 2928
2869 void ARGBPolynomialRow_C(const uint8* src_argb, 2929 void ARGBPolynomialRow_C(const uint8* src_argb,
2870 uint8* dst_argb, 2930 uint8* dst_argb,
2871 const float* poly, 2931 const float* poly,
2872 int width); 2932 int width);
2873 void ARGBPolynomialRow_SSE2(const uint8* src_argb, 2933 void ARGBPolynomialRow_SSE2(const uint8* src_argb,
2874 uint8* dst_argb, 2934 uint8* dst_argb,
2875 const float* poly, 2935 const float* poly,
2876 int width); 2936 int width);
2877 void ARGBPolynomialRow_AVX2(const uint8* src_argb, 2937 void ARGBPolynomialRow_AVX2(const uint8* src_argb,
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
2922 int width, 2982 int width,
2923 const uint8* luma, 2983 const uint8* luma,
2924 uint32 lumacoeff); 2984 uint32 lumacoeff);
2925 2985
2926 #ifdef __cplusplus 2986 #ifdef __cplusplus
2927 } // extern "C" 2987 } // extern "C"
2928 } // namespace libyuv 2988 } // namespace libyuv
2929 #endif 2989 #endif
2930 2990
2931 #endif // INCLUDE_LIBYUV_ROW_H_ 2991 #endif // INCLUDE_LIBYUV_ROW_H_
OLDNEW
« no previous file with comments | « no previous file | source/convert_argb.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698