mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-02-04 13:53:26 +00:00
swscale/swscale: Pass slice location into unscaled code also for dst scaling
Fixes: alphablend=checkerboard Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
06d6726588
commit
f801207568
@ -1020,7 +1020,7 @@ static int scale_internal(SwsContext *c,
|
|||||||
int offset = srcSliceY_internal;
|
int offset = srcSliceY_internal;
|
||||||
int slice_h = srcSliceH;
|
int slice_h = srcSliceH;
|
||||||
|
|
||||||
// for dst slice scaling, offset the src pointers to match the dst slice
|
// for dst slice scaling, offset the pointers to match the unscaled API
|
||||||
if (scale_dst) {
|
if (scale_dst) {
|
||||||
av_assert0(offset == 0);
|
av_assert0(offset == 0);
|
||||||
for (i = 0; i < 4 && src2[i]; i++) {
|
for (i = 0; i < 4 && src2[i]; i++) {
|
||||||
@ -1028,12 +1028,20 @@ static int scale_internal(SwsContext *c,
|
|||||||
break;
|
break;
|
||||||
src2[i] += (dstSliceY >> ((i == 1 || i == 2) ? c->chrSrcVSubSample : 0)) * srcStride2[i];
|
src2[i] += (dstSliceY >> ((i == 1 || i == 2) ? c->chrSrcVSubSample : 0)) * srcStride2[i];
|
||||||
}
|
}
|
||||||
offset = 0;
|
|
||||||
|
for (i = 0; i < 4 && dst2[i]; i++) {
|
||||||
|
if (!dst2[i] || (i > 0 && usePal(c->dstFormat)))
|
||||||
|
break;
|
||||||
|
dst2[i] -= (dstSliceY >> ((i == 1 || i == 2) ? c->chrDstVSubSample : 0)) * dstStride2[i];
|
||||||
|
}
|
||||||
|
offset = dstSliceY;
|
||||||
slice_h = dstSliceH;
|
slice_h = dstSliceH;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = c->convert_unscaled(c, src2, srcStride2, offset, slice_h,
|
ret = c->convert_unscaled(c, src2, srcStride2, offset, slice_h,
|
||||||
dst2, dstStride2);
|
dst2, dstStride2);
|
||||||
|
if (scale_dst)
|
||||||
|
dst2[0] += dstSliceY * dstStride2[0];
|
||||||
} else {
|
} else {
|
||||||
ret = swscale(c, src2, srcStride2, srcSliceY_internal, srcSliceH,
|
ret = swscale(c, src2, srcStride2, srcSliceY_internal, srcSliceH,
|
||||||
dst2, dstStride2, dstSliceY, dstSliceH);
|
dst2, dstStride2, dstSliceY, dstSliceH);
|
||||||
|
Loading…
Reference in New Issue
Block a user