swscale/swscale_unscaled: use 8 line alignment for planarCopyWrapper with dithering

Dithering relies on a 8 line dithering table and the code always uses it from
the beginning. So in order to make dithering independent from height of the
slices used we must enforce a 8 line alignment.

Fixes issue #20071.

Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
Marton Balint 2025-08-03 13:44:03 +02:00
parent 3ef2ea890b
commit b61e510e75

View file

@ -2676,10 +2676,13 @@ void ff_get_unscaled_swscale(SwsInternal *c)
isSemiPlanarYUV(srcFormat) == isSemiPlanarYUV(dstFormat) && isSemiPlanarYUV(srcFormat) == isSemiPlanarYUV(dstFormat) &&
isSwappedChroma(srcFormat) == isSwappedChroma(dstFormat)))) isSwappedChroma(srcFormat) == isSwappedChroma(dstFormat))))
{ {
if (isPacked(c->opts.src_format)) if (isPacked(c->opts.src_format)) {
c->convert_unscaled = packedCopyWrapper; c->convert_unscaled = packedCopyWrapper;
else /* Planar YUV or gray */ } else { /* Planar YUV or gray */
c->convert_unscaled = planarCopyWrapper; c->convert_unscaled = planarCopyWrapper;
if (c->opts.dither != SWS_DITHER_NONE)
c->dst_slice_align = 8 << c->chrDstVSubSample;
}
} }
#if ARCH_PPC #if ARCH_PPC