Originally committed as revision 29451 to svn://svn.mplayerhq.hu/mplayer/trunk/libswscale
release/0.6
Ramiro Polla 16 years ago
parent fb91df397a
commit cbdc08d5a6
  1. 90
      libswscale/swscale_template.c

@ -2720,54 +2720,54 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s
lastChrSrcY = chrSrcSliceY + chrSrcSliceH - 1; lastChrSrcY = chrSrcSliceY + chrSrcSliceH - 1;
} }
/* printf("%d %d Last:%d %d LastInBuf:%d %d Index:%d %d Y:%d FSize: %d %d BSize: %d %d\n", /* printf("%d %d Last:%d %d LastInBuf:%d %d Index:%d %d Y:%d FSize: %d %d BSize: %d %d\n",
firstChrSrcY,firstLumSrcY,lastChrSrcY,lastLumSrcY, firstChrSrcY,firstLumSrcY,lastChrSrcY,lastLumSrcY,
lastInChrBuf,lastInLumBuf,chrBufIndex,lumBufIndex,dstY,vChrFilterSize,vLumFilterSize, lastInChrBuf,lastInLumBuf,chrBufIndex,lumBufIndex,dstY,vChrFilterSize,vLumFilterSize,
vChrBufSize, vLumBufSize);*/ vChrBufSize, vLumBufSize);*/
//Do horizontal scaling //Do horizontal scaling
while(lastInLumBuf < lastLumSrcY) while(lastInLumBuf < lastLumSrcY)
{ {
uint8_t *src1= src[0]+(lastInLumBuf + 1 - srcSliceY)*srcStride[0]; uint8_t *src1= src[0]+(lastInLumBuf + 1 - srcSliceY)*srcStride[0];
uint8_t *src2= src[3]+(lastInLumBuf + 1 - srcSliceY)*srcStride[3]; uint8_t *src2= src[3]+(lastInLumBuf + 1 - srcSliceY)*srcStride[3];
lumBufIndex++; lumBufIndex++;
//printf("%d %d %d %d\n", lumBufIndex, vLumBufSize, lastInLumBuf, lastLumSrcY); //printf("%d %d %d %d\n", lumBufIndex, vLumBufSize, lastInLumBuf, lastLumSrcY);
assert(lumBufIndex < 2*vLumBufSize); assert(lumBufIndex < 2*vLumBufSize);
assert(lastInLumBuf + 1 - srcSliceY < srcSliceH); assert(lastInLumBuf + 1 - srcSliceY < srcSliceH);
assert(lastInLumBuf + 1 - srcSliceY >= 0); assert(lastInLumBuf + 1 - srcSliceY >= 0);
//printf("%d %d\n", lumBufIndex, vLumBufSize); //printf("%d %d\n", lumBufIndex, vLumBufSize);
RENAME(hyscale)(c, lumPixBuf[ lumBufIndex ], dstW, src1, srcW, lumXInc, RENAME(hyscale)(c, lumPixBuf[ lumBufIndex ], dstW, src1, srcW, lumXInc,
flags, hLumFilter, hLumFilterPos, hLumFilterSize,
c->srcFormat, formatConvBuffer,
pal, 0);
if (CONFIG_SWSCALE_ALPHA && alpPixBuf)
RENAME(hyscale)(c, alpPixBuf[ lumBufIndex ], dstW, src2, srcW, lumXInc,
flags, hLumFilter, hLumFilterPos, hLumFilterSize, flags, hLumFilter, hLumFilterPos, hLumFilterSize,
c->srcFormat, formatConvBuffer, c->srcFormat, formatConvBuffer,
pal, 0); pal, 1);
if (CONFIG_SWSCALE_ALPHA && alpPixBuf) lastInLumBuf++;
RENAME(hyscale)(c, alpPixBuf[ lumBufIndex ], dstW, src2, srcW, lumXInc, }
flags, hLumFilter, hLumFilterPos, hLumFilterSize, while(lastInChrBuf < lastChrSrcY)
c->srcFormat, formatConvBuffer, {
pal, 1); uint8_t *src1= src[1]+(lastInChrBuf + 1 - chrSrcSliceY)*srcStride[1];
lastInLumBuf++; uint8_t *src2= src[2]+(lastInChrBuf + 1 - chrSrcSliceY)*srcStride[2];
} chrBufIndex++;
while(lastInChrBuf < lastChrSrcY) assert(chrBufIndex < 2*vChrBufSize);
{ assert(lastInChrBuf + 1 - chrSrcSliceY < (chrSrcSliceH));
uint8_t *src1= src[1]+(lastInChrBuf + 1 - chrSrcSliceY)*srcStride[1]; assert(lastInChrBuf + 1 - chrSrcSliceY >= 0);
uint8_t *src2= src[2]+(lastInChrBuf + 1 - chrSrcSliceY)*srcStride[2]; //FIXME replace parameters through context struct (some at least)
chrBufIndex++;
assert(chrBufIndex < 2*vChrBufSize); if (!(isGray(srcFormat) || isGray(dstFormat)))
assert(lastInChrBuf + 1 - chrSrcSliceY < (chrSrcSliceH)); RENAME(hcscale)(c, chrPixBuf[ chrBufIndex ], chrDstW, src1, src2, chrSrcW, chrXInc,
assert(lastInChrBuf + 1 - chrSrcSliceY >= 0); flags, hChrFilter, hChrFilterPos, hChrFilterSize,
//FIXME replace parameters through context struct (some at least) c->srcFormat, formatConvBuffer,
pal);
if (!(isGray(srcFormat) || isGray(dstFormat))) lastInChrBuf++;
RENAME(hcscale)(c, chrPixBuf[ chrBufIndex ], chrDstW, src1, src2, chrSrcW, chrXInc, }
flags, hChrFilter, hChrFilterPos, hChrFilterSize, //wrap buf index around to stay inside the ring buffer
c->srcFormat, formatConvBuffer, if (lumBufIndex >= vLumBufSize) lumBufIndex-= vLumBufSize;
pal); if (chrBufIndex >= vChrBufSize) chrBufIndex-= vChrBufSize;
lastInChrBuf++; if (!enough_lines)
}
//wrap buf index around to stay inside the ring buffer
if (lumBufIndex >= vLumBufSize) lumBufIndex-= vLumBufSize;
if (chrBufIndex >= vChrBufSize) chrBufIndex-= vChrBufSize;
if (!enough_lines)
break; //we can't output a dstY line so let's try with the next slice break; //we can't output a dstY line so let's try with the next slice
#if COMPILE_TEMPLATE_MMX #if COMPILE_TEMPLATE_MMX

Loading…
Cancel
Save