[FFmpeg-cvslog] lavc/vc1dsp: fix potential overflow in R-V V inv_trans_4
Rémi Denis-Courmont
git at videolan.org
Sun Jun 30 19:03:09 EEST 2024
ffmpeg | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Thu Jun 27 22:00:05 2024 +0300| [b818dff8d8e16f0831a379a5cdc15e813474a841] | committer: Rémi Denis-Courmont
lavc/vc1dsp: fix potential overflow in R-V V inv_trans_4
Judging by the coefficients, the last round of add/sub can overflow
to 17 bits with a very small probability just as with the 8-point
transform. This is not observed under FATE, but better safe than sorry.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b818dff8d8e16f0831a379a5cdc15e813474a841
---
libavcodec/riscv/vc1dsp_rvv.S | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/libavcodec/riscv/vc1dsp_rvv.S b/libavcodec/riscv/vc1dsp_rvv.S
index 0e89e29a1d..9d85377cec 100644
--- a/libavcodec/riscv/vc1dsp_rvv.S
+++ b/libavcodec/riscv/vc1dsp_rvv.S
@@ -202,13 +202,14 @@ func ff_vc1_inv_trans_4_rvv, zve32x
vmul.vx v20, v1, t2
vadd.vv v26, v14, v16 # t3
vsub.vv v27, v18, v20 # t4
- vadd.vv v0, v24, v26
- vsub.vv v1, v25, v27
- vadd.vv v2, v25, v27
- vsub.vv v3, v24, v26
- .irp n,0,1,2,3
- vssra.vx v\n, v\n, t1 # + 4 >> 3 or + 64 >> 7
- .endr
+ vwadd.vv v8, v24, v26
+ vwsub.vv v10, v25, v27
+ vwadd.vv v12, v25, v27
+ vwsub.vv v14, v24, v26
+ vnclip.wx v0, v8, t1
+ vnclip.wx v1, v10, t1
+ vnclip.wx v2, v12, t1
+ vnclip.wx v3, v14, t1
jr t0
endfunc
More information about the ffmpeg-cvslog
mailing list