[cvs] / xvidcore / src / motion / estimation_common.c Repository:
ViewVC logotype

Diff of /xvidcore/src/motion/estimation_common.c

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

revision 1.2, Mon Mar 22 22:36:24 2004 UTC revision 1.2.2.3, Tue Oct 12 19:30:14 2004 UTC
# Line 323  Line 323 
323    
324          unsigned int * const iDirection = &data->dir;          unsigned int * const iDirection = &data->dir;
325    
326          do {          for (;;) {
327                  *iDirection = 0;                  *iDirection = 0;
328                  if (bDirection & 1) CHECK_CANDIDATE(x - iDiamondSize, y, 1);                  if (bDirection & 1) CHECK_CANDIDATE(x - iDiamondSize, y, 1);
329                  if (bDirection & 2) CHECK_CANDIDATE(x + iDiamondSize, y, 2);                  if (bDirection & 2) CHECK_CANDIDATE(x + iDiamondSize, y, 2);
330                  if (bDirection & 4) CHECK_CANDIDATE(x, y - iDiamondSize, 4);                  if (bDirection & 4) CHECK_CANDIDATE(x, y - iDiamondSize, 4);
331                  if (bDirection & 8) CHECK_CANDIDATE(x, y + iDiamondSize, 8);                  if (bDirection & 8) CHECK_CANDIDATE(x, y + iDiamondSize, 8);
332    
333                  /* now we're doing diagonal checks near our candidate */                  if (*iDirection == 0)
334                            break;
335    
336                  if (*iDirection) {              /* checking if anything found */                  /* now we're doing diagonal checks near our candidate */
337                          bDirection = *iDirection;                          bDirection = *iDirection;
                         *iDirection = 0;  
338                          x = data->currentMV->x; y = data->currentMV->y;                          x = data->currentMV->x; y = data->currentMV->y;
339                          if (bDirection & 3) {   /* our candidate is left or right */                          if (bDirection & 3) {   /* our candidate is left or right */
340                                  CHECK_CANDIDATE(x, y + iDiamondSize, 8);                                  CHECK_CANDIDATE(x, y + iDiamondSize, 8);
# Line 343  Line 343 
343                                  CHECK_CANDIDATE(x + iDiamondSize, y, 2);                                  CHECK_CANDIDATE(x + iDiamondSize, y, 2);
344                                  CHECK_CANDIDATE(x - iDiamondSize, y, 1);                                  CHECK_CANDIDATE(x - iDiamondSize, y, 1);
345                          }                          }
346                          bDirection += *iDirection;                  bDirection |= *iDirection;
347                          x = data->currentMV->x; y = data->currentMV->y;                          x = data->currentMV->x; y = data->currentMV->y;
348                  }                  }
349          }          }
         while (*iDirection);  
 }  
350    
351  void  void
352  xvid_me_SubpelRefine(SearchData * const data, CheckFunc * const CheckCandidate)  xvid_me_SubpelRefine(SearchData * const data, CheckFunc * const CheckCandidate)
# Line 427  Line 425 
425                  CHECK_CANDIDATE(xo-1, yo, 0);                  CHECK_CANDIDATE(xo-1, yo, 0);
426                  CHECK_CANDIDATE(xo+1, yo, 0);                  CHECK_CANDIDATE(xo+1, yo, 0);
427    
428                  if(best_sad < data->iMinSAD2) return;                  if(best_sad <= data->iMinSAD2) return;
429    
430                  if(data->currentQMV[0].y == data->currentQMV2.y) {                  if(data->currentQMV[0].y == data->currentQMV2.y) {
431                          CHECK_CANDIDATE(xo-1, (yo+yo2)>>1, 0);                          CHECK_CANDIDATE(xo-1, (yo+yo2)>>1, 0);

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.2.2.3

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