--- encoder.c 2003/11/09 20:49:21 1.95.2.49 +++ encoder.c 2003/11/16 17:41:03 1.95.2.53 @@ -21,7 +21,7 @@ * along with this program ; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: encoder.c,v 1.95.2.49 2003/11/09 20:49:21 edgomez Exp $ + * $Id: encoder.c,v 1.95.2.53 2003/11/16 17:41:03 edgomez Exp $ * ****************************************************************************/ @@ -188,7 +188,9 @@ pcreate.zones = pEnc->zones; pcreate.width = pEnc->mbParam.width; pcreate.height = pEnc->mbParam.height; - pcreate.fincr = pEnc->mbParam.fincr; + pcreate.mb_width = pEnc->mbParam.mb_width; + pcreate.mb_height = pEnc->mbParam.mb_height; + pcreate.fincr = pEnc->mbParam.fincr; pcreate.fbase = pEnc->mbParam.fbase; pcreate.param = create->plugins[n].param; @@ -1072,8 +1074,9 @@ type = I_VOP; }else{ type = MEanalysis(&pEnc->reference->image, pEnc->current, - &pEnc->mbParam, pEnc->mbParam.iMaxKeyInterval, - pEnc->iFrameNum, pEnc->bframenum_tail, xFrame->bframe_threshold); + &pEnc->mbParam, pEnc->mbParam.iMaxKeyInterval, + pEnc->iFrameNum, pEnc->bframenum_tail, xFrame->bframe_threshold, + (pEnc->bframes) ? pEnc->bframes[pEnc->bframenum_head]->mbs: NULL); } } @@ -1500,24 +1503,24 @@ if (current->motion_flags & XVID_ME_GME_REFINE) { gmcval = GlobalMotionEstRefine(¤t->warp, - current->mbs, pParam, - current, reference, - ¤t->image, - &reference->image, - &pEnc->vInterH, - &pEnc->vInterV, - &pEnc->vInterHV); - gmcval += /*current->quant */ 2 * (int)(pParam->mb_width*pParam->mb_height); + current->mbs, pParam, + current, reference, + ¤t->image, + &reference->image, + &pEnc->vInterH, + &pEnc->vInterV, + &pEnc->vInterHV); + } else { + gmcval = globalSAD(¤t->warp, pParam, current->mbs, + current, + &reference->image, + ¤t->image, + pEnc->vGMC.y); } - gmcval = globalSAD(¤t->warp, pParam, current->mbs, - current, - &reference->image, - ¤t->image, - pEnc->vGMC.y); gmcval += /*current->quant*/ 2 * (int)(pParam->mb_width*pParam->mb_height); -/* 1st '3': 3 warpoints, 2nd '3': 16th pel res (2<<3) */ + /* 1st '3': 3 warpoints, 2nd '3': 16th pel res (2<<3) */ generate_GMCparameters( 3, 3, ¤t->warp, pParam->width, pParam->height, ¤t->new_gmc_data);