810 |
} |
} |
811 |
|
|
812 |
static void |
static void |
813 |
|
SearchInterpolate_final_fast(const int x, const int y, |
814 |
|
const uint32_t MotionFlags, |
815 |
|
const MBParam * const pParam, |
816 |
|
int32_t * const best_sad, |
817 |
|
SearchData * const Data) |
818 |
|
{ |
819 |
|
/* qpel refinement */ |
820 |
|
if (Data->qpel) { |
821 |
|
Data->qpel_precision = 1; |
822 |
|
get_range(&Data->min_dx, &Data->max_dx, &Data->min_dy, &Data->max_dy, |
823 |
|
x, y, 4, pParam->width, pParam->height, Data->iFcode, 2); |
824 |
|
|
825 |
|
Data->currentQMV[0].x = 2 * Data->currentMV[0].x; |
826 |
|
Data->currentQMV[0].y = 2 * Data->currentMV[0].y; |
827 |
|
Data->currentQMV[1].x = 2 * Data->currentMV[1].x; |
828 |
|
Data->currentQMV[1].y = 2 * Data->currentMV[1].y; |
829 |
|
} |
830 |
|
} |
831 |
|
|
832 |
|
static void |
833 |
ModeDecision_BVOP_SAD(const SearchData * const Data_d, |
ModeDecision_BVOP_SAD(const SearchData * const Data_d, |
834 |
const SearchData * const Data_b, |
const SearchData * const Data_b, |
835 |
const SearchData * const Data_f, |
const SearchData * const Data_f, |
1103 |
&Data_i, Data_f.currentMV[0], Data_b.currentMV[0]); |
&Data_i, Data_f.currentMV[0], Data_b.currentMV[0]); |
1104 |
|
|
1105 |
if (((Data_i.iMinSAD[0] < best_sad +(best_sad>>3)) && !(frame->motion_flags&XVID_ME_FAST_MODEINTERPOLATE)) |
if (((Data_i.iMinSAD[0] < best_sad +(best_sad>>3)) && !(frame->motion_flags&XVID_ME_FAST_MODEINTERPOLATE)) |
1106 |
|| Data_i.iMinSAD[0] <= best_sad) |
|| Data_i.iMinSAD[0] <= best_sad) { |
1107 |
|
|
1108 |
SearchInterpolate_final(i, j, frame->motion_flags, pParam, &best_sad, &Data_i); |
SearchInterpolate_final(i, j, frame->motion_flags, pParam, &best_sad, &Data_i); |
1109 |
|
} |
1110 |
|
else { |
1111 |
|
SearchInterpolate_final_fast(i, j, frame->motion_flags, pParam, &best_sad, &Data_i); |
1112 |
|
} |
1113 |
|
|
1114 |
if (Data_d.iMinSAD[0] <= 2*best_sad) |
if (Data_d.iMinSAD[0] <= 2*best_sad) |
1115 |
if ((!(frame->motion_flags&XVID_ME_SKIP_DELTASEARCH) && (best_sad > 750)) |
if ((!(frame->motion_flags&XVID_ME_SKIP_DELTASEARCH) && (best_sad > 750)) |