[XviD-devel] GME speedup

Christoph Lampert chl at math.uni-bonn.de
Fri Dec 12 08:41:12 CET 2003


On Fri, 12 Dec 2003, Antonin Misek wrote:
> I studied the function estimation_gmc.c/GlobalMotionEstRefine more and
> prepared new version. The change is relatively small. Output is very similar
> to original. But it uses about 30% less calls of estimation_gmc.c/globalSAD.
> It is tested with MSVC and ARCH_IS_GENERIC without ProcesorPack (I cannot
> install it, it breaks compilation of my other project).
> 
> Sorry Gruel for my last mail. I now understand that the specific part of
> code is not bug but hack.

Hi Toni,

why do you use   ##var  in the macro? Is there any reason simply "var"
isn't enough?

gruel



> 	int direction=4096,oldDirection;
> 
> #define TEST_ONE_CHANGE(var,dir)\
> 	if ((!direction)&&(dir*2>oldDirection)) break;\
> 	##var--;\
> 	if ((gmcSAD = globalSAD(&bestwp, pParam, pMBs, current, pRef, pCurr,
> GMCblock))<gmcminSAD)\
> 	{ \
> 		gmcminSAD = gmcSAD;\
> 		direction |= dir;\
> 	} else {\
> 		##var+=2;\
> 		if ((gmcSAD = globalSAD(&bestwp, pParam, pMBs, current, pRef, pCurr,
> GMCblock))<gmcminSAD)\
> 		{ \
> 			gmcminSAD = gmcSAD;\
> 			direction |= dir*2;\
> 		} else {\
> 			##var--;}\
> 	}
> 
> 	do {
> 		oldDirection=direction;
> 		direction = 0;
> 		TEST_ONE_CHANGE(bestwp.duv[0].x,1);
> 		TEST_ONE_CHANGE(bestwp.duv[0].y,4);
> 		TEST_ONE_CHANGE(bestwp.duv[1].x,16);
> 		TEST_ONE_CHANGE(bestwp.duv[1].y,64);
> 		TEST_ONE_CHANGE(bestwp.duv[2].x,256);
> 		TEST_ONE_CHANGE(bestwp.duv[2].y,1024);
> 	} while (direction);
> 
> 
> _______________________________________________
> XviD-devel mailing list
> XviD-devel at xvid.org
> http://list.xvid.org/mailman/listinfo/xvid-devel
> 



More information about the XviD-devel mailing list