diff --git a/libavcodec/riscv/opusdsp_init.c b/libavcodec/riscv/opusdsp_init.c index a5e3e4748a..7fde9b1fa8 100644 --- a/libavcodec/riscv/opusdsp_init.c +++ b/libavcodec/riscv/opusdsp_init.c @@ -27,6 +27,8 @@ void ff_opus_postfilter_rvv_128(float *data, int period, float *g, int len); void ff_opus_postfilter_rvv_256(float *data, int period, float *g, int len); +void ff_opus_postfilter_rvv_512(float *data, int period, float *g, int len); +void ff_opus_postfilter_rvv_1024(float *data, int period, float *g, int len); av_cold void ff_opus_dsp_init_riscv(OpusDSP *d) { @@ -41,6 +43,12 @@ av_cold void ff_opus_dsp_init_riscv(OpusDSP *d) case 32: d->postfilter = ff_opus_postfilter_rvv_256; break; + case 64: + d->postfilter = ff_opus_postfilter_rvv_512; + break; + case 128: + d->postfilter = ff_opus_postfilter_rvv_512; + break; } #endif } diff --git a/libavcodec/riscv/opusdsp_rvv.S b/libavcodec/riscv/opusdsp_rvv.S index 243c9a5e52..b3d23a9de5 100644 --- a/libavcodec/riscv/opusdsp_rvv.S +++ b/libavcodec/riscv/opusdsp_rvv.S @@ -25,6 +25,16 @@ func ff_opus_postfilter_rvv_128, zve32f j 1f endfunc +func ff_opus_postfilter_rvv_512, zve32f + lvtypei a5, e32, mf2, ta, ma + j 1f +endfunc + +func ff_opus_postfilter_rvv_1024, zve32f + lvtypei a5, e32, mf4, ta, ma + j 1f +endfunc + func ff_opus_postfilter_rvv_256, zve32f lvtypei a5, e32, m1, ta, ma 1: