13306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/* ------------------------------------------------------------------ 23306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * Copyright (C) 1998-2009 PacketVideo 33306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * 43306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * Licensed under the Apache License, Version 2.0 (the "License"); 53306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * you may not use this file except in compliance with the License. 63306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * You may obtain a copy of the License at 73306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * 83306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * http://www.apache.org/licenses/LICENSE-2.0 93306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * 103306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * Unless required by applicable law or agreed to in writing, software 113306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * distributed under the License is distributed on an "AS IS" BASIS, 123306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 133306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * express or implied. 143306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * See the License for the specific language governing permissions 153306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * and limitations under the License. 163306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * ------------------------------------------------------------------- 173306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong */ 183306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#ifndef idct_h 193306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define idct_h 203306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 213306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/*---------------------------------------------------------------------------- 223306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; INCLUDES 233306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong----------------------------------------------------------------------------*/ 243306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#include "mp4dec_lib.h" 253306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 263306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/*---------------------------------------------------------------------------- 273306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; MACROS 283306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; Define module specific macros here 293306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong----------------------------------------------------------------------------*/ 303306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 313306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/*---------------------------------------------------------------------------- 323306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; DEFINES 333306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; Include all pre-processor statements here. 343306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong----------------------------------------------------------------------------*/ 353306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define INTEGER_IDCT 363306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 373306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#ifdef FAST_IDCT 383306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#ifndef INTEGER_IDCT 393306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define INTEGER_IDCT 403306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#endif 413306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#endif 423306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 433306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#ifdef FAST_IDCT 443306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#ifdef __cplusplus 453306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dongextern "C" 463306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong{ 473306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#endif 483306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void idctrow0(int16 *blk, uint8 *pred, uint8 *dst, int width); 493306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void idctrow1(int16 *blk, uint8 *pred, uint8 *dst, int width); 503306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void idctrow2(int16 *blk, uint8 *pred, uint8 *dst, int width); 513306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void idctrow3(int16 *blk, uint8 *pred, uint8 *dst, int width); 523306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void idctrow4(int16 *blk, uint8 *pred, uint8 *dst, int width); 533306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void idctcol0(int16 *blk); 543306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void idctcol1(int16 *blk); 553306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void idctcol2(int16 *blk); 563306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void idctcol3(int16 *blk); 573306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void idctcol4(int16 *blk); 583306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 593306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void idctrow0_intra(int16 *blk, PIXEL *comp, int width); 603306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void idctrow1_intra(int16 *blk, PIXEL *comp, int width); 613306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void idctrow2_intra(int16 *blk, PIXEL *comp, int width); 623306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void idctrow3_intra(int16 *blk, PIXEL *comp, int width); 633306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void idctrow4_intra(int16 *blk, PIXEL *comp, int width); 643306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#ifdef __cplusplus 653306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong} 663306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#endif 673306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#endif 683306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 693306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/* this code assumes ">>" to be a two's-complement arithmetic */ 703306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/* right shift: (-2)>>1 == -1 , (-3)>>1 == -2 */ 713306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 723306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/* a positive real constant is converted to an integer scaled by 2048 */ 733306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/* or equivalent to left shift by 11 */ 743306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 753306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define W1 2841 /* 2048*sqrt(2)*cos(1*pi/16) */ 763306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define W2 2676 /* 2048*sqrt(2)*cos(2*pi/16) */ 773306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define W3 2408 /* 2048*sqrt(2)*cos(3*pi/16) */ 783306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define W5 1609 /* 2048*sqrt(2)*cos(5*pi/16) */ 793306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define W6 1108 /* 2048*sqrt(2)*cos(6*pi/16) */ 803306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define W7 565 /* 2048*sqrt(2)*cos(7*pi/16) */ 813306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define W1mW7 2276 823306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define W1pW7 3406 833306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define W5mW3 -799 843306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define mW3mW5 -4017 853306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define mW2mW6 -3784 863306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define W2mW6 1568 873306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 883306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/* left shift by 11 is to maintain the accuracy of the decimal point */ 893306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/* for the transform coefficients (W1,...W7) */ 903306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 913306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/*---------------------------------------------------------------------------- 923306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; EXTERNAL VARIABLES REFERENCES 933306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; Declare variables used in this module but defined elsewhere 943306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong----------------------------------------------------------------------------*/ 953306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 963306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/*---------------------------------------------------------------------------- 973306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; SIMPLE TYPEDEF'S 983306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong----------------------------------------------------------------------------*/ 993306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1003306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/*---------------------------------------------------------------------------- 1013306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; ENUMERATED TYPEDEF'S 1023306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong----------------------------------------------------------------------------*/ 1033306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1043306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/*---------------------------------------------------------------------------- 1053306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; STRUCTURES TYPEDEF'S 1063306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong----------------------------------------------------------------------------*/ 1073306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1083306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/*---------------------------------------------------------------------------- 1093306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; GLOBAL FUNCTION DEFINITIONS 1103306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; Function Prototype declaration 1113306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong----------------------------------------------------------------------------*/ 1123306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1133306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/*---------------------------------------------------------------------------- 1143306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; END 1153306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong----------------------------------------------------------------------------*/ 1163306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#endif 1173306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1183306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 119