aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/riscv
diff options
context:
space:
mode:
authorRémi Denis-Courmont <remi@remlab.net>2024-07-27 14:30:52 +0300
committerRémi Denis-Courmont <remi@remlab.net>2024-07-30 18:41:51 +0300
commit5171baa2289322d57aa36df321582719293f231c (patch)
treeb4d307f8433091e12ec43079ac4fe2c8cd84571c /libavcodec/riscv
parent0e09f6d690b748f61d652ad58ed96c2d48670110 (diff)
downloadffmpeg-5171baa2289322d57aa36df321582719293f231c.tar.gz
lavc/ac3dsp: fix R-V CPU requirements
It probably will not matter on any real hardware, but the Zbb optimisations do not require Zba. And then, we need HAVE_RVV to build the RVV stuff.
Diffstat (limited to 'libavcodec/riscv')
-rw-r--r--libavcodec/riscv/ac3dsp_init.c36
1 files changed, 21 insertions, 15 deletions
diff --git a/libavcodec/riscv/ac3dsp_init.c b/libavcodec/riscv/ac3dsp_init.c
index f66b6cac57..24b3881854 100644
--- a/libavcodec/riscv/ac3dsp_init.c
+++ b/libavcodec/riscv/ac3dsp_init.c
@@ -41,26 +41,32 @@ av_cold void ff_ac3dsp_init_riscv(AC3DSPContext *c)
#if HAVE_RV
int flags = av_get_cpu_flags();
- if (flags & AV_CPU_FLAG_RVB_BASIC)
+ if (flags & AV_CPU_FLAG_RVB_BASIC) {
c->ac3_exponent_min = ff_ac3_exponent_min_rvb;
- if (flags & AV_CPU_FLAG_RVV_I32)
+ c->extract_exponents = ff_extract_exponents_rvb;
+ }
+
+# if HAVE_RVV
+ if (flags & AV_CPU_FLAG_RVV_I32) {
c->ac3_exponent_min = ff_ac3_exponent_min_rvv;
- if (flags & AV_CPU_FLAG_RVB_ADDR) {
- if (flags & AV_CPU_FLAG_RVB_BASIC)
- c->extract_exponents = ff_extract_exponents_rvb;
-# if HAVE_RV_ZVBB
- if (flags & AV_CPU_FLAG_RV_ZVBB)
- c->extract_exponents = ff_extract_exponents_rvvb;
+ if (flags & AV_CPU_FLAG_RVB) {
+# if HAVE_RV_ZVBB
+ if (flags & AV_CPU_FLAG_RV_ZVBB)
+ c->extract_exponents = ff_extract_exponents_rvvb;
+# endif
+ if (flags & AV_CPU_FLAG_RVV_F32) {
+ c->float_to_fixed24 = ff_float_to_fixed24_rvv;
+ c->sum_square_butterfly_float =
+ ff_sum_square_butterfly_float_rvv;
+ }
+# if __riscv_xlen >= 64
+ if (flags & AV_CPU_FLAG_RVV_I64)
+ c->sum_square_butterfly_int32 =
+ ff_sum_square_butterfly_int32_rvv;
+# endif
# endif
- if (flags & AV_CPU_FLAG_RVV_F32) {
- c->float_to_fixed24 = ff_float_to_fixed24_rvv;
- c->sum_square_butterfly_float = ff_sum_square_butterfly_float_rvv;
}
-# if __riscv_xlen >= 64
- if (flags & AV_CPU_FLAG_RVV_I64)
- c->sum_square_butterfly_int32 = ff_sum_square_butterfly_int32_rvv;
-# endif
}
#endif
}