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
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
15 /* Bitmask for supported acceleration methods */
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
25 /* SIMD Ext: retrieve SIMD/CPU information */
26 EXTERN(unsigned int) jpeg_simd_cpu_support (void);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
513 /* Sample Conversion */
514 EXTERN(void) jsimd_convsamp_mmx
515 (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM * workspace);
517 EXTERN(void) jsimd_convsamp_sse2
518 (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM * workspace);
520 EXTERN(void) jsimd_convsamp_neon
521 (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM * workspace);
523 EXTERN(void) jsimd_convsamp_mips_dspr2
524 (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM * workspace);
526 /* Floating Point Sample Conversion */
527 EXTERN(void) jsimd_convsamp_float_3dnow
528 (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT * workspace);
530 EXTERN(void) jsimd_convsamp_float_sse
531 (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT * workspace);
533 EXTERN(void) jsimd_convsamp_float_sse2
534 (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT * workspace);
536 EXTERN(void) jsimd_convsamp_float_mips_dspr2
537 (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT * workspace);
539 /* Slow Integer Forward DCT */
540 EXTERN(void) jsimd_fdct_islow_mmx (DCTELEM * data);
542 extern const int jconst_fdct_islow_sse2[];
543 EXTERN(void) jsimd_fdct_islow_sse2 (DCTELEM * data);
545 EXTERN(void) jsimd_fdct_islow_mips_dspr2 (DCTELEM * data);
547 /* Fast Integer Forward DCT */
548 EXTERN(void) jsimd_fdct_ifast_mmx (DCTELEM * data);
550 extern const int jconst_fdct_ifast_sse2[];
551 EXTERN(void) jsimd_fdct_ifast_sse2 (DCTELEM * data);
553 EXTERN(void) jsimd_fdct_ifast_neon (DCTELEM * data);
555 EXTERN(void) jsimd_fdct_ifast_mips_dspr2 (DCTELEM * data);
557 /* Floating Point Forward DCT */
558 EXTERN(void) jsimd_fdct_float_3dnow (FAST_FLOAT * data);
560 extern const int jconst_fdct_float_sse[];
561 EXTERN(void) jsimd_fdct_float_sse (FAST_FLOAT * data);
564 EXTERN(void) jsimd_quantize_mmx
565 (JCOEFPTR coef_block, DCTELEM * divisors, DCTELEM * workspace);
567 EXTERN(void) jsimd_quantize_sse2
568 (JCOEFPTR coef_block, DCTELEM * divisors, DCTELEM * workspace);
570 EXTERN(void) jsimd_quantize_neon
571 (JCOEFPTR coef_block, DCTELEM * divisors, DCTELEM * workspace);
573 EXTERN(void) jsimd_quantize_mips_dspr2
574 (JCOEFPTR coef_block, DCTELEM * divisors, DCTELEM * workspace);
576 /* Floating Point Quantization */
577 EXTERN(void) jsimd_quantize_float_3dnow
578 (JCOEFPTR coef_block, FAST_FLOAT * divisors, FAST_FLOAT * workspace);
580 EXTERN(void) jsimd_quantize_float_sse
581 (JCOEFPTR coef_block, FAST_FLOAT * divisors, FAST_FLOAT * workspace);
583 EXTERN(void) jsimd_quantize_float_sse2
584 (JCOEFPTR coef_block, FAST_FLOAT * divisors, FAST_FLOAT * workspace);
586 EXTERN(void) jsimd_quantize_float_mips_dspr2
587 (JCOEFPTR coef_block, FAST_FLOAT * divisors, FAST_FLOAT * workspace);
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);
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);
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);
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);
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);
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);
636 EXTERN(void) jsimd_idct_islow_neon
637 (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
638 JDIMENSION output_col);
640 EXTERN(void) jsimd_idct_islow_mips_dspr2
641 (void * dct_table, JCOEFPTR coef_block, int * output_buf,
642 JSAMPLE * output_col);
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);
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);
654 EXTERN(void) jsimd_idct_ifast_neon
655 (void * dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
656 JDIMENSION output_col);
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);
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);
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);
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);
680 /* TIZEN_PRODUCT_TV */
681 EXTERN(void) jsimd_pick_color
682 JPP((JSAMPARRAY output_buf,
684 JDIMENSION out_width));
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));