[FFmpeg-cvslog] lavc/vp8dsp: R-V V put_bilin_hv

2024-05-10 Thread sunyuechi
ffmpeg | branch: master | sunyuechi  | Wed May  8 
00:54:06 2024 +0800| [538f217bbb4f7b601e560565be581334c87ae9fc] | committer: 
Rémi Denis-Courmont

lavc/vp8dsp: R-V V put_bilin_hv

C908:
vp8_put_bilin4_hv_c: 561.0
vp8_put_bilin4_hv_rvv_i32: 232.7
vp8_put_bilin8_hv_c: 2162.7
vp8_put_bilin8_hv_rvv_i32: 506.7
vp8_put_bilin16_hv_c: 4769.7
vp8_put_bilin16_hv_rvv_i32: 556.7

Signed-off-by: Rémi Denis-Courmont 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=538f217bbb4f7b601e560565be581334c87ae9fc
---

 libavcodec/riscv/vp8dsp_init.c | 13 +
 libavcodec/riscv/vp8dsp_rvv.S  | 26 ++
 2 files changed, 39 insertions(+)

diff --git a/libavcodec/riscv/vp8dsp_init.c b/libavcodec/riscv/vp8dsp_init.c
index afffa6de2f..9627105fc8 100644
--- a/libavcodec/riscv/vp8dsp_init.c
+++ b/libavcodec/riscv/vp8dsp_init.c
@@ -67,6 +67,19 @@ av_cold void ff_vp78dsp_init_riscv(VP8DSPContext *c)
 c->put_vp8_bilinear_pixels_tab[1][2][0] = ff_put_vp8_bilin8_v_rvv;
 c->put_vp8_bilinear_pixels_tab[2][1][0] = ff_put_vp8_bilin4_v_rvv;
 c->put_vp8_bilinear_pixels_tab[2][2][0] = ff_put_vp8_bilin4_v_rvv;
+
+c->put_vp8_bilinear_pixels_tab[0][1][1] = ff_put_vp8_bilin16_hv_rvv;
+c->put_vp8_bilinear_pixels_tab[0][1][2] = ff_put_vp8_bilin16_hv_rvv;
+c->put_vp8_bilinear_pixels_tab[0][2][1] = ff_put_vp8_bilin16_hv_rvv;
+c->put_vp8_bilinear_pixels_tab[0][2][2] = ff_put_vp8_bilin16_hv_rvv;
+c->put_vp8_bilinear_pixels_tab[1][1][1] = ff_put_vp8_bilin8_hv_rvv;
+c->put_vp8_bilinear_pixels_tab[1][1][2] = ff_put_vp8_bilin8_hv_rvv;
+c->put_vp8_bilinear_pixels_tab[1][2][1] = ff_put_vp8_bilin8_hv_rvv;
+c->put_vp8_bilinear_pixels_tab[1][2][2] = ff_put_vp8_bilin8_hv_rvv;
+c->put_vp8_bilinear_pixels_tab[2][1][1] = ff_put_vp8_bilin4_hv_rvv;
+c->put_vp8_bilinear_pixels_tab[2][1][2] = ff_put_vp8_bilin4_hv_rvv;
+c->put_vp8_bilinear_pixels_tab[2][2][1] = ff_put_vp8_bilin4_hv_rvv;
+c->put_vp8_bilinear_pixels_tab[2][2][2] = ff_put_vp8_bilin4_hv_rvv;
 }
 #endif
 #endif
diff --git a/libavcodec/riscv/vp8dsp_rvv.S b/libavcodec/riscv/vp8dsp_rvv.S
index ec8ff917b9..4f232c7707 100644
--- a/libavcodec/riscv/vp8dsp_rvv.S
+++ b/libavcodec/riscv/vp8dsp_rvv.S
@@ -116,7 +116,33 @@ func ff_put_vp8_bilin\len\()_\type\()_rvv, zve32x
 endfunc
 .endm
 
+.macro put_vp8_bilin_hv len
+func ff_put_vp8_bilin\len\()_hv_rvv, zve32x
+vsetvlstatic8   \len
+li  t3, 8
+sub t1, t3, a5
+sub t2, t3, a6
+li  t4, 4
+bilin_load  v4, \len, h, a5
+add a2, a2, a3
+1:
+addia4, a4, -1
+vwmulu.vx   v20, v4, t2
+bilin_load  v4, \len, h, a5
+vwmaccu.vx  v20, a6, v4
+vwaddu.wx   v24, v20, t4
+vnsra.wiv0, v24, 3
+vse8.v  v0, (a0)
+add a2, a2, a3
+add a0, a0, a1
+bneza4, 1b
+
+ret
+endfunc
+.endm
+
 .irp len 16,8,4
 put_vp8_bilin_h_v \len h a5
 put_vp8_bilin_h_v \len v a6
