522 |
{ |
{ |
523 |
int k; |
int k; |
524 |
|
|
|
pMB->mode = MODE_DIRECT; /* just to initialize it */ |
|
|
|
|
525 |
if (!Data->chroma) { |
if (!Data->chroma) { |
526 |
int dx = 0, dy = 0, b_dx = 0, b_dy = 0; |
int dx = 0, dy = 0, b_dx = 0, b_dy = 0; |
527 |
int32_t sum; |
int32_t sum; |
564 |
for (k = 0; k < 4; k++) { |
for (k = 0; k < 4; k++) { |
565 |
pMB->qmvs[k] = pMB->mvs[k] = Data->directmvF[k]; |
pMB->qmvs[k] = pMB->mvs[k] = Data->directmvF[k]; |
566 |
pMB->b_qmvs[k] = pMB->b_mvs[k] = Data->directmvB[k]; |
pMB->b_qmvs[k] = pMB->b_mvs[k] = Data->directmvB[k]; |
567 |
|
if (Data->qpel) { |
568 |
|
pMB->mvs[k].x /= 2; pMB->mvs[k].y /= 2; /* it's a hint for future searches */ |
569 |
|
pMB->b_mvs[k].x /= 2; pMB->b_mvs[k].y /= 2; |
570 |
|
} |
571 |
} |
} |
572 |
} |
} |
573 |
|
|
643 |
Data->directmvB[0].y |
Data->directmvB[0].y |
644 |
: Data->currentMV[1].y - Data->referencemv[0].y); |
: Data->currentMV[1].y - Data->referencemv[0].y); |
645 |
|
|
646 |
|
*best_sad = Data->iMinSAD[0]; |
647 |
|
|
648 |
return skip_sad; |
return skip_sad; |
649 |
} |
} |
650 |
|
|
939 |
const IMAGE * const b_refHV) |
const IMAGE * const b_refHV) |
940 |
{ |
{ |
941 |
uint32_t i, j; |
uint32_t i, j; |
942 |
int32_t best_sad, sad2; |
int32_t best_sad = 256*4096; |
943 |
|
int32_t sad2; |
944 |
uint32_t skip_sad; |
uint32_t skip_sad; |
945 |
|
|
946 |
const MACROBLOCK * const b_mbs = b_reference->mbs; |
const MACROBLOCK * const b_mbs = b_reference->mbs; |
1036 |
if ( (skip_sad < 2 * Data_d.iQuant * MAX_SAD00_FOR_SKIP ) |
if ( (skip_sad < 2 * Data_d.iQuant * MAX_SAD00_FOR_SKIP ) |
1037 |
&& ((100*best_sad)/(skip_sad+1) > FINAL_SKIP_THRESH) ) { |
&& ((100*best_sad)/(skip_sad+1) > FINAL_SKIP_THRESH) ) { |
1038 |
|
|
1039 |
if (!Data_d.chroma) { /* we still need to check chroma */ |
Data_d.chromaSAD = 0; /* green light for chroma check */ |
1040 |
|
|
1041 |
SkipDecisionB(pMB, &Data_d); |
SkipDecisionB(pMB, &Data_d); |
1042 |
|
|
1043 |
if (pMB->mode == MODE_DIRECT_NONE_MV) { /* skipped? */ |
if (pMB->mode == MODE_DIRECT_NONE_MV) { /* skipped? */ |
1044 |
pMB->sad16 = skip_sad; |
pMB->sad16 = skip_sad; |
1045 |
continue; |
continue; |
1046 |
} |
} |
|
} else { /* just SKIP */ |
|
|
pMB->mode = MODE_DIRECT_NONE_MV; |
|
|
pMB->sad16 = skip_sad; |
|
|
continue; |
|
|
} |
|
1047 |
} |
} |
1048 |
|
|
1049 |
if (frame->vop_flags & XVID_VOP_RD_BVOP) |
if (frame->vop_flags & XVID_VOP_RD_BVOP) |