From patchwork Sat May 18 18:15:32 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: uk7b@foxmail.com X-Patchwork-Id: 48994 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a48:b0:1af:fc2d:ff5a with SMTP id zu8csp3572107pzb; Sat, 18 May 2024 11:16:43 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUTS/aAjQBkc7z/Y6gO8W4/4dKTxiKrr7SmQG3ZXeQQmCYWMi1Zwrk0+aCh8QaZbCQRPt0KKHqUc4q6Eo9u5gfnvJmzrqH8dyYLRg== X-Google-Smtp-Source: AGHT+IEYswDj5JMtQJE2SAPc3ymM0PiwWHT9j8c4ct5pj+DRKrIr0Oo1EluqJbl1fRUFvrNNoTtr X-Received: by 2002:a50:c30e:0:b0:575:a7e:4f82 with SMTP id 4fb4d7f45d1cf-5752b3f8acbmr2104627a12.4.1716056203063; Sat, 18 May 2024 11:16:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1716056203; cv=none; d=google.com; s=arc-20160816; b=JRl9CF+FA3inEhJk6enF3ZeB30wHwbQo09k30FeYN0u2wSDke3P/OmjBL9xvGrSpW8 LFK5IiBQ2eo+yrAlXGkdFfWAiBk4fwsVaQdxNyWVjK5bbbQq8Fptsyyn34yE0tjpjBOT wBWr0ZlJuTRquz/Rm5VdgmWhvKlgdu3U+NsH8IlL0SrqRIY16QLDsXVmoogN2CM30h+Y d3+I7ETph71WHSXJ5EYR1iVWf/6dxiHrWTn3ls74fM4KJ9PadPwwUs6KIy/8vj28WOqu aEujtLQIZZOHSdHDO7BViquF2B8/tgbBf3hMUXMT0VvkBQMIhgpFbqmz0WOCYEBjSZep +W6Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to:date :to:from:message-id:dkim-signature:delivered-to; bh=fzqhnKNDn8FKlSneBTQNDRhqVTGZDrSwowa7yFRcspI=; fh=D0bFwGkf4X22/D/bfeDVrXKIx7S6kcXsNzy10j8ORbQ=; b=0EGzT1+E0ErXpaJNStG/mr4B4pMa4tXOHWALOlPMcSZBh0BaxXCqIGe7xe4Yjhsxzc WFWBKZSwvc/X+rSG9lO3p7bdqqBb4gQ97qkAmJx/S+BF5dxx0lNydcGF1XgBKR6tSZCo CBh3i6liqGBRNMlyv5XJ3Qmwc4YuiDee/z1EkdtuPTH+9CfcaUxfznGiZ/XX70CVNEky Eh5hnm7ib6ILs8gGCCqa5j2BkMJT3gSZbc5QMrbGOtTfiOJv4ppe1veQfUhv44e9qwym Pb7BafhhXYNGY9Xlqz64FOhGihMio91XLeTTqGVA7pu4qUbrn3K3HdI8aBRrTkPiskr/ 4Gfw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=ceseSfgP; 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=NONE dis=NONE) header.from=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 4fb4d7f45d1cf-574ebffeffcsi5302085a12.473.2024.05.18.11.16.42; Sat, 18 May 2024 11:16:43 -0700 (PDT) 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=@foxmail.com header.s=s201512 header.b=ceseSfgP; 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=NONE dis=NONE) header.from=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 57C5268CF4C; Sat, 18 May 2024 21:16:08 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-221-155.mail.qq.com (out203-205-221-155.mail.qq.com [203.205.221.155]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A5C3D68CB87 for ; Sat, 18 May 2024 21:15:58 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1716056139; bh=cwhGLAUalmA6WuZ2cW6n1YAm/Y0C5pQxkaQij9SVG7A=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=ceseSfgPvSzVjicKzZzkxzIKIBRokpp6EbW+6zp1ChdR9XIoEETmZWraPNAyg/PPK ffTiAz5TQ2C/aUeTncPmCAz0Tv9JL3PV/NlqMJbSezQ3+0GMYut1LbD5yKzW6AAkqi B4AgpQsGXMmRG6RN4diPlfx6dT8OVqHNd8u//XbU= Received: from localhost.localdomain ([42.56.223.122]) by newxmesmtplogicsvrszb16-1.qq.com (NewEsmtp) with SMTP id 3E33EA47; Sun, 19 May 2024 02:15:35 +0800 X-QQ-mid: xmsmtpt1716056138tln1bapz8 Message-ID: X-QQ-XMAILINFO: NwU6Bou9okj/cpNcK/xGAZl827/t7SB0YjCkeXvC7SNpF+y9JaWxw11bI0OqoM k13F8r60DswJ6U+L4z/uJMpSfZwlVb4KHqdVpofX9btdKcs2xzAni/NBrCpHwcQEr9TpM9mAeNQi VVMEMEWqXZ1cByfokAjn30EmcZu2jG8E7aQL67OA14+hSxiwrBI/MZ3k43QwSK6zPs3MzPe9kU+x vBNCgjlkenFlGEnGPHHoJ9A8ZjAGuXdJn05MuvjWly8AbMaJCJNErCK4woMWPdCorD/1dpeuUJYM 2XPjVl/I7BuTMaSJKGvFx9Eyv/yUqcUSQQCaLT5Vrgug8xDisydeAULv1p++eLCtTy9S2MplOzgO I0itpxifb54xD06qQQzBdRHNbq7PncyqoKZhx6reR/+vn0OCyA+xWpS63CExUEZEf83InDePfoLf +tVux4UPwkgVAqPfTgNtTIevc6NkysF62XG+VXNYoJgqeb+7eQoTOVbH0GW1IUJRAV6y03bLUvxO Xssmt7d+ndxYyDZ1U45rl4y0G2Zdy0KjY+HF4jCmSG6SPJm9D5/pc6uf90hTkDIKNVcUA0bKLrvj S20Z4Clw5vwwSfQ0G55d5iQjABwlpaT5O8RbR8f45XNW4R41mhPJXWPbe3wfOoedd8I4rxpP5g/J +ZxMcd0CV5WDE840Lb7OinKxq6XMvACG01n+rbKFVGdI+F1yPDjlABNdwS9eVqJbgNYbwUVIqV/M UdPtOD92jYW37q9mc530eJz1WfcT79bL1PCUSJUPQhN3YJ8YXwfO6paD+IEaJlrrVJivpHsmiZUC BcG1CLLKukjIfzMTWOEY3CnPzRBXlZ85vLJ+EnhgX7Zi+Vl9rZlHgfkAsr7l4tTtLDY0wigjtNrT 0olJC9cRoijOTYXi5XoeNWboK0nL8xl9w9k13f6l0xl/fgtId3/SpTpI1Tr1QiTh6c14JuJ75Y/u 6F50bbDCg= X-QQ-XMRINFO: NyFYKkN4Ny6FSmKK/uo/jdU= From: uk7b@foxmail.com To: ffmpeg-devel@ffmpeg.org Date: Sun, 19 May 2024 02:15:32 +0800 X-OQ-MSGID: <20240518181533.3124314-4-uk7b@foxmail.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240518181533.3124314-1-uk7b@foxmail.com> References: <20240518181533.3124314-1-uk7b@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v4 4/5] lavc/vp9dsp: R-V V mc bilin hv 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 Cc: sunyuechi Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 5xMT1S8f2lvL From: sunyuechi C908: vp9_avg_bilin_4hv_8bpp_c: 11.0 vp9_avg_bilin_4hv_8bpp_rvv_i64: 3.7 vp9_avg_bilin_8hv_8bpp_c: 38.7 vp9_avg_bilin_8hv_8bpp_rvv_i64: 7.2 vp9_avg_bilin_16hv_8bpp_c: 147.0 vp9_avg_bilin_16hv_8bpp_rvv_i64: 14.2 vp9_avg_bilin_32hv_8bpp_c: 574.5 vp9_avg_bilin_32hv_8bpp_rvv_i64: 42.7 vp9_avg_bilin_64hv_8bpp_c: 2311.5 vp9_avg_bilin_64hv_8bpp_rvv_i64: 201.7 vp9_put_bilin_4hv_8bpp_c: 10.0 vp9_put_bilin_4hv_8bpp_rvv_i64: 3.2 vp9_put_bilin_8hv_8bpp_c: 35.2 vp9_put_bilin_8hv_8bpp_rvv_i64: 6.5 vp9_put_bilin_16hv_8bpp_c: 133.7 vp9_put_bilin_16hv_8bpp_rvv_i64: 13.0 vp9_put_bilin_32hv_8bpp_c: 538.2 vp9_put_bilin_32hv_8bpp_rvv_i64: 39.7 vp9_put_bilin_64hv_8bpp_c: 2114.0 vp9_put_bilin_64hv_8bpp_rvv_i64: 153.7 --- libavcodec/riscv/vp9_mc_rvv.S | 34 ++++++++++++++++++++++++++++++++++ libavcodec/riscv/vp9dsp_init.c | 10 ++++++++++ 2 files changed, 44 insertions(+) diff --git a/libavcodec/riscv/vp9_mc_rvv.S b/libavcodec/riscv/vp9_mc_rvv.S index 9d7caeb005..d2c9393fc9 100644 --- a/libavcodec/riscv/vp9_mc_rvv.S +++ b/libavcodec/riscv/vp9_mc_rvv.S @@ -104,6 +104,39 @@ func ff_\op\()_bilin_\len\()\type\()_rvv, zve32x endfunc .endm +.macro bilin_hv len op +func ff_\op\()_bilin_\len\()hv_rvv, zve32x +.ifc \op,avg + csrwi vxrm, 0 +.endif + vsetvlstatic8 \len t0 64 + neg t1, a5 + neg t2, a6 + li t4, 8 + bilin_load v24, \len, put, h, a5 + add a2, a2, a3 +1: + addi a4, a4, -1 + bilin_load v4, \len, put, h, a5 + vwmulu.vx v16, v4, a6 + vwmaccsu.vx v16, t2, v24 + vwadd.wx v16, v16, t4 + vnsra.wi v16, v16, 4 + vadd.vv v0, v16, v24 +.ifc \op,avg + vle8.v v16, (a0) + vaaddu.vv v0, v0, v16 +.endif + vse8.v v0, (a0) + vmv.v.v v24, v4 + add a2, a2, a3 + add a0, a0, a1 + bnez a4, 1b + + ret +endfunc +.endm + const subpel_filters_regular .byte 0, 0, 0, 128, 0, 0, 0, 0 .byte 0, 1, -5, 126, 8, -3, 1, 0 @@ -334,6 +367,7 @@ endfunc .irp op, put, avg bilin_h_v \len \op h a5 bilin_h_v \len \op v a6 + bilin_hv \len \op .irp name, regular, sharp, smooth .irp type, h, v epel \len \op \name \type 128 diff --git a/libavcodec/riscv/vp9dsp_init.c b/libavcodec/riscv/vp9dsp_init.c index 931b92928a..09519f4005 100644 --- a/libavcodec/riscv/vp9dsp_init.c +++ b/libavcodec/riscv/vp9dsp_init.c @@ -104,6 +104,16 @@ static av_cold void vp9dsp_mc_init_riscv(VP9DSPContext *dsp, int bpp) dsp->mc[4][FILTER_BILINEAR ][0][1][0] = ff_put_bilin_4h_rvv; dsp->mc[4][FILTER_BILINEAR ][1][0][1] = ff_avg_bilin_4v_rvv; dsp->mc[4][FILTER_BILINEAR ][1][1][0] = ff_avg_bilin_4h_rvv; + dsp->mc[0][FILTER_BILINEAR ][0][1][1] = ff_put_bilin_64hv_rvv; + dsp->mc[0][FILTER_BILINEAR ][1][1][1] = ff_avg_bilin_64hv_rvv; + dsp->mc[1][FILTER_BILINEAR ][0][1][1] = ff_put_bilin_32hv_rvv; + dsp->mc[1][FILTER_BILINEAR ][1][1][1] = ff_avg_bilin_32hv_rvv; + dsp->mc[2][FILTER_BILINEAR ][0][1][1] = ff_put_bilin_16hv_rvv; + dsp->mc[2][FILTER_BILINEAR ][1][1][1] = ff_avg_bilin_16hv_rvv; + dsp->mc[3][FILTER_BILINEAR ][0][1][1] = ff_put_bilin_8hv_rvv; + dsp->mc[3][FILTER_BILINEAR ][1][1][1] = ff_avg_bilin_8hv_rvv; + dsp->mc[4][FILTER_BILINEAR ][0][1][1] = ff_put_bilin_4hv_rvv; + dsp->mc[4][FILTER_BILINEAR ][1][1][1] = ff_avg_bilin_4hv_rvv; if (flags & AV_CPU_FLAG_RVB_ADDR) { init_subpel2(0, 0, 1, v, put, 128);