--- trunk/xvidcore/src/motion/motion_est.c 2002/06/12 20:38:41 195 +++ trunk/xvidcore/src/motion/motion_est.c 2002/06/30 10:46:29 252 @@ -2521,20 +2521,39 @@ mb->b_mvs[0].y = 0; continue; } + /* force F_SAD16 + f_sad16 = 100; + b_sad16 = 65535; + + mb->mode = MODE_FORWARD; + mb->mvs[0].x = 1; + mb->mvs[0].y = 1; + mb->b_mvs[0].x = 1; + mb->b_mvs[0].y = 1; + continue; + ^^ force F_SAD16 */ + // forward search f_sad16 = SEARCH16(f_ref->y, f_refH->y, f_refV->y, f_refHV->y, &frame->image, i, j, frame->motion_flags, - frame->quant, frame->fcode, pParam, f_mbs, - f_mbs /* todo */ , + frame->quant, frame->fcode, pParam, + f_mbs, f_mbs, /* todo */ &mb->mvs[0], &pmv_dontcare); // ignore pmv // backward search - b_sad16 = SEARCH16(b_ref->y, b_refH->y, b_refV->y, b_refHV->y, &frame->image, i, j, frame->motion_flags, frame->quant, frame->bcode, pParam, b_mbs, b_mbs, /* todo */ - &mb->b_mvs[0], &pmv_dontcare); // ignore pmv + b_sad16 = SEARCH16(b_ref->y, b_refH->y, b_refV->y, b_refHV->y, + &frame->image, i, j, frame->motion_flags, + frame->quant, frame->bcode, pParam, + b_mbs, b_mbs, /* todo */ + &mb->b_mvs[0], &pmv_dontcare); // ignore pmv // interpolate search (simple, but effective) + i_sad16 = 65535; + + /* + x/y range somewhat buggy i_sad16 = sad16bi_c(frame->image.y + i * 16 + j * 16 * edged_width, get_ref(f_ref->y, f_refH->y, f_refV->y, f_refHV->y, @@ -2546,6 +2565,7 @@ mb->b_mvs[0].x, edged_width), edged_width); + */ // TODO: direct search // predictor + range of [-32,32]