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