1 |
/* idct.c, inverse fast discrete cosine transform */ |
/***************************************************************************** |
2 |
|
* |
3 |
|
* XVID MPEG-4 VIDEO CODEC |
4 |
|
* - Inverse DCT - |
5 |
|
* |
6 |
|
* These routines are from Independent JPEG Group's free JPEG software |
7 |
|
* Copyright (C) 1991-1998, Thomas G. Lane (see the file README.IJG) |
8 |
|
* |
9 |
|
* This program is free software ; you can redistribute it and/or modify |
10 |
|
* it under the terms of the GNU General Public License as published by |
11 |
|
* the Free Software Foundation ; either version 2 of the License, or |
12 |
|
* (at your option) any later version. |
13 |
|
* |
14 |
|
* This program is distributed in the hope that it will be useful, |
15 |
|
* but WITHOUT ANY WARRANTY ; without even the implied warranty of |
16 |
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
17 |
|
* GNU General Public License for more details. |
18 |
|
* |
19 |
|
* You should have received a copy of the GNU General Public License |
20 |
|
* along with this program ; if not, write to the Free Software |
21 |
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
22 |
|
* |
23 |
|
* $Id$ |
24 |
|
* |
25 |
|
****************************************************************************/ |
26 |
|
|
27 |
/* Copyright (C) 1996, MPEG Software Simulation Group. All Rights Reserved. */ |
/* Copyright (C) 1996, MPEG Software Simulation Group. All Rights Reserved. */ |
28 |
|
|
85 |
#define W6 1108 /* 2048*sqrt(2)*cos(6*pi/16) */ |
#define W6 1108 /* 2048*sqrt(2)*cos(6*pi/16) */ |
86 |
#define W7 565 /* 2048*sqrt(2)*cos(7*pi/16) */ |
#define W7 565 /* 2048*sqrt(2)*cos(7*pi/16) */ |
87 |
|
|
88 |
/* private data */ |
/* private data |
89 |
|
* Initialized by idct_int32_init so it's mostly RO data, |
90 |
|
* doesn't hurt thread safety */ |
91 |
static short iclip[1024]; /* clipping table */ |
static short iclip[1024]; /* clipping table */ |
92 |
static short *iclp; |
static short *iclp; |
93 |
|
|
249 |
idctcol(block+i); |
idctcol(block+i); |
250 |
#endif |
#endif |
251 |
|
|
252 |
static short *blk; |
short *blk; |
253 |
static long i; |
long i; |
254 |
static long X0, X1, X2, X3, X4, X5, X6, X7, X8; |
long X0, X1, X2, X3, X4, X5, X6, X7, X8; |
255 |
|
|
256 |
|
|
257 |
for (i = 0; i < 8; i++) /* idct rows */ |
for (i = 0; i < 8; i++) /* idct rows */ |