[svn] / branches / dev-api-4 / xvidcore / src / quant / quant_mpeg4.c Repository:
ViewVC logotype

Diff of /branches/dev-api-4/xvidcore/src/quant/quant_mpeg4.c

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

revision 886, Fri Feb 21 14:49:29 2003 UTC revision 1053, Mon Jun 9 01:25:19 2003 UTC
# Line 44  Line 44 
44  #include "quant_mpeg4.h"  #include "quant_mpeg4.h"
45  #include "quant_matrix.h"  #include "quant_matrix.h"
46    
47  // function pointers  /* function pointers */
48  quant_intraFuncPtr quant4_intra;  quant_intraFuncPtr quant4_intra;
49  quant_intraFuncPtr dequant4_intra;  quant_intraFuncPtr dequant4_intra;
50  dequant_interFuncPtr dequant4_inter;  dequant_interFuncPtr dequant4_inter;
# Line 55  Line 55 
55  #define VM18Q    4  #define VM18Q    4
56    
57    
58  // divide-by-multiply table  /*
59  // need 17 bit shift (16 causes slight errors when q > 19)   * divide-by-multiply table
60     * need 17 bit shift (16 causes slight errors when q > 19)
61     */
62    
63  #define SCALEBITS    17  #define SCALEBITS    17
64  #define FIX(X)        ((1UL << SCALEBITS) / (X) + 1)  #define FIX(X)        ((1UL << SCALEBITS) / (X) + 1)
# Line 73  Line 75 
75  };  };
76    
77  /*    quantize intra-block  /*    quantize intra-block
78     *
79      // const int32_t quantd = DIV_DIV(VM18P*quant, VM18Q);   * const int32_t quantd = DIV_DIV(VM18P*quant, VM18Q);
80      //   * level = DIV_DIV(16 * data[i], default_intra_matrix[i]);
81      // level = DIV_DIV(16 * data[i], default_intra_matrix[i]);   * coeff[i] = (level + quantd) / quant2;
     // coeff[i] = (level + quantd) / quant2;  
82  */  */
83    
84  void  void
# Line 116  Line 117 
117    
118    
119    
120  /*    dequantize intra-block & clamp to [-2048,2047]  /*
121      // data[i] = (coeff[i] * default_intra_matrix[i] * quant2) >> 4;   * dequantize intra-block & clamp to [-2048,2047]
122     *
123     * data[i] = (coeff[i] * default_intra_matrix[i] * quant2) >> 4;
124  */  */
125    
126  void  void
# Line 146  Line 149 
149    
150                          level = (level * intra_matrix[i] * quant) >> 3;                          level = (level * intra_matrix[i] * quant) >> 3;
151                          data[i] = (level <= 2048 ? -(int16_t) level : -2048);                          data[i] = (level <= 2048 ? -(int16_t) level : -2048);
152                  } else                                  // if (coeff[i] > 0)                  } else                                  /* if (coeff[i] > 0) */
153                  {                  {
154                          uint32_t level = coeff[i];                          uint32_t level = coeff[i];
155    
# Line 159  Line 162 
162    
163    
164  /*    quantize inter-block  /*    quantize inter-block
165     *
166      // level = DIV_DIV(16 * data[i], default_intra_matrix[i]);   * level = DIV_DIV(16 * data[i], default_intra_matrix[i]);
167      // coeff[i] = (level + quantd) / quant2;   * coeff[i] = (level + quantd) / quant2;
168      // sum += abs(level);   * sum += abs(level);
169  */  */
170    
171  uint32_t  uint32_t
# Line 224  Line 227 
227    
228                          level = ((2 * level + 1) * inter_matrix[i] * quant) >> 4;                          level = ((2 * level + 1) * inter_matrix[i] * quant) >> 4;
229                          data[i] = (level <= 2048 ? -level : -2048);                          data[i] = (level <= 2048 ? -level : -2048);
230                  } else                                  // if (coeff[i] > 0)                  } else                                  /* if (coeff[i] > 0) */
231                  {                  {
232                          uint32_t level = coeff[i];                          uint32_t level = coeff[i];
233    
# Line 235  Line 238 
238                  sum ^= data[i];                  sum ^= data[i];
239          }          }
240    
241          // mismatch control          /*  mismatch control */
242    
243          if ((sum & 1) == 0) {          if ((sum & 1) == 0) {
244                  data[63] ^= 1;                  data[63] ^= 1;

Legend:
Removed from v.886  
changed lines
  Added in v.1053

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