idct.h revision 3306cfee3bf38ab207a0504e49c2d492bb73ffbf
1/* ------------------------------------------------------------------ 2 * Copyright (C) 1998-2009 PacketVideo 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13 * express or implied. 14 * See the License for the specific language governing permissions 15 * and limitations under the License. 16 * ------------------------------------------------------------------- 17 */ 18#ifndef idct_h 19#define idct_h 20 21/*---------------------------------------------------------------------------- 22; INCLUDES 23----------------------------------------------------------------------------*/ 24#include "mp4dec_lib.h" 25 26/*---------------------------------------------------------------------------- 27; MACROS 28; Define module specific macros here 29----------------------------------------------------------------------------*/ 30 31/*---------------------------------------------------------------------------- 32; DEFINES 33; Include all pre-processor statements here. 34----------------------------------------------------------------------------*/ 35#define INTEGER_IDCT 36 37#ifdef FAST_IDCT 38#ifndef INTEGER_IDCT 39#define INTEGER_IDCT 40#endif 41#endif 42 43#ifdef FAST_IDCT 44#ifdef __cplusplus 45extern "C" 46{ 47#endif 48 void idctrow0(int16 *blk, uint8 *pred, uint8 *dst, int width); 49 void idctrow1(int16 *blk, uint8 *pred, uint8 *dst, int width); 50 void idctrow2(int16 *blk, uint8 *pred, uint8 *dst, int width); 51 void idctrow3(int16 *blk, uint8 *pred, uint8 *dst, int width); 52 void idctrow4(int16 *blk, uint8 *pred, uint8 *dst, int width); 53 void idctcol0(int16 *blk); 54 void idctcol1(int16 *blk); 55 void idctcol2(int16 *blk); 56 void idctcol3(int16 *blk); 57 void idctcol4(int16 *blk); 58 59 void idctrow0_intra(int16 *blk, PIXEL *comp, int width); 60 void idctrow1_intra(int16 *blk, PIXEL *comp, int width); 61 void idctrow2_intra(int16 *blk, PIXEL *comp, int width); 62 void idctrow3_intra(int16 *blk, PIXEL *comp, int width); 63 void idctrow4_intra(int16 *blk, PIXEL *comp, int width); 64#ifdef __cplusplus 65} 66#endif 67#endif 68 69/* this code assumes ">>" to be a two's-complement arithmetic */ 70/* right shift: (-2)>>1 == -1 , (-3)>>1 == -2 */ 71 72/* a positive real constant is converted to an integer scaled by 2048 */ 73/* or equivalent to left shift by 11 */ 74 75#define W1 2841 /* 2048*sqrt(2)*cos(1*pi/16) */ 76#define W2 2676 /* 2048*sqrt(2)*cos(2*pi/16) */ 77#define W3 2408 /* 2048*sqrt(2)*cos(3*pi/16) */ 78#define W5 1609 /* 2048*sqrt(2)*cos(5*pi/16) */ 79#define W6 1108 /* 2048*sqrt(2)*cos(6*pi/16) */ 80#define W7 565 /* 2048*sqrt(2)*cos(7*pi/16) */ 81#define W1mW7 2276 82#define W1pW7 3406 83#define W5mW3 -799 84#define mW3mW5 -4017 85#define mW2mW6 -3784 86#define W2mW6 1568 87 88/* left shift by 11 is to maintain the accuracy of the decimal point */ 89/* for the transform coefficients (W1,...W7) */ 90 91/*---------------------------------------------------------------------------- 92; EXTERNAL VARIABLES REFERENCES 93; Declare variables used in this module but defined elsewhere 94----------------------------------------------------------------------------*/ 95 96/*---------------------------------------------------------------------------- 97; SIMPLE TYPEDEF'S 98----------------------------------------------------------------------------*/ 99 100/*---------------------------------------------------------------------------- 101; ENUMERATED TYPEDEF'S 102----------------------------------------------------------------------------*/ 103 104/*---------------------------------------------------------------------------- 105; STRUCTURES TYPEDEF'S 106----------------------------------------------------------------------------*/ 107 108/*---------------------------------------------------------------------------- 109; GLOBAL FUNCTION DEFINITIONS 110; Function Prototype declaration 111----------------------------------------------------------------------------*/ 112 113/*---------------------------------------------------------------------------- 114; END 115----------------------------------------------------------------------------*/ 116#endif 117 118 119