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

Side by Side Diff: source/libvpx/third_party/libyuv/source/row.h

Issue 341293003: libvpx: Pull from upstream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 /*
2 * Copyright (c) 2011 The LibYuv project authors. All Rights Reserved.
3 *
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
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #ifndef LIBYUV_SOURCE_ROW_H_
12 #define LIBYUV_SOURCE_ROW_H_
13
14 #include "third_party/libyuv/include/libyuv/basic_types.h"
15
16 #define kMaxStride (2048 * 4)
17 #define IS_ALIGNED(p, a) (!((uintptr_t)(p) & ((a) - 1)))
18
19 #if defined(COVERAGE_ENABLED) || defined(TARGET_IPHONE_SIMULATOR)
20 #define YUV_DISABLE_ASM
21 #endif
22
23 #if defined(__ARM_NEON__) && !defined(YUV_DISABLE_ASM)
24 #define HAS_FASTCONVERTYUVTOARGBROW_NEON
25 void FastConvertYUVToARGBRow_NEON(const uint8* y_buf,
26 const uint8* u_buf,
27 const uint8* v_buf,
28 uint8* rgb_buf,
29 int width);
30 #define HAS_FASTCONVERTYUVTOBGRAROW_NEON
31 void FastConvertYUVToBGRARow_NEON(const uint8* y_buf,
32 const uint8* u_buf,
33 const uint8* v_buf,
34 uint8* rgb_buf,
35 int width);
36 #define HAS_FASTCONVERTYUVTOABGRROW_NEON
37 void FastConvertYUVToABGRRow_NEON(const uint8* y_buf,
38 const uint8* u_buf,
39 const uint8* v_buf,
40 uint8* rgb_buf,
41 int width);
42 #endif
43
44 // The following are available on all x86 platforms
45 #if (defined(_M_IX86) || defined(__x86_64__) || defined(__i386__)) && \
46 !defined(YUV_DISABLE_ASM)
47 #define HAS_ABGRTOARGBROW_SSSE3
48 #define HAS_BGRATOARGBROW_SSSE3
49 #define HAS_BG24TOARGBROW_SSSE3
50 #define HAS_RAWTOARGBROW_SSSE3
51 #define HAS_RGB24TOYROW_SSSE3
52 #define HAS_RAWTOYROW_SSSE3
53 #define HAS_RGB24TOUVROW_SSSE3
54 #define HAS_RAWTOUVROW_SSSE3
55 #define HAS_ARGBTOYROW_SSSE3
56 #define HAS_BGRATOYROW_SSSE3
57 #define HAS_ABGRTOYROW_SSSE3
58 #define HAS_ARGBTOUVROW_SSSE3
59 #define HAS_BGRATOUVROW_SSSE3
60 #define HAS_ABGRTOUVROW_SSSE3
61 #define HAS_I400TOARGBROW_SSE2
62 #define HAS_FASTCONVERTYTOARGBROW_SSE2
63 #define HAS_FASTCONVERTYUVTOARGBROW_SSSE3
64 #define HAS_FASTCONVERTYUVTOBGRAROW_SSSE3
65 #define HAS_FASTCONVERTYUVTOABGRROW_SSSE3
66 #define HAS_FASTCONVERTYUV444TOARGBROW_SSSE3
67 #define HAS_REVERSE_ROW_SSSE3
68 #endif
69
70 // The following are available on Neon platforms
71 #if defined(__ARM_NEON__) && !defined(YUV_DISABLE_ASM)
72 #define HAS_REVERSE_ROW_NEON
73 #endif
74
75 #ifdef __cplusplus
76 namespace libyuv {
77 extern "C" {
78 #endif
79
80 #ifdef HAS_ARGBTOYROW_SSSE3
81 void ARGBToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix);
82 void BGRAToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix);
83 void ABGRToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix);
84 void ARGBToUVRow_SSSE3(const uint8* src_argb0, int src_stride_argb,
85 uint8* dst_u, uint8* dst_v, int width);
86 void BGRAToUVRow_SSSE3(const uint8* src_argb0, int src_stride_argb,
87 uint8* dst_u, uint8* dst_v, int width);
88 void ABGRToUVRow_SSSE3(const uint8* src_argb0, int src_stride_argb,
89 uint8* dst_u, uint8* dst_v, int width);
90 #endif
91 #if defined(HAS_BG24TOARGBROW_SSSE3) && defined(HAS_ARGBTOYROW_SSSE3)
92 #define HASRGB24TOYROW_SSSE3
93 #endif
94 #ifdef HASRGB24TOYROW_SSSE3
95 void RGB24ToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix);
96 void RAWToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix);
97 void RGB24ToUVRow_SSSE3(const uint8* src_argb0, int src_stride_argb,
98 uint8* dst_u, uint8* dst_v, int width);
99 void RAWToUVRow_SSSE3(const uint8* src_argb0, int src_stride_argb,
100 uint8* dst_u, uint8* dst_v, int width);
101 #endif
102 #ifdef HAS_REVERSE_ROW_SSSE3
103 void ReverseRow_SSSE3(const uint8* src, uint8* dst, int width);
104 #endif
105 #ifdef HAS_REVERSE_ROW_NEON
106 void ReverseRow_NEON(const uint8* src, uint8* dst, int width);
107 #endif
108 void ReverseRow_C(const uint8* src, uint8* dst, int width);
109
110 void ARGBToYRow_C(const uint8* src_argb, uint8* dst_y, int pix);
111 void BGRAToYRow_C(const uint8* src_argb, uint8* dst_y, int pix);
112 void ABGRToYRow_C(const uint8* src_argb, uint8* dst_y, int pix);
113 void RGB24ToYRow_C(const uint8* src_argb, uint8* dst_y, int pix);
114 void RAWToYRow_C(const uint8* src_argb, uint8* dst_y, int pix);
115 void ARGBToUVRow_C(const uint8* src_argb0, int src_stride_argb,
116 uint8* dst_u, uint8* dst_v, int width);
117 void BGRAToUVRow_C(const uint8* src_argb0, int src_stride_argb,
118 uint8* dst_u, uint8* dst_v, int width);
119 void ABGRToUVRow_C(const uint8* src_argb0, int src_stride_argb,
120 uint8* dst_u, uint8* dst_v, int width);
121 void RGB24ToUVRow_C(const uint8* src_argb0, int src_stride_argb,
122 uint8* dst_u, uint8* dst_v, int width);
123 void RAWToUVRow_C(const uint8* src_argb0, int src_stride_argb,
124 uint8* dst_u, uint8* dst_v, int width);
125
126 #ifdef HAS_BG24TOARGBROW_SSSE3
127 void ABGRToARGBRow_SSSE3(const uint8* src_abgr, uint8* dst_argb, int pix);
128 void BGRAToARGBRow_SSSE3(const uint8* src_bgra, uint8* dst_argb, int pix);
129 void BG24ToARGBRow_SSSE3(const uint8* src_bg24, uint8* dst_argb, int pix);
130 void RAWToARGBRow_SSSE3(const uint8* src_bg24, uint8* dst_argb, int pix);
131 #endif
132 void ABGRToARGBRow_C(const uint8* src_abgr, uint8* dst_argb, int pix);
133 void BGRAToARGBRow_C(const uint8* src_bgra, uint8* dst_argb, int pix);
134 void BG24ToARGBRow_C(const uint8* src_bg24, uint8* dst_argb, int pix);
135 void RAWToARGBRow_C(const uint8* src_bg24, uint8* dst_argb, int pix);
136
137 #ifdef HAS_I400TOARGBROW_SSE2
138 void I400ToARGBRow_SSE2(const uint8* src_y, uint8* dst_argb, int pix);
139 #endif
140 void I400ToARGBRow_C(const uint8* src_y, uint8* dst_argb, int pix);
141
142 #if defined(_MSC_VER)
143 #define SIMD_ALIGNED(var) __declspec(align(16)) var
144 typedef __declspec(align(16)) signed char vec8[16];
145 typedef __declspec(align(16)) unsigned char uvec8[16];
146 typedef __declspec(align(16)) signed short vec16[8];
147 #else // __GNUC__
148 #define SIMD_ALIGNED(var) var __attribute__((aligned(16)))
149 typedef signed char __attribute__((vector_size(16))) vec8;
150 typedef unsigned char __attribute__((vector_size(16))) uvec8;
151 typedef signed short __attribute__((vector_size(16))) vec16;
152 #endif
153
154 //extern "C"
155 SIMD_ALIGNED(const int16 kCoefficientsRgbY[768][4]);
156 //extern "C"
157 SIMD_ALIGNED(const int16 kCoefficientsBgraY[768][4]);
158 //extern "C"
159 SIMD_ALIGNED(const int16 kCoefficientsAbgrY[768][4]);
160
161 void FastConvertYUVToARGBRow_C(const uint8* y_buf,
162 const uint8* u_buf,
163 const uint8* v_buf,
164 uint8* rgb_buf,
165 int width);
166
167 void FastConvertYUVToBGRARow_C(const uint8* y_buf,
168 const uint8* u_buf,
169 const uint8* v_buf,
170 uint8* rgb_buf,
171 int width);
172
173 void FastConvertYUVToABGRRow_C(const uint8* y_buf,
174 const uint8* u_buf,
175 const uint8* v_buf,
176 uint8* rgb_buf,
177 int width);
178
179 void FastConvertYUV444ToARGBRow_C(const uint8* y_buf,
180 const uint8* u_buf,
181 const uint8* v_buf,
182 uint8* rgb_buf,
183 int width);
184
185 void FastConvertYToARGBRow_C(const uint8* y_buf,
186 uint8* rgb_buf,
187 int width);
188
189 #ifdef HAS_FASTCONVERTYUVTOARGBROW_SSE2
190 void FastConvertYUVToARGBRow_SSE2(const uint8* y_buf,
191 const uint8* u_buf,
192 const uint8* v_buf,
193 uint8* rgb_buf,
194 int width);
195
196 void FastConvertYUVToARGBRow4_SSE2(const uint8* y_buf,
197 const uint8* u_buf,
198 const uint8* v_buf,
199 uint8* rgb_buf,
200 int width);
201
202 void FastConvertYUVToBGRARow_SSE2(const uint8* y_buf,
203 const uint8* u_buf,
204 const uint8* v_buf,
205 uint8* rgb_buf,
206 int width);
207
208 void FastConvertYUVToABGRRow_SSE2(const uint8* y_buf,
209 const uint8* u_buf,
210 const uint8* v_buf,
211 uint8* rgb_buf,
212 int width);
213
214 void FastConvertYUV444ToARGBRow_SSE2(const uint8* y_buf,
215 const uint8* u_buf,
216 const uint8* v_buf,
217 uint8* rgb_buf,
218 int width);
219
220 void FastConvertYToARGBRow_SSE2(const uint8* y_buf,
221 uint8* rgb_buf,
222 int width);
223 #endif
224
225 #ifdef HAS_FASTCONVERTYUVTOARGBROW_SSSE3
226 void FastConvertYUVToARGBRow_SSSE3(const uint8* y_buf,
227 const uint8* u_buf,
228 const uint8* v_buf,
229 uint8* rgb_buf,
230 int width);
231
232 void FastConvertYUVToBGRARow_SSSE3(const uint8* y_buf,
233 const uint8* u_buf,
234 const uint8* v_buf,
235 uint8* rgb_buf,
236 int width);
237
238 void FastConvertYUVToABGRRow_SSSE3(const uint8* y_buf,
239 const uint8* u_buf,
240 const uint8* v_buf,
241 uint8* rgb_buf,
242 int width);
243
244 void FastConvertYUV444ToARGBRow_SSSE3(const uint8* y_buf,
245 const uint8* u_buf,
246 const uint8* v_buf,
247 uint8* rgb_buf,
248 int width);
249
250 #endif
251
252 #ifdef HAS_FASTCONVERTYTOARGBROW_SSE2
253 void FastConvertYToARGBRow_SSE2(const uint8* y_buf,
254 uint8* rgb_buf,
255 int width);
256
257 #endif
258
259 #ifdef __cplusplus
260 } // extern "C"
261 } // namespace libyuv
262 #endif
263
264 #endif // LIBYUV_SOURCE_ROW_H_
OLDNEW
« no previous file with comments | « source/libvpx/third_party/libyuv/source/planar_functions.cc ('k') | source/libvpx/third_party/libyuv/source/row_any.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698