21 |
* along with this program ; if not, write to the Free Software |
* along with this program ; if not, write to the Free Software |
22 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
23 |
* |
* |
24 |
* $Id: estimation_pvop.c,v 1.1.2.3 2003-10-03 12:36:56 syskin Exp $ |
* $Id: estimation_pvop.c,v 1.1.2.7 2003-11-18 21:41:21 edgomez Exp $ |
25 |
* |
* |
26 |
****************************************************************************/ |
****************************************************************************/ |
27 |
|
|
384 |
pmv[0] = pmv[1] = pmv[2] = pmv[3] = zeroMV; |
pmv[0] = pmv[1] = pmv[2] = pmv[3] = zeroMV; |
385 |
psad[0] = 0; |
psad[0] = 0; |
386 |
psad[1] = psad[2] = psad[3] = MV_MAX_ERROR; |
psad[1] = psad[2] = psad[3] = MV_MAX_ERROR; |
387 |
|
return; |
388 |
} |
} |
389 |
|
|
390 |
/* if only one valid candidate preictor, the invalid candiates are set to the canidate */ |
/* if only one valid candidate preictor, the invalid candiates are set to the canidate */ |
391 |
if (num_cand == 1) { |
if (num_cand == 1) { |
392 |
pmv[0] = pmv[last_cand]; |
pmv[0] = pmv[last_cand]; |
393 |
psad[0] = psad[last_cand]; |
psad[0] = psad[last_cand]; |
394 |
|
return; |
395 |
} |
} |
396 |
|
|
397 |
if ((MVequal(pmv[1], pmv[2])) && (MVequal(pmv[1], pmv[3]))) { |
if ((MVequal(pmv[1], pmv[2])) && (MVequal(pmv[1], pmv[3]))) { |
398 |
pmv[0] = pmv[1]; |
pmv[0] = pmv[1]; |
399 |
psad[0] = MIN(MIN(psad[1], psad[2]), psad[3]); |
psad[0] = MIN(MIN(psad[1], psad[2]), psad[3]); |
400 |
|
return; |
401 |
} |
} |
402 |
|
|
403 |
/* set median, minimum */ |
/* set median, minimum */ |
828 |
pParam->width, pParam->height, Data->iFcode, 2, 0); |
pParam->width, pParam->height, Data->iFcode, 2, 0); |
829 |
Data->qpel_precision = 1; |
Data->qpel_precision = 1; |
830 |
if (MotionFlags & XVID_ME_QUARTERPELREFINE16) { |
if (MotionFlags & XVID_ME_QUARTERPELREFINE16) { |
831 |
|
*Data->iMinSAD2 = 256 * 4096; |
832 |
if(MotionFlags & XVID_ME_FASTREFINE16) |
if(MotionFlags & XVID_ME_FASTREFINE16) |
833 |
SubpelRefine_Fast(Data, CheckCandidate16_qpel); |
SubpelRefine_Fast(Data, CheckCandidate16_qpel); |
834 |
else |
else |
1014 |
MAX((&pMBs[x + (y-1) * pParam->mb_width])->sad16, |
MAX((&pMBs[x + (y-1) * pParam->mb_width])->sad16, |
1015 |
MAX((&pMBs[(x+1) + (y-1) * pParam->mb_width])->sad16, |
MAX((&pMBs[(x+1) + (y-1) * pParam->mb_width])->sad16, |
1016 |
prevMB->sad16))); |
prevMB->sad16))); |
|
} |
|
1017 |
} else { |
} else { |
1018 |
stat_thresh = MIN((&pMBs[(x-1) + y * pParam->mb_width])->sad16, |
stat_thresh = MIN((&pMBs[(x-1) + y * pParam->mb_width])->sad16, |
1019 |
MIN((&pMBs[x + (y-1) * pParam->mb_width])->sad16, |
MIN((&pMBs[x + (y-1) * pParam->mb_width])->sad16, |
1021 |
prevMB->sad16))); |
prevMB->sad16))); |
1022 |
} |
} |
1023 |
} |
} |
1024 |
|
} |
1025 |
|
|
1026 |
/* favorize (0,0) vector for cartoons */ |
/* favorize (0,0) vector for cartoons */ |
1027 |
if ((current->vop_flags & XVID_VOP_CARTOON) && |
if ((current->vop_flags & XVID_VOP_CARTOON) && |