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 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 | 431 #define HAS_NV12TOARGBROW_MSA |
432 #define HAS_NV12TORGB565ROW_MSA | 432 #define HAS_NV12TORGB565ROW_MSA |
433 #define HAS_NV21TOARGBROW_MSA | 433 #define HAS_NV21TOARGBROW_MSA |
434 #define HAS_SOBELROW_MSA | 434 #define HAS_SOBELROW_MSA |
435 #define HAS_SOBELTOPLANEROW_MSA | 435 #define HAS_SOBELTOPLANEROW_MSA |
436 #define HAS_SOBELXYROW_MSA | 436 #define HAS_SOBELXYROW_MSA |
| 437 #define HAS_ARGBTOYJROW_MSA |
| 438 #define HAS_BGRATOYROW_MSA |
| 439 #define HAS_ABGRTOYROW_MSA |
| 440 #define HAS_RGBATOYROW_MSA |
| 441 #define HAS_ARGBTOUVJROW_MSA |
| 442 #define HAS_BGRATOUVROW_MSA |
| 443 #define HAS_ABGRTOUVROW_MSA |
| 444 #define HAS_RGBATOUVROW_MSA |
437 #endif | 445 #endif |
438 | 446 |
439 #if defined(_MSC_VER) && !defined(__CLR_VER) && !defined(__clang__) | 447 #if defined(_MSC_VER) && !defined(__CLR_VER) && !defined(__clang__) |
440 #if defined(VISUALC_HAS_AVX2) | 448 #if defined(VISUALC_HAS_AVX2) |
441 #define SIMD_ALIGNED(var) __declspec(align(32)) var | 449 #define SIMD_ALIGNED(var) __declspec(align(32)) var |
442 #else | 450 #else |
443 #define SIMD_ALIGNED(var) __declspec(align(16)) var | 451 #define SIMD_ALIGNED(var) __declspec(align(16)) var |
444 #endif | 452 #endif |
445 typedef __declspec(align(16)) int16 vec16[8]; | 453 typedef __declspec(align(16)) int16 vec16[8]; |
446 typedef __declspec(align(16)) int32 vec32[4]; | 454 typedef __declspec(align(16)) int32 vec32[4]; |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
639 #define IACA_SSC_MARK(MARK_ID) \ | 647 #define IACA_SSC_MARK(MARK_ID) \ |
640 __asm__ __volatile__("\n\t movl $" #MARK_ID \ | 648 __asm__ __volatile__("\n\t movl $" #MARK_ID \ |
641 ", %%ebx" \ | 649 ", %%ebx" \ |
642 "\n\t .byte 0x64, 0x67, 0x90" \ | 650 "\n\t .byte 0x64, 0x67, 0x90" \ |
643 : \ | 651 : \ |
644 : \ | 652 : \ |
645 : "memory"); | 653 : "memory"); |
646 | 654 |
647 #define IACA_UD_BYTES __asm__ __volatile__("\n\t .byte 0x0F, 0x0B"); | 655 #define IACA_UD_BYTES __asm__ __volatile__("\n\t .byte 0x0F, 0x0B"); |
648 | 656 |
649 #else /* Visual C */ | 657 #else /* Visual C */ |
650 #define IACA_UD_BYTES \ | 658 #define IACA_UD_BYTES \ |
651 { __asm _emit 0x0F __asm _emit 0x0B } | 659 { __asm _emit 0x0F __asm _emit 0x0B } |
652 | 660 |
653 #define IACA_SSC_MARK(x) \ | 661 #define IACA_SSC_MARK(x) \ |
654 { __asm mov ebx, x __asm _emit 0x64 __asm _emit 0x67 __asm _emit 0x90 } | 662 { __asm mov ebx, x __asm _emit 0x64 __asm _emit 0x67 __asm _emit 0x90 } |
655 | 663 |
656 #define IACA_VC64_START __writegsbyte(111, 111); | 664 #define IACA_VC64_START __writegsbyte(111, 111); |
657 #define IACA_VC64_END __writegsbyte(222, 222); | 665 #define IACA_VC64_END __writegsbyte(222, 222); |
658 #endif | 666 #endif |
659 | 667 |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
836 void ARGBToYJRow_Any_AVX2(const uint8* src_argb, uint8* dst_y, int width); | 844 void ARGBToYJRow_Any_AVX2(const uint8* src_argb, uint8* dst_y, int width); |
837 void ARGBToYJRow_SSSE3(const uint8* src_argb, uint8* dst_y, int width); | 845 void ARGBToYJRow_SSSE3(const uint8* src_argb, uint8* dst_y, int width); |
838 void BGRAToYRow_SSSE3(const uint8* src_bgra, uint8* dst_y, int width); | 846 void BGRAToYRow_SSSE3(const uint8* src_bgra, uint8* dst_y, int width); |
839 void ABGRToYRow_SSSE3(const uint8* src_abgr, uint8* dst_y, int width); | 847 void ABGRToYRow_SSSE3(const uint8* src_abgr, uint8* dst_y, int width); |
840 void RGBAToYRow_SSSE3(const uint8* src_rgba, uint8* dst_y, int width); | 848 void RGBAToYRow_SSSE3(const uint8* src_rgba, uint8* dst_y, int width); |
841 void RGB24ToYRow_SSSE3(const uint8* src_rgb24, uint8* dst_y, int width); | 849 void RGB24ToYRow_SSSE3(const uint8* src_rgb24, uint8* dst_y, int width); |
842 void RAWToYRow_SSSE3(const uint8* src_raw, uint8* dst_y, int width); | 850 void RAWToYRow_SSSE3(const uint8* src_raw, uint8* dst_y, int width); |
843 void ARGBToYRow_NEON(const uint8* src_argb, uint8* dst_y, int width); | 851 void ARGBToYRow_NEON(const uint8* src_argb, uint8* dst_y, int width); |
844 void ARGBToYJRow_NEON(const uint8* src_argb, uint8* dst_y, int width); | 852 void ARGBToYJRow_NEON(const uint8* src_argb, uint8* dst_y, int width); |
845 void ARGBToYRow_MSA(const uint8* src_argb, uint8* dst_y, int width); | 853 void ARGBToYRow_MSA(const uint8* src_argb, uint8* dst_y, int width); |
| 854 void ARGBToYJRow_MSA(const uint8* src_argb, uint8* dst_y, int width); |
846 void ARGBToUV444Row_NEON(const uint8* src_argb, | 855 void ARGBToUV444Row_NEON(const uint8* src_argb, |
847 uint8* dst_u, | 856 uint8* dst_u, |
848 uint8* dst_v, | 857 uint8* dst_v, |
849 int width); | 858 int width); |
850 void ARGBToUVRow_NEON(const uint8* src_argb, | 859 void ARGBToUVRow_NEON(const uint8* src_argb, |
851 int src_stride_argb, | 860 int src_stride_argb, |
852 uint8* dst_u, | 861 uint8* dst_u, |
853 uint8* dst_v, | 862 uint8* dst_v, |
854 int width); | 863 int width); |
855 void ARGBToUV444Row_MSA(const uint8* src_argb, | 864 void ARGBToUV444Row_MSA(const uint8* src_argb, |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
899 void ARGB1555ToUVRow_NEON(const uint8* src_argb1555, | 908 void ARGB1555ToUVRow_NEON(const uint8* src_argb1555, |
900 int src_stride_argb1555, | 909 int src_stride_argb1555, |
901 uint8* dst_u, | 910 uint8* dst_u, |
902 uint8* dst_v, | 911 uint8* dst_v, |
903 int width); | 912 int width); |
904 void ARGB4444ToUVRow_NEON(const uint8* src_argb4444, | 913 void ARGB4444ToUVRow_NEON(const uint8* src_argb4444, |
905 int src_stride_argb4444, | 914 int src_stride_argb4444, |
906 uint8* dst_u, | 915 uint8* dst_u, |
907 uint8* dst_v, | 916 uint8* dst_v, |
908 int width); | 917 int width); |
| 918 void ARGBToUVJRow_MSA(const uint8* src_argb, |
| 919 int src_stride_argb, |
| 920 uint8* dst_u, |
| 921 uint8* dst_v, |
| 922 int width); |
| 923 void BGRAToUVRow_MSA(const uint8* src_bgra, |
| 924 int src_stride_bgra, |
| 925 uint8* dst_u, |
| 926 uint8* dst_v, |
| 927 int width); |
| 928 void ABGRToUVRow_MSA(const uint8* src_abgr, |
| 929 int src_stride_abgr, |
| 930 uint8* dst_u, |
| 931 uint8* dst_v, |
| 932 int width); |
| 933 void RGBAToUVRow_MSA(const uint8* src_rgba, |
| 934 int src_stride_rgba, |
| 935 uint8* dst_u, |
| 936 uint8* dst_v, |
| 937 int width); |
909 void RGB24ToUVRow_MSA(const uint8* src_rgb24, | 938 void RGB24ToUVRow_MSA(const uint8* src_rgb24, |
910 int src_stride_rgb24, | 939 int src_stride_rgb24, |
911 uint8* dst_u, | 940 uint8* dst_u, |
912 uint8* dst_v, | 941 uint8* dst_v, |
913 int width); | 942 int width); |
914 void RAWToUVRow_MSA(const uint8* src_raw, | 943 void RAWToUVRow_MSA(const uint8* src_raw, |
915 int src_stride_raw, | 944 int src_stride_raw, |
916 uint8* dst_u, | 945 uint8* dst_u, |
917 uint8* dst_v, | 946 uint8* dst_v, |
918 int width); | 947 int width); |
919 void RGB565ToUVRow_MSA(const uint8* src_rgb565, | 948 void RGB565ToUVRow_MSA(const uint8* src_rgb565, |
920 int src_stride_rgb565, | 949 int src_stride_rgb565, |
921 uint8* dst_u, | 950 uint8* dst_u, |
922 uint8* dst_v, | 951 uint8* dst_v, |
923 int width); | 952 int width); |
924 void ARGB1555ToUVRow_MSA(const uint8* src_argb1555, | 953 void ARGB1555ToUVRow_MSA(const uint8* src_argb1555, |
925 int src_stride_argb1555, | 954 int src_stride_argb1555, |
926 uint8* dst_u, | 955 uint8* dst_u, |
927 uint8* dst_v, | 956 uint8* dst_v, |
928 int width); | 957 int width); |
929 void BGRAToYRow_NEON(const uint8* src_bgra, uint8* dst_y, int width); | 958 void BGRAToYRow_NEON(const uint8* src_bgra, uint8* dst_y, int width); |
930 void ABGRToYRow_NEON(const uint8* src_abgr, uint8* dst_y, int width); | 959 void ABGRToYRow_NEON(const uint8* src_abgr, uint8* dst_y, int width); |
931 void RGBAToYRow_NEON(const uint8* src_rgba, uint8* dst_y, int width); | 960 void RGBAToYRow_NEON(const uint8* src_rgba, uint8* dst_y, int width); |
932 void RGB24ToYRow_NEON(const uint8* src_rgb24, uint8* dst_y, int width); | 961 void RGB24ToYRow_NEON(const uint8* src_rgb24, uint8* dst_y, int width); |
933 void RAWToYRow_NEON(const uint8* src_raw, uint8* dst_y, int width); | 962 void RAWToYRow_NEON(const uint8* src_raw, uint8* dst_y, int width); |
934 void RGB565ToYRow_NEON(const uint8* src_rgb565, uint8* dst_y, int width); | 963 void RGB565ToYRow_NEON(const uint8* src_rgb565, uint8* dst_y, int width); |
935 void ARGB1555ToYRow_NEON(const uint8* src_argb1555, uint8* dst_y, int width); | 964 void ARGB1555ToYRow_NEON(const uint8* src_argb1555, uint8* dst_y, int width); |
936 void ARGB4444ToYRow_NEON(const uint8* src_argb4444, uint8* dst_y, int width); | 965 void ARGB4444ToYRow_NEON(const uint8* src_argb4444, uint8* dst_y, int width); |
| 966 void BGRAToYRow_MSA(const uint8* src_bgra, uint8* dst_y, int width); |
| 967 void ABGRToYRow_MSA(const uint8* src_abgr, uint8* dst_y, int width); |
| 968 void RGBAToYRow_MSA(const uint8* src_rgba, uint8* dst_y, int width); |
937 void RGB24ToYRow_MSA(const uint8* src_rgb24, uint8* dst_y, int width); | 969 void RGB24ToYRow_MSA(const uint8* src_rgb24, uint8* dst_y, int width); |
938 void RAWToYRow_MSA(const uint8* src_raw, uint8* dst_y, int width); | 970 void RAWToYRow_MSA(const uint8* src_raw, uint8* dst_y, int width); |
939 void RGB565ToYRow_MSA(const uint8* src_rgb565, uint8* dst_y, int width); | 971 void RGB565ToYRow_MSA(const uint8* src_rgb565, uint8* dst_y, int width); |
940 void ARGB1555ToYRow_MSA(const uint8* src_argb1555, uint8* dst_y, int width); | 972 void ARGB1555ToYRow_MSA(const uint8* src_argb1555, uint8* dst_y, int width); |
941 void BGRAToUVRow_DSPR2(const uint8* src_bgra, | 973 void BGRAToUVRow_DSPR2(const uint8* src_bgra, |
942 int src_stride_bgra, | 974 int src_stride_bgra, |
943 uint8* dst_u, | 975 uint8* dst_u, |
944 uint8* dst_v, | 976 uint8* dst_v, |
945 int width); | 977 int width); |
946 void BGRAToYRow_DSPR2(const uint8* src_bgra, uint8* dst_y, int width); | 978 void BGRAToYRow_DSPR2(const uint8* src_bgra, uint8* dst_y, int width); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
990 void ARGB1555ToYRow_Any_NEON(const uint8* src_argb1555, | 1022 void ARGB1555ToYRow_Any_NEON(const uint8* src_argb1555, |
991 uint8* dst_y, | 1023 uint8* dst_y, |
992 int width); | 1024 int width); |
993 void BGRAToYRow_Any_DSPR2(const uint8* src_bgra, uint8* dst_y, int width); | 1025 void BGRAToYRow_Any_DSPR2(const uint8* src_bgra, uint8* dst_y, int width); |
994 void ARGBToYRow_Any_DSPR2(const uint8* src_argb, uint8* dst_y, int width); | 1026 void ARGBToYRow_Any_DSPR2(const uint8* src_argb, uint8* dst_y, int width); |
995 void ABGRToYRow_Any_DSPR2(const uint8* src_abgr, uint8* dst_y, int width); | 1027 void ABGRToYRow_Any_DSPR2(const uint8* src_abgr, uint8* dst_y, int width); |
996 void RGBAToYRow_Any_DSPR2(const uint8* src_rgba, uint8* dst_y, int width); | 1028 void RGBAToYRow_Any_DSPR2(const uint8* src_rgba, uint8* dst_y, int width); |
997 void ARGB4444ToYRow_Any_NEON(const uint8* src_argb4444, | 1029 void ARGB4444ToYRow_Any_NEON(const uint8* src_argb4444, |
998 uint8* dst_y, | 1030 uint8* dst_y, |
999 int width); | 1031 int width); |
| 1032 void BGRAToYRow_Any_MSA(const uint8* src_bgra, uint8* dst_y, int width); |
| 1033 void ABGRToYRow_Any_MSA(const uint8* src_abgr, uint8* dst_y, int width); |
| 1034 void RGBAToYRow_Any_MSA(const uint8* src_rgba, uint8* dst_y, int width); |
| 1035 void ARGBToYJRow_Any_MSA(const uint8* src_argb, uint8* dst_y, int width); |
1000 void ARGBToYRow_Any_MSA(const uint8* src_argb, uint8* dst_y, int width); | 1036 void ARGBToYRow_Any_MSA(const uint8* src_argb, uint8* dst_y, int width); |
1001 void RGB24ToYRow_Any_MSA(const uint8* src_rgb24, uint8* dst_y, int width); | 1037 void RGB24ToYRow_Any_MSA(const uint8* src_rgb24, uint8* dst_y, int width); |
1002 void RAWToYRow_Any_MSA(const uint8* src_raw, uint8* dst_y, int width); | 1038 void RAWToYRow_Any_MSA(const uint8* src_raw, uint8* dst_y, int width); |
1003 void RGB565ToYRow_Any_MSA(const uint8* src_rgb565, uint8* dst_y, int width); | 1039 void RGB565ToYRow_Any_MSA(const uint8* src_rgb565, uint8* dst_y, int width); |
1004 void ARGB1555ToYRow_Any_MSA(const uint8* src_argb1555, uint8* dst_y, int width); | 1040 void ARGB1555ToYRow_Any_MSA(const uint8* src_argb1555, uint8* dst_y, int width); |
1005 | 1041 |
1006 void ARGBToUVRow_AVX2(const uint8* src_argb, | 1042 void ARGBToUVRow_AVX2(const uint8* src_argb, |
1007 int src_stride_argb, | 1043 int src_stride_argb, |
1008 uint8* dst_u, | 1044 uint8* dst_u, |
1009 uint8* dst_v, | 1045 uint8* dst_v, |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1129 void ARGB1555ToUVRow_Any_NEON(const uint8* src_argb1555, | 1165 void ARGB1555ToUVRow_Any_NEON(const uint8* src_argb1555, |
1130 int src_stride_argb1555, | 1166 int src_stride_argb1555, |
1131 uint8* dst_u, | 1167 uint8* dst_u, |
1132 uint8* dst_v, | 1168 uint8* dst_v, |
1133 int width); | 1169 int width); |
1134 void ARGB4444ToUVRow_Any_NEON(const uint8* src_argb4444, | 1170 void ARGB4444ToUVRow_Any_NEON(const uint8* src_argb4444, |
1135 int src_stride_argb4444, | 1171 int src_stride_argb4444, |
1136 uint8* dst_u, | 1172 uint8* dst_u, |
1137 uint8* dst_v, | 1173 uint8* dst_v, |
1138 int width); | 1174 int width); |
| 1175 void ARGBToUVJRow_Any_MSA(const uint8* src_argb, |
| 1176 int src_stride_argb, |
| 1177 uint8* dst_u, |
| 1178 uint8* dst_v, |
| 1179 int width); |
| 1180 void BGRAToUVRow_Any_MSA(const uint8* src_bgra, |
| 1181 int src_stride_bgra, |
| 1182 uint8* dst_u, |
| 1183 uint8* dst_v, |
| 1184 int width); |
| 1185 void ABGRToUVRow_Any_MSA(const uint8* src_abgr, |
| 1186 int src_stride_abgr, |
| 1187 uint8* dst_u, |
| 1188 uint8* dst_v, |
| 1189 int width); |
| 1190 void RGBAToUVRow_Any_MSA(const uint8* src_rgba, |
| 1191 int src_stride_rgba, |
| 1192 uint8* dst_u, |
| 1193 uint8* dst_v, |
| 1194 int width); |
1139 void RGB24ToUVRow_Any_MSA(const uint8* src_rgb24, | 1195 void RGB24ToUVRow_Any_MSA(const uint8* src_rgb24, |
1140 int src_stride_rgb24, | 1196 int src_stride_rgb24, |
1141 uint8* dst_u, | 1197 uint8* dst_u, |
1142 uint8* dst_v, | 1198 uint8* dst_v, |
1143 int width); | 1199 int width); |
1144 void RAWToUVRow_Any_MSA(const uint8* src_raw, | 1200 void RAWToUVRow_Any_MSA(const uint8* src_raw, |
1145 int src_stride_raw, | 1201 int src_stride_raw, |
1146 uint8* dst_u, | 1202 uint8* dst_u, |
1147 uint8* dst_v, | 1203 uint8* dst_v, |
1148 int width); | 1204 int width); |
(...skipping 1884 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3033 int width, | 3089 int width, |
3034 const uint8* luma, | 3090 const uint8* luma, |
3035 uint32 lumacoeff); | 3091 uint32 lumacoeff); |
3036 | 3092 |
3037 #ifdef __cplusplus | 3093 #ifdef __cplusplus |
3038 } // extern "C" | 3094 } // extern "C" |
3039 } // namespace libyuv | 3095 } // namespace libyuv |
3040 #endif | 3096 #endif |
3041 | 3097 |
3042 #endif // INCLUDE_LIBYUV_ROW_H_ | 3098 #endif // INCLUDE_LIBYUV_ROW_H_ |
OLD | NEW |