From 4e43739bfbe2756e393237f44980dd249f340b22 Mon Sep 17 00:00:00 2001 From: huangminzhong Date: Thu, 10 Nov 2022 01:54:30 -0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=89=E6=96=B9=E5=BA=93jb?= =?UTF-8?q?ig2enc=E5=9C=A8OpenHarmony=E4=B8=8A=E7=9A=84GN=E9=80=82?= =?UTF-8?q?=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: huangminzhong --- jbig2enc/BUILD.gn | 98 ++++++++++++++++++++++++ jbig2enc/README.OpenSource | 11 +++ jbig2enc/README_zh.md | 17 +++++ jbig2enc/adapted/init_includes.sh | 2 + jbig2enc/bundle.json | 33 ++++++++ jbig2enc/docs/pic/result.png | Bin 0 -> 16368 bytes jbig2enc/docs/rom_integrate.md | 123 ++++++++++++++++++++++++++++++ 7 files changed, 284 insertions(+) create mode 100755 jbig2enc/BUILD.gn create mode 100755 jbig2enc/README.OpenSource create mode 100755 jbig2enc/README_zh.md create mode 100755 jbig2enc/adapted/init_includes.sh create mode 100755 jbig2enc/bundle.json create mode 100755 jbig2enc/docs/pic/result.png create mode 100755 jbig2enc/docs/rom_integrate.md diff --git a/jbig2enc/BUILD.gn b/jbig2enc/BUILD.gn new file mode 100755 index 00000000..aaa308bf --- /dev/null +++ b/jbig2enc/BUILD.gn @@ -0,0 +1,98 @@ +# Copyright (c) 2019-2022 Huawei Device Co., Ltd. All rights reserved. +# 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. + +import("//build/ohos.gni") +import("//build/ohos/ndk/ndk.gni") + + +declare_args() { + enable_test = false +} + +config("jbig2enc_config") { + cflags = [ + "-Wall", + "-Wno-error=unused-const-variable", + "-DVERSION=\"0.29\"" + ] + + ldflags = [ + "-lm", + ] +} + +ohos_shared_library("jbig2enc_shared") { + sources = [ + "jbig2enc/src/jbig2enc.cc", + "jbig2enc/src/jbig2arith.cc", + "jbig2enc/src/jbig2sym.cc", + "jbig2enc/src/jbig2comparator.cc", + ] + + include_dirs = [ + "jbig2enc/src", + "//third_party/leptonica/leptonica/src", + "//third_party/leptonica/adapted" + ] + + configs = [ ":jbig2enc_config" ] + + deps = [ + "//third_party/leptonica:leptonica", + "//third_party/libpng:libpng" + ] + + part_name = "jbig2enc" +} + +ohos_executable("jbig2") { + sources = [ + "jbig2enc/src/jbig2.cc", + ] + configs = [ ":jbig2enc_config" ] + + include_dirs = [ + "jbig2enc/src", + "//third_party/leptonica/leptonica/src", + "//third_party/leptonica/adapted" + ] + + deps = [ + ":jbig2enc_shared", + "//third_party/leptonica:leptonica", + "//third_party/libpng:libpng" + ] + part_name = "jbig2enc" +} + +action("init_includes") { + script = "adapted/init_includes.sh" + sources = [ "//third_party/jbig2enc/adapted" ] + outputs = [ "${target_out_dir}" ] + args = [ + rebase_path("//third_party/jbig2enc",root_build_dir) + ] +} + +group("jbig2enc") { + deps = [ + ":jbig2enc_shared", + ":init_includes" + ] + + if (enable_test) { + deps += [ + ":jbig2" + ] + } +} diff --git a/jbig2enc/README.OpenSource b/jbig2enc/README.OpenSource new file mode 100755 index 00000000..267cdd36 --- /dev/null +++ b/jbig2enc/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name" : "jbig2enc", + "License" : "Apache License", + "License File" : "LICENSE", + "Version Number" : "0.29", + "Owner" : "huangminzhong2@huawei.com", + "Upstream URL" : "https://github.com/agl/jbig2enc", + "Description" : "This is an encoder for JBIG2." + } +] diff --git a/jbig2enc/README_zh.md b/jbig2enc/README_zh.md new file mode 100755 index 00000000..14c8f126 --- /dev/null +++ b/jbig2enc/README_zh.md @@ -0,0 +1,17 @@ +# jbig2enc 三方库说明 + +## 功能简介 + +jbig2enc是 JBIG2文件的编码器。 + +## 使用约束 + +- ROM版本:OpenHarmony3.2 beta1 +- 三方库版本:0.29 +- 当前适配的功能:[JBIG2](https://github.com/agl/jbig2enc/blob/0.29/fcd14492.pdf) 文件编码, 图片格式转换 +- License:[Apache License](https://github.com/agl/jbig2enc/blob/0.29/COPYING) + +## 集成方式 + +- [系统Rom包集成](./docs/rom_integrate.md) + diff --git a/jbig2enc/adapted/init_includes.sh b/jbig2enc/adapted/init_includes.sh new file mode 100755 index 00000000..dab82dce --- /dev/null +++ b/jbig2enc/adapted/init_includes.sh @@ -0,0 +1,2 @@ +#!/bin/bash +cd $1 && find jbig2enc |grep "allheaders.h" -rF | awk -F : '{print $1}' | xargs sed -i 's///g' diff --git a/jbig2enc/bundle.json b/jbig2enc/bundle.json new file mode 100755 index 00000000..67e6a20f --- /dev/null +++ b/jbig2enc/bundle.json @@ -0,0 +1,33 @@ +{ + "name": "@ohos/jbig2enc", + "description": "This is an encoder for JBIG2.", + "version": "0.29", + "license": "Apache License", + "publishAs": "", + "segment": { + "destPath": "third_party/jbig2enc" + }, + "dirs": {}, + "scripts": {}, + "readmePath": { + "en": "README" + }, + "component": { + "name": "jbig2enc", + "subsystem": "thirdparty", + "syscap": [], + "features": [], + "adapted_system_type": ["standard"], + "rom": "", + "ram": "", + "deps": { + "components": [], + "third_party": [] + }, + "build": { + "sub_component": ["//third_party/jbig2enc:jbig2enc"], + "inner_kits": [], + "test": [] + } + } +} diff --git a/jbig2enc/docs/pic/result.png b/jbig2enc/docs/pic/result.png new file mode 100755 index 0000000000000000000000000000000000000000..cc76049f68900bff879a7c6b05a412775fabf474 GIT binary patch literal 16368 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 R@J7g|p@;XkeRA~Q{}-KD*(m@3 literal 0 HcmV?d00001 diff --git a/jbig2enc/docs/rom_integrate.md b/jbig2enc/docs/rom_integrate.md new file mode 100755 index 00000000..99d0cf49 --- /dev/null +++ b/jbig2enc/docs/rom_integrate.md @@ -0,0 +1,123 @@ +# jbig2enc如何集成到系统Rom +## 准备源码工程 +本库是基于OpenHarmony-v3.2-Beta1版本,在RK3568开发板上验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 +### 准备系统Rom源码 +系统源码获取请参考:[OpenHarmony源码下载](https://gitee.com/openharmony/docs/blob/OpenHarmony-v3.2-Beta2/zh-cn/release-notes/OpenHarmony-v3.2-beta1.md) +### 增加构建脚本及配置文件 +- 下载本仓库代码 + ``` + cd ~ + git clone git@gitee.com:openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` +- 三方库目录结构 + ``` + tpc_c_cplusplus/jbig2enc #三方库jbig2enc的目录结构如下 + ├── adapted #存放三方库适配需要的代码文件 + ├── docs #存放三方库相关文档的文件夹 + ├── BUILD.gn #构建脚本,支持rom包集成 + ├── bundle.json #三方库组件定义文件 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md + ``` +- 将三方库拷贝到OpenHarmony源码的third_party目录下 + ``` + cp ~/tpc_c_cplusplus/jbig2enc ~/openharmony/third_party -rf + ``` +### 准备三方库源码 + +- 下载三方库jbig2enc + +``` +cd ~/openharmony/third_party/jbig2enc #进入三方库目录 +git clone https://github.com/agl/jbig2enc.git -b 0.29 --depth=1 #下载三方库源码 +``` +- 下载依赖库leptonica + + 依赖库下载及适配参考:[leptonica的Rom集成](https://gitee.com/openharmony-sig/tpc_c_cplusplus/leptonica) + +## 系统Rom中引入三方库 + +准备完三方库代码后,我们需要将三方库加入到编译构建体系中。标准系统编译构建可以参考文档[标准系统编译构建指导](https://gitee.com/openharmony/docs/blob/OpenHarmony-3.2-Beta1/zh-cn/device-dev/subsystems/subsys-build-standard-large.md) +我们默认三方库是属于OpenHarmony的thirdparty子系统,如果需要自己定义子系统参考文档[如何为三方库组件中添加一个三方库](https://gitee.com/openharmony-sig/knowledge/blob/master/docs/openharmony_getstarted/port_thirdparty/README.md) +新增需要编译的组件,在OpenHarmony源码的vendor/hihope/rk3568/config.json文件中,新增需要编译的组件,如下代码段所示,在thirdparty子系统下面新增jbig2enc组件 + +``` + { + "subsystem": "thirdparty", + "components": [ + { + "component": "musl", + "features": [] + }, + { + "component": "jbig2enc", + "features": [] + } + ] + } + +``` +## 系统Rom中引入三方库测试程序 +如果需要编译测试用例,在OpenHarmony源码的vendor/hihope/rk3568/config.json文件,对应组件的features中打开编译选项,如下 +``` + { + "subsystem": "thirdparty", + "components": [ + { + "component": "musl", + "features": [] + }, + { + "component": "jbig2enc", + "features": ["enable_test=true"] + } + ] + } +``` +## 编译工程 +在OpenHarmony源码根目录下 +``` +cd ~/openharmony +``` +- 选择平台 + ``` + hb set #hb set 命令会列出所有可选平台,这里我们选择rk3568 + ``` +- 执行编译 + ``` + hb build --target-cpu arm #编译32位系统 + hb build --target-cpu arm64 #编译64位系统 + ``` +- 生成文件的路径,可执行文件和库文件都在out/rk3568/thirdparty/jbig2enc目录下,同时也打包到了镜像中 +## 运行效果 +将编译生成的库和测试文件放到板子上运行,为避免每次将文件推入设备都烧录整个镜像,我们使用hdc_std工具将文件推到开发板上 +- 首先将hdc_std工具编译出来 + 工具编译出来所在路径out/sdk/ohos-sdk/windows/toolchains/hdc_std.exe + + ``` + hb set #源码根目录下使用hb set 选择产品ohos-sdk + hb build #然后编译 + ``` + +- 将工具拷贝到Windows,可以为工具目录配置环境变量,也可以在工具所在目录打开windows命令行 + +- 将原生库测试需要的所有文件打包成jbig2enc.tar,并拷贝到windows下 + +- 将文件推送到开发板,在windows命令行进行如下操作 + ``` + hdc_std shell mount -oremount,rw / #修改系统权限为可读写 + hdc_std file send jbig2enc.tar / #将文件包推入开发板 + hdc_std shell #进入开发板 + tar xvf jbig2enc.tar #解压 + #注意需要将库拷贝到/system/lib 或者/system/lib64目录下 + ``` + +- 运行测试程序
+ 测试用例非常多,这里演示其中几个用例,如下图 + ![result](pic/result.png) +## 参考资料 +- [润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld) +- [OpenHarmony三方库地址](https://gitee.com/openharmony-tpc) +- [OpenHarmony知识体系](https://gitee.com/openharmony-sig/knowledge) +- [如何为三方库组件中添加一个三方库](https://gitee.com/openharmony-sig/knowledge/blob/master/docs/openharmony_getstarted/port_thirdparty/README.md) +- [标准系统编译构建指导](https://gitee.com/openharmony/docs/blob/OpenHarmony-3.2-Beta1/zh-cn/device-dev/subsystems/subsys-build-standard-large.md) \ No newline at end of file -- Gitee