mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2026-06-11 08:13:06 +00:00
swscale/loongarch: fix LASX YUV2RGB residual for multi-row slices
The res variable (pixel residual count for widths not divisible by 16) is computed once before the row loop, but DEALYUV2RGBLINERES and DEALYUV2RGBLINERES32 destructively subtract 8 from it inside the loop body. When srcSliceH > 2, subsequent row pairs get an incorrect residual count, producing wrong output for the tail pixels. Fix by recomputing res from the constant c->opts.dst_w at the top of each row-pair iteration. Signed-off-by: David Christle <dev@christle.is>
This commit is contained in:
committed by
Martin Storsjö
co-authored by
Martin Storsjö
parent
40e60a7db0
commit
8e591af32b
@@ -185,6 +185,7 @@
|
||||
const uint8_t *py_2 = py_1 + srcStride[0]; \
|
||||
const uint8_t *pu = src[1] + (y >> vshift) * srcStride[1]; \
|
||||
const uint8_t *pv = src[2] + (y >> vshift) * srcStride[2]; \
|
||||
res = c->opts.dst_w & 15; \
|
||||
for(x = 0; x < h_size; x++) { \
|
||||
|
||||
#define YUV2RGBFUNC32(func_name, dst_type, alpha) \
|
||||
@@ -213,6 +214,7 @@
|
||||
const uint8_t *py_2 = py_1 + srcStride[0]; \
|
||||
const uint8_t *pu = src[1] + (y >> vshift) * srcStride[1]; \
|
||||
const uint8_t *pv = src[2] + (y >> vshift) * srcStride[2]; \
|
||||
res = c->opts.dst_w & 15; \
|
||||
for(x = 0; x < h_size; x++) { \
|
||||
|
||||
#define DEALYUV2RGBLINE \
|
||||
|
||||
Reference in New Issue
Block a user