[XviD-devel] my small GME "research"

Antonin Misek tonda.misek at post.cz
Thu Dec 18 17:02:56 CET 2003


Hi all,
I created "insane" GlobalMotionEstRefine method for comparison. It tests all
neighbouring points. Here are results (stefan) (GENERIC):
-i stefan.yuv -type 0 -w 352 -h 240 -single -zq 0 4.0 -o stefan.avi -quality
6 -stats

Without GMC:
Tot: enctime(ms) =9657.00,               length(bytes) = 3946402
Avg: enctime(ms) =  32.19, fps =  31.07, length(bytes) =   13154, psnr y =
38.33, psnr u = 40.54, psnr v = 40.55

Normal:
Tot: enctime(ms) =26906.00,               length(bytes) = 3837093
Avg: enctime(ms) =  89.69, fps =  11.15, length(bytes) =   12790, psnr y =
38.33, psnr u = 40.57, psnr v = 40.56

Insane:
Tot: enctime(ms) =669062.00,               length(bytes) = 3773630
Avg: enctime(ms) =2230.21, fps =   0.45, length(bytes) =   12578, psnr y =
38.33, psnr u = 40.58, psnr v = 40.56

method   spared size %      speed koeficient
Without:          0                         1
Normal:          2.8                      2.78
Insane:           4.4                      69


Perhaps results are interesting for someone :-)

TonyMi

	int i,j,k,oldDirection;

	direction=-1;
	do {
		oldDirection=direction;
		direction = 0;
		centerwp=bestwp;
		for (i=0;i<729;i++)
		{
			if (oldDirection!=-1)
			{
				k=0;
				for (j=1;j<244;j*=3)
				{
					if (((oldDirection/j)%3!=1)&&((oldDirection/j)%3==((i/j)%3)))
					{
						k+=1;
						break;
					}
				}
				if (k==0)
					continue;
			}
			currwp=centerwp;
			currwp.duv[0].x+=i%3-1;
			currwp.duv[0].y+=(i/3)%3-1;
			currwp.duv[1].x+=(i/9)%3-1;
			currwp.duv[1].y+=(i/27)%3-1;
			currwp.duv[2].x+=(i/81)%3-1;
			currwp.duv[2].y+=(i/243)%3-1;
			if ((gmcSAD = globalSAD(&currwp, pParam, pMBs, current, pRef, pCurr,
GMCblock))<gmcminSAD)
			{
				bestwp=currwp;
				gmcminSAD = gmcSAD;
				direction = i;
			}
		}
	} while (direction);




More information about the XviD-devel mailing list