102f5b5447de349216a40086ca6061efefb5a3025James Dong/* ------------------------------------------------------------------ 202f5b5447de349216a40086ca6061efefb5a3025James Dong * Copyright (C) 1998-2009 PacketVideo 302f5b5447de349216a40086ca6061efefb5a3025James Dong * 402f5b5447de349216a40086ca6061efefb5a3025James Dong * Licensed under the Apache License, Version 2.0 (the "License"); 502f5b5447de349216a40086ca6061efefb5a3025James Dong * you may not use this file except in compliance with the License. 602f5b5447de349216a40086ca6061efefb5a3025James Dong * You may obtain a copy of the License at 702f5b5447de349216a40086ca6061efefb5a3025James Dong * 802f5b5447de349216a40086ca6061efefb5a3025James Dong * http://www.apache.org/licenses/LICENSE-2.0 902f5b5447de349216a40086ca6061efefb5a3025James Dong * 1002f5b5447de349216a40086ca6061efefb5a3025James Dong * Unless required by applicable law or agreed to in writing, software 1102f5b5447de349216a40086ca6061efefb5a3025James Dong * distributed under the License is distributed on an "AS IS" BASIS, 1202f5b5447de349216a40086ca6061efefb5a3025James Dong * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 1302f5b5447de349216a40086ca6061efefb5a3025James Dong * express or implied. 1402f5b5447de349216a40086ca6061efefb5a3025James Dong * See the License for the specific language governing permissions 1502f5b5447de349216a40086ca6061efefb5a3025James Dong * and limitations under the License. 1602f5b5447de349216a40086ca6061efefb5a3025James Dong * ------------------------------------------------------------------- 1702f5b5447de349216a40086ca6061efefb5a3025James Dong */ 1802f5b5447de349216a40086ca6061efefb5a3025James Dong#ifndef idct_h 1902f5b5447de349216a40086ca6061efefb5a3025James Dong#define idct_h 2002f5b5447de349216a40086ca6061efefb5a3025James Dong 2102f5b5447de349216a40086ca6061efefb5a3025James Dong/*---------------------------------------------------------------------------- 2202f5b5447de349216a40086ca6061efefb5a3025James Dong; INCLUDES 2302f5b5447de349216a40086ca6061efefb5a3025James Dong----------------------------------------------------------------------------*/ 2402f5b5447de349216a40086ca6061efefb5a3025James Dong#include "mp4dec_lib.h" 2502f5b5447de349216a40086ca6061efefb5a3025James Dong 2602f5b5447de349216a40086ca6061efefb5a3025James Dong/*---------------------------------------------------------------------------- 2702f5b5447de349216a40086ca6061efefb5a3025James Dong; MACROS 2802f5b5447de349216a40086ca6061efefb5a3025James Dong; Define module specific macros here 2902f5b5447de349216a40086ca6061efefb5a3025James Dong----------------------------------------------------------------------------*/ 3002f5b5447de349216a40086ca6061efefb5a3025James Dong 3102f5b5447de349216a40086ca6061efefb5a3025James Dong/*---------------------------------------------------------------------------- 3202f5b5447de349216a40086ca6061efefb5a3025James Dong; DEFINES 3302f5b5447de349216a40086ca6061efefb5a3025James Dong; Include all pre-processor statements here. 3402f5b5447de349216a40086ca6061efefb5a3025James Dong----------------------------------------------------------------------------*/ 3502f5b5447de349216a40086ca6061efefb5a3025James Dong#define INTEGER_IDCT 3602f5b5447de349216a40086ca6061efefb5a3025James Dong 3702f5b5447de349216a40086ca6061efefb5a3025James Dong#ifdef FAST_IDCT 3802f5b5447de349216a40086ca6061efefb5a3025James Dong#ifndef INTEGER_IDCT 3902f5b5447de349216a40086ca6061efefb5a3025James Dong#define INTEGER_IDCT 4002f5b5447de349216a40086ca6061efefb5a3025James Dong#endif 4102f5b5447de349216a40086ca6061efefb5a3025James Dong#endif 4202f5b5447de349216a40086ca6061efefb5a3025James Dong 4302f5b5447de349216a40086ca6061efefb5a3025James Dong#ifdef FAST_IDCT 4402f5b5447de349216a40086ca6061efefb5a3025James Dong#ifdef __cplusplus 4502f5b5447de349216a40086ca6061efefb5a3025James Dongextern "C" 4602f5b5447de349216a40086ca6061efefb5a3025James Dong{ 4702f5b5447de349216a40086ca6061efefb5a3025James Dong#endif 4802f5b5447de349216a40086ca6061efefb5a3025James Dong void idctrow0(int16 *blk, uint8 *pred, uint8 *dst, int width); 4902f5b5447de349216a40086ca6061efefb5a3025James Dong void idctrow1(int16 *blk, uint8 *pred, uint8 *dst, int width); 5002f5b5447de349216a40086ca6061efefb5a3025James Dong void idctrow2(int16 *blk, uint8 *pred, uint8 *dst, int width); 5102f5b5447de349216a40086ca6061efefb5a3025James Dong void idctrow3(int16 *blk, uint8 *pred, uint8 *dst, int width); 5202f5b5447de349216a40086ca6061efefb5a3025James Dong void idctrow4(int16 *blk, uint8 *pred, uint8 *dst, int width); 5302f5b5447de349216a40086ca6061efefb5a3025James Dong void idctcol0(int16 *blk); 5402f5b5447de349216a40086ca6061efefb5a3025James Dong void idctcol1(int16 *blk); 5502f5b5447de349216a40086ca6061efefb5a3025James Dong void idctcol2(int16 *blk); 5602f5b5447de349216a40086ca6061efefb5a3025James Dong void idctcol3(int16 *blk); 5702f5b5447de349216a40086ca6061efefb5a3025James Dong void idctcol4(int16 *blk); 5802f5b5447de349216a40086ca6061efefb5a3025James Dong 5902f5b5447de349216a40086ca6061efefb5a3025James Dong void idctrow0_intra(int16 *blk, PIXEL *comp, int width); 6002f5b5447de349216a40086ca6061efefb5a3025James Dong void idctrow1_intra(int16 *blk, PIXEL *comp, int width); 6102f5b5447de349216a40086ca6061efefb5a3025James Dong void idctrow2_intra(int16 *blk, PIXEL *comp, int width); 6202f5b5447de349216a40086ca6061efefb5a3025James Dong void idctrow3_intra(int16 *blk, PIXEL *comp, int width); 6302f5b5447de349216a40086ca6061efefb5a3025James Dong void idctrow4_intra(int16 *blk, PIXEL *comp, int width); 6402f5b5447de349216a40086ca6061efefb5a3025James Dong#ifdef __cplusplus 6502f5b5447de349216a40086ca6061efefb5a3025James Dong} 6602f5b5447de349216a40086ca6061efefb5a3025James Dong#endif 6702f5b5447de349216a40086ca6061efefb5a3025James Dong#endif 6802f5b5447de349216a40086ca6061efefb5a3025James Dong 6902f5b5447de349216a40086ca6061efefb5a3025James Dong/* this code assumes ">>" to be a two's-complement arithmetic */ 7002f5b5447de349216a40086ca6061efefb5a3025James Dong/* right shift: (-2)>>1 == -1 , (-3)>>1 == -2 */ 7102f5b5447de349216a40086ca6061efefb5a3025James Dong 7202f5b5447de349216a40086ca6061efefb5a3025James Dong/* a positive real constant is converted to an integer scaled by 2048 */ 7302f5b5447de349216a40086ca6061efefb5a3025James Dong/* or equivalent to left shift by 11 */ 7402f5b5447de349216a40086ca6061efefb5a3025James Dong 7502f5b5447de349216a40086ca6061efefb5a3025James Dong#define W1 2841 /* 2048*sqrt(2)*cos(1*pi/16) */ 7602f5b5447de349216a40086ca6061efefb5a3025James Dong#define W2 2676 /* 2048*sqrt(2)*cos(2*pi/16) */ 7702f5b5447de349216a40086ca6061efefb5a3025James Dong#define W3 2408 /* 2048*sqrt(2)*cos(3*pi/16) */ 7802f5b5447de349216a40086ca6061efefb5a3025James Dong#define W5 1609 /* 2048*sqrt(2)*cos(5*pi/16) */ 7902f5b5447de349216a40086ca6061efefb5a3025James Dong#define W6 1108 /* 2048*sqrt(2)*cos(6*pi/16) */ 8002f5b5447de349216a40086ca6061efefb5a3025James Dong#define W7 565 /* 2048*sqrt(2)*cos(7*pi/16) */ 8102f5b5447de349216a40086ca6061efefb5a3025James Dong#define W1mW7 2276 8202f5b5447de349216a40086ca6061efefb5a3025James Dong#define W1pW7 3406 8302f5b5447de349216a40086ca6061efefb5a3025James Dong#define W5mW3 -799 8402f5b5447de349216a40086ca6061efefb5a3025James Dong#define mW3mW5 -4017 8502f5b5447de349216a40086ca6061efefb5a3025James Dong#define mW2mW6 -3784 8602f5b5447de349216a40086ca6061efefb5a3025James Dong#define W2mW6 1568 8702f5b5447de349216a40086ca6061efefb5a3025James Dong 8802f5b5447de349216a40086ca6061efefb5a3025James Dong/* left shift by 11 is to maintain the accuracy of the decimal point */ 8902f5b5447de349216a40086ca6061efefb5a3025James Dong/* for the transform coefficients (W1,...W7) */ 9002f5b5447de349216a40086ca6061efefb5a3025James Dong 9102f5b5447de349216a40086ca6061efefb5a3025James Dong/*---------------------------------------------------------------------------- 9202f5b5447de349216a40086ca6061efefb5a3025James Dong; EXTERNAL VARIABLES REFERENCES 9302f5b5447de349216a40086ca6061efefb5a3025James Dong; Declare variables used in this module but defined elsewhere 9402f5b5447de349216a40086ca6061efefb5a3025James Dong----------------------------------------------------------------------------*/ 9502f5b5447de349216a40086ca6061efefb5a3025James Dong 9602f5b5447de349216a40086ca6061efefb5a3025James Dong/*---------------------------------------------------------------------------- 9702f5b5447de349216a40086ca6061efefb5a3025James Dong; SIMPLE TYPEDEF'S 9802f5b5447de349216a40086ca6061efefb5a3025James Dong----------------------------------------------------------------------------*/ 9902f5b5447de349216a40086ca6061efefb5a3025James Dong 10002f5b5447de349216a40086ca6061efefb5a3025James Dong/*---------------------------------------------------------------------------- 10102f5b5447de349216a40086ca6061efefb5a3025James Dong; ENUMERATED TYPEDEF'S 10202f5b5447de349216a40086ca6061efefb5a3025James Dong----------------------------------------------------------------------------*/ 10302f5b5447de349216a40086ca6061efefb5a3025James Dong 10402f5b5447de349216a40086ca6061efefb5a3025James Dong/*---------------------------------------------------------------------------- 10502f5b5447de349216a40086ca6061efefb5a3025James Dong; STRUCTURES TYPEDEF'S 10602f5b5447de349216a40086ca6061efefb5a3025James Dong----------------------------------------------------------------------------*/ 10702f5b5447de349216a40086ca6061efefb5a3025James Dong 10802f5b5447de349216a40086ca6061efefb5a3025James Dong/*---------------------------------------------------------------------------- 10902f5b5447de349216a40086ca6061efefb5a3025James Dong; GLOBAL FUNCTION DEFINITIONS 11002f5b5447de349216a40086ca6061efefb5a3025James Dong; Function Prototype declaration 11102f5b5447de349216a40086ca6061efefb5a3025James Dong----------------------------------------------------------------------------*/ 11202f5b5447de349216a40086ca6061efefb5a3025James Dong 11302f5b5447de349216a40086ca6061efefb5a3025James Dong/*---------------------------------------------------------------------------- 11402f5b5447de349216a40086ca6061efefb5a3025James Dong; END 11502f5b5447de349216a40086ca6061efefb5a3025James Dong----------------------------------------------------------------------------*/ 11602f5b5447de349216a40086ca6061efefb5a3025James Dong#endif 11702f5b5447de349216a40086ca6061efefb5a3025James Dong 11802f5b5447de349216a40086ca6061efefb5a3025James Dong 119