[cvs] / xvidcore / src / utils / mbtransquant.c Repository:
ViewVC logotype

Diff of /xvidcore/src/utils/mbtransquant.c

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

revision 1.12, Thu Sep 5 21:44:11 2002 UTC revision 1.20, Tue Nov 26 23:44:11 2002 UTC
# Line 3  Line 3 
3   *  XVID MPEG-4 VIDEO CODEC   *  XVID MPEG-4 VIDEO CODEC
4   *  - MacroBlock transfer and quantization -   *  - MacroBlock transfer and quantization -
5   *   *
6   *  Copyright(C) 2002-2001 Michael Militzer <isibaar@xvid.org>   *  Copyright(C) 2002-2001 Christoph Lampert <gruel@web.de>
7   *               2002-2001 Peter Ross <pross@cs.rmit.edu.au>   *               2002-2001 Michael Militzer <isibaar@xvid.org>
8     *               2002-2001 Peter Ross <pross@xvid.org>
9     *               2002      Daniel Smith <danielsmith@astroboymail.com>
10   *   *
11   *  This program is an implementation of a part of one or more MPEG-4   *  This file is part of XviD, a free MPEG-4 video encoder/decoder
  *  Video tools as specified in ISO/IEC 14496-2 standard.  Those intending  
  *  to use this software module in hardware or software products are  
  *  advised that its use may infringe existing patents or copyrights, and  
  *  any such use would be at such party's own risk.  The original  
  *  developer of this software module and his/her company, and subsequent  
  *  editors and their companies, will have no liability for use of this  
  *  software or modifications or derivatives thereof.  
