mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
swscale: aarch64: Fix yuv2rgb with negative strides
Treat the 32 bit stride registers as signed.
Alternatively, we could make the stride arguments ptrdiff_t instead
of int, and changing all of the assembly to operate on these
registers with their full 64 bit width, but that's a much larger
and more intrusive change (and risks missing some operation, which
would clamp the intermediates to 32 bit still).
Fixes: https://trac.ffmpeg.org/ticket/9985
Signed-off-by: Martin Storsjö <martin@martin.st>
(cherry picked from commit cb803a0072
)
Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
a2e14839dc
commit
a4ba6e7d2c
@ -118,8 +118,8 @@
|
|||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro increment_yuv422p
|
.macro increment_yuv422p
|
||||||
add x6, x6, w7, UXTW // srcU += incU
|
add x6, x6, w7, SXTW // srcU += incU
|
||||||
add x13, x13, w14, UXTW // srcV += incV
|
add x13, x13, w14, SXTW // srcV += incV
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro compute_rgba r1 g1 b1 a1 r2 g2 b2 a2
|
.macro compute_rgba r1 g1 b1 a1 r2 g2 b2 a2
|
||||||
@ -188,8 +188,8 @@ function ff_\ifmt\()_to_\ofmt\()_neon, export=1
|
|||||||
st4 {v16.8B,v17.8B,v18.8B,v19.8B}, [x2], #32
|
st4 {v16.8B,v17.8B,v18.8B,v19.8B}, [x2], #32
|
||||||
subs w8, w8, #16 // width -= 16
|
subs w8, w8, #16 // width -= 16
|
||||||
b.gt 2b
|
b.gt 2b
|
||||||
add x2, x2, w3, UXTW // dst += padding
|
add x2, x2, w3, SXTW // dst += padding
|
||||||
add x4, x4, w5, UXTW // srcY += paddingY
|
add x4, x4, w5, SXTW // srcY += paddingY
|
||||||
increment_\ifmt
|
increment_\ifmt
|
||||||
subs w1, w1, #1 // height -= 1
|
subs w1, w1, #1 // height -= 1
|
||||||
b.gt 1b
|
b.gt 1b
|
||||||
|
Loading…
Reference in New Issue
Block a user