[svn] / branches / release-1_0-branch / xvidcore / src / dct / idct.c Repository:
ViewVC logotype

Diff of /branches/release-1_0-branch/xvidcore/src/dct/idct.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3, Fri Mar 8 02:46:11 2002 UTC revision 461, Tue Sep 10 20:38:24 2002 UTC
# Line 1  Line 1 
1  /* idct.c, inverse fast discrete cosine transform                           */  /*****************************************************************************
   
 /* Copyright (C) 1996, MPEG Software Simulation Group. All Rights Reserved. */  
   
 /*  
  * Disclaimer of Warranty  
2   *   *
3   * These software programs are available to the user without any license fee or   *  XVID MPEG-4 VIDEO CODEC
4   * royalty on an "as is" basis.  The MPEG Software Simulation Group disclaims   *  - inverse fast disrete cosine transformation - integer C version
  * any and all warranties, whether express, implied, or statuary, including any  
  * implied warranties or merchantability or of fitness for a particular  
  * purpose.  In no event shall the copyright-holder be liable for any  
  * incidental, punitive, or consequential damages of any kind whatsoever  
  * arising from the use of these programs.  
  *  
  * This disclaimer of warranty extends to the user of these programs and user's  
  * customers, employees, agents, transferees, successors, and assigns.  
  *  
  * The MPEG Software Simulation Group does not represent or warrant that the  
  * programs furnished hereunder are free of infringement of any third-party  
  * patents.  
  *  
  * Commercial implementations of MPEG-1 and MPEG-2 video, including shareware,  
  * are subject to royalty fees to patent holders.  Many of these patents are  
  * general enough such that they are unavoidable regardless of implementation  
  * design.  
  *  
  * MPEG2AVI  
  * --------  
  * v0.16B33 renamed the initialization function to init_idct_int32()  
  * v0.16B32 removed the unused idct_row() and idct_col() functions  
  * v0.16B3  changed var declarations to static, to enforce data align  
  * v0.16B22  idct_FAST() renamed to idct_int32()  
  *        also merged idct_FAST() into a single function, to help VC++  
  *        optimize it.  
5   *   *
6   * v0.14  changed int to long, to avoid confusion when compiling on x86   *  These routines are from Independent JPEG Group's free JPEG software
7   *        platform ( in VC++ "int" -> 32bits )   *  Copyright (C) 1991-1998, Thomas G. Lane (see the file README.IJG)
8   */   *
9     *  This program is an implementation of a part of one or more MPEG-4
10     *  Video tools as specified in ISO/IEC 14496-2 standard.  Those intending
11     *  to use this software module in hardware or software products are
12     *  advised that its use may infringe existing patents or copyrights, and
13     *  any such use would be at such party's own risk.  The original
14     *  developer of this software module and his/her company, and subsequent
15     *  editors and their companies, will have no liability for use of this
16     *  software or modifications or derivatives thereof.
17     *
18     *  This program is free software; you can redistribute it and/or modify
19     *  it under the terms of the GNU General Public License as published by
20     *  the Free Software Foundation; either version 2 of the License, or
21     *  (at your option) any later version.
22     *
23     *  This program is distributed in the hope that it will be useful,
24     *  but WITHOUT ANY WARRANTY; without even the implied warranty of
25     *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
26     *  GNU General Public License for more details.
27     *
28     *  You should have received a copy of the GNU General Public License
29     *  along with this program; if not, write to the Free Software
30     *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
31     *
32     *************************************************************************/
33    
34  /**********************************************************/  /**********************************************************/
35  /* inverse two dimensional DCT, Chen-Wang algorithm       */  /* inverse two dimensional DCT, Chen-Wang algorithm       */
# Line 52  Line 45 
45  /* this code assumes >> to be a two's-complement arithmetic */  /* this code assumes >> to be a two's-complement arithmetic */
46  /* right shift: (-2)>>1 == -1 , (-3)>>1 == -2               */  /* right shift: (-2)>>1 == -1 , (-3)>>1 == -2               */
47    
 //#include <windows.h>  
48  #include "idct.h"  #include "idct.h"
49    
50  #define W1 2841 /* 2048*sqrt(2)*cos(1*pi/16) */  #define W1 2841 /* 2048*sqrt(2)*cos(1*pi/16) */
# Line 209  Line 201 
201  /* two dimensional inverse discrete cosine transform */  /* two dimensional inverse discrete cosine transform */
202  //void j_rev_dct(block)  //void j_rev_dct(block)
203  //short *block;  //short *block;
204  void idct_int32(short * const block)  void
205    idct_int32(short *const block)
206  {  {
207    
208    // idct_int32_init() must be called before the first call to this function!    // idct_int32_init() must be called before the first call to this function!
# Line 231  Line 224 
224    for (i=0; i<8; i++)   // idct rows    for (i=0; i<8; i++)   // idct rows
225    {    {
226          blk = block+(i<<3);          blk = block+(i<<3);
227          if (!((X1 = blk[4]<<11) | (X2 = blk[6]) | (X3 = blk[2]) |                  if (!
228          (X4 = blk[1]) | (X5 = blk[7]) | (X6 = blk[5]) | (X7 = blk[3])))                          ((X1 = blk[4] << 11) | (X2 = blk[6]) | (X3 = blk[2]) | (X4 =
229          {                                                                                                                                          blk[1]) |
230                  blk[0]=blk[1]=blk[2]=blk[3]=blk[4]=blk[5]=blk[6]=blk[7]=blk[0]<<3;                           (X5 = blk[7]) | (X6 = blk[5]) | (X7 = blk[3]))) {
231                            blk[0] = blk[1] = blk[2] = blk[3] = blk[4] = blk[5] = blk[6] =
232                                    blk[7] = blk[0] << 3;
233                  continue;                  continue;
234          }          }
235    
# Line 286  Line 281 
281    {    {
282          blk = block + i;          blk = block + i;
283      // shortcut      // shortcut
284          if (!((X1 = (blk[8*4]<<8)) | (X2 = blk[8*6]) | (X3 = blk[8*2]) |                  if (!
285          (X4 = blk[8*1]) | (X5 = blk[8*7]) | (X6 = blk[8*5]) | (X7 = blk[8*3])))                          ((X1 = (blk[8 * 4] << 8)) | (X2 = blk[8 * 6]) | (X3 =
286          {                                                                                                                           blk[8 *
287                                                                                                                                     2]) | (X4 =
288                                                                                                                                                    blk[8 *
289                                                                                                                                                            1])
290                             | (X5 = blk[8 * 7]) | (X6 = blk[8 * 5]) | (X7 = blk[8 * 3]))) {
291                  blk[8*0]=blk[8*1]=blk[8*2]=blk[8*3]=blk[8*4]=                  blk[8*0]=blk[8*1]=blk[8*2]=blk[8*3]=blk[8*4]=
292                          blk[8*5]=blk[8*6]=blk[8*7]=iclp[(blk[8*0]+32)>>6];                                  blk[8 * 5] = blk[8 * 6] = blk[8 * 7] =
293                                    iclp[(blk[8 * 0] + 32) >> 6];
294                  continue;                  continue;
295          }          }
296    
# Line 339  Line 339 
339    
340  //void  //void
341  //idct_int32_init()  //idct_int32_init()
342  void idct_int32_init()  void
343    idct_int32_init()
344  {  {
345    int i;    int i;
346    

Legend:
Removed from v.3  
changed lines
  Added in v.461

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4