[svn] / trunk / xvidcore / src / motion / estimation_rd_based_bvop.c Repository:
ViewVC logotype

Diff of /trunk/xvidcore/src/motion/estimation_rd_based_bvop.c

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

revision 1506, Sun Jul 18 11:51:44 2004 UTC revision 1564, Sun Dec 5 04:53:01 2004 UTC
# Line 17  Line 17 
17  #include "../bitstream/vlc_codes.h"  #include "../bitstream/vlc_codes.h"
18  #include "../dct/fdct.h"  #include "../dct/fdct.h"
19  #include "motion_inlines.h"  #include "motion_inlines.h"
 #include "../plugins/HVS_base.h"  
   
20    
21  /* rd = BITS_MULT*bits + LAMBDA*distortion */  /* rd = BITS_MULT*bits + LAMBDA*distortion */
22  #define LAMBDA          ( (int)(BITS_MULT*1.0) )  #define LAMBDA          ( (int)(BITS_MULT*1.0) )
# Line 162  Line 160 
160                  xc = x/2; yc = y/2;                  xc = x/2; yc = y/2;
161          }          }
162    
163          rd += BITS_MULT*d_mv_bits(x, y, data->predMV, data->iFcode, data->qpel^data->qpel_precision, 0);          rd += BITS_MULT*d_mv_bits(x, y, data->predMV, data->iFcode, data->qpel^data->qpel_precision);
164    
165          for(i = 0; i < 4; i++) {          for(i = 0; i < 4; i++) {
166                  int s = 8*((i&1) + (i>>1)*data->iEdgedWidth);                  int s = 8*((i&1) + (i>>1)*data->iEdgedWidth);
# Line 269  Line 267 
267          if (cbp)          if (cbp)
268                  rd += BITS_MULT * 6;                  rd += BITS_MULT * 6;
269          if (cbp || x != 0 || y != 0)          if (cbp || x != 0 || y != 0)
270                  rd += BITS_MULT * d_mv_bits(x, y, zeroMV, 1, 0, 0);                  rd += BITS_MULT * d_mv_bits(x, y, zeroMV, 1, 0);
271    
272          if (rd < *(data->iMinSAD)) {          if (rd < *(data->iMinSAD)) {
273                  *data->iMinSAD = rd;                  *data->iMinSAD = rd;
# Line 324  Line 322 
322                  xcb = xb/2; ycb = yb/2;                  xcb = xb/2; ycb = yb/2;
323          }          }
324    
325          rd += BITS_MULT * (d_mv_bits(xf, yf, data->predMV, data->iFcode, data->qpel^data->qpel_precision, 0)          rd += BITS_MULT * (d_mv_bits(xf, yf, data->predMV, data->iFcode, data->qpel^data->qpel_precision)
326                                          + d_mv_bits(xb, yb, data->bpredMV, data->iFcode, data->qpel^data->qpel_precision, 0));                                          + d_mv_bits(xb, yb, data->bpredMV, data->iFcode, data->qpel^data->qpel_precision));
327    
328    
329          for(i = 0; i < 4; i++) {          for(i = 0; i < 4; i++) {
# Line 377  Line 375 
375          Data->iMinSAD[0] = *best_sad;          Data->iMinSAD[0] = *best_sad;
376    
377          get_range(&Data->min_dx, &Data->max_dx, &Data->min_dy, &Data->max_dy,          get_range(&Data->min_dx, &Data->max_dx, &Data->min_dy, &Data->max_dy,
378                  x, y, 4, pParam->width, pParam->height, Data->iFcode, 1 + Data->qpel, 0);                  x, y, 4, pParam->width, pParam->height, Data->iFcode, 1 + Data->qpel);
379    
380          Data->qpel_precision = Data->qpel;          Data->qpel_precision = Data->qpel;
381    
# Line 420  Line 418 
418          Data->iMinSAD[0] = *best_sad;          Data->iMinSAD[0] = *best_sad;
419    
420          get_range(&Data->min_dx, &Data->max_dx, &Data->min_dy, &Data->max_dy,          get_range(&Data->min_dx, &Data->max_dx, &Data->min_dy, &Data->max_dy,
421                  x, y, 4, pParam->width, pParam->height, Data->iFcode, 1 + Data->qpel, 0);                  x, y, 4, pParam->width, pParam->height, Data->iFcode, 1 + Data->qpel);
422    
423          Data->qpel_precision = Data->qpel;          Data->qpel_precision = Data->qpel;
424    
# Line 516  Line 514 
514                  case MODE_BACKWARD:                  case MODE_BACKWARD:
515                          rd = b_rd = SearchBF_RD(x, y, MotionFlags, pParam, &best_rd, Data_b);                          rd = b_rd = SearchBF_RD(x, y, MotionFlags, pParam, &best_rd, Data_b);
516                          break;                          break;
517                    default:
518                  case MODE_INTERPOLATE:                  case MODE_INTERPOLATE:
519                          rd = i_rd = SearchInterpolate_RD(x, y, MotionFlags, pParam, &best_rd, Data_i);                          rd = i_rd = SearchInterpolate_RD(x, y, MotionFlags, pParam, &best_rd, Data_i);
520                          break;                          break;
# Line 577  Line 576 
576                  }                  }
577                  pMB->mvs[0] = *Data_f->currentMV;                  pMB->mvs[0] = *Data_f->currentMV;
578                  pMB->cbp = *Data_f->cbp;                  pMB->cbp = *Data_f->cbp;
579                    pMB->b_mvs[0] = *Data_b->currentMV; /* hint for future searches */
580                  break;                  break;
581    
582          case MODE_BACKWARD:          case MODE_BACKWARD:
# Line 592  Line 592 
592                  }                  }
593                  pMB->b_mvs[0] = *Data_b->currentMV;                  pMB->b_mvs[0] = *Data_b->currentMV;
594                  pMB->cbp = *Data_b->cbp;                  pMB->cbp = *Data_b->cbp;
595                    pMB->mvs[0] = *Data_f->currentMV; /* hint for future searches */
596                  break;                  break;
597    
598    

Legend:
Removed from v.1506  
changed lines
  Added in v.1564

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