[cvs] / xvidcore / src / quant / adapt_quant.c Repository:
ViewVC logotype

Diff of /xvidcore/src/quant/adapt_quant.c

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

revision 1.7, Sat Sep 7 12:51:38 2002 UTC revision 1.14.2.2, Mon Jun 9 13:55:10 2003 UTC
# Line 1  Line 1 
1  /*****************************************************************************  /*****************************************************************************
2   *   *
3   *  XVID MPEG-4 VIDEO CODEC   *  XVID MPEG-4 VIDEO CODEC
4   *  - Adaptive quantization functions -   *  - Deprecated code  -
5   *   *
6   *  Copyright(C) 2002 Peter Ross   *  Copyright(C) 2002 Peter Ross <pross@xvid.org>
7   *   *               2002 Christoph Lampert <gruel@web.de>
  *  This program is an implementation of a part of one or more MPEG-4  
  *  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.  
8   *   *
9   *  This program is free software ; you can redistribute it and/or modify   *  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   *  it under the terms of the GNU General Public License as published by
# Line 33  Line 25 
25   ****************************************************************************/   ****************************************************************************/
26    
27  #include "../portab.h"  #include "../portab.h"
28    #include "../global.h"
29  #include "adapt_quant.h"  #include "adapt_quant.h"
30    
31  #include <stdlib.h>                             /* free, malloc */  #include <stdlib.h>                             /* free, malloc */
32    
 #define MAX(a,b)      (((a) > (b)) ? (a) : (b))  
33  #define RDIFF(a,b)    ((int)(a+0.5)-(int)(b+0.5))  #define RDIFF(a,b)    ((int)(a+0.5)-(int)(b+0.5))
34    
 /*****************************************************************************  
  * Functions  
  ****************************************************************************/  
   
35  int  int
36  normalize_quantizer_field(float *in,  normalize_quantizer_field(float *in,
37                                                    int *out,                                                    int *out,
# Line 99  Line 87 
87                                            int min_quant,                                            int min_quant,
88                                            int max_quant,                                            int max_quant,
89                                            int mb_width,                                            int mb_width,
90                                            int mb_height)        // no qstride because normalization                                            int mb_height)        /* no qstride because normalization */
91  {  {
92          int i, j, k, l;          int i, j, k, l;
93    
# Line 129  Line 117 
117                  return(-1);                  return(-1);
118    
119          for (k = 0; k < mb_height; k++) {          for (k = 0; k < mb_height; k++) {
120                  for (l = 0; l < mb_width; l++)  // do this for all macroblocks individually                  for (l = 0; l < mb_width; l++)  /* do this for all macroblocks individually  */
121                  {                  {
122                          quant[k * mb_width + l] = (float) framequant;                          quant[k * mb_width + l] = (float) framequant;
123    
124                          // calculate luminance-masking                          /* calculate luminance-masking */
125                          ptr = &buf[16 * k * stride + 16 * l];   // address of MB                          ptr = &buf[16 * k * stride + 16 * l];   /* address of MB */
126    
127                          val[k * mb_width + l] = 0.;                          val[k * mb_width + l] = 0.;
128    
# Line 155  Line 143 
143          if (((global <GlobalBrightThres) &&(global >GlobalDarkThres))          if (((global <GlobalBrightThres) &&(global >GlobalDarkThres))
144                  || (mid_range < MidRangeThres)) {                  || (mid_range < MidRangeThres)) {
145                  for (k = 0; k < mb_height; k++) {                  for (k = 0; k < mb_height; k++) {
146                          for (l = 0; l < mb_width; l++)  // do this for all macroblocks individually                          for (l = 0; l < mb_width; l++)  /* do this for all macroblocks individually */
147                          {                          {
148                                  if (val[k * mb_width + l] < DarkThres)                                  if (val[k * mb_width + l] < DarkThres)
149                                          quant[k * mb_width + l] +=                                          quant[k * mb_width + l] +=
# Line 168  Line 156 
156                          }                          }
157                  }                  }
158          }          }
159    
160            i = normalize_quantizer_field(quant, intquant,
161                                                                      mb_width * mb_height,
162                                                                      min_quant, max_quant);
163    
164          free(val);          free(val);
165          free(quant);          free(quant);
166          return normalize_quantizer_field(quant, intquant, mb_width * mb_height,  
167                                                                           min_quant, max_quant);          return(i);
168    
169  }  }

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.14.2.2

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