+put_vp8_bilin_hv \len
 .endr

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

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


[FFmpeg-cvslog] lavc/vp8dsp: R-V put_vp8_pixels

2024-05-10 Thread sunyuechi
ffmpeg | branch: master | sunyuechi  | Wed May  8 
00:54:04 2024 +0800| [0b8e5e5a00097c9bef30ca90808d8f83901cf29b] | committer: 
Rémi Denis-Courmont

lavc/vp8dsp: R-V put_vp8_pixels

C908:
vp8_put_pixels4_c: 78.0
vp8_put_pixels4_rvi: 33.7
vp8_put_pixels8_c: 278.0
vp8_put_pixels8_rvi: 55.0
vp8_put_pixels16_c: 999.0
vp8_put_pixels16_rvi: 86.7

Signed-off-by: Rémi Denis-Courmont 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0b8e5e5a00097c9bef30ca90808d8f83901cf29b
---

 libavcodec/riscv/Makefile  |  1 +
 libavcodec/riscv/vp8dsp.h  | 75 ++
 libavcodec/riscv/vp8dsp_init.c | 22 +
 libavcodec/riscv/vp8dsp_rvi.S  | 61 ++
 libavcodec/vp8dsp.c|  2 ++
 libavcodec/vp8dsp.h|  1 +
 6 files changed, 162 insertions(+)

diff --git a/libavcodec/riscv/Makefile b/libavcodec/riscv/Makefile
index 11d47f9a57..89273b1cad 100644
--- a/libavcodec/riscv/Makefile
+++ b/libavcodec/riscv/Makefile
@@ -59,6 +59,7 @@ RVV-OBJS-$(CONFIG_UTVIDEO_DECODER) += riscv/utvideodsp_rvv.o
 OBJS-$(CONFIG_VC1DSP) += riscv/vc1dsp_init.o
 RVV-OBJS-$(CONFIG_VC1DSP) += riscv/vc1dsp_rvv.o
 OBJS-$(CONFIG_VP8DSP) += riscv/vp8dsp_init.o
+RV-OBJS-$(CONFIG_VP8DSP) += riscv/vp8dsp_rvi.o
 RVV-OBJS-$(CONFIG_VP8DSP) += riscv/vp8dsp_rvv.o
 OBJS-$(CONFIG_VP9_DECODER) += riscv/vp9dsp_init.o
 RVV-OBJS-$(CONFIG_VP9_DECODER) += riscv/vp9_intra_rvv.o
