This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit 87190fff6e42fc24c23c1a3b8e5831d800eebac7 Author: Rémi Denis-Courmont <[email protected]> AuthorDate: Thu Dec 11 18:58:37 2025 +0200 Commit: Rémi Denis-Courmont <[email protected]> CommitDate: Sun Dec 14 10:33:40 2025 +0200 lavc/llvidencdsp: R-V B sub_median_pred SiFive U74: sub_median_pred_c: 238947.3 ( 1.00x) sub_median_pred_rvb_b: 106686.9 ( 2.24x) SpacemiT X60: sub_median_pred_c: 297862.8 ( 1.00x) sub_median_pred_rvb_b: 101992.2 ( 2.92x) --- libavcodec/riscv/Makefile | 1 + libavcodec/riscv/llvidencdsp_init.c | 13 +++++- .../riscv/{mpegvideo_rvv.S => llvidencdsp_rvb.S} | 50 ++++++++++------------ 3 files changed, 36 insertions(+), 28 deletions(-) diff --git a/libavcodec/riscv/Makefile b/libavcodec/riscv/Makefile index 38021f873f..20f6bc73d6 100644 --- a/libavcodec/riscv/Makefile +++ b/libavcodec/riscv/Makefile @@ -46,6 +46,7 @@ RVV-OBJS-$(CONFIG_LLAUDDSP) += riscv/llauddsp_rvv.o OBJS-$(CONFIG_LLVIDDSP) += riscv/llviddsp_init.o RVV-OBJS-$(CONFIG_LLVIDDSP) += riscv/llviddsp_rvv.o OBJS-$(CONFIG_LLVIDENCDSP) += riscv/llvidencdsp_init.o +RV-OBJS-$(CONFIG_LLVIDDSP) += riscv/llvidencdsp_rvb.o RVV-OBJS-$(CONFIG_LLVIDENCDSP) += riscv/llvidencdsp_rvv.o OBJS-$(CONFIG_LPC) += riscv/lpc_init.o RVV-OBJS-$(CONFIG_LPC) += riscv/lpc_rvv.o diff --git a/libavcodec/riscv/llvidencdsp_init.c b/libavcodec/riscv/llvidencdsp_init.c index bd2ffef42f..75f8438ab4 100644 --- a/libavcodec/riscv/llvidencdsp_init.c +++ b/libavcodec/riscv/llvidencdsp_init.c @@ -24,6 +24,12 @@ #include "libavutil/cpu.h" #include "libavcodec/lossless_videoencdsp.h" +#include "libavcodec/mathops.h" +#include <sys/param.h> + +void ff_llvidenc_sub_median_pred_rvb(uint8_t *dst, const uint8_t *src1, + const uint8_t *src2, intptr_t w, + int *left, int *left_top); void ff_llvidenc_diff_bytes_rvv(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, intptr_t w); void ff_llvidenc_sub_left_predict_rvv(uint8_t *dst, const uint8_t *src, @@ -32,12 +38,17 @@ void ff_llvidenc_sub_left_predict_rvv(uint8_t *dst, const uint8_t *src, av_cold void ff_llvidencdsp_init_riscv(LLVidEncDSPContext *c) { -#if HAVE_RVV +#if HAVE_RV int flags = av_get_cpu_flags(); + if (flags & AV_CPU_FLAG_RVB_BASIC) + c->sub_median_pred = ff_llvidenc_sub_median_pred_rvb; + +#if HAVE_RVV if (flags & AV_CPU_FLAG_RVV_I32) { c->diff_bytes = ff_llvidenc_diff_bytes_rvv; c->sub_left_predict = ff_llvidenc_sub_left_predict_rvv; } #endif +#endif } diff --git a/libavcodec/riscv/mpegvideo_rvv.S b/libavcodec/riscv/llvidencdsp_rvb.S similarity index 56% copy from libavcodec/riscv/mpegvideo_rvv.S copy to libavcodec/riscv/llvidencdsp_rvb.S index 5312413db4..d34aef394e 100644 --- a/libavcodec/riscv/mpegvideo_rvv.S +++ b/libavcodec/riscv/llvidencdsp_rvb.S @@ -1,5 +1,5 @@ /* - * Copyright © 2024 Rémi Denis-Courmont. + * Copyright © 2025 Rémi Denis-Courmont. * * This file is part of FFmpeg. * @@ -20,34 +20,30 @@ #include "libavutil/riscv/asm.S" -func ff_h263_dct_unquantize_intra_rvv +func ff_llvidenc_sub_median_pred_rvb, zbb lpad 0 - addi a1, a1, 2 - beqz a4, 1f - slli a3, a3, 1 - mv a4, zero - j 2f -endfunc - -func ff_h263_dct_unquantize_inter_rvv, zve32x, zba - lpad 0 - addi a2, a2, 1 + lbu t4, (a4) # l + lbu t5, (a5) # lt + add a3, a0, a3 1: - addi a4, a3, -1 - slli a3, a3, 1 - ori a4, a4, 1 -2: - vsetvli t0, a2, e16, m8, ta, mu - vle16.v v8, (a1) - sub a2, a2, t0 - vmv.v.x v16, a4 - vmslt.vi v0, v8, 0 - vneg.v v16, v16, v0.t - vmsne.vi v0, v8, 0 - vmadd.vx v8, a3, v16, v0.t - vse16.v v8, (a1) - sh1add a1, t0, a1 - bnez a2, 2b + lbu t1, (a1) # src1 + addi a1, a1, 1 + add t6, t4, t1 + max t3, t4, t1 + sub t6, t6, t5 # l + src1 - lt + min t0, t4, t1 + andi t6, t6, 0xff + mv t5, t1 + min t3, t3, t6 + lbu t4, (a2) # src2 + addi a0, a0, 1 + max t6, t0, t3 # mid_pred(...) + sub t0, t4, t6 + addi a2, a2, 1 + sb t0, -1(a0) + bne a0, a3, 1b + sw t4, (a4) + sw t5, (a5) ret endfunc _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
