63 |
filter = ((fx & 1) << 1) | (fy & 1); |
filter = ((fx & 1) << 1) | (fy & 1); |
64 |
|
|
65 |
if (filter != 0) { |
if (filter != 0) { |
66 |
f_refu = data->RefQ; |
f_refu = data->RefQ + 64; |
67 |
f_refv = data->RefQ + 8; |
f_refv = data->RefQ + 64 + 8; |
68 |
if (data->chromaX != fx || data->chromaY != fy) { |
if (data->chromaX != fx || data->chromaY != fy) { |
69 |
interpolate8x8_halfpel[filter](f_refu, data->RefP[4] + offset, stride, data->rounding); |
interpolate8x8_halfpel[filter](f_refu, data->RefP[4] + offset, stride, data->rounding); |
70 |
interpolate8x8_halfpel[filter](f_refv, data->RefP[5] + offset, stride, data->rounding); |
interpolate8x8_halfpel[filter](f_refv, data->RefP[5] + offset, stride, data->rounding); |
79 |
filter = ((bx & 1) << 1) | (by & 1); |
filter = ((bx & 1) << 1) | (by & 1); |
80 |
|
|
81 |
if (filter != 0) { |
if (filter != 0) { |
82 |
b_refu = data->RefQ + 16; |
b_refu = data->RefQ + 64 + 16; |
83 |
b_refv = data->RefQ + 24; |
b_refv = data->RefQ + 64 + 24; |
84 |
if (data->b_chromaX != bx || data->b_chromaY != by) { |
if (data->b_chromaX != bx || data->b_chromaY != by) { |
85 |
interpolate8x8_halfpel[filter](b_refu, data->b_RefP[4] + offset, stride, data->rounding); |
interpolate8x8_halfpel[filter](b_refu, data->b_RefP[4] + offset, stride, data->rounding); |
86 |
interpolate8x8_halfpel[filter](b_refv, data->b_RefP[5] + offset, stride, data->rounding); |
interpolate8x8_halfpel[filter](b_refv, data->b_RefP[5] + offset, stride, data->rounding); |
611 |
return *Data->iMinSAD; /* skipped */ |
return *Data->iMinSAD; /* skipped */ |
612 |
} |
} |
613 |
|
|
|
*Data->iMinSAD += Data->lambda16; |
|
614 |
skip_sad = 4*MAX(MAX(Data->iMinSAD[1],Data->iMinSAD[2]), MAX(Data->iMinSAD[3],Data->iMinSAD[4])); |
skip_sad = 4*MAX(MAX(Data->iMinSAD[1],Data->iMinSAD[2]), MAX(Data->iMinSAD[3],Data->iMinSAD[4])); |
615 |
if (Data->chroma) skip_sad += Data->chromaSAD; |
if (Data->chroma) skip_sad += Data->chromaSAD; |
616 |
|
|
626 |
xvid_me_SubpelRefine(Data, CheckCandidate, 0); |
xvid_me_SubpelRefine(Data, CheckCandidate, 0); |
627 |
} |
} |
628 |
|
|
629 |
|
*Data->iMinSAD += Data->lambda16; |
630 |
*best_sad = *Data->iMinSAD; |
*best_sad = *Data->iMinSAD; |
631 |
|
|
632 |
if (Data->qpel || b_mb->mode == MODE_INTER4V) pMB->mode = MODE_DIRECT; |
if (Data->qpel || b_mb->mode == MODE_INTER4V) pMB->mode = MODE_DIRECT; |