blob: 3aa0779b8a557050eb4ae6dd5940138bcd81eeda [file] [log] [blame]
Pierre Ossman59a39382009-03-09 13:15:56 +00001/*
2 * jsimd.h
3 *
4 * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
Alex Naidis6eb7d372016-10-16 23:10:08 +02005 * Copyright (C) 2011, 2014, D. R. Commander.
6 * Copyright (C) 2015, Matthieu Darbois.
DRC1a45b812014-05-09 18:06:58 +00007 *
Pierre Ossman59a39382009-03-09 13:15:56 +00008 * Based on the x86 SIMD extension for IJG JPEG library,
9 * Copyright (C) 1999-2006, MIYASAKA Masaru.
DRCaf1ca9b2011-02-02 05:42:37 +000010 * For conditions of distribution and use, see copyright notice in jsimdext.inc
Pierre Ossman59a39382009-03-09 13:15:56 +000011 *
12 */
13
Alex Naidis6eb7d372016-10-16 23:10:08 +020014#include "jchuff.h" /* Declarations shared with jcphuff.c */
15
DRCbc56b752014-05-16 10:43:44 +000016EXTERN(int) jsimd_can_rgb_ycc (void);
17EXTERN(int) jsimd_can_rgb_gray (void);
18EXTERN(int) jsimd_can_ycc_rgb (void);
DRCd729f4d2014-08-23 15:47:51 +000019EXTERN(int) jsimd_can_ycc_rgb565 (void);
DRCbc56b752014-05-16 10:43:44 +000020EXTERN(int) jsimd_c_can_null_convert (void);
Pierre Ossman59a39382009-03-09 13:15:56 +000021
22EXTERN(void) jsimd_rgb_ycc_convert
DRCbc56b752014-05-16 10:43:44 +000023 (j_compress_ptr cinfo, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
24 JDIMENSION output_row, int num_rows);
DRCc8666332011-02-18 11:23:45 +000025EXTERN(void) jsimd_rgb_gray_convert
DRCbc56b752014-05-16 10:43:44 +000026 (j_compress_ptr cinfo, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
27 JDIMENSION output_row, int num_rows);
Pierre Ossman59a39382009-03-09 13:15:56 +000028EXTERN(void) jsimd_ycc_rgb_convert
DRCbc56b752014-05-16 10:43:44 +000029 (j_decompress_ptr cinfo, JSAMPIMAGE input_buf, JDIMENSION input_row,
30 JSAMPARRAY output_buf, int num_rows);
DRCd729f4d2014-08-23 15:47:51 +000031EXTERN(void) jsimd_ycc_rgb565_convert
32 (j_decompress_ptr cinfo, JSAMPIMAGE input_buf, JDIMENSION input_row,
33 JSAMPARRAY output_buf, int num_rows);
DRC1b3fd7e2014-05-15 18:26:01 +000034EXTERN(void) jsimd_c_null_convert
DRCbc56b752014-05-16 10:43:44 +000035 (j_compress_ptr cinfo, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
36 JDIMENSION output_row, int num_rows);
Pierre Ossman59a39382009-03-09 13:15:56 +000037
DRCbc56b752014-05-16 10:43:44 +000038EXTERN(int) jsimd_can_h2v2_downsample (void);
39EXTERN(int) jsimd_can_h2v1_downsample (void);
Pierre Ossman59a39382009-03-09 13:15:56 +000040
41EXTERN(void) jsimd_h2v2_downsample
Alex Naidis6eb7d372016-10-16 23:10:08 +020042 (j_compress_ptr cinfo, jpeg_component_info *compptr,
DRCbc56b752014-05-16 10:43:44 +000043 JSAMPARRAY input_data, JSAMPARRAY output_data);
DRC6a61c1e2014-05-14 15:00:10 +000044
DRCbc56b752014-05-16 10:43:44 +000045EXTERN(int) jsimd_can_h2v2_smooth_downsample (void);
DRC6a61c1e2014-05-14 15:00:10 +000046
47EXTERN(void) jsimd_h2v2_smooth_downsample
Alex Naidis6eb7d372016-10-16 23:10:08 +020048 (j_compress_ptr cinfo, jpeg_component_info *compptr,
DRCbc56b752014-05-16 10:43:44 +000049 JSAMPARRAY input_data, JSAMPARRAY output_data);
DRC6a61c1e2014-05-14 15:00:10 +000050
Pierre Ossman59a39382009-03-09 13:15:56 +000051EXTERN(void) jsimd_h2v1_downsample
Alex Naidis6eb7d372016-10-16 23:10:08 +020052 (j_compress_ptr cinfo, jpeg_component_info *compptr,
DRCbc56b752014-05-16 10:43:44 +000053 JSAMPARRAY input_data, JSAMPARRAY output_data);
Pierre Ossman59a39382009-03-09 13:15:56 +000054
DRCbc56b752014-05-16 10:43:44 +000055EXTERN(int) jsimd_can_h2v2_upsample (void);
56EXTERN(int) jsimd_can_h2v1_upsample (void);
DRC5ef46302014-05-18 20:04:47 +000057EXTERN(int) jsimd_can_int_upsample (void);
Pierre Ossman59a39382009-03-09 13:15:56 +000058
59EXTERN(void) jsimd_h2v2_upsample
Alex Naidis6eb7d372016-10-16 23:10:08 +020060 (j_decompress_ptr cinfo, jpeg_component_info *compptr,
61 JSAMPARRAY input_data, JSAMPARRAY *output_data_ptr);
Pierre Ossman59a39382009-03-09 13:15:56 +000062EXTERN(void) jsimd_h2v1_upsample
Alex Naidis6eb7d372016-10-16 23:10:08 +020063 (j_decompress_ptr cinfo, jpeg_component_info *compptr,
64 JSAMPARRAY input_data, JSAMPARRAY *output_data_ptr);
DRC5ef46302014-05-18 20:04:47 +000065EXTERN(void) jsimd_int_upsample
Alex Naidis6eb7d372016-10-16 23:10:08 +020066 (j_decompress_ptr cinfo, jpeg_component_info *compptr,
67 JSAMPARRAY input_data, JSAMPARRAY *output_data_ptr);
Pierre Ossman59a39382009-03-09 13:15:56 +000068
DRCbc56b752014-05-16 10:43:44 +000069EXTERN(int) jsimd_can_h2v2_fancy_upsample (void);
70EXTERN(int) jsimd_can_h2v1_fancy_upsample (void);
Pierre Ossman59a39382009-03-09 13:15:56 +000071
72EXTERN(void) jsimd_h2v2_fancy_upsample
Alex Naidis6eb7d372016-10-16 23:10:08 +020073 (j_decompress_ptr cinfo, jpeg_component_info *compptr,
74 JSAMPARRAY input_data, JSAMPARRAY *output_data_ptr);
Pierre Ossman59a39382009-03-09 13:15:56 +000075EXTERN(void) jsimd_h2v1_fancy_upsample
Alex Naidis6eb7d372016-10-16 23:10:08 +020076 (j_decompress_ptr cinfo, jpeg_component_info *compptr,
77 JSAMPARRAY input_data, JSAMPARRAY *output_data_ptr);
Pierre Ossman59a39382009-03-09 13:15:56 +000078
DRCbc56b752014-05-16 10:43:44 +000079EXTERN(int) jsimd_can_h2v2_merged_upsample (void);
80EXTERN(int) jsimd_can_h2v1_merged_upsample (void);
Pierre Ossman59a39382009-03-09 13:15:56 +000081
82EXTERN(void) jsimd_h2v2_merged_upsample
DRCbc56b752014-05-16 10:43:44 +000083 (j_decompress_ptr cinfo, JSAMPIMAGE input_buf,
84 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
Pierre Ossman59a39382009-03-09 13:15:56 +000085EXTERN(void) jsimd_h2v1_merged_upsample
DRCbc56b752014-05-16 10:43:44 +000086 (j_decompress_ptr cinfo, JSAMPIMAGE input_buf,
87 JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf);
Alex Naidis6eb7d372016-10-16 23:10:08 +020088
89EXTERN(int) jsimd_can_huff_encode_one_block (void);
90
91EXTERN(JOCTET*) jsimd_huff_encode_one_block
92 (void *state, JOCTET *buffer, JCOEFPTR block, int last_dc_val,
93 c_derived_tbl *dctbl, c_derived_tbl *actbl);