From patchwork Wed Sep 11 18:06:06 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 51512 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:612c:14c:b0:48e:c0f8:d0de with SMTP id h12csp479326vqi; Wed, 11 Sep 2024 11:07:32 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUwL+v8w4ZAS5PLQwCgsEmLKdERdHep8Kuts1lyflQ54ggJbRG1a6QTw+XtanTL0uMEQ3onDMNN4005JpSYcdvM@gmail.com X-Google-Smtp-Source: AGHT+IHbNOmTrOCPSlab//55L/0LmrLFQCtxfmQa4DvUeIOW15jeJdehmsNa0lezruw5QEu7MFSu X-Received: by 2002:a05:6512:1196:b0:536:55ae:7458 with SMTP id 2adb3069b0e04-53678fed155mr151478e87.40.1726078052485; Wed, 11 Sep 2024 11:07:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1726078052; cv=none; d=google.com; s=arc-20240605; b=deYlaehdl+5EmIUYp9U0dm9u4v9tFRy1Sev7XgVEBlHlUly7RDtAUsAhBa4dOO0sAv v93eHZYn0MImy0OBarxyD0UpsULsx+8DokXzAvMi2llD2apqXbK9pBMOeJnQ/a3Kjnk3 sDS5gc9NXQhu51qj9nLvCJklyLCGR7mYUfkUJgmo0hzibZichGnivZv6detYiusZ0qFw kUT2VD4kfOIQcNf9EBpHdYL3/mF8ajgIwOu2LhQHUKCv4IIT9jvH+JXSDOMeILYlPOxz Eh0zKtlH9QR96RW6Zi56aBfkFmXju4dYtrBNvoyJ563TF2npKb1YGbbVacHLVKQya6IB rq/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; 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=nSwm2U37LLLddwJZ0cUGWH0juW0DL6bkIQEMhHY0b1M=; fh=HnHYuZ9XgUo86ZRXTLWWmQxhslYEI9B9taZ5X1DLFfc=; b=ZdnqbyRBew45nCK1WRadoctEf9TNKF+h4p/fwqvtyIh1nfv1Csxodxsd5d/IQfOixm T1N0kIEVNwIHBFkv2ibiriuEENICk+yDzNi2nfAh/znPAwxuAJxMfkxZLOyIWLs46KyM 8OSqBugfpTJVzM6l3gyI+wWVeBCAOlcMg7W7cupHkNfj3N/OG2X8N0QtUYTWqEI/YLdq CFfb+pERTZRJSOCxugbX0vyt8grfGJoU5kOkaBwAIU7UKn6fd9b0UUICBufXuLlt43D2 9fm6bRhiPw//wiqOqIooPw9eBgH3aBxYZlLtHC551c9Erc5cFF59Dk/uW9ZwgFvLI5gQ UIxQ==; 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=hp0zZHnh; 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 2adb3069b0e04-5365f8661c8si3377408e87.116.2024.09.11.11.07.31; Wed, 11 Sep 2024 11:07:32 -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=hp0zZHnh; 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 C947E68E22A; Wed, 11 Sep 2024 21:06:43 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-221-240.mail.qq.com (out203-205-221-240.mail.qq.com [203.205.221.240]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1E02968E25E for ; Wed, 11 Sep 2024 21:06:30 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1726077981; bh=bFiAFpR2mwC/7XszQaT33DFI9g0hcOcpg3m+bleIxII=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=hp0zZHnhznbrg8BmwuUgkM+IGSeiQ0jmi5Uhr/7afYH35nDbXzvbKkQWT2AT1VNfv creLrAeUXz55L6Bsf/NK7iWccex7iTpGbxxut3ziK1egfJ1hV2i9w9vbLwMtqY8JLo FGK3GqMfQCWhE/BVLOQWKjPihq3OPIjTbq1iWFu4= Received: from ZHILIZHAO-MB1.tencent.com ([113.118.115.139]) by newxmesmtplogicsvrsza10-0.qq.com (NewEsmtp) with SMTP id 19397694; Thu, 12 Sep 2024 02:06:19 +0800 X-QQ-mid: xmsmtpt1726077981tdynpdxrv Message-ID: X-QQ-XMAILINFO: M218m5ZT2ej6BbjKgGNk379ME751IsvraxdM856JYUg9VlBmlZ+A+NprIM1Eym xsOuat5xnwoMU33AfVSDTWo4yVi7TPqgtZwb0LdVe/iE/DWpIqLPvHqOGFtE9pc0FFdw3BkdcXm9 IV9rtJ+pZW/irUJUELf8JxVEASv71r3sp7R9OUp3xICvMguHXjedL4FXKhDj1qMuC94omMzPjTOh cfVMbt8E7ds+elni/fYc/vzZjkZEKj58UVexnK7aSfgRbRkwPpO5ClJY7HO/Hhc250nKs+HTqFgQ 6/Of9bz6kC1YYw4uVJdEPbmf9sfWGFMagzSDGIjf7bEj0Zh28vEc4Z5yXkro/HbxLEtD6AIjh/t6 cTKm9YsQ6coPXXiR3FWGH83CxaRSSuPJxUQcclLNyLljM88JjY2PpURsF7jj6eCsc983ofQkVOB8 m5+V7uDqCB/uFGGpyCdpePAu5YJEGnAB6fTeHJXzC/b7U/9MLpBypdeSwAKvXudrdYR+AgTRmgdQ E4w9oxjNxD8Qa8A6KqCdTtmQ8aY/sEZ6fxVPqN4b4QcjbScRp3EZlRgBJP0vpdBSJFlfdTrbILjZ UPPo8kQ3c5bAEMsGzrBCNjsa3xG8mzfSRwwWdOveBwNS8dvojQakhfBCXRuj5fTHxwyVpARl5JWp pi3FUsh7uYvn22Fhvj3i3NSGYk5g8pHW97q/bZ6CDM3UWobSdjBUrntehZTlhCAxStcmqjWOieqe rVW7SERNfVnCMQvEIDsnk9LUmdnVaCEUoFsG/GOyHJ3EHFCXOqn2q3LSkkRKOo5+Y2oioX8Crmbs nG2mOaVwZPoV8OYPQRY31alevzKPpmAJeK5NfAIcpNqBBXwaIXrG+GiU5QIzjYLeJZqFGUoagCIw xWcAaygM+Hv4VfDNGJIgJPChUBl8jwFwgDDuNRdbGos0zrZvMD6n4pjhe9F9YmFO3BWt+QRO0fs6 nfnyhk/2u88SPBSLOygWgIrnlYQ9Bw7fJnkfabcPQ6szWjT5Fpmq52rg4jwcbbFBYbRVkeFqw= X-QQ-XMRINFO: NS+P29fieYNw95Bth2bWPxk= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Thu, 12 Sep 2024 02:06:06 +0800 X-OQ-MSGID: <20240911180618.28921-3-quinkblack@foxmail.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20240911180618.28921-1-quinkblack@foxmail.com> References: <20240911180618.28921-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 02/14] aarch64/hevc: Move epel/qpel to h26x directory 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: Zhao Zhili Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 01D7Tx5BP/S1 From: Zhao Zhili So vvc can reuse the implementation. --- libavcodec/aarch64/Makefile | 4 +- libavcodec/aarch64/h26x/dsp.h | 198 ++++++++++++++++++ .../{hevcdsp_epel_neon.S => h26x/epel_neon.S} | 0 .../{hevcdsp_qpel_neon.S => h26x/qpel_neon.S} | 0 libavcodec/aarch64/hevcdsp_init_aarch64.c | 197 ----------------- 5 files changed, 200 insertions(+), 199 deletions(-) rename libavcodec/aarch64/{hevcdsp_epel_neon.S => h26x/epel_neon.S} (100%) rename libavcodec/aarch64/{hevcdsp_qpel_neon.S => h26x/qpel_neon.S} (100%) diff --git a/libavcodec/aarch64/Makefile b/libavcodec/aarch64/Makefile index a01e665b55..9affb92789 100644 --- a/libavcodec/aarch64/Makefile +++ b/libavcodec/aarch64/Makefile @@ -71,6 +71,6 @@ NEON-OBJS-$(CONFIG_VP9_DECODER) += aarch64/vp9itxfm_16bpp_neon.o \ NEON-OBJS-$(CONFIG_HEVC_DECODER) += aarch64/hevcdsp_deblock_neon.o \ aarch64/hevcdsp_idct_neon.o \ aarch64/hevcdsp_init_aarch64.o \ - aarch64/hevcdsp_qpel_neon.o \ - aarch64/hevcdsp_epel_neon.o \ + aarch64/h26x/epel_neon.o \ + aarch64/h26x/qpel_neon.o \ aarch64/h26x/sao_neon.o diff --git a/libavcodec/aarch64/h26x/dsp.h b/libavcodec/aarch64/h26x/dsp.h index d3f7a4dfe3..902286872d 100644 --- a/libavcodec/aarch64/h26x/dsp.h +++ b/libavcodec/aarch64/h26x/dsp.h @@ -37,4 +37,202 @@ void ff_vvc_sao_edge_filter_16x16_8_neon(uint8_t *dst, const uint8_t *src, ptrdi const int16_t *sao_offset_val, int eo, int width, int height); void ff_vvc_sao_edge_filter_8x8_8_neon(uint8_t *dst, const uint8_t *src, ptrdiff_t stride_dst, const int16_t *sao_offset_val, int eo, int width, int height); + +#define NEON8_FNPROTO_PARTIAL_6(fn, args, ext) \ + void ff_hevc_put_hevc_##fn##_h4_8_neon##ext args; \ + void ff_hevc_put_hevc_##fn##_h6_8_neon##ext args; \ + void ff_hevc_put_hevc_##fn##_h8_8_neon##ext args; \ + void ff_hevc_put_hevc_##fn##_h12_8_neon##ext args; \ + void ff_hevc_put_hevc_##fn##_h16_8_neon##ext args; \ + void ff_hevc_put_hevc_##fn##_h32_8_neon##ext args; + +NEON8_FNPROTO_PARTIAL_6(qpel, (int16_t *dst, const uint8_t *_src, ptrdiff_t _srcstride, int height, + intptr_t mx, intptr_t my, int width),) + +NEON8_FNPROTO_PARTIAL_6(qpel_uni, (uint8_t *_dst, ptrdiff_t _dststride, const uint8_t *_src, + ptrdiff_t _srcstride, int height, intptr_t mx, intptr_t my, int width),) + +NEON8_FNPROTO_PARTIAL_6(qpel_bi, (uint8_t *_dst, ptrdiff_t _dststride, const uint8_t *_src, + ptrdiff_t _srcstride, const int16_t *src2, int height, intptr_t + mx, intptr_t my, int width),) + +#define NEON8_FNPROTO(fn, args, ext) \ + void ff_hevc_put_hevc_##fn##4_8_neon##ext args; \ + void ff_hevc_put_hevc_##fn##6_8_neon##ext args; \ + void ff_hevc_put_hevc_##fn##8_8_neon##ext args; \ + void ff_hevc_put_hevc_##fn##12_8_neon##ext args; \ + void ff_hevc_put_hevc_##fn##16_8_neon##ext args; \ + void ff_hevc_put_hevc_##fn##24_8_neon##ext args; \ + void ff_hevc_put_hevc_##fn##32_8_neon##ext args; \ + void ff_hevc_put_hevc_##fn##48_8_neon##ext args; \ + void ff_hevc_put_hevc_##fn##64_8_neon##ext args + +#define NEON8_FNPROTO_PARTIAL_4(fn, args, ext) \ + void ff_hevc_put_hevc_##fn##4_8_neon##ext args; \ + void ff_hevc_put_hevc_##fn##8_8_neon##ext args; \ + void ff_hevc_put_hevc_##fn##16_8_neon##ext args; \ + void ff_hevc_put_hevc_##fn##64_8_neon##ext args + +#define NEON8_FNPROTO_PARTIAL_5(fn, args, ext) \ + void ff_hevc_put_hevc_##fn##4_8_neon##ext args; \ + void ff_hevc_put_hevc_##fn##8_8_neon##ext args; \ + void ff_hevc_put_hevc_##fn##16_8_neon##ext args; \ + void ff_hevc_put_hevc_##fn##32_8_neon##ext args; \ + void ff_hevc_put_hevc_##fn##64_8_neon##ext args + +NEON8_FNPROTO(pel_pixels, (int16_t *dst, + const uint8_t *src, ptrdiff_t srcstride, + int height, intptr_t mx, intptr_t my, int width),); + +NEON8_FNPROTO(pel_bi_pixels, (uint8_t *dst, ptrdiff_t dststride, + const uint8_t *_src, ptrdiff_t _srcstride, const int16_t *src2, + int height, intptr_t mx, intptr_t my, int width),); + +NEON8_FNPROTO(epel_bi_h, (uint8_t *dst, ptrdiff_t dststride, + const uint8_t *src, ptrdiff_t srcstride, const int16_t *src2, + int height, intptr_t mx, intptr_t my, int width),); + +NEON8_FNPROTO(epel_bi_v, (uint8_t *dst, ptrdiff_t dststride, + const uint8_t *src, ptrdiff_t srcstride, const int16_t *src2, + int height, intptr_t mx, intptr_t my, int width),); + +NEON8_FNPROTO(epel_bi_hv, (uint8_t *dst, ptrdiff_t dststride, + const uint8_t *src, ptrdiff_t srcstride, const int16_t *src2, + int height, intptr_t mx, intptr_t my, int width),); + +NEON8_FNPROTO(epel_bi_hv, (uint8_t *dst, ptrdiff_t dststride, + const uint8_t *src, ptrdiff_t srcstride, const int16_t *src2, + int height, intptr_t mx, intptr_t my, int width), _i8mm); + +NEON8_FNPROTO(epel_v, (int16_t *dst, + const uint8_t *src, ptrdiff_t srcstride, + int height, intptr_t mx, intptr_t my, int width),); + +NEON8_FNPROTO(pel_uni_pixels, (uint8_t *_dst, ptrdiff_t _dststride, + const uint8_t *_src, ptrdiff_t _srcstride, + int height, intptr_t mx, intptr_t my, int width),); + +NEON8_FNPROTO(pel_uni_w_pixels, (uint8_t *_dst, ptrdiff_t _dststride, + const uint8_t *_src, ptrdiff_t _srcstride, + int height, int denom, int wx, int ox, + intptr_t mx, intptr_t my, int width),); + +NEON8_FNPROTO(epel_uni_v, (uint8_t *dst, ptrdiff_t dststride, + const uint8_t *src, ptrdiff_t srcstride, + int height, intptr_t mx, intptr_t my, int width),); + +NEON8_FNPROTO(epel_uni_hv, (uint8_t *dst, ptrdiff_t _dststride, + const uint8_t *src, ptrdiff_t srcstride, + int height, intptr_t mx, intptr_t my, int width),); + +NEON8_FNPROTO(epel_uni_hv, (uint8_t *dst, ptrdiff_t _dststride, + const uint8_t *src, ptrdiff_t srcstride, + int height, intptr_t mx, intptr_t my, int width), _i8mm); + +NEON8_FNPROTO(epel_uni_w_v, (uint8_t *_dst, ptrdiff_t _dststride, + const uint8_t *_src, ptrdiff_t _srcstride, + int height, int denom, int wx, int ox, + intptr_t mx, intptr_t my, int width),); + +NEON8_FNPROTO_PARTIAL_4(qpel_uni_w_v, (uint8_t *_dst, ptrdiff_t _dststride, + const uint8_t *_src, ptrdiff_t _srcstride, + int height, int denom, int wx, int ox, + intptr_t mx, intptr_t my, int width),); + +NEON8_FNPROTO(epel_h, (int16_t *dst, + const uint8_t *_src, ptrdiff_t _srcstride, + int height, intptr_t mx, intptr_t my, int width),); + +NEON8_FNPROTO(epel_hv, (int16_t *dst, + const uint8_t *src, ptrdiff_t srcstride, + int height, intptr_t mx, intptr_t my, int width), ); + +NEON8_FNPROTO(epel_h, (int16_t *dst, + const uint8_t *_src, ptrdiff_t _srcstride, + int height, intptr_t mx, intptr_t my, int width), _i8mm); + +NEON8_FNPROTO(epel_hv, (int16_t *dst, + const uint8_t *src, ptrdiff_t srcstride, + int height, intptr_t mx, intptr_t my, int width), _i8mm); + +NEON8_FNPROTO(epel_uni_w_h, (uint8_t *_dst, ptrdiff_t _dststride, + const uint8_t *_src, ptrdiff_t _srcstride, + int height, int denom, int wx, int ox, + intptr_t mx, intptr_t my, int width),); + +NEON8_FNPROTO(epel_uni_w_h, (uint8_t *_dst, ptrdiff_t _dststride, + const uint8_t *_src, ptrdiff_t _srcstride, + int height, int denom, int wx, int ox, + intptr_t mx, intptr_t my, int width), _i8mm); + +NEON8_FNPROTO(qpel_h, (int16_t *dst, + const uint8_t *_src, ptrdiff_t _srcstride, + int height, intptr_t mx, intptr_t my, int width), _i8mm); + +NEON8_FNPROTO(qpel_v, (int16_t *dst, + const uint8_t *src, ptrdiff_t srcstride, + int height, intptr_t mx, intptr_t my, int width),); + +NEON8_FNPROTO(qpel_hv, (int16_t *dst, + const uint8_t *src, ptrdiff_t srcstride, + int height, intptr_t mx, intptr_t my, int width),); + +NEON8_FNPROTO(qpel_hv, (int16_t *dst, + const uint8_t *src, ptrdiff_t srcstride, + int height, intptr_t mx, intptr_t my, int width), _i8mm); + +NEON8_FNPROTO(qpel_uni_v, (uint8_t *dst, ptrdiff_t dststride, + const uint8_t *src, ptrdiff_t srcstride, + int height, intptr_t mx, intptr_t my, int width),); + +NEON8_FNPROTO(qpel_uni_hv, (uint8_t *dst, ptrdiff_t dststride, + const uint8_t *src, ptrdiff_t srcstride, + int height, intptr_t mx, intptr_t my, int width),); + +NEON8_FNPROTO(qpel_uni_hv, (uint8_t *dst, ptrdiff_t dststride, + const uint8_t *src, ptrdiff_t srcstride, + int height, intptr_t mx, intptr_t my, int width), _i8mm); + +NEON8_FNPROTO(qpel_uni_w_h, (uint8_t *_dst, ptrdiff_t _dststride, + const uint8_t *_src, ptrdiff_t _srcstride, + int height, int denom, int wx, int ox, + intptr_t mx, intptr_t my, int width),); + +NEON8_FNPROTO(qpel_uni_w_h, (uint8_t *_dst, ptrdiff_t _dststride, + const uint8_t *_src, ptrdiff_t _srcstride, + int height, int denom, int wx, int ox, + intptr_t mx, intptr_t my, int width), _i8mm); + +NEON8_FNPROTO(epel_uni_w_hv, (uint8_t *_dst, ptrdiff_t _dststride, + const uint8_t *_src, ptrdiff_t _srcstride, + int height, int denom, int wx, int ox, + intptr_t mx, intptr_t my, int width),); + +NEON8_FNPROTO(epel_uni_w_hv, (uint8_t *_dst, ptrdiff_t _dststride, + const uint8_t *_src, ptrdiff_t _srcstride, + int height, int denom, int wx, int ox, + intptr_t mx, intptr_t my, int width), _i8mm); + +NEON8_FNPROTO_PARTIAL_5(qpel_uni_w_hv, (uint8_t *_dst, ptrdiff_t _dststride, + const uint8_t *_src, ptrdiff_t _srcstride, + int height, int denom, int wx, int ox, + intptr_t mx, intptr_t my, int width),); + +NEON8_FNPROTO_PARTIAL_5(qpel_uni_w_hv, (uint8_t *_dst, ptrdiff_t _dststride, + const uint8_t *_src, ptrdiff_t _srcstride, + int height, int denom, int wx, int ox, + intptr_t mx, intptr_t my, int width), _i8mm); + +NEON8_FNPROTO(qpel_bi_v, (uint8_t *dst, ptrdiff_t dststride, + const uint8_t *src, ptrdiff_t srcstride, const int16_t *src2, + int height, intptr_t mx, intptr_t my, int width),); + +NEON8_FNPROTO(qpel_bi_hv, (uint8_t *dst, ptrdiff_t dststride, + const uint8_t *src, ptrdiff_t srcstride, const int16_t *src2, + int height, intptr_t mx, intptr_t my, int width),); + +NEON8_FNPROTO(qpel_bi_hv, (uint8_t *dst, ptrdiff_t dststride, + const uint8_t *src, ptrdiff_t srcstride, const int16_t *src2, + int height, intptr_t mx, intptr_t my, int width), _i8mm); + #endif diff --git a/libavcodec/aarch64/hevcdsp_epel_neon.S b/libavcodec/aarch64/h26x/epel_neon.S similarity index 100% rename from libavcodec/aarch64/hevcdsp_epel_neon.S rename to libavcodec/aarch64/h26x/epel_neon.S diff --git a/libavcodec/aarch64/hevcdsp_qpel_neon.S b/libavcodec/aarch64/h26x/qpel_neon.S similarity index 100% rename from libavcodec/aarch64/hevcdsp_qpel_neon.S rename to libavcodec/aarch64/h26x/qpel_neon.S diff --git a/libavcodec/aarch64/hevcdsp_init_aarch64.c b/libavcodec/aarch64/hevcdsp_init_aarch64.c index 26bbc8750f..386d7c59c8 100644 --- a/libavcodec/aarch64/hevcdsp_init_aarch64.c +++ b/libavcodec/aarch64/hevcdsp_init_aarch64.c @@ -93,203 +93,6 @@ void ff_hevc_idct_16x16_dc_10_neon(int16_t *coeffs); void ff_hevc_idct_32x32_dc_10_neon(int16_t *coeffs); void ff_hevc_transform_luma_4x4_neon_8(int16_t *coeffs); -#define NEON8_FNPROTO_PARTIAL_6(fn, args, ext) \ - void ff_hevc_put_hevc_##fn##_h4_8_neon##ext args; \ - void ff_hevc_put_hevc_##fn##_h6_8_neon##ext args; \ - void ff_hevc_put_hevc_##fn##_h8_8_neon##ext args; \ - void ff_hevc_put_hevc_##fn##_h12_8_neon##ext args; \ - void ff_hevc_put_hevc_##fn##_h16_8_neon##ext args; \ - void ff_hevc_put_hevc_##fn##_h32_8_neon##ext args; - -NEON8_FNPROTO_PARTIAL_6(qpel, (int16_t *dst, const uint8_t *_src, ptrdiff_t _srcstride, int height, - intptr_t mx, intptr_t my, int width),) - -NEON8_FNPROTO_PARTIAL_6(qpel_uni, (uint8_t *_dst, ptrdiff_t _dststride, const uint8_t *_src, - ptrdiff_t _srcstride, int height, intptr_t mx, intptr_t my, int width),) - -NEON8_FNPROTO_PARTIAL_6(qpel_bi, (uint8_t *_dst, ptrdiff_t _dststride, const uint8_t *_src, - ptrdiff_t _srcstride, const int16_t *src2, int height, intptr_t - mx, intptr_t my, int width),) - -#define NEON8_FNPROTO(fn, args, ext) \ - void ff_hevc_put_hevc_##fn##4_8_neon##ext args; \ - void ff_hevc_put_hevc_##fn##6_8_neon##ext args; \ - void ff_hevc_put_hevc_##fn##8_8_neon##ext args; \ - void ff_hevc_put_hevc_##fn##12_8_neon##ext args; \ - void ff_hevc_put_hevc_##fn##16_8_neon##ext args; \ - void ff_hevc_put_hevc_##fn##24_8_neon##ext args; \ - void ff_hevc_put_hevc_##fn##32_8_neon##ext args; \ - void ff_hevc_put_hevc_##fn##48_8_neon##ext args; \ - void ff_hevc_put_hevc_##fn##64_8_neon##ext args - -#define NEON8_FNPROTO_PARTIAL_4(fn, args, ext) \ - void ff_hevc_put_hevc_##fn##4_8_neon##ext args; \ - void ff_hevc_put_hevc_##fn##8_8_neon##ext args; \ - void ff_hevc_put_hevc_##fn##16_8_neon##ext args; \ - void ff_hevc_put_hevc_##fn##64_8_neon##ext args - -#define NEON8_FNPROTO_PARTIAL_5(fn, args, ext) \ - void ff_hevc_put_hevc_##fn##4_8_neon##ext args; \ - void ff_hevc_put_hevc_##fn##8_8_neon##ext args; \ - void ff_hevc_put_hevc_##fn##16_8_neon##ext args; \ - void ff_hevc_put_hevc_##fn##32_8_neon##ext args; \ - void ff_hevc_put_hevc_##fn##64_8_neon##ext args - -NEON8_FNPROTO(pel_pixels, (int16_t *dst, - const uint8_t *src, ptrdiff_t srcstride, - int height, intptr_t mx, intptr_t my, int width),); - -NEON8_FNPROTO(pel_bi_pixels, (uint8_t *dst, ptrdiff_t dststride, - const uint8_t *_src, ptrdiff_t _srcstride, const int16_t *src2, - int height, intptr_t mx, intptr_t my, int width),); - -NEON8_FNPROTO(epel_bi_h, (uint8_t *dst, ptrdiff_t dststride, - const uint8_t *src, ptrdiff_t srcstride, const int16_t *src2, - int height, intptr_t mx, intptr_t my, int width),); - -NEON8_FNPROTO(epel_bi_v, (uint8_t *dst, ptrdiff_t dststride, - const uint8_t *src, ptrdiff_t srcstride, const int16_t *src2, - int height, intptr_t mx, intptr_t my, int width),); - -NEON8_FNPROTO(epel_bi_hv, (uint8_t *dst, ptrdiff_t dststride, - const uint8_t *src, ptrdiff_t srcstride, const int16_t *src2, - int height, intptr_t mx, intptr_t my, int width),); - -NEON8_FNPROTO(epel_bi_hv, (uint8_t *dst, ptrdiff_t dststride, - const uint8_t *src, ptrdiff_t srcstride, const int16_t *src2, - int height, intptr_t mx, intptr_t my, int width), _i8mm); - -NEON8_FNPROTO(epel_v, (int16_t *dst, - const uint8_t *src, ptrdiff_t srcstride, - int height, intptr_t mx, intptr_t my, int width),); - -NEON8_FNPROTO(pel_uni_pixels, (uint8_t *_dst, ptrdiff_t _dststride, - const uint8_t *_src, ptrdiff_t _srcstride, - int height, intptr_t mx, intptr_t my, int width),); - -NEON8_FNPROTO(pel_uni_w_pixels, (uint8_t *_dst, ptrdiff_t _dststride, - const uint8_t *_src, ptrdiff_t _srcstride, - int height, int denom, int wx, int ox, - intptr_t mx, intptr_t my, int width),); - -NEON8_FNPROTO(epel_uni_v, (uint8_t *dst, ptrdiff_t dststride, - const uint8_t *src, ptrdiff_t srcstride, - int height, intptr_t mx, intptr_t my, int width),); - -NEON8_FNPROTO(epel_uni_hv, (uint8_t *dst, ptrdiff_t _dststride, - const uint8_t *src, ptrdiff_t srcstride, - int height, intptr_t mx, intptr_t my, int width),); - -NEON8_FNPROTO(epel_uni_hv, (uint8_t *dst, ptrdiff_t _dststride, - const uint8_t *src, ptrdiff_t srcstride, - int height, intptr_t mx, intptr_t my, int width), _i8mm); - -NEON8_FNPROTO(epel_uni_w_v, (uint8_t *_dst, ptrdiff_t _dststride, - const uint8_t *_src, ptrdiff_t _srcstride, - int height, int denom, int wx, int ox, - intptr_t mx, intptr_t my, int width),); - -NEON8_FNPROTO_PARTIAL_4(qpel_uni_w_v, (uint8_t *_dst, ptrdiff_t _dststride, - const uint8_t *_src, ptrdiff_t _srcstride, - int height, int denom, int wx, int ox, - intptr_t mx, intptr_t my, int width),); - -NEON8_FNPROTO(epel_h, (int16_t *dst, - const uint8_t *_src, ptrdiff_t _srcstride, - int height, intptr_t mx, intptr_t my, int width),); - -NEON8_FNPROTO(epel_hv, (int16_t *dst, - const uint8_t *src, ptrdiff_t srcstride, - int height, intptr_t mx, intptr_t my, int width), ); - -NEON8_FNPROTO(epel_h, (int16_t *dst, - const uint8_t *_src, ptrdiff_t _srcstride, - int height, intptr_t mx, intptr_t my, int width), _i8mm); - -NEON8_FNPROTO(epel_hv, (int16_t *dst, - const uint8_t *src, ptrdiff_t srcstride, - int height, intptr_t mx, intptr_t my, int width), _i8mm); - -NEON8_FNPROTO(epel_uni_w_h, (uint8_t *_dst, ptrdiff_t _dststride, - const uint8_t *_src, ptrdiff_t _srcstride, - int height, int denom, int wx, int ox, - intptr_t mx, intptr_t my, int width),); - -NEON8_FNPROTO(epel_uni_w_h, (uint8_t *_dst, ptrdiff_t _dststride, - const uint8_t *_src, ptrdiff_t _srcstride, - int height, int denom, int wx, int ox, - intptr_t mx, intptr_t my, int width), _i8mm); - -NEON8_FNPROTO(qpel_h, (int16_t *dst, - const uint8_t *_src, ptrdiff_t _srcstride, - int height, intptr_t mx, intptr_t my, int width), _i8mm); - -NEON8_FNPROTO(qpel_v, (int16_t *dst, - const uint8_t *src, ptrdiff_t srcstride, - int height, intptr_t mx, intptr_t my, int width),); - -NEON8_FNPROTO(qpel_hv, (int16_t *dst, - const uint8_t *src, ptrdiff_t srcstride, - int height, intptr_t mx, intptr_t my, int width),); - -NEON8_FNPROTO(qpel_hv, (int16_t *dst, - const uint8_t *src, ptrdiff_t srcstride, - int height, intptr_t mx, intptr_t my, int width), _i8mm); - -NEON8_FNPROTO(qpel_uni_v, (uint8_t *dst, ptrdiff_t dststride, - const uint8_t *src, ptrdiff_t srcstride, - int height, intptr_t mx, intptr_t my, int width),); - -NEON8_FNPROTO(qpel_uni_hv, (uint8_t *dst, ptrdiff_t dststride, - const uint8_t *src, ptrdiff_t srcstride, - int height, intptr_t mx, intptr_t my, int width),); - -NEON8_FNPROTO(qpel_uni_hv, (uint8_t *dst, ptrdiff_t dststride, - const uint8_t *src, ptrdiff_t srcstride, - int height, intptr_t mx, intptr_t my, int width), _i8mm); - -NEON8_FNPROTO(qpel_uni_w_h, (uint8_t *_dst, ptrdiff_t _dststride, - const uint8_t *_src, ptrdiff_t _srcstride, - int height, int denom, int wx, int ox, - intptr_t mx, intptr_t my, int width),); - -NEON8_FNPROTO(qpel_uni_w_h, (uint8_t *_dst, ptrdiff_t _dststride, - const uint8_t *_src, ptrdiff_t _srcstride, - int height, int denom, int wx, int ox, - intptr_t mx, intptr_t my, int width), _i8mm); - -NEON8_FNPROTO(epel_uni_w_hv, (uint8_t *_dst, ptrdiff_t _dststride, - const uint8_t *_src, ptrdiff_t _srcstride, - int height, int denom, int wx, int ox, - intptr_t mx, intptr_t my, int width),); - -NEON8_FNPROTO(epel_uni_w_hv, (uint8_t *_dst, ptrdiff_t _dststride, - const uint8_t *_src, ptrdiff_t _srcstride, - int height, int denom, int wx, int ox, - intptr_t mx, intptr_t my, int width), _i8mm); - -NEON8_FNPROTO_PARTIAL_5(qpel_uni_w_hv, (uint8_t *_dst, ptrdiff_t _dststride, - const uint8_t *_src, ptrdiff_t _srcstride, - int height, int denom, int wx, int ox, - intptr_t mx, intptr_t my, int width),); - -NEON8_FNPROTO_PARTIAL_5(qpel_uni_w_hv, (uint8_t *_dst, ptrdiff_t _dststride, - const uint8_t *_src, ptrdiff_t _srcstride, - int height, int denom, int wx, int ox, - intptr_t mx, intptr_t my, int width), _i8mm); - -NEON8_FNPROTO(qpel_bi_v, (uint8_t *dst, ptrdiff_t dststride, - const uint8_t *src, ptrdiff_t srcstride, const int16_t *src2, - int height, intptr_t mx, intptr_t my, int width),); - -NEON8_FNPROTO(qpel_bi_hv, (uint8_t *dst, ptrdiff_t dststride, - const uint8_t *src, ptrdiff_t srcstride, const int16_t *src2, - int height, intptr_t mx, intptr_t my, int width),); - -NEON8_FNPROTO(qpel_bi_hv, (uint8_t *dst, ptrdiff_t dststride, - const uint8_t *src, ptrdiff_t srcstride, const int16_t *src2, - int height, intptr_t mx, intptr_t my, int width), _i8mm); - #define NEON8_FNASSIGN(member, v, h, fn, ext) \ member[1][v][h] = ff_hevc_put_hevc_##fn##4_8_neon##ext; \ member[2][v][h] = ff_hevc_put_hevc_##fn##6_8_neon##ext; \