574 |
b_dx = (b_dx >> 3) + roundtab_76[b_dx & 0xf]; |
b_dx = (b_dx >> 3) + roundtab_76[b_dx & 0xf]; |
575 |
|
|
576 |
sum = sad8bi(pCur->u + 8 * x + 8 * y * stride, |
sum = sad8bi(pCur->u + 8 * x + 8 * y * stride, |
577 |
f_Ref->u + (y*8 + dy/2) * stride + x*8 + dx/2, |
f_Ref->u + ((int)y*8 + dy/2) * (int)stride + (int)x*8 + dx/2, |
578 |
b_Ref->u + (y*8 + b_dy/2) * stride + x*8 + b_dx/2, |
b_Ref->u + ((int)y*8 + b_dy/2) * (int)stride + (int)x*8 + b_dx/2, |
579 |
stride); |
stride); |
580 |
|
|
581 |
if (sum >= MAX_CHROMA_SAD_FOR_SKIP * (int)Data->iQuant) return; /* no skip */ |
if (sum >= MAX_CHROMA_SAD_FOR_SKIP * (int)Data->iQuant) return; /* no skip */ |
582 |
|
|
583 |
sum += sad8bi(pCur->v + 8*x + 8 * y * stride, |
sum += sad8bi(pCur->v + 8*x + 8 * y * stride, |
584 |
f_Ref->v + (y*8 + dy/2) * stride + x*8 + dx/2, |
f_Ref->v + ((int)y*8 + dy/2) * (int)stride + (int)x*8 + dx/2, |
585 |
b_Ref->v + (y*8 + b_dy/2) * stride + x*8 + b_dx/2, |
b_Ref->v + ((int)y*8 + b_dy/2) * (int)stride + (int)x*8 + b_dx/2, |
586 |
stride); |
stride); |
587 |
|
|
588 |
if (sum >= MAX_CHROMA_SAD_FOR_SKIP * (int)Data->iQuant) return; /* no skip */ |
if (sum >= MAX_CHROMA_SAD_FOR_SKIP * (int)Data->iQuant) return; /* no skip */ |
678 |
if (pMB->mode == MODE_DIRECT_NONE_MV) return *Data->iMinSAD; /* skipped */ |
if (pMB->mode == MODE_DIRECT_NONE_MV) return *Data->iMinSAD; /* skipped */ |
679 |
} |
} |
680 |
|
|
|
*Data->iMinSAD += Data->lambda16; |
|
681 |
skip_sad = *Data->iMinSAD; |
skip_sad = *Data->iMinSAD; |
682 |
|
|
683 |
if (!(MotionFlags & XVID_ME_SKIP_DELTASEARCH)) { |
if (!(MotionFlags & XVID_ME_SKIP_DELTASEARCH)) { |
690 |
xvid_me_SubpelRefine(Data, CheckCandidate); |
xvid_me_SubpelRefine(Data, CheckCandidate); |
691 |
} |
} |
692 |
|
|
693 |
|
*Data->iMinSAD += Data->lambda16; |
694 |
*best_sad = *Data->iMinSAD; |
*best_sad = *Data->iMinSAD; |
695 |
|
|
696 |
if (Data->qpel || b_mb->mode == MODE_INTER4V) pMB->mode = MODE_DIRECT; |
if (Data->qpel || b_mb->mode == MODE_INTER4V) pMB->mode = MODE_DIRECT; |