From 0d8c769a21809f2104a27b06fec52d6150ddef94 Mon Sep 17 00:00:00 2001 From: kami_coder <1009097140@qq.com> Date: Mon, 26 Feb 2024 09:43:50 +0800 Subject: [PATCH] =?UTF-8?q?fft2d=E4=B8=8A=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: kami_coder <1009097140@qq.com> --- thirdparty/fft2d/HPKBUILD | 72 ++++++++ thirdparty/fft2d/HPKCHECK | 31 ++++ thirdparty/fft2d/OAT.xml | 16 ++ thirdparty/fft2d/README.OpenSource | 11 ++ thirdparty/fft2d/README_zh.md | 9 + thirdparty/fft2d/SHA512SUM | 1 + thirdparty/fft2d/docs/hap_integrate.md | 83 +++++++++ thirdparty/fft2d/docs/pic/cmd-test-ret.png | Bin 0 -> 2690 bytes thirdparty/fft2d/docs/pic/libfft2d-dev.png | Bin 0 -> 8225 bytes thirdparty/fft2d/fft2d_pkg.patch | 186 +++++++++++++++++++++ 10 files changed, 409 insertions(+) create mode 100644 thirdparty/fft2d/HPKBUILD create mode 100644 thirdparty/fft2d/HPKCHECK create mode 100644 thirdparty/fft2d/OAT.xml create mode 100644 thirdparty/fft2d/README.OpenSource create mode 100644 thirdparty/fft2d/README_zh.md create mode 100644 thirdparty/fft2d/SHA512SUM create mode 100644 thirdparty/fft2d/docs/hap_integrate.md create mode 100644 thirdparty/fft2d/docs/pic/cmd-test-ret.png create mode 100644 thirdparty/fft2d/docs/pic/libfft2d-dev.png create mode 100644 thirdparty/fft2d/fft2d_pkg.patch diff --git a/thirdparty/fft2d/HPKBUILD b/thirdparty/fft2d/HPKBUILD new file mode 100644 index 00000000..751f00bd --- /dev/null +++ b/thirdparty/fft2d/HPKBUILD @@ -0,0 +1,72 @@ +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Contributor: Jeff Han +# Maintainer: Jeff Han + +pkgname=fft2d +pkgver=v2 +pkgrel=0 +pkgdesc="A package to calculate Discrete Fourier/Cosine/Sine Transforms of 1-dimensional sequences of length 2^N." +url="https://www.kurims.kyoto-u.ac.jp/~ooura/fft.html" +archs=("armeabi-v7a" "arm64-v8a") +license=("Free Software License") +depends=() +makedepends=() + +source="https://www.kurims.kyoto-u.ac.jp/~ooura/$pkgname.tgz" + +downloadpackage=true +autounpack=true + +builddir=$pkgname +packagename=$builddir.tgz +patchflag=true + +prepare() { + mkdir -p $builddir/$ARCH-build + + if $patchflag + then + cd $builddir + patch -p1 < `pwd`/../fft2d_pkg.patch + # patch只需要打一次,关闭打patch + patchflag=false + cd $OLDPWD + fi +} + +build() { + ret=0 + cd $builddir + ${OHOS_SDK}/native/build-tools/cmake/bin/cmake "$@" -B$ARCH-build -S./ > $buildlog 2>&1 + $MAKE VERBOSE=1 -C $ARCH-build >> $buildlog 2>&1 + ret=$? + cd $OLDPWD + return $ret +} + +package() { + cd $builddir + $MAKE -C $ARCH-build install >> $buildlog 2>&1 + cd $OLDPWD +} + +check() { + echo "The test must be on an OpenHarmony device!" +} + +# 清理环境 +cleanbuild() { + rm -rf ${PWD}/$builddir +} diff --git a/thirdparty/fft2d/HPKCHECK b/thirdparty/fft2d/HPKCHECK new file mode 100644 index 00000000..684c46f0 --- /dev/null +++ b/thirdparty/fft2d/HPKCHECK @@ -0,0 +1,31 @@ +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Contributor: Jeff Han +# Maintainer: Jeff Han + +source HPKBUILD > /dev/null 2>&1 +logfile=${LYCIUM_THIRDPARTY_ROOT}/${pkgname}/${pkgname}_${ARCH}_${OHOS_SDK_VER}_test.log + +openharmonycheck() { + res=0 + cd ${builddir}/${ARCH}-build + ./shrtdctt > ${logfile} 2>&1 + res=$? + if [ $res -ne 0 ]; then + cd $OLDPWD + return $res + fi + cd $OLDPWD + return $res +} diff --git a/thirdparty/fft2d/OAT.xml b/thirdparty/fft2d/OAT.xml new file mode 100644 index 00000000..03ee5a76 --- /dev/null +++ b/thirdparty/fft2d/OAT.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/thirdparty/fft2d/README.OpenSource b/thirdparty/fft2d/README.OpenSource new file mode 100644 index 00000000..eeeb9465 --- /dev/null +++ b/thirdparty/fft2d/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "fft2d", + "License": "Free Software License", + "License File": "LICENSE", + "Version Number": "v2", + "Owner": "huangminzhong2@huawei.com", + "Upstream URL": "https://www.kurims.kyoto-u.ac.jp/~ooura/fft.html ", + "Description": "This is a package to calculate Discrete Fourier/Cosine/Sine Transforms of 1-dimensional sequences of length 2^N. This package contains C and Fortran FFT codes." + } +] diff --git a/thirdparty/fft2d/README_zh.md b/thirdparty/fft2d/README_zh.md new file mode 100644 index 00000000..39d250b2 --- /dev/null +++ b/thirdparty/fft2d/README_zh.md @@ -0,0 +1,9 @@ +# fft2d 三方库说明 +## 功能简介 +fft2d 这是一个用于计算长度为2^N的一维序列的离散傅立叶/余弦/正弦变换的程序包。 +## 使用约束 +- SDK版本:ohos_sdk_linux 4.1.3.401 +- 三方库版本:v2 + +## 集成方式 ++ [应用hap包集成](docs/hap_integrate.md) diff --git a/thirdparty/fft2d/SHA512SUM b/thirdparty/fft2d/SHA512SUM new file mode 100644 index 00000000..0442f3c7 --- /dev/null +++ b/thirdparty/fft2d/SHA512SUM @@ -0,0 +1 @@ +af993f68e8e1eb3cb927a51e86da8f74cfafc912a7cd055515e50fe543dd19ab5a6f7b1c2be4a55d6f4a0e5d766ead34c3be4c5705be6353f78cb2a55bd5cf16 fft2d.tgz diff --git a/thirdparty/fft2d/docs/hap_integrate.md b/thirdparty/fft2d/docs/hap_integrate.md new file mode 100644 index 00000000..4b1549fb --- /dev/null +++ b/thirdparty/fft2d/docs/hap_integrate.md @@ -0,0 +1,83 @@ +# fft2d集成到应用hap + +本库是在RK3568开发板上基于OpenHarmony3.2 Release版本的镜像验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 + +## 开发环境 + +- [开发环境准备](../../../docs/hap_integrate_environment.md) + +## 编译三方库 + +* 下载本仓库 + + ```shell + git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` + +* 三方库目录结构 + + ```shell + tpc_c_cplusplus/thirdparty/fft2d #三方库fft2d的目录结构如下 + ├── docs #三方库相关文档的文件夹 + ├── HPKBUILD #构建脚本 + ├── HPKCHECK #测试脚本 + ├── OAT.xml #扫描结果文件 + ├── SHA512SUM #三方库校验文件 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md #三方库简介 + ├── fft2d_pkg.patch #用于fft2d库编译的补丁 + ``` + +* 在lycium目录下编译三方库 + + 编译环境的搭建参考[准备三方库构建环境](../../../lycium/README.md#1编译环境准备) + + ```shell + cd lycium + ./build.sh fft2d + ``` + +* 三方库头文件及生成的库 + + 在lycium目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 + + ```shell + fft2d/arm64-v8a-build fft2d/armeabi-v7a-build + ``` + +* [测试三方库](#测试三方库) + +## 应用中使用三方库 + +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的头文件拷贝到该目录下,将编译生成的三方库拷贝到工程的libs目录下,如下图所示: + + ![thirdparty_install_dir](pic/libfft2d-dev.png) + +- 在最外层(cpp目录下)CMakeLists.txt中添加如下语句 + + ```cmake + #将三方库加入工程中 + target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/liballoc.so) + target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libfftsg2d.so) + target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libfftsg3d.so) + target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libshrtdct.so) + + #将三方库的头文件加入工程中 + target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/fft2d/${OHOS_ARCH}/include) + ``` + + +## 测试三方库 + +- 编译出可执行的文件进行测试,[准备三方库测试环境](../../../lycium/README.md#3ci环境准备) + +- 如图所示,进入到构建目录运行测试用例(注意arm64-v8a-build为构建64位的目录,armeabi-v7a-build为构建32位的目录) + + ![fft2d_test](pic/cmd-test-ret.png) + +## 参考资料 + +* [OpenHarmony三方库地址](https://gitee.com/openharmony-tpc) +* [OpenHarmony知识体系](https://gitee.com/openharmony-sig/knowledge) +* [fft2d三方库地址](https://www.kurims.kyoto-u.ac.jp/~ooura/fft.html) + diff --git a/thirdparty/fft2d/docs/pic/cmd-test-ret.png b/thirdparty/fft2d/docs/pic/cmd-test-ret.png new file mode 100644 index 0000000000000000000000000000000000000000..5531c1bf48f626d920444b407c5568d6ea230e33 GIT binary patch literal 2690 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 literal 0 HcmV?d00001 diff --git a/thirdparty/fft2d/fft2d_pkg.patch b/thirdparty/fft2d/fft2d_pkg.patch new file mode 100644 index 00000000..2ea310c4 --- /dev/null +++ b/thirdparty/fft2d/fft2d_pkg.patch @@ -0,0 +1,186 @@ +diff -Naur fft2d/CMakeLists.txt fft2dcp/CMakeLists.txt +--- fft2d/CMakeLists.txt 1970-01-01 08:00:00.000000000 +0800 ++++ fft2dcp/CMakeLists.txt 2024-03-02 15:53:43.547521200 +0800 +@@ -0,0 +1,100 @@ ++# Copyright (c) 2023 Huawei Device Co., Ltd. ++# Licensed under the Apache License, Version 2.0 (the "License"); ++# you may not use this file except in compliance with the License. ++# You may obtain a copy of the License at ++# ++# http://www.apache.org/licenses/LICENSE-2.0 ++# ++# Unless required by applicable law or agreed to in writing, software ++# distributed under the License is distributed on an "AS IS" BASIS, ++# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++# See the License for the specific language governing permissions and ++# limitations under the License. ++ ++cmake_minimum_required(VERSION 3.16) ++ ++# Project 创建工程文件 ++project(fft2d C CXX) ++ ++# 添加C源文件到项目中 ++set(SOURCE_FILES_FFTSG2D ++ ${CMAKE_CURRENT_SOURCE_DIR}/fftsg2d.c ++ ${CMAKE_CURRENT_SOURCE_DIR}/fftsg.c) ++set(SOURCE_FILES_FFTSG3D ++ ${CMAKE_CURRENT_SOURCE_DIR}/fftsg3d.c ++ ${CMAKE_CURRENT_SOURCE_DIR}/fftsg.c) ++ ++#生成动态库.so文件,默认在build文件夹中 ++add_library(fft4f2d SHARED ${CMAKE_CURRENT_SOURCE_DIR}/fft4f2d.c) ++add_library(fftsg2d SHARED ${SOURCE_FILES_FFTSG2D}) ++add_library(fftsg3d SHARED ${SOURCE_FILES_FFTSG3D}) ++add_library(shrtdct SHARED ${CMAKE_CURRENT_SOURCE_DIR}/shrtdct.c) ++add_library(alloc SHARED ${CMAKE_CURRENT_SOURCE_DIR}/alloc.c) ++ ++#设置编译模式 ++set(CMAKE_BUILD_TYPE "Release" ) ++ ++#生成文件到指定位置 ++set(LIBRARY_OUTPUT_PATH ${CMAKE_INSTALL_PREFIX}/lib) ++set(LIBRARY_INCLUDE_PATH ${CMAKE_INSTALL_PREFIX}/include) ++set(TEST_SRC_PATH ${CMAKE_CURRENT_SOURCE_DIR}/sample2d) ++ ++#fftsg2dt测试程序 ++set(TEST_FFTSG2D ++ ${TEST_SRC_PATH}/fftsg2dt.c) ++add_executable(fftsg2dt ${TEST_FFTSG2D}) ++target_link_libraries(fftsg2dt fftsg2d m alloc) ++ ++#fftsg3dt测试程序 ++set(TEST_FFTSG3D ++ ${TEST_SRC_PATH}/fftsg3dt.c) ++add_executable(fftsg3dt ${TEST_FFTSG3D}) ++target_link_libraries(fftsg3dt fftsg3d m alloc) ++ ++#shrtdct测试程序 ++set(TEST_SHRTDCT ++ ${TEST_SRC_PATH}/shrtdctt.c) ++add_executable(shrtdctt ${TEST_SHRTDCT}) ++target_link_libraries(shrtdctt shrtdct m alloc) ++ ++#fft4f2d测试程序 ++set(TEST_FFT4F2D ++ ${TEST_SRC_PATH}/fft4f2dt.c) ++add_executable(fft4f2dt ${TEST_FFT4F2D}) ++target_link_libraries(fft4f2dt fft4f2d m alloc) ++ ++INSTALL(FILES ++ fft4f2d.h ++ fftsg.h ++ fftsg2d.h ++ fftsg3d.h ++ alloc.h ++ shrtdct.h ++ DESTINATION ${LIBRARY_INCLUDE_PATH} COMPONENT Headers ++) ++ ++install(TARGETS fft4f2d ++LIBRARY DESTINATION ${LIBRARY_OUTPUT_PATH} ++ARCHIVE DESTINATION ${LIBRARY_OUTPUT_PATH} ++) ++ ++install(TARGETS fftsg2d ++LIBRARY DESTINATION ${LIBRARY_OUTPUT_PATH} ++ARCHIVE DESTINATION ${LIBRARY_OUTPUT_PATH} ++) ++ ++install(TARGETS fftsg3d ++LIBRARY DESTINATION ${LIBRARY_OUTPUT_PATH} ++ARCHIVE DESTINATION ${LIBRARY_OUTPUT_PATH} ++) ++ ++install(TARGETS shrtdct ++LIBRARY DESTINATION ${LIBRARY_OUTPUT_PATH} ++ARCHIVE DESTINATION ${LIBRARY_OUTPUT_PATH} ++) ++ ++install(TARGETS alloc ++LIBRARY DESTINATION ${LIBRARY_OUTPUT_PATH} ++ARCHIVE DESTINATION ${LIBRARY_OUTPUT_PATH} ++) ++ +diff -Naur fft2d/fft4f2d.h fft2dcp/fft4f2d.h +--- fft2d/fft4f2d.h 1970-01-01 08:00:00.000000000 +0800 ++++ fft2dcp/fft4f2d.h 2024-03-02 15:51:35.486254100 +0800 +@@ -0,0 +1,11 @@ ++#ifndef _FFT4F2D_H_ ++#define _FFT4F2D_H_ ++ ++#include ++ ++void cdft2d(int, int, int, double **, int *, double *); ++void rdft2d(int, int, int, double **, int *, double *); ++void ddct2d(int, int, int, double **, double **, int *, double *); ++void ddst2d(int, int, int, double **, double **, int *, double *); ++ ++#endif /*_FFT4F2D_H_*/ +\ No newline at end of file +diff -Naur fft2d/fftsg.h fft2dcp/fftsg.h +--- fft2d/fftsg.h 1970-01-01 08:00:00.000000000 +0800 ++++ fft2dcp/fftsg.h 2024-03-02 15:51:35.489254000 +0800 +@@ -0,0 +1,13 @@ ++#ifndef _FFTSG_H_ ++#define _FFTSG_H_ ++ ++#include ++ ++void cdft(int, int, double *, int *, double *); ++void rdft(int, int, double *, int *, double *); ++void ddct(int, int, double *, int *, double *); ++void ddst(int, int, double *, int *, double *); ++void dfct(int, double *, double *, int *, double *); ++void dfst(int, double *, double *, int *, double *); ++ ++#endif /*_FFTSG_H_*/ +\ No newline at end of file +diff -Naur fft2d/fftsg2d.h fft2dcp/fftsg2d.h +--- fft2d/fftsg2d.h 1970-01-01 08:00:00.000000000 +0800 ++++ fft2dcp/fftsg2d.h 2024-03-02 15:51:35.491254100 +0800 +@@ -0,0 +1,12 @@ ++#ifndef _FFTSG2D_H_ ++#define _FFTSG2D_H_ ++ ++#include ++ ++void cdft2d(int, int, int, double **, double *, int *, double *); ++void rdft2d(int, int, int, double **, double *, int *, double *); ++void rdft2dsort(int, int, int, double **); ++void ddct2d(int, int, int, double **, double *, int *, double *); ++void ddst2d(int, int, int, double **, double *, int *, double *); ++ ++#endif /*_FFTSG2D_H_*/ +\ No newline at end of file +diff -Naur fft2d/fftsg3d.h fft2dcp/fftsg3d.h +--- fft2d/fftsg3d.h 1970-01-01 08:00:00.000000000 +0800 ++++ fft2dcp/fftsg3d.h 2024-03-02 15:51:35.493254000 +0800 +@@ -0,0 +1,12 @@ ++#ifndef _FFTSG3D_H_ ++#define _FFTSG3D_H_ ++ ++#include ++ ++void cdft3d(int, int, int, int, double ***, double *, int *, double *); ++void rdft3d(int, int, int, int, double ***, double *, int *, double *); ++void rdft3dsort(int, int, int, int, double ***); ++void ddct3d(int, int, int, int, double ***, double *, int *, double *); ++void ddst3d(int, int, int, int, double ***, double *, int *, double *); ++ ++#endif /*_FFTSG3D_H_*/ +\ No newline at end of file +diff -Naur fft2d/shrtdct.h fft2dcp/shrtdct.h +--- fft2d/shrtdct.h 1970-01-01 08:00:00.000000000 +0800 ++++ fft2dcp/shrtdct.h 2024-03-02 15:51:35.496254400 +0800 +@@ -0,0 +1,9 @@ ++#ifndef _SHRTDCTT_H_ ++#define _SHRTDCTT_H_ ++ ++#include ++ ++void ddct8x8s(int isgn, double **a); ++void ddct16x16s(int isgn, double **a); ++ ++#endif /*_SHRTDCTT_H_*/ +\ No newline at end of file -- Gitee