blob: aa421fb1b020916b4d1c21befaee65cb6533f49c [file] [log] [blame]
Pierre Ossman59a39382009-03-09 13:15:56 +00001/*
2 * jsimddct.h
3 *
4 * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
DRC1a45b812014-05-09 18:06:58 +00005 *
Pierre Ossman59a39382009-03-09 13:15:56 +00006 * Based on the x86 SIMD extension for IJG JPEG library,
7 * Copyright (C) 1999-2006, MIYASAKA Masaru.
DRCaf1ca9b2011-02-02 05:42:37 +00008 * For conditions of distribution and use, see copyright notice in jsimdext.inc
Pierre Ossman59a39382009-03-09 13:15:56 +00009 *
10 */
11
DRCbc56b752014-05-16 10:43:44 +000012EXTERN(int) jsimd_can_convsamp (void);
13EXTERN(int) jsimd_can_convsamp_float (void);
Pierre Ossman59a39382009-03-09 13:15:56 +000014
DRCbc56b752014-05-16 10:43:44 +000015EXTERN(void) jsimd_convsamp (JSAMPARRAY sample_data, JDIMENSION start_col,
16 DCTELEM * workspace);
17EXTERN(void) jsimd_convsamp_float (JSAMPARRAY sample_data,
18 JDIMENSION start_col,
19 FAST_FLOAT * workspace);
Pierre Ossman59a39382009-03-09 13:15:56 +000020
DRCbc56b752014-05-16 10:43:44 +000021EXTERN(int) jsimd_can_fdct_islow (void);
22EXTERN(int) jsimd_can_fdct_ifast (void);
23EXTERN(int) jsimd_can_fdct_float (void);
Pierre Ossman59a39382009-03-09 13:15:56 +000024
DRCbc56b752014-05-16 10:43:44 +000025EXTERN(void) jsimd_fdct_islow (DCTELEM * data);
26EXTERN(void) jsimd_fdct_ifast (DCTELEM * data);
27EXTERN(void) jsimd_fdct_float (FAST_FLOAT * data);
Pierre Ossman59a39382009-03-09 13:15:56 +000028
DRCbc56b752014-05-16 10:43:44 +000029EXTERN(int) jsimd_can_quantize (void);
30EXTERN(int) jsimd_can_quantize_float (void);
Pierre Ossman59a39382009-03-09 13:15:56 +000031
DRCbc56b752014-05-16 10:43:44 +000032EXTERN(void) jsimd_quantize (JCOEFPTR coef_block, DCTELEM * divisors,
33 DCTELEM * workspace);
34EXTERN(void) jsimd_quantize_float (JCOEFPTR coef_block, FAST_FLOAT * divisors,
35 FAST_FLOAT * workspace);
Pierre Ossman59a39382009-03-09 13:15:56 +000036
DRCbc56b752014-05-16 10:43:44 +000037EXTERN(int) jsimd_can_idct_2x2 (void);
38EXTERN(int) jsimd_can_idct_4x4 (void);
39EXTERN(int) jsimd_can_idct_6x6 (void);
40EXTERN(int) jsimd_can_idct_12x12 (void);
Pierre Ossman59a39382009-03-09 13:15:56 +000041
DRCbc56b752014-05-16 10:43:44 +000042EXTERN(void) jsimd_idct_2x2 (j_decompress_ptr cinfo,
43 jpeg_component_info * compptr,
44 JCOEFPTR coef_block, JSAMPARRAY output_buf,
45 JDIMENSION output_col);
46EXTERN(void) jsimd_idct_4x4 (j_decompress_ptr cinfo,
47 jpeg_component_info * compptr,
48 JCOEFPTR coef_block, JSAMPARRAY output_buf,
49 JDIMENSION output_col);
50EXTERN(void) jsimd_idct_6x6 (j_decompress_ptr cinfo,
51 jpeg_component_info * compptr,
52 JCOEFPTR coef_block, JSAMPARRAY output_buf,
53 JDIMENSION output_col);
54EXTERN(void) jsimd_idct_12x12 (j_decompress_ptr cinfo,
55 jpeg_component_info * compptr,
56 JCOEFPTR coef_block, JSAMPARRAY output_buf,
57 JDIMENSION output_col);
Pierre Ossman59a39382009-03-09 13:15:56 +000058
DRCbc56b752014-05-16 10:43:44 +000059EXTERN(int) jsimd_can_idct_islow (void);
60EXTERN(int) jsimd_can_idct_ifast (void);
61EXTERN(int) jsimd_can_idct_float (void);
Pierre Ossman59a39382009-03-09 13:15:56 +000062
DRCbc56b752014-05-16 10:43:44 +000063EXTERN(void) jsimd_idct_islow (j_decompress_ptr cinfo,
64 jpeg_component_info * compptr,
65 JCOEFPTR coef_block, JSAMPARRAY output_buf,
66 JDIMENSION output_col);
67EXTERN(void) jsimd_idct_ifast (j_decompress_ptr cinfo,
68 jpeg_component_info * compptr,
69 JCOEFPTR coef_block, JSAMPARRAY output_buf,
70 JDIMENSION output_col);
71EXTERN(void) jsimd_idct_float (j_decompress_ptr cinfo,
72 jpeg_component_info * compptr,
73 JCOEFPTR coef_block, JSAMPARRAY output_buf,
74 JDIMENSION output_col);