diff options
Diffstat (limited to 'libjpegtwrp/jidctvenum.c')
-rw-r--r-- | libjpegtwrp/jidctvenum.c | 229 |
1 files changed, 0 insertions, 229 deletions
diff --git a/libjpegtwrp/jidctvenum.c b/libjpegtwrp/jidctvenum.c deleted file mode 100644 index f458bb565..000000000 --- a/libjpegtwrp/jidctvenum.c +++ /dev/null @@ -1,229 +0,0 @@ -/* - * jidctvenum.c - * - * Copyright (c) 2010, Code Aurora Forum. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Code Aurora Forum, Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR - * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE - * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#define JPEG_INTERNALS -#include "jinclude.h" -#include "jpeglib.h" -#include "jdct.h" /* Private declarations for DCT subsystem */ - -#ifdef ANDROID_JPEG_USE_VENUM -/* - * This module is specialized to the case DCTSIZE = 8. - */ -#if DCTSIZE != 8 - Sorry, this code only copes with 8x8 DCTs. /* deliberate syntax err */ -#endif - -/* Dequantize a coefficient by multiplying it by the multiplier-table - * entry; produce an int result. In this module, both inputs and result - * are 16 bits or less, so either int or short multiply will work. - */ - -#define DEQUANTIZE(coef,quantval) ((coef) * ((INT16)quantval)) - -GLOBAL(void) -jpeg_idct_islow (j_decompress_ptr cinfo, jpeg_component_info * compptr, - JCOEFPTR coef_block, - JSAMPARRAY output_buf, JDIMENSION output_col) -{ - ISLOW_MULT_TYPE * quantptr; - JCOEFPTR coefptr; - int ctr; - - /* idct_out temp buffer is needed because output_buf sample allocation is 8 bits, - * while IDCT output expects 16 bits. - */ - INT16 idct_out[DCTSIZE2]; /* buffers data between passes */ - JSAMPROW outptr; - INT16* idctptr; - - coefptr = coef_block; - quantptr = (ISLOW_MULT_TYPE *) compptr->dct_table; - - /* Dequantize the coeff buffer and write it back to the same location */ - for (ctr = DCTSIZE; ctr > 0; ctr--) { - coefptr[0] = DEQUANTIZE(coefptr[0] , quantptr[0] ); - coefptr[DCTSIZE*1] = DEQUANTIZE(coefptr[DCTSIZE*1], quantptr[DCTSIZE*1]); - coefptr[DCTSIZE*2] = DEQUANTIZE(coefptr[DCTSIZE*2], quantptr[DCTSIZE*2]); - coefptr[DCTSIZE*3] = DEQUANTIZE(coefptr[DCTSIZE*3], quantptr[DCTSIZE*3]); - coefptr[DCTSIZE*4] = DEQUANTIZE(coefptr[DCTSIZE*4], quantptr[DCTSIZE*4]); - coefptr[DCTSIZE*5] = DEQUANTIZE(coefptr[DCTSIZE*5], quantptr[DCTSIZE*5]); - coefptr[DCTSIZE*6] = DEQUANTIZE(coefptr[DCTSIZE*6], quantptr[DCTSIZE*6]); - coefptr[DCTSIZE*7] = DEQUANTIZE(coefptr[DCTSIZE*7], quantptr[DCTSIZE*7]); - - /* advance pointers to next column */ - quantptr++; - coefptr++; - } - - idct_8x8_venum((INT16*)coef_block, - (INT16*)idct_out, - DCTSIZE * sizeof(INT16)); - - idctptr = idct_out; - for (ctr = 0; ctr < DCTSIZE; ctr++) { - outptr = output_buf[ctr] + output_col; - // outptr sample size is 1 byte while idctptr sample size is 2 bytes - outptr[0] = idctptr[0]; - outptr[1] = idctptr[1]; - outptr[2] = idctptr[2]; - outptr[3] = idctptr[3]; - outptr[4] = idctptr[4]; - outptr[5] = idctptr[5]; - outptr[6] = idctptr[6]; - outptr[7] = idctptr[7]; - idctptr += DCTSIZE; /* advance pointers to next row */ - } -} - -GLOBAL(void) -jpeg_idct_4x4 (j_decompress_ptr cinfo, jpeg_component_info * compptr, - JCOEFPTR coef_block, - JSAMPARRAY output_buf, JDIMENSION output_col) -{ - ISLOW_MULT_TYPE * quantptr; - JSAMPROW outptr; - - /* Note: Must allocate 8x4 even though only 4x4 is used because - * IDCT function expects stride of 8. Stride input to function is ignored. - */ - INT16 idct_out[DCTSIZE * (DCTSIZE>>1)]; /* buffers data between passes */ - INT16* idctptr; - JCOEFPTR coefptr; - int ctr; - - coefptr = coef_block; - quantptr = (ISLOW_MULT_TYPE *) compptr->dct_table; - - /* Dequantize the coeff buffer and write it back to the same location */ - for (ctr = (DCTSIZE>>1); ctr > 0; ctr--) { - coefptr[0] = DEQUANTIZE(coefptr[0] , quantptr[0] ); - coefptr[DCTSIZE*1] = DEQUANTIZE(coefptr[DCTSIZE*1], quantptr[DCTSIZE*1]); - coefptr[DCTSIZE*2] = DEQUANTIZE(coefptr[DCTSIZE*2], quantptr[DCTSIZE*2]); - coefptr[DCTSIZE*3] = DEQUANTIZE(coefptr[DCTSIZE*3], quantptr[DCTSIZE*3]); - - /* advance pointers to next column */ - quantptr++; - coefptr++; - } - - idct_4x4_venum((INT16*)coef_block, - (INT16*)idct_out, - DCTSIZE * sizeof(INT16)); - - idctptr = idct_out; - for (ctr = 0; ctr < (DCTSIZE>>1); ctr++) { - outptr = output_buf[ctr] + output_col; - - /* outptr sample size is 1 byte while idctptr sample size is 2 bytes */ - outptr[0] = idctptr[0]; - outptr[1] = idctptr[1]; - outptr[2] = idctptr[2]; - outptr[3] = idctptr[3]; - /* IDCT function assumes stride of 8 units */ - idctptr += (DCTSIZE); /* advance pointers to next row */ - } -} - -GLOBAL(void) -jpeg_idct_2x2 (j_decompress_ptr cinfo, jpeg_component_info * compptr, - JCOEFPTR coef_block, - JSAMPARRAY output_buf, JDIMENSION output_col) -{ - ISLOW_MULT_TYPE * quantptr; - JSAMPROW outptr; - - /* Note: Must allocate 8x2 even though only 2x2 is used because - * IDCT function expects stride of 8. Stride input to function is ignored. - * There is also a hw limitation requiring input size to be 8x2. - */ - INT16 idct_out[DCTSIZE * (DCTSIZE>>2)]; /* buffers data between passes */ - INT16* idctptr; - JCOEFPTR coefptr; - int ctr; - - coefptr = coef_block; - quantptr = (ISLOW_MULT_TYPE *) compptr->dct_table; - - /* Dequantize the coeff buffer and write it back to the same location */ - for (ctr = (DCTSIZE>>2); ctr > 0; ctr--) { - coefptr[0] = DEQUANTIZE(coefptr[0] , quantptr[0] ); - coefptr[DCTSIZE*1] = DEQUANTIZE(coefptr[DCTSIZE*1], quantptr[DCTSIZE*1]); - - /* advance pointers to next column */ - quantptr++; - coefptr++; - } - - idct_2x2_venum((INT16*)coef_block, - (INT16*)idct_out, - DCTSIZE * sizeof(INT16)); - - idctptr = idct_out; - for (ctr = 0; ctr < (DCTSIZE>>2); ctr++) { - outptr = output_buf[ctr] + output_col; - - /* outptr sample size is 1 bytes, idctptr sample size is 2 bytes */ - outptr[0] = idctptr[0]; - outptr[1] = idctptr[1]; - - /* IDCT function assumes stride of 8 units */ - idctptr += (DCTSIZE); /* advance pointers to next row */ - } -} - - -GLOBAL(void) -jpeg_idct_1x1 (j_decompress_ptr cinfo, jpeg_component_info * compptr, - JCOEFPTR coef_block, - JSAMPARRAY output_buf, JDIMENSION output_col) -{ - ISLOW_MULT_TYPE * quantptr; - JSAMPROW outptr; // 8-bit type - INT16 idct_out[DCTSIZE]; /* Required to allocate 8 samples, even though we only use one. */ - JCOEFPTR coefptr; - int ctr; - - coefptr = coef_block; - quantptr = (ISLOW_MULT_TYPE *) compptr->dct_table; - outptr = output_buf[0] + output_col; - - /* Dequantize the coeff buffer and write it back to the same location */ - coefptr[0] = DEQUANTIZE(coefptr[0], quantptr[0]); - - idct_1x1_venum((INT16*)coef_block, - (INT16*)idct_out, - DCTSIZE * sizeof(INT16)); - outptr[0] = idct_out[0]; -} - - -#endif /* ANDROID_JPEG_USE_VENUM */ |