blob: 55ee8cf67f56a03a105cf46d3e7500c77c278287 [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
Leon Scroggins III3993b372018-07-16 10:43:45 -040012EXTERN(int) jsimd_can_convsamp(void);
13EXTERN(int) jsimd_can_convsamp_float(void);
Pierre Ossman59a39382009-03-09 13:15:56 +000014
Leon Scroggins III3993b372018-07-16 10:43:45 -040015EXTERN(void) jsimd_convsamp(JSAMPARRAY sample_data, JDIMENSION start_col,
16 DCTELEM *workspace);
17EXTERN(void) jsimd_convsamp_float(JSAMPARRAY sample_data, JDIMENSION start_col,
18 FAST_FLOAT *workspace);
Pierre Ossman59a39382009-03-09 13:15:56 +000019
Leon Scroggins III3993b372018-07-16 10:43:45 -040020EXTERN(int) jsimd_can_fdct_islow(void);
21EXTERN(int) jsimd_can_fdct_ifast(void);
22EXTERN(int) jsimd_can_fdct_float(void);
Pierre Ossman59a39382009-03-09 13:15:56 +000023
Leon Scroggins III3993b372018-07-16 10:43:45 -040024EXTERN(void) jsimd_fdct_islow(DCTELEM *data);
25EXTERN(void) jsimd_fdct_ifast(DCTELEM *data);
26EXTERN(void) jsimd_fdct_float(FAST_FLOAT *data);
Pierre Ossman59a39382009-03-09 13:15:56 +000027
Leon Scroggins III3993b372018-07-16 10:43:45 -040028EXTERN(int) jsimd_can_quantize(void);
29EXTERN(int) jsimd_can_quantize_float(void);
Pierre Ossman59a39382009-03-09 13:15:56 +000030
Leon Scroggins III3993b372018-07-16 10:43:45 -040031EXTERN(void) jsimd_quantize(JCOEFPTR coef_block, DCTELEM *divisors,
32 DCTELEM *workspace);
33EXTERN(void) jsimd_quantize_float(JCOEFPTR coef_block, FAST_FLOAT *divisors,
34 FAST_FLOAT *workspace);
Pierre Ossman59a39382009-03-09 13:15:56 +000035
Leon Scroggins III3993b372018-07-16 10:43:45 -040036EXTERN(int) jsimd_can_idct_2x2(void);
37EXTERN(int) jsimd_can_idct_4x4(void);
38EXTERN(int) jsimd_can_idct_6x6(void);
39EXTERN(int) jsimd_can_idct_12x12(void);
Pierre Ossman59a39382009-03-09 13:15:56 +000040
Leon Scroggins III3993b372018-07-16 10:43:45 -040041EXTERN(void) jsimd_idct_2x2(j_decompress_ptr cinfo,
42 jpeg_component_info *compptr, JCOEFPTR coef_block,
43 JSAMPARRAY output_buf, JDIMENSION output_col);
44EXTERN(void) jsimd_idct_4x4(j_decompress_ptr cinfo,
45 jpeg_component_info *compptr, JCOEFPTR coef_block,
46 JSAMPARRAY output_buf, JDIMENSION output_col);
47EXTERN(void) jsimd_idct_6x6(j_decompress_ptr cinfo,
48 jpeg_component_info *compptr, JCOEFPTR coef_block,
49 JSAMPARRAY output_buf, JDIMENSION output_col);
50EXTERN(void) jsimd_idct_12x12(j_decompress_ptr cinfo,
51 jpeg_component_info *compptr,
52 JCOEFPTR coef_block, JSAMPARRAY output_buf,
53 JDIMENSION output_col);
Pierre Ossman59a39382009-03-09 13:15:56 +000054
Leon Scroggins III3993b372018-07-16 10:43:45 -040055EXTERN(int) jsimd_can_idct_islow(void);
56EXTERN(int) jsimd_can_idct_ifast(void);
57EXTERN(int) jsimd_can_idct_float(void);
Pierre Ossman59a39382009-03-09 13:15:56 +000058
Leon Scroggins III3993b372018-07-16 10:43:45 -040059EXTERN(void) jsimd_idct_islow(j_decompress_ptr cinfo,
60 jpeg_component_info *compptr,
61 JCOEFPTR coef_block, JSAMPARRAY output_buf,
62 JDIMENSION output_col);
63EXTERN(void) jsimd_idct_ifast(j_decompress_ptr cinfo,
64 jpeg_component_info *compptr,
65 JCOEFPTR coef_block, JSAMPARRAY output_buf,
66 JDIMENSION output_col);
67EXTERN(void) jsimd_idct_float(j_decompress_ptr cinfo,
68 jpeg_component_info *compptr,
69 JCOEFPTR coef_block, JSAMPARRAY output_buf,
70 JDIMENSION output_col);