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 19 matching lines...) Expand all Loading... |
30 #else | 30 #else |
31 #define align_buffer_64(var, size) \ | 31 #define align_buffer_64(var, size) \ |
32 uint8* var##_mem = (uint8*)(malloc((size) + 63)); /* NOLINT */ \ | 32 uint8* var##_mem = (uint8*)(malloc((size) + 63)); /* NOLINT */ \ |
33 uint8* var = (uint8*)(((intptr_t)(var##_mem) + 63) & ~63) /* NOLINT */ | 33 uint8* var = (uint8*)(((intptr_t)(var##_mem) + 63) & ~63) /* NOLINT */ |
34 #endif | 34 #endif |
35 | 35 |
36 #define free_aligned_buffer_64(var) \ | 36 #define free_aligned_buffer_64(var) \ |
37 free(var##_mem); \ | 37 free(var##_mem); \ |
38 var = 0 | 38 var = 0 |
39 | 39 |
40 #if defined(__pnacl__) || defined(__CLR_VER) || defined(COVERAGE_ENABLED) || \ | 40 #if defined(__pnacl__) || defined(__CLR_VER) || \ |
41 defined(TARGET_IPHONE_SIMULATOR) || \ | 41 (defined(__i386__) && !defined(__SSE2__)) |
42 (defined(__i386__) && !defined(__SSE2__)) || \ | |
43 (defined(_MSC_VER) && defined(__clang__)) | |
44 #define LIBYUV_DISABLE_X86 | 42 #define LIBYUV_DISABLE_X86 |
45 #endif | 43 #endif |
46 // True if compiling for SSSE3 as a requirement. | 44 // True if compiling for SSSE3 as a requirement. |
47 #if defined(__SSSE3__) || (defined(_M_IX86_FP) && (_M_IX86_FP >= 3)) | 45 #if defined(__SSSE3__) || (defined(_M_IX86_FP) && (_M_IX86_FP >= 3)) |
48 #define LIBYUV_SSSE3_ONLY | 46 #define LIBYUV_SSSE3_ONLY |
49 #endif | 47 #endif |
50 | 48 |
| 49 #if defined(__native_client__) |
| 50 #define LIBYUV_DISABLE_NEON |
| 51 #endif |
51 // clang >= 3.5.0 required for Arm64. | 52 // clang >= 3.5.0 required for Arm64. |
52 #if defined(__clang__) && defined(__aarch64__) && !defined(LIBYUV_DISABLE_NEON) | 53 #if defined(__clang__) && defined(__aarch64__) && !defined(LIBYUV_DISABLE_NEON) |
53 #if (__clang_major__ < 3) || (__clang_major__ == 3 && (__clang_minor__ < 5)) | 54 #if (__clang_major__ < 3) || (__clang_major__ == 3 && (__clang_minor__ < 5)) |
54 #define LIBYUV_DISABLE_NEON | 55 #define LIBYUV_DISABLE_NEON |
55 #endif // clang >= 3.5 | 56 #endif // clang >= 3.5 |
56 #endif // __clang__ | 57 #endif // __clang__ |
57 | 58 |
58 // The following are available on all x86 platforms: | 59 // The following are available on all x86 platforms: |
59 #if !defined(LIBYUV_DISABLE_X86) && \ | 60 #if !defined(LIBYUV_DISABLE_X86) && \ |
60 (defined(_M_IX86) || defined(__x86_64__) || defined(__i386__)) | 61 (defined(_M_IX86) || defined(__x86_64__) || defined(__i386__)) |
61 // Conversions: | 62 // Conversions: |
62 #define HAS_ABGRTOUVROW_SSSE3 | 63 #define HAS_ABGRTOUVROW_SSSE3 |
63 #define HAS_ABGRTOYROW_SSSE3 | 64 #define HAS_ABGRTOYROW_SSSE3 |
64 #define HAS_ARGB1555TOARGBROW_SSE2 | 65 #define HAS_ARGB1555TOARGBROW_SSE2 |
65 #define HAS_ARGB4444TOARGBROW_SSE2 | 66 #define HAS_ARGB4444TOARGBROW_SSE2 |
| 67 #define HAS_ARGBSETROW_X86 |
66 #define HAS_ARGBSHUFFLEROW_SSE2 | 68 #define HAS_ARGBSHUFFLEROW_SSE2 |
67 #define HAS_ARGBSHUFFLEROW_SSSE3 | 69 #define HAS_ARGBSHUFFLEROW_SSSE3 |
68 #define HAS_ARGBTOARGB1555ROW_SSE2 | 70 #define HAS_ARGBTOARGB1555ROW_SSE2 |
69 #define HAS_ARGBTOARGB4444ROW_SSE2 | 71 #define HAS_ARGBTOARGB4444ROW_SSE2 |
70 #define HAS_ARGBTOBAYERGGROW_SSE2 | |
71 #define HAS_ARGBTORAWROW_SSSE3 | 72 #define HAS_ARGBTORAWROW_SSSE3 |
72 #define HAS_ARGBTORGB24ROW_SSSE3 | 73 #define HAS_ARGBTORGB24ROW_SSSE3 |
73 #define HAS_ARGBTORGB565ROW_SSE2 | 74 #define HAS_ARGBTORGB565ROW_SSE2 |
74 #define HAS_ARGBTOUV422ROW_SSSE3 | 75 #define HAS_ARGBTOUV422ROW_SSSE3 |
75 #define HAS_ARGBTOUV444ROW_SSSE3 | 76 #define HAS_ARGBTOUV444ROW_SSSE3 |
76 #define HAS_ARGBTOUVJROW_SSSE3 | 77 #define HAS_ARGBTOUVJROW_SSSE3 |
77 #define HAS_ARGBTOUVROW_SSSE3 | 78 #define HAS_ARGBTOUVROW_SSSE3 |
78 #define HAS_ARGBTOYJROW_SSSE3 | 79 #define HAS_ARGBTOYJROW_SSSE3 |
79 #define HAS_ARGBTOYROW_SSSE3 | 80 #define HAS_ARGBTOYROW_SSSE3 |
80 #define HAS_BGRATOUVROW_SSSE3 | 81 #define HAS_BGRATOUVROW_SSSE3 |
81 #define HAS_BGRATOYROW_SSSE3 | 82 #define HAS_BGRATOYROW_SSSE3 |
82 #define HAS_COPYROW_ERMS | 83 #define HAS_COPYROW_ERMS |
83 #define HAS_COPYROW_SSE2 | 84 #define HAS_COPYROW_SSE2 |
84 #define HAS_I400TOARGBROW_SSE2 | 85 #define HAS_I400TOARGBROW_SSE2 |
85 #define HAS_I411TOARGBROW_SSSE3 | 86 #define HAS_I411TOARGBROW_SSSE3 |
86 #define HAS_I422TOABGRROW_SSSE3 | 87 #define HAS_I422TOABGRROW_SSSE3 |
87 #define HAS_I422TOARGB1555ROW_SSSE3 | 88 #define HAS_I422TOARGB1555ROW_SSSE3 |
88 #define HAS_I422TOARGB4444ROW_SSSE3 | 89 #define HAS_I422TOARGB4444ROW_SSSE3 |
89 #define HAS_I422TOARGBROW_SSSE3 | 90 #define HAS_I422TOARGBROW_SSSE3 |
90 #define HAS_I422TOBGRAROW_SSSE3 | 91 #define HAS_I422TOBGRAROW_SSSE3 |
91 #define HAS_I422TORAWROW_SSSE3 | 92 #define HAS_I422TORAWROW_SSSE3 |
92 #define HAS_I422TORGB24ROW_SSSE3 | 93 #define HAS_I422TORGB24ROW_SSSE3 |
93 #define HAS_I422TORGB565ROW_SSSE3 | 94 #define HAS_I422TORGB565ROW_SSSE3 |
94 #define HAS_I422TORGBAROW_SSSE3 | 95 #define HAS_I422TORGBAROW_SSSE3 |
95 #define HAS_I422TOUYVYROW_SSE2 | 96 #define HAS_I422TOUYVYROW_SSE2 |
96 #define HAS_I422TOYUY2ROW_SSE2 | 97 #define HAS_I422TOYUY2ROW_SSE2 |
97 #define HAS_I444TOARGBROW_SSSE3 | 98 #define HAS_I444TOARGBROW_SSSE3 |
98 // #define HAS_J422TOARGBROW_SSSE3 | 99 #define HAS_J400TOARGBROW_SSE2 |
| 100 #define HAS_J422TOARGBROW_SSSE3 |
99 #define HAS_MERGEUVROW_SSE2 | 101 #define HAS_MERGEUVROW_SSE2 |
100 #define HAS_MIRRORROW_SSE2 | 102 #define HAS_MIRRORROW_SSE2 |
101 #define HAS_MIRRORROW_SSSE3 | 103 #define HAS_MIRRORROW_SSSE3 |
102 #define HAS_MIRRORROW_UV_SSSE3 | 104 #define HAS_MIRRORROW_UV_SSSE3 |
103 #define HAS_MIRRORUVROW_SSSE3 | 105 #define HAS_MIRRORUVROW_SSSE3 |
104 #define HAS_NV12TOARGBROW_SSSE3 | 106 #define HAS_NV12TOARGBROW_SSSE3 |
105 #define HAS_NV12TORGB565ROW_SSSE3 | 107 #define HAS_NV12TORGB565ROW_SSSE3 |
106 #define HAS_NV21TOARGBROW_SSSE3 | 108 #define HAS_NV21TOARGBROW_SSSE3 |
107 #define HAS_NV21TORGB565ROW_SSSE3 | 109 #define HAS_NV21TORGB565ROW_SSSE3 |
108 #define HAS_RAWTOARGBROW_SSSE3 | 110 #define HAS_RAWTOARGBROW_SSSE3 |
109 #define HAS_RAWTOYROW_SSSE3 | 111 #define HAS_RAWTOYROW_SSSE3 |
110 #define HAS_RGB24TOARGBROW_SSSE3 | 112 #define HAS_RGB24TOARGBROW_SSSE3 |
111 #define HAS_RGB24TOYROW_SSSE3 | 113 #define HAS_RGB24TOYROW_SSSE3 |
112 #define HAS_RGB565TOARGBROW_SSE2 | 114 #define HAS_RGB565TOARGBROW_SSE2 |
113 #define HAS_RGBATOUVROW_SSSE3 | 115 #define HAS_RGBATOUVROW_SSSE3 |
114 #define HAS_RGBATOYROW_SSSE3 | 116 #define HAS_RGBATOYROW_SSSE3 |
| 117 #define HAS_SETROW_ERMS |
115 #define HAS_SETROW_X86 | 118 #define HAS_SETROW_X86 |
116 #define HAS_SETROW_ERMS | |
117 #define HAS_ARGBSETROW_X86 | |
118 #define HAS_SPLITUVROW_SSE2 | 119 #define HAS_SPLITUVROW_SSE2 |
119 #define HAS_UYVYTOARGBROW_SSSE3 | 120 #define HAS_UYVYTOARGBROW_SSSE3 |
120 #define HAS_UYVYTOUV422ROW_SSE2 | 121 #define HAS_UYVYTOUV422ROW_SSE2 |
121 #define HAS_UYVYTOUVROW_SSE2 | 122 #define HAS_UYVYTOUVROW_SSE2 |
122 #define HAS_UYVYTOYROW_SSE2 | 123 #define HAS_UYVYTOYROW_SSE2 |
123 #define HAS_YTOARGBROW_SSE2 | |
124 #define HAS_YUY2TOARGBROW_SSSE3 | 124 #define HAS_YUY2TOARGBROW_SSSE3 |
125 #define HAS_YUY2TOUV422ROW_SSE2 | 125 #define HAS_YUY2TOUV422ROW_SSE2 |
126 #define HAS_YUY2TOUVROW_SSE2 | 126 #define HAS_YUY2TOUVROW_SSE2 |
127 #define HAS_YUY2TOYROW_SSE2 | 127 #define HAS_YUY2TOYROW_SSE2 |
128 | 128 |
129 // Effects: | 129 // Effects: |
130 #define HAS_ARGBADDROW_SSE2 | 130 #define HAS_ARGBADDROW_SSE2 |
131 #define HAS_ARGBAFFINEROW_SSE2 | 131 #define HAS_ARGBAFFINEROW_SSE2 |
132 #define HAS_ARGBATTENUATEROW_SSSE3 | 132 #define HAS_ARGBATTENUATEROW_SSSE3 |
133 #define HAS_ARGBBLENDROW_SSSE3 | 133 #define HAS_ARGBBLENDROW_SSSE3 |
(...skipping 16 matching lines...) Expand all Loading... |
150 #define HAS_INTERPOLATEROW_SSE2 | 150 #define HAS_INTERPOLATEROW_SSE2 |
151 #define HAS_INTERPOLATEROW_SSSE3 | 151 #define HAS_INTERPOLATEROW_SSSE3 |
152 #define HAS_RGBCOLORTABLEROW_X86 | 152 #define HAS_RGBCOLORTABLEROW_X86 |
153 #define HAS_SOBELROW_SSE2 | 153 #define HAS_SOBELROW_SSE2 |
154 #define HAS_SOBELTOPLANEROW_SSE2 | 154 #define HAS_SOBELTOPLANEROW_SSE2 |
155 #define HAS_SOBELXROW_SSE2 | 155 #define HAS_SOBELXROW_SSE2 |
156 #define HAS_SOBELXYROW_SSE2 | 156 #define HAS_SOBELXYROW_SSE2 |
157 #define HAS_SOBELYROW_SSE2 | 157 #define HAS_SOBELYROW_SSE2 |
158 #endif | 158 #endif |
159 | 159 |
160 // The following are available on x64 Visual C: | 160 // The following are available on x64 Visual C and clangcl. |
161 #if !defined(LIBYUV_DISABLE_X86) && defined (_M_X64) | 161 #if !defined(LIBYUV_DISABLE_X86) && defined (_M_X64) && \ |
| 162 (!defined(__clang__) || defined(__SSSE3__)) |
162 #define HAS_I422TOARGBROW_SSSE3 | 163 #define HAS_I422TOARGBROW_SSSE3 |
163 #endif | 164 #endif |
164 | 165 |
165 // GCC >= 4.7.0 required for AVX2. | 166 // GCC >= 4.7.0 required for AVX2. |
166 #if defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__)) | 167 #if defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__)) |
167 #if (__GNUC__ > 4) || (__GNUC__ == 4 && (__GNUC_MINOR__ >= 7)) | 168 #if (__GNUC__ > 4) || (__GNUC__ == 4 && (__GNUC_MINOR__ >= 7)) |
168 #define GCC_HAS_AVX2 1 | 169 #define GCC_HAS_AVX2 1 |
169 #endif // GNUC >= 4.7 | 170 #endif // GNUC >= 4.7 |
170 #endif // __GNUC__ | 171 #endif // __GNUC__ |
171 | 172 |
172 // clang >= 3.4.0 required for AVX2. | 173 // clang >= 3.4.0 required for AVX2. |
173 #if defined(__clang__) && (defined(__x86_64__) || defined(__i386__)) | 174 #if defined(__clang__) && (defined(__x86_64__) || defined(__i386__)) |
174 #if (__clang_major__ > 3) || (__clang_major__ == 3 && (__clang_minor__ >= 4)) | 175 #if (__clang_major__ > 3) || (__clang_major__ == 3 && (__clang_minor__ >= 4)) |
175 #define CLANG_HAS_AVX2 1 | 176 #define CLANG_HAS_AVX2 1 |
176 #endif // clang >= 3.4 | 177 #endif // clang >= 3.4 |
177 #endif // __clang__ | 178 #endif // __clang__ |
178 | 179 |
179 // Visual C 2012 required for AVX2. | 180 // Visual C 2012 required for AVX2. |
180 #if defined(_M_IX86) && defined(_MSC_VER) && _MSC_VER >= 1700 | 181 #if defined(_M_IX86) && !defined(__clang__) && \ |
| 182 defined(_MSC_VER) && _MSC_VER >= 1700 |
181 #define VISUALC_HAS_AVX2 1 | 183 #define VISUALC_HAS_AVX2 1 |
182 #endif // VisualStudio >= 2012 | 184 #endif // VisualStudio >= 2012 |
183 | 185 |
184 // The following are available require VS2012. Port to GCC. | 186 // The following are available require VS2012. Port to GCC. |
185 #if !defined(LIBYUV_DISABLE_X86) && defined(VISUALC_HAS_AVX2) | 187 #if !defined(LIBYUV_DISABLE_X86) && defined(VISUALC_HAS_AVX2) |
186 // TODO(fbarchard): fix AVX2 versions of YUV conversion. bug=393 | 188 #define HAS_ARGB1555TOARGBROW_AVX2 |
187 #define HAS_I422TOABGRROW_AVX2 | 189 #define HAS_ARGB4444TOARGBROW_AVX2 |
188 #define HAS_I422TOARGBROW_AVX2 | |
189 #define HAS_I422TOBGRAROW_AVX2 | |
190 #define HAS_I422TORGBAROW_AVX2 | |
191 #define HAS_NV12TOARGBROW_AVX2 | |
192 #define HAS_NV21TOARGBROW_AVX2 | |
193 #define HAS_ARGBTORGB565ROW_AVX2 | |
194 #define HAS_ARGBTOARGB1555ROW_AVX2 | 190 #define HAS_ARGBTOARGB1555ROW_AVX2 |
195 #define HAS_ARGBTOARGB4444ROW_AVX2 | 191 #define HAS_ARGBTOARGB4444ROW_AVX2 |
196 #define HAS_NV12TORGB565ROW_AVX2 | 192 #define HAS_ARGBTORGB565DITHERROW_AVX2 |
197 #define HAS_NV21TORGB565ROW_AVX2 | 193 #define HAS_ARGBTORGB565DITHERROW_SSE2 |
198 #define HAS_I422TORGB565ROW_AVX2 | 194 #define HAS_ARGBTORGB565ROW_AVX2 |
| 195 #define HAS_I411TOARGBROW_AVX2 |
199 #define HAS_I422TOARGB1555ROW_AVX2 | 196 #define HAS_I422TOARGB1555ROW_AVX2 |
200 #define HAS_I422TOARGB4444ROW_AVX2 | 197 #define HAS_I422TOARGB4444ROW_AVX2 |
| 198 #define HAS_I422TORGB565ROW_AVX2 |
| 199 #define HAS_I444TOARGBROW_AVX2 |
| 200 #define HAS_J400TOARGBROW_AVX2 |
| 201 #define HAS_NV12TOARGBROW_AVX2 |
| 202 #define HAS_NV12TORGB565ROW_AVX2 |
| 203 #define HAS_NV21TOARGBROW_AVX2 |
| 204 #define HAS_NV21TORGB565ROW_AVX2 |
| 205 #define HAS_RGB565TOARGBROW_AVX2 |
201 #endif | 206 #endif |
202 | 207 |
203 // The following are available on all x86 platforms, but | 208 // The following are available on all x86 platforms, but |
204 // require VS2012, clang 3.4 or gcc 4.7. | 209 // require VS2012, clang 3.4 or gcc 4.7. |
205 // The code supports NaCL but requires a new compiler and validator. | 210 // The code supports NaCL but requires a new compiler and validator. |
206 #if !defined(LIBYUV_DISABLE_X86) && (defined(VISUALC_HAS_AVX2) || \ | 211 #if !defined(LIBYUV_DISABLE_X86) && (defined(VISUALC_HAS_AVX2) || \ |
207 defined(CLANG_HAS_AVX2) || defined(GCC_HAS_AVX2)) | 212 defined(CLANG_HAS_AVX2) || defined(GCC_HAS_AVX2)) |
208 #define HAS_ARGBCOPYALPHAROW_AVX2 | 213 #define HAS_ARGBCOPYALPHAROW_AVX2 |
209 #define HAS_ARGBCOPYYTOALPHAROW_AVX2 | 214 #define HAS_ARGBCOPYYTOALPHAROW_AVX2 |
210 #define HAS_ARGBMIRRORROW_AVX2 | 215 #define HAS_ARGBMIRRORROW_AVX2 |
211 #define HAS_ARGBPOLYNOMIALROW_AVX2 | 216 #define HAS_ARGBPOLYNOMIALROW_AVX2 |
212 #define HAS_ARGBSHUFFLEROW_AVX2 | 217 #define HAS_ARGBSHUFFLEROW_AVX2 |
213 #define HAS_ARGBTOUVROW_AVX2 | 218 #define HAS_ARGBTOUVROW_AVX2 |
214 #define HAS_ARGBTOYJROW_AVX2 | 219 #define HAS_ARGBTOYJROW_AVX2 |
215 #define HAS_ARGBTOYROW_AVX2 | 220 #define HAS_ARGBTOYROW_AVX2 |
216 #define HAS_COPYROW_AVX | 221 #define HAS_COPYROW_AVX |
| 222 #define HAS_I400TOARGBROW_AVX2 |
| 223 #define HAS_I422TOABGRROW_AVX2 |
| 224 #define HAS_I422TOARGBROW_AVX2 |
| 225 #define HAS_I422TOBGRAROW_AVX2 |
| 226 #define HAS_I422TORAWROW_AVX2 |
| 227 #define HAS_I422TORGB24ROW_AVX2 |
| 228 #define HAS_I422TORGBAROW_AVX2 |
217 #define HAS_INTERPOLATEROW_AVX2 | 229 #define HAS_INTERPOLATEROW_AVX2 |
| 230 #define HAS_J422TOARGBROW_AVX2 |
218 #define HAS_MERGEUVROW_AVX2 | 231 #define HAS_MERGEUVROW_AVX2 |
219 #define HAS_MIRRORROW_AVX2 | 232 #define HAS_MIRRORROW_AVX2 |
220 #define HAS_SPLITUVROW_AVX2 | 233 #define HAS_SPLITUVROW_AVX2 |
| 234 #define HAS_UYVYTOARGBROW_AVX2 |
221 #define HAS_UYVYTOUV422ROW_AVX2 | 235 #define HAS_UYVYTOUV422ROW_AVX2 |
222 #define HAS_UYVYTOUVROW_AVX2 | 236 #define HAS_UYVYTOUVROW_AVX2 |
223 #define HAS_UYVYTOYROW_AVX2 | 237 #define HAS_UYVYTOYROW_AVX2 |
224 #define HAS_YTOARGBROW_AVX2 | 238 #define HAS_YUY2TOARGBROW_AVX2 |
225 #define HAS_YUY2TOUV422ROW_AVX2 | 239 #define HAS_YUY2TOUV422ROW_AVX2 |
226 #define HAS_YUY2TOUVROW_AVX2 | 240 #define HAS_YUY2TOUVROW_AVX2 |
227 #define HAS_YUY2TOYROW_AVX2 | 241 #define HAS_YUY2TOYROW_AVX2 |
228 | 242 |
229 // The following require HAS_I422TOARGBROW_AVX2 | |
230 #if defined(HAS_I422TOARGBROW_AVX2) | |
231 #define HAS_YUY2TOARGBROW_AVX2 | |
232 #define HAS_UYVYTOARGBROW_AVX2 | |
233 #endif | |
234 | |
235 // Effects: | 243 // Effects: |
236 #define HAS_ARGBADDROW_AVX2 | 244 #define HAS_ARGBADDROW_AVX2 |
237 #define HAS_ARGBATTENUATEROW_AVX2 | 245 #define HAS_ARGBATTENUATEROW_AVX2 |
238 #define HAS_ARGBMULTIPLYROW_AVX2 | 246 #define HAS_ARGBMULTIPLYROW_AVX2 |
239 #define HAS_ARGBSUBTRACTROW_AVX2 | 247 #define HAS_ARGBSUBTRACTROW_AVX2 |
240 #define HAS_ARGBUNATTENUATEROW_AVX2 | 248 #define HAS_ARGBUNATTENUATEROW_AVX2 |
241 #endif | 249 #endif |
242 | 250 |
243 | |
244 // The following are Yasm x86 only: | |
245 // TODO(fbarchard): Port AVX2 to inline. | |
246 #if !defined(LIBYUV_DISABLE_X86) && defined(HAVE_YASM) | |
247 (defined(_M_IX86) || defined(_M_X64) || \ | |
248 defined(__x86_64__) || defined(__i386__)) | |
249 #define HAS_MERGEUVROW_AVX2 | |
250 #define HAS_MERGEUVROW_MMX | |
251 #define HAS_SPLITUVROW_AVX2 | |
252 #define HAS_SPLITUVROW_MMX | |
253 #define HAS_UYVYTOYROW_AVX2 | |
254 #define HAS_UYVYTOYROW_MMX | |
255 #define HAS_YUY2TOYROW_AVX2 | |
256 #define HAS_YUY2TOYROW_MMX | |
257 #endif | |
258 | |
259 // The following are disabled when SSSE3 is available: | 251 // The following are disabled when SSSE3 is available: |
260 #if !defined(LIBYUV_DISABLE_X86) && \ | 252 #if !defined(LIBYUV_DISABLE_X86) && \ |
261 (defined(_M_IX86) || defined(__x86_64__) || defined(__i386__)) && \ | 253 (defined(_M_IX86) || defined(__x86_64__) || defined(__i386__)) && \ |
262 !defined(LIBYUV_SSSE3_ONLY) | 254 !defined(LIBYUV_SSSE3_ONLY) |
263 #define HAS_ARGBATTENUATEROW_SSE2 | 255 #define HAS_ARGBATTENUATEROW_SSE2 |
264 #define HAS_ARGBBLENDROW_SSE2 | 256 #define HAS_ARGBBLENDROW_SSE2 |
265 #define HAS_MIRRORROW_SSE2 | 257 #define HAS_MIRRORROW_SSE2 |
266 #endif | 258 #endif |
267 | 259 |
268 // The following are available on Neon platforms: | 260 // The following are available on Neon platforms: |
269 #if !defined(LIBYUV_DISABLE_NEON) && \ | 261 #if !defined(LIBYUV_DISABLE_NEON) && \ |
270 (defined(__aarch64__) || defined(__ARM_NEON__) || defined(LIBYUV_NEON)) | 262 (defined(__aarch64__) || defined(__ARM_NEON__) || defined(LIBYUV_NEON)) |
271 #define HAS_ABGRTOUVROW_NEON | 263 #define HAS_ABGRTOUVROW_NEON |
272 #define HAS_ABGRTOYROW_NEON | 264 #define HAS_ABGRTOYROW_NEON |
273 #define HAS_ARGB1555TOARGBROW_NEON | 265 #define HAS_ARGB1555TOARGBROW_NEON |
274 #define HAS_ARGB1555TOUVROW_NEON | 266 #define HAS_ARGB1555TOUVROW_NEON |
275 #define HAS_ARGB1555TOYROW_NEON | 267 #define HAS_ARGB1555TOYROW_NEON |
276 #define HAS_ARGB4444TOARGBROW_NEON | 268 #define HAS_ARGB4444TOARGBROW_NEON |
277 #define HAS_ARGB4444TOUVROW_NEON | 269 #define HAS_ARGB4444TOUVROW_NEON |
278 #define HAS_ARGB4444TOYROW_NEON | 270 #define HAS_ARGB4444TOYROW_NEON |
279 #define HAS_ARGBTOARGB1555ROW_NEON | 271 #define HAS_ARGBTOARGB1555ROW_NEON |
280 #define HAS_ARGBTOARGB4444ROW_NEON | 272 #define HAS_ARGBTOARGB4444ROW_NEON |
281 #define HAS_ARGBTOBAYERGGROW_NEON | |
282 #define HAS_ARGBTORAWROW_NEON | 273 #define HAS_ARGBTORAWROW_NEON |
283 #define HAS_ARGBTORGB24ROW_NEON | 274 #define HAS_ARGBTORGB24ROW_NEON |
284 #define HAS_ARGBTORGB565ROW_NEON | 275 #define HAS_ARGBTORGB565ROW_NEON |
285 #define HAS_ARGBTOUV411ROW_NEON | 276 #define HAS_ARGBTOUV411ROW_NEON |
286 #define HAS_ARGBTOUV422ROW_NEON | 277 #define HAS_ARGBTOUV422ROW_NEON |
287 #define HAS_ARGBTOUV444ROW_NEON | 278 #define HAS_ARGBTOUV444ROW_NEON |
288 #define HAS_ARGBTOUVJROW_NEON | 279 #define HAS_ARGBTOUVJROW_NEON |
289 #define HAS_ARGBTOUVROW_NEON | 280 #define HAS_ARGBTOUVROW_NEON |
290 #define HAS_ARGBTOYJROW_NEON | 281 #define HAS_ARGBTOYJROW_NEON |
291 #define HAS_ARGBTOYROW_NEON | 282 #define HAS_ARGBTOYROW_NEON |
292 #define HAS_BGRATOUVROW_NEON | 283 #define HAS_BGRATOUVROW_NEON |
293 #define HAS_BGRATOYROW_NEON | 284 #define HAS_BGRATOYROW_NEON |
294 #define HAS_COPYROW_NEON | 285 #define HAS_COPYROW_NEON |
295 #define HAS_I400TOARGBROW_NEON | 286 #define HAS_J400TOARGBROW_NEON |
296 #define HAS_I411TOARGBROW_NEON | 287 #define HAS_I411TOARGBROW_NEON |
297 #define HAS_I422TOABGRROW_NEON | 288 #define HAS_I422TOABGRROW_NEON |
298 #define HAS_I422TOARGB1555ROW_NEON | 289 #define HAS_I422TOARGB1555ROW_NEON |
299 #define HAS_I422TOARGB4444ROW_NEON | 290 #define HAS_I422TOARGB4444ROW_NEON |
300 #define HAS_I422TOARGBROW_NEON | 291 #define HAS_I422TOARGBROW_NEON |
301 #define HAS_I422TOBGRAROW_NEON | 292 #define HAS_I422TOBGRAROW_NEON |
302 #define HAS_I422TORAWROW_NEON | 293 #define HAS_I422TORAWROW_NEON |
303 #define HAS_I422TORGB24ROW_NEON | 294 #define HAS_I422TORGB24ROW_NEON |
304 #define HAS_I422TORGB565ROW_NEON | 295 #define HAS_I422TORGB565ROW_NEON |
305 #define HAS_I422TORGBAROW_NEON | 296 #define HAS_I422TORGBAROW_NEON |
(...skipping 18 matching lines...) Expand all Loading... |
324 #define HAS_RGB565TOYROW_NEON | 315 #define HAS_RGB565TOYROW_NEON |
325 #define HAS_RGBATOUVROW_NEON | 316 #define HAS_RGBATOUVROW_NEON |
326 #define HAS_RGBATOYROW_NEON | 317 #define HAS_RGBATOYROW_NEON |
327 #define HAS_SETROW_NEON | 318 #define HAS_SETROW_NEON |
328 #define HAS_ARGBSETROW_NEON | 319 #define HAS_ARGBSETROW_NEON |
329 #define HAS_SPLITUVROW_NEON | 320 #define HAS_SPLITUVROW_NEON |
330 #define HAS_UYVYTOARGBROW_NEON | 321 #define HAS_UYVYTOARGBROW_NEON |
331 #define HAS_UYVYTOUV422ROW_NEON | 322 #define HAS_UYVYTOUV422ROW_NEON |
332 #define HAS_UYVYTOUVROW_NEON | 323 #define HAS_UYVYTOUVROW_NEON |
333 #define HAS_UYVYTOYROW_NEON | 324 #define HAS_UYVYTOYROW_NEON |
334 #define HAS_YTOARGBROW_NEON | 325 #define HAS_I400TOARGBROW_NEON |
335 #define HAS_YUY2TOARGBROW_NEON | 326 #define HAS_YUY2TOARGBROW_NEON |
336 #define HAS_YUY2TOUV422ROW_NEON | 327 #define HAS_YUY2TOUV422ROW_NEON |
337 #define HAS_YUY2TOUVROW_NEON | 328 #define HAS_YUY2TOUVROW_NEON |
338 #define HAS_YUY2TOYROW_NEON | 329 #define HAS_YUY2TOYROW_NEON |
| 330 #define HAS_ARGBTORGB565DITHERROW_NEON |
339 | 331 |
340 // Effects: | 332 // Effects: |
341 #define HAS_ARGBADDROW_NEON | 333 #define HAS_ARGBADDROW_NEON |
342 #define HAS_ARGBATTENUATEROW_NEON | 334 #define HAS_ARGBATTENUATEROW_NEON |
343 #define HAS_ARGBBLENDROW_NEON | 335 #define HAS_ARGBBLENDROW_NEON |
344 #define HAS_ARGBGRAYROW_NEON | 336 #define HAS_ARGBGRAYROW_NEON |
345 #define HAS_ARGBMIRRORROW_NEON | 337 #define HAS_ARGBMIRRORROW_NEON |
346 #define HAS_ARGBMULTIPLYROW_NEON | 338 #define HAS_ARGBMULTIPLYROW_NEON |
347 #define HAS_ARGBQUANTIZEROW_NEON | 339 #define HAS_ARGBQUANTIZEROW_NEON |
348 #define HAS_ARGBSEPIAROW_NEON | 340 #define HAS_ARGBSEPIAROW_NEON |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
381 typedef __declspec(align(16)) int8 vec8[16]; | 373 typedef __declspec(align(16)) int8 vec8[16]; |
382 typedef __declspec(align(16)) uint16 uvec16[8]; | 374 typedef __declspec(align(16)) uint16 uvec16[8]; |
383 typedef __declspec(align(16)) uint32 uvec32[4]; | 375 typedef __declspec(align(16)) uint32 uvec32[4]; |
384 typedef __declspec(align(16)) uint8 uvec8[16]; | 376 typedef __declspec(align(16)) uint8 uvec8[16]; |
385 typedef __declspec(align(32)) int16 lvec16[16]; | 377 typedef __declspec(align(32)) int16 lvec16[16]; |
386 typedef __declspec(align(32)) int32 lvec32[8]; | 378 typedef __declspec(align(32)) int32 lvec32[8]; |
387 typedef __declspec(align(32)) int8 lvec8[32]; | 379 typedef __declspec(align(32)) int8 lvec8[32]; |
388 typedef __declspec(align(32)) uint16 ulvec16[16]; | 380 typedef __declspec(align(32)) uint16 ulvec16[16]; |
389 typedef __declspec(align(32)) uint32 ulvec32[8]; | 381 typedef __declspec(align(32)) uint32 ulvec32[8]; |
390 typedef __declspec(align(32)) uint8 ulvec8[32]; | 382 typedef __declspec(align(32)) uint8 ulvec8[32]; |
391 | |
392 #elif defined(__GNUC__) | 383 #elif defined(__GNUC__) |
393 // Caveat GCC 4.2 to 4.7 have a known issue using vectors with const. | 384 // Caveat GCC 4.2 to 4.7 have a known issue using vectors with const. |
394 #define SIMD_ALIGNED(var) var __attribute__((aligned(16))) | 385 #define SIMD_ALIGNED(var) var __attribute__((aligned(16))) |
395 #define SIMD_ALIGNED32(var) var __attribute__((aligned(64))) | 386 #define SIMD_ALIGNED32(var) var __attribute__((aligned(64))) |
396 typedef int16 __attribute__((vector_size(16))) vec16; | 387 typedef int16 __attribute__((vector_size(16))) vec16; |
397 typedef int32 __attribute__((vector_size(16))) vec32; | 388 typedef int32 __attribute__((vector_size(16))) vec32; |
398 typedef int8 __attribute__((vector_size(16))) vec8; | 389 typedef int8 __attribute__((vector_size(16))) vec8; |
399 typedef uint16 __attribute__((vector_size(16))) uvec16; | 390 typedef uint16 __attribute__((vector_size(16))) uvec16; |
400 typedef uint32 __attribute__((vector_size(16))) uvec32; | 391 typedef uint32 __attribute__((vector_size(16))) uvec32; |
401 typedef uint8 __attribute__((vector_size(16))) uvec8; | 392 typedef uint8 __attribute__((vector_size(16))) uvec8; |
(...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
862 void ARGBShuffleRow_Any_NEON(const uint8* src_argb, uint8* dst_argb, | 853 void ARGBShuffleRow_Any_NEON(const uint8* src_argb, uint8* dst_argb, |
863 const uint8* shuffler, int pix); | 854 const uint8* shuffler, int pix); |
864 | 855 |
865 void RGB24ToARGBRow_SSSE3(const uint8* src_rgb24, uint8* dst_argb, int pix); | 856 void RGB24ToARGBRow_SSSE3(const uint8* src_rgb24, uint8* dst_argb, int pix); |
866 void RAWToARGBRow_SSSE3(const uint8* src_raw, uint8* dst_argb, int pix); | 857 void RAWToARGBRow_SSSE3(const uint8* src_raw, uint8* dst_argb, int pix); |
867 void RGB565ToARGBRow_SSE2(const uint8* src_rgb565, uint8* dst_argb, int pix); | 858 void RGB565ToARGBRow_SSE2(const uint8* src_rgb565, uint8* dst_argb, int pix); |
868 void ARGB1555ToARGBRow_SSE2(const uint8* src_argb1555, uint8* dst_argb, | 859 void ARGB1555ToARGBRow_SSE2(const uint8* src_argb1555, uint8* dst_argb, |
869 int pix); | 860 int pix); |
870 void ARGB4444ToARGBRow_SSE2(const uint8* src_argb4444, uint8* dst_argb, | 861 void ARGB4444ToARGBRow_SSE2(const uint8* src_argb4444, uint8* dst_argb, |
871 int pix); | 862 int pix); |
| 863 void RGB565ToARGBRow_AVX2(const uint8* src_rgb565, uint8* dst_argb, int pix); |
| 864 void ARGB1555ToARGBRow_AVX2(const uint8* src_argb1555, uint8* dst_argb, |
| 865 int pix); |
| 866 void ARGB4444ToARGBRow_AVX2(const uint8* src_argb4444, uint8* dst_argb, |
| 867 int pix); |
872 | 868 |
873 void RGB24ToARGBRow_NEON(const uint8* src_rgb24, uint8* dst_argb, int pix); | 869 void RGB24ToARGBRow_NEON(const uint8* src_rgb24, uint8* dst_argb, int pix); |
874 void RAWToARGBRow_NEON(const uint8* src_raw, uint8* dst_argb, int pix); | 870 void RAWToARGBRow_NEON(const uint8* src_raw, uint8* dst_argb, int pix); |
875 void RGB565ToARGBRow_NEON(const uint8* src_rgb565, uint8* dst_argb, int pix); | 871 void RGB565ToARGBRow_NEON(const uint8* src_rgb565, uint8* dst_argb, int pix); |
876 void ARGB1555ToARGBRow_NEON(const uint8* src_argb1555, uint8* dst_argb, | 872 void ARGB1555ToARGBRow_NEON(const uint8* src_argb1555, uint8* dst_argb, |
877 int pix); | 873 int pix); |
878 void ARGB4444ToARGBRow_NEON(const uint8* src_argb4444, uint8* dst_argb, | 874 void ARGB4444ToARGBRow_NEON(const uint8* src_argb4444, uint8* dst_argb, |
879 int pix); | 875 int pix); |
880 void RGB24ToARGBRow_C(const uint8* src_rgb24, uint8* dst_argb, int pix); | 876 void RGB24ToARGBRow_C(const uint8* src_rgb24, uint8* dst_argb, int pix); |
881 void RAWToARGBRow_C(const uint8* src_raw, uint8* dst_argb, int pix); | 877 void RAWToARGBRow_C(const uint8* src_raw, uint8* dst_argb, int pix); |
882 void RGB565ToARGBRow_C(const uint8* src_rgb, uint8* dst_argb, int pix); | 878 void RGB565ToARGBRow_C(const uint8* src_rgb, uint8* dst_argb, int pix); |
883 void ARGB1555ToARGBRow_C(const uint8* src_argb, uint8* dst_argb, int pix); | 879 void ARGB1555ToARGBRow_C(const uint8* src_argb, uint8* dst_argb, int pix); |
884 void ARGB4444ToARGBRow_C(const uint8* src_argb, uint8* dst_argb, int pix); | 880 void ARGB4444ToARGBRow_C(const uint8* src_argb, uint8* dst_argb, int pix); |
885 void RGB24ToARGBRow_Any_SSSE3(const uint8* src_rgb24, uint8* dst_argb, int pix); | 881 void RGB24ToARGBRow_Any_SSSE3(const uint8* src_rgb24, uint8* dst_argb, int pix); |
886 void RAWToARGBRow_Any_SSSE3(const uint8* src_raw, uint8* dst_argb, int pix); | 882 void RAWToARGBRow_Any_SSSE3(const uint8* src_raw, uint8* dst_argb, int pix); |
| 883 |
887 void RGB565ToARGBRow_Any_SSE2(const uint8* src_rgb565, uint8* dst_argb, | 884 void RGB565ToARGBRow_Any_SSE2(const uint8* src_rgb565, uint8* dst_argb, |
888 int pix); | 885 int pix); |
889 void ARGB1555ToARGBRow_Any_SSE2(const uint8* src_argb1555, uint8* dst_argb, | 886 void ARGB1555ToARGBRow_Any_SSE2(const uint8* src_argb1555, uint8* dst_argb, |
890 int pix); | 887 int pix); |
891 void ARGB4444ToARGBRow_Any_SSE2(const uint8* src_argb4444, uint8* dst_argb, | 888 void ARGB4444ToARGBRow_Any_SSE2(const uint8* src_argb4444, uint8* dst_argb, |
892 int pix); | 889 int pix); |
| 890 void RGB565ToARGBRow_Any_AVX2(const uint8* src_rgb565, uint8* dst_argb, |
| 891 int pix); |
| 892 void ARGB1555ToARGBRow_Any_AVX2(const uint8* src_argb1555, uint8* dst_argb, |
| 893 int pix); |
| 894 void ARGB4444ToARGBRow_Any_AVX2(const uint8* src_argb4444, uint8* dst_argb, |
| 895 int pix); |
| 896 |
893 void RGB24ToARGBRow_Any_NEON(const uint8* src_rgb24, uint8* dst_argb, int pix); | 897 void RGB24ToARGBRow_Any_NEON(const uint8* src_rgb24, uint8* dst_argb, int pix); |
894 void RAWToARGBRow_Any_NEON(const uint8* src_raw, uint8* dst_argb, int pix); | 898 void RAWToARGBRow_Any_NEON(const uint8* src_raw, uint8* dst_argb, int pix); |
895 void RGB565ToARGBRow_Any_NEON(const uint8* src_rgb565, uint8* dst_argb, | 899 void RGB565ToARGBRow_Any_NEON(const uint8* src_rgb565, uint8* dst_argb, |
896 int pix); | 900 int pix); |
897 void ARGB1555ToARGBRow_Any_NEON(const uint8* src_argb1555, uint8* dst_argb, | 901 void ARGB1555ToARGBRow_Any_NEON(const uint8* src_argb1555, uint8* dst_argb, |
898 int pix); | 902 int pix); |
899 void ARGB4444ToARGBRow_Any_NEON(const uint8* src_argb4444, uint8* dst_argb, | 903 void ARGB4444ToARGBRow_Any_NEON(const uint8* src_argb4444, uint8* dst_argb, |
900 int pix); | 904 int pix); |
901 | 905 |
902 void ARGBToRGB24Row_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix); | 906 void ARGBToRGB24Row_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix); |
903 void ARGBToRAWRow_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix); | 907 void ARGBToRAWRow_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix); |
904 void ARGBToRGB565Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix); | 908 void ARGBToRGB565Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix); |
905 void ARGBToARGB1555Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix); | 909 void ARGBToARGB1555Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix); |
906 void ARGBToARGB4444Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix); | 910 void ARGBToARGB4444Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix); |
907 | 911 |
| 912 void ARGBToRGB565DitherRow_C(const uint8* src_argb, uint8* dst_rgb, |
| 913 const uint32 dither4, int pix); |
| 914 void ARGBToRGB565DitherRow_SSE2(const uint8* src_argb, uint8* dst_rgb, |
| 915 const uint32 dither4, int pix); |
| 916 void ARGBToRGB565DitherRow_AVX2(const uint8* src_argb, uint8* dst_rgb, |
| 917 const uint32 dither4, int pix); |
| 918 |
908 void ARGBToRGB565Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix); | 919 void ARGBToRGB565Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix); |
909 void ARGBToARGB1555Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix); | 920 void ARGBToARGB1555Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix); |
910 void ARGBToARGB4444Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix); | 921 void ARGBToARGB4444Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix); |
911 | 922 |
912 void ARGBToRGB24Row_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); | 923 void ARGBToRGB24Row_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); |
913 void ARGBToRAWRow_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); | 924 void ARGBToRAWRow_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); |
914 void ARGBToRGB565Row_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); | 925 void ARGBToRGB565Row_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); |
915 void ARGBToARGB1555Row_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); | 926 void ARGBToARGB1555Row_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); |
916 void ARGBToARGB4444Row_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); | 927 void ARGBToARGB4444Row_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 928 void ARGBToRGB565DitherRow_NEON(const uint8* src_argb, uint8* dst_rgb, |
| 929 const uint32 dither4, int width); |
917 | 930 |
918 void ARGBToRGBARow_C(const uint8* src_argb, uint8* dst_rgb, int pix); | 931 void ARGBToRGBARow_C(const uint8* src_argb, uint8* dst_rgb, int pix); |
919 void ARGBToRGB24Row_C(const uint8* src_argb, uint8* dst_rgb, int pix); | 932 void ARGBToRGB24Row_C(const uint8* src_argb, uint8* dst_rgb, int pix); |
920 void ARGBToRAWRow_C(const uint8* src_argb, uint8* dst_rgb, int pix); | 933 void ARGBToRAWRow_C(const uint8* src_argb, uint8* dst_rgb, int pix); |
921 void ARGBToRGB565Row_C(const uint8* src_argb, uint8* dst_rgb, int pix); | 934 void ARGBToRGB565Row_C(const uint8* src_argb, uint8* dst_rgb, int pix); |
922 void ARGBToARGB1555Row_C(const uint8* src_argb, uint8* dst_rgb, int pix); | 935 void ARGBToARGB1555Row_C(const uint8* src_argb, uint8* dst_rgb, int pix); |
923 void ARGBToARGB4444Row_C(const uint8* src_argb, uint8* dst_rgb, int pix); | 936 void ARGBToARGB4444Row_C(const uint8* src_argb, uint8* dst_rgb, int pix); |
924 | 937 |
925 void ARGBToRGB565DitherRow_C(const uint8* src_argb, uint8* dst_rgb, | 938 void J400ToARGBRow_SSE2(const uint8* src_y, uint8* dst_argb, int pix); |
926 const uint8* dither8x8, int pix); | 939 void J400ToARGBRow_AVX2(const uint8* src_y, uint8* dst_argb, int pix); |
927 | 940 void J400ToARGBRow_NEON(const uint8* src_y, uint8* dst_argb, int pix); |
928 void I400ToARGBRow_SSE2(const uint8* src_y, uint8* dst_argb, int pix); | 941 void J400ToARGBRow_C(const uint8* src_y, uint8* dst_argb, int pix); |
929 void I400ToARGBRow_NEON(const uint8* src_y, uint8* dst_argb, int pix); | 942 void J400ToARGBRow_Any_SSE2(const uint8* src_y, uint8* dst_argb, int pix); |
930 void I400ToARGBRow_C(const uint8* src_y, uint8* dst_argb, int pix); | 943 void J400ToARGBRow_Any_AVX2(const uint8* src_y, uint8* dst_argb, int pix); |
931 void I400ToARGBRow_Any_SSE2(const uint8* src_y, uint8* dst_argb, int pix); | 944 void J400ToARGBRow_Any_NEON(const uint8* src_y, uint8* dst_argb, int pix); |
932 void I400ToARGBRow_Any_NEON(const uint8* src_y, uint8* dst_argb, int pix); | |
933 | 945 |
934 void I444ToARGBRow_C(const uint8* src_y, | 946 void I444ToARGBRow_C(const uint8* src_y, |
935 const uint8* src_u, | 947 const uint8* src_u, |
936 const uint8* src_v, | 948 const uint8* src_v, |
937 uint8* dst_argb, | 949 uint8* dst_argb, |
938 int width); | 950 int width); |
939 void I422ToARGBRow_C(const uint8* src_y, | 951 void I422ToARGBRow_C(const uint8* src_y, |
940 const uint8* src_u, | 952 const uint8* src_u, |
941 const uint8* src_v, | 953 const uint8* src_v, |
942 uint8* dst_argb, | 954 uint8* dst_argb, |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1031 void I422ToABGRRow_AVX2(const uint8* src_y, | 1043 void I422ToABGRRow_AVX2(const uint8* src_y, |
1032 const uint8* src_u, | 1044 const uint8* src_u, |
1033 const uint8* src_v, | 1045 const uint8* src_v, |
1034 uint8* dst_argb, | 1046 uint8* dst_argb, |
1035 int width); | 1047 int width); |
1036 void I444ToARGBRow_SSSE3(const uint8* src_y, | 1048 void I444ToARGBRow_SSSE3(const uint8* src_y, |
1037 const uint8* src_u, | 1049 const uint8* src_u, |
1038 const uint8* src_v, | 1050 const uint8* src_v, |
1039 uint8* dst_argb, | 1051 uint8* dst_argb, |
1040 int width); | 1052 int width); |
| 1053 void I444ToARGBRow_AVX2(const uint8* src_y, |
| 1054 const uint8* src_u, |
| 1055 const uint8* src_v, |
| 1056 uint8* dst_argb, |
| 1057 int width); |
1041 void I422ToARGBRow_SSSE3(const uint8* src_y, | 1058 void I422ToARGBRow_SSSE3(const uint8* src_y, |
1042 const uint8* src_u, | 1059 const uint8* src_u, |
1043 const uint8* src_v, | 1060 const uint8* src_v, |
1044 uint8* dst_argb, | 1061 uint8* dst_argb, |
1045 int width); | 1062 int width); |
1046 void I411ToARGBRow_SSSE3(const uint8* src_y, | 1063 void I411ToARGBRow_SSSE3(const uint8* src_y, |
1047 const uint8* src_u, | 1064 const uint8* src_u, |
1048 const uint8* src_v, | 1065 const uint8* src_v, |
1049 uint8* dst_argb, | 1066 uint8* dst_argb, |
1050 int width); | 1067 int width); |
| 1068 void I411ToARGBRow_AVX2(const uint8* src_y, |
| 1069 const uint8* src_u, |
| 1070 const uint8* src_v, |
| 1071 uint8* dst_argb, |
| 1072 int width); |
1051 void NV12ToARGBRow_SSSE3(const uint8* src_y, | 1073 void NV12ToARGBRow_SSSE3(const uint8* src_y, |
1052 const uint8* src_uv, | 1074 const uint8* src_uv, |
1053 uint8* dst_argb, | 1075 uint8* dst_argb, |
1054 int width); | 1076 int width); |
1055 void NV21ToARGBRow_SSSE3(const uint8* src_y, | 1077 void NV21ToARGBRow_SSSE3(const uint8* src_y, |
1056 const uint8* src_vu, | 1078 const uint8* src_vu, |
1057 uint8* dst_argb, | 1079 uint8* dst_argb, |
1058 int width); | 1080 int width); |
1059 void NV12ToARGBRow_AVX2(const uint8* src_y, | 1081 void NV12ToARGBRow_AVX2(const uint8* src_y, |
1060 const uint8* src_uv, | 1082 const uint8* src_uv, |
(...skipping 29 matching lines...) Expand all Loading... |
1090 uint8* dst_argb, | 1112 uint8* dst_argb, |
1091 int width); | 1113 int width); |
1092 void UYVYToARGBRow_AVX2(const uint8* src_uyvy, | 1114 void UYVYToARGBRow_AVX2(const uint8* src_uyvy, |
1093 uint8* dst_argb, | 1115 uint8* dst_argb, |
1094 int width); | 1116 int width); |
1095 void J422ToARGBRow_SSSE3(const uint8* src_y, | 1117 void J422ToARGBRow_SSSE3(const uint8* src_y, |
1096 const uint8* src_u, | 1118 const uint8* src_u, |
1097 const uint8* src_v, | 1119 const uint8* src_v, |
1098 uint8* dst_argb, | 1120 uint8* dst_argb, |
1099 int width); | 1121 int width); |
| 1122 void J422ToARGBRow_AVX2(const uint8* src_y, |
| 1123 const uint8* src_u, |
| 1124 const uint8* src_v, |
| 1125 uint8* dst_argb, |
| 1126 int width); |
1100 void I422ToBGRARow_SSSE3(const uint8* src_y, | 1127 void I422ToBGRARow_SSSE3(const uint8* src_y, |
1101 const uint8* src_u, | 1128 const uint8* src_u, |
1102 const uint8* src_v, | 1129 const uint8* src_v, |
1103 uint8* dst_bgra, | 1130 uint8* dst_bgra, |
1104 int width); | 1131 int width); |
1105 void I422ToABGRRow_SSSE3(const uint8* src_y, | 1132 void I422ToABGRRow_SSSE3(const uint8* src_y, |
1106 const uint8* src_u, | 1133 const uint8* src_u, |
1107 const uint8* src_v, | 1134 const uint8* src_v, |
1108 uint8* dst_abgr, | 1135 uint8* dst_abgr, |
1109 int width); | 1136 int width); |
(...skipping 30 matching lines...) Expand all Loading... |
1140 void I422ToRGB565Row_AVX2(const uint8* src_y, | 1167 void I422ToRGB565Row_AVX2(const uint8* src_y, |
1141 const uint8* src_u, | 1168 const uint8* src_u, |
1142 const uint8* src_v, | 1169 const uint8* src_v, |
1143 uint8* dst_argb, | 1170 uint8* dst_argb, |
1144 int width); | 1171 int width); |
1145 void I422ToRGB24Row_SSSE3(const uint8* src_y, | 1172 void I422ToRGB24Row_SSSE3(const uint8* src_y, |
1146 const uint8* src_u, | 1173 const uint8* src_u, |
1147 const uint8* src_v, | 1174 const uint8* src_v, |
1148 uint8* dst_rgb24, | 1175 uint8* dst_rgb24, |
1149 int width); | 1176 int width); |
| 1177 void I422ToRGB24Row_AVX2(const uint8* src_y, |
| 1178 const uint8* src_u, |
| 1179 const uint8* src_v, |
| 1180 uint8* dst_rgb24, |
| 1181 int width); |
1150 void I422ToRAWRow_SSSE3(const uint8* src_y, | 1182 void I422ToRAWRow_SSSE3(const uint8* src_y, |
1151 const uint8* src_u, | 1183 const uint8* src_u, |
1152 const uint8* src_v, | 1184 const uint8* src_v, |
1153 uint8* dst_raw, | 1185 uint8* dst_raw, |
1154 int width); | 1186 int width); |
| 1187 void I422ToRAWRow_AVX2(const uint8* src_y, |
| 1188 const uint8* src_u, |
| 1189 const uint8* src_v, |
| 1190 uint8* dst_raw, |
| 1191 int width); |
1155 void I422ToARGBRow_Any_AVX2(const uint8* src_y, | 1192 void I422ToARGBRow_Any_AVX2(const uint8* src_y, |
1156 const uint8* src_u, | 1193 const uint8* src_u, |
1157 const uint8* src_v, | 1194 const uint8* src_v, |
1158 uint8* dst_argb, | 1195 uint8* dst_argb, |
1159 int width); | 1196 int width); |
1160 void I422ToBGRARow_Any_AVX2(const uint8* src_y, | 1197 void I422ToBGRARow_Any_AVX2(const uint8* src_y, |
1161 const uint8* src_u, | 1198 const uint8* src_u, |
1162 const uint8* src_v, | 1199 const uint8* src_v, |
1163 uint8* dst_argb, | 1200 uint8* dst_argb, |
1164 int width); | 1201 int width); |
1165 void I422ToRGBARow_Any_AVX2(const uint8* src_y, | 1202 void I422ToRGBARow_Any_AVX2(const uint8* src_y, |
1166 const uint8* src_u, | 1203 const uint8* src_u, |
1167 const uint8* src_v, | 1204 const uint8* src_v, |
1168 uint8* dst_argb, | 1205 uint8* dst_argb, |
1169 int width); | 1206 int width); |
1170 void I422ToABGRRow_Any_AVX2(const uint8* src_y, | 1207 void I422ToABGRRow_Any_AVX2(const uint8* src_y, |
1171 const uint8* src_u, | 1208 const uint8* src_u, |
1172 const uint8* src_v, | 1209 const uint8* src_v, |
1173 uint8* dst_argb, | 1210 uint8* dst_argb, |
1174 int width); | 1211 int width); |
1175 void I444ToARGBRow_Any_SSSE3(const uint8* src_y, | 1212 void I444ToARGBRow_Any_SSSE3(const uint8* src_y, |
1176 const uint8* src_u, | 1213 const uint8* src_u, |
1177 const uint8* src_v, | 1214 const uint8* src_v, |
1178 uint8* dst_argb, | 1215 uint8* dst_argb, |
1179 int width); | 1216 int width); |
| 1217 void I444ToARGBRow_Any_AVX2(const uint8* src_y, |
| 1218 const uint8* src_u, |
| 1219 const uint8* src_v, |
| 1220 uint8* dst_argb, |
| 1221 int width); |
1180 void I422ToARGBRow_Any_SSSE3(const uint8* src_y, | 1222 void I422ToARGBRow_Any_SSSE3(const uint8* src_y, |
1181 const uint8* src_u, | 1223 const uint8* src_u, |
1182 const uint8* src_v, | 1224 const uint8* src_v, |
1183 uint8* dst_argb, | 1225 uint8* dst_argb, |
1184 int width); | 1226 int width); |
1185 void I411ToARGBRow_Any_SSSE3(const uint8* src_y, | 1227 void I411ToARGBRow_Any_SSSE3(const uint8* src_y, |
1186 const uint8* src_u, | 1228 const uint8* src_u, |
1187 const uint8* src_v, | 1229 const uint8* src_v, |
1188 uint8* dst_argb, | 1230 uint8* dst_argb, |
1189 int width); | 1231 int width); |
| 1232 void I411ToARGBRow_Any_AVX2(const uint8* src_y, |
| 1233 const uint8* src_u, |
| 1234 const uint8* src_v, |
| 1235 uint8* dst_argb, |
| 1236 int width); |
1190 void NV12ToARGBRow_Any_SSSE3(const uint8* src_y, | 1237 void NV12ToARGBRow_Any_SSSE3(const uint8* src_y, |
1191 const uint8* src_uv, | 1238 const uint8* src_uv, |
1192 uint8* dst_argb, | 1239 uint8* dst_argb, |
1193 int width); | 1240 int width); |
1194 void NV21ToARGBRow_Any_SSSE3(const uint8* src_y, | 1241 void NV21ToARGBRow_Any_SSSE3(const uint8* src_y, |
1195 const uint8* src_vu, | 1242 const uint8* src_vu, |
1196 uint8* dst_argb, | 1243 uint8* dst_argb, |
1197 int width); | 1244 int width); |
1198 void NV12ToARGBRow_Any_AVX2(const uint8* src_y, | 1245 void NV12ToARGBRow_Any_AVX2(const uint8* src_y, |
1199 const uint8* src_uv, | 1246 const uint8* src_uv, |
(...skipping 24 matching lines...) Expand all Loading... |
1224 int width); | 1271 int width); |
1225 void UYVYToARGBRow_Any_SSSE3(const uint8* src_uyvy, | 1272 void UYVYToARGBRow_Any_SSSE3(const uint8* src_uyvy, |
1226 uint8* dst_argb, | 1273 uint8* dst_argb, |
1227 int width); | 1274 int width); |
1228 void YUY2ToARGBRow_Any_AVX2(const uint8* src_yuy2, | 1275 void YUY2ToARGBRow_Any_AVX2(const uint8* src_yuy2, |
1229 uint8* dst_argb, | 1276 uint8* dst_argb, |
1230 int width); | 1277 int width); |
1231 void UYVYToARGBRow_Any_AVX2(const uint8* src_uyvy, | 1278 void UYVYToARGBRow_Any_AVX2(const uint8* src_uyvy, |
1232 uint8* dst_argb, | 1279 uint8* dst_argb, |
1233 int width); | 1280 int width); |
| 1281 void J422ToARGBRow_Any_SSSE3(const uint8* src_y, |
| 1282 const uint8* src_u, |
| 1283 const uint8* src_v, |
| 1284 uint8* dst_argb, |
| 1285 int width); |
| 1286 void J422ToARGBRow_Any_AVX2(const uint8* src_y, |
| 1287 const uint8* src_u, |
| 1288 const uint8* src_v, |
| 1289 uint8* dst_argb, |
| 1290 int width); |
1234 void I422ToBGRARow_Any_SSSE3(const uint8* src_y, | 1291 void I422ToBGRARow_Any_SSSE3(const uint8* src_y, |
1235 const uint8* src_u, | 1292 const uint8* src_u, |
1236 const uint8* src_v, | 1293 const uint8* src_v, |
1237 uint8* dst_bgra, | 1294 uint8* dst_bgra, |
1238 int width); | 1295 int width); |
1239 void I422ToABGRRow_Any_SSSE3(const uint8* src_y, | 1296 void I422ToABGRRow_Any_SSSE3(const uint8* src_y, |
1240 const uint8* src_u, | 1297 const uint8* src_u, |
1241 const uint8* src_v, | 1298 const uint8* src_v, |
1242 uint8* dst_abgr, | 1299 uint8* dst_abgr, |
1243 int width); | 1300 int width); |
(...skipping 30 matching lines...) Expand all Loading... |
1274 void I422ToRGB565Row_Any_AVX2(const uint8* src_y, | 1331 void I422ToRGB565Row_Any_AVX2(const uint8* src_y, |
1275 const uint8* src_u, | 1332 const uint8* src_u, |
1276 const uint8* src_v, | 1333 const uint8* src_v, |
1277 uint8* dst_rgba, | 1334 uint8* dst_rgba, |
1278 int width); | 1335 int width); |
1279 void I422ToRGB24Row_Any_SSSE3(const uint8* src_y, | 1336 void I422ToRGB24Row_Any_SSSE3(const uint8* src_y, |
1280 const uint8* src_u, | 1337 const uint8* src_u, |
1281 const uint8* src_v, | 1338 const uint8* src_v, |
1282 uint8* dst_argb, | 1339 uint8* dst_argb, |
1283 int width); | 1340 int width); |
| 1341 void I422ToRGB24Row_Any_AVX2(const uint8* src_y, |
| 1342 const uint8* src_u, |
| 1343 const uint8* src_v, |
| 1344 uint8* dst_argb, |
| 1345 int width); |
1284 void I422ToRAWRow_Any_SSSE3(const uint8* src_y, | 1346 void I422ToRAWRow_Any_SSSE3(const uint8* src_y, |
1285 const uint8* src_u, | 1347 const uint8* src_u, |
1286 const uint8* src_v, | 1348 const uint8* src_v, |
1287 uint8* dst_argb, | 1349 uint8* dst_argb, |
1288 int width); | 1350 int width); |
| 1351 void I422ToRAWRow_Any_AVX2(const uint8* src_y, |
| 1352 const uint8* src_u, |
| 1353 const uint8* src_v, |
| 1354 uint8* dst_argb, |
| 1355 int width); |
1289 | 1356 |
1290 void YToARGBRow_C(const uint8* src_y, | 1357 void I400ToARGBRow_C(const uint8* src_y, uint8* dst_argb, int width); |
1291 uint8* dst_argb, | 1358 void I400ToARGBRow_SSE2(const uint8* src_y, uint8* dst_argb, int width); |
1292 int width); | 1359 void I400ToARGBRow_AVX2(const uint8* src_y, uint8* dst_argb, int width); |
1293 void YToARGBRow_SSE2(const uint8* src_y, | 1360 void I400ToARGBRow_NEON(const uint8* src_y, uint8* dst_argb, int width); |
1294 uint8* dst_argb, | 1361 void I400ToARGBRow_Any_SSE2(const uint8* src_y, uint8* dst_argb, int width); |
1295 int width); | 1362 void I400ToARGBRow_Any_AVX2(const uint8* src_y, uint8* dst_argb, int width); |
1296 void YToARGBRow_AVX2(const uint8* src_y, | 1363 void I400ToARGBRow_Any_NEON(const uint8* src_y, uint8* dst_argb, int width); |
1297 uint8* dst_argb, | |
1298 int width); | |
1299 void YToARGBRow_NEON(const uint8* src_y, | |
1300 uint8* dst_argb, | |
1301 int width); | |
1302 void YToARGBRow_Any_SSE2(const uint8* src_y, | |
1303 uint8* dst_argb, | |
1304 int width); | |
1305 void YToARGBRow_Any_AVX2(const uint8* src_y, | |
1306 uint8* dst_argb, | |
1307 int width); | |
1308 void YToARGBRow_Any_NEON(const uint8* src_y, | |
1309 uint8* dst_argb, | |
1310 int width); | |
1311 | 1364 |
1312 // ARGB preattenuated alpha blend. | 1365 // ARGB preattenuated alpha blend. |
1313 void ARGBBlendRow_SSSE3(const uint8* src_argb, const uint8* src_argb1, | 1366 void ARGBBlendRow_SSSE3(const uint8* src_argb, const uint8* src_argb1, |
1314 uint8* dst_argb, int width); | 1367 uint8* dst_argb, int width); |
1315 void ARGBBlendRow_SSE2(const uint8* src_argb, const uint8* src_argb1, | 1368 void ARGBBlendRow_SSE2(const uint8* src_argb, const uint8* src_argb1, |
1316 uint8* dst_argb, int width); | 1369 uint8* dst_argb, int width); |
1317 void ARGBBlendRow_NEON(const uint8* src_argb, const uint8* src_argb1, | 1370 void ARGBBlendRow_NEON(const uint8* src_argb, const uint8* src_argb1, |
1318 uint8* dst_argb, int width); | 1371 uint8* dst_argb, int width); |
1319 void ARGBBlendRow_C(const uint8* src_argb, const uint8* src_argb1, | 1372 void ARGBBlendRow_C(const uint8* src_argb, const uint8* src_argb1, |
1320 uint8* dst_argb, int width); | 1373 uint8* dst_argb, int width); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1368 uint8* dst_argb, int width); | 1421 uint8* dst_argb, int width); |
1369 void ARGBSubtractRow_Any_NEON(const uint8* src_argb, const uint8* src_argb1, | 1422 void ARGBSubtractRow_Any_NEON(const uint8* src_argb, const uint8* src_argb1, |
1370 uint8* dst_argb, int width); | 1423 uint8* dst_argb, int width); |
1371 | 1424 |
1372 void ARGBToRGB24Row_Any_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix); | 1425 void ARGBToRGB24Row_Any_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix); |
1373 void ARGBToRAWRow_Any_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix); | 1426 void ARGBToRAWRow_Any_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix); |
1374 void ARGBToRGB565Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix); | 1427 void ARGBToRGB565Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix); |
1375 void ARGBToARGB1555Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix); | 1428 void ARGBToARGB1555Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix); |
1376 void ARGBToARGB4444Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix); | 1429 void ARGBToARGB4444Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix); |
1377 | 1430 |
| 1431 void ARGBToRGB565DitherRow_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, |
| 1432 const uint32 dither4, int pix); |
| 1433 void ARGBToRGB565DitherRow_Any_AVX2(const uint8* src_argb, uint8* dst_rgb, |
| 1434 const uint32 dither4, int pix); |
| 1435 |
1378 void ARGBToRGB565Row_Any_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix); | 1436 void ARGBToRGB565Row_Any_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix); |
1379 void ARGBToARGB1555Row_Any_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix); | 1437 void ARGBToARGB1555Row_Any_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix); |
1380 void ARGBToARGB4444Row_Any_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix); | 1438 void ARGBToARGB4444Row_Any_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix); |
1381 | 1439 |
1382 void ARGBToRGB24Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); | 1440 void ARGBToRGB24Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); |
1383 void ARGBToRAWRow_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); | 1441 void ARGBToRAWRow_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); |
1384 void ARGBToRGB565Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); | 1442 void ARGBToRGB565Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); |
1385 void ARGBToARGB1555Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); | 1443 void ARGBToARGB1555Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); |
1386 void ARGBToARGB4444Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); | 1444 void ARGBToARGB4444Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 1445 void ARGBToRGB565DitherRow_Any_NEON(const uint8* src_argb, uint8* dst_rgb, |
| 1446 const uint32 dither4, int width); |
1387 | 1447 |
1388 void I444ToARGBRow_Any_NEON(const uint8* src_y, | 1448 void I444ToARGBRow_Any_NEON(const uint8* src_y, |
1389 const uint8* src_u, | 1449 const uint8* src_u, |
1390 const uint8* src_v, | 1450 const uint8* src_v, |
1391 uint8* dst_argb, | 1451 uint8* dst_argb, |
1392 int width); | 1452 int width); |
1393 void I422ToARGBRow_Any_NEON(const uint8* src_y, | 1453 void I422ToARGBRow_Any_NEON(const uint8* src_y, |
1394 const uint8* src_u, | 1454 const uint8* src_u, |
1395 const uint8* src_v, | 1455 const uint8* src_v, |
1396 uint8* dst_argb, | 1456 uint8* dst_argb, |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1563 void UYVYToUVRow_Any_SSE2(const uint8* src_uyvy, int stride_uyvy, | 1623 void UYVYToUVRow_Any_SSE2(const uint8* src_uyvy, int stride_uyvy, |
1564 uint8* dst_u, uint8* dst_v, int pix); | 1624 uint8* dst_u, uint8* dst_v, int pix); |
1565 void UYVYToUV422Row_Any_SSE2(const uint8* src_uyvy, | 1625 void UYVYToUV422Row_Any_SSE2(const uint8* src_uyvy, |
1566 uint8* dst_u, uint8* dst_v, int pix); | 1626 uint8* dst_u, uint8* dst_v, int pix); |
1567 void UYVYToYRow_Any_NEON(const uint8* src_uyvy, uint8* dst_y, int pix); | 1627 void UYVYToYRow_Any_NEON(const uint8* src_uyvy, uint8* dst_y, int pix); |
1568 void UYVYToUVRow_Any_NEON(const uint8* src_uyvy, int stride_uyvy, | 1628 void UYVYToUVRow_Any_NEON(const uint8* src_uyvy, int stride_uyvy, |
1569 uint8* dst_u, uint8* dst_v, int pix); | 1629 uint8* dst_u, uint8* dst_v, int pix); |
1570 void UYVYToUV422Row_Any_NEON(const uint8* src_uyvy, | 1630 void UYVYToUV422Row_Any_NEON(const uint8* src_uyvy, |
1571 uint8* dst_u, uint8* dst_v, int pix); | 1631 uint8* dst_u, uint8* dst_v, int pix); |
1572 | 1632 |
1573 void ARGBToBayerGGRow_C(const uint8* src_argb, uint8* dst_bayer, | |
1574 uint32 /* selector */, int pix); | |
1575 void ARGBToBayerGGRow_SSE2(const uint8* src_argb, uint8* dst_bayer, | |
1576 uint32 /* selector */, int pix); | |
1577 void ARGBToBayerGGRow_NEON(const uint8* src_argb, uint8* dst_bayer, | |
1578 uint32 /* selector */, int pix); | |
1579 void ARGBToBayerGGRow_Any_SSE2(const uint8* src_argb, uint8* dst_bayer, | |
1580 uint32 /* selector */, int pix); | |
1581 void ARGBToBayerGGRow_Any_NEON(const uint8* src_argb, uint8* dst_bayer, | |
1582 uint32 /* selector */, int pix); | |
1583 | |
1584 void I422ToYUY2Row_C(const uint8* src_y, | 1633 void I422ToYUY2Row_C(const uint8* src_y, |
1585 const uint8* src_u, | 1634 const uint8* src_u, |
1586 const uint8* src_v, | 1635 const uint8* src_v, |
1587 uint8* dst_yuy2, int width); | 1636 uint8* dst_yuy2, int width); |
1588 void I422ToUYVYRow_C(const uint8* src_y, | 1637 void I422ToUYVYRow_C(const uint8* src_y, |
1589 const uint8* src_u, | 1638 const uint8* src_u, |
1590 const uint8* src_v, | 1639 const uint8* src_v, |
1591 uint8* dst_uyvy, int width); | 1640 uint8* dst_uyvy, int width); |
1592 void I422ToYUY2Row_SSE2(const uint8* src_y, | 1641 void I422ToYUY2Row_SSE2(const uint8* src_y, |
1593 const uint8* src_u, | 1642 const uint8* src_u, |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1763 void SobelToPlaneRow_SSE2(const uint8* src_sobelx, const uint8* src_sobely, | 1812 void SobelToPlaneRow_SSE2(const uint8* src_sobelx, const uint8* src_sobely, |
1764 uint8* dst_y, int width); | 1813 uint8* dst_y, int width); |
1765 void SobelToPlaneRow_NEON(const uint8* src_sobelx, const uint8* src_sobely, | 1814 void SobelToPlaneRow_NEON(const uint8* src_sobelx, const uint8* src_sobely, |
1766 uint8* dst_y, int width); | 1815 uint8* dst_y, int width); |
1767 void SobelXYRow_C(const uint8* src_sobelx, const uint8* src_sobely, | 1816 void SobelXYRow_C(const uint8* src_sobelx, const uint8* src_sobely, |
1768 uint8* dst_argb, int width); | 1817 uint8* dst_argb, int width); |
1769 void SobelXYRow_SSE2(const uint8* src_sobelx, const uint8* src_sobely, | 1818 void SobelXYRow_SSE2(const uint8* src_sobelx, const uint8* src_sobely, |
1770 uint8* dst_argb, int width); | 1819 uint8* dst_argb, int width); |
1771 void SobelXYRow_NEON(const uint8* src_sobelx, const uint8* src_sobely, | 1820 void SobelXYRow_NEON(const uint8* src_sobelx, const uint8* src_sobely, |
1772 uint8* dst_argb, int width); | 1821 uint8* dst_argb, int width); |
| 1822 void SobelRow_Any_SSE2(const uint8* src_sobelx, const uint8* src_sobely, |
| 1823 uint8* dst_argb, int width); |
| 1824 void SobelRow_Any_NEON(const uint8* src_sobelx, const uint8* src_sobely, |
| 1825 uint8* dst_argb, int width); |
| 1826 void SobelToPlaneRow_Any_SSE2(const uint8* src_sobelx, const uint8* src_sobely, |
| 1827 uint8* dst_y, int width); |
| 1828 void SobelToPlaneRow_Any_NEON(const uint8* src_sobelx, const uint8* src_sobely, |
| 1829 uint8* dst_y, int width); |
| 1830 void SobelXYRow_Any_SSE2(const uint8* src_sobelx, const uint8* src_sobely, |
| 1831 uint8* dst_argb, int width); |
| 1832 void SobelXYRow_Any_NEON(const uint8* src_sobelx, const uint8* src_sobely, |
| 1833 uint8* dst_argb, int width); |
1773 | 1834 |
1774 void ARGBPolynomialRow_C(const uint8* src_argb, | 1835 void ARGBPolynomialRow_C(const uint8* src_argb, |
1775 uint8* dst_argb, const float* poly, | 1836 uint8* dst_argb, const float* poly, |
1776 int width); | 1837 int width); |
1777 void ARGBPolynomialRow_SSE2(const uint8* src_argb, | 1838 void ARGBPolynomialRow_SSE2(const uint8* src_argb, |
1778 uint8* dst_argb, const float* poly, | 1839 uint8* dst_argb, const float* poly, |
1779 int width); | 1840 int width); |
1780 void ARGBPolynomialRow_AVX2(const uint8* src_argb, | 1841 void ARGBPolynomialRow_AVX2(const uint8* src_argb, |
1781 uint8* dst_argb, const float* poly, | 1842 uint8* dst_argb, const float* poly, |
1782 int width); | 1843 int width); |
1783 | 1844 |
1784 void ARGBLumaColorTableRow_C(const uint8* src_argb, uint8* dst_argb, int width, | 1845 void ARGBLumaColorTableRow_C(const uint8* src_argb, uint8* dst_argb, int width, |
1785 const uint8* luma, uint32 lumacoeff); | 1846 const uint8* luma, uint32 lumacoeff); |
1786 void ARGBLumaColorTableRow_SSSE3(const uint8* src_argb, uint8* dst_argb, | 1847 void ARGBLumaColorTableRow_SSSE3(const uint8* src_argb, uint8* dst_argb, |
1787 int width, | 1848 int width, |
1788 const uint8* luma, uint32 lumacoeff); | 1849 const uint8* luma, uint32 lumacoeff); |
1789 | 1850 |
1790 #ifdef __cplusplus | 1851 #ifdef __cplusplus |
1791 } // extern "C" | 1852 } // extern "C" |
1792 } // namespace libyuv | 1853 } // namespace libyuv |
1793 #endif | 1854 #endif |
1794 | 1855 |
1795 #endif // INCLUDE_LIBYUV_ROW_H_ NOLINT | 1856 #endif // INCLUDE_LIBYUV_ROW_H_ NOLINT |
OLD | NEW |