From patchwork Sat Mar 2 07:42:06 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: flow gg X-Patchwork-Id: 46692 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a919:b0:19e:cdac:8cce with SMTP id cd25csp1729432pzb; Fri, 1 Mar 2024 23:42:28 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCXFkC4XASinY+2Pvz/FVtBFdZvopvZbsgMkvF0WIzjOaK5036QP9RHGFayNZI9PRmDsDy2wB7UmZ2Fmg4j4FcUflEIpuQ276weHdA== X-Google-Smtp-Source: AGHT+IGYgwmB5BA3VlslG4u0HYTcS8j/X1rTiRVnvxLRgODlhurcUZPLn2Vl5gVJmz9Vdv33PzBO X-Received: by 2002:a17:907:8e86:b0:a3f:a12:f8e6 with SMTP id tx6-20020a1709078e8600b00a3f0a12f8e6mr3072225ejc.6.1709365348105; Fri, 01 Mar 2024 23:42:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1709365348; cv=none; d=google.com; s=arc-20160816; b=SkoNZM8RBCwYQtUhE3mb+rR9ecrfWsvY6NkgaLabT63saXVkmGuMtgBmSHsiOZN4Lj gUKH1wQISWBm/N/CXDeOkW4KEQISaGj9ae3vkV+ubv16fYBX+1EaPC8oyx50BXWq1MYW 2bDxxK3OwZ4c+qdKlLyei6arnKoqhGXt3mDvDTuNkMXDo6l0I1LFbgcgPDGv8dlO8iv/ sqMFz1IRkEdBSX0lurcH4yW2k6Vf/Qzs7XaCsVs51Igo9JRPvaBKj7cKMF2YEzSXCd9m 8gE0LNXrKUH1BDBKRT5gPJpCNHZa7vGDKno2Rn56jeAHNpkbGvVHLXq+MqIoj0gzq1MA aOVQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject:to :message-id:date:from:mime-version:dkim-signature:delivered-to; bh=leZPxpevKcA/RnWBIdP3tQjrmZh9SfpRMjiokhKOKmM=; fh=e5zN9xSzcxLA6bGo3lF+CqTbY/oLwzApV03EO/RBfgQ=; b=K5FZypsaUcJ64TY6Bm7N8QQqmecg823s+nta86PRkv+5z898anIyUJRdWFg8wat1o9 WB00BKCBIEe8saTHZOn1pMdKvjXtTxU+NaFJY7MY1qyxgdlRbDFQMGtcTS7Wu3oz8i1e sSvfyM06Mhms+Vi07mn+5daKHQYBes0tg15zrGdC5E+dEqphk1h//u6B+fuiWe0NrKru LPAlmI18clkEUAv2UtZbBNU1ZUbCGefCOoV9GyREOoG0AfnE262OyPqrO0xdHf3nRyWW wj3IIP9t22Wxl9QWKDM057lHHMMkfXsRJokd2bW1pGYLBqwDh8d4dWDm88cmlegXBb6d 1MCA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=VVNDrI2u; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id o15-20020a17090611cf00b00a442bf21c32si2064974eja.653.2024.03.01.23.42.27; Fri, 01 Mar 2024 23:42:28 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=VVNDrI2u; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4B42A68D28E; Sat, 2 Mar 2024 09:42:25 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f43.google.com (mail-qv1-f43.google.com [209.85.219.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 40BD568D28E for ; Sat, 2 Mar 2024 09:42:19 +0200 (EET) Received: by mail-qv1-f43.google.com with SMTP id 6a1803df08f44-6903ffc4bc6so11034936d6.2 for ; Fri, 01 Mar 2024 23:42:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709365337; x=1709970137; darn=ffmpeg.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=RpYycfeqqhoQoQ+fsKdtE6Ru3P26e3gLivJEidYcfBY=; b=VVNDrI2uHflSrWmwzbfCs7JELx9xgMm6i5L7HhwZ2s+8CDEgeNHW/qZclnGKl82wz0 +fSWGN0sWUFyRbooeQlZdVmxRBc85ufcg9rRh422pyAPZGxk60xgTCbsePH3yOVmKBVm sg66yy+L+J8Bv5sOpOkLZjW9WpS3VG+8ZRIvT/ZFOLOBj1p3nBTsui4bGowpGapuDxnF PjjvmxlErI/8C5db7toEj9SN9As44s5O2oweiO2tCv/ia+LxlONCCdroAHhpyRQ27NB+ OKdfsD8kfxyy7Y8/VnI00hW5w4I2ZLAF+I9A+IqA9WmqU7DLp3ESCuJTT4AB6i4q4kpc 2M+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709365337; x=1709970137; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=RpYycfeqqhoQoQ+fsKdtE6Ru3P26e3gLivJEidYcfBY=; b=iHyV8XuyfWGC/fDxML6cTiLjd7meR9ZPrBlj9KvLTJOjru9jKuF7CJhNPn/U0SiLP2 pR/Gp19D7zFkkV7NNPVLhx+bqIRKo9Avz7Gp2lYJyXU5IQKeYJOq4ki/byhGCERb3ybE /+0b+wLR32cVI/EGrFw3N/j2iZ9c5kjW78U6Aju/XKQta3ovJdHrh8Jm+7+qB/jXsgpN Z/C4MAwVunhUTeDnDSxHz7tt0dzfFQhSO5oS2lDSmoDyNyXIu7p4Q6MXLEKgecLLckoW iZLdzx0lwW1TBtjEUqt9mRPnPI1Jk0scE9LCZ12VQr/C6jXgiu2veYn+F6V+CvTwMrqs uBhA== X-Gm-Message-State: AOJu0Yy4qRkvyd+bC8QQ/tj2vGqvO2j5o203hS2bW8/T9tCKhyFW1qjt 6w2CCWemvdtr8MGfikpbSSoxTbb2lSYpodk6O9H0MqL+o5jMpH0LVk4Yei92nTZdn/4LvLIXnL7 sYGQxlt7nKoa8Sxx9nhMtOezwq1I3KLAIqZY= X-Received: by 2002:a0c:9b02:0:b0:68f:6f52:e7cb with SMTP id b2-20020a0c9b02000000b0068f6f52e7cbmr4343681qve.55.1709365337681; Fri, 01 Mar 2024 23:42:17 -0800 (PST) MIME-Version: 1.0 From: flow gg Date: Sat, 2 Mar 2024 15:42:06 +0800 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH 1/4] lavc/vp9dsp: R-V V ipred dc X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: tvF0x+AXAVI5 From adaae06a3e18bccec1772a3134334cbea652ae77 Mon Sep 17 00:00:00 2001 From: sunyuechi Date: Mon, 26 Feb 2024 14:42:17 +0800 Subject: [PATCH 1/4] lavc/vp9dsp: R-V V ipred dc C908: vp9_dc_8x8_8bpp_c: 46.0 vp9_dc_8x8_8bpp_rvv_i64: 41.0 vp9_dc_16x16_8bpp_c: 109.2 vp9_dc_16x16_8bpp_rvv_i32: 72.7 vp9_dc_32x32_8bpp_c: 365.2 vp9_dc_32x32_8bpp_rvv_i32: 165.5 vp9_dc_127_8x8_8bpp_c: 23.0 vp9_dc_127_8x8_8bpp_rvv_i64: 22.0 vp9_dc_127_16x16_8bpp_c: 70.2 vp9_dc_127_16x16_8bpp_rvv_i32: 51.7 vp9_dc_127_32x32_8bpp_c: 295.2 vp9_dc_127_32x32_8bpp_rvv_i32: 140.2 vp9_dc_128_8x8_8bpp_c: 23.0 vp9_dc_128_8x8_8bpp_rvv_i64: 22.0 vp9_dc_128_16x16_8bpp_c: 70.2 vp9_dc_128_16x16_8bpp_rvv_i32: 51.7 vp9_dc_128_32x32_8bpp_c: 295.2 vp9_dc_128_32x32_8bpp_rvv_i32: 140.2 vp9_dc_129_8x8_8bpp_c: 23.0 vp9_dc_129_8x8_8bpp_rvv_i64: 22.0 vp9_dc_129_16x16_8bpp_c: 70.2 vp9_dc_129_16x16_8bpp_rvv_i32: 51.7 vp9_dc_129_32x32_8bpp_c: 295.2 vp9_dc_129_32x32_8bpp_rvv_i32: 140.2 vp9_dc_left_8x8_8bpp_c: 38.0 vp9_dc_left_8x8_8bpp_rvv_i64: 36.0 vp9_dc_left_16x16_8bpp_c: 93.2 vp9_dc_left_16x16_8bpp_rvv_i32: 67.7 vp9_dc_left_32x32_8bpp_c: 333.2 vp9_dc_left_32x32_8bpp_rvv_i32: 158.5 vp9_dc_top_8x8_8bpp_c: 38.7 vp9_dc_top_8x8_8bpp_rvv_i64: 36.0 vp9_dc_top_16x16_8bpp_c: 93.2 vp9_dc_top_16x16_8bpp_rvv_i32: 67.7 vp9_dc_top_32x32_8bpp_c: 333.2 vp9_dc_top_32x32_8bpp_rvv_i32: 156.2 --- libavcodec/riscv/Makefile | 2 + libavcodec/riscv/vp9_intra_rvv.S | 201 +++++++++++++++++++++++++++++++ libavcodec/riscv/vp9dsp.h | 64 ++++++++++ libavcodec/riscv/vp9dsp_init.c | 61 ++++++++++ libavcodec/vp9dsp.c | 2 + libavcodec/vp9dsp.h | 1 + 6 files changed, 331 insertions(+) create mode 100644 libavcodec/riscv/vp9_intra_rvv.S create mode 100644 libavcodec/riscv/vp9dsp.h create mode 100644 libavcodec/riscv/vp9dsp_init.c diff --git a/libavcodec/riscv/Makefile b/libavcodec/riscv/Makefile index dff8784102..c237e60800 100644 --- a/libavcodec/riscv/Makefile +++ b/libavcodec/riscv/Makefile @@ -60,5 +60,7 @@ OBJS-$(CONFIG_VC1DSP) += riscv/vc1dsp_init.o RVV-OBJS-$(CONFIG_VC1DSP) += riscv/vc1dsp_rvv.o OBJS-$(CONFIG_VP8DSP) += riscv/vp8dsp_init.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 OBJS-$(CONFIG_VORBIS_DECODER) += riscv/vorbisdsp_init.o RVV-OBJS-$(CONFIG_VORBIS_DECODER) += riscv/vorbisdsp_rvv.o diff --git a/libavcodec/riscv/vp9_intra_rvv.S b/libavcodec/riscv/vp9_intra_rvv.S new file mode 100644 index 0000000000..b3b0470cfc --- /dev/null +++ b/libavcodec/riscv/vp9_intra_rvv.S @@ -0,0 +1,201 @@ +/* + * Copyright (c) 2024 Institue of Software Chinese Academy of Sciences (ISCAS). + * + * 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 + */ + +#include "libavutil/riscv/asm.S" + +.macro getdc type size + vmv.v.x v16, zero +.ifc \type,top + vle8.v v8, (a3) + vwredsumu.vs v16, v8, v16 + vsetivli zero, 1, e16, m1, ta, ma + vmv.x.s t1, v16 + .ifc \size,32 + addi t1, t1, 16 + srai t1, t1, 5 + .elseif \size == 16 + addi t1, t1, 8 + srai t1, t1, 4 + .elseif \size == 8 + addi t1, t1, 4 + srai t1, t1, 3 + .endif +.elseif \type == left + vle8.v v8, (a2) + vwredsumu.vs v16, v8, v16 + vsetivli zero, 1, e16, m1, ta, ma + vmv.x.s t1, v16 + .ifc \size,32 + addi t1, t1, 16 + srai t1, t1, 5 + .elseif \size == 16 + addi t1, t1, 8 + srai t1, t1, 4 + .elseif \size == 8 + addi t1, t1, 4 + srai t1, t1, 3 + .endif +.elseif \type == 127 + li t1, 127 +.elseif \type == 128 + li t1, 128 +.elseif \type == 129 + li t1, 129 +.elseif \type == none + vle8.v v8, (a2) + vwredsumu.vs v16, v8, v16 + vle8.v v8, (a3) + vwredsumu.vs v16, v8, v16 + vsetivli zero, 1, e16, m1, ta, ma + vmv.x.s t1, v16 + .ifc \size,32 + addi t1, t1, 32 + srai t1, t1, 6 + .elseif \size == 16 + addi t1, t1, 16 + srai t1, t1, 5 + .elseif \size == 8 + addi t1, t1, 8 + srai t1, t1, 4 + .endif +.endif +.endm + +.macro dc32x32 type restore + li t0, 32 + vsetvli zero, t0, e8, m2, ta, ma + getdc \type 32 + + .ifc \restore,1 + vsetvli zero, t0, e8, m2, ta, ma + .endif + vmv.v.x v0, t1 + + .rept 31 + vse8.v v0, (a0) + add a0, a0, a1 + .endr + vse8.v v0, (a0) + + ret +.endm + +.macro dc16x16 type restore + vsetivli zero, 16, e8, m1, ta, ma + getdc \type 16 + + .ifc \restore,1 + vsetivli zero, 16, e8, m1, ta, ma + .endif + vmv.v.x v0, t1 + + .rept 15 + vse8.v v0, (a0) + add a0, a0, a1 + .endr + vse8.v v0, (a0) + + ret +.endm + +.macro dc8x8 type + vsetivli zero, 8, e8, mf2, ta, ma + getdc \type 8 + + li t0, 64 + vsetvli zero, t0, e8, m4, ta, ma + vmv.v.x v0, t1 + vsetivli zero, 8, e8, mf2, ta, ma + vsse64.v v0, (a0), a1 + + ret +.endm + +func ff_dc_127_32x32_rvv, zve32x + dc32x32 127 0 +endfunc + +func ff_dc_127_16x16_rvv, zve32x + dc16x16 127 0 +endfunc + +func ff_dc_127_8x8_rvv, zve64x + dc8x8 127 +endfunc + +func ff_dc_128_32x32_rvv, zve32x + dc32x32 128 0 +endfunc + +func ff_dc_128_16x16_rvv, zve32x + dc16x16 128 0 +endfunc + +func ff_dc_128_8x8_rvv, zve64x + dc8x8 128 +endfunc + +func ff_dc_129_32x32_rvv, zve32x + dc32x32 129 0 +endfunc + +func ff_dc_129_16x16_rvv, zve32x + dc16x16 129 0 +endfunc + +func ff_dc_129_8x8_rvv, zve64x + dc8x8 129 +endfunc + +func ff_dc_32x32_rvv, zve32x + dc32x32 none 1 +endfunc + +func ff_dc_16x16_rvv, zve32x + dc16x16 none 1 +endfunc + +func ff_dc_8x8_rvv, zve64x + dc8x8 none +endfunc + +func ff_dc_left_32x32_rvv, zve32x + dc32x32 left 1 +endfunc + +func ff_dc_left_16x16_rvv, zve32x + dc16x16 left 1 +endfunc + +func ff_dc_left_8x8_rvv, zve64x + dc8x8 left +endfunc + +func ff_dc_top_32x32_rvv, zve32x + dc32x32 top 1 +endfunc + +func ff_dc_top_16x16_rvv, zve32x + dc16x16 top 1 +endfunc + +func ff_dc_top_8x8_rvv, zve64x + dc8x8 top +endfunc diff --git a/libavcodec/riscv/vp9dsp.h b/libavcodec/riscv/vp9dsp.h new file mode 100644 index 0000000000..abd57bd836 --- /dev/null +++ b/libavcodec/riscv/vp9dsp.h @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2024 Institue of Software Chinese Academy of Sciences (ISCAS). + * + * 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_VP9DSP_RISCV_H +#define AVCODEC_RISCV_VP9DSP_RISCV_H + +#include +#include + +void ff_dc_32x32_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); +void ff_dc_16x16_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); +void ff_dc_8x8_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); +void ff_dc_top_32x32_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); +void ff_dc_top_16x16_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); +void ff_dc_top_8x8_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); +void ff_dc_left_32x32_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); +void ff_dc_left_16x16_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); +void ff_dc_left_8x8_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); +void ff_dc_127_32x32_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); +void ff_dc_127_16x16_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); +void ff_dc_127_8x8_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); +void ff_dc_128_32x32_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); +void ff_dc_128_16x16_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); +void ff_dc_128_8x8_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); +void ff_dc_129_32x32_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); +void ff_dc_129_16x16_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); +void ff_dc_129_8x8_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); + +#endif // #ifndef AVCODEC_RISCV_VP9DSP_RISCV_H diff --git a/libavcodec/riscv/vp9dsp_init.c b/libavcodec/riscv/vp9dsp_init.c new file mode 100644 index 0000000000..69ab39004c --- /dev/null +++ b/libavcodec/riscv/vp9dsp_init.c @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2024 Institue of Software Chinese Academy of Sciences (ISCAS). + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lervvr 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 + * Lervvr General Public License for more details. + * + * You should have received a copy of the GNU Lervvr 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 + */ + +#include "libavutil/attributes.h" +#include "libavutil/cpu.h" +#include "libavutil/riscv/cpu.h" +#include "libavcodec/vp9dsp.h" +#include "vp9dsp.h" + +static av_cold void vp9dsp_intrapred_init_rvv(VP9DSPContext *dsp, int bpp) +{ + #if HAVE_RVV + int flags = av_get_cpu_flags(); + + if (bpp == 8 && flags & AV_CPU_FLAG_RVV_I64 && ff_get_rv_vlenb() >= 16) { + dsp->intra_pred[TX_8X8][DC_PRED] = ff_dc_8x8_rvv; + dsp->intra_pred[TX_8X8][LEFT_DC_PRED] = ff_dc_left_8x8_rvv; + dsp->intra_pred[TX_8X8][DC_127_PRED] = ff_dc_127_8x8_rvv; + dsp->intra_pred[TX_8X8][DC_128_PRED] = ff_dc_128_8x8_rvv; + dsp->intra_pred[TX_8X8][DC_129_PRED] = ff_dc_129_8x8_rvv; + dsp->intra_pred[TX_8X8][TOP_DC_PRED] = ff_dc_top_8x8_rvv; + } + + if (bpp == 8 && flags & AV_CPU_FLAG_RVV_I32 && ff_get_rv_vlenb() >= 16) { + dsp->intra_pred[TX_32X32][DC_PRED] = ff_dc_32x32_rvv; + dsp->intra_pred[TX_16X16][DC_PRED] = ff_dc_16x16_rvv; + dsp->intra_pred[TX_32X32][LEFT_DC_PRED] = ff_dc_left_32x32_rvv; + dsp->intra_pred[TX_16X16][LEFT_DC_PRED] = ff_dc_left_16x16_rvv; + dsp->intra_pred[TX_32X32][DC_127_PRED] = ff_dc_127_32x32_rvv; + dsp->intra_pred[TX_16X16][DC_127_PRED] = ff_dc_127_16x16_rvv; + dsp->intra_pred[TX_32X32][DC_128_PRED] = ff_dc_128_32x32_rvv; + dsp->intra_pred[TX_16X16][DC_128_PRED] = ff_dc_128_16x16_rvv; + dsp->intra_pred[TX_32X32][DC_129_PRED] = ff_dc_129_32x32_rvv; + dsp->intra_pred[TX_16X16][DC_129_PRED] = ff_dc_129_16x16_rvv; + dsp->intra_pred[TX_32X32][TOP_DC_PRED] = ff_dc_top_32x32_rvv; + dsp->intra_pred[TX_16X16][TOP_DC_PRED] = ff_dc_top_16x16_rvv; + } + #endif +} + +av_cold void ff_vp9dsp_init_riscv(VP9DSPContext *dsp, int bpp, int bitexact) +{ + vp9dsp_intrapred_init_rvv(dsp, bpp); +} diff --git a/libavcodec/vp9dsp.c b/libavcodec/vp9dsp.c index d8ddf74d4f..967e6e1e1a 100644 --- a/libavcodec/vp9dsp.c +++ b/libavcodec/vp9dsp.c @@ -100,6 +100,8 @@ av_cold void ff_vp9dsp_init(VP9DSPContext *dsp, int bpp, int bitexact) ff_vp9dsp_init_aarch64(dsp, bpp); #elif ARCH_ARM ff_vp9dsp_init_arm(dsp, bpp); +#elif ARCH_RISCV + ff_vp9dsp_init_riscv(dsp, bpp, bitexact); #elif ARCH_X86 ff_vp9dsp_init_x86(dsp, bpp, bitexact); #elif ARCH_MIPS diff --git a/libavcodec/vp9dsp.h b/libavcodec/vp9dsp.h index be0ac0b181..772848e349 100644 --- a/libavcodec/vp9dsp.h +++ b/libavcodec/vp9dsp.h @@ -131,6 +131,7 @@ void ff_vp9dsp_init_12(VP9DSPContext *dsp); void ff_vp9dsp_init_aarch64(VP9DSPContext *dsp, int bpp); void ff_vp9dsp_init_arm(VP9DSPContext *dsp, int bpp); +void ff_vp9dsp_init_riscv(VP9DSPContext *dsp, int bpp, int bitexact); void ff_vp9dsp_init_x86(VP9DSPContext *dsp, int bpp, int bitexact); void ff_vp9dsp_init_mips(VP9DSPContext *dsp, int bpp); void ff_vp9dsp_init_loongarch(VP9DSPContext *dsp, int bpp); -- 2.44.0 From patchwork Sat Mar 2 07:42:21 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: flow gg X-Patchwork-Id: 46691 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a919:b0:19e:cdac:8cce with SMTP id cd25csp1729500pzb; Fri, 1 Mar 2024 23:42:44 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCUa+1xVfPGQkOJXfABlYOMKGog0SXA4IoAmeJMsn0vLz3CH2pn75u3Jl3A76jPXQF/6K7SKCM4TLcM2cdPsSu/bB30o5uB4b7z+qA== X-Google-Smtp-Source: AGHT+IF7wm8JhkscybJo61f5kkx2xlwhq5x3n02XDO97Dj4PE/tiaxkoiu7qBIXNw3vKjWJvnXEu X-Received: by 2002:a17:907:1708:b0:a43:dc5f:f271 with SMTP id le8-20020a170907170800b00a43dc5ff271mr2924822ejc.42.1709365364502; Fri, 01 Mar 2024 23:42:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1709365364; cv=none; d=google.com; s=arc-20160816; b=MzmQe6+eaMANMWUMOnJSDO/1JoPIsP+NDWUtZ1lDmou3TzimpIsXmqHr3OEt8l+wHq kARNqA3HpC+eXv8Tsswz9xQNEpJ2xBOOeakQ/S6TdFKdD0YxzIQSMRtaR0H/3BgwrnTT GwTJ8pI7qIE/MURvxo62Qb37l55W5GfYx7zVogZ+NH0hWzmIbtw4lgkquI2NyovyGR27 JOWsZ+OoHh9RbYaGjS/f+61vx228RkPJLabvKx6n+1BLu6Qu5sZ/IqTgrMC2Ivwen8dc 7RVHk6jXgrA2K/KepRqhY2cd8y1vWq0vBCLxAF+7VZQLBI8RqVa4g+8xArQ0gywz76RJ SWpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject:to :message-id:date:from:mime-version:dkim-signature:delivered-to; bh=g68D4DtpaATAxXzT6PD0mrSgkr0/NKoLBpJG7p5X1zk=; fh=e5zN9xSzcxLA6bGo3lF+CqTbY/oLwzApV03EO/RBfgQ=; b=GpXE/cOXdSEIrYxY5QAnztHlLWvDShjLGnNR7LV6Ew2zQgv+Hzc42QN0eJunM7HPKy qflCMiWYihz6xHqp16Al7No5EPHQfpSJuyK+CnHtBiQ/ypWXiCZFES++bmayAy4o7H2r 9x2XRvDGJbBTh5mx278VbxH4OEK/DAA8YLFTF2EhhXg+zOZ89iHJu/zc+33DIAayEzMA 18SuCWoSi5BY9ufcslbRbfNyztoQHvZF+M+Mc+85ynMsmsXZLSl0FQilVyR/V8grBK8r Ph/Jt9uvOW7SAlVI856Tz+5JRChwGE5mGS+5yQmdJ4lR7in6h2oxSddD+Aux3TwUXXHk VRtQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b="GCYu/OOR"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id e13-20020a170906044d00b00a449e80c9fcsi1016525eja.617.2024.03.01.23.42.43; Fri, 01 Mar 2024 23:42:44 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b="GCYu/OOR"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6B32768D2F9; Sat, 2 Mar 2024 09:42:41 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f175.google.com (mail-qk1-f175.google.com [209.85.222.175]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8E0DE68D2E9 for ; Sat, 2 Mar 2024 09:42:34 +0200 (EET) Received: by mail-qk1-f175.google.com with SMTP id af79cd13be357-7881b8f4155so6210185a.0 for ; Fri, 01 Mar 2024 23:42:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709365353; x=1709970153; darn=ffmpeg.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=/cFMM0hdi0bZmFS7/L70fYaQ50ueX/9r8nJbv4IR5J4=; b=GCYu/OOR6Kzly/JzyzWjAXoUUmq779gC1vQ6yadofI4GdHI3M579UikRGi9mP7fydQ Fweo19D4U15epyyHfTLsQeCZjzNCulpS8mzeTtzSm8Y6IqXzP6Cgid49psCZcDJEBYtv 9meFs8LNOavdwsJbBZUUdIHpoRsd7iTKlKY/c4AnvQGAxdhyRW0gJ1fQao5NCP0wzKJn FbWkmjWa0muMlXOBAC+2v8T2CVZNx37IZ1X7VYIGxbUg6jdrbCOzBIJ6LBQFIvuBmilL DGq6kjBZ2uNxgFEVCMVUtInTJBOrf8eUoF26BiXKLGx8ce5zSNpUQcqvbWFV+KigSipd ItEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709365353; x=1709970153; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=/cFMM0hdi0bZmFS7/L70fYaQ50ueX/9r8nJbv4IR5J4=; b=KDJLeVKtDo86rUZSdKJpyupxTdC5aE8B63VAHV33AYCLGuFKDbfJ1MutZCwkzUumtm eOLk5KVHv4499z0ECqyeOlZdghlpmjgDlJBDh8KC1k6w9lmUhM7qGsm+L47BpvCy8VyX Jy3LmlHdGqRk8gP/N7UJs//K7+03jZKX3BYRuHPnmWVyfTPS6lPfQSFh1sMi1aOeNDvz B3Z9YMwnDJiVNMlcwYKI7T0QSCwVjNsk3Cep8MIVkod4pSxGCEWvRfIf+oio6Bf3SR6O ZdN1Rky3pXYG1OlBD5e+1zI613sx1yNuiv1OxhGYqrXgddK7sWoHF445gHjT0YAsdwd4 pJeQ== X-Gm-Message-State: AOJu0YyzxTUP91tqLBWIYpucvsRwa+7T2ukgizQCskCfH/b5JXPQ6xV2 4To1lWfov8ZUljnKNpRTUwgsnq0/uiqUglykIHUUMNIcZJQr1pa2RAhqGs/TK3fu7RV8opFdi8a L2TK7y5vEqT1kEPGrhJRCpfrxENr5TLIaNHQ= X-Received: by 2002:a05:620a:7fb:b0:787:9304:84 with SMTP id k27-20020a05620a07fb00b0078793040084mr3648423qkk.21.1709365353065; Fri, 01 Mar 2024 23:42:33 -0800 (PST) MIME-Version: 1.0 From: flow gg Date: Sat, 2 Mar 2024 15:42:21 +0800 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH 2/4] lavc/vp9dsp: R-V V ipred vert X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: oPA8Hcxi2xr1 From 7abd262daa281cee412a905ea75a5f10dd0b1fbe Mon Sep 17 00:00:00 2001 From: sunyuechi Date: Fri, 1 Mar 2024 18:38:43 +0800 Subject: [PATCH 2/4] lavc/vp9dsp: R-V V ipred vert C908: vp9_vert_8x8_8bpp_c: 22.0 vp9_vert_8x8_8bpp_rvv_i64: 18.5 vp9_vert_16x16_8bpp_c: 71.2 vp9_vert_16x16_8bpp_rvv_i32: 50.7 vp9_vert_32x32_8bpp_c: 300.2 vp9_vert_32x32_8bpp_rvv_i32: 136.7 --- libavcodec/riscv/vp9_intra_rvv.S | 35 ++++++++++++++++++++++++++++++++ libavcodec/riscv/vp9dsp.h | 6 ++++++ libavcodec/riscv/vp9dsp_init.c | 3 +++ 3 files changed, 44 insertions(+) diff --git a/libavcodec/riscv/vp9_intra_rvv.S b/libavcodec/riscv/vp9_intra_rvv.S index b3b0470cfc..88b54f37b0 100644 --- a/libavcodec/riscv/vp9_intra_rvv.S +++ b/libavcodec/riscv/vp9_intra_rvv.S @@ -199,3 +199,38 @@ endfunc func ff_dc_top_8x8_rvv, zve64x dc8x8 top endfunc + +func ff_v_32x32_rvv, zve32x + vsetivli zero, 8, e8, mf2, ta, ma + vle32.v v8, (a3) + + .rept 31 + vse32.v v8, (a0) + add a0, a0, a1 + .endr + vse32.v v8, (a0) + + ret +endfunc + +func ff_v_16x16_rvv, zve32x + vsetivli zero, 4, e8, mf4, ta, ma + vle32.v v8, (a3) + + .rept 15 + vse32.v v8, (a0) + add a0, a0, a1 + .endr + vse32.v v8, (a0) + + ret +endfunc + +func ff_v_8x8_rvv, zve64x + ld t0, (a3) + vsetivli zero, 8, e64, m4, ta, ma + vmv.v.x v8, t0 + vsse64.v v8, (a0), a1 + + ret +endfunc diff --git a/libavcodec/riscv/vp9dsp.h b/libavcodec/riscv/vp9dsp.h index abd57bd836..ae4fb266d0 100644 --- a/libavcodec/riscv/vp9dsp.h +++ b/libavcodec/riscv/vp9dsp.h @@ -60,5 +60,11 @@ void ff_dc_129_16x16_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, const uint8_t *a); void ff_dc_129_8x8_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, const uint8_t *a); +void ff_v_32x32_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); +void ff_v_16x16_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); +void ff_v_8x8_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); #endif // #ifndef AVCODEC_RISCV_VP9DSP_RISCV_H diff --git a/libavcodec/riscv/vp9dsp_init.c b/libavcodec/riscv/vp9dsp_init.c index 69ab39004c..9c550d40b5 100644 --- a/libavcodec/riscv/vp9dsp_init.c +++ b/libavcodec/riscv/vp9dsp_init.c @@ -36,6 +36,7 @@ static av_cold void vp9dsp_intrapred_init_rvv(VP9DSPContext *dsp, int bpp) dsp->intra_pred[TX_8X8][DC_128_PRED] = ff_dc_128_8x8_rvv; dsp->intra_pred[TX_8X8][DC_129_PRED] = ff_dc_129_8x8_rvv; dsp->intra_pred[TX_8X8][TOP_DC_PRED] = ff_dc_top_8x8_rvv; + dsp->intra_pred[TX_8X8][VERT_PRED] = ff_v_8x8_rvv; } if (bpp == 8 && flags & AV_CPU_FLAG_RVV_I32 && ff_get_rv_vlenb() >= 16) { @@ -51,6 +52,8 @@ static av_cold void vp9dsp_intrapred_init_rvv(VP9DSPContext *dsp, int bpp) dsp->intra_pred[TX_16X16][DC_129_PRED] = ff_dc_129_16x16_rvv; dsp->intra_pred[TX_32X32][TOP_DC_PRED] = ff_dc_top_32x32_rvv; dsp->intra_pred[TX_16X16][TOP_DC_PRED] = ff_dc_top_16x16_rvv; + dsp->intra_pred[TX_32X32][VERT_PRED] = ff_v_32x32_rvv; + dsp->intra_pred[TX_16X16][VERT_PRED] = ff_v_16x16_rvv; } #endif } -- 2.44.0 From patchwork Sat Mar 2 07:42:36 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: flow gg X-Patchwork-Id: 46693 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a919:b0:19e:cdac:8cce with SMTP id cd25csp1729555pzb; Fri, 1 Mar 2024 23:42:58 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCXIXCbJJ7X0NrBla2t6RCGS58cuJoScEUMqAirhUq99DOVXglv6CbBa8CLnVGGNK+PszI/FlrZReIVdFAYZuH3GNuCXWy4kWjNTdg== X-Google-Smtp-Source: AGHT+IEsQxPSdgd7ALsrSX4F+8sF6b0eMOmAl7fLhCE/10ubwYTA3z2Q/5s8gDP2kZ0Nh3NZiINV X-Received: by 2002:a17:907:20b9:b0:a3e:7dbe:298b with SMTP id pw25-20020a17090720b900b00a3e7dbe298bmr2225092ejb.24.1709365377941; Fri, 01 Mar 2024 23:42:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1709365377; cv=none; d=google.com; s=arc-20160816; b=g8Dezd9BPgwmGteIpLWfFDxgW+koGzCNy16TVbkUYwgsBonqaKKy7nCK88U8CFBozZ a19Omks0va+msOE83eneslBD7OoamGcxqXu7o0gyj9q6eo72JarVPHNsQsU9i/NqLTfo IiQCTHR6hEixiw9ACkSKzWiKYFyDeltJ2+1VGvbvG3M5UKFB2R5t2Byu4MNwH+RliHNg iMUzANj1/XE5lNOqJj1+6Eb99mNoYXqMKHqZh7agN0a/ei+tR6QCa+ZGadFs65eWYuYg QAHR+BlJun+ljEZmRoPKkozlizm8pn9nDhy3WB7/y3m1/j5jE4thuvdQVMjVmX7KjOPO MbvA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject:to :message-id:date:from:mime-version:dkim-signature:delivered-to; bh=dfBBs+eZBQYSgKyFeWSOsWIhQ6mmZdHhYSa7OMGmL6U=; fh=e5zN9xSzcxLA6bGo3lF+CqTbY/oLwzApV03EO/RBfgQ=; b=ipVtMInC7AY1hLL2RUnjGXVjPH5nBBnkcxiWiTndoki1ZpX93CvETkc0Ggsc52f/i+ FSGeuSjgKB9f4Ms7eHKebztMZIxkXLQ2OxSlNXoXQmT7dU0/8AFnKv6yPn4ArzwOKnSL FMGJh7r+WK2PTcSsJt4yY+09caYZfT3QnUjJPMA1myp8ED4YuMRbvkzMqq5Fad8qoZG3 hWQwisNe2IFipp56LE5sxxfseE1FnAR2EKHkT+IkX4aviHbo2hjQS9svNOTW4C8jpeve hDYf9yr665acANL1C7+7ZI6VWQGlJi+jRiqIOCjAhXXkucsj5Xejdjp/YtUJP0Yn8N7K BoIQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=UlACDvi+; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id kz1-20020a17090777c100b00a4432548165si2291520ejc.552.2024.03.01.23.42.57; Fri, 01 Mar 2024 23:42:57 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=UlACDvi+; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 74FA068D2FD; Sat, 2 Mar 2024 09:42:55 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f54.google.com (mail-qv1-f54.google.com [209.85.219.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C2C4868D2E7 for ; Sat, 2 Mar 2024 09:42:48 +0200 (EET) Received: by mail-qv1-f54.google.com with SMTP id 6a1803df08f44-68f901192afso13299866d6.1 for ; Fri, 01 Mar 2024 23:42:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709365367; x=1709970167; darn=ffmpeg.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=PKnDqZ2/gvmPUNiuSF6wZ3cROFAuKjlDb8TcR2lg75Q=; b=UlACDvi+lBo61KEEU5FX/JnDc0C87mqqB7O4Ll7QpDNOBP8dkpkBTc1ald66+3ftkh eZ0xI8R7VsFUfSYQzqpUr8CSNme4B6nwjTRziK7g1Rs320P5rAHwvl6+UfDVYzaAFZb8 uZTKPKbezQZLEooS0EQryGyQR9WvALeLX4HJiCba0aNtFk/jn6r9zekL2f9D39LSu7YM 9+Yd/wpaKgrJ7VbzDEusIFTngd1jn96kORnE3x2V/MTBhgRGmJIyNlT6r+7YECnMk5vU 6gZl/8z5Ck4FzLTUE1jx7RObYybROoptbQ512hvbgmSYxbmJXqyjDXmGPqgFTtFXq43j B4+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709365367; x=1709970167; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=PKnDqZ2/gvmPUNiuSF6wZ3cROFAuKjlDb8TcR2lg75Q=; b=cvi/WKS4544GfNxrlVzRaak/ex7HiFR9PHTDzIst7UidbJ0SE98WsivsTLWSE7JbYT Js6MdrzrpRbv5/Kp20OZhsZtNG9SrZu4u3MhrPSiJxvdJE13D3LR1VRyhtZ5i2OfayEz 2TnjmirrCR4wZxw38TE8l9h81JYZuB9Jfd6LcGL4B5jlcqqxx/Egns8xtKamZR2J+ecL bNQmKpQQwEM/0lAE3BXhc6iqFgfqForX4+zZq8YfGXApimIU5pkESD2kfVx8758GZyrB keao7tgSg9RmnBJvEJeFClTH6KeS6xHEFDL9qmXWXclRSmt6xO6mGDOMv3B2x56u48wJ cCxg== X-Gm-Message-State: AOJu0YwGp6yPXk0zy+nivAzP36WOUknyBC5gylGzH+b+JwogHDC4qu7w 5YA9Ngra1TS22NuTE2/WQ9R5qriNYfE1cUvkmD4JmHssx5Gi6oZBfqclpQOOzM0C7rEhIpy++sa EDGLQn/wuTeaxmzo5dMXU7dm4HECssxQrjoM= X-Received: by 2002:a05:6214:184c:b0:690:6239:bbe6 with SMTP id d12-20020a056214184c00b006906239bbe6mr991355qvy.20.1709365367476; Fri, 01 Mar 2024 23:42:47 -0800 (PST) MIME-Version: 1.0 From: flow gg Date: Sat, 2 Mar 2024 15:42:36 +0800 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH 3/4] lavc/vp9dsp: R-V V ipred hor X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: YMwSHMp9Vtrk From 173072b33d3237b924f3fa342e20558d96a72457 Mon Sep 17 00:00:00 2001 From: sunyuechi Date: Sat, 2 Mar 2024 08:35:39 +0800 Subject: [PATCH 3/4] lavc/vp9dsp: R-V V ipred hor C908: vp9_hor_8x8_8bpp_c: 74.7 vp9_hor_8x8_8bpp_rvv_i32: 35.7 vp9_hor_16x16_8bpp_c: 175.5 vp9_hor_16x16_8bpp_rvv_i32: 80.2 vp9_hor_32x32_8bpp_c: 510.2 vp9_hor_32x32_8bpp_rvv_i32: 264.0 --- libavcodec/riscv/vp9_intra_rvv.S | 56 ++++++++++++++++++++++++++++++++ libavcodec/riscv/vp9dsp.h | 6 ++++ libavcodec/riscv/vp9dsp_init.c | 3 ++ 3 files changed, 65 insertions(+) diff --git a/libavcodec/riscv/vp9_intra_rvv.S b/libavcodec/riscv/vp9_intra_rvv.S index 88b54f37b0..35fb0ebe10 100644 --- a/libavcodec/riscv/vp9_intra_rvv.S +++ b/libavcodec/riscv/vp9_intra_rvv.S @@ -234,3 +234,59 @@ func ff_v_8x8_rvv, zve64x ret endfunc + +func ff_h_32x32_rvv, zve32x + li t0, 32 + addi a2, a2, 31 + vsetvli zero, t0, e8, m2, ta, ma + + .rept 2 + .irp n 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30 + lbu t1, (a2) + addi a2, a2, -1 + vmv.v.x v\n, t1 + .endr + .irp n 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30 + vse8.v v\n, (a0) + add a0, a0, a1 + .endr + .endr + + ret +endfunc + +func ff_h_16x16_rvv, zve32x + addi a2, a2, 15 + vsetivli zero, 16, e8, m1, ta, ma + + .irp n 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 + lbu t1, (a2) + addi a2, a2, -1 + vmv.v.x v\n, t1 + .endr + .irp n 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 + vse8.v v\n, (a0) + add a0, a0, a1 + .endr + vse8.v v23, (a0) + + ret +endfunc + +func ff_h_8x8_rvv, zve32x + addi a2, a2, 7 + vsetivli zero, 8, e8, mf2, ta, ma + + .irp n 8, 9, 10, 11, 12, 13, 14, 15 + lbu t1, (a2) + addi a2, a2, -1 + vmv.v.x v\n, t1 + .endr + .irp n 8, 9, 10, 11, 12, 13, 14 + vse8.v v\n, (a0) + add a0, a0, a1 + .endr + vse8.v v15, (a0) + + ret +endfunc diff --git a/libavcodec/riscv/vp9dsp.h b/libavcodec/riscv/vp9dsp.h index ae4fb266d0..2b2e0db0d8 100644 --- a/libavcodec/riscv/vp9dsp.h +++ b/libavcodec/riscv/vp9dsp.h @@ -66,5 +66,11 @@ void ff_v_16x16_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, const uint8_t *a); void ff_v_8x8_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, const uint8_t *a); +void ff_h_32x32_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); +void ff_h_16x16_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); +void ff_h_8x8_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); #endif // #ifndef AVCODEC_RISCV_VP9DSP_RISCV_H diff --git a/libavcodec/riscv/vp9dsp_init.c b/libavcodec/riscv/vp9dsp_init.c index 9c550d40b5..16aeeb260a 100644 --- a/libavcodec/riscv/vp9dsp_init.c +++ b/libavcodec/riscv/vp9dsp_init.c @@ -54,6 +54,9 @@ static av_cold void vp9dsp_intrapred_init_rvv(VP9DSPContext *dsp, int bpp) dsp->intra_pred[TX_16X16][TOP_DC_PRED] = ff_dc_top_16x16_rvv; dsp->intra_pred[TX_32X32][VERT_PRED] = ff_v_32x32_rvv; dsp->intra_pred[TX_16X16][VERT_PRED] = ff_v_16x16_rvv; + dsp->intra_pred[TX_32X32][HOR_PRED] = ff_h_32x32_rvv; + dsp->intra_pred[TX_16X16][HOR_PRED] = ff_h_16x16_rvv; + dsp->intra_pred[TX_8X8][HOR_PRED] = ff_h_8x8_rvv; } #endif } -- 2.44.0 From patchwork Sat Mar 2 07:42:49 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: flow gg X-Patchwork-Id: 46690 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a919:b0:19e:cdac:8cce with SMTP id cd25csp1729645pzb; Fri, 1 Mar 2024 23:43:11 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCUMrSb1V6DsaemSC2U5UJ6sOBajcxJqMkLRP9sAnaBVTGBPG/yEmakrOLkKOuRldLYLBZXzV7EpCeMRiUUrg3hs+aKvKYSjE1HbcQ== X-Google-Smtp-Source: AGHT+IEXdppufYIKiLfS8sDR7QV82peZGGy4KzCJ/uQ0VNnyWUiwX+o8GQoPqJjIAtcMsWHwenL0 X-Received: by 2002:a05:6402:5164:b0:565:a4dc:b288 with SMTP id d4-20020a056402516400b00565a4dcb288mr2726798ede.4.1709365391219; Fri, 01 Mar 2024 23:43:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1709365391; cv=none; d=google.com; s=arc-20160816; b=007y9IuELHS6OVddNSqx1c0RBr0DQnMgdmPfWXbVmDZpKhzoC6btIqHa+d9F82Gz4m 7zp9oLPAxY/AJtrrDxEfu1ef7qTEOfGc4UfhjRuz9KNYnTwqEnUX541W/2xdE2hmsbyu +KC7yIC564XUvkvzve1+/DwT7aTUB+FoVZLLxY7v/odtpJf2api4GrVASdt6bPnfZSov 7yg77j3ZmgXbR4dsu0BuGzq6OWfHIaf0wyaaPXTmw1XUJcDILhYTjuxcg2oSJ82LxIwq Y1bPhHaSCa8JKQ+rZmf5ay/PrmdqvQzQZ2WjEKL0Gzs7CX25xvx+g8+80ZYrwVvqFC38 BfeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject:to :message-id:date:from:mime-version:dkim-signature:delivered-to; bh=yVZ175DJx6x2Ad1XbdMVNbmX2ljItes48K53KRy2ae4=; fh=e5zN9xSzcxLA6bGo3lF+CqTbY/oLwzApV03EO/RBfgQ=; b=vAnPAsv1r5/qWKCs5jH88jUxXd0Fv0b7WGOB3aMwqLRkcXJ39vCydZTKbWY/YpNKKY avVvcGDrVYQ4wU4HOP13Wy8khIEWwSoY2JEcSh/Hmxw8brM60ezMSH64KMZBg40pY3BN YR4PQh+IZ0jYTH8hCmNQKjtXv8P0yy6P3T8MIXtn3GRg343+hS10x30O+SJ5ntWZoN7t e485os1pYLIF+afzr3H6Bj0G5LVVl3FnxJlF05EBqJrVS+n/QUjGtWnyxqI9zjahpfCv 8uclRN9CwvYyPCWjEy0l6uXR6ZRq0oi3BpjNVGL9mtIDTV8//hMyCwlzqAC3KTdk7nq3 +BXQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=FoxjjX4s; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id t19-20020a056402525300b00566c1bd2259si1576305edd.485.2024.03.01.23.43.10; Fri, 01 Mar 2024 23:43:11 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=FoxjjX4s; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 73D5C68D305; Sat, 2 Mar 2024 09:43:08 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f51.google.com (mail-qv1-f51.google.com [209.85.219.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 205A068D229 for ; Sat, 2 Mar 2024 09:43:02 +0200 (EET) Received: by mail-qv1-f51.google.com with SMTP id 6a1803df08f44-6905bec0385so4704006d6.0 for ; Fri, 01 Mar 2024 23:43:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709365381; x=1709970181; darn=ffmpeg.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=ICLBySvYEADrx4VRuULGN/mMzVlhH83NcXzTNQmb0zY=; b=FoxjjX4sfhEDx5KPHMPUjCxIo8J+HlDRYe7wTmtvC1J2KoUeEaM1qeGV6iXdaQO7UW Agr1iS5RmbJbtrTB4iW21Q9KgBbA8AynSi8PUgZym6oOSvROUVNJUeb9zUMD6gGaHV7f 9xIiTAErNqyVVnyBfVg6K4dgy72rA5izwL0QhN4BYun+0qij+Dy2QD3FKP2aRKa3NKFz DUOPv70yp5JP0lyh+c/+0ot/z4fUA18xYo7mtleRnO8ldyikoB98nJc5anft7gYt9Ne/ Qg8FvYRHgRxVxLcjkdRWOXpHOcodMYfSfOTTIEmrqNAUAXTul2eD/+88YdkwGqUTIQAe CLaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709365381; x=1709970181; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=ICLBySvYEADrx4VRuULGN/mMzVlhH83NcXzTNQmb0zY=; b=XEMnHzg2xE7Twk2O0fEAW2xvujOmX5VGGxI8OoaJ/b1LnBYvguzmDweF4QDTiLhjZQ UkAEuChe+TgWs4bFL+OQwwNC7eSNM3z80PqN7e50EAMexfU6LTIrMLUxqCh4bWStMRJq E37Ykv32fdE6HecJFiPVOARrbZTk9z8ISSKBVSZrzbaIaAmGkUU+grjoJGWnxxMBh+WC iM/VPEt5lgCkatpEF12EwCxUA3wNhp7jswlEANMM8KLl5/Uvl9x6ubtBSFiwuqwPBqvd iXJp54HntnRSnGQfuaigN2IWiau5lmmGdyGHzZo8ZywpjKRJo8I7kCcr64K8Ml6sLInT A84w== X-Gm-Message-State: AOJu0YyipwYWOSGevOI/+7Dv3TC7aTY6mnKdP1HU4/Mgk2dwu6LakJIh vA7+svR8gv8uAgpeVhtOcwwitu4rboH0BVqb5KB3LF9iw5UqGAnZUQ8uh4exfogv6W+x/D3YrhI 5ASg0ziYuI3cA8eVkKZ4XaeXlAFn3CLpf+BU= X-Received: by 2002:a0c:e752:0:b0:68f:e782:fd18 with SMTP id g18-20020a0ce752000000b0068fe782fd18mr3878015qvn.59.1709365380817; Fri, 01 Mar 2024 23:43:00 -0800 (PST) MIME-Version: 1.0 From: flow gg Date: Sat, 2 Mar 2024 15:42:49 +0800 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH 4/4] lavc/vp9dsp: R-V V ipred tm X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: oKBiFb9VZN2K From 3128765d298f5a44fd13be7b3da2ef88c96083f9 Mon Sep 17 00:00:00 2001 From: sunyuechi Date: Sat, 2 Mar 2024 09:35:22 +0800 Subject: [PATCH 4/4] lavc/vp9dsp: R-V V ipred tm C908: vp9_tm_4x4_8bpp_c: 116.5 vp9_tm_4x4_8bpp_rvv_i32: 43.5 vp9_tm_8x8_8bpp_c: 416.2 vp9_tm_8x8_8bpp_rvv_i32: 86.0 vp9_tm_16x16_8bpp_c: 1665.5 vp9_tm_16x16_8bpp_rvv_i32: 187.2 vp9_tm_32x32_8bpp_c: 6974.2 vp9_tm_32x32_8bpp_rvv_i32: 625.7 --- libavcodec/riscv/vp9_intra_rvv.S | 143 +++++++++++++++++++++++++++++++ libavcodec/riscv/vp9dsp.h | 8 ++ libavcodec/riscv/vp9dsp_init.c | 4 + 3 files changed, 155 insertions(+) diff --git a/libavcodec/riscv/vp9_intra_rvv.S b/libavcodec/riscv/vp9_intra_rvv.S index 35fb0ebe10..a8265255c4 100644 --- a/libavcodec/riscv/vp9_intra_rvv.S +++ b/libavcodec/riscv/vp9_intra_rvv.S @@ -290,3 +290,146 @@ func ff_h_8x8_rvv, zve32x ret endfunc + +.macro tm_sum dst, top, offset + lbu t3, \offset(a2) + sub t3, t3, a4 + vadd.vx \dst, \top, t3 +.endm + +func ff_tm_32x32_rvv, zve32x + lbu a4, -1(a3) + li t5, 32 + + .macro tm_sum32 n1,n2,n3,n4,n5,n6,n7,n8 + + vsetvli zero, t5, e16, m4, ta, ma + vle8.v v8, (a3) + vzext.vf2 v28, v8 + + tm_sum v0, v28, \n1 + tm_sum v4, v28, \n2 + tm_sum v8, v28, \n3 + tm_sum v12, v28, \n4 + tm_sum v16, v28, \n5 + tm_sum v20, v28, \n6 + tm_sum v24, v28, \n7 + tm_sum v28, v28, \n8 + + .irp n 0, 4, 8, 12, 16, 20, 24, 28 + vmax.vx v\n, v\n, zero + .endr + + vsetvli zero, zero, e8, m2, ta, ma + .irp n 0, 4, 8, 12, 16, 20, 24, 28 + vnclipu.wi v\n, v\n, 0 + vse8.v v\n, (a0) + add a0, a0, a1 + .endr + + .endm + + tm_sum32 31, 30, 29, 28, 27, 26, 25, 24 + tm_sum32 23, 22, 21, 20, 19, 18, 17, 16 + tm_sum32 15, 14, 13, 12, 11, 10, 9, 8 + tm_sum32 7, 6, 5, 4, 3, 2, 1, 0 + + ret +endfunc + +func ff_tm_16x16_rvv, zve32x + vsetivli zero, 16, e16, m2, ta, ma + vle8.v v8, (a3) + vzext.vf2 v30, v8 + lbu a4, -1(a3) + + tm_sum v0, v30, 15 + tm_sum v2, v30, 14 + tm_sum v4, v30, 13 + tm_sum v6, v30, 12 + tm_sum v8, v30, 11 + tm_sum v10, v30, 10 + tm_sum v12, v30, 9 + tm_sum v14, v30, 8 + tm_sum v16, v30, 7 + tm_sum v18, v30, 6 + tm_sum v20, v30, 5 + tm_sum v22, v30, 4 + tm_sum v24, v30, 3 + tm_sum v26, v30, 2 + tm_sum v28, v30, 1 + tm_sum v30, v30, 0 + + .irp n 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30 + vmax.vx v\n, v\n, zero + .endr + + vsetvli zero, zero, e8, m1, ta, ma + .irp n 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28 + vnclipu.wi v\n, v\n, 0 + vse8.v v\n, (a0) + add a0, a0, a1 + .endr + vnclipu.wi v30, v30, 0 + vse8.v v30, (a0) + + ret +endfunc + +func ff_tm_8x8_rvv, zve32x + vsetivli zero, 8, e16, m1, ta, ma + vle8.v v8, (a3) + vzext.vf2 v28, v8 + lbu a4, -1(a3) + + tm_sum v16, v28, 7 + tm_sum v17, v28, 6 + tm_sum v18, v28, 5 + tm_sum v19, v28, 4 + tm_sum v20, v28, 3 + tm_sum v21, v28, 2 + tm_sum v22, v28, 1 + tm_sum v23, v28, 0 + + .irp n 16, 17, 18, 19, 20, 21, 22, 23 + vmax.vx v\n, v\n, zero + .endr + + vsetvli zero, zero, e8, mf2, ta, ma + .irp n 16, 17, 18, 19, 20, 21, 22 + vnclipu.wi v\n, v\n, 0 + vse8.v v\n, (a0) + add a0, a0, a1 + .endr + vnclipu.wi v24, v23, 0 + vse8.v v24, (a0) + + ret +endfunc + +func ff_tm_4x4_rvv, zve32x + vsetivli zero, 4, e16, mf2, ta, ma + vle8.v v8, (a3) + vzext.vf2 v28, v8 + lbu a4, -1(a3) + + tm_sum v16, v28, 3 + tm_sum v17, v28, 2 + tm_sum v18, v28, 1 + tm_sum v19, v28, 0 + + .irp n 16, 17, 18, 19 + vmax.vx v\n, v\n, zero + .endr + + vsetvli zero, zero, e8, mf4, ta, ma + .irp n 16, 17, 18 + vnclipu.wi v\n, v\n, 0 + vse8.v v\n, (a0) + add a0, a0, a1 + .endr + vnclipu.wi v24, v19, 0 + vse8.v v24, (a0) + + ret +endfunc diff --git a/libavcodec/riscv/vp9dsp.h b/libavcodec/riscv/vp9dsp.h index 2b2e0db0d8..cff2310e5c 100644 --- a/libavcodec/riscv/vp9dsp.h +++ b/libavcodec/riscv/vp9dsp.h @@ -72,5 +72,13 @@ void ff_h_16x16_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, const uint8_t *a); void ff_h_8x8_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, const uint8_t *a); +void ff_tm_32x32_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); +void ff_tm_16x16_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); +void ff_tm_8x8_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); +void ff_tm_4x4_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, + const uint8_t *a); #endif // #ifndef AVCODEC_RISCV_VP9DSP_RISCV_H diff --git a/libavcodec/riscv/vp9dsp_init.c b/libavcodec/riscv/vp9dsp_init.c index 16aeeb260a..f08c8f6a42 100644 --- a/libavcodec/riscv/vp9dsp_init.c +++ b/libavcodec/riscv/vp9dsp_init.c @@ -57,6 +57,10 @@ static av_cold void vp9dsp_intrapred_init_rvv(VP9DSPContext *dsp, int bpp) dsp->intra_pred[TX_32X32][HOR_PRED] = ff_h_32x32_rvv; dsp->intra_pred[TX_16X16][HOR_PRED] = ff_h_16x16_rvv; dsp->intra_pred[TX_8X8][HOR_PRED] = ff_h_8x8_rvv; + dsp->intra_pred[TX_32X32][TM_VP8_PRED] = ff_tm_32x32_rvv; + dsp->intra_pred[TX_16X16][TM_VP8_PRED] = ff_tm_16x16_rvv; + dsp->intra_pred[TX_8X8][TM_VP8_PRED] = ff_tm_8x8_rvv; + dsp->intra_pred[TX_4X4][TM_VP8_PRED] = ff_tm_4x4_rvv; } #endif } -- 2.44.0