Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: remi@remlab.net
To: ffmpeg-devel@ffmpeg.org
Subject: [FFmpeg-devel] [PATCH 3/3] lavc/opusdsp: RISC-V V (256-bit vectors) postfilter
Date: Sat,  1 Oct 2022 15:32:39 +0300
Message-ID: <20221001123239.33042-3-remi@remlab.net> (raw)
In-Reply-To: <5606030.DvuYhMxLoT@basile.remlab.net>

From: Rémi Denis-Courmont <remi@remlab.net>

This adds a variant of the postfilter for use with 256-bit vectors (or
larger). Since the function requires 160-bit logical vectors, we can
cut the group multiplier down to just one.

The different vector type is passed via register. Unfortunately,
there is no VSETIVL instruction, so the constant vector size (5) also
needs to be passed via a register.
---
 libavcodec/riscv/opusdsp_init.c | 17 ++++++++++++++---
 libavcodec/riscv/opusdsp_rvv.S  | 10 +++++++++-
 2 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/libavcodec/riscv/opusdsp_init.c b/libavcodec/riscv/opusdsp_init.c
index 18d3892329..433b71e710 100644
--- a/libavcodec/riscv/opusdsp_init.c
+++ b/libavcodec/riscv/opusdsp_init.c
@@ -25,14 +25,25 @@
 #include "libavutil/riscv/cpu.h"
 #include "libavcodec/opusdsp.h"
 
-void ff_opus_postfilter_rvv(float *data, int period, float *gains, int len);
+void ff_opus_postfilter_rvv_32(float *data, int period, float *gains, int len);
+void ff_opus_postfilter_rvv_16(float *data, int period, float *gains, int len);
 
 av_cold void ff_opus_dsp_init_riscv(OpusDSP *d)
 {
 #if HAVE_RVV
     int flags = av_get_cpu_flags();
 
-    if ((flags & AV_CPU_FLAG_RVV_I32) && ff_get_rv_vlenb() >= 16)
-        d->postfilter = ff_opus_postfilter_rvv;
+    if (flags & AV_CPU_FLAG_RVV_I32)
+        switch (ff_get_rv_vlenb()) {
+            default:
+                d->postfilter = ff_opus_postfilter_rvv_32;
+                break;
+            case 16:
+                d->postfilter = ff_opus_postfilter_rvv_16;
+                break;
+            case 8:
+            case 4:
+                break;
+        }
 #endif
 }
diff --git a/libavcodec/riscv/opusdsp_rvv.S b/libavcodec/riscv/opusdsp_rvv.S
index f42a9c36c5..cfe332227e 100644
--- a/libavcodec/riscv/opusdsp_rvv.S
+++ b/libavcodec/riscv/opusdsp_rvv.S
@@ -21,7 +21,15 @@
 #include "config.h"
 #include "libavutil/riscv/asm.S"
 
-func ff_opus_postfilter_rvv, zve32f
+func ff_opus_postfilter_rvv_16, zve32f
+        lvtypei a5, e32, m2, ta, ma
+        j       1f
+endfunc
+
+func ff_opus_postfilter_rvv_32, zve32f
+        lvtypei a5, e32, m1, ta, ma
+1:
+        li           a4, 5
         addi         a1, a1, 2
         slli         a1, a1, 2
         sh2add       a3, a3, a0
-- 
2.37.2

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

      parent reply	other threads:[~2022-10-01 12:33 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-01 12:32 [FFmpeg-devel] [PATCH 0/3] RISC-V V Opus post-filter Rémi Denis-Courmont
2022-10-01 12:32 ` [FFmpeg-devel] [PATCH 1/3] lavc/opusdsp: RISC-V V postfilter remi
2022-10-04 21:46   ` Lynne
2022-10-01 12:32 ` [FFmpeg-devel] [PATCH 2/3] lavu/riscv: helper macro for VTYPE encoding remi
2022-10-01 12:32 ` remi [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20221001123239.33042-3-remi@remlab.net \
    --to=remi@remlab.net \
    --cc=ffmpeg-devel@ffmpeg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git