diff --git a/libavcodec/riscv/vp8dsp.h b/libavcodec/riscv/vp8dsp.h
new file mode 100644
index 00..971c5c0a96
--- /dev/null
+++ b/libavcodec/riscv/vp8dsp.h
@@ -0,0 +1,75 @@
+/*
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef AVCODEC_RISCV_VP8DSP_H
+#define AVCODEC_RISCV_VP8DSP_H
+
+#include "libavcodec/vp8dsp.h"
+
+#define VP8_LF_Y(hv, inner, opt) \
+void ff_vp8_##hv##_loop_filter16##inner##_##opt(uint8_t *dst,\
+ptrdiff_t stride,\
+int flim_E, int flim_I,  \
+int hev_thresh)
+
+#define VP8_LF_UV(hv, inner, opt)\
+void ff_vp8_##hv##_loop_filter8uv##inner##_##opt(uint8_t *dstU,  \
+ uint8_t *dstV,  \
+ ptrdiff_t stride,   \
+ int flim_E, int flim_I, \
+ int hev_thresh)
+
+#define VP8_LF_SIMPLE(hv, opt)  \
+void ff_vp8_##hv##_loop_filter16_simple_##opt(uint8_t *dst, \
+  ptrdiff_t stride, \
+  int flim)
+
+#define VP8_LF_HV(inner, opt)   \
+VP8_LF_Y(h,  inner, opt);   \
+VP8_LF_Y(v,  inner, opt);   \
+VP8_LF_UV(h, inner, opt);   \
+VP8_LF_UV(v, inner, opt)
+
+#define VP8_LF(opt) \
+VP8_LF_HV(,   opt); \
+VP8_LF_HV(_inner, opt); \
+VP8_LF_SIMPLE(h, opt);  \
+VP8_LF_SIMPLE(v, opt)
+
+#define VP8_MC(n, opt)  \
+void ff_put_vp8_##n##_##opt(uint8_t *dst, ptrdiff_t dststride,  \
+const uint8_t *src, ptrdiff_t srcstride,\
+int h, int x, int y)
+
+#define VP8_EPEL(w, opt)\
+VP8_MC(pixels ## w, opt);   \
+VP8_MC(epel ## w ## _h4, opt);  \
+VP8_MC(epel ## w ## _h6, opt);  \
+VP8_MC(epel ## w ## _v4, opt);  \
+VP8_MC(epel ## w ## _h4v4, opt);\
+VP8_MC(epel ## w ## _h6v4, opt);\
+VP8_MC(epel ## w ## _v6, opt);  \
+VP8_MC(epel ## w ## _h4v6, opt);\
+VP8_MC(epel ## w ## _h6v6, opt)
+
+#define VP8_BILIN(w, opt)   \
+VP8_MC(bilin ## w ## _h, opt);  \

[FFmpeg-cvslog] lavc/vp8dsp: R-V V put_epel h

2024-05-10 Thread sunyuechi
ffmpeg | branch: master | sunyuechi  | Wed May  8 
00:54:07 2024 +0800| [109daea6195c2787d62e530fa6a013cc70bae7b7] | committer: 
Rémi Denis-Courmont

lavc/vp8dsp: R-V V put_epel h

C908:
vp8_put_epel4_h4_c: 10.7
vp8_put_epel4_h4_rvv_i32: 5.0
vp8_put_epel4_h6_c: 15.0
vp8_put_epel4_h6_rvv_i32: 6.2
vp8_put_epel8_h4_c: 43.2
vp8_put_epel8_h4_rvv_i32: 11.2
vp8_put_epel8_h6_c: 57.5
vp8_put_epel8_h6_rvv_i32: 13.5
vp8_put_epel16_h4_c: 92.5
vp8_put_epel16_h4_rvv_i32: 13.7
vp8_put_epel16_h6_c: 139.0
vp8_put_epel16_h6_rvv_i32: 16.5

Signed-off-by: Rémi Denis-Courmont 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=109daea6195c2787d62e530fa6a013cc70bae7b7
---

 libavcodec/riscv/vp8dsp_init.c | 10 +
 libavcodec/riscv/vp8dsp_rvv.S  | 87 ++
 2 files changed, 97 insertions(+)

diff --git a/libavcodec/riscv/vp8dsp_init.c b/libavcodec/riscv/vp8dsp_init.c
index 9627105fc8..a4b7d49932 100644
--- a/libavcodec/riscv/vp8dsp_init.c
+++ b/libavcodec/riscv/vp8dsp_init.c
@@ -33,6 +33,9 @@ void ff_vp8_idct_dc_add4uv_rvv(uint8_t *dst, int16_t 
block[4][16], ptrdiff_t str
 VP8_EPEL(16, rvi);
 VP8_EPEL(8,  rvi);
 VP8_EPEL(4,  rvi);
+VP8_EPEL(16, rvv);
+VP8_EPEL(8,  rvv);
+VP8_EPEL(4,  rvv);
 
 VP8_BILIN(16, rvv);
 VP8_BILIN(8,  rvv);
@@ -80,6 +83,13 @@ av_cold void ff_vp78dsp_init_riscv(VP8DSPContext *c)
 c->put_vp8_bilinear_pixels_tab[2][1][2] = ff_put_vp8_bilin4_hv_rvv;
 c->put_vp8_bilinear_pixels_tab[2][2][1] = ff_put_vp8_bilin4_hv_rvv;
 c->put_vp8_bilinear_pixels_tab[2][2][2] = ff_put_vp8_bilin4_hv_rvv;
+
+c->put_vp8_epel_pixels_tab[0][0][2] = ff_put_vp8_epel16_h6_rvv;
+c->put_vp8_epel_pixels_tab[1][0][2] = ff_put_vp8_epel8_h6_rvv;
+c->put_vp8_epel_pixels_tab[2][0][2] = ff_put_vp8_epel4_h6_rvv;
+c->put_vp8_epel_pixels_tab[0][0][1] = ff_put_vp8_epel16_h4_rvv;
+c->put_vp8_epel_pixels_tab[1][0][1] = ff_put_vp8_epel8_h4_rvv;
+c->put_vp8_epel_pixels_tab[2][0][1] = ff_put_vp8_epel4_h4_rvv;
 }
 #endif
 #endif
diff --git a/libavcodec/riscv/vp8dsp_rvv.S b/libavcodec/riscv/vp8dsp_rvv.S
index 4f232c7707..629d7a23d5 100644
--- a/libavcodec/riscv/vp8dsp_rvv.S
+++ b/libavcodec/riscv/vp8dsp_rvv.S
@@ -32,6 +32,16 @@
 .endif
 .endm
 
+.macro vsetvlstatic16 len
+.if \len <= 4
+vsetivlizero, \len, e16, mf2, ta, ma
+.elseif \len <= 8
+vsetivlizero, \len, e16, m1, ta, ma
+.elseif \len <= 16
+vsetivlizero, \len, e16, m2, ta, ma
+.endif
+.endm
+
 .macro vp8_idct_dc_add
 vlse32.v  v0, (a0), a2
 lha5, 0(a1)
@@ -141,8 +151,85 @@ func ff_put_vp8_bilin\len\()_hv_rvv, zve32x
 endfunc
 .endm
 
+const subpel_filters
+.byte 0,  -6, 123,  12,  -1, 0
+.byte 2, -11, 108,  36,  -8, 1
+.byte 0,  -9,  93,  50,  -6, 0
+.byte 3, -16,  77,  77, -16, 3
+.byte 0,  -6,  50,  93,  -9, 0
+.byte 1,  -8,  36, 108, -11, 2
+.byte 0,  -1,  12, 123,  -6, 0
+endconst
+
+.macro epel_filter size
+lla t2, subpel_filters
+addit0, a5, -1
+li  t1, 6
+mul t0, t0, t1
+add t0, t0, t2
+.irp n 1,2,3,4
+lb  t\n, \n(t0)
+.endr
+.ifc \size,6
+lb  t5, 5(t0)
+lb  t0, (t0)
+.endif
+.endm
+
+.macro epel_load dst len size
+addit6, a2, -1
+addia7, a2, 1
+vle8.v  v24, (a2)
+vle8.v  v22, (t6)
+vle8.v  v26, (a7)
+addia7, a7, 1
+vle8.v  v28, (a7)
+vwmulu.vx   v16, v24, t2
+vwmulu.vx   v20, v26, t3
+.ifc \size,6
+addit6, t6, -1
+addia7, a7, 1
+vle8.v  v24, (t6)
+vle8.v  v26, (a7)
+vwmaccu.vx  v16, t0, v24
+vwmaccu.vx  v16, t5, v26
+.endif
+li  t6, 64
+vwmaccsu.vx v16, t1, v22
+vwmaccsu.vx v16, t4, v28
+vwadd.wxv16, v16, t6
+vsetvlstatic16  \len
+vwadd.vvv24, v16, v20
+vnsra.wiv24, v24, 7
+vmax.vx v24, v24, zero
+vsetvlstatic8   \len
+vnclipu.wi  \dst, v24, 0
+.endm
+
+.macro epel_load_inc dst len size
+epel_load   \dst \len \size
+add a2, a2, a3
+.endm
+
+.macro epel len size type
+func ff_put_vp8_epel\len\()_\type\()\size\()_rvv, zve32x
+epel_filter \size
+vsetvlstatic8   \len
+1:
+addia4, a4, -1
+epel_load_inc   v30 \len \size
+vse8.v  v30, (a0)
+add a0, a0, a1
+bneza4, 1b
+
+ret
+endfunc
+.endm
+
 .irp len 16,8,4
 put_vp8_bilin_h_v \len h a5
 put_vp8_bilin_h_v \len v a6
 put_vp8_bilin_hv \len
+epel \len 6 h
+epel \len 4 h
 .endr

__

[FFmpeg-cvslog] lavc/vp8dsp: R-V V put_bilin_h v

2024-05-10 Thread sunyuechi
ffmpeg | branch: master | sunyuechi  | Wed May  8 
00:54:05 2024 +0800| [bb5039b3cb79968bd1d36db60c272d5686e0b064] | committer: 
Rémi Denis-Courmont

lavc/vp8dsp: R-V V put_bilin_h v

C908:
vp8_put_bilin4_h_c: 367.0
vp8_put_bilin4_h_rvv_i32: 137.7
vp8_put_bilin4_v_c: 377.0
vp8_put_bilin4_v_rvv_i32: 137.7
vp8_put_bilin8_h_c: 1431.0
vp8_put_bilin8_h_rvv_i32: 297.5
vp8_put_bilin8_v_c: 1449.0
vp8_put_bilin8_v_rvv_i32: 297.5
vp8_put_bilin16_h_c: 2839.0
vp8_put_bilin16_h_rvv_i32: 344.7
vp8_put_bilin16_v_c: 2857.0
vp8_put_bilin16_v_rvv_i32: 344.7

Signed-off-by: Rémi Denis-Courmont 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=bb5039b3cb79968bd1d36db60c272d5686e0b064
---

 libavcodec/riscv/vp8dsp_init.c | 21 ++
 libavcodec/riscv/vp8dsp_rvv.S  | 49 ++
 2 files changed, 70 insertions(+)

diff --git a/libavcodec/riscv/vp8dsp_init.c b/libavcodec/riscv/vp8dsp_init.c
index fa3feeacf7..afffa6de2f 100644
--- a/libavcodec/riscv/vp8dsp_init.c
+++ b/libavcodec/riscv/vp8dsp_init.c
@@ -34,6 +34,10 @@ VP8_EPEL(16, rvi);
 VP8_EPEL(8,  rvi);
 VP8_EPEL(4,  rvi);
 
+VP8_BILIN(16, rvv);
+VP8_BILIN(8,  rvv);
+VP8_BILIN(4,  rvv);
+
 av_cold void ff_vp78dsp_init_riscv(VP8DSPContext *c)
 {
 #if HAVE_RV
@@ -48,6 +52,23 @@ av_cold void ff_vp78dsp_init_riscv(VP8DSPContext *c)
 c->put_vp8_epel_pixels_tab[2][0][0] = ff_put_vp8_pixels4_rvi;
 c->put_vp8_bilinear_pixels_tab[2][0][0] = ff_put_vp8_pixels4_rvi;
 }
+#if HAVE_RVV
+if (flags & AV_CPU_FLAG_RVV_I32 && ff_get_rv_vlenb() >= 16) {
+c->put_vp8_bilinear_pixels_tab[0][0][1] = ff_put_vp8_bilin16_h_rvv;
+c->put_vp8_bilinear_pixels_tab[0][0][2] = ff_put_vp8_bilin16_h_rvv;
+c->put_vp8_bilinear_pixels_tab[1][0][1] = ff_put_vp8_bilin8_h_rvv;
+c->put_vp8_bilinear_pixels_tab[1][0][2] = ff_put_vp8_bilin8_h_rvv;
+c->put_vp8_bilinear_pixels_tab[2][0][1] = ff_put_vp8_bilin4_h_rvv;
+c->put_vp8_bilinear_pixels_tab[2][0][2] = ff_put_vp8_bilin4_h_rvv;
+
+c->put_vp8_bilinear_pixels_tab[0][1][0] = ff_put_vp8_bilin16_v_rvv;
+c->put_vp8_bilinear_pixels_tab[0][2][0] = ff_put_vp8_bilin16_v_rvv;
+c->put_vp8_bilinear_pixels_tab[1][1][0] = ff_put_vp8_bilin8_v_rvv;
+c->put_vp8_bilinear_pixels_tab[1][2][0] = ff_put_vp8_bilin8_v_rvv;
+c->put_vp8_bilinear_pixels_tab[2][1][0] = ff_put_vp8_bilin4_v_rvv;
+c->put_vp8_bilinear_pixels_tab[2][2][0] = ff_put_vp8_bilin4_v_rvv;
+}
+#endif
 #endif
 }
 
diff --git a/libavcodec/riscv/vp8dsp_rvv.S b/libavcodec/riscv/vp8dsp_rvv.S
index 8a0773f964..ec8ff917b9 100644
--- a/libavcodec/riscv/vp8dsp_rvv.S
+++ b/libavcodec/riscv/vp8dsp_rvv.S
@@ -20,6 +20,18 @@
 
 #include "libavutil/riscv/asm.S"
 
+.macro vsetvlstatic8 len
+.if \len <= 4
+vsetivlizero, \len, e8, mf4, ta, ma
+.elseif \len <= 8
+vsetivlizero, \len, e8, mf2, ta, ma
+.elseif \len <= 16
+vsetivlizero, \len, e8, m1, ta, ma
+.elseif \len <= 31
+vsetivlizero, \len, e8, m2, ta, ma
+.endif
+.endm
+
 .macro vp8_idct_dc_add
 vlse32.v  v0, (a0), a2
 lha5, 0(a1)
@@ -71,3 +83,40 @@ func ff_vp8_idct_dc_add4uv_rvv, zve32x
 
 ret
 endfunc
+
+.macro bilin_load dst len type mn
+.ifc \type,v
+add t5, a2, a3
+.else
+addit5, a2, 1
+.endif
+vle8.v  \dst, (a2)
+vle8.v  v2, (t5)
+vwmulu.vx   v28, \dst, t1
+vwmaccu.vx  v28, \mn, v2
+vwaddu.wx   v24, v28, t4
+vnsra.wi\dst, v24, 3
+.endm
+
+.macro put_vp8_bilin_h_v len type mn
+func ff_put_vp8_bilin\len\()_\type\()_rvv, zve32x
+vsetvlstatic8   \len
+li  t1, 8
+li  t4, 4
+sub t1, t1, \mn
+1:
+addia4, a4, -1
+bilin_load  v0, \len, \type, \mn
+vse8.v  v0, (a0)
+add a2, a2, a3
+add a0, a0, a1
+bneza4, 1b
+
+ret
+endfunc
+.endm
+
+.irp len 16,8,4
+put_vp8_bilin_h_v \len h a5
+put_vp8_bilin_h_v \len v a6
+.endr

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

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


[FFmpeg-cvslog] lavc/vp8dsp: R-V V put_epel v

2024-05-10 Thread sunyuechi
ffmpeg | branch: master | sunyuechi  | Wed May  8 
00:54:08 2024 +0800| [6e77af1c220c4e0ae06431febad065c78eaa9772] | committer: 
Rémi Denis-Courmont

lavc/vp8dsp: R-V V put_epel v

C908:
vp8_put_epel4_v4_c: 11.0
vp8_put_epel4_v4_rvv_i32: 5.0
vp8_put_epel4_v6_c: 16.5
vp8_put_epel4_v6_rvv_i32: 6.2
vp8_put_epel8_v4_c: 43.7
vp8_put_epel8_v4_rvv_i32: 11.2
vp8_put_epel8_v6_c: 68.7
vp8_put_epel8_v6_rvv_i32: 13.2
vp8_put_epel16_v4_c: 92.5
vp8_put_epel16_v4_rvv_i32: 13.7
vp8_put_epel16_v6_c: 135.7
vp8_put_epel16_v6_rvv_i32: 16.5

Signed-off-by: Rémi Denis-Courmont 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=6e77af1c220c4e0ae06431febad065c78eaa9772
---

 libavcodec/riscv/vp8dsp_init.c |  7 +++
 libavcodec/riscv/vp8dsp_rvv.S  | 34 +++---
 2 files changed, 30 insertions(+), 11 deletions(-)

diff --git a/libavcodec/riscv/vp8dsp_init.c b/libavcodec/riscv/vp8dsp_init.c
index a4b7d49932..dc3e087f01 100644
--- a/libavcodec/riscv/vp8dsp_init.c
+++ b/libavcodec/riscv/vp8dsp_init.c
@@ -90,6 +90,13 @@ av_cold void ff_vp78dsp_init_riscv(VP8DSPContext *c)
 c->put_vp8_epel_pixels_tab[0][0][1] = ff_put_vp8_epel16_h4_rvv;
 c->put_vp8_epel_pixels_tab[1][0][1] = ff_put_vp8_epel8_h4_rvv;
 c->put_vp8_epel_pixels_tab[2][0][1] = ff_put_vp8_epel4_h4_rvv;
+
+c->put_vp8_epel_pixels_tab[0][2][0] = ff_put_vp8_epel16_v6_rvv;
+c->put_vp8_epel_pixels_tab[1][2][0] = ff_put_vp8_epel8_v6_rvv;
+c->put_vp8_epel_pixels_tab[2][2][0] = ff_put_vp8_epel4_v6_rvv;
+c->put_vp8_epel_pixels_tab[0][1][0] = ff_put_vp8_epel16_v4_rvv;
+c->put_vp8_epel_pixels_tab[1][1][0] = ff_put_vp8_epel8_v4_rvv;
+c->put_vp8_epel_pixels_tab[2][1][0] = ff_put_vp8_epel4_v4_rvv;
 }
 #endif
 #endif
diff --git a/libavcodec/riscv/vp8dsp_rvv.S b/libavcodec/riscv/vp8dsp_rvv.S
index 629d7a23d5..4d7a9f6a2d 100644
--- a/libavcodec/riscv/vp8dsp_rvv.S
+++ b/libavcodec/riscv/vp8dsp_rvv.S
@@ -161,9 +161,13 @@ const subpel_filters
 .byte 0,  -1,  12, 123,  -6, 0
 endconst
 
-.macro epel_filter size
+.macro epel_filter size type
 lla t2, subpel_filters
+.ifc \type,v
+addit0, a6, -1
+.else
 addit0, a5, -1
+.endif
 li  t1, 6
 mul t0, t0, t1
 add t0, t0, t2
@@ -176,19 +180,25 @@ endconst
 .endif
 .endm
 
-.macro epel_load dst len size
-addit6, a2, -1
-addia7, a2, 1
+.macro epel_load dst len size type
+.ifc \type,v
+mv  a5, a3
+.else
+li  a5, 1
+.endif
+sub t6, a2, a5
+add a7, a2, a5
+
 vle8.v  v24, (a2)
 vle8.v  v22, (t6)
 vle8.v  v26, (a7)
-addia7, a7, 1
+add a7, a7, a5
 vle8.v  v28, (a7)
 vwmulu.vx   v16, v24, t2
 vwmulu.vx   v20, v26, t3
 .ifc \size,6
-addit6, t6, -1
-addia7, a7, 1
+sub t6, t6, a5
+add a7, a7, a5
 vle8.v  v24, (t6)
 vle8.v  v26, (a7)
 vwmaccu.vx  v16, t0, v24
@@ -206,18 +216,18 @@ endconst
 vnclipu.wi  \dst, v24, 0
 .endm
 
-.macro epel_load_inc dst len size
-epel_load   \dst \len \size
+.macro epel_load_inc dst len size type
+epel_load   \dst \len \size \type
 add a2, a2, a3
 .endm
 
 .macro epel len size type
 func ff_put_vp8_epel\len\()_\type\()\size\()_rvv, zve32x
-epel_filter \size
+epel_filter \size \type
 vsetvlstatic8   \len
 1:
 addia4, a4, -1
-epel_load_inc   v30 \len \size
+epel_load_inc   v30 \len \size \type
 vse8.v  v30, (a0)
 add a0, a0, a1
 bneza4, 1b
@@ -232,4 +242,6 @@ put_vp8_bilin_h_v \len v a6
 put_vp8_bilin_hv \len
 epel \len 6 h
 epel \len 4 h
+epel \len 6 v
+epel \len 4 v
 .endr

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

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


[FFmpeg-cvslog] lavu/riscv: allow requesting a second extension

2024-05-10 Thread Rémi Denis-Courmont
ffmpeg | branch: master | Rémi Denis-Courmont  | Tue May  7 
21:07:43 2024 +0300| [89029baebd018f4e25a7555a34ef9db599977c6c] | committer: 
Rémi Denis-Courmont

lavu/riscv: allow requesting a second extension

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=89029baebd018f4e25a7555a34ef9db599977c6c
---

 libavutil/riscv/asm.S | 9 ++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/libavutil/riscv/asm.S b/libavutil/riscv/asm.S
index 0a9e2e0d3f..9d76ab5617 100644
--- a/libavutil/riscv/asm.S
+++ b/libavutil/riscv/asm.S
@@ -36,13 +36,16 @@
 #define HWD
 #endif
 
-.macro func sym, ext=
+.macro func sym, ext1=, ext2=
 .text
 .align 2
 
 .option push
-.ifnb \ext
-.option arch, +\ext
+.ifnb \ext1
+.option arch, +\ext1
+.ifnb \ext2
+.option arch, +\ext2
+.endif
 .endif
 
 .global \sym

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

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


[FFmpeg-cvslog] swscale/riscv: explicitly require Zbb for MIN

2024-05-10 Thread Rémi Denis-Courmont
ffmpeg | branch: master | Rémi Denis-Courmont  | Tue May  7 
21:08:03 2024 +0300| [6c6313f1b581f053ce51df585e8caf59fe2ca5fc] | committer: 
Rémi Denis-Courmont

swscale/riscv: explicitly require Zbb for MIN

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=6c6313f1b581f053ce51df585e8caf59fe2ca5fc
---

 libswscale/riscv/rgb2rgb_rvv.S | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libswscale/riscv/rgb2rgb_rvv.S b/libswscale/riscv/rgb2rgb_rvv.S
index 21e30ab8bb..19f7aaf67d 100644
--- a/libswscale/riscv/rgb2rgb_rvv.S
+++ b/libswscale/riscv/rgb2rgb_rvv.S
@@ -165,10 +165,10 @@ endfunc
 ret
 .endm
 
-func ff_uyvytoyuv422_rvv, zve32x
+func ff_uyvytoyuv422_rvv, zve32x, zbb
 yuy2_to_i422p v20, v16
 endfunc
 
-func ff_yuyvtoyuv422_rvv, zve32x
+func ff_yuyvtoyuv422_rvv, zve32x, zbb
 yuy2_to_i422p v16, v20
 endfunc

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

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


[FFmpeg-cvslog] lavc/riscv: explicitly require Zbb for MIN

2024-05-10 Thread Rémi Denis-Courmont
ffmpeg | branch: master | Rémi Denis-Courmont  | Tue May  7 
21:08:03 2024 +0300| [c07af340ae909ea17944c263bfd9ddb4f2889713] | committer: 
Rémi Denis-Courmont

lavc/riscv: explicitly require Zbb for MIN

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c07af340ae909ea17944c263bfd9ddb4f2889713
---

 libavcodec/riscv/aacpsdsp_rvv.S | 2 +-
 libavcodec/riscv/opusdsp_rvv.S  | 2 +-
 libavcodec/riscv/sbrdsp_rvv.S   | 8 
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/libavcodec/riscv/aacpsdsp_rvv.S b/libavcodec/riscv/aacpsdsp_rvv.S
index a79d7d7818..2d6858688a 100644
--- a/libavcodec/riscv/aacpsdsp_rvv.S
+++ b/libavcodec/riscv/aacpsdsp_rvv.S
@@ -207,7 +207,7 @@ func ff_ps_hybrid_synthesis_deint_rvv, zve64x
 ret
 endfunc
 
-func ff_ps_stereo_interpolate_rvv, zve32f
+func ff_ps_stereo_interpolate_rvv, zve32f, zbb
 vsetvli  t0, zero, e32, m2, ta, ma
 vid.vv24
 flw  ft0,   (a2)
diff --git a/libavcodec/riscv/opusdsp_rvv.S b/libavcodec/riscv/opusdsp_rvv.S
index 9a8914c78d..42d845a370 100644
--- a/libavcodec/riscv/opusdsp_rvv.S
+++ b/libavcodec/riscv/opusdsp_rvv.S
@@ -20,7 +20,7 @@
 
 #include "libavutil/riscv/asm.S"
 
-func ff_opus_postfilter_rvv, zve32f
+func ff_opus_postfilter_rvv, zve32f, zbb
 flw fa0, 0(a2) // g0
 sllit1, a1, 2
 flw fa1, 4(a2) // g1
diff --git a/libavcodec/riscv/sbrdsp_rvv.S b/libavcodec/riscv/sbrdsp_rvv.S
index 02feb6451e..918c37882f 100644
--- a/libavcodec/riscv/sbrdsp_rvv.S
+++ b/libavcodec/riscv/sbrdsp_rvv.S
@@ -290,16 +290,16 @@ endfunc
 ret
 .endm
 
-func ff_sbr_hf_apply_noise_0_rvv, zve32f
+func ff_sbr_hf_apply_noise_0_rvv, zve32f, zbb
 hf_apply_noise 0
 endfunc
 
-func ff_sbr_hf_apply_noise_3_rvv, zve32f
+func ff_sbr_hf_apply_noise_3_rvv, zve32f, zbb
not a4, a4 // invert parity of kx
// fall through
 endfunc
 
-func ff_sbr_hf_apply_noise_1_rvv, zve32f
+func ff_sbr_hf_apply_noise_1_rvv, zve32f, zbb
 vsetvli t0, zero, e32, m4, ta, ma
 vid.v   v4
 vxor.vx v4, v4, a4
@@ -307,6 +307,6 @@ func ff_sbr_hf_apply_noise_1_rvv, zve32f
 hf_apply_noise 1
 endfunc
 
-func ff_sbr_hf_apply_noise_2_rvv, zve32f
+func ff_sbr_hf_apply_noise_2_rvv, zve32f, zbb
 hf_apply_noise 2
 endfunc

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

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


[FFmpeg-cvslog] lavu/riscv: remove bespoke assembler for MIN

2024-05-10 Thread Rémi Denis-Courmont
ffmpeg | branch: master | Rémi Denis-Courmont  | Tue May  7 
21:08:43 2024 +0300| [5afe734b6dc9404f4e53ef02507646d56a669456] | committer: 
Rémi Denis-Courmont

lavu/riscv: remove bespoke assembler for MIN

This is no longer necessary as Zbb is now always explicitly required.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5afe734b6dc9404f4e53ef02507646d56a669456
---

 libavutil/riscv/asm.S | 5 -
 1 file changed, 5 deletions(-)

diff --git a/libavutil/riscv/asm.S b/libavutil/riscv/asm.S
index 9d76ab5617..14be5055f5 100644
--- a/libavutil/riscv/asm.S
+++ b/libavutil/riscv/asm.S
@@ -95,11 +95,6 @@
 shnadd  3, \rd, \rs1, \rs2
 .endm
 #endif
-#if !defined (__riscv_zbb)
-.macro  min rd, rs1, rs2
-.insn r OP, 4, 5, \rd, \rs1, \rs2
-.endm
-#endif
 
 /* Convenience macro to load a Vector type (vtype) as immediate */
 .macro  lvtypei rd, e, m=m1, tp=tu, mp=mu

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

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


