341 |
gmc->num_wp = nb_pts; |
gmc->num_wp = nb_pts; |
342 |
|
|
343 |
/* reduce the number of points, if possible */ |
/* reduce the number of points, if possible */ |
344 |
if (nb_pts<3 || (pts->duv[2].x==-pts->duv[1].y && pts->duv[2].y==pts->duv[1].x)) { |
if (nb_pts<2 || (pts->duv[2].x==0 && pts->duv[2].y==0 && pts->duv[1].x==0 && pts->duv[1].y==0 )) { |
345 |
if (nb_pts<2 || (pts->duv[1].x==0 && pts->duv[1].y==0)) { |
if (nb_pts<2 || (pts->duv[1].x==0 && pts->duv[1].y==0)) { |
346 |
if (nb_pts<1 || (pts->duv[0].x==0 && pts->duv[0].y==0)) { |
if (nb_pts<1 || (pts->duv[0].x==0 && pts->duv[0].y==0)) { |
347 |
nb_pts = 0; |
nb_pts = 0; |
350 |
} |
} |
351 |
else nb_pts = 2; |
else nb_pts = 2; |
352 |
} |
} |
|
else nb_pts = 3; |
|
353 |
|
|
354 |
/* now, nb_pts stores the actual number of points required for interpolation */ |
/* now, nb_pts stores the actual number of points required for interpolation */ |
355 |
|
|
379 |
gmc->dU[0] = 16*Ws + RDIV( 8*Ws*pts->duv[1].x, width ); /* dU/dx */ |
gmc->dU[0] = 16*Ws + RDIV( 8*Ws*pts->duv[1].x, width ); /* dU/dx */ |
380 |
gmc->dV[0] = RDIV( 8*Ws*pts->duv[1].y, width ); /* dV/dx */ |
gmc->dV[0] = RDIV( 8*Ws*pts->duv[1].y, width ); /* dV/dx */ |
381 |
|
|
|
/* disabled, because possibly buggy? */ |
|
|
|
|
|
#if 0 |
|
382 |
if (nb_pts==2) { |
if (nb_pts==2) { |
383 |
gmc->dU[1] = -gmc->dV[0]; /* -Sin */ |
gmc->dU[1] = -gmc->dV[0]; /* -Sin */ |
384 |
gmc->dV[1] = gmc->dU[0] ; /* Cos */ |
gmc->dV[1] = gmc->dU[0] ; /* Cos */ |
385 |
} |
} |
386 |
else |
else |
|
#endif |
|
387 |
{ |
{ |
388 |
const int Beta = log2bin(height-1); |
const int Beta = log2bin(height-1); |
389 |
const int Hs = 1<<Beta; |
const int Hs = 1<<Beta; |