1 /*
2  * jsimddct.h
3  *
4  * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
5  *
6  * Based on the x86 SIMD extension for IJG JPEG library,
7  * Copyright (C) 1999-2006, MIYASAKA Masaru.
8  * For conditions of distribution and use, see copyright notice in jsimdext.inc
9  *
10  */
11 
12 EXTERN(int) jsimd_can_convsamp(void);
13 EXTERN(int) jsimd_can_convsamp_float(void);
14 
15 EXTERN(void) jsimd_convsamp(JSAMPARRAY sample_data, JDIMENSION start_col,
16                             DCTELEM *workspace);
17 EXTERN(void) jsimd_convsamp_float(JSAMPARRAY sample_data, JDIMENSION start_col,
18                                   FAST_FLOAT *workspace);
19 
20 EXTERN(int) jsimd_can_fdct_islow(void);
21 EXTERN(int) jsimd_can_fdct_ifast(void);
22 EXTERN(int) jsimd_can_fdct_float(void);
23 
24 EXTERN(void) jsimd_fdct_islow(DCTELEM *data);
25 EXTERN(void) jsimd_fdct_ifast(DCTELEM *data);
26 EXTERN(void) jsimd_fdct_float(FAST_FLOAT *data);
27 
28 EXTERN(int) jsimd_can_quantize(void);
29 EXTERN(int) jsimd_can_quantize_float(void);
30 
31 EXTERN(void) jsimd_quantize(JCOEFPTR coef_block, DCTELEM *divisors,
32                             DCTELEM *workspace);
33 EXTERN(void) jsimd_quantize_float(JCOEFPTR coef_block, FAST_FLOAT *divisors,
34                                   FAST_FLOAT *workspace);
35 
36 EXTERN(int) jsimd_can_idct_2x2(void);
37 EXTERN(int) jsimd_can_idct_4x4(void);
38 EXTERN(int) jsimd_can_idct_6x6(void);
39 EXTERN(int) jsimd_can_idct_12x12(void);
40 
41 EXTERN(void) jsimd_idct_2x2(j_decompress_ptr cinfo,
42                             jpeg_component_info *compptr, JCOEFPTR coef_block,
43                             JSAMPARRAY output_buf, JDIMENSION output_col);
44 EXTERN(void) jsimd_idct_4x4(j_decompress_ptr cinfo,
45                             jpeg_component_info *compptr, JCOEFPTR coef_block,
46                             JSAMPARRAY output_buf, JDIMENSION output_col);
47 EXTERN(void) jsimd_idct_6x6(j_decompress_ptr cinfo,
48                             jpeg_component_info *compptr, JCOEFPTR coef_block,
49                             JSAMPARRAY output_buf, JDIMENSION output_col);
50 EXTERN(void) jsimd_idct_12x12(j_decompress_ptr cinfo,
51                               jpeg_component_info *compptr,
52                               JCOEFPTR coef_block, JSAMPARRAY output_buf,
53                               JDIMENSION output_col);
54 
55 EXTERN(int) jsimd_can_idct_islow(void);
56 EXTERN(int) jsimd_can_idct_ifast(void);
57 EXTERN(int) jsimd_can_idct_float(void);
58 
59 EXTERN(void) jsimd_idct_islow(j_decompress_ptr cinfo,
60                               jpeg_component_info *compptr,
61                               JCOEFPTR coef_block, JSAMPARRAY output_buf,
62                               JDIMENSION output_col);
63 EXTERN(void) jsimd_idct_ifast(j_decompress_ptr cinfo,
64                               jpeg_component_info *compptr,
65                               JCOEFPTR coef_block, JSAMPARRAY output_buf,
66                               JDIMENSION output_col);
67 EXTERN(void) jsimd_idct_float(j_decompress_ptr cinfo,
68                               jpeg_component_info *compptr,
69                               JCOEFPTR coef_block, JSAMPARRAY output_buf,
70                               JDIMENSION output_col);
71