| /* ------------------------------------------------------------------ |
| * Copyright (C) 1998-2009 PacketVideo |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either |
| * express or implied. |
| * See the License for the specific language governing permissions |
| * and limitations under the License. |
| * ------------------------------------------------------------------- |
| */ |
| #ifndef idct_h |
| #define idct_h |
| |
| /*---------------------------------------------------------------------------- |
| ; INCLUDES |
| ----------------------------------------------------------------------------*/ |
| #include "mp4dec_lib.h" |
| |
| /*---------------------------------------------------------------------------- |
| ; MACROS |
| ; Define module specific macros here |
| ----------------------------------------------------------------------------*/ |
| |
| /*---------------------------------------------------------------------------- |
| ; DEFINES |
| ; Include all pre-processor statements here. |
| ----------------------------------------------------------------------------*/ |
| #define INTEGER_IDCT |
| |
| #ifdef FAST_IDCT |
| #ifndef INTEGER_IDCT |
| #define INTEGER_IDCT |
| #endif |
| #endif |
| |
| #ifdef FAST_IDCT |
| #ifdef __cplusplus |
| extern "C" |
| { |
| #endif |
| void idctrow0(int16 *blk, uint8 *pred, uint8 *dst, int width); |
| void idctrow1(int16 *blk, uint8 *pred, uint8 *dst, int width); |
| void idctrow2(int16 *blk, uint8 *pred, uint8 *dst, int width); |
| void idctrow3(int16 *blk, uint8 *pred, uint8 *dst, int width); |
| void idctrow4(int16 *blk, uint8 *pred, uint8 *dst, int width); |
| void idctcol0(int16 *blk); |
| void idctcol1(int16 *blk); |
| void idctcol2(int16 *blk); |
| void idctcol3(int16 *blk); |
| void idctcol4(int16 *blk); |
| |
| void idctrow0_intra(int16 *blk, PIXEL *comp, int width); |
| void idctrow1_intra(int16 *blk, PIXEL *comp, int width); |
| void idctrow2_intra(int16 *blk, PIXEL *comp, int width); |
| void idctrow3_intra(int16 *blk, PIXEL *comp, int width); |
| void idctrow4_intra(int16 *blk, PIXEL *comp, int width); |
| #ifdef __cplusplus |
| } |
| #endif |
| #endif |
| |
| /* this code assumes ">>" to be a two's-complement arithmetic */ |
| /* right shift: (-2)>>1 == -1 , (-3)>>1 == -2 */ |
| |
| /* a positive real constant is converted to an integer scaled by 2048 */ |
| /* or equivalent to left shift by 11 */ |
| |
| #define W1 2841 /* 2048*sqrt(2)*cos(1*pi/16) */ |
| #define W2 2676 /* 2048*sqrt(2)*cos(2*pi/16) */ |
| #define W3 2408 /* 2048*sqrt(2)*cos(3*pi/16) */ |
| #define W5 1609 /* 2048*sqrt(2)*cos(5*pi/16) */ |
| #define W6 1108 /* 2048*sqrt(2)*cos(6*pi/16) */ |
| #define W7 565 /* 2048*sqrt(2)*cos(7*pi/16) */ |
| #define W1mW7 2276 |
| #define W1pW7 3406 |
| #define W5mW3 (-799) |
| #define mW3mW5 (-4017) |
| #define mW2mW6 (-3784) |
| #define W2mW6 1568 |
| |
| /* left shift by 11 is to maintain the accuracy of the decimal point */ |
| /* for the transform coefficients (W1,...W7) */ |
| |
| /*---------------------------------------------------------------------------- |
| ; EXTERNAL VARIABLES REFERENCES |
| ; Declare variables used in this module but defined elsewhere |
| ----------------------------------------------------------------------------*/ |
| |
| /*---------------------------------------------------------------------------- |
| ; SIMPLE TYPEDEF'S |
| ----------------------------------------------------------------------------*/ |
| |
| /*---------------------------------------------------------------------------- |
| ; ENUMERATED TYPEDEF'S |
| ----------------------------------------------------------------------------*/ |
| |
| /*---------------------------------------------------------------------------- |
| ; STRUCTURES TYPEDEF'S |
| ----------------------------------------------------------------------------*/ |
| |
| /*---------------------------------------------------------------------------- |
| ; GLOBAL FUNCTION DEFINITIONS |
| ; Function Prototype declaration |
| ----------------------------------------------------------------------------*/ |
| |
| /*---------------------------------------------------------------------------- |
| ; END |
| ----------------------------------------------------------------------------*/ |
| #endif |
| |
| |