aboutsummaryrefslogtreecommitdiff
path: root/simd/jsimd_mips.c
diff options
context:
space:
mode:
Diffstat (limited to 'simd/jsimd_mips.c')
-rw-r--r--simd/jsimd_mips.c93
1 files changed, 58 insertions, 35 deletions
diff --git a/simd/jsimd_mips.c b/simd/jsimd_mips.c
index cf87b32b..63b8115d 100644
--- a/simd/jsimd_mips.c
+++ b/simd/jsimd_mips.c
@@ -2,8 +2,9 @@
* jsimd_mips.c
*
* Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
- * Copyright 2009-2011, 2014 D. R. Commander
- * Copyright (C) 2013-2014, MIPS Technologies, Inc., California
+ * Copyright (C) 2009-2011, 2014, 2016, D. R. Commander.
+ * Copyright (C) 2013-2014, MIPS Technologies, Inc., California.
+ * Copyright (C) 2015, Matthieu Darbois.
*
* Based on the x86 SIMD extension for IJG JPEG library,
* Copyright (C) 1999-2006, MIYASAKA Masaru.
@@ -76,6 +77,14 @@ init_simd (void)
if (!parse_proc_cpuinfo("MIPS 74K"))
return;
#endif
+
+ /* Force different settings through environment variables */
+ env = getenv("JSIMD_FORCEDSPR2");
+ if ((env != NULL) && (strcmp(env, "1") == 0))
+ simd_support = JSIMD_MIPS_DSPR2;
+ env = getenv("JSIMD_FORCENONE");
+ if ((env != NULL) && (strcmp(env, "1") == 0))
+ simd_support = 0;
}
static const int mips_idct_ifast_coefs[4] = {
@@ -87,9 +96,9 @@ static const int mips_idct_ifast_coefs[4] = {
/* The following struct is borrowed from jdsample.c */
typedef void (*upsample1_ptr) (j_decompress_ptr cinfo,
- jpeg_component_info * compptr,
+ jpeg_component_info *compptr,
JSAMPARRAY input_data,
- JSAMPARRAY * output_data_ptr);
+ JSAMPARRAY *output_data_ptr);
typedef struct {
struct jpeg_upsampler pub;
@@ -102,7 +111,7 @@ typedef struct {
UINT8 v_expand[MAX_COMPONENTS];
} my_upsampler;
-typedef my_upsampler * my_upsample_ptr;
+typedef my_upsampler *my_upsample_ptr;
GLOBAL(int)
jsimd_can_rgb_ycc (void)
@@ -377,7 +386,7 @@ jsimd_can_h2v1_downsample (void)
}
GLOBAL(void)
-jsimd_h2v2_downsample (j_compress_ptr cinfo, jpeg_component_info * compptr,
+jsimd_h2v2_downsample (j_compress_ptr cinfo, jpeg_component_info *compptr,
JSAMPARRAY input_data, JSAMPARRAY output_data)
{
if (simd_support & JSIMD_MIPS_DSPR2)
@@ -390,7 +399,7 @@ jsimd_h2v2_downsample (j_compress_ptr cinfo, jpeg_component_info * compptr,
GLOBAL(void)
jsimd_h2v2_smooth_downsample (j_compress_ptr cinfo,
- jpeg_component_info * compptr,
+ jpeg_component_info *compptr,
JSAMPARRAY input_data, JSAMPARRAY output_data)
{
jsimd_h2v2_smooth_downsample_mips_dspr2(input_data, output_data,
@@ -402,7 +411,7 @@ jsimd_h2v2_smooth_downsample (j_compress_ptr cinfo,
}
GLOBAL(void)
-jsimd_h2v1_downsample (j_compress_ptr cinfo, jpeg_component_info * compptr,
+jsimd_h2v1_downsample (j_compress_ptr cinfo, jpeg_component_info *compptr,
JSAMPARRAY input_data, JSAMPARRAY output_data)
{
if (simd_support & JSIMD_MIPS_DSPR2)
@@ -466,9 +475,9 @@ jsimd_can_int_upsample (void)
GLOBAL(void)
jsimd_h2v2_upsample (j_decompress_ptr cinfo,
- jpeg_component_info * compptr,
+ jpeg_component_info *compptr,
JSAMPARRAY input_data,
- JSAMPARRAY * output_data_ptr)
+ JSAMPARRAY *output_data_ptr)
{
if (simd_support & JSIMD_MIPS_DSPR2)
jsimd_h2v2_upsample_mips_dspr2(cinfo->max_v_samp_factor,
@@ -478,9 +487,9 @@ jsimd_h2v2_upsample (j_decompress_ptr cinfo,
GLOBAL(void)
jsimd_h2v1_upsample (j_decompress_ptr cinfo,
- jpeg_component_info * compptr,
+ jpeg_component_info *compptr,
JSAMPARRAY input_data,
- JSAMPARRAY * output_data_ptr)
+ JSAMPARRAY *output_data_ptr)
{
if (simd_support & JSIMD_MIPS_DSPR2)
jsimd_h2v1_upsample_mips_dspr2(cinfo->max_v_samp_factor,
@@ -489,8 +498,8 @@ jsimd_h2v1_upsample (j_decompress_ptr cinfo,
}
GLOBAL(void)
-jsimd_int_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr,
- JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)
+jsimd_int_upsample (j_decompress_ptr cinfo, jpeg_component_info *compptr,
+ JSAMPARRAY input_data, JSAMPARRAY *output_data_ptr)
{
my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample;
@@ -537,9 +546,9 @@ jsimd_can_h2v1_fancy_upsample (void)
GLOBAL(void)
jsimd_h2v2_fancy_upsample (j_decompress_ptr cinfo,
- jpeg_component_info * compptr,
+ jpeg_component_info *compptr,
JSAMPARRAY input_data,
- JSAMPARRAY * output_data_ptr)
+ JSAMPARRAY *output_data_ptr)
{
if (simd_support & JSIMD_MIPS_DSPR2)
jsimd_h2v2_fancy_upsample_mips_dspr2(cinfo->max_v_samp_factor,
@@ -549,9 +558,9 @@ jsimd_h2v2_fancy_upsample (j_decompress_ptr cinfo,
GLOBAL(void)
jsimd_h2v1_fancy_upsample (j_decompress_ptr cinfo,
- jpeg_component_info * compptr,
+ jpeg_component_info *compptr,
JSAMPARRAY input_data,
- JSAMPARRAY * output_data_ptr)
+ JSAMPARRAY *output_data_ptr)
{
if (simd_support & JSIMD_MIPS_DSPR2)
jsimd_h2v1_fancy_upsample_mips_dspr2(cinfo->max_v_samp_factor,
@@ -719,7 +728,7 @@ jsimd_can_convsamp_float (void)
GLOBAL(void)
jsimd_convsamp (JSAMPARRAY sample_data, JDIMENSION start_col,
- DCTELEM * workspace)
+ DCTELEM *workspace)
{
if (simd_support & JSIMD_MIPS_DSPR2)
jsimd_convsamp_mips_dspr2(sample_data, start_col, workspace);
@@ -727,7 +736,7 @@ jsimd_convsamp (JSAMPARRAY sample_data, JDIMENSION start_col,
GLOBAL(void)
jsimd_convsamp_float (JSAMPARRAY sample_data, JDIMENSION start_col,
- FAST_FLOAT * workspace)
+ FAST_FLOAT *workspace)
{
if ((simd_support & JSIMD_MIPS_DSPR2))
jsimd_convsamp_float_mips_dspr2(sample_data, start_col, workspace);
@@ -776,21 +785,21 @@ jsimd_can_fdct_float (void)
}
GLOBAL(void)
-jsimd_fdct_islow (DCTELEM * data)
+jsimd_fdct_islow (DCTELEM *data)
{
if (simd_support & JSIMD_MIPS_DSPR2)
jsimd_fdct_islow_mips_dspr2(data);
}
GLOBAL(void)
-jsimd_fdct_ifast (DCTELEM * data)
+jsimd_fdct_ifast (DCTELEM *data)
{
if (simd_support & JSIMD_MIPS_DSPR2)
jsimd_fdct_ifast_mips_dspr2(data);
}
GLOBAL(void)
-jsimd_fdct_float (FAST_FLOAT * data)
+jsimd_fdct_float (FAST_FLOAT *data)
{
}
@@ -837,16 +846,16 @@ jsimd_can_quantize_float (void)
}
GLOBAL(void)
-jsimd_quantize (JCOEFPTR coef_block, DCTELEM * divisors,
- DCTELEM * workspace)
+jsimd_quantize (JCOEFPTR coef_block, DCTELEM *divisors,
+ DCTELEM *workspace)
{
if (simd_support & JSIMD_MIPS_DSPR2)
jsimd_quantize_mips_dspr2(coef_block, divisors, workspace);
}
GLOBAL(void)
-jsimd_quantize_float (JCOEFPTR coef_block, FAST_FLOAT * divisors,
- FAST_FLOAT * workspace)
+jsimd_quantize_float (JCOEFPTR coef_block, FAST_FLOAT *divisors,
+ FAST_FLOAT *workspace)
{
if (simd_support & JSIMD_MIPS_DSPR2)
jsimd_quantize_float_mips_dspr2(coef_block, divisors, workspace);
@@ -944,7 +953,7 @@ jsimd_can_idct_12x12 (void)
}
GLOBAL(void)
-jsimd_idct_2x2 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
+jsimd_idct_2x2 (j_decompress_ptr cinfo, jpeg_component_info *compptr,
JCOEFPTR coef_block, JSAMPARRAY output_buf,
JDIMENSION output_col)
{
@@ -954,7 +963,7 @@ jsimd_idct_2x2 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
}
GLOBAL(void)
-jsimd_idct_4x4 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
+jsimd_idct_4x4 (j_decompress_ptr cinfo, jpeg_component_info *compptr,
JCOEFPTR coef_block, JSAMPARRAY output_buf,
JDIMENSION output_col)
{
@@ -966,7 +975,7 @@ jsimd_idct_4x4 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
}
GLOBAL(void)
-jsimd_idct_6x6 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
+jsimd_idct_6x6 (j_decompress_ptr cinfo, jpeg_component_info *compptr,
JCOEFPTR coef_block, JSAMPARRAY output_buf,
JDIMENSION output_col)
{
@@ -976,7 +985,7 @@ jsimd_idct_6x6 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
}
GLOBAL(void)
-jsimd_idct_12x12 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
+jsimd_idct_12x12 (j_decompress_ptr cinfo, jpeg_component_info *compptr,
JCOEFPTR coef_block,
JSAMPARRAY output_buf, JDIMENSION output_col)
{
@@ -1059,7 +1068,7 @@ jsimd_can_idct_float (void)
}
GLOBAL(void)
-jsimd_idct_islow (j_decompress_ptr cinfo, jpeg_component_info * compptr,
+jsimd_idct_islow (j_decompress_ptr cinfo, jpeg_component_info *compptr,
JCOEFPTR coef_block, JSAMPARRAY output_buf,
JDIMENSION output_col)
{
@@ -1081,13 +1090,13 @@ jsimd_idct_islow (j_decompress_ptr cinfo, jpeg_component_info * compptr,
}
GLOBAL(void)
-jsimd_idct_ifast (j_decompress_ptr cinfo, jpeg_component_info * compptr,
+jsimd_idct_ifast (j_decompress_ptr cinfo, jpeg_component_info *compptr,
JCOEFPTR coef_block, JSAMPARRAY output_buf,
JDIMENSION output_col)
{
if (simd_support & JSIMD_MIPS_DSPR2) {
JCOEFPTR inptr;
- IFAST_MULT_TYPE * quantptr;
+ IFAST_MULT_TYPE *quantptr;
DCTELEM workspace[DCTSIZE2]; /* buffers data between passes */
/* Pass 1: process columns from input, store into work array. */
@@ -1108,8 +1117,22 @@ jsimd_idct_ifast (j_decompress_ptr cinfo, jpeg_component_info * compptr,
}
GLOBAL(void)
-jsimd_idct_float (j_decompress_ptr cinfo, jpeg_component_info * compptr,
+jsimd_idct_float (j_decompress_ptr cinfo, jpeg_component_info *compptr,
JCOEFPTR coef_block, JSAMPARRAY output_buf,
JDIMENSION output_col)
{
}
+
+GLOBAL(int)
+jsimd_can_huff_encode_one_block (void)
+{
+ return 0;
+}
+
+GLOBAL(JOCTET*)
+jsimd_huff_encode_one_block (void *state, JOCTET *buffer, JCOEFPTR block,
+ int last_dc_val, c_derived_tbl *dctbl,
+ c_derived_tbl *actbl)
+{
+ return NULL;
+}