diff options
-rw-r--r-- | postproc/swscale.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/postproc/swscale.c b/postproc/swscale.c index b0dac620b4..25f94e02ca 100644 --- a/postproc/swscale.c +++ b/postproc/swscale.c @@ -1928,7 +1928,10 @@ SwsContext *sws_getContext(int srcW, int srcH, int origSrcFormat, int dstW, int int chrI= i*c->chrDstH / dstH; int nextSlice= MAX(c->vLumFilterPos[i ] + c->vLumFilterSize - 1, ((c->vChrFilterPos[chrI] + c->vChrFilterSize - 1)<<c->chrSrcVSubSample)); - nextSlice&= ~3; // Slices start at boundaries which are divisable through 4 + if(c->chrSrcVSubSample > 1) + nextSlice&= ~3; // Slices start at boundaries which are divisable through 4 + else + nextSlice&= ~1; // Slices start at boundaries which are divisable through 2 if(c->vLumFilterPos[i ] + c->vLumBufSize < nextSlice) c->vLumBufSize= nextSlice - c->vLumFilterPos[i ]; if(c->vChrFilterPos[chrI] + c->vChrBufSize < (nextSlice>>c->chrSrcVSubSample)) |