aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Denis-Courmont <remi@remlab.net>2024-05-13 18:51:38 +0300
committerRémi Denis-Courmont <remi@remlab.net>2024-05-15 19:45:07 +0300
commita3e45063c0b132eff0122258bd12691357cff1c6 (patch)
treeeaab85130637bbe3b8c4a19e3bc1ef02e564903f
parent8670615743eb36d7b3e9b522266518796df7ec54 (diff)
downloadffmpeg-a3e45063c0b132eff0122258bd12691357cff1c6.tar.gz
lavc/flacdsp: fix CPU requirement for 32-bit LPC
-rw-r--r--libavcodec/riscv/flacdsp_init.c4
-rw-r--r--libavcodec/riscv/flacdsp_rvv.S4
2 files changed, 5 insertions, 3 deletions
diff --git a/libavcodec/riscv/flacdsp_init.c b/libavcodec/riscv/flacdsp_init.c
index 6cfb50ead8..66eb062620 100644
--- a/libavcodec/riscv/flacdsp_init.c
+++ b/libavcodec/riscv/flacdsp_init.c
@@ -69,9 +69,11 @@ av_cold void ff_flacdsp_init_riscv(FLACDSPContext *c, enum AVSampleFormat fmt,
if ((flags & AV_CPU_FLAG_RVV_I32) && (flags & AV_CPU_FLAG_RVB_ADDR)) {
int vlenb = ff_get_rv_vlenb();
- if (vlenb >= 16) {
+ if (vlenb >= 16)
c->lpc16 = ff_flac_lpc16_rvv;
+
# if (__riscv_xlen >= 64)
+ if (flags & AV_CPU_FLAG_RVV_I64) {
if (vlenb > 16)
c->lpc32 = ff_flac_lpc32_rvv_simple;
else
diff --git a/libavcodec/riscv/flacdsp_rvv.S b/libavcodec/riscv/flacdsp_rvv.S
index 2a0b50f7a9..25803f00f8 100644
--- a/libavcodec/riscv/flacdsp_rvv.S
+++ b/libavcodec/riscv/flacdsp_rvv.S
@@ -44,7 +44,7 @@ func ff_flac_lpc16_rvv, zve32x
endfunc
#if (__riscv_xlen == 64)
-func ff_flac_lpc32_rvv, zve32x
+func ff_flac_lpc32_rvv, zve64x
addi t2, a2, -16
ble t2, zero, ff_flac_lpc32_rvv_simple
vsetivli zero, 1, e64, m1, ta, ma
@@ -75,7 +75,7 @@ func ff_flac_lpc32_rvv, zve32x
ret
endfunc
-func ff_flac_lpc32_rvv_simple, zve32x
+func ff_flac_lpc32_rvv_simple, zve64x
vsetivli zero, 1, e64, m1, ta, ma
vmv.s.x v0, zero
vsetvli zero, a2, e32, m4, ta, ma