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 971 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
982 #define UG 25 /* round(0.391 * 64) */ | 982 #define UG 25 /* round(0.391 * 64) */ |
983 #define VG 52 /* round(0.813 * 64) */ | 983 #define VG 52 /* round(0.813 * 64) */ |
984 #define VR -102 /* round(-1.596 * 64) */ | 984 #define VR -102 /* round(-1.596 * 64) */ |
985 | 985 |
986 // Bias values to subtract 16 from Y and 128 from U and V. | 986 // Bias values to subtract 16 from Y and 128 from U and V. |
987 #define BB (UB * 128 + YGB) | 987 #define BB (UB * 128 + YGB) |
988 #define BG (UG * 128 + VG * 128 + YGB) | 988 #define BG (UG * 128 + VG * 128 + YGB) |
989 #define BR (VR * 128 + YGB) | 989 #define BR (VR * 128 + YGB) |
990 | 990 |
991 #if defined(__aarch64__) // 64 bit arm | 991 #if defined(__aarch64__) // 64 bit arm |
992 const YuvConstants SIMD_ALIGNED(kYuvI601Constants) = { | 992 const struct YuvConstants SIMD_ALIGNED(kYuvI601Constants) = { |
993 { -UB, -VR, -UB, -VR, -UB, -VR, -UB, -VR }, | 993 { -UB, -VR, -UB, -VR, -UB, -VR, -UB, -VR }, |
994 { -UB, -VR, -UB, -VR, -UB, -VR, -UB, -VR }, | 994 { -UB, -VR, -UB, -VR, -UB, -VR, -UB, -VR }, |
995 { UG, VG, UG, VG, UG, VG, UG, VG }, | 995 { UG, VG, UG, VG, UG, VG, UG, VG }, |
996 { UG, VG, UG, VG, UG, VG, UG, VG }, | 996 { UG, VG, UG, VG, UG, VG, UG, VG }, |
997 { BB, BG, BR, 0, 0, 0, 0, 0 }, | 997 { BB, BG, BR, 0, 0, 0, 0, 0 }, |
998 { 0x0101 * YG, 0, 0, 0 } | 998 { 0x0101 * YG, 0, 0, 0 } |
999 }; | 999 }; |
1000 const YuvConstants SIMD_ALIGNED(kYvuI601Constants) = { | 1000 const struct YuvConstants SIMD_ALIGNED(kYvuI601Constants) = { |
1001 { -VR, -UB, -VR, -UB, -VR, -UB, -VR, -UB }, | 1001 { -VR, -UB, -VR, -UB, -VR, -UB, -VR, -UB }, |
1002 { -VR, -UB, -VR, -UB, -VR, -UB, -VR, -UB }, | 1002 { -VR, -UB, -VR, -UB, -VR, -UB, -VR, -UB }, |
1003 { VG, UG, VG, UG, VG, UG, VG, UG }, | 1003 { VG, UG, VG, UG, VG, UG, VG, UG }, |
1004 { VG, UG, VG, UG, VG, UG, VG, UG }, | 1004 { VG, UG, VG, UG, VG, UG, VG, UG }, |
1005 { BR, BG, BB, 0, 0, 0, 0, 0 }, | 1005 { BR, BG, BB, 0, 0, 0, 0, 0 }, |
1006 { 0x0101 * YG, 0, 0, 0 } | 1006 { 0x0101 * YG, 0, 0, 0 } |
1007 }; | 1007 }; |
1008 #elif defined(__arm__) // 32 bit arm | 1008 #elif defined(__arm__) // 32 bit arm |
1009 const YuvConstants SIMD_ALIGNED(kYuvI601Constants) = { | 1009 const struct YuvConstants SIMD_ALIGNED(kYuvI601Constants) = { |
1010 { -UB, -UB, -UB, -UB, -VR, -VR, -VR, -VR, 0, 0, 0, 0, 0, 0, 0, 0 }, | 1010 { -UB, -UB, -UB, -UB, -VR, -VR, -VR, -VR, 0, 0, 0, 0, 0, 0, 0, 0 }, |
1011 { UG, UG, UG, UG, VG, VG, VG, VG, 0, 0, 0, 0, 0, 0, 0, 0 }, | 1011 { UG, UG, UG, UG, VG, VG, VG, VG, 0, 0, 0, 0, 0, 0, 0, 0 }, |
1012 { BB, BG, BR, 0, 0, 0, 0, 0 }, | 1012 { BB, BG, BR, 0, 0, 0, 0, 0 }, |
1013 { 0x0101 * YG, 0, 0, 0 } | 1013 { 0x0101 * YG, 0, 0, 0 } |
1014 }; | 1014 }; |
1015 const YuvConstants SIMD_ALIGNED(kYvuI601Constants) = { | 1015 const struct YuvConstants SIMD_ALIGNED(kYvuI601Constants) = { |
1016 { -VR, -VR, -VR, -VR, -UB, -UB, -UB, -UB, 0, 0, 0, 0, 0, 0, 0, 0 }, | 1016 { -VR, -VR, -VR, -VR, -UB, -UB, -UB, -UB, 0, 0, 0, 0, 0, 0, 0, 0 }, |
1017 { VG, VG, VG, VG, UG, UG, UG, UG, 0, 0, 0, 0, 0, 0, 0, 0 }, | 1017 { VG, VG, VG, VG, UG, UG, UG, UG, 0, 0, 0, 0, 0, 0, 0, 0 }, |
1018 { BR, BG, BB, 0, 0, 0, 0, 0 }, | 1018 { BR, BG, BB, 0, 0, 0, 0, 0 }, |
1019 { 0x0101 * YG, 0, 0, 0 } | 1019 { 0x0101 * YG, 0, 0, 0 } |
1020 }; | 1020 }; |
1021 #else | 1021 #else |
1022 const YuvConstants SIMD_ALIGNED32(kYuvI601Constants) = { | 1022 const struct YuvConstants SIMD_ALIGNED32(kYuvI601Constants) = { |
1023 { UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, | 1023 { UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, |
1024 UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0 }, | 1024 UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0 }, |
1025 { UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, | 1025 { UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, |
1026 UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG }, | 1026 UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG }, |
1027 { 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, | 1027 { 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, |
1028 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR }, | 1028 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR }, |
1029 { BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB }, | 1029 { BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB }, |
1030 { BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG }, | 1030 { BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG }, |
1031 { BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR }, | 1031 { BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR }, |
1032 { YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG } | 1032 { YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG } |
1033 }; | 1033 }; |
1034 const YuvConstants SIMD_ALIGNED32(kYvuI601Constants) = { | 1034 const struct YuvConstants SIMD_ALIGNED32(kYvuI601Constants) = { |
1035 { VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, | 1035 { VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, |
1036 VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0 }, | 1036 VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0 }, |
1037 { VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, | 1037 { VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, |
1038 VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG }, | 1038 VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG }, |
1039 { 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, | 1039 { 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, |
1040 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB }, | 1040 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB }, |
1041 { BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR }, | 1041 { BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR }, |
1042 { BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG }, | 1042 { BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG }, |
1043 { BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB }, | 1043 { BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB }, |
1044 { YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG } | 1044 { YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG } |
(...skipping 24 matching lines...) Expand all Loading... |
1069 #define UG 22 /* round(0.34414 * 64) */ | 1069 #define UG 22 /* round(0.34414 * 64) */ |
1070 #define VG 46 /* round(0.71414 * 64) */ | 1070 #define VG 46 /* round(0.71414 * 64) */ |
1071 #define VR -90 /* round(-1.40200 * 64) */ | 1071 #define VR -90 /* round(-1.40200 * 64) */ |
1072 | 1072 |
1073 // Bias values to round, and subtract 128 from U and V. | 1073 // Bias values to round, and subtract 128 from U and V. |
1074 #define BB (UB * 128 + YGB) | 1074 #define BB (UB * 128 + YGB) |
1075 #define BG (UG * 128 + VG * 128 + YGB) | 1075 #define BG (UG * 128 + VG * 128 + YGB) |
1076 #define BR (VR * 128 + YGB) | 1076 #define BR (VR * 128 + YGB) |
1077 | 1077 |
1078 #if defined(__aarch64__) | 1078 #if defined(__aarch64__) |
1079 const YuvConstants SIMD_ALIGNED(kYuvJPEGConstants) = { | 1079 const struct YuvConstants SIMD_ALIGNED(kYuvJPEGConstants) = { |
1080 { -UB, -VR, -UB, -VR, -UB, -VR, -UB, -VR }, | 1080 { -UB, -VR, -UB, -VR, -UB, -VR, -UB, -VR }, |
1081 { -UB, -VR, -UB, -VR, -UB, -VR, -UB, -VR }, | 1081 { -UB, -VR, -UB, -VR, -UB, -VR, -UB, -VR }, |
1082 { UG, VG, UG, VG, UG, VG, UG, VG }, | 1082 { UG, VG, UG, VG, UG, VG, UG, VG }, |
1083 { UG, VG, UG, VG, UG, VG, UG, VG }, | 1083 { UG, VG, UG, VG, UG, VG, UG, VG }, |
1084 { BB, BG, BR, 0, 0, 0, 0, 0 }, | 1084 { BB, BG, BR, 0, 0, 0, 0, 0 }, |
1085 { 0x0101 * YG, 0, 0, 0 } | 1085 { 0x0101 * YG, 0, 0, 0 } |
1086 }; | 1086 }; |
1087 const YuvConstants SIMD_ALIGNED(kYvuJPEGConstants) = { | 1087 const struct YuvConstants SIMD_ALIGNED(kYvuJPEGConstants) = { |
1088 { -VR, -UB, -VR, -UB, -VR, -UB, -VR, -UB }, | 1088 { -VR, -UB, -VR, -UB, -VR, -UB, -VR, -UB }, |
1089 { -VR, -UB, -VR, -UB, -VR, -UB, -VR, -UB }, | 1089 { -VR, -UB, -VR, -UB, -VR, -UB, -VR, -UB }, |
1090 { VG, UG, VG, UG, VG, UG, VG, UG }, | 1090 { VG, UG, VG, UG, VG, UG, VG, UG }, |
1091 { VG, UG, VG, UG, VG, UG, VG, UG }, | 1091 { VG, UG, VG, UG, VG, UG, VG, UG }, |
1092 { BR, BG, BB, 0, 0, 0, 0, 0 }, | 1092 { BR, BG, BB, 0, 0, 0, 0, 0 }, |
1093 { 0x0101 * YG, 0, 0, 0 } | 1093 { 0x0101 * YG, 0, 0, 0 } |
1094 }; | 1094 }; |
1095 #elif defined(__arm__) | 1095 #elif defined(__arm__) |
1096 const YuvConstants SIMD_ALIGNED(kYuvJPEGConstants) = { | 1096 const struct YuvConstants SIMD_ALIGNED(kYuvJPEGConstants) = { |
1097 { -UB, -UB, -UB, -UB, -VR, -VR, -VR, -VR, 0, 0, 0, 0, 0, 0, 0, 0 }, | 1097 { -UB, -UB, -UB, -UB, -VR, -VR, -VR, -VR, 0, 0, 0, 0, 0, 0, 0, 0 }, |
1098 { UG, UG, UG, UG, VG, VG, VG, VG, 0, 0, 0, 0, 0, 0, 0, 0 }, | 1098 { UG, UG, UG, UG, VG, VG, VG, VG, 0, 0, 0, 0, 0, 0, 0, 0 }, |
1099 { BB, BG, BR, 0, 0, 0, 0, 0 }, | 1099 { BB, BG, BR, 0, 0, 0, 0, 0 }, |
1100 { 0x0101 * YG, 0, 0, 0 } | 1100 { 0x0101 * YG, 0, 0, 0 } |
1101 }; | 1101 }; |
1102 const YuvConstants SIMD_ALIGNED(kYvuJPEGConstants) = { | 1102 const struct YuvConstants SIMD_ALIGNED(kYvuJPEGConstants) = { |
1103 { -VR, -VR, -VR, -VR, -UB, -UB, -UB, -UB, 0, 0, 0, 0, 0, 0, 0, 0 }, | 1103 { -VR, -VR, -VR, -VR, -UB, -UB, -UB, -UB, 0, 0, 0, 0, 0, 0, 0, 0 }, |
1104 { VG, VG, VG, VG, UG, UG, UG, UG, 0, 0, 0, 0, 0, 0, 0, 0 }, | 1104 { VG, VG, VG, VG, UG, UG, UG, UG, 0, 0, 0, 0, 0, 0, 0, 0 }, |
1105 { BR, BG, BB, 0, 0, 0, 0, 0 }, | 1105 { BR, BG, BB, 0, 0, 0, 0, 0 }, |
1106 { 0x0101 * YG, 0, 0, 0 } | 1106 { 0x0101 * YG, 0, 0, 0 } |
1107 }; | 1107 }; |
1108 #else | 1108 #else |
1109 const YuvConstants SIMD_ALIGNED32(kYuvJPEGConstants) = { | 1109 const struct YuvConstants SIMD_ALIGNED32(kYuvJPEGConstants) = { |
1110 { UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, | 1110 { UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, |
1111 UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0 }, | 1111 UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0 }, |
1112 { UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, | 1112 { UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, |
1113 UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG }, | 1113 UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG }, |
1114 { 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, | 1114 { 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, |
1115 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR }, | 1115 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR }, |
1116 { BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB }, | 1116 { BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB }, |
1117 { BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG }, | 1117 { BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG }, |
1118 { BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR }, | 1118 { BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR }, |
1119 { YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG } | 1119 { YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG } |
1120 }; | 1120 }; |
1121 const YuvConstants SIMD_ALIGNED32(kYvuJPEGConstants) = { | 1121 const struct YuvConstants SIMD_ALIGNED32(kYvuJPEGConstants) = { |
1122 { VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, | 1122 { VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, |
1123 VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0 }, | 1123 VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0 }, |
1124 { VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, | 1124 { VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, |
1125 VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG }, | 1125 VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG }, |
1126 { 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, | 1126 { 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, |
1127 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB }, | 1127 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB }, |
1128 { BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR }, | 1128 { BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR }, |
1129 { BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG }, | 1129 { BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG }, |
1130 { BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB }, | 1130 { BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB }, |
1131 { YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG } | 1131 { YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG } |
(...skipping 25 matching lines...) Expand all Loading... |
1157 #define UG 14 /* round(0.21482 * 64) */ | 1157 #define UG 14 /* round(0.21482 * 64) */ |
1158 #define VG 24 /* round(0.38059 * 64) */ | 1158 #define VG 24 /* round(0.38059 * 64) */ |
1159 #define VR -82 /* round(-1.28033 * 64) */ | 1159 #define VR -82 /* round(-1.28033 * 64) */ |
1160 | 1160 |
1161 // Bias values to round, and subtract 128 from U and V. | 1161 // Bias values to round, and subtract 128 from U and V. |
1162 #define BB (UB * 128 + YGB) | 1162 #define BB (UB * 128 + YGB) |
1163 #define BG (UG * 128 + VG * 128 + YGB) | 1163 #define BG (UG * 128 + VG * 128 + YGB) |
1164 #define BR (VR * 128 + YGB) | 1164 #define BR (VR * 128 + YGB) |
1165 | 1165 |
1166 #if defined(__aarch64__) | 1166 #if defined(__aarch64__) |
1167 const YuvConstants SIMD_ALIGNED(kYuvH709Constants) = { | 1167 const struct YuvConstants SIMD_ALIGNED(kYuvH709Constants) = { |
1168 { -UB, -VR, -UB, -VR, -UB, -VR, -UB, -VR }, | 1168 { -UB, -VR, -UB, -VR, -UB, -VR, -UB, -VR }, |
1169 { -UB, -VR, -UB, -VR, -UB, -VR, -UB, -VR }, | 1169 { -UB, -VR, -UB, -VR, -UB, -VR, -UB, -VR }, |
1170 { UG, VG, UG, VG, UG, VG, UG, VG }, | 1170 { UG, VG, UG, VG, UG, VG, UG, VG }, |
1171 { UG, VG, UG, VG, UG, VG, UG, VG }, | 1171 { UG, VG, UG, VG, UG, VG, UG, VG }, |
1172 { BB, BG, BR, 0, 0, 0, 0, 0 }, | 1172 { BB, BG, BR, 0, 0, 0, 0, 0 }, |
1173 { 0x0101 * YG, 0, 0, 0 } | 1173 { 0x0101 * YG, 0, 0, 0 } |
1174 }; | 1174 }; |
1175 const YuvConstants SIMD_ALIGNED(kYvuH709Constants) = { | 1175 const struct YuvConstants SIMD_ALIGNED(kYvuH709Constants) = { |
1176 { -VR, -UB, -VR, -UB, -VR, -UB, -VR, -UB }, | 1176 { -VR, -UB, -VR, -UB, -VR, -UB, -VR, -UB }, |
1177 { -VR, -UB, -VR, -UB, -VR, -UB, -VR, -UB }, | 1177 { -VR, -UB, -VR, -UB, -VR, -UB, -VR, -UB }, |
1178 { VG, UG, VG, UG, VG, UG, VG, UG }, | 1178 { VG, UG, VG, UG, VG, UG, VG, UG }, |
1179 { VG, UG, VG, UG, VG, UG, VG, UG }, | 1179 { VG, UG, VG, UG, VG, UG, VG, UG }, |
1180 { BR, BG, BB, 0, 0, 0, 0, 0 }, | 1180 { BR, BG, BB, 0, 0, 0, 0, 0 }, |
1181 { 0x0101 * YG, 0, 0, 0 } | 1181 { 0x0101 * YG, 0, 0, 0 } |
1182 }; | 1182 }; |
1183 #elif defined(__arm__) | 1183 #elif defined(__arm__) |
1184 const YuvConstants SIMD_ALIGNED(kYuvH709Constants) = { | 1184 const struct YuvConstants SIMD_ALIGNED(kYuvH709Constants) = { |
1185 { -UB, -UB, -UB, -UB, -VR, -VR, -VR, -VR, 0, 0, 0, 0, 0, 0, 0, 0 }, | 1185 { -UB, -UB, -UB, -UB, -VR, -VR, -VR, -VR, 0, 0, 0, 0, 0, 0, 0, 0 }, |
1186 { UG, UG, UG, UG, VG, VG, VG, VG, 0, 0, 0, 0, 0, 0, 0, 0 }, | 1186 { UG, UG, UG, UG, VG, VG, VG, VG, 0, 0, 0, 0, 0, 0, 0, 0 }, |
1187 { BB, BG, BR, 0, 0, 0, 0, 0 }, | 1187 { BB, BG, BR, 0, 0, 0, 0, 0 }, |
1188 { 0x0101 * YG, 0, 0, 0 } | 1188 { 0x0101 * YG, 0, 0, 0 } |
1189 }; | 1189 }; |
1190 const YuvConstants SIMD_ALIGNED(kYvuH709Constants) = { | 1190 const struct YuvConstants SIMD_ALIGNED(kYvuH709Constants) = { |
1191 { -VR, -VR, -VR, -VR, -UB, -UB, -UB, -UB, 0, 0, 0, 0, 0, 0, 0, 0 }, | 1191 { -VR, -VR, -VR, -VR, -UB, -UB, -UB, -UB, 0, 0, 0, 0, 0, 0, 0, 0 }, |
1192 { VG, VG, VG, VG, UG, UG, UG, UG, 0, 0, 0, 0, 0, 0, 0, 0 }, | 1192 { VG, VG, VG, VG, UG, UG, UG, UG, 0, 0, 0, 0, 0, 0, 0, 0 }, |
1193 { BR, BG, BB, 0, 0, 0, 0, 0 }, | 1193 { BR, BG, BB, 0, 0, 0, 0, 0 }, |
1194 { 0x0101 * YG, 0, 0, 0 } | 1194 { 0x0101 * YG, 0, 0, 0 } |
1195 }; | 1195 }; |
1196 #else | 1196 #else |
1197 const YuvConstants SIMD_ALIGNED32(kYuvH709Constants) = { | 1197 const struct YuvConstants SIMD_ALIGNED32(kYuvH709Constants) = { |
1198 { UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, | 1198 { UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, |
1199 UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0 }, | 1199 UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0 }, |
1200 { UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, | 1200 { UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, |
1201 UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG }, | 1201 UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG }, |
1202 { 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, | 1202 { 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, |
1203 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR }, | 1203 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR }, |
1204 { BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB }, | 1204 { BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB }, |
1205 { BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG }, | 1205 { BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG }, |
1206 { BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR }, | 1206 { BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR }, |
1207 { YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG } | 1207 { YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG } |
1208 }; | 1208 }; |
1209 const YuvConstants SIMD_ALIGNED32(kYvuH709Constants) = { | 1209 const struct YuvConstants SIMD_ALIGNED32(kYvuH709Constants) = { |
1210 { VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, | 1210 { VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, |
1211 VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0 }, | 1211 VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0 }, |
1212 { VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, | 1212 { VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, |
1213 VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG }, | 1213 VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG }, |
1214 { 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, | 1214 { 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, |
1215 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB }, | 1215 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB }, |
1216 { BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR }, | 1216 { BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR }, |
1217 { BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG }, | 1217 { BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG }, |
1218 { BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB }, | 1218 { BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB }, |
1219 { YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG } | 1219 { YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG } |
(...skipping 1398 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2618 dst_rgb565 += twidth * 2; | 2618 dst_rgb565 += twidth * 2; |
2619 width -= twidth; | 2619 width -= twidth; |
2620 } | 2620 } |
2621 } | 2621 } |
2622 #endif | 2622 #endif |
2623 | 2623 |
2624 #ifdef __cplusplus | 2624 #ifdef __cplusplus |
2625 } // extern "C" | 2625 } // extern "C" |
2626 } // namespace libyuv | 2626 } // namespace libyuv |
2627 #endif | 2627 #endif |
OLD | NEW |