Message ID | 20240901130935.5887-2-ramiro.polla@gmail.com |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel,1/3] swscale/x86/rgb2rgb: fix deinterleaveBytes for unaligned dst pointers | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | success | Make fate finished |
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
diff --git a/libswscale/x86/rgb2rgb.c b/libswscale/x86/rgb2rgb.c index 4d6ba9ff21..1617c33338 100644 --- a/libswscale/x86/rgb2rgb.c +++ b/libswscale/x86/rgb2rgb.c @@ -2380,7 +2380,12 @@ static void deinterleave_bytes_ ## cpuext(const uint8_t *src, uint8_t *dst1, uin int dst1Stride, int dst2Stride) \ { \ for (int h = 0; h < height; h++) { \ - ff_nv12ToUV_ ## cpuext(dst1, dst2, NULL, src, NULL, width, NULL, NULL); \ + if (width >= 16) \ + ff_nv12ToUV_ ## cpuext(dst1, dst2, NULL, src, NULL, width - 15, NULL, NULL); \ + for (int w = (width & (~15)); w < width; w++) { \ + dst1[w] = src[2*w+0]; \ + dst2[w] = src[2*w+1]; \ + } \ src += srcStride; \ dst1 += dst1Stride; \ dst2 += dst2Stride; \