Home | History | Annotate | Download | only in src
      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
     45 extern "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