[FFmpeg-cvslog] avcodec/libaomenc: properly clean up image metadata

2024-05-10 Thread Niklas Haas
ffmpeg | branch: master | Niklas Haas  | Sat May 11 01:16:27 
2024 +0200| [9c6c4f3d476d7a8d423ec3b954254c6a67ebc792] | committer: Niklas Haas

avcodec/libaomenc: properly clean up image metadata

This does not get consumed by aom_codec_encode().

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9c6c4f3d476d7a8d423ec3b954254c6a67ebc792
---

 libavcodec/libaomenc.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c
index b43a902a38..c39853c20f 100644
--- a/libavcodec/libaomenc.c
+++ b/libavcodec/libaomenc.c
@@ -419,6 +419,7 @@ static av_cold int aom_free(AVCodecContext *avctx)
 #endif
 
 aom_codec_destroy(&ctx->encoder);
+aom_img_remove_metadata(&ctx->rawimg);
 av_freep(&ctx->twopass_stats.buf);
 av_freep(&avctx->stats_out);
 free_frame_list(ctx->coded_frame_list);
@@ -1287,6 +1288,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
 break;
 }
 
+aom_img_remove_metadata(rawimg);
 sd = av_frame_get_side_data(frame, AV_FRAME_DATA_DOVI_METADATA);
 if (ctx->dovi.cfg.dv_profile && sd) {
 const AVDOVIMetadata *metadata = (const AVDOVIMetadata *)sd->data;

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

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