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

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

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

revision 1.1.2.1, Tue Oct 7 13:02:35 2003 UTC revision 1.1.2.3, Sun Nov 30 16:13:16 2003 UTC
# Line 79  Line 79 
79  quant_mpeg_intra_c(int16_t * coeff,  quant_mpeg_intra_c(int16_t * coeff,
80                                     const int16_t * data,                                     const int16_t * data,
81                                     const uint32_t quant,                                     const uint32_t quant,
82                                     const uint32_t dcscalar)                                     const uint32_t dcscalar,
83                                       const uint16_t * mpeg_quant_matrices)
84  {  {
85          const uint32_t quantd = ((VM18P * quant) + (VM18Q / 2)) / VM18Q;          const uint32_t quantd = ((VM18P * quant) + (VM18Q / 2)) / VM18Q;
86          const uint32_t mult = multipliers[quant];          const uint32_t mult = multipliers[quant];
87          const int16_t *intra_matrix = get_intra_matrix();          const uint16_t *intra_matrix = get_intra_matrix(mpeg_quant_matrices);
         uint32_t sum = 0;  
88          int i;          int i;
89    
90          coeff[0] = DIV_DIV(data[0], (int32_t) dcscalar);          coeff[0] = DIV_DIV(data[0], (int32_t) dcscalar);
         sum += coeff[0];  
91    
92          for (i = 1; i < 64; i++) {          for (i = 1; i < 64; i++) {
93                  if (data[i] < 0) {                  if (data[i] < 0) {
# Line 96  Line 95 
95    
96                          level = ((level << 4) + (intra_matrix[i] >> 1)) / intra_matrix[i];                          level = ((level << 4) + (intra_matrix[i] >> 1)) / intra_matrix[i];
97                          level = ((level + quantd) * mult) >> SCALEBITS;                          level = ((level + quantd) * mult) >> SCALEBITS;
                         sum += level;  
98                          coeff[i] = -(int16_t) level;                          coeff[i] = -(int16_t) level;
99                  } else if (data[i] > 0) {                  } else if (data[i] > 0) {
100                          uint32_t level = data[i];                          uint32_t level = data[i];
101    
102                          level = ((level << 4) + (intra_matrix[i] >> 1)) / intra_matrix[i];                          level = ((level << 4) + (intra_matrix[i] >> 1)) / intra_matrix[i];
103                          level = ((level + quantd) * mult) >> SCALEBITS;                          level = ((level + quantd) * mult) >> SCALEBITS;
                         sum += level;  
104                          coeff[i] = level;                          coeff[i] = level;
105                  } else {                  } else {
106                          coeff[i] = 0;                          coeff[i] = 0;
107                  }                  }
108          }          }
109    
110          return(sum);          return(0);
111  }  }
112    
113  /* quantize inter-block  /* quantize inter-block
# Line 123  Line 120 
120  uint32_t  uint32_t
121  quant_mpeg_inter_c(int16_t * coeff,  quant_mpeg_inter_c(int16_t * coeff,
122                                     const int16_t * data,                                     const int16_t * data,
123                                     const uint32_t quant)                                     const uint32_t quant,
124                                       const uint16_t * mpeg_quant_matrices)
125  {  {
126          const uint32_t mult = multipliers[quant];          const uint32_t mult = multipliers[quant];
127          const int16_t *inter_matrix = get_inter_matrix();          const uint16_t *inter_matrix = get_inter_matrix(mpeg_quant_matrices);
128          uint32_t sum = 0;          uint32_t sum = 0;
129          int i;          int i;
130    
# Line 162  Line 160 
160  dequant_mpeg_intra_c(int16_t * data,  dequant_mpeg_intra_c(int16_t * data,
161                                           const int16_t * coeff,                                           const int16_t * coeff,
162                                           const uint32_t quant,                                           const uint32_t quant,
163                                           const uint32_t dcscalar)                                           const uint32_t dcscalar,
164                                             const uint16_t * mpeg_quant_matrices)
165  {  {
166          const int16_t *intra_matrix = get_intra_matrix();          const uint16_t *intra_matrix = get_intra_matrix(mpeg_quant_matrices);
167          int i;          int i;
168    
169          data[0] = coeff[0] * dcscalar;          data[0] = coeff[0] * dcscalar;
# Line 201  Line 200 
200  uint32_t  uint32_t
201  dequant_mpeg_inter_c(int16_t * data,  dequant_mpeg_inter_c(int16_t * data,
202                                           const int16_t * coeff,                                           const int16_t * coeff,
203                                           const uint32_t quant)                                           const uint32_t quant,
204                                             const uint16_t * mpeg_quant_matrices)
205  {  {
206          uint32_t sum = 0;          uint32_t sum = 0;
207          const int16_t *inter_matrix = get_inter_matrix();          const uint16_t *inter_matrix = get_inter_matrix(mpeg_quant_matrices);
208          int i;          int i;
209    
210          for (i = 0; i < 64; i++) {          for (i = 0; i < 64; i++) {

Legend:
Removed from v.1.1.2.1  
changed lines
  Added in v.1.1.2.3

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