[FFmpeg-cvslog] lavc/vp8dsp: R-V V put_bilin_hv
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
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
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
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
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
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
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
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
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
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".