webkit  2cdf99a9e3038c7e01b3c37e8ad903ecbe5eecf1
https://github.com/WebKit/webkit
scale_row.h
Go to the documentation of this file.
1 /*
2  * Copyright 2013 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 INCLUDE_LIBYUV_SCALE_ROW_H_
12 #define INCLUDE_LIBYUV_SCALE_ROW_H_
13 
14 #include "libyuv/basic_types.h"
15 #include "libyuv/scale.h"
16 
17 #ifdef __cplusplus
18 namespace libyuv {
19 extern "C" {
20 #endif
21 
22 #if defined(__pnacl__) || defined(__CLR_VER) || \
23  (defined(__i386__) && !defined(__SSE2__))
24 #define LIBYUV_DISABLE_X86
25 #endif
26 // MemorySanitizer does not support assembly code yet. http://crbug.com/344505
27 #if defined(__has_feature)
28 #if __has_feature(memory_sanitizer)
29 #define LIBYUV_DISABLE_X86
30 #endif
31 #endif
32 
33 // GCC >= 4.7.0 required for AVX2.
34 #if defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))
35 #if (__GNUC__ > 4) || (__GNUC__ == 4 && (__GNUC_MINOR__ >= 7))
36 #define GCC_HAS_AVX2 1
37 #endif // GNUC >= 4.7
38 #endif // __GNUC__
39 
40 // clang >= 3.4.0 required for AVX2.
41 #if defined(__clang__) && (defined(__x86_64__) || defined(__i386__))
42 #if (__clang_major__ > 3) || (__clang_major__ == 3 && (__clang_minor__ >= 4))
43 #define CLANG_HAS_AVX2 1
44 #endif // clang >= 3.4
45 #endif // __clang__
46 
47 // Visual C 2012 required for AVX2.
48 #if defined(_M_IX86) && !defined(__clang__) && \
49  defined(_MSC_VER) && _MSC_VER >= 1700
50 #define VISUALC_HAS_AVX2 1
51 #endif // VisualStudio >= 2012
52 
53 // The following are available on all x86 platforms:
54 #if !defined(LIBYUV_DISABLE_X86) && \
55  (defined(_M_IX86) || defined(__x86_64__) || defined(__i386__))
56 #define HAS_FIXEDDIV1_X86
57 #define HAS_FIXEDDIV_X86
58 #define HAS_SCALEARGBCOLS_SSE2
59 #define HAS_SCALEARGBCOLSUP2_SSE2
60 #define HAS_SCALEARGBFILTERCOLS_SSSE3
61 #define HAS_SCALEARGBROWDOWN2_SSE2
62 #define HAS_SCALEARGBROWDOWNEVEN_SSE2
63 #define HAS_SCALECOLSUP2_SSE2
64 #define HAS_SCALEFILTERCOLS_SSSE3
65 #define HAS_SCALEROWDOWN2_SSSE3
66 #define HAS_SCALEROWDOWN34_SSSE3
67 #define HAS_SCALEROWDOWN38_SSSE3
68 #define HAS_SCALEROWDOWN4_SSSE3
69 #define HAS_SCALEADDROW_SSE2
70 #endif
71 
72 // The following are available on all x86 platforms, but
73 // require VS2012, clang 3.4 or gcc 4.7.
74 // The code supports NaCL but requires a new compiler and validator.
75 #if !defined(LIBYUV_DISABLE_X86) && (defined(VISUALC_HAS_AVX2) || \
76  defined(CLANG_HAS_AVX2) || defined(GCC_HAS_AVX2))
77 #define HAS_SCALEADDROW_AVX2
78 #define HAS_SCALEROWDOWN2_AVX2
79 #define HAS_SCALEROWDOWN4_AVX2
80 #endif
81 
82 // The following are available on Neon platforms:
83 #if !defined(LIBYUV_DISABLE_NEON) && !defined(__native_client__) && \
84  (defined(__ARM_NEON__) || defined(LIBYUV_NEON) || defined(__aarch64__))
85 #define HAS_SCALEARGBCOLS_NEON
86 #define HAS_SCALEARGBROWDOWN2_NEON
87 #define HAS_SCALEARGBROWDOWNEVEN_NEON
88 #define HAS_SCALEFILTERCOLS_NEON
89 #define HAS_SCALEROWDOWN2_NEON
90 #define HAS_SCALEROWDOWN34_NEON
91 #define HAS_SCALEROWDOWN38_NEON
92 #define HAS_SCALEROWDOWN4_NEON
93 #define HAS_SCALEARGBFILTERCOLS_NEON
94 #endif
95 
96 // The following are available on Mips platforms:
97 #if !defined(LIBYUV_DISABLE_MIPS) && !defined(__native_client__) && \
98  defined(__mips__) && defined(__mips_dsp) && (__mips_dsp_rev >= 2)
99 #define HAS_SCALEROWDOWN2_DSPR2
100 #define HAS_SCALEROWDOWN4_DSPR2
101 #define HAS_SCALEROWDOWN34_DSPR2
102 #define HAS_SCALEROWDOWN38_DSPR2
103 #endif
104 
105 // Scale ARGB vertically with bilinear interpolation.
106 void ScalePlaneVertical(int src_height,
107  int dst_width, int dst_height,
108  int src_stride, int dst_stride,
109  const uint8* src_argb, uint8* dst_argb,
110  int x, int y, int dy,
111  int bpp, enum FilterMode filtering);
112 
113 void ScalePlaneVertical_16(int src_height,
114  int dst_width, int dst_height,
115  int src_stride, int dst_stride,
116  const uint16* src_argb, uint16* dst_argb,
117  int x, int y, int dy,
118  int wpp, enum FilterMode filtering);
119 
120 // Simplify the filtering based on scale factors.
121 enum FilterMode ScaleFilterReduce(int src_width, int src_height,
122  int dst_width, int dst_height,
123  enum FilterMode filtering);
124 
125 // Divide num by div and return as 16.16 fixed point result.
126 int FixedDiv_C(int num, int div);
127 int FixedDiv_X86(int num, int div);
128 // Divide num - 1 by div - 1 and return as 16.16 fixed point result.
129 int FixedDiv1_C(int num, int div);
130 int FixedDiv1_X86(int num, int div);
131 #ifdef HAS_FIXEDDIV_X86
132 #define FixedDiv FixedDiv_X86
133 #define FixedDiv1 FixedDiv1_X86
134 #else
135 #define FixedDiv FixedDiv_C
136 #define FixedDiv1 FixedDiv1_C
137 #endif
138 
139 // Compute slope values for stepping.
140 void ScaleSlope(int src_width, int src_height,
141  int dst_width, int dst_height,
142  enum FilterMode filtering,
143  int* x, int* y, int* dx, int* dy);
144 
145 void ScaleRowDown2_C(const uint8* src_ptr, ptrdiff_t src_stride,
146  uint8* dst, int dst_width);
147 void ScaleRowDown2_16_C(const uint16* src_ptr, ptrdiff_t src_stride,
148  uint16* dst, int dst_width);
149 void ScaleRowDown2Linear_C(const uint8* src_ptr, ptrdiff_t src_stride,
150  uint8* dst, int dst_width);
152  uint16* dst, int dst_width);
153 void ScaleRowDown2Box_C(const uint8* src_ptr, ptrdiff_t src_stride,
154  uint8* dst, int dst_width);
155 void ScaleRowDown2Box_Odd_C(const uint8* src_ptr, ptrdiff_t src_stride,
156  uint8* dst, int dst_width);
157 void ScaleRowDown2Box_16_C(const uint16* src_ptr, ptrdiff_t src_stride,
158  uint16* dst, int dst_width);
159 void ScaleRowDown4_C(const uint8* src_ptr, ptrdiff_t src_stride,
160  uint8* dst, int dst_width);
161 void ScaleRowDown4_16_C(const uint16* src_ptr, ptrdiff_t src_stride,
162  uint16* dst, int dst_width);
163 void ScaleRowDown4Box_C(const uint8* src_ptr, ptrdiff_t src_stride,
164  uint8* dst, int dst_width);
165 void ScaleRowDown4Box_16_C(const uint16* src_ptr, ptrdiff_t src_stride,
166  uint16* dst, int dst_width);
167 void ScaleRowDown34_C(const uint8* src_ptr, ptrdiff_t src_stride,
168  uint8* dst, int dst_width);
169 void ScaleRowDown34_16_C(const uint16* src_ptr, ptrdiff_t src_stride,
170  uint16* dst, int dst_width);
171 void ScaleRowDown34_0_Box_C(const uint8* src_ptr, ptrdiff_t src_stride,
172  uint8* d, int dst_width);
174  uint16* d, int dst_width);
175 void ScaleRowDown34_1_Box_C(const uint8* src_ptr, ptrdiff_t src_stride,
176  uint8* d, int dst_width);
178  uint16* d, int dst_width);
179 void ScaleCols_C(uint8* dst_ptr, const uint8* src_ptr,
180  int dst_width, int x, int dx);
181 void ScaleCols_16_C(uint16* dst_ptr, const uint16* src_ptr,
182  int dst_width, int x, int dx);
183 void ScaleColsUp2_C(uint8* dst_ptr, const uint8* src_ptr,
184  int dst_width, int, int);
185 void ScaleColsUp2_16_C(uint16* dst_ptr, const uint16* src_ptr,
186  int dst_width, int, int);
187 void ScaleFilterCols_C(uint8* dst_ptr, const uint8* src_ptr,
188  int dst_width, int x, int dx);
189 void ScaleFilterCols_16_C(uint16* dst_ptr, const uint16* src_ptr,
190  int dst_width, int x, int dx);
191 void ScaleFilterCols64_C(uint8* dst_ptr, const uint8* src_ptr,
192  int dst_width, int x, int dx);
193 void ScaleFilterCols64_16_C(uint16* dst_ptr, const uint16* src_ptr,
194  int dst_width, int x, int dx);
195 void ScaleRowDown38_C(const uint8* src_ptr, ptrdiff_t src_stride,
196  uint8* dst, int dst_width);
197 void ScaleRowDown38_16_C(const uint16* src_ptr, ptrdiff_t src_stride,
198  uint16* dst, int dst_width);
199 void ScaleRowDown38_3_Box_C(const uint8* src_ptr,
201  uint8* dst_ptr, int dst_width);
202 void ScaleRowDown38_3_Box_16_C(const uint16* src_ptr,
204  uint16* dst_ptr, int dst_width);
205 void ScaleRowDown38_2_Box_C(const uint8* src_ptr, ptrdiff_t src_stride,
206  uint8* dst_ptr, int dst_width);
208  uint16* dst_ptr, int dst_width);
209 void ScaleAddRow_C(const uint8* src_ptr, uint16* dst_ptr, int src_width);
210 void ScaleAddRow_16_C(const uint16* src_ptr, uint32* dst_ptr, int src_width);
211 void ScaleARGBRowDown2_C(const uint8* src_argb,
213  uint8* dst_argb, int dst_width);
214 void ScaleARGBRowDown2Linear_C(const uint8* src_argb,
216  uint8* dst_argb, int dst_width);
217 void ScaleARGBRowDown2Box_C(const uint8* src_argb, ptrdiff_t src_stride,
218  uint8* dst_argb, int dst_width);
219 void ScaleARGBRowDownEven_C(const uint8* src_argb, ptrdiff_t src_stride,
220  int src_stepx,
221  uint8* dst_argb, int dst_width);
222 void ScaleARGBRowDownEvenBox_C(const uint8* src_argb,
224  int src_stepx,
225  uint8* dst_argb, int dst_width);
226 void ScaleARGBCols_C(uint8* dst_argb, const uint8* src_argb,
227  int dst_width, int x, int dx);
228 void ScaleARGBCols64_C(uint8* dst_argb, const uint8* src_argb,
229  int dst_width, int x, int dx);
230 void ScaleARGBColsUp2_C(uint8* dst_argb, const uint8* src_argb,
231  int dst_width, int, int);
232 void ScaleARGBFilterCols_C(uint8* dst_argb, const uint8* src_argb,
233  int dst_width, int x, int dx);
234 void ScaleARGBFilterCols64_C(uint8* dst_argb, const uint8* src_argb,
235  int dst_width, int x, int dx);
236 
237 // Specialized scalers for x86.
238 void ScaleRowDown2_SSSE3(const uint8* src_ptr, ptrdiff_t src_stride,
239  uint8* dst_ptr, int dst_width);
241  uint8* dst_ptr, int dst_width);
242 void ScaleRowDown2Box_SSSE3(const uint8* src_ptr, ptrdiff_t src_stride,
243  uint8* dst_ptr, int dst_width);
244 void ScaleRowDown2_AVX2(const uint8* src_ptr, ptrdiff_t src_stride,
245  uint8* dst_ptr, int dst_width);
247  uint8* dst_ptr, int dst_width);
248 void ScaleRowDown2Box_AVX2(const uint8* src_ptr, ptrdiff_t src_stride,
249  uint8* dst_ptr, int dst_width);
250 void ScaleRowDown4_SSSE3(const uint8* src_ptr, ptrdiff_t src_stride,
251  uint8* dst_ptr, int dst_width);
252 void ScaleRowDown4Box_SSSE3(const uint8* src_ptr, ptrdiff_t src_stride,
253  uint8* dst_ptr, int dst_width);
254 void ScaleRowDown4_AVX2(const uint8* src_ptr, ptrdiff_t src_stride,
255  uint8* dst_ptr, int dst_width);
256 void ScaleRowDown4Box_AVX2(const uint8* src_ptr, ptrdiff_t src_stride,
257  uint8* dst_ptr, int dst_width);
258 
259 void ScaleRowDown34_SSSE3(const uint8* src_ptr, ptrdiff_t src_stride,
260  uint8* dst_ptr, int dst_width);
261 void ScaleRowDown34_1_Box_SSSE3(const uint8* src_ptr,
263  uint8* dst_ptr, int dst_width);
264 void ScaleRowDown34_0_Box_SSSE3(const uint8* src_ptr,
266  uint8* dst_ptr, int dst_width);
267 void ScaleRowDown38_SSSE3(const uint8* src_ptr, ptrdiff_t src_stride,
268  uint8* dst_ptr, int dst_width);
269 void ScaleRowDown38_3_Box_SSSE3(const uint8* src_ptr,
271  uint8* dst_ptr, int dst_width);
272 void ScaleRowDown38_2_Box_SSSE3(const uint8* src_ptr,
274  uint8* dst_ptr, int dst_width);
276  uint8* dst_ptr, int dst_width);
278  uint8* dst_ptr, int dst_width);
280  uint8* dst_ptr, int dst_width);
282  uint8* dst_ptr, int dst_width);
283 void ScaleRowDown2_Any_AVX2(const uint8* src_ptr, ptrdiff_t src_stride,
284  uint8* dst_ptr, int dst_width);
286  uint8* dst_ptr, int dst_width);
288  uint8* dst_ptr, int dst_width);
290  uint8* dst_ptr, int dst_width);
292  uint8* dst_ptr, int dst_width);
294  uint8* dst_ptr, int dst_width);
295 void ScaleRowDown4_Any_AVX2(const uint8* src_ptr, ptrdiff_t src_stride,
296  uint8* dst_ptr, int dst_width);
298  uint8* dst_ptr, int dst_width);
299 
301  uint8* dst_ptr, int dst_width);
302 void ScaleRowDown34_1_Box_Any_SSSE3(const uint8* src_ptr,
304  uint8* dst_ptr, int dst_width);
305 void ScaleRowDown34_0_Box_Any_SSSE3(const uint8* src_ptr,
307  uint8* dst_ptr, int dst_width);
309  uint8* dst_ptr, int dst_width);
310 void ScaleRowDown38_3_Box_Any_SSSE3(const uint8* src_ptr,
312  uint8* dst_ptr, int dst_width);
313 void ScaleRowDown38_2_Box_Any_SSSE3(const uint8* src_ptr,
315  uint8* dst_ptr, int dst_width);
316 
317 void ScaleAddRow_SSE2(const uint8* src_ptr, uint16* dst_ptr, int src_width);
318 void ScaleAddRow_AVX2(const uint8* src_ptr, uint16* dst_ptr, int src_width);
319 void ScaleAddRow_Any_SSE2(const uint8* src_ptr, uint16* dst_ptr, int src_width);
320 void ScaleAddRow_Any_AVX2(const uint8* src_ptr, uint16* dst_ptr, int src_width);
321 
322 void ScaleFilterCols_SSSE3(uint8* dst_ptr, const uint8* src_ptr,
323  int dst_width, int x, int dx);
324 void ScaleColsUp2_SSE2(uint8* dst_ptr, const uint8* src_ptr,
325  int dst_width, int x, int dx);
326 
327 
328 // ARGB Column functions
329 void ScaleARGBCols_SSE2(uint8* dst_argb, const uint8* src_argb,
330  int dst_width, int x, int dx);
331 void ScaleARGBFilterCols_SSSE3(uint8* dst_argb, const uint8* src_argb,
332  int dst_width, int x, int dx);
333 void ScaleARGBColsUp2_SSE2(uint8* dst_argb, const uint8* src_argb,
334  int dst_width, int x, int dx);
335 void ScaleARGBFilterCols_NEON(uint8* dst_argb, const uint8* src_argb,
336  int dst_width, int x, int dx);
337 void ScaleARGBCols_NEON(uint8* dst_argb, const uint8* src_argb,
338  int dst_width, int x, int dx);
339 void ScaleARGBFilterCols_Any_NEON(uint8* dst_argb, const uint8* src_argb,
340  int dst_width, int x, int dx);
341 void ScaleARGBCols_Any_NEON(uint8* dst_argb, const uint8* src_argb,
342  int dst_width, int x, int dx);
343 
344 // ARGB Row functions
345 void ScaleARGBRowDown2_SSE2(const uint8* src_argb, ptrdiff_t src_stride,
346  uint8* dst_argb, int dst_width);
348  uint8* dst_argb, int dst_width);
350  uint8* dst_argb, int dst_width);
351 void ScaleARGBRowDown2_NEON(const uint8* src_ptr, ptrdiff_t src_stride,
352  uint8* dst, int dst_width);
354  uint8* dst_argb, int dst_width);
356  uint8* dst, int dst_width);
358  uint8* dst_argb, int dst_width);
359 void ScaleARGBRowDown2Linear_Any_SSE2(const uint8* src_argb,
361  uint8* dst_argb, int dst_width);
363  uint8* dst_argb, int dst_width);
365  uint8* dst, int dst_width);
366 void ScaleARGBRowDown2Linear_Any_NEON(const uint8* src_argb,
368  uint8* dst_argb, int dst_width);
370  uint8* dst, int dst_width);
371 
373  int src_stepx, uint8* dst_argb, int dst_width);
375  int src_stepx,
376  uint8* dst_argb, int dst_width);
378  int src_stepx,
379  uint8* dst_argb, int dst_width);
381  int src_stepx,
382  uint8* dst_argb, int dst_width);
384  int src_stepx,
385  uint8* dst_argb, int dst_width);
386 void ScaleARGBRowDownEvenBox_Any_SSE2(const uint8* src_argb,
388  int src_stepx,
389  uint8* dst_argb, int dst_width);
391  int src_stepx,
392  uint8* dst_argb, int dst_width);
393 void ScaleARGBRowDownEvenBox_Any_NEON(const uint8* src_argb,
395  int src_stepx,
396  uint8* dst_argb, int dst_width);
397 
398 // ScaleRowDown2Box also used by planar functions
399 // NEON downscalers with interpolation.
400 
401 // Note - not static due to reuse in convert for 444 to 420.
402 void ScaleRowDown2_NEON(const uint8* src_ptr, ptrdiff_t src_stride,
403  uint8* dst, int dst_width);
405  uint8* dst, int dst_width);
406 void ScaleRowDown2Box_NEON(const uint8* src_ptr, ptrdiff_t src_stride,
407  uint8* dst, int dst_width);
408 
409 void ScaleRowDown4_NEON(const uint8* src_ptr, ptrdiff_t src_stride,
410  uint8* dst_ptr, int dst_width);
411 void ScaleRowDown4Box_NEON(const uint8* src_ptr, ptrdiff_t src_stride,
412  uint8* dst_ptr, int dst_width);
413 
414 // Down scale from 4 to 3 pixels. Use the neon multilane read/write
415 // to load up the every 4th pixel into a 4 different registers.
416 // Point samples 32 pixels to 24 pixels.
417 void ScaleRowDown34_NEON(const uint8* src_ptr,
419  uint8* dst_ptr, int dst_width);
420 void ScaleRowDown34_0_Box_NEON(const uint8* src_ptr,
422  uint8* dst_ptr, int dst_width);
423 void ScaleRowDown34_1_Box_NEON(const uint8* src_ptr,
425  uint8* dst_ptr, int dst_width);
426 
427 // 32 -> 12
428 void ScaleRowDown38_NEON(const uint8* src_ptr,
430  uint8* dst_ptr, int dst_width);
431 // 32x3 -> 12x1
432 void ScaleRowDown38_3_Box_NEON(const uint8* src_ptr,
434  uint8* dst_ptr, int dst_width);
435 // 32x2 -> 12x1
436 void ScaleRowDown38_2_Box_NEON(const uint8* src_ptr,
438  uint8* dst_ptr, int dst_width);
439 
440 void ScaleRowDown2_Any_NEON(const uint8* src_ptr, ptrdiff_t src_stride,
441  uint8* dst, int dst_width);
443  uint8* dst, int dst_width);
445  uint8* dst, int dst_width);
447  uint8* dst, int dst_width);
448 void ScaleRowDown4_Any_NEON(const uint8* src_ptr, ptrdiff_t src_stride,
449  uint8* dst_ptr, int dst_width);
451  uint8* dst_ptr, int dst_width);
453  uint8* dst_ptr, int dst_width);
455  uint8* dst_ptr, int dst_width);
457  uint8* dst_ptr, int dst_width);
458 // 32 -> 12
460  uint8* dst_ptr, int dst_width);
461 // 32x3 -> 12x1
463  uint8* dst_ptr, int dst_width);
464 // 32x2 -> 12x1
466  uint8* dst_ptr, int dst_width);
467 
468 void ScaleAddRow_NEON(const uint8* src_ptr, uint16* dst_ptr, int src_width);
469 void ScaleAddRow_Any_NEON(const uint8* src_ptr, uint16* dst_ptr, int src_width);
470 
471 void ScaleFilterCols_NEON(uint8* dst_ptr, const uint8* src_ptr,
472  int dst_width, int x, int dx);
473 
474 void ScaleFilterCols_Any_NEON(uint8* dst_ptr, const uint8* src_ptr,
475  int dst_width, int x, int dx);
476 
477 void ScaleRowDown2_DSPR2(const uint8* src_ptr, ptrdiff_t src_stride,
478  uint8* dst, int dst_width);
479 void ScaleRowDown2Box_DSPR2(const uint8* src_ptr, ptrdiff_t src_stride,
480  uint8* dst, int dst_width);
481 void ScaleRowDown4_DSPR2(const uint8* src_ptr, ptrdiff_t src_stride,
482  uint8* dst, int dst_width);
483 void ScaleRowDown4Box_DSPR2(const uint8* src_ptr, ptrdiff_t src_stride,
484  uint8* dst, int dst_width);
485 void ScaleRowDown34_DSPR2(const uint8* src_ptr, ptrdiff_t src_stride,
486  uint8* dst, int dst_width);
488  uint8* d, int dst_width);
490  uint8* d, int dst_width);
491 void ScaleRowDown38_DSPR2(const uint8* src_ptr, ptrdiff_t src_stride,
492  uint8* dst, int dst_width);
494  uint8* dst_ptr, int dst_width);
496  uint8* dst_ptr, int dst_width);
497 
498 #ifdef __cplusplus
499 } // extern "C"
500 } // namespace libyuv
501 #endif
502 
503 #endif // INCLUDE_LIBYUV_SCALE_ROW_H_
void ScaleRowDown34_C(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst, int dst_width)
Definition: scale_common.cc:245
void ScaleARGBRowDown2_Any_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst, int dst_width)
void ScaleARGBFilterCols_SSSE3(uint8 *dst_argb, const uint8 *src_argb, int dst_width, int x, int dx)
void ScaleRowDown2_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst, int dst_width)
void ScaleAddRow_16_C(const uint16 *src_ptr, uint32 *dst_ptr, int src_width)
Definition: scale_common.cc:667
void ScaleARGBRowDown2Box_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst, int dst_width)
void ScaleRowDown2_Any_AVX2(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown2Box_C(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst, int dst_width)
Definition: scale_common.cc:89
void ScaleRowDown34_1_Box_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown34_Any_SSSE3(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown4Box_C(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst, int dst_width)
Definition: scale_common.cc:173
void ScaleFilterCols_NEON(uint8 *dst_ptr, const uint8 *src_ptr, int dst_width, int x, int dx)
void ScaleARGBCols_C(uint8 *dst_argb, const uint8 *src_argb, int dst_width, int x, int dx)
Definition: scale_common.cc:768
void ScaleARGBRowDown2Linear_Any_NEON(const uint8 *src_argb, ptrdiff_t src_stride, uint8 *dst_argb, int dst_width)
void ScaleSlope(int src_width, int src_height, int dst_width, int dst_height, enum FilterMode filtering, int *x, int *y, int *dx, int *dy)
Definition: scale_common.cc:1088
void ScaleARGBRowDown2_SSE2(const uint8 *src_argb, ptrdiff_t src_stride, uint8 *dst_argb, int dst_width)
int FixedDiv1_C(int num, int div)
Definition: scale_common.cc:1080
FilterMode
Definition: scale.h:22
void ScaleARGBRowDown2Box_SSE2(const uint8 *src_argb, ptrdiff_t src_stride, uint8 *dst_argb, int dst_width)
jobject jint jint jint jobject jint dst_stride
Definition: peerconnection_jni.cc:2184
void ScaleRowDown34_0_Box_SSSE3(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleARGBFilterCols_NEON(uint8 *dst_argb, const uint8 *src_argb, int dst_width, int x, int dx)
void ScaleARGBRowDown2Linear_SSE2(const uint8 *src_argb, ptrdiff_t src_stride, uint8 *dst_argb, int dst_width)
void ScaleARGBCols_SSE2(uint8 *dst_argb, const uint8 *src_argb, int dst_width, int x, int dx)
void ScaleRowDown38_3_Box_Any_SSSE3(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleARGBRowDown2Box_C(const uint8 *src_argb, ptrdiff_t src_stride, uint8 *dst_argb, int dst_width)
Definition: scale_common.cc:713
void ScaleRowDown38_2_Box_DSPR2(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown4_Any_AVX2(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown38_2_Box_Any_SSSE3(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown38_Any_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleARGBCols_NEON(uint8 *dst_argb, const uint8 *src_argb, int dst_width, int x, int dx)
void ScaleRowDown34_0_Box_Any_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleARGBRowDownEven_Any_SSE2(const uint8 *src_argb, ptrdiff_t src_stride, int src_stepx, uint8 *dst_argb, int dst_width)
void ScaleRowDown2_SSSE3(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScalePlaneVertical(int src_height, int dst_width, int dst_height, int src_stride, int dst_stride, const uint8 *src_argb, uint8 *dst_argb, int x, int y, int dy, int bpp, enum FilterMode filtering)
Definition: scale_common.cc:891
void ScaleRowDown2Box_Odd_AVX2(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown38_2_Box_Any_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleAddRow_NEON(const uint8 *src_ptr, uint16 *dst_ptr, int src_width)
void ScaleRowDown34_0_Box_Any_SSSE3(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleARGBRowDownEven_Any_NEON(const uint8 *src_argb, ptrdiff_t src_stride, int src_stepx, uint8 *dst_argb, int dst_width)
void ScaleRowDown4Box_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown2Linear_C(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst, int dst_width)
Definition: scale_common.cc:59
void ScaleAddRow_Any_NEON(const uint8 *src_ptr, uint16 *dst_ptr, int src_width)
void ScaleRowDown38_2_Box_C(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
Definition: scale_common.cc:613
void ScaleRowDown34_1_Box_16_C(const uint16 *src_ptr, ptrdiff_t src_stride, uint16 *d, int dst_width)
Definition: scale_common.cc:339
void ScaleARGBRowDown2_Any_SSE2(const uint8 *src_argb, ptrdiff_t src_stride, uint8 *dst_argb, int dst_width)
void ScaleRowDown2Linear_Any_AVX2(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
unsigned char uint8
Definition: basic_types.h:62
void ScaleRowDown2Box_Any_AVX2(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleAddRow_Any_SSE2(const uint8 *src_ptr, uint16 *dst_ptr, int src_width)
void ScaleRowDown4_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleARGBRowDownEvenBox_Any_NEON(const uint8 *src_argb, ptrdiff_t src_stride, int src_stepx, uint8 *dst_argb, int dst_width)
void ScaleRowDown2Box_Odd_C(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst, int dst_width)
Definition: scale_common.cc:106
void ScaleARGBColsUp2_C(uint8 *dst_argb, const uint8 *src_argb, int dst_width, int, int)
Definition: scale_common.cc:804
void ScaleARGBRowDown2_C(const uint8 *src_argb, ptrdiff_t src_stride, uint8 *dst_argb, int dst_width)
Definition: scale_common.cc:681
int dst_height
Definition: convert.cc:32
void ScaleRowDown34_1_Box_C(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *d, int dst_width)
Definition: scale_common.cc:317
void ScaleAddRow_AVX2(const uint8 *src_ptr, uint16 *dst_ptr, int src_width)
void ScaleRowDown34_1_Box_Any_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleCols_C(uint8 *dst_ptr, const uint8 *src_ptr, int dst_width, int x, int dx)
Definition: scale_common.cc:362
void ScaleFilterCols_16_C(uint16 *dst_ptr, const uint16 *src_ptr, int dst_width, int x, int dx)
Definition: scale_common.cc:483
void ScaleARGBFilterCols64_C(uint8 *dst_argb, const uint8 *src_argb, int dst_width, int x, int dx)
Definition: scale_common.cc:857
void ScaleRowDown38_C(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst, int dst_width)
Definition: scale_common.cc:533
void ScaleARGBRowDownEven_NEON(const uint8 *src_argb, ptrdiff_t src_stride, int src_stepx, uint8 *dst_argb, int dst_width)
void ScaleRowDown38_3_Box_Any_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown2Linear_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst, int dst_width)
void ScaleFilterCols64_16_C(uint16 *dst_ptr, const uint16 *src_ptr, int dst_width, int x, int dx)
Definition: scale_common.cc:507
void ScaleARGBRowDownEvenBox_NEON(const uint8 *src_argb, ptrdiff_t src_stride, int src_stepx, uint8 *dst_argb, int dst_width)
GLenum GLenum dst
Definition: gl2ext.h:304
void ScaleRowDown34_DSPR2(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst, int dst_width)
enum FilterMode ScaleFilterReduce(int src_width, int src_height, int dst_width, int dst_height, enum FilterMode filtering)
Definition: scale_common.cc:1033
void ScaleFilterCols64_C(uint8 *dst_ptr, const uint8 *src_ptr, int dst_width, int x, int dx)
Definition: scale_common.cc:453
void ScaleRowDown34_SSSE3(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown2_16_C(const uint16 *src_ptr, ptrdiff_t src_stride, uint16 *dst, int dst_width)
Definition: scale_common.cc:45
void ScaleRowDown4Box_16_C(const uint16 *src_ptr, ptrdiff_t src_stride, uint16 *dst, int dst_width)
Definition: scale_common.cc:209
void ScaleRowDown2Box_Any_SSSE3(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown34_1_Box_DSPR2(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *d, int dst_width)
void ScaleARGBRowDownEvenBox_Any_SSE2(const uint8 *src_argb, ptrdiff_t src_stride, int src_stepx, uint8 *dst_argb, int dst_width)
EGLSurface EGLint x
Definition: eglext.h:950
void ScaleAddRow_SSE2(const uint8 *src_ptr, uint16 *dst_ptr, int src_width)
int FixedDiv1_X86(int num, int div)
void ScaleRowDown2_C(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst, int dst_width)
Definition: scale_common.cc:31
int FixedDiv_X86(int num, int div)
void ScaleARGBRowDown2Box_Any_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst, int dst_width)
void ScaleARGBRowDown2Linear_NEON(const uint8 *src_argb, ptrdiff_t src_stride, uint8 *dst_argb, int dst_width)
void ScaleRowDown34_0_Box_DSPR2(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *d, int dst_width)
void ScaleRowDown38_Any_SSSE3(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown38_3_Box_C(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
Definition: scale_common.cc:560
void ScaleRowDown4_SSSE3(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown4_AVX2(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown2Box_Any_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst, int dst_width)
void ScaleRowDown38_2_Box_SSSE3(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown34_0_Box_C(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *d, int dst_width)
Definition: scale_common.cc:272
void ScaleRowDown2_Any_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst, int dst_width)
void ScaleRowDown2Box_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst, int dst_width)
void ScaleRowDown38_DSPR2(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst, int dst_width)
void ScaleRowDown38_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleAddRow_C(const uint8 *src_ptr, uint16 *dst_ptr, int src_width)
Definition: scale_common.cc:653
void ScaleRowDown2_DSPR2(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst, int dst_width)
void ScaleRowDown4_16_C(const uint16 *src_ptr, ptrdiff_t src_stride, uint16 *dst, int dst_width)
Definition: scale_common.cc:159
void ScaleRowDown38_3_Box_16_C(const uint16 *src_ptr, ptrdiff_t src_stride, uint16 *dst_ptr, int dst_width)
Definition: scale_common.cc:586
EGLSurface EGLint EGLint y
Definition: eglext.h:950
void ScaleARGBRowDownEven_C(const uint8 *src_argb, ptrdiff_t src_stride, int src_stepx, uint8 *dst_argb, int dst_width)
Definition: scale_common.cc:730
void ScaleRowDown38_16_C(const uint16 *src_ptr, ptrdiff_t src_stride, uint16 *dst, int dst_width)
Definition: scale_common.cc:546
void ScaleRowDown2Linear_Any_SSSE3(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown38_3_Box_SSSE3(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleColsUp2_SSE2(uint8 *dst_ptr, const uint8 *src_ptr, int dst_width, int x, int dx)
void ScaleRowDown4_Any_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown34_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown38_2_Box_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown2Linear_AVX2(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown2Box_16_C(const uint16 *src_ptr, ptrdiff_t src_stride, uint16 *dst, int dst_width)
Definition: scale_common.cc:128
void ScaleRowDown34_0_Box_16_C(const uint16 *src_ptr, ptrdiff_t src_stride, uint16 *d, int dst_width)
Definition: scale_common.cc:294
int FixedDiv_C(int num, int div)
Definition: scale_common.cc:1075
void ScaleRowDown2_AVX2(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown4Box_SSSE3(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleARGBRowDownEvenBox_SSE2(const uint8 *src_argb, ptrdiff_t src_stride, int src_stepx, uint8 *dst_argb, int dst_width)
void ScaleRowDown38_2_Box_16_C(const uint16 *src_ptr, ptrdiff_t src_stride, uint16 *dst_ptr, int dst_width)
Definition: scale_common.cc:633
void ScaleRowDown38_3_Box_DSPR2(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
Definition: basictypes_test.cc:14
void ScaleRowDown2Box_SSSE3(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
int dst_width
Definition: convert.cc:32
void ScaleARGBRowDownEven_SSE2(const uint8 *src_argb, ptrdiff_t src_stride, int src_stepx, uint8 *dst_argb, int dst_width)
std::integral_constant< std::ptrdiff_t, V > ptrdiff_t
Definition: Brigand.h:449
void ScaleARGBFilterCols_Any_NEON(uint8 *dst_argb, const uint8 *src_argb, int dst_width, int x, int dx)
unsigned short uint16
Definition: basic_types.h:60
void ScaleColsUp2_16_C(uint16 *dst_ptr, const uint16 *src_ptr, int dst_width, int, int)
Definition: scale_common.cc:406
void ScaleARGBRowDown2_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst, int dst_width)
void ScaleRowDown2Linear_16_C(const uint16 *src_ptr, ptrdiff_t src_stride, uint16 *dst, int dst_width)
Definition: scale_common.cc:74
void ScaleRowDown4Box_Any_AVX2(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown2Box_AVX2(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleCols_16_C(uint16 *dst_ptr, const uint16 *src_ptr, int dst_width, int x, int dx)
Definition: scale_common.cc:377
void ScaleRowDown4_C(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst, int dst_width)
Definition: scale_common.cc:145
void ScaleARGBRowDown2Linear_Any_SSE2(const uint8 *src_argb, ptrdiff_t src_stride, uint8 *dst_argb, int dst_width)
void ScaleRowDown2Linear_Any_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst, int dst_width)
uint32_t uint32
Definition: angle_config.h:28
void ScaleAddRow_Any_AVX2(const uint8 *src_ptr, uint16 *dst_ptr, int src_width)
void ScaleRowDown34_1_Box_SSSE3(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleARGBRowDown2Linear_C(const uint8 *src_argb, ptrdiff_t src_stride, uint8 *dst_argb, int dst_width)
Definition: scale_common.cc:699
void ScaleRowDown34_0_Box_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleARGBRowDown2Box_Any_SSE2(const uint8 *src_argb, ptrdiff_t src_stride, uint8 *dst_argb, int dst_width)
void ScaleRowDown4Box_AVX2(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleARGBColsUp2_SSE2(uint8 *dst_argb, const uint8 *src_argb, int dst_width, int x, int dx)
void ScaleARGBRowDownEvenBox_C(const uint8 *src_argb, ptrdiff_t src_stride, int src_stepx, uint8 *dst_argb, int dst_width)
Definition: scale_common.cc:748
void ScaleRowDown2Box_Odd_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst, int dst_width)
void ScaleColsUp2_C(uint8 *dst_ptr, const uint8 *src_ptr, int dst_width, int, int)
Definition: scale_common.cc:393
void ScaleRowDown4_DSPR2(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst, int dst_width)
void ScaleRowDown38_3_Box_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown38_SSSE3(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown4Box_Any_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown4Box_DSPR2(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst, int dst_width)
void ScaleRowDown2Box_DSPR2(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst, int dst_width)
void ScaleRowDown34_1_Box_Any_SSSE3(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleFilterCols_SSSE3(uint8 *dst_ptr, const uint8 *src_ptr, int dst_width, int x, int dx)
void ScaleRowDown2_Any_SSSE3(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleRowDown34_16_C(const uint16 *src_ptr, ptrdiff_t src_stride, uint16 *dst, int dst_width)
Definition: scale_common.cc:258
void ScaleARGBFilterCols_C(uint8 *dst_argb, const uint8 *src_argb, int dst_width, int x, int dx)
Definition: scale_common.cc:828
void ScaleRowDown2Box_Odd_SSSE3(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleARGBCols_Any_NEON(uint8 *dst_argb, const uint8 *src_argb, int dst_width, int x, int dx)
void ScaleRowDown2Linear_SSSE3(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
jobject jint jint jint src_stride
Definition: peerconnection_jni.cc:2183
#define d
Definition: float-mm.c:30
void ScaleFilterCols_Any_NEON(uint8 *dst_ptr, const uint8 *src_ptr, int dst_width, int x, int dx)
void ScaleRowDown34_Any_NEON(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScalePlaneVertical_16(int src_height, int dst_width, int dst_height, int src_stride, int dst_stride, const uint16 *src_argb, uint16 *dst_argb, int x, int y, int dy, int wpp, enum FilterMode filtering)
Definition: scale_common.cc:957
void ScaleRowDown4_Any_SSSE3(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)
void ScaleARGBCols64_C(uint8 *dst_argb, const uint8 *src_argb, int dst_width, int x, int dx)
Definition: scale_common.cc:785
void ScaleFilterCols_C(uint8 *dst_ptr, const uint8 *src_ptr, int dst_width, int x, int dx)
Definition: scale_common.cc:429
void ScaleRowDown4Box_Any_SSSE3(const uint8 *src_ptr, ptrdiff_t src_stride, uint8 *dst_ptr, int dst_width)