diff options
Diffstat (limited to 'simd/jsimd_mips.c')
-rw-r--r-- | simd/jsimd_mips.c | 93 |
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; +} |