Add pkg config and color picker feature for product TV
[platform/upstream/libjpeg-turbo.git] / simd / jsimd.h
1 /*
2  * simd/jsimd.h
3  *
4  * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
5  * Copyright 2011 D. R. Commander
6  * Copyright (C) 2013-2014, MIPS Technologies, Inc., California
7  * Copyright (C) 2014 Linaro Limited
8  *
9  * Based on the x86 SIMD extension for IJG JPEG library,
10  * Copyright (C) 1999-2006, MIYASAKA Masaru.
11  * For conditions of distribution and use, see copyright notice in jsimdext.inc
12  *
13  */
14
15 /* Bitmask for supported acceleration methods */
16
17 #define JSIMD_NONE       0x00
18 #define JSIMD_MMX        0x01
19 #define JSIMD_3DNOW      0x02
20 #define JSIMD_SSE        0x04
21 #define JSIMD_SSE2       0x08
22 #define JSIMD_ARM_NEON   0x10
23 #define JSIMD_MIPS_DSPR2 0x20
24
25 /* SIMD Ext: retrieve SIMD/CPU information */
26 EXTERN(unsigned int) jpeg_simd_cpu_support (void);
27
28 /* RGB & extended RGB --> YCC Colorspace Conversion */
29 EXTERN(void) jsimd_rgb_ycc_convert_mmx
30         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
31          JDIMENSION output_row, int num_rows);
32 EXTERN(void) jsimd_extrgb_ycc_convert_mmx
33         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
34          JDIMENSION output_row, int num_rows);
35 EXTERN(void) jsimd_extrgbx_ycc_convert_mmx
36         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
37          JDIMENSION output_row, int num_rows);
38 EXTERN(void) jsimd_extbgr_ycc_convert_mmx
39         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
40          JDIMENSION output_row, int num_rows);
41 EXTERN(void) jsimd_extbgrx_ycc_convert_mmx
42         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
43          JDIMENSION output_row, int num_rows);
44 EXTERN(void) jsimd_extxbgr_ycc_convert_mmx
45         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
46          JDIMENSION output_row, int num_rows);
47 EXTERN(void) jsimd_extxrgb_ycc_convert_mmx
48         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
49          JDIMENSION output_row, int num_rows);
50
51 extern const int jconst_rgb_ycc_convert_sse2[];
52 EXTERN(void) jsimd_rgb_ycc_convert_sse2
53         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
54          JDIMENSION output_row, int num_rows);
55 EXTERN(void) jsimd_extrgb_ycc_convert_sse2
56         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
57          JDIMENSION output_row, int num_rows);
58 EXTERN(void) jsimd_extrgbx_ycc_convert_sse2
59         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
60          JDIMENSION output_row, int num_rows);
61 EXTERN(void) jsimd_extbgr_ycc_convert_sse2
62         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
63          JDIMENSION output_row, int num_rows);
64 EXTERN(void) jsimd_extbgrx_ycc_convert_sse2
65         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
66          JDIMENSION output_row, int num_rows);
67 EXTERN(void) jsimd_extxbgr_ycc_convert_sse2
68         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
69          JDIMENSION output_row, int num_rows);
70 EXTERN(void) jsimd_extxrgb_ycc_convert_sse2
71         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
72          JDIMENSION output_row, int num_rows);
73
74 EXTERN(void) jsimd_rgb_ycc_convert_neon
75         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
76          JDIMENSION output_row, int num_rows);
77 EXTERN(void) jsimd_extrgb_ycc_convert_neon
78         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
79          JDIMENSION output_row, int num_rows);
80 EXTERN(void) jsimd_extrgbx_ycc_convert_neon
81         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
82          JDIMENSION output_row, int num_rows);
83 EXTERN(void) jsimd_extbgr_ycc_convert_neon
84         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
85          JDIMENSION output_row, int num_rows);
86 EXTERN(void) jsimd_extbgrx_ycc_convert_neon
87         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
88          JDIMENSION output_row, int num_rows);
89 EXTERN(void) jsimd_extxbgr_ycc_convert_neon
90         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
91          JDIMENSION output_row, int num_rows);
92 EXTERN(void) jsimd_extxrgb_ycc_convert_neon
93         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
94          JDIMENSION output_row, int num_rows);
95
96 EXTERN(void) jsimd_rgb_ycc_convert_mips_dspr2
97         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
98          JDIMENSION output_row, int num_rows);
99 EXTERN(void) jsimd_extrgb_ycc_convert_mips_dspr2
100         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
101          JDIMENSION output_row, int num_rows);
102 EXTERN(void) jsimd_extrgbx_ycc_convert_mips_dspr2
103         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
104          JDIMENSION output_row, int num_rows);
105 EXTERN(void) jsimd_extbgr_ycc_convert_mips_dspr2
106         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
107          JDIMENSION output_row, int num_rows);
108 EXTERN(void) jsimd_extbgrx_ycc_convert_mips_dspr2
109         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
110          JDIMENSION output_row, int num_rows);
111 EXTERN(void) jsimd_extxbgr_ycc_convert_mips_dspr2
112         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
113          JDIMENSION output_row, int num_rows);
114 EXTERN(void) jsimd_extxrgb_ycc_convert_mips_dspr2
115         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
116          JDIMENSION output_row, int num_rows);
117
118 /* RGB & extended RGB --> Grayscale Colorspace Conversion */
119 EXTERN(void) jsimd_rgb_gray_convert_mmx
120         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
121          JDIMENSION output_row, int num_rows);
122 EXTERN(void) jsimd_extrgb_gray_convert_mmx
123         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
124          JDIMENSION output_row, int num_rows);
125 EXTERN(void) jsimd_extrgbx_gray_convert_mmx
126         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
127          JDIMENSION output_row, int num_rows);
128 EXTERN(void) jsimd_extbgr_gray_convert_mmx
129         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
130          JDIMENSION output_row, int num_rows);
131 EXTERN(void) jsimd_extbgrx_gray_convert_mmx
132         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
133          JDIMENSION output_row, int num_rows);
134 EXTERN(void) jsimd_extxbgr_gray_convert_mmx
135         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
136          JDIMENSION output_row, int num_rows);
137 EXTERN(void) jsimd_extxrgb_gray_convert_mmx
138         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
139          JDIMENSION output_row, int num_rows);
140
141 extern const int jconst_rgb_gray_convert_sse2[];
142 EXTERN(void) jsimd_rgb_gray_convert_sse2
143         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
144          JDIMENSION output_row, int num_rows);
145 EXTERN(void) jsimd_extrgb_gray_convert_sse2
146         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
147          JDIMENSION output_row, int num_rows);
148 EXTERN(void) jsimd_extrgbx_gray_convert_sse2
149         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
150          JDIMENSION output_row, int num_rows);
151 EXTERN(void) jsimd_extbgr_gray_convert_sse2
152         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
153          JDIMENSION output_row, int num_rows);
154 EXTERN(void) jsimd_extbgrx_gray_convert_sse2
155         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
156          JDIMENSION output_row, int num_rows);
157 EXTERN(void) jsimd_extxbgr_gray_convert_sse2
158         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
159          JDIMENSION output_row, int num_rows);
160 EXTERN(void) jsimd_extxrgb_gray_convert_sse2
161         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
162          JDIMENSION output_row, int num_rows);
163
164 EXTERN(void) jsimd_rgb_gray_convert_mips_dspr2
165         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
166          JDIMENSION output_row, int num_rows);
167 EXTERN(void) jsimd_extrgb_gray_convert_mips_dspr2
168         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
169          JDIMENSION output_row, int num_rows);
170 EXTERN(void) jsimd_extrgbx_gray_convert_mips_dspr2
171         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
172          JDIMENSION output_row, int num_rows);
173 EXTERN(void) jsimd_extbgr_gray_convert_mips_dspr2
174         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
175          JDIMENSION output_row, int num_rows);
176 EXTERN(void) jsimd_extbgrx_gray_convert_mips_dspr2
177         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
178          JDIMENSION output_row, int num_rows);
179 EXTERN(void) jsimd_extxbgr_gray_convert_mips_dspr2
180         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
181          JDIMENSION output_row, int num_rows);
182 EXTERN(void) jsimd_extxrgb_gray_convert_mips_dspr2
183         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
184          JDIMENSION output_row, int num_rows);
185
186 /* YCC --> RGB & extended RGB Colorspace Conversion */
187 EXTERN(void) jsimd_ycc_rgb_convert_mmx
188         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
189          JSAMPARRAY output_buf, int num_rows);
190 EXTERN(void) jsimd_ycc_extrgb_convert_mmx
191         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
192          JSAMPARRAY output_buf, int num_rows);
193 EXTERN(void) jsimd_ycc_extrgbx_convert_mmx
194         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
195          JSAMPARRAY output_buf, int num_rows);
196 EXTERN(void) jsimd_ycc_extbgr_convert_mmx
197         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
198          JSAMPARRAY output_buf, int num_rows);
199 EXTERN(void) jsimd_ycc_extbgrx_convert_mmx
200         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
201          JSAMPARRAY output_buf, int num_rows);
202 EXTERN(void) jsimd_ycc_extxbgr_convert_mmx
203         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
204          JSAMPARRAY output_buf, int num_rows);
205 EXTERN(void) jsimd_ycc_extxrgb_convert_mmx
206         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
207          JSAMPARRAY output_buf, int num_rows);
208
209 extern const int jconst_ycc_rgb_convert_sse2[];
210 EXTERN(void) jsimd_ycc_rgb_convert_sse2
211         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
212          JSAMPARRAY output_buf, int num_rows);
213 EXTERN(void) jsimd_ycc_extrgb_convert_sse2
214         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
215          JSAMPARRAY output_buf, int num_rows);
216 EXTERN(void) jsimd_ycc_extrgbx_convert_sse2
217         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
218          JSAMPARRAY output_buf, int num_rows);
219 EXTERN(void) jsimd_ycc_extbgr_convert_sse2
220         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
221          JSAMPARRAY output_buf, int num_rows);
222 EXTERN(void) jsimd_ycc_extbgrx_convert_sse2
223         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
224          JSAMPARRAY output_buf, int num_rows);
225 EXTERN(void) jsimd_ycc_extxbgr_convert_sse2
226         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
227          JSAMPARRAY output_buf, int num_rows);
228 EXTERN(void) jsimd_ycc_extxrgb_convert_sse2
229         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
230          JSAMPARRAY output_buf, int num_rows);
231
232 EXTERN(void) jsimd_ycc_rgb_convert_neon
233         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
234          JSAMPARRAY output_buf, int num_rows);
235 EXTERN(void) jsimd_ycc_extrgb_convert_neon
236         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
237          JSAMPARRAY output_buf, int num_rows);
238 EXTERN(void) jsimd_ycc_extrgbx_convert_neon
239         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
240          JSAMPARRAY output_buf, int num_rows);
241 EXTERN(void) jsimd_ycc_extbgr_convert_neon
242         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
243          JSAMPARRAY output_buf, int num_rows);
244 EXTERN(void) jsimd_ycc_extbgrx_convert_neon
245         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
246          JSAMPARRAY output_buf, int num_rows);
247 EXTERN(void) jsimd_ycc_extxbgr_convert_neon
248         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
249          JSAMPARRAY output_buf, int num_rows);
250 EXTERN(void) jsimd_ycc_extxrgb_convert_neon
251         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
252          JSAMPARRAY output_buf, int num_rows);
253 EXTERN(void) jsimd_ycc_rgb565_convert_neon
254         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
255          JSAMPARRAY output_buf, int num_rows);
256
257 EXTERN(void) jsimd_ycc_rgb_convert_mips_dspr2
258         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
259          JSAMPARRAY output_buf, int num_rows);
260 EXTERN(void) jsimd_ycc_extrgb_convert_mips_dspr2
261         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
262          JSAMPARRAY output_buf, int num_rows);
263 EXTERN(void) jsimd_ycc_extrgbx_convert_mips_dspr2
264         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
265          JSAMPARRAY output_buf, int num_rows);
266 EXTERN(void) jsimd_ycc_extbgr_convert_mips_dspr2
267         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
268          JSAMPARRAY output_buf, int num_rows);
269 EXTERN(void) jsimd_ycc_extbgrx_convert_mips_dspr2
270         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
271          JSAMPARRAY output_buf, int num_rows);
272 EXTERN(void) jsimd_ycc_extxbgr_convert_mips_dspr2
273         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
274          JSAMPARRAY output_buf, int num_rows);
275 EXTERN(void) jsimd_ycc_extxrgb_convert_mips_dspr2
276         (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
277          JSAMPARRAY output_buf, int num_rows);
278
279 /* NULL Colorspace Conversion */
280 EXTERN(void) jsimd_c_null_convert_mips_dspr2
281         (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
282          JDIMENSION output_row, int num_rows, int num_components);
283
284 /* h2v1 Downsampling */
285 EXTERN(void) jsimd_h2v1_downsample_mmx
286         (JDIMENSION image_width, int max_v_samp_factor,
287          JDIMENSION v_samp_factor, JDIMENSION width_blocks,
288          JSAMPARRAY input_data, JSAMPARRAY output_data);
289
290 EXTERN(void) jsimd_h2v1_downsample_sse2
291         (JDIMENSION image_width, int max_v_samp_factor,
292          JDIMENSION v_samp_factor, JDIMENSION width_blocks,
293          JSAMPARRAY input_data, JSAMPARRAY output_data);
294
295 EXTERN(void) jsimd_h2v1_downsample_mips_dspr2
296         (JDIMENSION image_width, int max_v_samp_factor,
297          JDIMENSION v_samp_factor, JDIMENSION width_blocks,
298          JSAMPARRAY input_data, JSAMPARRAY output_data);
299
300 /* h2v2 Downsampling */
301 EXTERN(void) jsimd_h2v2_downsample_mmx
302         (JDIMENSION image_width, int max_v_samp_factor,
303          JDIMENSION v_samp_factor, JDIMENSION width_blocks,
304          JSAMPARRAY input_data, JSAMPARRAY output_data);
305
306 EXTERN(void) jsimd_h2v2_downsample_sse2
307         (JDIMENSION image_width, int max_v_samp_factor,
308          JDIMENSION v_samp_factor, JDIMENSION width_blocks,
309          JSAMPARRAY input_data, JSAMPARRAY output_data);
310
311 EXTERN(void) jsimd_h2v2_downsample_mips_dspr2
312         (JDIMENSION image_width, int max_v_samp_factor,
313          JDIMENSION v_samp_factor, JDIMENSION width_blocks,
314          JSAMPARRAY input_data, JSAMPARRAY output_data);
315
316 /* h2v2 Smooth Downsampling */
317 EXTERN(void) jsimd_h2v2_smooth_downsample_mips_dspr2
318         (JSAMPARRAY input_data, JSAMPARRAY output_data,
319          JDIMENSION v_samp_factor, int max_v_samp_factor,
320          int smoothing_factor, JDIMENSION width_blocks,
321          JDIMENSION image_width);
322
323
324 /* Upsampling */
325 EXTERN(void) jsimd_h2v1_upsample_mmx
326         (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
327          JSAMPARRAY * output_data_ptr);
328 EXTERN(void) jsimd_h2v2_upsample_mmx
329         (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
330          JSAMPARRAY * output_data_ptr);
331
332 EXTERN(void) jsimd_h2v1_upsample_sse2
333         (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
334          JSAMPARRAY * output_data_ptr);
335 EXTERN(void) jsimd_h2v2_upsample_sse2
336         (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
337          JSAMPARRAY * output_data_ptr);
338
339 EXTERN(void) jsimd_h2v1_upsample_mips_dspr2
340         (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
341          JSAMPARRAY * output_data_ptr);
342 EXTERN(void) jsimd_h2v2_upsample_mips_dspr2
343         (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
344          JSAMPARRAY * output_data_ptr);
345
346 EXTERN(void) jsimd_int_upsample_mips_dspr2
347         (UINT8 h_expand, UINT8 v_expand, JSAMPARRAY input_data,
348          JSAMPARRAY * output_data_ptr, JDIMENSION output_width,
349          int max_v_samp_factor);
350
351
352 /* Fancy Upsampling */
353 EXTERN(void) jsimd_h2v1_fancy_upsample_mmx
354         (int max_v_samp_factor, JDIMENSION downsampled_width,
355          JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr);
356 EXTERN(void) jsimd_h2v2_fancy_upsample_mmx
357         (int max_v_samp_factor, JDIMENSION downsampled_width,
358          JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr);
359
360 extern const int jconst_fancy_upsample_sse2[];
361 EXTERN(void) jsimd_h2v1_fancy_upsample_sse2
362         (int max_v_samp_factor, JDIMENSION downsampled_width,
363          JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr);
364 EXTERN(void) jsimd_h2v2_fancy_upsample_sse2
365         (int max_v_samp_factor, JDIMENSION downsampled_width,
366          JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr);
367
368 EXTERN(void) jsimd_h2v1_fancy_upsample_neon
369         (int max_v_samp_factor, JDIMENSION downsampled_width,
370          JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr);
371
372 EXTERN(void) jsimd_h2v1_fancy_upsample_mips_dspr2
373         (int max_v_samp_factor, JDIMENSION downsampled_width,
374          JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr);
375 EXTERN(void) jsimd_h2v2_fancy_upsample_mips_dspr2
376         (int max_v_samp_factor, JDIMENSION downsampled_width,
377          JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr);
378
379 /* Merged Upsampling */
380 EXTERN(void) jsimd_h2v1_merged_upsample_mmx
381         (JDIMENSION output_width, JSAMPIMAGE input_buf,
382          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
383 EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_mmx
384         (JDIMENSION output_width, JSAMPIMAGE input_buf,
385          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
386 EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_mmx
387         (JDIMENSION output_width, JSAMPIMAGE input_buf,
388          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
389 EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_mmx
390         (JDIMENSION output_width, JSAMPIMAGE input_buf,
391          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
392 EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_mmx
393         (JDIMENSION output_width, JSAMPIMAGE input_buf,
394          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
395 EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_mmx
396         (JDIMENSION output_width, JSAMPIMAGE input_buf,
397          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
398 EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_mmx
399         (JDIMENSION output_width, JSAMPIMAGE input_buf,
400          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
401
402 EXTERN(void) jsimd_h2v2_merged_upsample_mmx
403         (JDIMENSION output_width, JSAMPIMAGE input_buf,
404          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
405 EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_mmx
406         (JDIMENSION output_width, JSAMPIMAGE input_buf,
407          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
408 EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_mmx
409         (JDIMENSION output_width, JSAMPIMAGE input_buf,
410          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
411 EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_mmx
412         (JDIMENSION output_width, JSAMPIMAGE input_buf,
413          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
414 EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_mmx
415         (JDIMENSION output_width, JSAMPIMAGE input_buf,
416          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
417 EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_mmx
418         (JDIMENSION output_width, JSAMPIMAGE input_buf,
419          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
420 EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_mmx
421         (JDIMENSION output_width, JSAMPIMAGE input_buf,
422          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
423
424 extern const int jconst_merged_upsample_sse2[];
425 EXTERN(void) jsimd_h2v1_merged_upsample_sse2
426         (JDIMENSION output_width, JSAMPIMAGE input_buf,
427          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
428 EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_sse2
429         (JDIMENSION output_width, JSAMPIMAGE input_buf,
430          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
431 EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_sse2
432         (JDIMENSION output_width, JSAMPIMAGE input_buf,
433          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
434 EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_sse2
435         (JDIMENSION output_width, JSAMPIMAGE input_buf,
436          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
437 EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_sse2
438         (JDIMENSION output_width, JSAMPIMAGE input_buf,
439          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
440 EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_sse2
441         (JDIMENSION output_width, JSAMPIMAGE input_buf,
442          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
443 EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_sse2
444         (JDIMENSION output_width, JSAMPIMAGE input_buf,
445          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
446
447 EXTERN(void) jsimd_h2v2_merged_upsample_sse2
448         (JDIMENSION output_width, JSAMPIMAGE input_buf,
449          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
450 EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_sse2
451         (JDIMENSION output_width, JSAMPIMAGE input_buf,
452          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
453 EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_sse2
454         (JDIMENSION output_width, JSAMPIMAGE input_buf,
455          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
456 EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_sse2
457         (JDIMENSION output_width, JSAMPIMAGE input_buf,
458          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
459 EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_sse2
460         (JDIMENSION output_width, JSAMPIMAGE input_buf,
461          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
462 EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_sse2
463         (JDIMENSION output_width, JSAMPIMAGE input_buf,
464          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
465 EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_sse2
466         (JDIMENSION output_width, JSAMPIMAGE input_buf,
467          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
468
469 EXTERN(void) jsimd_h2v1_merged_upsample_mips_dspr2
470         (JDIMENSION output_width, JSAMPIMAGE input_buf,
471          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
472 EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_mips_dspr2
473         (JDIMENSION output_width, JSAMPIMAGE input_buf,
474          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
475 EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_mips_dspr2
476         (JDIMENSION output_width, JSAMPIMAGE input_buf,
477          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
478 EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_mips_dspr2
479         (JDIMENSION output_width, JSAMPIMAGE input_buf,
480          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
481 EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_mips_dspr2
482         (JDIMENSION output_width, JSAMPIMAGE input_buf,
483          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
484 EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_mips_dspr2
485         (JDIMENSION output_width, JSAMPIMAGE input_buf,
486          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
487 EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_mips_dspr2
488         (JDIMENSION output_width, JSAMPIMAGE input_buf,
489          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
490
491 EXTERN(void) jsimd_h2v2_merged_upsample_mips_dspr2
492         (JDIMENSION output_width, JSAMPIMAGE input_buf,
493          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
494 EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_mips_dspr2
495         (JDIMENSION output_width, JSAMPIMAGE input_buf,
496          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
497 EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_mips_dspr2
498         (JDIMENSION output_width, JSAMPIMAGE input_buf,
499          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
500 EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_mips_dspr2
501         (JDIMENSION output_width, JSAMPIMAGE input_buf,
502          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
503 EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_mips_dspr2
504         (JDIMENSION output_width, JSAMPIMAGE input_buf,
505          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
506 EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_mips_dspr2
507         (JDIMENSION output_width, JSAMPIMAGE input_buf,
508          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
509 EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_mips_dspr2
510         (JDIMENSION output_width, JSAMPIMAGE input_buf,
511          JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf, JSAMPLE* range);
512
513 /* Sample Conversion */
514 EXTERN(void) jsimd_convsamp_mmx
515         (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM * workspace);
516
517 EXTERN(void) jsimd_convsamp_sse2
518         (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM * workspace);
519
520 EXTERN(void) jsimd_convsamp_neon
521         (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM * workspace);
522
523 EXTERN(void) jsimd_convsamp_mips_dspr2
524         (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM * workspace);
525
526 /* Floating Point Sample Conversion */
527 EXTERN(void) jsimd_convsamp_float_3dnow
528         (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT * workspace);
529
530 EXTERN(void) jsimd_convsamp_float_sse
531         (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT * workspace);
532
533 EXTERN(void) jsimd_convsamp_float_sse2
534         (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT * workspace);
535
536 EXTERN(void) jsimd_convsamp_float_mips_dspr2
537         (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT * workspace);
538
539 /* Slow Integer Forward DCT */
540 EXTERN(void) jsimd_fdct_islow_mmx (DCTELEM * data);
541
542 extern const int jconst_fdct_islow_sse2[];
543 EXTERN(void) jsimd_fdct_islow_sse2 (DCTELEM * data);
544
545 EXTERN(void) jsimd_fdct_islow_mips_dspr2 (DCTELEM * data);
546
547 /* Fast Integer Forward DCT */
548 EXTERN(void) jsimd_fdct_ifast_mmx (DCTELEM * data);
549
550 extern const int jconst_fdct_ifast_sse2[];
551 EXTERN(void) jsimd_fdct_ifast_sse2 (DCTELEM * data);
552
553 EXTERN(void) jsimd_fdct_ifast_neon (DCTELEM * data);
554
555 EXTERN(void) jsimd_fdct_ifast_mips_dspr2 (DCTELEM * data);
556
557 /* Floating Point Forward DCT */
558 EXTERN(void) jsimd_fdct_float_3dnow (FAST_FLOAT * data);
559
560 extern const int jconst_fdct_float_sse[];
561 EXTERN(void) jsimd_fdct_float_sse (FAST_FLOAT * data);
562
563 /* Quantization */
564 EXTERN(void) jsimd_quantize_mmx
565         (JCOEFPTR coef_block, DCTELEM * divisors, DCTELEM * workspace);
566
567 EXTERN(void) jsimd_quantize_sse2
568         (JCOEFPTR coef_block, DCTELEM * divisors, DCTELEM * workspace);
569
570 EXTERN(void) jsimd_quantize_neon
571         (JCOEFPTR coef_block, DCTELEM * divisors, DCTELEM * workspace);
572
573 EXTERN(void) jsimd_quantize_mips_dspr2
574         (JCOEFPTR coef_block, DCTELEM * divisors, DCTELEM * workspace);
575
576 /* Floating Point Quantization */
577 EXTERN(void) jsimd_quantize_float_3dnow
578         (JCOEFPTR coef_block, FAST_FLOAT * divisors, FAST_FLOAT * workspace);
579
580 EXTERN(void) jsimd_quantize_float_sse
581         (JCOEFPTR coef_block, FAST_FLOAT * divisors, FAST_FLOAT * workspace);
582
583 EXTERN(void) jsimd_quantize_float_sse2
584         (JCOEFPTR coef_block, FAST_FLOAT * divisors, FAST_FLOAT * workspace);
585
586 EXTERN(void) jsimd_quantize_float_mips_dspr2
587         (JCOEFPTR coef_block, FAST_FLOAT * divisors, FAST_FLOAT * workspace);
588
589 /* Scaled Inverse DCT */
590 EXTERN(void) jsimd_idct_2x2_mmx
591         (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
592          JDIMENSION output_col);
593 EXTERN(void) jsimd_idct_4x4_mmx
594         (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
595          JDIMENSION output_col);
596
597 extern const int jconst_idct_red_sse2[];
598 EXTERN(void) jsimd_idct_2x2_sse2
599         (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
600          JDIMENSION output_col);
601 EXTERN(void) jsimd_idct_4x4_sse2
602         (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
603          JDIMENSION output_col);
604
605 EXTERN(void) jsimd_idct_2x2_neon
606         (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
607          JDIMENSION output_col);
608 EXTERN(void) jsimd_idct_4x4_neon
609         (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
610          JDIMENSION output_col);
611
612 EXTERN(void) jsimd_idct_2x2_mips_dspr2
613         (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
614          JDIMENSION output_col);
615 EXTERN(void) jsimd_idct_4x4_mips_dspr2
616         (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
617          JDIMENSION output_col, int * workspace);
618 EXTERN(void) jsimd_idct_6x6_mips_dspr2
619         (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
620          JDIMENSION output_col);
621 EXTERN(void) jsimd_idct_12x12_pass1_mips_dspr2
622         (JCOEFPTR coef_block, void * dct_table, int * workspace);
623 EXTERN(void) jsimd_idct_12x12_pass2_mips_dspr2
624         (int * workspace, int * output);
625
626 /* Slow Integer Inverse DCT */
627 EXTERN(void) jsimd_idct_islow_mmx
628         (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
629          JDIMENSION output_col);
630
631 extern const int jconst_idct_islow_sse2[];
632 EXTERN(void) jsimd_idct_islow_sse2
633         (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
634          JDIMENSION output_col);
635
636 EXTERN(void) jsimd_idct_islow_neon
637         (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
638          JDIMENSION output_col);
639
640 EXTERN(void) jsimd_idct_islow_mips_dspr2
641         (void * dct_table, JCOEFPTR coef_block, int * output_buf,
642          JSAMPLE * output_col);
643
644 /* Fast Integer Inverse DCT */
645 EXTERN(void) jsimd_idct_ifast_mmx
646         (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
647          JDIMENSION output_col);
648
649 extern const int jconst_idct_ifast_sse2[];
650 EXTERN(void) jsimd_idct_ifast_sse2
651         (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
652          JDIMENSION output_col);
653
654 EXTERN(void) jsimd_idct_ifast_neon
655         (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
656          JDIMENSION output_col);
657
658 EXTERN(void) jsimd_idct_ifast_cols_mips_dspr2
659         (JCOEF * inptr, IFAST_MULT_TYPE * quantptr, DCTELEM * wsptr,
660          const int * idct_coefs);
661 EXTERN(void) jsimd_idct_ifast_rows_mips_dspr2
662         (DCTELEM * wsptr, JSAMPARRAY output_buf, JDIMENSION output_col,
663          const int * idct_coefs);
664
665 /* Floating Point Inverse DCT */
666 EXTERN(void) jsimd_idct_float_3dnow
667         (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
668          JDIMENSION output_col);
669
670 extern const int jconst_idct_float_sse[];
671 EXTERN(void) jsimd_idct_float_sse
672         (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
673          JDIMENSION output_col);
674
675 extern const int jconst_idct_float_sse2[];
676 EXTERN(void) jsimd_idct_float_sse2
677         (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
678          JDIMENSION output_col);
679
680 /* TIZEN_PRODUCT_TV */
681 EXTERN(void) jsimd_pick_color
682         JPP((JSAMPARRAY output_buf,
683                          void *pickColor,
684                          JDIMENSION out_width));
685
686 EXTERN(void) jsimd_h2v1_fancy_upsample_neon
687         JPP((int max_v_samp_factor, JDIMENSION downsampled_width,
688              JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr));