[cvs] / xvidcore / src / prediction / mbprediction.c Repository:
ViewVC logotype

Diff of /xvidcore/src/prediction/mbprediction.c

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

revision 1.14, Mon Mar 22 22:36:24 2004 UTC revision 1.14.2.2, Fri Jun 4 11:54:42 2004 UTC
# Line 184  Line 184 
184                  break;                  break;
185          }          }
186    
187          /*          /* determine ac prediction direction & ac/dc predictor place rescaled ac/dc
188           * determine ac prediction direction & ac/dc predictor place rescaled ac/dc           * predictions into predictors[] for later use */
          * predictions into predictors[] for later use  
          */  
   
189          if (abs(pLeft[0] - pDiag[0]) < abs(pDiag[0] - pTop[0])) {          if (abs(pLeft[0] - pDiag[0]) < abs(pDiag[0] - pTop[0])) {
190                  *acpred_direction = 1;  /* vertical */                  *acpred_direction = 1;  /* vertical */
191                  predictors[0] = DIV_DIV(pTop[0], iDcScaler);                  predictors[0] = DIV_DIV(pTop[0], iDcScaler);
# Line 209  Line 206 
206     store current coeffs to pred_values[] for future prediction     store current coeffs to pred_values[] for future prediction
207  */  */
208    
209    /* Up to this version, no DC clipping was performed, so we try to be backward
210     * compatible to avoid artifacts */
211    #define BS_VERSION_BUGGY_DC_CLIPPING 34
212    
213  void  void
214  add_acdc(MACROBLOCK * pMB,  add_acdc(MACROBLOCK * pMB,
215                   uint32_t block,                   uint32_t block,
216                   int16_t dct_codes[64],                   int16_t dct_codes[64],
217                   uint32_t iDcScaler,                   uint32_t iDcScaler,
218                   int16_t predictors[8])                   int16_t predictors[8],
219                     const int bsversion)
220  {  {
221          uint8_t acpred_direction = pMB->acpred_directions[block];          uint8_t acpred_direction = pMB->acpred_directions[block];
222          int16_t *pCurrent = pMB->pred_values[block];          int16_t *pCurrent = pMB->pred_values[block];
# Line 225  Line 226 
226    
227          dct_codes[0] += predictors[0];  /* dc prediction */          dct_codes[0] += predictors[0];  /* dc prediction */
228          pCurrent[0] = dct_codes[0] * iDcScaler;          pCurrent[0] = dct_codes[0] * iDcScaler;
229            if (!bsversion || bsversion > BS_VERSION_BUGGY_DC_CLIPPING) {
230                    pCurrent[0] = CLIP(pCurrent[0], -2048, 2047);
231            }
232    
233          if (acpred_direction == 1) {          if (acpred_direction == 1) {
234                  for (i = 1; i < 8; i++) {                  for (i = 1; i < 8; i++) {
# Line 281  Line 285 
285          /* store current coeffs to pred_values[] for future prediction */          /* store current coeffs to pred_values[] for future prediction */
286    
287          pCurrent[0] = qcoeff[0] * iDcScaler;          pCurrent[0] = qcoeff[0] * iDcScaler;
288            pCurrent[0] = CLIP(pCurrent[0], -2048, 2047);
289          for (i = 1; i < 8; i++) {          for (i = 1; i < 8; i++) {
290                  pCurrent[i] = qcoeff[i];                  pCurrent[i] = qcoeff[i];
291                  pCurrent[i + 7] = qcoeff[i * 8];                  pCurrent[i + 7] = qcoeff[i * 8];
# Line 337  Line 342 
342    
343          /* store current coeffs to pred_values[] for future prediction */          /* store current coeffs to pred_values[] for future prediction */
344          pCurrent[0] = qcoeff[0] * iDcScaler;          pCurrent[0] = qcoeff[0] * iDcScaler;
345            pCurrent[0] = CLIP(pCurrent[0], -2048, 2047);
346          for (i = 1; i < 8; i++) {          for (i = 1; i < 8; i++) {
347                  pCurrent[i] = qcoeff[i];                  pCurrent[i] = qcoeff[i];
348                  pCurrent[i + 7] = qcoeff[i * 8];                  pCurrent[i + 7] = qcoeff[i * 8];

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

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