[FFmpeg-cvslog] r30847 - trunk/libswscale/swscale_template.c
michael
subversion
Fri Mar 5 22:39:27 CET 2010
Author: michael
Date: Fri Mar 5 22:39:27 2010
New Revision: 30847
Log:
try to avoid returning odd slices.
Modified:
trunk/libswscale/swscale_template.c
Modified: trunk/libswscale/swscale_template.c
==============================================================================
--- trunk/libswscale/swscale_template.c Fri Mar 5 21:15:16 2010 (r30846)
+++ trunk/libswscale/swscale_template.c Fri Mar 5 22:39:27 2010 (r30847)
@@ -2651,8 +2651,10 @@ static int RENAME(swScale)(SwsContext *c
unsigned char *aDest=(CONFIG_SWSCALE_ALPHA && alpPixBuf) ? dst[3]+dstStride[3]*dstY : NULL;
const int firstLumSrcY= vLumFilterPos[dstY]; //First line needed as input
+ const int firstLumSrcY2= vLumFilterPos[FFMIN(dstY | ((1<<c->chrDstVSubSample) - 1), dstH-1)];
const int firstChrSrcY= vChrFilterPos[chrDstY]; //First line needed as input
int lastLumSrcY= firstLumSrcY + vLumFilterSize -1; // Last line needed as input
+ int lastLumSrcY2=firstLumSrcY2+ vLumFilterSize -1; // Last line needed as input
int lastChrSrcY= firstChrSrcY + vChrFilterSize -1; // Last line needed as input
int enough_lines;
@@ -2669,7 +2671,8 @@ static int RENAME(swScale)(SwsContext *c
firstChrSrcY, lastChrSrcY, lastInChrBuf);
// Do we have enough lines in this slice to output the dstY line
- enough_lines = lastLumSrcY < srcSliceY + srcSliceH && lastChrSrcY < -((-srcSliceY - srcSliceH)>>c->chrSrcVSubSample);
+ enough_lines = lastLumSrcY2 < srcSliceY + srcSliceH && lastChrSrcY < -((-srcSliceY - srcSliceH)>>c->chrSrcVSubSample);
+
if (!enough_lines) {
lastLumSrcY = srcSliceY + srcSliceH - 1;
lastChrSrcY = chrSrcSliceY + chrSrcSliceH - 1;
More information about the ffmpeg-cvslog
mailing list