12   *   *
13   *  This program is free software; you can redistribute it and/or modify   *  XviD is free software; you can redistribute it and/or modify it
14   *  it under the terms of the GNU General Public License as published by   *  under the terms of the GNU General Public License as published by
15   *  the Free Software Foundation; either version 2 of the License, or   *  the Free Software Foundation; either version 2 of the License, or
16   *  (at your option) any later version.   *  (at your option) any later version.
17   *   *
# Line 29  Line 24 
24   *  along with this program; if not, write to the Free Software   *  along with this program; if not, write to the Free Software
25   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
26   *   *
27     *  Under section 8 of the GNU General Public License, the copyright
28     *  holders of XVID explicitly forbid distribution in the following
29     *  countries:
30     *
31     *    - Japan
32     *    - United States of America
33     *
34     *  Linking XviD statically or dynamically with other modules is making a
35     *  combined work based on XviD.  Thus, the terms and conditions of the
36     *  GNU General Public License cover the whole combination.
37     *
38     *  As a special exception, the copyright holders of XviD give you
39     *  permission to link XviD with independent modules that communicate with
40     *  XviD solely through the VFW1.1 and DShow interfaces, regardless of the
41     *  license terms of these independent modules, and to copy and distribute
42     *  the resulting combined work under terms of your choice, provided that
43     *  every copy of the combined work is accompanied by a complete copy of
44     *  the source code of XviD (the version of XviD used to produce the
45     *  combined work), being distributed under the terms of the GNU General
46     *  Public License plus this exception.  An independent module is a module
47     *  which is not derived from or based on XviD.
48     *
49     *  Note that people who make modified versions of XviD are not obligated
50     *  to grant this special exception for their modified versions; it is
51     *  their choice whether to do so.  The GNU General Public License gives
52     *  permission to release a modified version without this exception; this
53     *  exception also makes it possible to release a modified version which
54     *  carries forward this exception.
55     *
56   * $Id$   * $Id$
57   *   *
58   ****************************************************************************/   ****************************************************************************/
# Line 364  Line 388 
388  MBQuantIntra(const MBParam * pParam,  MBQuantIntra(const MBParam * pParam,
389                           FRAMEINFO * frame,                           FRAMEINFO * frame,
390                           MACROBLOCK *pMB,                           MACROBLOCK *pMB,
391                       int16_t qcoeff[6 * 64],                           int16_t data[6 * 64],
392                           int16_t data[6*64])                       int16_t qcoeff[6 * 64])
393  {  {
394          int i;          int i;
395          int iQuant = frame->quant;          int iQuant = frame->quant;
# Line 438  Line 462 
462                          stop_quant_timer();                          stop_quant_timer();
463                  }                  }
464    
465                  if (sum >= TOOSMALL_LIMIT) {    // skip block ?                  if (sum >= TOOSMALL_LIMIT) {    /* skip block ? */
466                          cbp |= 1 << (5 - i);                          cbp |= 1 << (5 - i);
467                  }                  }
468          }          }
# Line 598  Line 622 
622                  }                  }
623          }          }
624    
625          if (frame > field) {          if (frame > (field + 350)) {
626                  MBFrameToField(data);                  MBFrameToField(data);
627          }          }
628    
629          return (frame > field);          return (frame > (field + 350));
630  }  }
631    
632    
# Line 618  Line 642 
642    
643          /* left blocks */          /* left blocks */
644    
645          // 1=2, 2=4, 4=8, 8=1          /* 1=2, 2=4, 4=8, 8=1 */
646          MOVLINE(tmp, LINE(0, 1));          MOVLINE(tmp, LINE(0, 1));
647          MOVLINE(LINE(0, 1), LINE(0, 2));          MOVLINE(LINE(0, 1), LINE(0, 2));
648          MOVLINE(LINE(0, 2), LINE(0, 4));          MOVLINE(LINE(0, 2), LINE(0, 4));
649          MOVLINE(LINE(0, 4), LINE(2, 0));          MOVLINE(LINE(0, 4), LINE(2, 0));
650          MOVLINE(LINE(2, 0), tmp);          MOVLINE(LINE(2, 0), tmp);
651    
652          // 3=6, 6=12, 12=9, 9=3          /* 3=6, 6=12, 12=9, 9=3 */
653          MOVLINE(tmp, LINE(0, 3));          MOVLINE(tmp, LINE(0, 3));
654          MOVLINE(LINE(0, 3), LINE(0, 6));          MOVLINE(LINE(0, 3), LINE(0, 6));
655          MOVLINE(LINE(0, 6), LINE(2, 4));          MOVLINE(LINE(0, 6), LINE(2, 4));
656          MOVLINE(LINE(2, 4), LINE(2, 1));          MOVLINE(LINE(2, 4), LINE(2, 1));
657          MOVLINE(LINE(2, 1), tmp);          MOVLINE(LINE(2, 1), tmp);
658    
659          // 5=10, 10=5          /* 5=10, 10=5 */
660          MOVLINE(tmp, LINE(0, 5));          MOVLINE(tmp, LINE(0, 5));
661          MOVLINE(LINE(0, 5), LINE(2, 2));          MOVLINE(LINE(0, 5), LINE(2, 2));
662          MOVLINE(LINE(2, 2), tmp);          MOVLINE(LINE(2, 2), tmp);
663    
664          // 7=14, 14=13, 13=11, 11=7          /* 7=14, 14=13, 13=11, 11=7 */
665          MOVLINE(tmp, LINE(0, 7));          MOVLINE(tmp, LINE(0, 7));
666          MOVLINE(LINE(0, 7), LINE(2, 6));          MOVLINE(LINE(0, 7), LINE(2, 6));
667          MOVLINE(LINE(2, 6), LINE(2, 5));          MOVLINE(LINE(2, 6), LINE(2, 5));
# Line 646  Line 670 
670    
671          /* right blocks */          /* right blocks */
672    
673          // 1=2, 2=4, 4=8, 8=1          /* 1=2, 2=4, 4=8, 8=1 */
674          MOVLINE(tmp, LINE(1, 1));          MOVLINE(tmp, LINE(1, 1));
675          MOVLINE(LINE(1, 1), LINE(1, 2));          MOVLINE(LINE(1, 1), LINE(1, 2));
676          MOVLINE(LINE(1, 2), LINE(1, 4));          MOVLINE(LINE(1, 2), LINE(1, 4));
677          MOVLINE(LINE(1, 4), LINE(3, 0));          MOVLINE(LINE(1, 4), LINE(3, 0));
678          MOVLINE(LINE(3, 0), tmp);          MOVLINE(LINE(3, 0), tmp);
679    
680          // 3=6, 6=12, 12=9, 9=3          /* 3=6, 6=12, 12=9, 9=3 */
681          MOVLINE(tmp, LINE(1, 3));          MOVLINE(tmp, LINE(1, 3));
682          MOVLINE(LINE(1, 3), LINE(1, 6));          MOVLINE(LINE(1, 3), LINE(1, 6));
683          MOVLINE(LINE(1, 6), LINE(3, 4));          MOVLINE(LINE(1, 6), LINE(3, 4));
684          MOVLINE(LINE(3, 4), LINE(3, 1));          MOVLINE(LINE(3, 4), LINE(3, 1));
685          MOVLINE(LINE(3, 1), tmp);          MOVLINE(LINE(3, 1), tmp);
686    
687          // 5=10, 10=5          /* 5=10, 10=5 */
688          MOVLINE(tmp, LINE(1, 5));          MOVLINE(tmp, LINE(1, 5));
689          MOVLINE(LINE(1, 5), LINE(3, 2));          MOVLINE(LINE(1, 5), LINE(3, 2));
690          MOVLINE(LINE(3, 2), tmp);          MOVLINE(LINE(3, 2), tmp);
691    
692          // 7=14, 14=13, 13=11, 11=7          /* 7=14, 14=13, 13=11, 11=7 */
693          MOVLINE(tmp, LINE(1, 7));          MOVLINE(tmp, LINE(1, 7));
694          MOVLINE(LINE(1, 7), LINE(3, 6));          MOVLINE(LINE(1, 7), LINE(3, 6));
695          MOVLINE(LINE(3, 6), LINE(3, 5));          MOVLINE(LINE(3, 6), LINE(3, 5));

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.20

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