diff --git a/OAT.xml b/OAT.xml index 33083e4aef74d139b745730a830d73cd69de644f..f4b8a12ad82d55469ba3722df76a6b73c569cb58 100644 --- a/OAT.xml +++ b/OAT.xml @@ -34,27 +34,10 @@ - - - + + - - - - - - - - - - - - - - - - @@ -84,18 +67,7 @@ - - - - - - - - - - - diff --git a/build/BUILD.gn b/build/BUILD.gn deleted file mode 100755 index 030c5bb80118ca278e4ffda1ab4567b75f934bae..0000000000000000000000000000000000000000 --- a/build/BUILD.gn +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright (C) 2021 HiHope Open Source Organization . -# 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") -group("products_group") { - if (device_name == "rk3568") { - deps = [ - "//device/hihope/rk3568:rk3568_group", - ] - } - - deps += [ - "//device/hihope/hardware:hardware_group", - ] -} diff --git a/build/LICENSE b/build/LICENSE deleted file mode 100755 index 21254fc75dcad77bffde10dcab0ad5464a1f0963..0000000000000000000000000000000000000000 --- a/build/LICENSE +++ /dev/null @@ -1,176 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/build/README.en.md b/build/README.en.md deleted file mode 100644 index 907ac8ccc94d6e62356e19cb284a88eaff73a7de..0000000000000000000000000000000000000000 --- a/build/README.en.md +++ /dev/null @@ -1,16 +0,0 @@ -# rockchip build - -## Introduction - -This repository stores scripts for compiling and packing kernel images. - -## Constraints - -Currently, rk3568 are supported. - -## Repositories Involved - -1. device/hihope/build -2. device/hihope/common -3. device/hihope/hardware -4. device/hihope/rk3568 diff --git a/build/README.zh.md b/build/README.zh.md deleted file mode 100644 index 99653580db40100753f8a14defbca21a8ef04ff7..0000000000000000000000000000000000000000 --- a/build/README.zh.md +++ /dev/null @@ -1,12 +0,0 @@ -# rockchip build 组件 - -#### 简介 -编译打包镜像的编译脚本 -#### 约束 -目前支持rk3568 -#### 对应仓库 - -1. device/hihope/build -2. device/hihope/common -3. device/hihope/hardware -4. device/hihope/rk3568 diff --git a/hardware/BUILD.gn b/hardware/BUILD.gn deleted file mode 100755 index e8541cb2869d866ae12994f740d1f5ed0012f7c7..0000000000000000000000000000000000000000 --- a/hardware/BUILD.gn +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright (C) 2021 HiHope Open Source Organization . -# 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") - -group("hardware_group") { - deps = [ - "//device/hihope/hardware/wifi:ap6xxx", - "//device/hihope/hardware/isp:isp", - "//device/hihope/hardware/mpp:mpp", - ] -} diff --git a/hardware/README.en.md b/hardware/README.en.md deleted file mode 100644 index 843fcd07049674d818d0324f8c9c3dec2c9921ac..0000000000000000000000000000000000000000 --- a/hardware/README.en.md +++ /dev/null @@ -1,14 +0,0 @@ -# hihope hardware - -## Introduction -Media and wifi southbound interface implementation, framework and docking layer library directory。 -## Constraints - -Currently, rk3568 are supported. -## Repositories Involved -1. device_hihope/hardware/display -2. device_hihope/hardware/gpu -3. device_hihope/hardware/isp -4. device_hihope/hardware/mpp -5. device_hihope/hardware/rga -6. device_hihope/hardware/wifi diff --git a/hardware/README.zh.md b/hardware/README.zh.md deleted file mode 100644 index 7eb878e2349d36181b264faf63d38928ea88fb57..0000000000000000000000000000000000000000 --- a/hardware/README.zh.md +++ /dev/null @@ -1,14 +0,0 @@ -# hihope hardware组件 - -#### 简介 -媒体及wifi南向接口实现、框架及对接层库目录。 -#### 约束 -目前支持rk3568 -#### 对应仓库 - -1. device_hihope/hardware/display -2. device_hihope/hardware/gpu -3. device_hihope/hardware/isp -4. device_hihope/hardware/mpp -5. device_hihope/hardware/rga -6. device_hihope/hardware/wifi diff --git a/hardware/display/BUILD.gn b/hardware/display/BUILD.gn deleted file mode 100644 index f40389601daafa80d3a8cfe697dc1896e868ab38..0000000000000000000000000000000000000000 --- a/hardware/display/BUILD.gn +++ /dev/null @@ -1,165 +0,0 @@ -# Copyright (C) 2021 HiHope Open Source Organization . -# 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") - -group("display_group") { - deps = [ - ":display_device", - ":display_gfx", - ":display_gralloc", - ":higbm", - ] -} - -ohos_static_library("higbm") { - sources = [ "src/display_gralloc/hi_gbm.c" ] - include_dirs = [ - "include", - "//utils/native/base/include", - "//base/hiviewdfx/interfaces/innerkits/libhilog/include", - ] - output_name = "higbm" - cflags = [ - "-DGRALLOC_GBM_SUPPORT", - "-Wno-macro-redefined", - ] - deps = [ - "//third_party/libdrm:libdrm", - "//utils/native/base:utils", - ] - external_deps = [ "hiviewdfx_hilog_native:libhilog" ] -} - -ohos_shared_library("display_gralloc") { - sources = [ - "src/display_gralloc/display_gralloc.c", - "src/display_gralloc/display_gralloc_gbm.c", - "src/display_gralloc/wayland_drm_auth_client.c", - ] - include_dirs = [ - "include", - "//drivers/peripheral/display/interfaces/include", - "//drivers/peripheral/base", - "//drivers/framework/include/utils", - "//drivers/adapter/uhdf2/osal/include", - "//utils/native/base/include", - "//foundation/graphic/standard/utils/include", - "//foundation/graphic/standard/prebuilts/librarys/drm/include", - "//base/hiviewdfx/interfaces/innerkits/libhilog/include", - ] - output_name = "display_gralloc" - cflags = [ - "-DGRALLOC_GBM_SUPPORT", - "-Wno-macro-redefined", - ] - deps = [ - ":higbm", - "//third_party/libdrm:libdrm", - "//third_party/wayland_standard:libwayland_client", - "//third_party/weston:drm_auth_protocol", - "//utils/native/base:utils", - ] - - external_deps = [ "hiviewdfx_hilog_native:libhilog" ] - - install_enable = true - install_images = [ chipset_base_dir ] - subsystem_name = "hdf" - part_name = "display_device_driver" -} - -ohos_shared_library("display_gfx") { - sources = [ "src/display_gfx/display_gfx.c" ] - include_dirs = [ - "include", - "//drivers/peripheral/display/interfaces/include", - "//drivers/peripheral/base", - "//drivers/framework/include/utils", - "//drivers/adapter/uhdf2/adapter/osal/include/", - "//utils/native/base/include", - "//foundation/graphic/standard/utils/include", - "//device/hihope/hardware/rga/include/", - "//base/hiviewdfx/interfaces/innerkits/libhilog/include", - ] - output_name = "display_gfx" - cflags = [ "-Wno-macro-redefined" ] - deps = [ - ":display_gralloc", - "//device/hihope/hardware/rga:librga", - "//utils/native/base:utils", - ] - - external_deps = [ "hiviewdfx_hilog_native:libhilog" ] - - install_enable = true - install_images = [ chipset_base_dir ] - subsystem_name = "hdf" - part_name = "display_device_driver" -} - -ohos_shared_library("display_device") { - sources = [ - "src/display_device/drm_connector.cpp", - "src/display_device/drm_crtc.cpp", - "src/display_device/drm_device.cpp", - "src/display_device/drm_display.cpp", - "src/display_device/drm_encoder.cpp", - "src/display_device/drm_plane.cpp", - "src/display_device/drm_vsync_worker.cpp", - "src/display_device/hdi_composer.cpp", - "src/display_device/hdi_device_interface.cpp", - "src/display_device/hdi_display.cpp", - "src/display_device/hdi_drm_composition.cpp", - "src/display_device/hdi_drm_layer.cpp", - "src/display_device/hdi_gfx_composition.cpp", - "src/display_device/hdi_layer.cpp", - "src/display_device/hdi_netlink_monitor.cpp", - "src/display_device/hdi_session.cpp", - ] - output_name = "display_device" - include_dirs = [ - "src/display_device", - "include", - "//drivers/peripheral/display/interfaces/include", - "//drivers/peripheral/base", - "//drivers/framework/include/utils", - "//drivers/adapter/uhdf2/osal/include", - "//utils/native/base/include", - "//foundation/graphic/standard/utils/include", - "//foundation/graphic/standard/prebuilts/librarys/drm/include", - "//base/hiviewdfx/interfaces/innerkits/libhilog/include", - ] - deps = [ - ":display_gfx", - ":display_gralloc", - "//third_party/libdrm:libdrm", - "//utils/native/base:utils", - ] - cflags = [ "-Wno-unused-function" ] - external_deps = [ "hiviewdfx_hilog_native:libhilog" ] - - install_enable = true - install_images = [ chipset_base_dir ] - subsystem_name = "hdf" - part_name = "display_device_driver" -} - -group("display_layer") { - deps = [ - ":display_device", - ":display_gfx", - ":display_gralloc", - ":higbm", - ] -} diff --git a/hardware/display/include/display_common.h b/hardware/display/include/display_common.h deleted file mode 100644 index ae6fefa945f5a4d1e68d57a0d73d380de765731d..0000000000000000000000000000000000000000 --- a/hardware/display/include/display_common.h +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef DISP_COMMON_H -#define DISP_COMMON_H -#include -#include -#include "hilog/log.h" -#include "stdio.h" -#ifdef HDF_LOG_TAG -#undef HDF_LOG_TAG -#endif - -#if defined(__cplusplus) -extern "C" { -#endif - -#undef LOG_TAG -#undef LOG_DOMAIN -#define LOG_TAG "DISP" -#define LOG_DOMAIN 0xD001400 - -#ifndef DISPLAY_UNUSED -#define DISPLAY_UNUSED(x) (void)(x) -#endif - -#define __FILENAME__ (strrchr(__FILE__, '/') ? (strrchr(__FILE__, '/') + 1) : __FILE__) - -#ifndef DISPLAY_DEBUGLOG -#define DISPLAY_DEBUGLOG(format, ...) \ - do { \ - HILOG_DEBUG(LOG_CORE, "[%{public}s@%{public}s:%{public}d] " format "\n", __FUNCTION__, __FILENAME__, __LINE__, \ - ##__VA_ARGS__); \ - } while (0) -#endif - -#ifndef DISPLAY_LOGI -#define DISPLAY_LOGI(format, ...) \ - do { \ - HILOG_INFO(LOG_CORE, "[%{public}s@%{public}s:%{public}d] " format "\n", __FUNCTION__, __FILENAME__, __LINE__, \ - ##__VA_ARGS__); \ - } while (0) -#endif - -#ifndef DISPLAY_LOGW -#define DISPLAY_LOGW(format, ...) \ - do { \ - HILOG_WARN(LOG_CORE, "[%{public}s@%{public}s:%{public}d] " format "\n", __FUNCTION__, __FILENAME__, __LINE__, \ - ##__VA_ARGS__); \ - } while (0) -#endif - -#ifndef DISPLAY_LOGE -#define DISPLAY_LOGE(format, ...) \ - do { \ - HILOG_ERROR(LOG_CORE, \ - "\033[0;32;31m" \ - "[%{public}s@%{public}s:%{public}d] " format "\033[m" \ - "\n", \ - __FUNCTION__, __FILENAME__, __LINE__, ##__VA_ARGS__); \ - } while (0) -#endif - -#ifndef CHECK_NULLPOINTER_RETURN_VALUE -#define CHECK_NULLPOINTER_RETURN_VALUE(pointer, ret) \ - do { \ - if ((pointer) == NULL) { \ - DISPLAY_LOGE("pointer is null and return ret\n"); \ - return (ret); \ - } \ - } while (0) -#endif - -#ifndef CHECK_NULLPOINTER_RETURN -#define CHECK_NULLPOINTER_RETURN(pointer) \ - do { \ - if ((pointer) == NULL) { \ - DISPLAY_LOGE("pointer is null and return\n"); \ - return; \ - } \ - } while (0) -#endif - -#ifndef DISPLAY_CHK_RETURN -#define DISPLAY_CHK_RETURN(val, ret, ...) \ - do { \ - if (val) { \ - __VA_ARGS__; \ - return (ret); \ - } \ - } while (0) -#endif - -#ifndef DISPLAY_CHK_RETURN_NOT_VALUE -#define DISPLAY_CHK_RETURN_NOT_VALUE(val, ret, ...) \ - do { \ - if (val) { \ - __VA_ARGS__; \ - return; \ - } \ - } while (0) -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* DISP_COMMON_H */ diff --git a/hardware/display/include/display_gralloc_private.h b/hardware/display/include/display_gralloc_private.h deleted file mode 100644 index e5ce9e0cefa946019050cd4a37de2c428dad1a50..0000000000000000000000000000000000000000 --- a/hardware/display/include/display_gralloc_private.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef DISPLAY_GRALLOC_INTERNAL_H -#define DISPLAY_GRALLOC_INTERNAL_H -#include "display_type.h" -#ifdef __cplusplus -extern "C" { -#endif -#define GRALLOC_NUM_FDS 1 -#define GRALLOC_NUM_INTS ((sizeof(struct PrivBufferHandle) - sizeof(BufferHandle)) / sizeof(int) - GRALLOC_NUM_FDS) - -#define INVALID_PIXEL_FMT 0 - -typedef struct { - BufferHandle hdl; -} PriBufferHandle; - -#ifdef __cplusplus -} -#endif - -#endif \ No newline at end of file diff --git a/hardware/display/src/display_device/drm_connector.cpp b/hardware/display/src/display_device/drm_connector.cpp deleted file mode 100644 index 3e13595a1ee1a277cd94b4a8f0e74af4e08d29f3..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/drm_connector.cpp +++ /dev/null @@ -1,352 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#include "drm_connector.h" -#include -#include -#include "drm_device.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -void DrmMode::ConvertToHdiMode(DisplayModeInfo &hdiMode) -{ - hdiMode.height = mModeInfo.vdisplay; - hdiMode.width = mModeInfo.hdisplay; - hdiMode.freshRate = mModeInfo.vrefresh; - hdiMode.id = mId; -} - -DrmConnector::DrmConnector(drmModeConnector c, FdPtr &fd) - : mId(c.connector_id), - mPhyWidth(c.mmWidth), - mPhyHeight(c.mmHeight), - mEncoderId(c.encoder_id), - mConnectState(c.connection), - mDrmFdPtr(fd) -{ - DISPLAY_DEBUGLOG("encoder_id %{public}d", mEncoderId); - DISPLAY_DEBUGLOG("the connect state is %{public}d", mConnectState); - - for (int i = 0; i < c.count_encoders; i++) { - mPossibleEncoders.push_back(c.encoders[i]); - DISPLAY_DEBUGLOG("add possible encoder id %{public}d", c.encoders[i]); - } - - ConvertToHdiType(c.connector_type, mType); - ConvertTypeToName(mType, mName); - InitModes(c); - DISPLAY_DEBUGLOG("name %{public}s", mName.c_str()); -} - -void DrmConnector::InitModes(drmModeConnector c) -{ - DISPLAY_DEBUGLOG("id %{public}d", mId); - mModes.clear(); - mPreferenceId = INVALID_MODE_ID; - for (int i = 0; i < c.count_modes; i++) { - drmModeModeInfoPtr mode = c.modes + i; - DISPLAY_DEBUGLOG("mode: hdisplay %{public}d, vdisplay %{public}d vrefresh %{public}d type %{public}d", - mode->hdisplay, mode->vdisplay, mode->vrefresh, mode->type); - if ((mPreferenceId == INVALID_MODE_ID) && (mode->type & DRM_MODE_TYPE_PREFERRED)) { - DISPLAY_DEBUGLOG("set it to prefernce id %{public}d", i); - mPreferenceId = i; - } - mModes.emplace(i, DrmMode { *mode, i }); - } - DISPLAY_DEBUGLOG("mode count %{public}zd", mModes.size()); -} - -int32_t DrmConnector::Init(DrmDevice &drmDevice) -{ - int32_t ret; - DrmProperty prop; - DISPLAY_DEBUGLOG(); - DISPLAY_CHK_RETURN((mDrmFdPtr == nullptr), DISPLAY_FAILURE, DISPLAY_LOGE("the mDrmFdPtr is NULL")); - DISPLAY_CHK_RETURN((mDrmFdPtr->GetFd() == -1), DISPLAY_FAILURE, DISPLAY_LOGE("the drm fd is -1")); - // find dpms prop - ret = drmDevice.GetConnectorProperty(*this, PROP_DPMS, prop); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("can not get mode prop id")); - mPropDpmsId = prop.propId; - mDpmsState = prop.value; - DISPLAY_DEBUGLOG("dpms state : %{public}" PRIu64 "", mDpmsState); - // find the crtcid - ret = drmDevice.GetConnectorProperty(*this, PROP_CRTCID, prop); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("cat not get out fence prop id")); - mPropCrtcId = prop.propId; - DISPLAY_DEBUGLOG("encoder_id %{public}d", mEncoderId); - DISPLAY_DEBUGLOG("mPropCrtcId %{public}d", mPropCrtcId); - // find the brightness - ret = drmDevice.GetConnectorProperty(*this, PROP_BRIGHTNESS, prop); - if (ret == DISPLAY_SUCCESS) { - mPropBrightnessId = prop.propId; - mBrightnessLevel = static_cast(prop.value); - DISPLAY_DEBUGLOG("prop brightness is %{public}d, level is %{public}d", mPropBrightnessId, mBrightnessLevel); - } else { - DISPLAY_LOGW("can not get the brightness prop, can not set the brightness"); - } - return DISPLAY_SUCCESS; -} - -int32_t DrmConnector::GetBrightness(uint32_t& level) -{ - if (mPropBrightnessId == DRM_INVALID_ID) { - DISPLAY_LOGE("the prop id of brightness is invalid"); - return DISPLAY_NOT_SUPPORT; - } - level = mBrightnessLevel; - return DISPLAY_SUCCESS; -} - -const int BACKLIGHT_MIN = 10; -int32_t DrmConnector::SetBrightness(uint32_t level) -{ - static int32_t brFd = 0; - const int32_t buffer_size = 10; /* buffer size */ - char buffer[buffer_size]; - - DISPLAY_DEBUGLOG("set %{public}d", level); - if (mPropBrightnessId == DRM_INVALID_ID) { - DISPLAY_LOGE("the prop id of brightness is invalid"); - return DISPLAY_NOT_SUPPORT; - } - if (brFd <= 0) { - brFd = open("/sys/class/backlight/backlight/brightness", O_RDWR); - if (brFd < 0) { - DISPLAY_LOGE("oepn Brightness file failed\n"); - return DISPLAY_NOT_SUPPORT; - } - } - errno_t ret = memset_s(buffer, sizeof(buffer), 0, sizeof(buffer)); - if (ret != EOK) { - DISPLAY_LOGE("memset_s failed\n"); - return DISPLAY_FAILURE; - } - if (level < BACKLIGHT_MIN) { - level = BACKLIGHT_MIN; - } - int bytes = sprintf_s(buffer, sizeof(buffer), "%d\n", level); - if (bytes < 0) { - DISPLAY_LOGE("change failed\n"); - return DISPLAY_FAILURE; - } - write(brFd, buffer, bytes); - mBrightnessLevel = level; - return DISPLAY_SUCCESS; -} - -void DrmConnector::GetDisplayCap(DisplayCapability &cap) -{ - cap.phyHeight = mPhyHeight; - cap.phyWidth = mPhyWidth; - cap.type = mType; - memcpy_s(cap.name, sizeof(cap.name), mName.c_str(), mName.size()); - if (mName.size() >= sizeof(cap.name)) { - cap.name[sizeof(cap.name) - 1] = 0; - } else { - cap.name[mName.size()] = 0; - } - cap.supportLayers = mSupportLayers; - cap.virtualDispCount = mVirtualDispCount; - cap.supportWriteBack = mSupportWriteBack; - cap.propertyCount = mPropertyCount; -} - -void DrmConnector::ConvertTypeToName(uint32_t type, std::string &name) -{ - DISPLAY_DEBUGLOG("type %{public}d", type); - switch (type) { - case DISP_INTF_VGA: - name = "VGA"; - break; - case DISP_INTF_HDMI: - name = "HDMI"; - break; - case DISP_INTF_MIPI: - name = "MIPI"; - break; - default: - name = "Unknown"; - break; - } -} - -void DrmConnector::ConvertToHdiType(uint32_t type, InterfaceType &hdiType) -{ - switch (type) { - case DRM_MODE_CONNECTOR_VGA: - hdiType = DISP_INTF_VGA; - break; - case DRM_MODE_CONNECTOR_DSI: - hdiType = DISP_INTF_MIPI; - break; - case DRM_MODE_CONNECTOR_HDMIA: - case DRM_MODE_CONNECTOR_HDMIB: - hdiType = DISP_INTF_HDMI; - break; - default: - hdiType = DISP_INTF_BUTT; - break; - } -} -int32_t DrmConnector::TryPickEncoder(IdMapPtr &encoders, uint32_t encoderId, IdMapPtr &crtcs, - uint32_t &crtcId) -{ - int ret; - auto encoderIter = encoders.find(encoderId); - if (encoderIter == encoders.end()) { - DISPLAY_LOGW("can not find encoder for id : %{public}d", encoderId); - return DISPLAY_FAILURE; - } - - auto &encoder = encoderIter->second; - DISPLAY_DEBUGLOG("connector : %{public}d encoder : %{public}d", mId, encoder->GetId()); - ret = encoder->PickIdleCrtcId(crtcs, crtcId); - DISPLAY_CHK_RETURN((ret == DISPLAY_SUCCESS), DISPLAY_SUCCESS, - DISPLAY_DEBUGLOG("connector : %{public}d pick encoder : %{public}d", mId, encoder->GetId())); - return DISPLAY_FAILURE; -} - -int32_t DrmConnector::PickIdleCrtcId(IdMapPtr &encoders, IdMapPtr &crtcs, uint32_t &crtcId) -{ - DISPLAY_DEBUGLOG(); - DISPLAY_DEBUGLOG("encoder_id %{public}d", mEncoderId); - int ret = TryPickEncoder(encoders, mEncoderId, crtcs, crtcId); - DISPLAY_CHK_RETURN((ret == DISPLAY_SUCCESS), DISPLAY_SUCCESS, - DISPLAY_DEBUGLOG("connector : %{public}d pick endcoder : %{public}d crtcId : %{public}d", - mId, mEncoderId, crtcId)); - - for (auto encoder : mPossibleEncoders) { - ret = TryPickEncoder(encoders, encoder, crtcs, crtcId); - DISPLAY_CHK_RETURN((ret == DISPLAY_SUCCESS), DISPLAY_SUCCESS, - DISPLAY_DEBUGLOG("connector : %{public}d pick endcoder : %{public}d crtcId : %{public}d", mId, mEncoderId, - crtcId)); - } - - DISPLAY_LOGW("can not pick a crtc for connector"); - return DISPLAY_FAILURE; -} - -int32_t DrmConnector::UpdateModes() -{ - int drmFd = mDrmFdPtr->GetFd(); - drmModeConnectorPtr c = drmModeGetConnector(drmFd, mId); - DISPLAY_CHK_RETURN((c == nullptr), DISPLAY_FAILURE, DISPLAY_LOGE("can not get connector")); - mConnectState = c->connection; - // init the modes - InitModes(*c); - drmModeFreeConnector(c); - return DISPLAY_SUCCESS; -} - -bool DrmConnector::HandleHotplug() -{ - int drmFd = mDrmFdPtr->GetFd(); - drmModeConnectorPtr c = drmModeGetConnector(drmFd, mId); - DISPLAY_CHK_RETURN((c == nullptr), false, DISPLAY_LOGE("can not get connector")); - if (mConnectState == c->connection) { - drmModeFreeConnector(c); - return false; - } else { - mConnectState = c->connection; - InitModes(*c); - drmModeFreeConnector(c); - return true; - } -} -int32_t DrmConnector::GetDisplaySupportedModes(uint32_t *num, DisplayModeInfo *modes) -{ - DISPLAY_CHK_RETURN((num == nullptr), DISPLAY_NULL_PTR, DISPLAY_LOGE("num is nullptr")); - *num = static_cast(mModes.size()); - if (modes != nullptr) { - int i = 0; - for (const auto &modeMap : mModes) { - DrmMode mode = modeMap.second; - mode.ConvertToHdiMode(*(modes + i)); - i++; - } - } - return DISPLAY_SUCCESS; -} - -int32_t DrmConnector::SetDpmsState(uint64_t dmps) -{ - DISPLAY_DEBUGLOG("dmps %{public}" PRIu64 "", dmps); - int ret = drmModeConnectorSetProperty(mDrmFdPtr->GetFd(), mId, mPropDpmsId, dmps); - DISPLAY_CHK_RETURN((ret != 0), DISPLAY_FAILURE, DISPLAY_LOGE("can not set dpms")); - mDpmsState = dmps; - return DISPLAY_SUCCESS; -} - -bool DrmConnector::IsConnected() -{ - return (mConnectState == DRM_MODE_CONNECTED); -} - -int32_t DrmConnector::GetModeFromId(int32_t id, DrmMode &mode) -{ - DISPLAY_DEBUGLOG(); - auto iter = mModes.find(id); - if (iter == mModes.end()) { - return DISPLAY_FAILURE; - } - mode = mModes[id]; - return DISPLAY_SUCCESS; -} - -std::unique_ptr DrmConnector::GetModeBlockFromId(int32_t id) -{ - DISPLAY_DEBUGLOG("id %{public}d", id); - auto iter = mModes.find(id); - DISPLAY_CHK_RETURN((iter == mModes.end()), nullptr, DISPLAY_LOGE("can not the mode %{public}d", id)); - return std::make_unique(mModes[id]); -} - -DrmModeBlock::DrmModeBlock(DrmMode &mode) -{ - DISPLAY_DEBUGLOG(); - Init(mode); -} - -int32_t DrmModeBlock::Init(DrmMode &mode) -{ - int ret; - int drmFd; - drmFd = DrmDevice::GetDrmFd(); - DISPLAY_CHK_RETURN((drmFd < 0), DISPLAY_FAILURE, DISPLAY_LOGE("the drm fd is invalid")); - drmModeModeInfo modeInfo = *(mode.GetModeInfoPtr()); - ret = drmModeCreatePropertyBlob(drmFd, static_cast(&modeInfo), sizeof(modeInfo), &mBlockId); - DISPLAY_CHK_RETURN((ret != 0), DISPLAY_FAILURE, DISPLAY_LOGE("create property blob failed")); - DISPLAY_DEBUGLOG("mBlockId %{public}d", mBlockId); - return DISPLAY_SUCCESS; -} - -DrmModeBlock::~DrmModeBlock() -{ - DISPLAY_DEBUGLOG("mBlockId %{public}d", mBlockId); - int drmFd; - drmFd = DrmDevice::GetDrmFd(); - if ((mBlockId != DRM_INVALID_ID) && (drmFd >= 0)) { - int ret = drmModeDestroyPropertyBlob(drmFd, mBlockId); - if (ret != 0) { - DISPLAY_LOGE("destroy property blob failed errno %{public}d", errno); - } - } else { - DISPLAY_LOGE("can not destruct the block id %{public}d drmFd %{public}d", mBlockId, drmFd); - } -} -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY diff --git a/hardware/display/src/display_device/drm_connector.h b/hardware/display/src/display_device/drm_connector.h deleted file mode 100644 index b282a755d19446c3930e6f2d8eb7a0f9d6df697f..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/drm_connector.h +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef DRM_CONNECTOR_H -#define DRM_CONNECTOR_H -#include -#include -#include -#include -#include -#include "display_type.h" -#include "drm_encoder.h" -#include "hdi_device_common.h" -#include "hdi_shared_fd.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -const std::string PROP_DPMS = "DPMS"; -const std::string PROP_CRTCID = "CRTC_ID"; -const std::string PROP_BRIGHTNESS = "brightness"; -class DrmDevice; -class DrmModeBlock; - -class DrmMode { -public: - DrmMode() {}; - DrmMode(drmModeModeInfo &modeInfo, uint32_t id) : mModeInfo(modeInfo), mId(id) {} - virtual ~DrmMode() {}; - drmModeModeInfoPtr GetModeInfoPtr() - { - return &mModeInfo; - } - void ConvertToHdiMode(DisplayModeInfo &hdiMode); - -private: - drmModeModeInfo mModeInfo = { 0 }; - int32_t mId = -1; -}; - -class DrmModeBlock { -public: - explicit DrmModeBlock(DrmMode &mode); - virtual ~DrmModeBlock(); - int32_t Init(DrmMode &mode); - uint32_t GetBlockId() const - { - return mBlockId; - } - -private: - uint32_t mBlockId = DRM_INVALID_ID; -}; - -class DrmConnector { -public: - DrmConnector(drmModeConnector c, FdPtr &fd); - virtual ~DrmConnector() {}; - uint32_t GetId() const - { - return mId; - } - uint32_t GetEncoderId() const - { - return mEncoderId; - } - void GetDisplayCap(DisplayCapability &cap); - int32_t Init(DrmDevice &drmDevice); - int32_t PickIdleCrtcId(IdMapPtr &encoders, IdMapPtr &crtcs, uint32_t &crtcId); - int32_t GetDisplaySupportedModes(uint32_t *num, DisplayModeInfo *modes); - int32_t GetPreferenceId() const - { - return mPreferenceId; - } - uint32_t GetPropCrtcId() const - { - return mPropCrtcId; - } - int32_t TryPickEncoder(IdMapPtr &encoders, uint32_t encoderId, IdMapPtr &crtcs, - uint32_t &crtcId); - // update modes will reset the preference mode id and active mode id - int32_t UpdateModes(); - std::unique_ptr GetModeBlockFromId(int32_t id); - int32_t GetModeFromId(int32_t id, DrmMode &mode); - uint64_t GetDpmsState() const - { - return mDpmsState; - } - int32_t SetDpmsState(uint64_t dmps); - bool IsConnected(); - bool HandleHotplug(); - - int32_t GetBrightness(uint32_t& level); - int32_t SetBrightness(uint32_t level); - -private: - static void ConvertTypeToName(uint32_t type, std::string &name); - static void ConvertToHdiType(uint32_t type, InterfaceType &hdiType); - - void InitModes(drmModeConnector c); - uint32_t mId; - InterfaceType mType; - uint32_t mPhyWidth; - uint32_t mPhyHeight; - uint32_t mSupportLayers = 0; - uint32_t mVirtualDispCount = 0; - bool mSupportWriteBack = false; - uint32_t mPropertyCount = 0; - uint32_t mEncoderId; - std::vector mPossibleEncoders; - std::string mName; - drmModeConnection mConnectState; - uint32_t mPropDpmsId = DRM_INVALID_ID; - uint64_t mDpmsState = 0; - uint32_t mPropCrtcId = DRM_INVALID_ID; - uint32_t mPropBrightnessId = DRM_INVALID_ID; - uint32_t mBrightnessLevel = 0; - std::unordered_map mModes; - int32_t mPreferenceId = INVALID_MODE_ID; - - FdPtr mDrmFdPtr; -}; -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY -#endif // DRM_CONNECTOR_H diff --git a/hardware/display/src/display_device/drm_crtc.cpp b/hardware/display/src/display_device/drm_crtc.cpp deleted file mode 100755 index 42a4c8551d8633029657c2dd720658dcf557758a..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/drm_crtc.cpp +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#include "drm_crtc.h" -#include "display_common.h" -#include "drm_device.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -struct PlaneMaskName planeMaskNames[] = { - { DrmPlaneType::DRM_PLANE_TYPE_CLUSTER0_MASK, "Cluster0" }, - { DrmPlaneType::DRM_PLANE_TYPE_CLUSTER1_MASK, "Cluster1" }, - { DrmPlaneType::DRM_PLANE_TYPE_ESMART0_MASK, "Esmart0" }, - { DrmPlaneType::DRM_PLANE_TYPE_ESMART1_MASK, "Esmart1" }, - { DrmPlaneType::DRM_PLANE_TYPE_SMART0_MASK, "Smart0" }, - { DrmPlaneType::DRM_PLANE_TYPE_SMART1_MASK, "Smart1" }, - { DrmPlaneType::DRM_PLANE_TYPE_Unknown, "unknown" }, -}; - -DrmCrtc::DrmCrtc(drmModeCrtcPtr c, uint32_t pipe) : mId(c->crtc_id), mPipe(pipe), mPlaneMask(0) -{ -} - -int32_t DrmCrtc::Init(DrmDevice &drmDevice) -{ - DISPLAY_DEBUGLOG(); - int32_t ret; - DrmProperty prop; - ret = drmDevice.GetCrtcProperty(*this, PROP_MODEID, prop); - mModePropId = prop.propId; - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("can not get mode prop id")); - - ret = drmDevice.GetCrtcProperty(*this, PROP_OUTFENCE, prop); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("cat not get out fence prop id")); - mOutFencePropId = prop.propId; - - ret = drmDevice.GetCrtcProperty(*this, PROP_ACTIVE, prop); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("cat not get out fence prop id")); - mActivePropId = prop.propId; - - // Plane mask - mPlaneMask = 0; - ret = drmDevice.GetCrtcProperty(*this, "PLANE_MASK", prop); - if (ret != DISPLAY_SUCCESS) { - DISPLAY_LOGE("Failed to get plane_mask property"); - } else { - for (int i = 0; i < static_cast(ARRAY_SIZE(planeMaskNames)); i++) { - for (auto &drmEnum : prop.enums) { - if (!strncmp(drmEnum.name.c_str(), (const char*)planeMaskNames[i].name, - strlen(drmEnum.name.c_str())) && (prop.value & (1LL << drmEnum.value)) > 0) { - mPlaneMask |= static_cast(planeMaskNames[i].mask); - DISPLAY_LOGI("crtc id %{public}d, plane name %{public}s value %{public}llx", - GetId(), (const char*)planeMaskNames[i].name, - (long long)planeMaskNames[i].mask); - } - } - } - } - return DISPLAY_SUCCESS; -} - -int32_t DrmCrtc::BindToDisplay(uint32_t id) -{ - DISPLAY_CHK_RETURN((mDisplayId != INVALIDE_DISPLAY_ID), DISPLAY_FAILURE, - DISPLAY_LOGE("the crtc has bind to %{public}d", mDisplayId)); - mDisplayId = id; - return DISPLAY_SUCCESS; -} - -void DrmCrtc::UnBindDisplay(uint32_t id) -{ - DISPLAY_DEBUGLOG(); - if (mDisplayId == id) { - mDisplayId = INVALIDE_DISPLAY_ID; - } else { - DISPLAY_LOGE("can not unbind"); - } -} - -bool DrmCrtc::CanBind() -{ - return (mDisplayId == INVALIDE_DISPLAY_ID); -} - -int32_t DrmCrtc::SetActivieMode(int32_t id) -{ - DISPLAY_DEBUGLOG("set activie modeid to %{public}d", id); - DISPLAY_CHK_RETURN((id > 0), DISPLAY_PARAM_ERR, DISPLAY_LOGE("id %{public}d is invalid ", id)); - if (mActiveModeId != id) { - mNeedModeSet = true; - } - mActiveModeId = id; - return DISPLAY_SUCCESS; -} -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY diff --git a/hardware/display/src/display_device/drm_crtc.h b/hardware/display/src/display_device/drm_crtc.h deleted file mode 100755 index 8f923326860ea4b04c8c21d073c525f203ae543e..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/drm_crtc.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef DRM_CRTC_H -#define DRM_CRTC_H -#include -#include -#include -#include -#include "hdi_device_common.h" -#include "hdi_display.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -const std::string PROP_ACTIVE = "ACTIVE"; -const std::string PROP_MODEID = "MODE_ID"; -const std::string PROP_OUTFENCE = "OUT_FENCE_PTR"; - -class DrmDevice; - -class DrmCrtc { -public: - DrmCrtc(drmModeCrtcPtr c, uint32_t pipe); - virtual ~DrmCrtc() {}; - int32_t BindToDisplay(uint32_t id); - void UnBindDisplay(uint32_t id); - bool CanBind(); - uint32_t GetId() const - { - return mId; - } - uint32_t GetModePropId() const - { - return mModePropId; - } - uint32_t GetOutFencePropId() const - { - return mOutFencePropId; - } - uint32_t GetActivePropId() const - { - return mActivePropId; - } - uint32_t GetPipe() const - { - return mPipe; - } - int32_t Init(DrmDevice &drmDevice); - int32_t SetActivieMode(int32_t id); - int32_t GetActiveModeId() const - { - return mActiveModeId; - } - bool NeedModeSet() - { - return mNeedModeSet; - } - uint32_t GetPlaneMask() - { - return mPlaneMask; - } -private: - uint32_t mId = 0; - uint32_t mModePropId = 0; - uint32_t mOutFencePropId = 0; - uint32_t mActivePropId = 0; - uint32_t mDisplayId = INVALIDE_DISPLAY_ID; - uint32_t mPipe = 0; - int32_t mActiveModeId = INVALID_MODE_ID; - bool mNeedModeSet = false; - uint32_t mPlaneMask = 0; -}; -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY - -#endif // DRM_CRTC_H \ No newline at end of file diff --git a/hardware/display/src/display_device/drm_device.cpp b/hardware/display/src/display_device/drm_device.cpp deleted file mode 100755 index fafe456f24b849392d5797f513810558b35152c6..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/drm_device.cpp +++ /dev/null @@ -1,360 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#include "drm_device.h" -#include -#include -#include -#include -#include -#include "display_common.h" -#include "drm_display.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -FdPtr DrmDevice::mDrmFd = nullptr; -std::shared_ptr DrmDevice::mInstance; - -std::shared_ptr DrmDevice::Create() -{ - DISPLAY_DEBUGLOG(); - if (mDrmFd == nullptr) { - const std::string name("rockchip"); - int drmFd = open("/dev/dri/card0", O_RDWR | O_CLOEXEC); // drmOpen(name.c_str(), nullptr); - if (drmFd < 0) { - DISPLAY_LOGE("drm file:%{public}s open failed %{public}s", name.c_str(), strerror(errno)); - return nullptr; - } - DISPLAY_DEBUGLOG("the drm fd is %{public}d", drmFd); - mDrmFd = std::make_shared(drmFd); - } - if (mInstance == nullptr) { - mInstance = std::make_shared(); - } - return mInstance; -} - -int DrmDevice::GetDrmFd() -{ - if (mDrmFd == nullptr) { - DISPLAY_LOGE("the drmfd is null not open"); - return -1; - } - return mDrmFd->GetFd(); -} - -using PixelFormatConvertTbl = struct PixFmtConvertTbl { - uint32_t drmFormat; - PixelFormat pixFormat; -}; - -uint32_t DrmDevice::ConvertToDrmFormat(PixelFormat fmtIn) -{ - static const PixelFormatConvertTbl convertTable[] = { - {DRM_FORMAT_XBGR8888, PIXEL_FMT_RGBX_8888}, {DRM_FORMAT_ABGR8888, PIXEL_FMT_RGBA_8888}, - {DRM_FORMAT_RGB888, PIXEL_FMT_RGB_888}, {DRM_FORMAT_RGB565, PIXEL_FMT_BGR_565}, - {DRM_FORMAT_BGRX4444, PIXEL_FMT_BGRX_4444}, {DRM_FORMAT_BGRA4444, PIXEL_FMT_BGRA_4444}, - {DRM_FORMAT_RGBA4444, PIXEL_FMT_RGBA_4444}, {DRM_FORMAT_RGBX4444, PIXEL_FMT_RGBX_4444}, - {DRM_FORMAT_BGRX5551, PIXEL_FMT_BGRX_5551}, {DRM_FORMAT_BGRA5551, PIXEL_FMT_BGRA_5551}, - {DRM_FORMAT_BGRX8888, PIXEL_FMT_BGRX_8888}, {DRM_FORMAT_ARGB8888, PIXEL_FMT_BGRA_8888}, - {DRM_FORMAT_NV12, PIXEL_FMT_YCBCR_420_SP}, {DRM_FORMAT_NV21, PIXEL_FMT_YCRCB_420_SP}, - {DRM_FORMAT_YUV420, PIXEL_FMT_YCBCR_420_P}, {DRM_FORMAT_YVU420, PIXEL_FMT_YCRCB_420_P}, - {DRM_FORMAT_NV16, PIXEL_FMT_YCBCR_422_SP}, {DRM_FORMAT_NV61, PIXEL_FMT_YCRCB_422_SP}, - {DRM_FORMAT_YUV422, PIXEL_FMT_YCBCR_422_P}, {DRM_FORMAT_YVU422, PIXEL_FMT_YCRCB_422_P}, - }; - uint32_t fmtOut = 0; - for (uint32_t i = 0; i < sizeof(convertTable) / sizeof(convertTable[0]); i++) { - if (convertTable[i].pixFormat == fmtIn) { - fmtOut = convertTable[i].drmFormat; - } - } - DISPLAY_DEBUGLOG("fmtIn %{public}d, outFmt %{public}d", fmtIn, fmtOut); - return fmtOut; -} - -DrmDevice::DrmDevice() {} - -int32_t DrmDevice::GetCrtcProperty(const DrmCrtc &crtc, const std::string &name, DrmProperty &prop) -{ - return GetProperty(crtc.GetId(), DRM_MODE_OBJECT_CRTC, name, prop); -} - -int32_t DrmDevice::GetConnectorProperty(const DrmConnector &connector, const std::string &name, DrmProperty &prop) -{ - return GetProperty(connector.GetId(), DRM_MODE_OBJECT_CONNECTOR, name, prop); -} - -int32_t DrmDevice::GetPlaneProperty(const DrmPlane &plane, const std::string &name, DrmProperty &prop) -{ - return GetProperty(plane.GetId(), DRM_MODE_OBJECT_PLANE, name, prop); -} - -int32_t DrmDevice::GetProperty(uint32_t objId, uint32_t objType, const std::string &name, DrmProperty &prop) -{ - drmModeObjectPropertiesPtr props = drmModeObjectGetProperties(GetDrmFd(), objId, objType); - DISPLAY_CHK_RETURN((!props), DISPLAY_FAILURE, DISPLAY_LOGE("can not get properties")); - bool found = false; - for (uint32_t i = 0; i < props->count_props; i++) { - drmModePropertyPtr p = drmModeGetProperty(GetDrmFd(), props->props[i]); - if (strcmp(p->name, name.c_str()) == 0) { - found = true; - prop.propId = p->prop_id; - prop.value = props->prop_values[i]; - prop.name = p->name; - prop.flags = p->flags; - - for (int i = 0; i < p->count_values; ++i) { - prop.values.push_back(p->values[i]); - } - for (int i = 0; i < p->count_enums; ++i) { - prop.enums.push_back(DrmPropertyEnum(&p->enums[i])); - } - - for (int i = 0; i < p->count_blobs; ++i) { - prop.blob_ids.push_back(p->blob_ids[i]); - } - if (prop.flags & DRM_MODE_PROP_RANGE) { - prop.type = static_cast(DrmPropertyType::DRM_PROPERTY_TYPE_INT); - } else if (prop.flags & DRM_MODE_PROP_ENUM) { - prop.type = static_cast(DrmPropertyType::DRM_PROPERTY_TYPE_ENUM); - } else if (prop.flags & DRM_MODE_PROP_OBJECT) { - prop.type = static_cast(DrmPropertyType::DRM_PROPERTY_TYPE_OBJECT); - } else if (prop.flags & DRM_MODE_PROP_BLOB) { - prop.type = static_cast(DrmPropertyType::DRM_PROPERTY_TYPE_BLOB); - } else if (prop.flags & DRM_MODE_PROP_BITMASK) { - prop.type = static_cast(DrmPropertyType::DRM_PROPERTY_TYPE_BITMASK); - } - } - drmModeFreeProperty(p); - } - drmModeFreeObjectProperties(props); - return found ? DISPLAY_SUCCESS : DISPLAY_NOT_SUPPORT; -} - -int32_t DrmDevice::Init() -{ - int ret = drmSetClientCap(GetDrmFd(), DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1); - DISPLAY_CHK_RETURN((ret), DISPLAY_FAILURE, - DISPLAY_LOGE("DRM_CLIENT_CAP_UNIVERSAL_PLANES set failed %{public}s", strerror(errno))); - ret = drmSetClientCap(GetDrmFd(), DRM_CLIENT_CAP_ATOMIC, 1); - DISPLAY_CHK_RETURN((ret), DISPLAY_FAILURE, - DISPLAY_LOGE("DRM_CLIENT_CAP_ATOMIC set failed %{public}s", strerror(errno))); - - ret = drmSetMaster(GetDrmFd()); - DISPLAY_CHK_RETURN((ret), DISPLAY_FAILURE, DISPLAY_LOGE("can not set to master errno : %{public}d", errno)); - DISPLAY_LOGE("chenyf master"); - ret = drmIsMaster(GetDrmFd()); - DISPLAY_CHK_RETURN((!ret), DISPLAY_FAILURE, DISPLAY_LOGE("is not master : %{public}d", errno)); - - return DISPLAY_SUCCESS; -} - -void DrmDevice::DeInit() -{ - mDisplays.clear(); - mCrtcs.clear(); -} - -void DrmDevice::FindAllCrtc(const drmModeResPtr &res) -{ - DISPLAY_CHK_RETURN_NOT_VALUE((res == nullptr), DISPLAY_LOGE("the res is null")); - mCrtcs.clear(); - for (int i = 0; i < res->count_crtcs; i++) { - drmModeCrtcPtr crtc = drmModeGetCrtc(GetDrmFd(), res->crtcs[i]); - if (!crtc) { - DISPLAY_LOGE("can not get crtc %{public}d", i); - continue; - } - uint32_t crtc_id = crtc->crtc_id; - std::shared_ptr drmCrtc = std::make_shared(crtc, i); - int ret = drmCrtc->Init(*this); - drmModeFreeCrtc(crtc); - if (ret != DISPLAY_SUCCESS) { - DISPLAY_LOGE("crtc %{public}d init failed", i); - continue; - } - mCrtcs.emplace(crtc_id, std::move(drmCrtc)); - } -} - -void DrmDevice::FindAllEncoder(const drmModeResPtr &res) -{ - DISPLAY_CHK_RETURN_NOT_VALUE((res == nullptr), DISPLAY_LOGE("the res is null")); - mEncoders.clear(); - for (int i = 0; i < res->count_encoders; i++) { - drmModeEncoderPtr encoder = drmModeGetEncoder(GetDrmFd(), res->encoders[i]); - if (!encoder) { - DISPLAY_LOGE("can not get encoder %{public}d", i); - continue; - } - std::shared_ptr drmEncoder = std::make_shared(*encoder); - mEncoders.emplace(encoder->encoder_id, std::move(drmEncoder)); - drmModeFreeEncoder(encoder); - } - DISPLAY_DEBUGLOG("find encoder count %{public}zd", mEncoders.size()); -} - -void DrmDevice::FindAllConnector(const drmModeResPtr &res) -{ - DISPLAY_CHK_RETURN_NOT_VALUE((res == nullptr), DISPLAY_LOGE("the res is null")); - mConnectors.clear(); - int ret; - for (int i = 0; i < res->count_connectors; i++) { - drmModeConnectorPtr connector = drmModeGetConnector(GetDrmFd(), res->connectors[i]); - if (!connector) { - DISPLAY_LOGE("can not get connector mode %{public}d", i); - continue; - } - std::shared_ptr drmConnector = std::make_shared(*connector, mDrmFd); - ret = drmConnector->Init(*this); - drmModeFreeConnector(connector); - if (ret != DISPLAY_SUCCESS) { - continue; - } - int connectorId = drmConnector->GetId(); - mConnectors.emplace(connectorId, std::move(drmConnector)); - } - DISPLAY_DEBUGLOG("find connector count %{public}zd", mConnectors.size()); -} - -void DrmDevice::FindAllPlane() -{ - mPlanes.clear(); - int ret; - drmModePlaneResPtr planeRes = drmModeGetPlaneResources(GetDrmFd()); - DISPLAY_CHK_RETURN_NOT_VALUE((planeRes == nullptr), DISPLAY_LOGE("can not get plane resource")); - DISPLAY_DEBUGLOG("count_planes %{public}d", planeRes->count_planes); - for (uint32_t i = 0; i < planeRes->count_planes; i++) { - drmModePlanePtr p = drmModeGetPlane(GetDrmFd(), planeRes->planes[i]); - if (!p) { - DISPLAY_LOGE("can not get plane %{public}d", i); - continue; - } - std::shared_ptr drmPlane = std::make_shared(*p); - DISPLAY_DEBUGLOG(); - ret = drmPlane->Init(*this); - DISPLAY_DEBUGLOG(); - drmModeFreePlane(p); - if (ret != DISPLAY_SUCCESS) { - DISPLAY_LOGE("drm plane %{public}d init failed", i); - continue; - } - mPlanes.emplace_back(std::move(drmPlane)); - } - DISPLAY_DEBUGLOG("find plane count %{public}zd", mPlanes.size()); -} - -std::shared_ptr DrmDevice::GetDrmEncoderFromId(uint32_t id) -{ - return nullptr; -} - -std::shared_ptr DrmDevice::GetDrmConnectorFromId(uint32_t id) -{ - return nullptr; -} - -std::shared_ptr DrmDevice::GetDrmCrtcFromId(uint32_t id) -{ - return nullptr; -} - -std::vector> DrmDevice::GetDrmPlane(uint32_t pipe, uint32_t type) -{ - std::vector> planes; - for (const auto &plane : mPlanes) { - if (plane->IsIdle() && ((1 << pipe) & plane->GetPossibleCrtcs()) && (type == plane->GetType())) { - planes.push_back(plane); - } - } - DISPLAY_DEBUGLOG("the planes count %{public}zd", planes.size()); - return planes; -} - -bool DrmDevice::HandleHotplug(uint32_t dispId, bool plugIn) -{ - uint32_t find = 0; - uint32_t connectorId; - - for (auto &dispConnectorIdMap : dispConnectorIdMaps_) { - if (dispConnectorIdMap.first == dispId) { - connectorId = dispConnectorIdMap.second; - find = 1; - break; - } - } - if (find) { - for (auto &connectorPair : mConnectors) { - auto connector = connectorPair.second; - if (connectorId == connector->GetId()) { - if (connector->HandleHotplug() == true) { - connector->Init(*this); - return true; - } - } - } - } - return false; -} - -std::unordered_map> DrmDevice::DiscoveryDisplay() -{ - uint32_t dispId; - uint32_t connectorId; - - dispConnectorIdMaps_.clear(); - mDisplays.clear(); - drmModeResPtr res = drmModeGetResources(GetDrmFd()); - DISPLAY_CHK_RETURN((res == nullptr), mDisplays, DISPLAY_LOGE("can not get drm resource")); - // discovery all drm resource - FindAllCrtc(res); - FindAllEncoder(res); - FindAllConnector(res); - FindAllPlane(); - DISPLAY_DEBUGLOG(); - // travel all connector - for (auto &connectorPair : mConnectors) { - auto connector = connectorPair.second; - uint32_t crtcId = 0; - int32_t ret = connector->PickIdleCrtcId(mEncoders, mCrtcs, crtcId); - if (ret != DISPLAY_SUCCESS) { - continue; - } - DISPLAY_DEBUGLOG(); - - auto crtcIter = mCrtcs.find(crtcId); - if (crtcIter == mCrtcs.end()) { - DISPLAY_LOGE("can not find crtc for the id %{public}d", connector->GetId()); - continue; - } - DISPLAY_DEBUGLOG(); - auto crtc = crtcIter->second; - DISPLAY_DEBUGLOG("crtc %{public}p", crtc.get()); - // create the display - std::shared_ptr display = std::make_shared(connector, crtc, mInstance); - DISPLAY_DEBUGLOG(); - display->Init(); - dispId = display->GetId(); - connectorId = connector->GetId(); - mDisplays.emplace(dispId, std::move(display)); - dispConnectorIdMaps_.emplace(dispId, connectorId); - } - DISPLAY_DEBUGLOG("find display size %{public}zd", mDisplays.size()); - return mDisplays; -} -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY diff --git a/hardware/display/src/display_device/drm_device.h b/hardware/display/src/display_device/drm_device.h deleted file mode 100755 index 875cacb5c9b22a6f079b9ba4397955e30139c7e7..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/drm_device.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef DRM_DEVICE_H -#define DRM_DEVICE_H -#include -#include -#include -#include -#include "drm_connector.h" -#include "drm_crtc.h" -#include "drm_encoder.h" -#include "drm_plane.h" -#include "hdi_device_common.h" -#include "hdi_device_interface.h" -#include "hdi_display.h" -#include "hdi_shared_fd.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) - -class DrmPropertyEnum { -public: - explicit DrmPropertyEnum(drm_mode_property_enum *e) : value(e->value), name(e->name) { - } - ~DrmPropertyEnum() {}; - - uint64_t value; - std::string name; -}; - -struct DrmProperty { - uint32_t propId; - uint64_t value; - uint32_t type; - uint32_t flags; - std::string name; - std::vector values; - std::vector enums; - std::vector blob_ids; -}; - -class DrmDevice : public HdiDeviceInterface, std::enable_shared_from_this { -public: - static std::shared_ptr Create(); - static uint32_t ConvertToDrmFormat(PixelFormat fmtIn); - static int GetDrmFd(); - DrmDevice(); - ~DrmDevice() override {} - - std::vector> GetDrmPlane(uint32_t pipe, uint32_t type); - - int32_t GetCrtcProperty(const DrmCrtc &crtc, const std::string &name, DrmProperty &prop); - int32_t GetConnectorProperty(const DrmConnector &connector, const std::string &name, DrmProperty &prop); - int32_t GetPlaneProperty(const DrmPlane &plane, const std::string &name, DrmProperty &prop); - - int32_t GetProperty(uint32_t objId, uint32_t objType, const std::string &name, DrmProperty &prop); - std::shared_ptr GetDrmEncoderFromId(uint32_t id); - std::shared_ptr GetDrmConnectorFromId(uint32_t id); - std::shared_ptr GetDrmCrtcFromId(uint32_t id); - void CreateCrtc(drmModeCrtcPtr c); - std::unordered_map> DiscoveryDisplay() override; - int32_t Init() override; - void DeInit() override; - bool HandleHotplug(uint32_t dispId, bool plugIn) override; - -private: - static FdPtr mDrmFd; - static std::shared_ptr mInstance; - void FindAllCrtc(const drmModeResPtr &drmRes); - void FindAllEncoder(const drmModeResPtr &drmRes); - void FindAllConnector(const drmModeResPtr &drmRes); - void FindAllPlane(); - int InitNetLink(); - IdMapPtr mDisplays; - IdMapPtr mCrtcs; - IdMapPtr mEncoders; - IdMapPtr mConnectors; - std::vector> mPlanes; - std::unordered_map dispConnectorIdMaps_; -}; -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY - -#endif // DRM_DEVICE_H diff --git a/hardware/display/src/display_device/drm_display.cpp b/hardware/display/src/display_device/drm_display.cpp deleted file mode 100644 index b0d794449d731586984f565595eba8c4e0fdb6b2..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/drm_display.cpp +++ /dev/null @@ -1,289 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#include "drm_display.h" -#include -#include -#include -#include -#include -#include "display_gralloc.h" -#include "display_common.h" -#include "drm_device.h" -#include "drm_vsync_worker.h" -#include "hdi_drm_composition.h" -#include "hdi_gfx_composition.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -DrmDisplay::DrmDisplay(std::shared_ptr connector, std::shared_ptr crtc, - std::shared_ptr drmDevice) - : mDrmDevice(drmDevice), mConnector(connector), mCrtc(crtc) -{} - -DrmDisplay::~DrmDisplay() -{ - if (mCrtc != nullptr) { - mCrtc->UnBindDisplay(GetId()); - } -} - -int32_t DrmDisplay::Init() -{ - int ret; - DISPLAY_CHK_RETURN((mCrtc == nullptr), DISPLAY_FAILURE, DISPLAY_LOGE("crtc is null")); - DISPLAY_CHK_RETURN((mConnector == nullptr), DISPLAY_FAILURE, DISPLAY_LOGE("connector is null")); - DISPLAY_CHK_RETURN((mDrmDevice == nullptr), DISPLAY_FAILURE, DISPLAY_LOGE("drmDevice is null")); - - ret = HdiDisplay::Init(); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("init failed")); - auto preComp = std::make_unique(); - DISPLAY_CHK_RETURN((preComp == nullptr), DISPLAY_FAILURE, - DISPLAY_LOGE("can not new HdiGfxComposition errno %{public}d", errno)); - ret = preComp->Init(); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("can not init HdiGfxComposition")); - - auto postComp = std::make_unique(mConnector, mCrtc, mDrmDevice); - DISPLAY_CHK_RETURN((postComp == nullptr), DISPLAY_FAILURE, - DISPLAY_LOGE("can not new HdiDrmComposition errno %{public}d", errno)); - ret = postComp->Init(); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("can not init HdiDrmComposition")); - mComposer = std::make_unique(std::move(preComp), std::move(postComp)); - ret = mCrtc->BindToDisplay(GetId()); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("bind crtc failed")); - - ret = ChosePreferenceMode(); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("choose preference mode fialed")); - return DISPLAY_SUCCESS; -} - -int32_t DrmDisplay::GetDisplayCapability(DisplayCapability *info) -{ - mConnector->GetDisplayCap(*info); - return DISPLAY_SUCCESS; -} - -int32_t DrmDisplay::GetDisplaySupportedModes(uint32_t *num, DisplayModeInfo *modes) -{ - mConnector->GetDisplaySupportedModes(num, modes); - return DISPLAY_SUCCESS; -} - -int32_t DrmDisplay::GetDisplayMode(uint32_t *modeId) -{ - DISPLAY_CHK_RETURN((modeId == nullptr), DISPLAY_NULL_PTR, DISPLAY_LOGE("the in modeId is nullptr")); - *modeId = mCrtc->GetActiveModeId(); - return DISPLAY_SUCCESS; -} - -int32_t DrmDisplay::SetDisplayMode(uint32_t modeId) -{ - return mCrtc->SetActivieMode(modeId); -} - -int32_t DrmDisplay::GetDisplayPowerStatus(DispPowerStatus *status) -{ - DISPLAY_CHK_RETURN((status == nullptr), DISPLAY_NULL_PTR, DISPLAY_LOGE("status is nullptr")); - return ConvertToHdiPowerState(mConnector->GetDpmsState(), *status); -} - -int32_t DrmDisplay::SetDisplayPowerStatus(DispPowerStatus status) -{ - static int32_t fb_fd = -1; - int32_t err = -1; - const uint32_t FBIOBLANK = 0x4611; /* arg: 0 or vesa level + 1 */ - const uint32_t FB_BLANK_UNBLANK = 0; /* screen: unblanked, hsync: on, vsync: on */ - const uint32_t FB_BLANK_POWERDOWN = 4; /* screen: blanked, hsync: off, vsync: off */ - - DISPLAY_DEBUGLOG("SetDisplayPowerStatus power state %{public}u", status); - if (fb_fd < 0) { - fb_fd = open("/dev/graphics/fb0", O_RDWR); - if (fb_fd < 0) { - DISPLAY_LOGE("oepn fb0 file failed\n"); - return DISPLAY_NOT_SUPPORT; - } - } - switch (status) { - case POWER_STATUS_OFF: - case POWER_STATUS_STANDBY: - case POWER_STATUS_SUSPEND: - err = ioctl(fb_fd, FBIOBLANK, FB_BLANK_POWERDOWN); - break; - case POWER_STATUS_ON: - err = ioctl(fb_fd, FBIOBLANK, FB_BLANK_UNBLANK); - break; - default: - err = DISPLAY_FAILURE; - break; - } - if (err < 0) { - DISPLAY_LOGE("ioctl fb0 failed\n"); - return DISPLAY_FAILURE; - } - - return DISPLAY_SUCCESS; -} - -int32_t DrmDisplay::ConvertToHdiPowerState(uint32_t drmPowerState, DispPowerStatus &hdiPowerState) -{ - int32_t ret = DISPLAY_SUCCESS; - switch (drmPowerState) { - case DRM_MODE_DPMS_OFF: - hdiPowerState = POWER_STATUS_OFF; - break; - case DRM_MODE_DPMS_ON: - hdiPowerState = POWER_STATUS_ON; - break; - case DRM_MODE_DPMS_STANDBY: - hdiPowerState = POWER_STATUS_STANDBY; - break; - case DRM_MODE_DPMS_SUSPEND: - hdiPowerState = POWER_STATUS_SUSPEND; - break; - default: - hdiPowerState = POWER_STATUS_BUTT; - ret = DISPLAY_FAILURE; - break; - } - DISPLAY_DEBUGLOG("hdi power state %{public}u", hdiPowerState); - return ret; -} - -int32_t DrmDisplay::ConvertToDrmPowerState(DispPowerStatus hdiPowerState, uint32_t &drmPowerState) -{ - int32_t ret = DISPLAY_SUCCESS; - switch (hdiPowerState) { - case POWER_STATUS_OFF: - drmPowerState = DRM_MODE_DPMS_OFF; - break; - case POWER_STATUS_ON: - drmPowerState = DRM_MODE_DPMS_ON; - break; - case POWER_STATUS_STANDBY: - drmPowerState = DRM_MODE_DPMS_STANDBY; - break; - case POWER_STATUS_SUSPEND: - drmPowerState = DRM_MODE_DPMS_SUSPEND; - break; - default: - ret = DISPLAY_FAILURE; - break; - } - return ret; -} - -std::unique_ptr DrmDisplay::CreateHdiLayer(LayerType type) -{ - DISPLAY_DEBUGLOG(); - return std::make_unique(type); -} - -int32_t DrmDisplay::WaitForVBlank(uint64_t *ns) -{ - int ret; - constexpr uint64_t nPerS = 1000000000; - constexpr uint64_t nPerUS = 1000; - drmVBlank vbl = { - .request.type = DRM_VBLANK_RELATIVE, - .request.sequence = 0, - .request.signal = 0, - }; - DISPLAY_CHK_RETURN((ns == nullptr), DISPLAY_NULL_PTR, DISPLAY_LOGE("in ns is nullptr")); - ret = drmWaitVBlank(mDrmDevice->GetDrmFd(), &vbl); - DISPLAY_CHK_RETURN((ret != 0), DISPLAY_FAILURE, DISPLAY_LOGE("wait vblank failed errno %{public}d", errno)); - *ns = static_cast(vbl.reply.tval_sec * nPerS + vbl.reply.tval_usec * nPerUS); - return DISPLAY_SUCCESS; -} - -bool DrmDisplay::IsConnected() -{ - DISPLAY_DEBUGLOG("conneted %{public}d", mConnector->IsConnected()); - return mConnector->IsConnected(); -} - -int32_t DrmDisplay::PushFirstFrame() -{ - GrallocFuncs *grallocFucs = nullptr; - int ret = GrallocInitialize(&grallocFucs); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("Gralloc init failed")); - DrmMode mode; - ret = mConnector->GetModeFromId(mCrtc->GetActiveModeId(), mode); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, - DISPLAY_LOGE("can not get the mode from id %{public}d", mCrtc->GetActiveModeId())); - AllocInfo info = { - .width = mode.GetModeInfoPtr()->hdisplay, - .height = mode.GetModeInfoPtr()->vdisplay, - .usage = HBM_USE_MEM_DMA | HBM_USE_CPU_READ | HBM_USE_CPU_WRITE, - .format = PIXEL_FMT_BGRA_8888 - }; - - BufferHandle *buffer = nullptr; - ret = grallocFucs->AllocMem(&info, &buffer); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("can not alloc memory")); - mClientLayer->SetLayerBuffer(buffer, -1); - - std::vector layers; - HdiDrmComposition *drmComp = static_cast(mComposer->GetPostCompostion()); - drmComp->SetLayers(layers, *mClientLayer); - drmComp->Apply(true); - return DISPLAY_SUCCESS; -} - -int32_t DrmDisplay::ChosePreferenceMode() -{ - int32_t ret; - int32_t modeId = mConnector->GetPreferenceId(); - if (modeId == INVALID_MODE_ID) { - uint32_t num = 0; - ret = GetDisplaySupportedModes(&num, nullptr); - DISPLAY_CHK_RETURN((num == 0) && (ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("can not get modes")); - modeId = 0; - } - ret = SetDisplayMode(modeId); - // Push first frame to the drm, for that the vblank must init all the componet. - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("set display mode failed")); - return PushFirstFrame(); -} - -int32_t DrmDisplay::RegDisplayVBlankCallback(VBlankCallback cb, void *data) -{ - DISPLAY_DEBUGLOG("the VBlankCallback %{public}p ", cb); - (void)data; - std::shared_ptr vsyncCb = std::make_shared(cb, nullptr, mCrtc->GetPipe()); - DrmVsyncWorker::GetInstance().ReqesterVBlankCb(vsyncCb); - return DISPLAY_SUCCESS; -} - -int32_t DrmDisplay::SetDisplayVsyncEnabled(bool enabled) -{ - DISPLAY_DEBUGLOG("enable %{public}d", enabled); - DrmVsyncWorker::GetInstance().EnableVsync(enabled); - return DISPLAY_SUCCESS; -} - -int32_t DrmDisplay::GetDisplayBacklight(uint32_t *value) -{ - DISPLAY_CHK_RETURN((value == nullptr), DISPLAY_NULL_PTR, DISPLAY_LOGE("value is nullptr")); - return mConnector->GetBrightness(*value); -} - -int32_t DrmDisplay::SetDisplayBacklight(uint32_t value) -{ - return mConnector->SetBrightness(value); -} -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY diff --git a/hardware/display/src/display_device/drm_display.h b/hardware/display/src/display_device/drm_display.h deleted file mode 100644 index 31b3bb40b4276598721b3f9d7a34b0ba32e88458..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/drm_display.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef DRM_DISPLAY_H -#define DRM_DISPLAY_H -#include -#include -#include "drm_connector.h" -#include "drm_crtc.h" -#include "drm_device.h" -#include "drm_plane.h" -#include "hdi_composer.h" -#include "hdi_drm_composition.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -class DrmDisplay : public HdiDisplay { -public: - DrmDisplay(std::shared_ptr connector, std::shared_ptr crtc, - std::shared_ptr drmDevice); - - ~DrmDisplay() override; - - int32_t Init() override; - int32_t GetDisplayCapability(DisplayCapability *info) override; - int32_t GetDisplaySupportedModes(uint32_t *num, DisplayModeInfo *modes) override; - int32_t GetDisplayMode(uint32_t *modeId) override; - int32_t SetDisplayMode(uint32_t modeId) override; - int32_t GetDisplayPowerStatus(DispPowerStatus *status) override; - int32_t SetDisplayPowerStatus(DispPowerStatus status) override; - int32_t GetDisplayBacklight(uint32_t *value) override; - int32_t SetDisplayBacklight(uint32_t value) override; - int32_t ChosePreferenceMode(); - int32_t RegDisplayVBlankCallback(VBlankCallback cb, void *data) override; - int32_t WaitForVBlank(uint64_t *ns) override; - bool IsConnected() override; - int32_t SetDisplayVsyncEnabled(bool enabled) override; - HdiDrmComposition *GetDrmComposition(); - -protected: - std::unique_ptr CreateHdiLayer(LayerType type) override; - -private: - int32_t PushFirstFrame(); - int32_t ConvertToHdiPowerState(uint32_t drmPowerState, DispPowerStatus &hdiPowerState); - int32_t ConvertToDrmPowerState(DispPowerStatus hdiPowerState, uint32_t &drmPowerState); - std::shared_ptr mDrmDevice; - std::shared_ptr mConnector; - std::shared_ptr mCrtc; -}; -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY - -#endif // HDI_DISPLAY_H diff --git a/hardware/display/src/display_device/drm_encoder.cpp b/hardware/display/src/display_device/drm_encoder.cpp deleted file mode 100755 index c69882a5b3aba33f74639fd9bbf539a527922142..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/drm_encoder.cpp +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#include "drm_encoder.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -DrmEncoder::DrmEncoder(drmModeEncoder e) -{ - mEncoderId = e.encoder_id; - mCrtcId = e.crtc_id; - mPossibleCrtcs = e.possible_crtcs; -} - -int32_t DrmEncoder::PickIdleCrtcId(IdMapPtr &crtcs, uint32_t &crtcId) -{ - // find the crtc id; - DISPLAY_DEBUGLOG("crtcs szie %{public}zu", crtcs.size()); - std::shared_ptr crtc; - auto crtcIter = crtcs.find(mCrtcId); - if (crtcIter == crtcs.end()) { - DISPLAY_LOGW("can not find crtc for id %{public}d", mCrtcId); - crtcIter = crtcs.begin(); - return DISPLAY_FAILURE; - } - DISPLAY_CHK_RETURN((crtcIter == crtcs.end()), DISPLAY_FAILURE, - DISPLAY_LOGE("have no crtc %{public}zu ", crtcs.size())); - crtc = crtcIter->second; - DISPLAY_CHK_RETURN((crtc == nullptr), DISPLAY_FAILURE, DISPLAY_LOGE("crtc is null")); - - if (!crtc->CanBind()) { - crtc = nullptr; - for (const auto &posCrtcPair : crtcs) { - auto &posCrts = posCrtcPair.second; - DISPLAY_DEBUGLOG("try crtc id : %{public}d", posCrts->GetId()); - if (posCrts->CanBind() && ((1 << posCrts->GetPipe()) & mPossibleCrtcs)) { - crtc = posCrts; - } - } - } - DISPLAY_CHK_RETURN((crtc == nullptr), DISPLAY_FAILURE, - DISPLAY_LOGE("encoder %{public}d can not bind to idle crtc", mEncoderId)); - crtcId = crtc->GetId(); - return DISPLAY_SUCCESS; -} -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY diff --git a/hardware/display/src/display_device/drm_encoder.h b/hardware/display/src/display_device/drm_encoder.h deleted file mode 100644 index 4f35578a54ef9ac26439f1ebf19cf342307fa509..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/drm_encoder.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef DRM_ENCODER_H -#define DRM_ENCODER_H -#include -#include -#include -#include -#include -#include - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -class DrmEncoder { -public: - explicit DrmEncoder(drmModeEncoder e); - virtual ~DrmEncoder() {} - uint32_t GetCrtcId() const - { - return mCrtcId; - } - void SetCrtcId(uint32_t id) - { - mCrtcId = id; - } - uint32_t GetPossibleCrtcs() const - { - return mPossibleCrtcs; - } - int32_t PickIdleCrtcId(IdMapPtr &crtcs, uint32_t &crtcId); - uint32_t GetId() const - { - return mEncoderId; - } - -private: - uint32_t mEncoderId; - uint32_t mCrtcId; - uint32_t mPossibleCrtcs; -}; -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY - -#endif // DRM_ENCODER_H \ No newline at end of file diff --git a/hardware/display/src/display_device/drm_plane.cpp b/hardware/display/src/display_device/drm_plane.cpp deleted file mode 100755 index 8735a3e2671eb966bc1eb62461030dc6d1fcb8f4..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/drm_plane.cpp +++ /dev/null @@ -1,185 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#include "drm_plane.h" -#include "drm_device.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -struct PlaneTypeName planeTypeNames[] = { - { DrmPlaneType::DRM_PLANE_TYPE_CLUSTER0_WIN0, "Cluster0-win0" }, - { DrmPlaneType::DRM_PLANE_TYPE_CLUSTER0_WIN1, "Cluster0-win1" }, - { DrmPlaneType::DRM_PLANE_TYPE_CLUSTER1_WIN0, "Cluster1-win0" }, - { DrmPlaneType::DRM_PLANE_TYPE_CLUSTER1_WIN1, "Cluster1-win1" }, - - { DrmPlaneType::DRM_PLANE_TYPE_ESMART0_WIN0, "Esmart0-win0" }, - { DrmPlaneType::DRM_PLANE_TYPE_ESMART0_WIN1, "Esmart0-win1" }, - { DrmPlaneType::DRM_PLANE_TYPE_ESMART0_WIN2, "Esmart0-win2" }, - { DrmPlaneType::DRM_PLANE_TYPE_ESMART0_WIN3, "Esmart0-win3" }, - - { DrmPlaneType::DRM_PLANE_TYPE_ESMART1_WIN0, "Esmart1-win0" }, - { DrmPlaneType::DRM_PLANE_TYPE_ESMART1_WIN1, "Esmart1-win1" }, - { DrmPlaneType::DRM_PLANE_TYPE_ESMART1_WIN2, "Esmart1-win2" }, - { DrmPlaneType::DRM_PLANE_TYPE_ESMART1_WIN3, "Esmart1-win3" }, - - { DrmPlaneType::DRM_PLANE_TYPE_SMART0_WIN0, "Smart0-win0" }, - { DrmPlaneType::DRM_PLANE_TYPE_SMART0_WIN1, "Smart0-win1" }, - { DrmPlaneType::DRM_PLANE_TYPE_SMART0_WIN2, "Smart0-win2" }, - { DrmPlaneType::DRM_PLANE_TYPE_SMART0_WIN3, "Smart0-win3" }, - - { DrmPlaneType::DRM_PLANE_TYPE_SMART1_WIN0, "Smart1-win0" }, - { DrmPlaneType::DRM_PLANE_TYPE_SMART1_WIN1, "Smart1-win1" }, - { DrmPlaneType::DRM_PLANE_TYPE_SMART1_WIN2, "Smart1-win2" }, - { DrmPlaneType::DRM_PLANE_TYPE_SMART1_WIN3, "Smart1-win3" }, - - { DrmPlaneType::DRM_PLANE_TYPE_Unknown, "unknown" }, -}; - -DrmPlane::DrmPlane(drmModePlane &p) - : mId(p.plane_id), mPossibleCrtcs(p.possible_crtcs), mCrtcId(p.crtc_id), - mFormats(p.formats, p.formats + p.count_formats) -{} - -DrmPlane::~DrmPlane() -{ - DISPLAY_DEBUGLOG(); -} - -int DrmPlane::GetCrtcProp(DrmDevice &drmDevice) -{ - int32_t ret; - int32_t crtc_x, crtc_y, crtc_w, crtc_h; - DrmProperty prop; - - ret = drmDevice.GetPlaneProperty(*this, PROP_CRTC_X_ID, prop); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("cat not get pane crtc_x prop id")); - mPropCrtc_xId = prop.propId; - crtc_x = prop.value; - - ret = drmDevice.GetPlaneProperty(*this, PROP_CRTC_Y_ID, prop); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("cat not get pane crtc_y prop id")); - mPropCrtc_yId = prop.propId; - crtc_y = prop.value; - - ret = drmDevice.GetPlaneProperty(*this, PROP_CRTC_W_ID, prop); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("cat not get pane crtc_w prop id")); - mPropCrtc_wId = prop.propId; - crtc_w = prop.value; - - ret = drmDevice.GetPlaneProperty(*this, PROP_CRTC_H_ID, prop); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("cat not get pane crtc_h prop id")); - mPropCrtc_hId = prop.propId; - crtc_h = prop.value; - - DISPLAY_LOGE("plane %{public}d crtc_x %{public}d crtc_y %{public}d crtc_w %{public}d crtc_h %{public}d", - GetId(), crtc_x, crtc_y, crtc_w, crtc_h); - - return 0; -} - -int DrmPlane::GetSrcProp(DrmDevice &drmDevice) -{ - int32_t ret; - int32_t src_x, src_y, src_w, src_h; - DrmProperty prop; - - ret = drmDevice.GetPlaneProperty(*this, PROP_SRC_X_ID, prop); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("cat not get pane src_x prop id")); - mPropSrc_xId = prop.propId; - src_x = prop.value; - - ret = drmDevice.GetPlaneProperty(*this, PROP_SRC_Y_ID, prop); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("cat not get pane src_y prop id")); - mPropSrc_yId = prop.propId; - src_y = prop.value; - - ret = drmDevice.GetPlaneProperty(*this, PROP_SRC_W_ID, prop); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("cat not get pane src_w prop id")); - mPropSrc_wId = prop.propId; - src_w = prop.value; - - ret = drmDevice.GetPlaneProperty(*this, PROP_SRC_H_ID, prop); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("cat not get pane src_h prop id")); - mPropSrc_hId = prop.propId; - src_h = prop.value; - - DISPLAY_LOGE("plane %{public}d src_x %{public}d src_y %{public}d src_w %{public}d src_h %{public}d", - GetId(), src_x, src_y, src_w, src_h); - - return 0; -} - -int32_t DrmPlane::Init(DrmDevice &drmDevice) -{ - DISPLAY_DEBUGLOG(); - int32_t ret; - uint32_t find_name = 0; - DrmProperty prop; - GetCrtcProp(drmDevice); - GetSrcProp(drmDevice); - ret = drmDevice.GetPlaneProperty(*this, PROP_FBID, prop); - mPropFbId = prop.propId; - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("can not get plane fb id")); - ret = drmDevice.GetPlaneProperty(*this, PROP_IN_FENCE_FD, prop); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("cat not get plane in fence prop id")); - mPropFenceInId = prop.propId; - ret = drmDevice.GetPlaneProperty(*this, PROP_CRTC_ID, prop); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("cat not get pane crtc prop id")); - mPropCrtcId = prop.propId; - - ret = drmDevice.GetPlaneProperty(*this, PROP_ZPOS_ID, prop); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("cat not get pane crtc prop id")); - mPropZposId = prop.propId; - - ret = drmDevice.GetPlaneProperty(*this, "NAME", prop); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("cat not get pane crtc prop id")); - - for (int i = 0; i < static_castARRAY_SIZE(planeTypeNames); i++) { - find_name = 0; - - for (auto &drmEnum : prop.enums) { - if (!strncmp(drmEnum.name.c_str(), (const char*)planeTypeNames[i].name, - strlen(planeTypeNames[i].name))) { - find_name = (1LL << drmEnum.value); - } - } - - if (find_name) { - DISPLAY_LOGI("find plane id %{public}d, type %{public}x %{public}s", - GetId(), planeTypeNames[i].type, planeTypeNames[i].name); - mWinType = planeTypeNames[i].type; - mName = planeTypeNames[i].name; - break; - } - } - - ret = drmDevice.GetPlaneProperty(*this, PROP_TYPE, prop); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("cat not get pane crtc prop id")); - switch (prop.value) { - case DRM_PLANE_TYPE_OVERLAY: - case DRM_PLANE_TYPE_PRIMARY: - case DRM_PLANE_TYPE_CURSOR: - mType = static_cast(prop.value); - break; - default: - DISPLAY_LOGE("unknown type value %{public}" PRIu64 "", prop.value); - return DISPLAY_FAILURE; - } - return DISPLAY_SUCCESS; -} -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY diff --git a/hardware/display/src/display_device/drm_plane.h b/hardware/display/src/display_device/drm_plane.h deleted file mode 100755 index 8b29d3913c913a05c721edaa88f579cd65aa3aaf..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/drm_plane.h +++ /dev/null @@ -1,227 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef DRM_PLANE_H -#define DRM_PLANE_H -#include -#include -#include -#include -#include - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -enum class DrmPropertyType { - DRM_PROPERTY_TYPE_INT, - DRM_PROPERTY_TYPE_ENUM, - DRM_PROPERTY_TYPE_OBJECT, - DRM_PROPERTY_TYPE_BLOB, - DRM_PROPERTY_TYPE_BITMASK, - DRM_PROPERTY_TYPE_INVALID, -}; - -enum class DrmPlaneType { - DRM_PLANE_TYPE_CLUSTER0_WIN0 = 1 << 0, - DRM_PLANE_TYPE_CLUSTER0_WIN1 = 1 << 1, - - DRM_PLANE_TYPE_CLUSTER1_WIN0 = 1 << 2, - DRM_PLANE_TYPE_CLUSTER1_WIN1 = 1 << 3, - - DRM_PLANE_TYPE_ESMART0_WIN0 = 1 << 4, - DRM_PLANE_TYPE_ESMART0_WIN1 = 1 << 5, - DRM_PLANE_TYPE_ESMART0_WIN2 = 1 << 6, - DRM_PLANE_TYPE_ESMART0_WIN3 = 1 << 7, - - DRM_PLANE_TYPE_ESMART1_WIN0 = 1 << 8, - DRM_PLANE_TYPE_ESMART1_WIN1 = 1 << 9, - DRM_PLANE_TYPE_ESMART1_WIN2 = 1 << 10, - DRM_PLANE_TYPE_ESMART1_WIN3 = 1 << 11, - - DRM_PLANE_TYPE_SMART0_WIN0 = 1 << 12, - DRM_PLANE_TYPE_SMART0_WIN1 = 1 << 13, - DRM_PLANE_TYPE_SMART0_WIN2 = 1 << 14, - DRM_PLANE_TYPE_SMART0_WIN3 = 1 << 15, - - DRM_PLANE_TYPE_SMART1_WIN0 = 1 << 16, - DRM_PLANE_TYPE_SMART1_WIN1 = 1 << 17, - DRM_PLANE_TYPE_SMART1_WIN2 = 1 << 18, - DRM_PLANE_TYPE_SMART1_WIN3 = 1 << 19, - - DRM_PLANE_TYPE_CLUSTER0_MASK = 0x3, - DRM_PLANE_TYPE_CLUSTER1_MASK = 0xc, - DRM_PLANE_TYPE_CLUSTER_MASK = 0xf, - DRM_PLANE_TYPE_ESMART0_MASK = 0xf0, - DRM_PLANE_TYPE_ESMART1_MASK = 0xf00, - DRM_PLANE_TYPE_SMART0_MASK = 0xf000, - DRM_PLANE_TYPE_SMART1_MASK = 0xf0000, - DRM_PLANE_TYPE_Unknown = 0xffffffff, -}; - -struct PlaneMaskName { - DrmPlaneType mask; - const char *name; -}; - -struct PlaneTypeName { - DrmPlaneType type; - const char *name; -}; - -const std::string PROP_FBID = "FB_ID"; -const std::string PROP_IN_FENCE_FD = "IN_FENCE_FD"; -const std::string PROP_CRTC_ID = "CRTC_ID"; -const std::string PROP_TYPE = "type"; - -const std::string PROP_CRTC_X_ID = "CRTC_X"; -const std::string PROP_CRTC_Y_ID = "CRTC_Y"; -const std::string PROP_CRTC_W_ID = "CRTC_W"; -const std::string PROP_CRTC_H_ID = "CRTC_H"; - -const std::string PROP_SRC_X_ID = "SRC_X"; -const std::string PROP_SRC_Y_ID = "SRC_Y"; -const std::string PROP_SRC_W_ID = "SRC_W"; -const std::string PROP_SRC_H_ID = "SRC_H"; - -const std::string PROP_ZPOS_ID = "zpos"; - -class DrmDevice; - -class DrmPlane { -public: - explicit DrmPlane(drmModePlane &p); - virtual ~DrmPlane(); - int32_t Init(DrmDevice &drmDevice); - int GetCrtcProp(DrmDevice &drmDevice); - int GetSrcProp(DrmDevice &drmDevice); - uint32_t GetId() const - { - return mId; - } - uint32_t GetPropFbId() const - { - return mPropFbId; - } - uint32_t GetPropCrtc_xId() const - { - return mPropCrtc_xId; - } - uint32_t GetPropCrtc_yId() const - { - return mPropCrtc_yId; - } - uint32_t GetPropCrtc_wId() const - { - return mPropCrtc_wId; - } - uint32_t GetPropCrtc_hId() const - { - return mPropCrtc_hId; - } - uint32_t GetPropSrc_xId() const - { - return mPropSrc_xId; - } - uint32_t GetPropSrc_yId() const - { - return mPropSrc_yId; - } - uint32_t GetPropSrc_wId() const - { - return mPropSrc_wId; - } - uint32_t GetPropSrc_hId() const - { - return mPropSrc_hId; - } - uint32_t GetPropZposId() const - { - return mPropZposId; - } - uint32_t GetPropFenceInId() const - { - return mPropFenceInId; - } - uint32_t GetPropCrtcId() const - { - return mPropCrtcId; - } - uint32_t GetPossibleCrtcs() const - { - return mPossibleCrtcs; - } - uint32_t GetType() const - { - return mType; - } - void BindToPipe(uint32_t pipe) - { - mPipe = pipe; - } - void UnBindPipe() - { - mPipe = 0; - } - bool IsIdle() const - { - return (mPipe == 0); - } - uint32_t GetCrtcId() - { - return mCrtcId; - } - uint32_t GetPipe() - { - return mPipe; - } - DrmPlaneType GetWinType() - { - return mWinType; - } - std::string GetName() - { - return mName; - } -private: - uint32_t mId = 0; - uint32_t mPossibleCrtcs = 0; - uint32_t mCrtcId = 0; - uint32_t mPropFbId = 0; - uint32_t mPropFenceInId = 0; - uint32_t mPropCrtcId = 0; - DrmPlaneType mWinType = DrmPlaneType::DRM_PLANE_TYPE_Unknown; - std::string mName; - - uint32_t mPropCrtc_xId = 0; - uint32_t mPropCrtc_yId = 0; - uint32_t mPropCrtc_wId = 0; - uint32_t mPropCrtc_hId = 0; - - uint32_t mPropSrc_xId = 0; - uint32_t mPropSrc_yId = 0; - uint32_t mPropSrc_wId = 0; - uint32_t mPropSrc_hId = 0; - - uint32_t mPropZposId = 0; - - uint32_t mPipe = 0; - uint32_t mType = 0; - std::vector mFormats; -}; -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY - -#endif // DRM_PLANE_H diff --git a/hardware/display/src/display_device/drm_vsync_worker.cpp b/hardware/display/src/display_device/drm_vsync_worker.cpp deleted file mode 100644 index 53ddd63aa399e82d047fe3c5981c3f2da607ec3e..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/drm_vsync_worker.cpp +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#include "drm_vsync_worker.h" -#include -#include "display_common.h" -#include "drm_device.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -DrmVsyncWorker::DrmVsyncWorker() {} - -int32_t DrmVsyncWorker::Init(int fd) -{ - DISPLAY_CHK_RETURN((fd < 0), DISPLAY_FAILURE, DISPLAY_LOGE("the fd is invalid")); - mDrmFd = fd; - DISPLAY_DEBUGLOG("the drm fd is %{public}d", fd); - mThread = std::make_unique([this]() { WorkThread(); }); - DISPLAY_CHK_RETURN((mThread == nullptr), DISPLAY_FAILURE, DISPLAY_LOGE("can not create thread")); - mRunning = true; - return DISPLAY_SUCCESS; -} - -DrmVsyncWorker &DrmVsyncWorker::GetInstance() -{ - static DrmVsyncWorker instance; - static std::once_flag once; - std::call_once(once, [&]() { - int ret = instance.Init(DrmDevice::GetDrmFd()); - if (ret != DISPLAY_SUCCESS) { - DISPLAY_LOGE("Vsync Worker Init failed"); - } - }); - return instance; -} - -DrmVsyncWorker::~DrmVsyncWorker() -{ - DISPLAY_DEBUGLOG(); - { - std::lock_guard lg(mMutex); - mRunning = false; - } - DISPLAY_DEBUGLOG(); - mCondition.notify_one(); - if (mThread != nullptr) { - mThread->join(); - } - DISPLAY_DEBUGLOG(); -} - -bool DrmVsyncWorker::WaitSignalAndCheckRuning() -{ - std::unique_lock ul(mMutex); - mCondition.wait(ul, [this]() { return (mEnable || !mRunning); }); - return mRunning; -} - - -uint64_t DrmVsyncWorker::WaitNextVBlank(unsigned int &sq) -{ - constexpr uint64_t SEC_TO_NSEC = 1000 * 1000 * 1000; - constexpr uint64_t USEC_TO_NSEC = 1000; - drmVBlank vblank = { - .request = - drmVBlankReq { - .type = DRM_VBLANK_RELATIVE, - .sequence = 1, - .signal = 0, - } - }; - /* The drmWaitVBlank need set the crtc pipe when there are multi crtcs in the system. */ - if (mCallBack->GetPipe() == 1) - vblank.request.type = drmVBlankSeqType((int)(vblank.request.type) | (int)DRM_VBLANK_SECONDARY); - int ret = drmWaitVBlank(mDrmFd, &vblank); - DISPLAY_CHK_RETURN((ret < 0), 0, - DISPLAY_LOGE("wait vblank failed ret : %{public}d errno %{public}d", ret, errno)); - sq = vblank.reply.sequence; - return (uint64_t)(vblank.reply.tval_sec * SEC_TO_NSEC + vblank.reply.tval_usec * USEC_TO_NSEC); -} - - -void DrmVsyncWorker::EnableVsync(bool enable) -{ - DISPLAY_DEBUGLOG(); - { - std::lock_guard lg(mMutex); - mEnable = enable; - } - mCondition.notify_one(); -} - -void DrmVsyncWorker::WorkThread() -{ - DISPLAY_DEBUGLOG(); - unsigned int seq = 0; - while (WaitSignalAndCheckRuning()) { - // wait the vblank - uint64_t time = WaitNextVBlank(seq); - if (mCallBack != nullptr) { - mCallBack->Vsync(seq, time); - } else { - DISPLAY_LOGE("the callbac is nullptr"); - } - } -} - -void DrmVsyncWorker::ReqesterVBlankCb(std::shared_ptr &cb) -{ - DISPLAY_DEBUGLOG(); - DISPLAY_CHK_RETURN_NOT_VALUE((cb == nullptr), DISPLAY_LOGE("the VBlankCallback is nullptr ")); - mCallBack = cb; -} -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY \ No newline at end of file diff --git a/hardware/display/src/display_device/drm_vsync_worker.h b/hardware/display/src/display_device/drm_vsync_worker.h deleted file mode 100644 index c578e91c49e9fc8722115ef711cfd097fe1a3737..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/drm_vsync_worker.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef DRM_VSYNC_WORKER_H -#define DRM_VSYNC_WORKER_H -#include -#include -#include -#include -#include "display_device.h" -#include "hdi_device_common.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -class DrmVsyncWorker { -public: - DrmVsyncWorker(); - virtual ~DrmVsyncWorker(); - int32_t Init(int fd); - static DrmVsyncWorker &GetInstance(); - - void EnableVsync(bool enable); - void WorkThread(); - uint64_t WaitNextVBlank(unsigned int &sq); - bool WaitSignalAndCheckRuning(); - void ReqesterVBlankCb(std::shared_ptr &cb); - -private: - int mDrmFd = 0; - std::unique_ptr mThread; - bool mEnable = false; - std::mutex mMutex; - std::condition_variable mCondition; - std::shared_ptr mCallBack; - bool mRunning = false; -}; -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY - -#endif // DRM_VSYNC_WORKER_H \ No newline at end of file diff --git a/hardware/display/src/display_device/hdi_composer.cpp b/hardware/display/src/display_device/hdi_composer.cpp deleted file mode 100644 index 04eefdbcf0fefbbd48ede43d5cd37c50150e6d5f..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/hdi_composer.cpp +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#include "hdi_composer.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -HdiComposer::HdiComposer(std::unique_ptr pre, std::unique_ptr post) -{ - mPreComp = std::move(pre); - mPostComp = std::move(post); -} - -int32_t HdiComposer::Prepare(std::vector &layers, HdiLayer &clientLayer) -{ - int ret = mPreComp->SetLayers(layers, clientLayer); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("pre composition prepare failed")); - ret = mPostComp->SetLayers(layers, clientLayer); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("post composition prepare failed")); - return DISPLAY_SUCCESS; -} - -int32_t HdiComposer::Commit(bool modeSet) -{ - int ret = mPreComp->Apply(modeSet); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("pre composition apply failed")); - ret = mPostComp->Apply(modeSet); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("post composition apply failed")); - return DISPLAY_SUCCESS; -} -} // OHOS -} // HDI -} // DISPLAY diff --git a/hardware/display/src/display_device/hdi_composer.h b/hardware/display/src/display_device/hdi_composer.h deleted file mode 100644 index a3b69de50dd58f1af8317533bf1ce9ab4fb23e38..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/hdi_composer.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef HDI_COMPOSER_H -#define HDI_COMPOSER_H -#include -#include -#include "hdi_layer.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -class HdiComposition { -public: - HdiComposition() {} - virtual int32_t Init() - { - return DISPLAY_SUCCESS; - }; - virtual int32_t SetLayers(std::vector &layers, HdiLayer &clientLayer) - { - return DISPLAY_SUCCESS; - } - virtual int32_t Apply(bool modeSet) - { - return DISPLAY_SUCCESS; - } - virtual ~HdiComposition() {} - -protected: - std::vector mCompLayers; -}; - -class HdiComposer { -public: - HdiComposer(std::unique_ptr pre, std::unique_ptr post); - virtual ~HdiComposer() {}; - int32_t Prepare(std::vector &layers, HdiLayer &clientLayer); - int32_t Commit(bool modeSet); - HdiComposition *GetPreCompostion() - { - return mPreComp.get(); - } - HdiComposition *GetPostCompostion() - { - return mPostComp.get(); - } - -private: - std::unique_ptr mPreComp; - std::unique_ptr mPostComp; -}; -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY - -#endif // HDI_COMPOSER_H \ No newline at end of file diff --git a/hardware/display/src/display_device/hdi_device_common.h b/hardware/display/src/display_device/hdi_device_common.h deleted file mode 100644 index c5ceaf092a29ef909e045ffa8916668e69910c67..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/hdi_device_common.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef HDI_DEVICE_COMMON_H -#define HDI_DEVICE_COMMON_H -#include -#include -#include "display_type.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -const int32_t INVALID_MODE_ID = -1; -const uint32_t DRM_INVALID_ID = 0xFFFFFFFF; -template using IdMapPtr = std::unordered_map>; -class DrmEncoder; -class DrmCrtc; -class DrmPlane; -class DrmDevice; -class DrmConnector; -class VsyncCallBack; -class DrmVsyncWorker; -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY - -#endif // HDI_DEVICE_COMMON_H \ No newline at end of file diff --git a/hardware/display/src/display_device/hdi_device_interface.cpp b/hardware/display/src/display_device/hdi_device_interface.cpp deleted file mode 100644 index 4f79074b9f9516b224afa8b109cdb87a2c37a3be..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/hdi_device_interface.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#include "hdi_device_interface.h" -#include -#include "display_common.h" -#include "drm_device.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -std::vector> HdiDeviceInterface::DiscoveryDevice() -{ - DISPLAY_DEBUGLOG(); - int ret; - std::vector> devices; - std::shared_ptr drmDevice = DrmDevice::Create(); - if (!drmDevice) { - DISPLAY_LOGE("can not create drm device"); - } - ret = drmDevice->Init(); - if (ret == DISPLAY_SUCCESS) { - DISPLAY_DEBUGLOG("drm device init success"); - devices.push_back(std::move(drmDevice)); - } else { - DISPLAY_LOGE("drm device init failed"); - } - return devices; -} -} -} -} \ No newline at end of file diff --git a/hardware/display/src/display_device/hdi_device_interface.h b/hardware/display/src/display_device/hdi_device_interface.h deleted file mode 100644 index f0bb3cccd4137bf53a02ff7c48d03b77a5ba3eb4..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/hdi_device_interface.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef HDI_DEVICE_INTERFACE_H -#define HDI_DEVICE_INTERFACE_H -#include -#include -#include -#include "hdi_display.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -class HdiDeviceInterface { -public: - static std::vector> DiscoveryDevice(); - virtual std::unordered_map> DiscoveryDisplay() = 0; - virtual bool HandleHotplug(uint32_t dispId, bool plugIn) = 0; - virtual int32_t Init() = 0; - virtual void DeInit() = 0; - virtual ~HdiDeviceInterface() {}; -}; -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY - -#endif // HDI_DEVICE_INTERFACE_H \ No newline at end of file diff --git a/hardware/display/src/display_device/hdi_display.cpp b/hardware/display/src/display_device/hdi_display.cpp deleted file mode 100644 index cf229c0062b5c979319f374b189e0df7dd673b47..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/hdi_display.cpp +++ /dev/null @@ -1,233 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#include "hdi_display.h" -#include -#include "display_common.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -uint32_t HdiDisplay::mIdleId = 0; -std::unordered_set HdiDisplay::mIdSets; - -uint32_t HdiDisplay::GetIdleId() -{ - const uint32_t oldIdleId = mIdleId; - uint32_t id = INVALIDE_DISPLAY_ID; - // ensure the mIdleId not INVALIDE_DISPLAY_ID - mIdleId = mIdleId % INVALIDE_DISPLAY_ID; - do { - auto iter = mIdSets.find(mIdleId); - if (iter == mIdSets.end()) { - id = mIdleId; - break; - } - mIdleId = (mIdleId + 1) % INVALIDE_DISPLAY_ID; - } while (oldIdleId != mIdleId); - mIdSets.emplace(id); - mIdleId++; - return id; -} - - -int32_t HdiDisplay::Init() -{ - DISPLAY_DEBUGLOG(); - uint32_t id = GetIdleId(); - DISPLAY_CHK_RETURN((id == INVALIDE_DISPLAY_ID), DISPLAY_FAILURE, DISPLAY_LOGE("have no id to used")); - mId = id; - auto layer = CreateHdiLayer(LAYER_TYPE_GRAPHIC); - DISPLAY_CHK_RETURN((layer.get() == nullptr), DISPLAY_FAILURE, DISPLAY_LOGE("can not create hdi layer for client")); - mClientLayer = std::move(layer); - DISPLAY_DEBUGLOG("the id is %{public}d", id); - return DISPLAY_SUCCESS; -} - - -HdiDisplay::~HdiDisplay() -{ - mIdSets.erase(mId); -} - -int32_t HdiDisplay::SetLayerZorder(uint32_t layerId, uint32_t zorder) -{ - DISPLAY_DEBUGLOG("layerId : %{public}d", layerId); - auto iter = mLayersMap.find(layerId); - DISPLAY_CHK_RETURN((iter == mLayersMap.end()), DISPLAY_FAILURE, - DISPLAY_LOGE("can not find the layer %{public}d", layerId)); - auto layer = mLayersMap[layerId].get(); - if (layer->GetZorder() == zorder) { - DISPLAY_DEBUGLOG("zorder no change layerId %{public}d, zorder %{public}d", layerId, zorder); - return DISPLAY_SUCCESS; - } - // reset to sort - auto zRange = mLayers.equal_range(layer); - DISPLAY_DEBUGLOG("zorder range : zRange.first %{public}p zRange.second %{public}p", *zRange.first, *zRange.second); - for (auto c = zRange.first; c != zRange.second; c++) { - if (*c == layer) { - mLayers.erase(c); - break; - } - } - layer->SetLayerZorder(zorder); - mLayers.emplace(layer); - return DISPLAY_SUCCESS; -} - -int32_t HdiDisplay::CreateLayer(const LayerInfo *layerInfo, uint32_t *layerId) -{ - DISPLAY_DEBUGLOG(); - int ret; - DISPLAY_CHK_RETURN((layerInfo == nullptr), DISPLAY_PARAM_ERR, DISPLAY_LOGE("LayerInfo is null")); - DISPLAY_CHK_RETURN((layerId == nullptr), DISPLAY_PARAM_ERR, DISPLAY_LOGE("layerId is null")); - auto layer = CreateHdiLayer(layerInfo->type); - DISPLAY_CHK_RETURN((layer.get() == nullptr), DISPLAY_FAILURE, DISPLAY_LOGE("can not create hdi layer")); - ret = layer->Init(); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("Layer Init failed")); - *layerId = layer->GetId(); - mLayers.insert(layer.get()); - mLayersMap.emplace(layer->GetId(), std::move(layer)); - DISPLAY_DEBUGLOG("mLayers size %{public}zu", mLayers.size()); - DISPLAY_DEBUGLOG("mLayerMap size %{public}zu", mLayersMap.size()); - return DISPLAY_SUCCESS; -} - -std::unique_ptr HdiDisplay::CreateHdiLayer(LayerType type) -{ - DISPLAY_DEBUGLOG(); - return std::make_unique(type); -} - - -int32_t HdiDisplay::CloseLayer(uint32_t layerId) -{ - DISPLAY_DEBUGLOG("layerId %{public}d", layerId); - auto iter = mLayersMap.find(layerId); - DISPLAY_CHK_RETURN((iter == mLayersMap.end()), DISPLAY_FAILURE, - DISPLAY_LOGE("can not find the layer id %{public}d", layerId)); - mLayers.erase(iter->second.get()); - mLayersMap.erase(layerId); - return DISPLAY_SUCCESS; -} - -int32_t HdiDisplay::GetDisplayCompChange(uint32_t *num, uint32_t *layers, int32_t *type) -{ - DISPLAY_CHK_RETURN((num == nullptr), DISPLAY_FAILURE, DISPLAY_LOGE("the num is nullptr")); - *num = mChangeLayers.size(); - if ((layers == nullptr) && (type == nullptr)) { - return DISPLAY_SUCCESS; - } - DISPLAY_DEBUGLOG("set the layers and type"); - for (uint32_t i = 0; i < mChangeLayers.size(); i++) { - HdiLayer *layer = mChangeLayers[i]; - if (layers != nullptr) { - *(layers + i) = layer->GetId(); - } - if (type != nullptr) { - *(type + i) = layer->GetCompositionType(); - } - } - return DISPLAY_SUCCESS; -} - -int32_t HdiDisplay::GetDisplayReleaseFence(uint32_t *num, uint32_t *layers, int32_t *fences) -{ - DISPLAY_CHK_RETURN((num == nullptr), DISPLAY_FAILURE, DISPLAY_LOGE("the num is nullptr")); - *num = mLayers.size(); - if ((layers == nullptr) && (fences == nullptr)) { - return DISPLAY_SUCCESS; - } - DISPLAY_DEBUGLOG("set the layer fences"); - int i = 0; - for (auto layer : mLayers) { - if (layers != nullptr) { - *(layers + i) = layer->GetId(); - } - if (fences != nullptr) { - *(fences + i) = dup(layer->GetReleaseFenceFd()); - } - DISPLAY_DEBUGLOG("layer id %{public}d fencefd %{public}d", layer->GetId(), layer->GetReleaseFenceFd()); - i++; - } - return DISPLAY_SUCCESS; -} - -int32_t HdiDisplay::PrepareDisplayLayers(bool *needFlushFb) -{ - DISPLAY_DEBUGLOG(); - mChangeLayers.clear(); - std::vector layers; - uint32_t topZpos = 3; - for (auto c : mLayers) { - layers.push_back(c); - } - DISPLAY_DEBUGLOG(" mLayers size %{public}zu layers size %{public}zu", mLayers.size(), layers.size()); - - /* Set the target layer to the top. - * It would not by cover by other layer. - */ - mClientLayer->SetLayerZorder(topZpos); - - mComposer->Prepare(layers, *mClientLayer); - // get the change layers - for (auto &layer : layers) { - if (layer->GetDeviceSelect() != layer->GetCompositionType()) { - DISPLAY_DEBUGLOG("layer change"); - layer->SetLayerCompositionType(layer->GetDeviceSelect()); - } - mChangeLayers.push_back(layer); - } - *needFlushFb = true; - return DISPLAY_SUCCESS; -} - -int32_t HdiDisplay::Commit(int32_t *fence) -{ - DISPLAY_DEBUGLOG(); - mComposer->Commit(false); - *fence = dup(mClientLayer->GetReleaseFenceFd()); - DISPLAY_DEBUGLOG("the release fence is %{public}d", *fence); - return DISPLAY_SUCCESS; -} - -int32_t HdiDisplay::SetDisplayClientBuffer(const BufferHandle *buffer, int32_t fence) -{ - mClientLayer->SetLayerBuffer(buffer, fence); - return DISPLAY_SUCCESS; -} - -HdiLayer *HdiDisplay::GetHdiLayer(uint32_t id) -{ - DISPLAY_DEBUGLOG("id : %{public}d", id); - auto iter = mLayersMap.find(id); - DISPLAY_CHK_RETURN((iter == mLayersMap.end()), nullptr, DISPLAY_LOGE("can not find the layer %{public}d", id)); - return iter->second.get(); -} - -VsyncCallBack::VsyncCallBack(VBlankCallback cb, void *data, uint32_t displayId) : mVBlankCb(cb), - mData(data), mPipe(displayId) -{ - DISPLAY_DEBUGLOG("VsyncCallBack %{public}p", cb); -} - -void VsyncCallBack::Vsync(unsigned int sequence, uint64_t ns) -{ - DISPLAY_CHK_RETURN_NOT_VALUE((mVBlankCb == nullptr), DISPLAY_LOGE("the callback is nullptr")); - mVBlankCb(sequence, ns, mData); -} -} -} -} diff --git a/hardware/display/src/display_device/hdi_display.h b/hardware/display/src/display_device/hdi_display.h deleted file mode 100644 index 277b55cfbb345ae6db02555dabe5bdee21ba8803..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/hdi_display.h +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef HDI_DISPLAY_H -#define HDI_DISPLAY_H -#include -#include -#include -#include -#include "display_device.h" -#include "hdi_composer.h" -#include "hdi_layer.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -const uint32_t INVALIDE_DISPLAY_ID = 0xffffffff; -const uint32_t DISPLAY_TYPE_DRM = (1 << 31); - -class VsyncCallBack { -public: - VsyncCallBack(VBlankCallback cb, void *data, uint32_t pipe); - virtual void Vsync(unsigned int sequence, uint64_t ns); - virtual ~VsyncCallBack() {} - uint32_t GetPipe() - { - return mPipe; - } -private: - VBlankCallback mVBlankCb; - void *mData; - uint32_t mPipe; -}; - - -class HdiDisplay { -public: - uint32_t GetId() const - { - return mId; - } - virtual int32_t Init(); - virtual void DeInit() {} - HdiDisplay() {} - virtual ~HdiDisplay(); - virtual int32_t GetDisplayCapability(DisplayCapability *info) - { - return DISPLAY_NOT_SUPPORT; - } - virtual int32_t GetDisplaySupportedModes(uint32_t *num, DisplayModeInfo *modes) - { - return DISPLAY_NOT_SUPPORT; - } - virtual int32_t GetDisplayMode(uint32_t *modeId) - { - return DISPLAY_NOT_SUPPORT; - } - virtual int32_t SetDisplayMode(uint32_t modeId) - { - return DISPLAY_NOT_SUPPORT; - } - virtual int32_t GetDisplayPowerStatus(DispPowerStatus *status) - { - return DISPLAY_NOT_SUPPORT; - } - virtual int32_t SetDisplayPowerStatus(DispPowerStatus status) - { - return DISPLAY_NOT_SUPPORT; - } - virtual int32_t GetDisplayBacklight(uint32_t *value) - { - return DISPLAY_NOT_SUPPORT; - } - virtual int32_t SetDisplayBacklight(uint32_t value) - { - return DISPLAY_NOT_SUPPORT; - } - virtual int32_t CreateLayer(const LayerInfo *layerInfo, uint32_t *layerId); - virtual int32_t CloseLayer(uint32_t layerId); - virtual int32_t PrepareDisplayLayers(bool *needFlushFb); - virtual int32_t Commit(int32_t *fence); - virtual int32_t GetDisplayCompChange(uint32_t *num, uint32_t *layers, int32_t *type); - virtual int32_t SetLayerZorder(uint32_t layerId, uint32_t zorder); - virtual bool IsConnected() - { - return false; - } - virtual int32_t RegDisplayVBlankCallback(VBlankCallback cb, void *data) - { - return DISPLAY_NOT_SUPPORT; - } - virtual int32_t SetDisplayVsyncEnabled(bool enabled) - { - return DISPLAY_NOT_SUPPORT; - } - virtual int32_t GetDisplayReleaseFence(uint32_t *num, uint32_t *layers, int32_t *fences); - virtual int32_t SetDisplayClientBuffer(const BufferHandle *buffer, int32_t fence); - virtual int32_t WaitForVBlank(uint64_t *ns) - { - return DISPLAY_NOT_SUPPORT; - } - HdiLayer *GetHdiLayer(uint32_t id); - -protected: - virtual std::unique_ptr CreateHdiLayer(LayerType type); - std::unique_ptr mComposer; - - static uint32_t GetIdleId(); - static uint32_t mIdleId; - static std::unordered_set mIdSets; - uint32_t mId = INVALIDE_DISPLAY_ID; - std::unordered_map> mLayersMap; - std::multiset mLayers; - std::unique_ptr mClientLayer; - std::vector mChangeLayers; -}; -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY - -#endif // HDI_DISPLAY_H diff --git a/hardware/display/src/display_device/hdi_drm_composition.cpp b/hardware/display/src/display_device/hdi_drm_composition.cpp deleted file mode 100755 index cfeb1fc5979df28b248dbdd5676cfe44bb7af896..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/hdi_drm_composition.cpp +++ /dev/null @@ -1,298 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#include "hdi_drm_composition.h" -#include -#include "hdi_drm_layer.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -HdiDrmComposition::HdiDrmComposition(const std::shared_ptr &connector, - const std::shared_ptr &crtc, - const std::shared_ptr &drmDevice) - : mDrmDevice(drmDevice), mConnector(connector), mCrtc(crtc) -{ - DISPLAY_DEBUGLOG(); -} - -int32_t HdiDrmComposition::Init() -{ - DISPLAY_DEBUGLOG(); - mPrimPlanes.clear(); - mOverlayPlanes.clear(); - mPlanes.clear(); - DISPLAY_CHK_RETURN((mCrtc == nullptr), DISPLAY_FAILURE, DISPLAY_LOGE("crtc is null")); - DISPLAY_CHK_RETURN((mConnector == nullptr), DISPLAY_FAILURE, DISPLAY_LOGE("connector is null")); - DISPLAY_CHK_RETURN((mDrmDevice == nullptr), DISPLAY_FAILURE, DISPLAY_LOGE("drmDevice is null")); - mPrimPlanes = mDrmDevice->GetDrmPlane(mCrtc->GetPipe(), DRM_PLANE_TYPE_PRIMARY); - mOverlayPlanes = mDrmDevice->GetDrmPlane(mCrtc->GetPipe(), DRM_PLANE_TYPE_OVERLAY); - mPlanes.insert(mPlanes.end(), mPrimPlanes.begin(), mPrimPlanes.end()); - mPlanes.insert(mPlanes.end(), mOverlayPlanes.begin(), mOverlayPlanes.end()); - return DISPLAY_SUCCESS; -} - -int32_t HdiDrmComposition::SetLayers(std::vector &layers, HdiLayer &clientLayer) -{ - // now we do not surpport present direct - DISPLAY_DEBUGLOG(); - mCompLayers.clear(); - mCompLayers.push_back(&clientLayer); - return DISPLAY_SUCCESS; -} - -int32_t HdiDrmComposition::SetCrtcProperty(DrmPlane &drmPlane, - drmModeAtomicReqPtr pset, - int32_t bufferW, - int32_t bufferH) -{ - int ret; - - ret = drmModeAtomicAddProperty(pset, drmPlane.GetId(), drmPlane.GetPropCrtc_xId(), 0); - DISPLAY_LOGI("set the fb planeid %{public}d, GetPropCrtc_xId %{public}d, crop.x %{public}d", drmPlane.GetId(), - drmPlane.GetPropCrtc_xId(), 0); - DISPLAY_CHK_RETURN((ret < 0), DISPLAY_FAILURE, DISPLAY_LOGE("set the fb planeid fialed errno : %{public}d", errno)); - - ret = drmModeAtomicAddProperty(pset, drmPlane.GetId(), drmPlane.GetPropCrtc_yId(), 0); - DISPLAY_LOGI("set the fb planeid %{public}d, GetPropCrtc_yId %{public}d, crop.y %{public}d", drmPlane.GetId(), - drmPlane.GetPropCrtc_yId(), 0); - DISPLAY_CHK_RETURN((ret < 0), DISPLAY_FAILURE, DISPLAY_LOGE("set the fb planeid fialed errno : %{public}d", errno)); - - ret = drmModeAtomicAddProperty(pset, drmPlane.GetId(), drmPlane.GetPropCrtc_wId(), bufferW); - DISPLAY_LOGI("set the fb planeid %{public}d, GetPropCrtc_wId %{public}d, crop.w %{public}d", drmPlane.GetId(), - drmPlane.GetPropCrtc_wId(), bufferW); - DISPLAY_CHK_RETURN((ret < 0), DISPLAY_FAILURE, DISPLAY_LOGE("set the fb planeid fialed errno : %{public}d", errno)); - - ret = drmModeAtomicAddProperty(pset, drmPlane.GetId(), drmPlane.GetPropCrtc_hId(), bufferH); - DISPLAY_LOGI("set the fb planeid %{public}d, GetPropCrtc_hId %{public}d, crop.h %{public}d", drmPlane.GetId(), - drmPlane.GetPropCrtc_xId(), bufferH); - DISPLAY_CHK_RETURN((ret < 0), DISPLAY_FAILURE, DISPLAY_LOGE("set the fb planeid fialed errno : %{public}d", errno)); - - return DISPLAY_SUCCESS; -} - -int32_t HdiDrmComposition::SetSrcProperty(DrmPlane &drmPlane, - drmModeAtomicReqPtr pset, - int32_t bufferW, - int32_t bufferH) -{ - int ret; - - ret = drmModeAtomicAddProperty(pset, drmPlane.GetId(), drmPlane.GetPropSrc_xId(), 0<<16); // 16:shift left 16 bits - DISPLAY_LOGI("set the fb planeid %{public}d, GetPropSrc_xId %{public}d, displayRect.x %{public}d", drmPlane.GetId(), - drmPlane.GetPropSrc_xId(), 0); - DISPLAY_CHK_RETURN((ret < 0), DISPLAY_FAILURE, DISPLAY_LOGE("set the fb planeid fialed errno : %{public}d", errno)); - - ret = drmModeAtomicAddProperty(pset, drmPlane.GetId(), drmPlane.GetPropSrc_yId(), 0<<16); // 16:shift left 16 bits - DISPLAY_LOGI("set the fb planeid %{public}d, GetPropSrc_yId %{public}d, displayRect.y %{public}d", drmPlane.GetId(), - drmPlane.GetPropSrc_yId(), 0); - DISPLAY_CHK_RETURN((ret < 0), DISPLAY_FAILURE, DISPLAY_LOGE("set the fb planeid fialed errno : %{public}d", errno)); - - ret = drmModeAtomicAddProperty(pset, drmPlane.GetId(), drmPlane.GetPropSrc_wId(), - bufferW<<16); // 16:shift left 16 bits - DISPLAY_LOGI("set the fb planeid %{public}d, GetPropCrtc_wId %{public}d, displayRect.w %{public}d", - drmPlane.GetId(), drmPlane.GetPropSrc_wId(), bufferW); - DISPLAY_CHK_RETURN((ret < 0), DISPLAY_FAILURE, DISPLAY_LOGE("set the fb planeid fialed errno : %{public}d", errno)); - - ret = drmModeAtomicAddProperty(pset, drmPlane.GetId(), drmPlane.GetPropSrc_hId(), - bufferH<<16); // 16:shift left 16 bits - DISPLAY_LOGI("set the fb planeid %{public}d, GetPropSrc_hId %{public}d, displayRect.h %{public}d", drmPlane.GetId(), - drmPlane.GetPropSrc_hId(), bufferH); - DISPLAY_CHK_RETURN((ret < 0), DISPLAY_FAILURE, DISPLAY_LOGE("set the fb planeid fialed errno : %{public}d", errno)); - - return DISPLAY_SUCCESS; -} - -int32_t HdiDrmComposition::ApplyPlane(HdiDrmLayer &layer, - HdiLayer &hlayer, - DrmPlane &drmPlane, - drmModeAtomicReqPtr pset) -{ - int ret; - int fenceFd = layer.GetAcquireFenceFd(); - int propId = drmPlane.GetPropFenceInId(); - HdiLayerBuffer *layerBuffer = hlayer.GetCurrentBuffer(); - int32_t bufferW = layerBuffer->GetWight(); - int32_t bufferH = layerBuffer->GetHeight(); - - DISPLAY_DEBUGLOG(); - if (propId != 0) { - DISPLAY_LOGI("set the fence in prop"); - if (fenceFd >= 0) { - ret = drmModeAtomicAddProperty(pset, drmPlane.GetId(), propId, fenceFd); - DISPLAY_DEBUGLOG("set the IfenceProp plane id %{public}d, propId %{public}d, fenceFd %{public}d", - drmPlane.GetId(), propId, fenceFd); - DISPLAY_CHK_RETURN((ret < 0), DISPLAY_FAILURE, DISPLAY_LOGE("set IN_FENCE_FD failed")); - } - } - - ret = SetCrtcProperty(drmPlane, pset, bufferW, bufferH); - DISPLAY_CHK_RETURN((ret < 0), DISPLAY_FAILURE, DISPLAY_LOGE("set Crtc fialed errno : %{public}d", errno)); - - ret = SetSrcProperty(drmPlane, pset, bufferW, bufferH); - DISPLAY_CHK_RETURN((ret < 0), DISPLAY_FAILURE, DISPLAY_LOGE("set Src fialed errno : %{public}d", errno)); - - ret = drmModeAtomicAddProperty(pset, drmPlane.GetId(), drmPlane.GetPropZposId(), layer.GetZorder()); - DISPLAY_LOGI("set the fb planeid %{public}d, GetPropZposId %{public}d, zpos %{public}d", drmPlane.GetId(), - drmPlane.GetPropZposId(), layer.GetZorder()); - DISPLAY_CHK_RETURN((ret < 0), DISPLAY_FAILURE, DISPLAY_LOGE("set the zpos fialed errno : %{public}d", errno)); - - // set fb id - DrmGemBuffer *gemBuffer = layer.GetGemBuffer(); - DISPLAY_CHK_RETURN((gemBuffer == nullptr), DISPLAY_FAILURE, DISPLAY_LOGE("current gemBuffer is nullptr")); - DISPLAY_CHK_RETURN((!gemBuffer->IsValid()), DISPLAY_FAILURE, DISPLAY_LOGE("the DrmGemBuffer is invalid")); - ret = drmModeAtomicAddProperty(pset, drmPlane.GetId(), drmPlane.GetPropFbId(), gemBuffer->GetFbId()); - DISPLAY_DEBUGLOG("set the fb planeid %{public}d, propId %{public}d, fbId %{public}d", drmPlane.GetId(), - drmPlane.GetPropFbId(), gemBuffer->GetFbId()); - DISPLAY_CHK_RETURN((ret < 0), DISPLAY_FAILURE, DISPLAY_LOGE("set fb id fialed errno : %{public}d", errno)); - - // set crtc id - ret = drmModeAtomicAddProperty(pset, drmPlane.GetId(), drmPlane.GetPropCrtcId(), mCrtc->GetId()); - DISPLAY_DEBUGLOG("set the crtc planeId %{public}d, propId %{public}d, crtcId %{public}d", drmPlane.GetId(), - drmPlane.GetPropCrtcId(), mCrtc->GetId()); - DISPLAY_CHK_RETURN((ret < 0), DISPLAY_FAILURE, DISPLAY_LOGE("set crtc id fialed errno : %{public}d", errno)); - return DISPLAY_SUCCESS; -} - -int32_t HdiDrmComposition::UpdateMode(std::unique_ptr &modeBlock, drmModeAtomicReq &pset) -{ - // set the mode - DISPLAY_LOGI(); - if (mCrtc->NeedModeSet()) { - modeBlock = mConnector->GetModeBlockFromId(mCrtc->GetActiveModeId()); - if ((modeBlock != nullptr) && (modeBlock->GetBlockId() != DRM_INVALID_ID)) { - // set to active - DISPLAY_DEBUGLOG("set crtc to active"); - int ret = drmModeAtomicAddProperty(&pset, mCrtc->GetId(), mCrtc->GetActivePropId(), 1); - DISPLAY_CHK_RETURN((ret < 0), DISPLAY_FAILURE, - DISPLAY_LOGE("can not add the active prop errno %{public}d", errno)); - - // set the mode id - DISPLAY_DEBUGLOG("set the mode"); - ret = drmModeAtomicAddProperty(&pset, mCrtc->GetId(), mCrtc->GetModePropId(), modeBlock->GetBlockId()); - DISPLAY_LOGI("set the mode planeId %{public}d, propId %{public}d, GetBlockId: %{public}d", mCrtc->GetId(), - mCrtc->GetModePropId(), modeBlock->GetBlockId()); - DISPLAY_CHK_RETURN((ret < 0), DISPLAY_FAILURE, - DISPLAY_LOGE("can not add the mode prop errno %{public}d", errno)); - ret = drmModeAtomicAddProperty(&pset, mConnector->GetId(), mConnector->GetPropCrtcId(), mCrtc->GetId()); - DISPLAY_LOGI("set the connector id: %{public}d, propId %{public}d, crtcId %{public}d", mConnector->GetId(), - mConnector->GetPropCrtcId(), mCrtc->GetId()); - DISPLAY_CHK_RETURN((ret < 0), DISPLAY_FAILURE, - DISPLAY_LOGE("can not add the crtc id prop %{public}d", errno)); - } - } - return DISPLAY_SUCCESS; -} - -int32_t HdiDrmComposition::RemoveUnusePlane(drmModeAtomicReqPtr pset) -{ - int ret = 0; - /* Remove useless planes from the drm */ - for (uint32_t j = 0; j < mPlanes.size(); j++) { - auto &drmPlane = mPlanes[j]; - if ((static_cast(drmPlane->GetWinType()) & mCrtc->GetPlaneMask()) && drmPlane->GetPipe() == 0) { - DISPLAY_LOGI("no used plane %{public}s id %{public}d", drmPlane->GetName().c_str(), drmPlane->GetId()); - ret = drmModeAtomicAddProperty(pset, drmPlane->GetId(), drmPlane->GetPropFbId(), 0); - ret = drmModeAtomicAddProperty(pset, drmPlane->GetId(), drmPlane->GetPropFbId(), 0); - drmPlane->UnBindPipe(); - } - } - return DISPLAY_SUCCESS; -} - -int32_t HdiDrmComposition::FindPlaneAndApply(drmModeAtomicReqPtr pset) -{ - int32_t ret = 0; - for (uint32_t i = 0; i < mCompLayers.size(); i++) { - HdiDrmLayer *layer = static_cast(mCompLayers[i]); - HdiLayer *hlayer = mCompLayers[i]; - for (uint32_t j = 0; j < mPlanes.size(); j++) { - auto &drmPlane = mPlanes[j]; - if (drmPlane->GetPipe() != 0 && drmPlane->GetPipe() != (1 << mCrtc->GetPipe())) { - DISPLAY_LOGI("plane %{public}d used pipe %{public}d crtc pipe %{public}d", drmPlane->GetId(), - drmPlane->GetPipe(), mCrtc->GetPipe()); - continue; - } - /* Check whether the plane belond to the crtc */ - if (!(static_cast(drmPlane->GetWinType()) & mCrtc->GetPlaneMask())) { - continue; - } - DISPLAY_LOGI("use plane %{public}d WinType %{public}x crtc %{public}d PlaneMask %{public}x", - drmPlane->GetId(), drmPlane->GetWinType(), mCrtc->GetId(), mCrtc->GetPlaneMask()); - - if (drmPlane->GetCrtcId() == mCrtc->GetId() || drmPlane->GetCrtcId() == 0) { - ret = ApplyPlane(*layer, *hlayer, *drmPlane, pset); - if (ret != DISPLAY_SUCCESS) { - DISPLAY_LOGE("apply plane failed"); - break; - } - /* mark the plane is used by crtc */ - drmPlane->BindToPipe(1 << mCrtc->GetPipe()); - break; - } - } - } - return DISPLAY_SUCCESS; -} - -int32_t HdiDrmComposition::Apply(bool modeSet) -{ - uint64_t crtcOutFence = -1; - int ret = 0; - std::unique_ptr modeBlock; - int drmFd = mDrmDevice->GetDrmFd(); - - DISPLAY_LOGI("mPlane size: %{public}zd mCompLayers size: %{public}zd", mPlanes.size(), mCompLayers.size()); - DISPLAY_CHK_RETURN((mPlanes.size() < mCompLayers.size()), DISPLAY_FAILURE, DISPLAY_LOGE("plane not enough")); - drmModeAtomicReqPtr pset = drmModeAtomicAlloc(); - DISPLAY_CHK_RETURN((pset == nullptr), DISPLAY_NULL_PTR, - DISPLAY_LOGE("drm atomic alloc failed errno %{public}d", errno)); - AtomicReqPtr atomicReqPtr = AtomicReqPtr(pset); - - // set the outFence property - ret = drmModeAtomicAddProperty(atomicReqPtr.Get(), mCrtc->GetId(), mCrtc->GetOutFencePropId(), - (uint64_t)&crtcOutFence); - - DISPLAY_DEBUGLOG("Apply Set OutFence crtc id: %{public}d, fencePropId %{public}d", mCrtc->GetId(), - mCrtc->GetOutFencePropId()); - DISPLAY_CHK_RETURN((ret < 0), DISPLAY_FAILURE, DISPLAY_LOGE("set the outfence property of crtc failed ")); - - // set the plane info. - DISPLAY_LOGI("mCompLayers size %{public}zd", mCompLayers.size()); - DISPLAY_LOGI("crtc id %{public}d connect id %{public}d encoder id %{public}d", mCrtc->GetId(), - mConnector->GetId(), mConnector->GetEncoderId()); - - /* Bind the plane not used by other crtcs to the crtc. */ - FindPlaneAndApply(atomicReqPtr.Get()); - /* Remove useless planes from the drm */ - RemoveUnusePlane(atomicReqPtr.Get()); - - ret = UpdateMode(modeBlock, *(atomicReqPtr.Get())); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("update mode failed")); - uint32_t flags = DRM_MODE_ATOMIC_ALLOW_MODESET; - - ret = drmModeAtomicCommit(drmFd, atomicReqPtr.Get(), flags, nullptr); - DISPLAY_CHK_RETURN((ret != 0), DISPLAY_FAILURE, - DISPLAY_LOGE("drmModeAtomicCommit failed %{public}d errno %{public}d", ret, errno)); - // set the release fence - for (auto layer : mCompLayers) { - layer->SetReleaseFence(static_cast(crtcOutFence)); - } - - return DISPLAY_SUCCESS; -} -} // OHOS -} // HDI -} // DISPLAY diff --git a/hardware/display/src/display_device/hdi_drm_composition.h b/hardware/display/src/display_device/hdi_drm_composition.h deleted file mode 100755 index 042ff3c49fb38009123a625bbb0a715b0d9cc776..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/hdi_drm_composition.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef HDI_DRM_COMPOSITION_H -#define HDI_DRM_COMPOSITION_H -#include -#include -#include -#include -#include "drm_device.h" -#include "hdi_composer.h" -#include "hdi_device_common.h" -#include "hdi_drm_layer.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -class AtomicReqPtr { -public: - explicit AtomicReqPtr(drmModeAtomicReqPtr ptr) : mPtr(ptr) {} - virtual ~AtomicReqPtr() - { - if (mPtr != nullptr) - drmModeAtomicFree(mPtr); - } - drmModeAtomicReqPtr Get() const - { - return mPtr; - } - -private: - drmModeAtomicReqPtr mPtr; -}; - -class HdiDrmComposition : public HdiComposition { -public: - HdiDrmComposition(const std::shared_ptr &connector, - const std::shared_ptr &crtc, - const std::shared_ptr &drmDevice); - ~HdiDrmComposition() override {} - int32_t Init() override; - int32_t SetLayers(std::vector &layers, HdiLayer &clientLayer) override; - int32_t Apply(bool modeSet) override; - int32_t UpdateMode(std::unique_ptr &modeBlock, drmModeAtomicReq &pset); - -private: - int32_t ApplyPlane(HdiDrmLayer &layer, HdiLayer &hlayer, DrmPlane &drmPlane, drmModeAtomicReqPtr pset); - int32_t SetSrcProperty(DrmPlane &drmPlane, drmModeAtomicReqPtr pset, int32_t bufferW, int32_t bufferH); - int32_t SetCrtcProperty(DrmPlane &drmPlane, drmModeAtomicReqPtr pset, int32_t bufferW, int32_t bufferH); - int32_t RemoveUnusePlane(drmModeAtomicReqPtr pset); - int32_t FindPlaneAndApply(drmModeAtomicReqPtr pset); - std::shared_ptr mDrmDevice; - std::shared_ptr mConnector; - std::shared_ptr mCrtc; - std::vector> mPrimPlanes; - std::vector> mOverlayPlanes; - std::vector> mPlanes; -}; -} // OHOS -} // HDI -} // DISPLAY - -#endif // HDI_DRM_COMPOSITION_H diff --git a/hardware/display/src/display_device/hdi_drm_layer.cpp b/hardware/display/src/display_device/hdi_drm_layer.cpp deleted file mode 100644 index 5cb701fead6d885993de81477d0e5d7c56781b65..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/hdi_drm_layer.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#include "hdi_drm_layer.h" -#include -#include -#include "drm_device.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -DrmGemBuffer::DrmGemBuffer(int drmFd, HdiLayerBuffer &hdl) : mDrmFd(drmFd) -{ - DISPLAY_DEBUGLOG(); - Init(mDrmFd, hdl); -} - -void DrmGemBuffer::Init(int drmFd, HdiLayerBuffer &hdl) -{ - int ret; - const int MAX_COUNT = 4; - uint32_t pitches[MAX_COUNT] = {0}; - uint32_t gemHandles[MAX_COUNT] = {0}; - uint32_t offsets[MAX_COUNT] = {0}; - DISPLAY_DEBUGLOG("hdl %{public}" PRIx64 "", hdl.GetPhysicalAddr()); - DISPLAY_CHK_RETURN_NOT_VALUE((drmFd < 0), DISPLAY_LOGE("can not init drmfd %{public}d", drmFd)); - mDrmFormat = DrmDevice::ConvertToDrmFormat(static_cast(hdl.GetFormat())); - ret = drmPrimeFDToHandle(drmFd, hdl.GetFb(), &mGemHandle); - DISPLAY_CHK_RETURN_NOT_VALUE((ret != 0), DISPLAY_LOGE("can not get handle errno %{public}d", errno)); - - pitches[0] = hdl.GetStride(); - gemHandles[0] = mGemHandle; - offsets[0] = 0; - ret = drmModeAddFB2(drmFd, hdl.GetWight(), hdl.GetHeight(), mDrmFormat, gemHandles, pitches, offsets, &mFdId, 0); - DISPLAY_DEBUGLOG("mGemHandle %{public}d mFdId %{public}d", mGemHandle, mFdId); - DISPLAY_DEBUGLOG("w: %{public}d h: %{public}d mDrmFormat : %{public}d gemHandles: %{public}d pitches: %{public}d " - "offsets: %{public}d", - hdl.GetWight(), hdl.GetHeight(), mDrmFormat, gemHandles[0], pitches[0], offsets[0]); - DISPLAY_CHK_RETURN_NOT_VALUE((ret != 0), DISPLAY_LOGE("can not add fb errno %{public}d", errno)); -} - -DrmGemBuffer::~DrmGemBuffer() -{ - DISPLAY_DEBUGLOG(); - if (mFdId) { - if (drmModeRmFB(mDrmFd, mFdId)) { - DISPLAY_LOGE("can not free fdid %{public}d errno %{public}d", mFdId, errno); - } - } - - if (mGemHandle) { - struct drm_gem_close gemClose = { 0 }; - gemClose.handle = mGemHandle; - if (drmIoctl(mDrmFd, DRM_IOCTL_GEM_CLOSE, &gemClose)) { - DISPLAY_LOGE("can not free gem handle %{public}d errno : %{public}d", mGemHandle, errno); - } - } -} - -bool DrmGemBuffer::IsValid() -{ - DISPLAY_DEBUGLOG(); - return (mGemHandle != INVALID_DRM_ID) && (mFdId != INVALID_DRM_ID); -} - -DrmGemBuffer *HdiDrmLayer::GetGemBuffer() -{ - DISPLAY_DEBUGLOG(); - std::unique_ptr ptr = std::make_unique(DrmDevice::GetDrmFd(), *GetCurrentBuffer()); - mLastBuffer = std::move(mCurrentBuffer); - mCurrentBuffer = std::move(ptr); - return mCurrentBuffer.get(); -} -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY diff --git a/hardware/display/src/display_device/hdi_drm_layer.h b/hardware/display/src/display_device/hdi_drm_layer.h deleted file mode 100644 index 43ad767b4ef42a6f8921cb1f71c3e9cbe8c74630..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/hdi_drm_layer.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef HDI_DRM_LAYER_H -#define HDI_DRM_LAYER_H -#include -#include -#include "buffer_handle.h" -#include "display_common.h" -#include "drm_fourcc.h" -#include "hdi_layer.h" -#include "hdi_device_common.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -const int INVALID_DRM_ID = 0; -class DrmGemBuffer { -public: - DrmGemBuffer(int drmFd, HdiLayerBuffer &hdl); - virtual ~DrmGemBuffer(); - uint32_t GetFbId() const - { - return mFdId; - } - bool IsValid(); - -private: - void Init(int drmFd, HdiLayerBuffer &hdl); - uint32_t mGemHandle = 0; - uint32_t mFdId = 0; - int mDrmFd = -1; // the fd can not close. the other module will close it. - uint32_t mDrmFormat = DRM_FORMAT_INVALID; -}; - -class HdiDrmLayer : public HdiLayer { -public: - explicit HdiDrmLayer(LayerType type) : HdiLayer(type) {} - ~HdiDrmLayer() override {} - // Return value optimization - DrmGemBuffer *GetGemBuffer(); - -private: - std::unique_ptr mCurrentBuffer; - std::unique_ptr mLastBuffer; -}; -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY - -#endif // HDI_DRM_LAYER_H diff --git a/hardware/display/src/display_device/hdi_gfx_composition.cpp b/hardware/display/src/display_device/hdi_gfx_composition.cpp deleted file mode 100644 index 5b53fef257bb8745b8c7a173ac1bf9bc58bd8e0f..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/hdi_gfx_composition.cpp +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#include -#include -#include -#include "display_gfx.h" -#include "hdi_gfx_composition.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -int32_t HdiGfxComposition::Init(void) -{ - DISPLAY_DEBUGLOG(); - int32_t ret = GfxModuleInit(); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS) || (mGfxFuncs == nullptr), DISPLAY_FAILURE, - DISPLAY_LOGE("GfxModuleInit failed")); - ret = mGfxFuncs->InitGfx(); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("gfx init failed")); - return DISPLAY_SUCCESS; -} - -int32_t HdiGfxComposition::GfxModuleInit(void) -{ - DISPLAY_DEBUGLOG(); - mGfxModule = dlopen("libdisplay_gfx.z.so", RTLD_NOW | RTLD_NOLOAD); - if (mGfxModule != nullptr) { - DISPLAY_LOGI("Module '%{public}s' already loaded", "libdisplay_gfx.z.so"); - } else { - DISPLAY_LOGI("Loading module '%{public}s'", "libdisplay_gfx.z.so"); - mGfxModule = dlopen("libdisplay_gfx.z.so", RTLD_NOW); - if (mGfxModule == nullptr) { - DISPLAY_LOGE("Failed to load module: %{public}s", dlerror()); - return DISPLAY_FAILURE; - } - } - - using InitFunc = int32_t (*)(GfxFuncs **funcs); - InitFunc func = reinterpret_cast(dlsym(mGfxModule, "GfxInitialize")); - if (func == nullptr) { - DISPLAY_LOGE("Failed to lookup %{public}s function: %s", "GfxInitialize", dlerror()); - dlclose(mGfxModule); - return DISPLAY_FAILURE; - } - return func(&mGfxFuncs); -} - -int32_t HdiGfxComposition::GfxModuleDeinit(void) -{ - DISPLAY_DEBUGLOG(); - int32_t ret = DISPLAY_SUCCESS; - if (mGfxModule == nullptr) { - using DeinitFunc = int32_t (*)(GfxFuncs *funcs); - DeinitFunc func = reinterpret_cast(dlsym(mGfxModule, "GfxUninitialize")); - if (func == nullptr) { - DISPLAY_LOGE("Failed to lookup %{public}s function: %s", "GfxUninitialize", dlerror()); - } else { - ret = func(mGfxFuncs); - } - dlclose(mGfxModule); - } - return ret; -} - -bool HdiGfxComposition::CanHandle(HdiLayer &hdiLayer) -{ - DISPLAY_DEBUGLOG(); - (void)hdiLayer; - return true; -} - -int32_t HdiGfxComposition::SetLayers(std::vector &layers, HdiLayer &clientLayer) -{ - DISPLAY_DEBUGLOG("layers size %{public}zd", layers.size()); - mClientLayer = &clientLayer; - mCompLayers.clear(); - for (auto &layer : layers) { - if (CanHandle(*layer)) { - if ((layer->GetCompositionType() != COMPOSITION_VIDEO) && - (layer->GetCompositionType() != COMPOSITION_CURSOR)) { - layer->SetDeviceSelect(COMPOSITION_DEVICE); - } else { - layer->SetDeviceSelect(layer->GetCompositionType()); - } - mCompLayers.push_back(layer); - } - } - DISPLAY_DEBUGLOG("composer layers size %{public}zd", mCompLayers.size()); - return DISPLAY_SUCCESS; -} - -void HdiGfxComposition::InitGfxSurface(ISurface &iSurface, HdiLayerBuffer &buffer) -{ - iSurface.width = buffer.GetWight(); - iSurface.height = buffer.GetHeight(); - iSurface.phyAddr = buffer.GetFb(); // buffer.GetPhysicalAddr(); - iSurface.enColorFmt = (PixelFormat)buffer.GetFormat(); - iSurface.stride = buffer.GetStride(); - iSurface.bAlphaExt1555 = true; - iSurface.bAlphaMax255 = true; - iSurface.alpha0 = 0XFF; - iSurface.alpha1 = 0XFF; - DISPLAY_DEBUGLOG("iSurface fd %{public}d w:%{public}d h:%{public}d addr:0x%{public}" \ - PRIx64 " fmt:%{public}d stride:%{public}d", - buffer.GetFb(), iSurface.width, iSurface.height, - buffer.GetPhysicalAddr(), iSurface.enColorFmt, iSurface.stride); -} - -// now not handle the alpha of layer -int32_t HdiGfxComposition::BlitLayer(HdiLayer &src, HdiLayer &dst) -{ - ISurface srcSurface = { 0 }; - ISurface dstSurface = { 0 }; - GfxOpt opt = { 0 }; - DISPLAY_DEBUGLOG(); - HdiLayerBuffer *srcBuffer = src.GetCurrentBuffer(); - DISPLAY_CHK_RETURN((srcBuffer == nullptr), DISPLAY_NULL_PTR, DISPLAY_LOGE("the srcbuffer is null")); - DISPLAY_DEBUGLOG("init the src iSurface"); - InitGfxSurface(srcSurface, *srcBuffer); - - HdiLayerBuffer *dstBuffer = dst.GetCurrentBuffer(); - DISPLAY_CHK_RETURN((dstBuffer == nullptr), DISPLAY_FAILURE, DISPLAY_LOGE("can not get client layer buffer")); - DISPLAY_DEBUGLOG("init the dst iSurface"); - InitGfxSurface(dstSurface, *dstBuffer); - - opt.blendType = src.GetLayerBlenType(); - DISPLAY_DEBUGLOG("blendType %{public}d", opt.blendType); - opt.enPixelAlpha = true; - opt.enableScale = true; - - if (src.GetAlpha().enGlobalAlpha) { // is alpha is 0xff we not set it - opt.enGlobalAlpha = true; - srcSurface.alpha0 = src.GetAlpha().gAlpha; - DISPLAY_DEBUGLOG("src alpha %{public}x", src.GetAlpha().gAlpha); - } - opt.rotateType = src.GetTransFormType(); - DISPLAY_DEBUGLOG(" the roate type is %{public}d", opt.rotateType); - IRect crop = src.GetLayerCrop(); - IRect displayRect = src.GetLayerDisplayRect(); - DISPLAY_DEBUGLOG("crop x: %{public}d y : %{public}d w : %{public}d h: %{public}d", crop.x, crop.y, crop.w, crop.h); - DISPLAY_DEBUGLOG("displayRect x: %{public}d y : %{public}d w : %{public}d h : %{public}d", - displayRect.x, displayRect.y, displayRect.w, displayRect.h); - DISPLAY_CHK_RETURN(mGfxFuncs == nullptr, DISPLAY_FAILURE, DISPLAY_LOGE("Blit: mGfxFuncs is null")); - return mGfxFuncs->Blit(&srcSurface, &crop, &dstSurface, &displayRect, &opt); -} - -int32_t HdiGfxComposition::ClearRect(HdiLayer &src, HdiLayer &dst) -{ - ISurface dstSurface = { 0 }; - GfxOpt opt = { 0 }; - DISPLAY_DEBUGLOG(); - HdiLayerBuffer *dstBuffer = dst.GetCurrentBuffer(); - DISPLAY_CHK_RETURN((dstBuffer == nullptr), DISPLAY_FAILURE, DISPLAY_LOGE("can not get client layer buffer")); - InitGfxSurface(dstSurface, *dstBuffer); - IRect rect = src.GetLayerDisplayRect(); - DISPLAY_CHK_RETURN(mGfxFuncs == nullptr, DISPLAY_FAILURE, DISPLAY_LOGE("Rect: mGfxFuncs is null")); - return mGfxFuncs->FillRect(&dstSurface, &rect, 0, &opt); -} - -int32_t HdiGfxComposition::Apply(bool modeSet) -{ - int32_t ret; - DISPLAY_DEBUGLOG("composer layers size %{public}zd", mCompLayers.size()); - for (uint32_t i = 0; i < mCompLayers.size(); i++) { - HdiLayer *layer = mCompLayers[i]; - CompositionType compType = layer->GetCompositionType(); - switch (compType) { - case COMPOSITION_VIDEO: - ret = ClearRect(*layer, *mClientLayer); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, - DISPLAY_LOGE("clear layer %{public}d failed", i)); - break; - case COMPOSITION_DEVICE: - ret = BlitLayer(*layer, *mClientLayer); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, - DISPLAY_LOGE("blit layer %{public}d failed ", i)); - break; - default: - DISPLAY_LOGE("the gfx composition can not surpport the type %{public}d", compType); - break; - } - } - return DISPLAY_SUCCESS; -} -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY diff --git a/hardware/display/src/display_device/hdi_gfx_composition.h b/hardware/display/src/display_device/hdi_gfx_composition.h deleted file mode 100644 index d9654461d39a806aa9952be86d8a4ac327c90d60..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/hdi_gfx_composition.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef HDI_GFX_COMPOSITION_H -#define HDI_GFX_COMPOSITION_H -#include "display_gfx.h" -#include "hdi_composer.h" -namespace OHOS { -namespace HDI { -namespace DISPLAY { -class HdiGfxComposition : public HdiComposition { -public: - int32_t Init(void) override; - int32_t SetLayers(std::vector &layers, HdiLayer &clientLayer) override; - int32_t Apply(bool modeSet) override; - ~HdiGfxComposition() override - { - (void)GfxModuleDeinit(); - } - -private: - bool CanHandle(HdiLayer &hdiLayer); - void InitGfxSurface(ISurface &iSurface, HdiLayerBuffer &buffer); - int32_t BlitLayer(HdiLayer &src, HdiLayer &dst); - int32_t ClearRect(HdiLayer &src, HdiLayer &dst); - int32_t GfxModuleInit(void); - int32_t GfxModuleDeinit(void); - void *mGfxModule = nullptr; - GfxFuncs *mGfxFuncs = nullptr; - HdiLayer *mClientLayer; -}; -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY - -#endif // HDI_GFX_COMPOSITION_H diff --git a/hardware/display/src/display_device/hdi_layer.cpp b/hardware/display/src/display_device/hdi_layer.cpp deleted file mode 100644 index 20808a91be0de4c6061b362b46dea65cd104b6ad..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/hdi_layer.cpp +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#include "hdi_layer.h" -#include -#include - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -uint32_t HdiLayer::mIdleId = 0; -std::unordered_set HdiLayer::mIdSets; - -HdiLayerBuffer::HdiLayerBuffer(const BufferHandle &hdl) - : mPhyAddr(hdl.phyAddr), mHeight(hdl.height), mWidth(hdl.width), mStride(hdl.stride), mFormat(hdl.format) -{ - DISPLAY_DEBUGLOG(); - mFd = dup(hdl.fd); - mHandle = hdl; - if (mFd < 0) { - DISPLAY_LOGE("the fd : %{public}d dup failed errno %{public}d", hdl.fd, errno); - } -} - -HdiLayerBuffer::~HdiLayerBuffer() -{ - DISPLAY_DEBUGLOG(); - if (mFd >= 0) { - close(mFd); - } -} - -HdiLayerBuffer &HdiLayerBuffer::operator = (const BufferHandle &right) -{ - DISPLAY_DEBUGLOG(); - if (mFd >= 0) { - close(mFd); - } - mFd = dup(right.fd); - mPhyAddr = right.phyAddr; - mWidth = right.width; - mHeight = right.height; - mStride = right.stride; - mFormat = right.format; - return *this; -} - -uint32_t HdiLayer::GetIdleId() -{ - const uint32_t oldIdleId = mIdleId; - uint32_t id = INVALIDE_LAYER_ID; - // ensure the mIdleId not INVALIDE_LAYER_ID - mIdleId = mIdleId % INVALIDE_LAYER_ID; - do { - auto iter = mIdSets.find(mIdleId); - if (iter == mIdSets.end()) { - id = mIdleId; - break; - } - mIdleId = (mIdleId + 1) % INVALIDE_LAYER_ID; - } while (oldIdleId != mIdleId); - mIdSets.emplace(id); - mIdleId++; - DISPLAY_DEBUGLOG("id %{public}d mIdleId %{public}d", id, mIdleId); - return id; -} - -int32_t HdiLayer::Init() -{ - DISPLAY_DEBUGLOG(); - uint32_t id = GetIdleId(); - DISPLAY_CHK_RETURN((id == INVALIDE_LAYER_ID), DISPLAY_FAILURE, DISPLAY_LOGE("have no id to used")); - mId = id; - return DISPLAY_SUCCESS; -} - -int32_t HdiLayer::SetLayerSize(IRect *rect) -{ - DISPLAY_CHK_RETURN((rect == nullptr), DISPLAY_NULL_PTR, DISPLAY_LOGE("in rect is nullptr")); - DISPLAY_DEBUGLOG(" displayRect x: %{public}d y : %{public}d w : %{public}d h : %{public}d", rect->x, rect->y, - rect->w, rect->h); - mDisplayRect = *rect; - return DISPLAY_SUCCESS; -} - -int32_t HdiLayer::SetLayerCrop(IRect *rect) -{ - DISPLAY_CHK_RETURN((rect == nullptr), DISPLAY_NULL_PTR, DISPLAY_LOGE("in rect is nullptr")); - DISPLAY_DEBUGLOG("id : %{public}d crop x: %{public}d y : %{public}d w : %{public}d h : %{public}d", mId, - rect->x, rect->y, rect->w, rect->h); - mCrop = *rect; - return DISPLAY_SUCCESS; -} - -void HdiLayer::SetLayerZorder(uint32_t zorder) -{ - DISPLAY_DEBUGLOG("id : %{public}d zorder : %{public}d ", mId, zorder); - mZorder = zorder; -} - -int32_t HdiLayer::SetLayerPreMulti(bool preMul) -{ - DISPLAY_DEBUGLOG(); - mPreMul = preMul; - return DISPLAY_SUCCESS; -} - -int32_t HdiLayer::SetLayerAlpha(LayerAlpha *alpha) -{ - DISPLAY_CHK_RETURN((alpha == nullptr), DISPLAY_NULL_PTR, DISPLAY_LOGE("in alpha is nullptr")); - DISPLAY_DEBUGLOG("enable alpha %{public}d galpha 0x%{public}x", alpha->enGlobalAlpha, alpha->gAlpha); - mAlpha = *alpha; - return DISPLAY_SUCCESS; -} - -int32_t HdiLayer::SetTransformMode(TransformType type) -{ - DISPLAY_DEBUGLOG("TransformType %{public}d", type); - mTransformType = type; - return DISPLAY_SUCCESS; -} - -int32_t HdiLayer::SetLayerDirtyRegion(IRect *region) -{ - DISPLAY_CHK_RETURN((region == nullptr), DISPLAY_FAILURE, DISPLAY_LOGE("the in rect is null")); - DISPLAY_DEBUGLOG("id : %{public}d DirtyRegion x: %{public}d y : %{public}d w : %{public}d h : %{public}d", mId, - region->x, region->y, region->w, region->h); - return DISPLAY_SUCCESS; -} - -int32_t HdiLayer::SetLayerVisibleRegion(uint32_t num, IRect *rect) -{ - DISPLAY_DEBUGLOG("id : %{public}d DirtyRegion x: %{public}d y : %{public}d w : %{public}d h : %{public}d", mId, rect->x, - rect->y, rect->w, rect->h); - return DISPLAY_SUCCESS; -} - -int32_t HdiLayer::SetLayerBuffer(const BufferHandle *buffer, int32_t fence) -{ - DISPLAY_DEBUGLOG(); - DISPLAY_CHK_RETURN((buffer == nullptr), DISPLAY_NULL_PTR, DISPLAY_LOGE("buffer is nullptr")); - std::unique_ptr layerbuffer = std::make_unique(*buffer); - mHdiBuffer = std::move(layerbuffer); - mAcquireFence = fence; - return DISPLAY_SUCCESS; -} - -int32_t HdiLayer::SetLayerCompositionType(CompositionType type) -{ - DISPLAY_DEBUGLOG("CompositionType type %{public}d", type); - mCompositionType = type; - return DISPLAY_SUCCESS; -} - -int32_t HdiLayer::SetLayerBlendType(BlendType type) -{ - DISPLAY_DEBUGLOG("BlendType type %{public}d", type); - mBlendType = type; - return DISPLAY_SUCCESS; -} - -void HdiLayer::SetPixel(const BufferHandle &handle, int x, int y, uint32_t color) -{ - const int32_t pixelBytes = 4; - DISPLAY_CHK_RETURN_NOT_VALUE((handle.format <= 0), - DISPLAY_LOGE("CheckPixel do not support format %{public}d", handle.format)); - DISPLAY_CHK_RETURN_NOT_VALUE((handle.virAddr == nullptr), DISPLAY_LOGE("CheckPixel viraddr is null must map it")); - DISPLAY_CHK_RETURN_NOT_VALUE((x < 0 || x >= handle.width), - DISPLAY_LOGE("CheckPixel invalid parameter x:%{public}d width:%{public}d", x, handle.width)); - DISPLAY_CHK_RETURN_NOT_VALUE((y < 0 || y >= handle.height), - DISPLAY_LOGE("CheckPixel invalid parameter y:%{public}d height:%{public}d", y, handle.height)); - int32_t position = y * handle.width + x; - if ((position * pixelBytes) > handle.size) { - DISPLAY_LOGE("the pixel postion outside\n"); - } - uint32_t *pixel = reinterpret_cast(handle.virAddr) + position; - *pixel = color; -} - -void HdiLayer::ClearColor(uint32_t color) -{ - DISPLAY_DEBUGLOG(); - BufferHandle &handle = mHdiBuffer->mHandle; - for (int32_t x = 0; x < handle.width; x++) { - for (int32_t y = 0; y < handle.height; y++) { - SetPixel(handle, x, y, color); - } - } -} -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY diff --git a/hardware/display/src/display_device/hdi_layer.h b/hardware/display/src/display_device/hdi_layer.h deleted file mode 100644 index 88803ce8e6086713bd9a33162bcdab8481f9f2ae..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/hdi_layer.h +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef HDI_LAYER_H -#define HDI_LAYER_H -#include -#include -#include "buffer_handle.h" -#include "display_common.h" -#include "hdi_device_common.h" -#include "hdi_shared_fd.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -const uint32_t INVALIDE_LAYER_ID = 0xffffffff; -struct HdiLayerBuffer { -public: - explicit HdiLayerBuffer(const BufferHandle &hdl); - virtual ~HdiLayerBuffer(); - HdiLayerBuffer &operator = (const BufferHandle &right); - uint64_t GetPhysicalAddr() const - { - return mPhyAddr; - } - int32_t GetHeight() const - { - return mHeight; - } - int32_t GetWight() const - { - return mWidth; - } - int32_t GetStride() const - { - return mStride; - } - int32_t GetFormat() const - { - return mFormat; - } - int GetFb() const - { - return mFd; - } - BufferHandle mHandle; - -private: - uint64_t mPhyAddr = 0; - int32_t mHeight = 0; - int32_t mWidth = 0; - int32_t mStride = 0; - int32_t mFormat = 0; - int mFd = -1; -}; - -class HdiLayer { -public: - explicit HdiLayer(LayerType type) : mType(type) {} - int32_t Init(); - uint32_t GetId() const - { - return mId; - } - uint32_t GetZorder() const - { - return mZorder; - } - const IRect &GetLayerDisplayRect() const - { - return mDisplayRect; - } - const IRect &GetLayerCrop() const - { - return mCrop; - } - bool GetLayerPreMulti() const - { - return mPreMul; - } - const LayerAlpha &GetAlpha() const - { - return mAlpha; - } - LayerType GetType() const - { - return mType; - } - TransformType GetTransFormType() const - { - return mTransformType; - } - BlendType GetLayerBlenType() const - { - return mBlendType; - } - CompositionType GetCompositionType() const - { - return mCompositionType; - } - void SetDeviceSelect(CompositionType type) - { - DISPLAY_DEBUGLOG("%{public}d", type); - mDeviceSelect = type; - } - CompositionType GetDeviceSelect() const - { - return mDeviceSelect; - } - - int GetAcquireFenceFd() - { - return mAcquireFence.GetFd(); - } - int GetReleaseFenceFd() - { - return mReleaseFence.GetFd(); - } - void SetReleaseFence(int fd) - { - mReleaseFence = fd; - }; - void ClearColor(uint32_t color); - - void SetPixel(const BufferHandle &handle, int x, int y, uint32_t color); - - virtual int32_t SetLayerSize(IRect *rect); - virtual int32_t SetLayerCrop(IRect *rect); - virtual void SetLayerZorder(uint32_t zorder); - virtual int32_t SetLayerPreMulti(bool preMul); - virtual int32_t SetLayerAlpha(LayerAlpha *alpha); - virtual int32_t SetTransformMode(TransformType type); - virtual int32_t SetLayerDirtyRegion(IRect *region); - virtual int32_t SetLayerVisibleRegion(uint32_t num, IRect *rect); - virtual int32_t SetLayerBuffer(const BufferHandle *buffer, int32_t fence); - virtual int32_t SetLayerCompositionType(CompositionType type); - virtual int32_t SetLayerBlendType(BlendType type); - virtual HdiLayerBuffer *GetCurrentBuffer() - { - return mHdiBuffer.get(); - } - virtual ~HdiLayer() {} - -private: - static uint32_t GetIdleId(); - static uint32_t mIdleId; - static std::unordered_set mIdSets; - - uint32_t mId = 0; - HdiFd mAcquireFence; - HdiFd mReleaseFence; - LayerType mType; - - IRect mDisplayRect; - IRect mCrop; - uint32_t mZorder = -1; - bool mPreMul = false; - LayerAlpha mAlpha; - TransformType mTransformType = ROTATE_BUTT; - CompositionType mCompositionType = COMPOSITION_CLIENT; - CompositionType mDeviceSelect = COMPOSITION_CLIENT; - BlendType mBlendType; - std::unique_ptr mHdiBuffer; -}; - -struct SortLayersByZ { - bool operator () (const HdiLayer *lhs, const HdiLayer *rhs) const - { - if (lhs == nullptr || rhs == nullptr) { - return (lhs == nullptr) && (rhs == nullptr); - } - return lhs->GetZorder() < rhs->GetZorder(); - } -}; -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY - -#endif // HDI_LAYER_H \ No newline at end of file diff --git a/hardware/display/src/display_device/hdi_netlink_monitor.cpp b/hardware/display/src/display_device/hdi_netlink_monitor.cpp deleted file mode 100644 index 003275d3928543ba6ec6d2158e86fdea091b2bda..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/hdi_netlink_monitor.cpp +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#include "hdi_netlink_monitor.h" -#include -#include -#include -#include -#include -#include -#include "display_common.h" -#include "display_device.h" -#include "display_layer.h" -#include "hdi_session.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -HdiNetLinkMonitor::HdiNetLinkMonitor() -{ - DISPLAY_DEBUGLOG(); -} - -int HdiNetLinkMonitor::Init() -{ - DISPLAY_DEBUGLOG(); - mThread = std::make_unique(std::bind(&HdiNetLinkMonitor::MonitorThread, this)); - mThread->detach(); - mRunning = true; - return DISPLAY_SUCCESS; -} - -HdiNetLinkMonitor::~HdiNetLinkMonitor() -{ - DISPLAY_DEBUGLOG(); - if (mScoketFd >= 0) { - close(mScoketFd); - } -} - -static int ThreadInit() -{ - int ret; - int fd = -1; - const int32_t bufferSize = 1024; - struct sockaddr_nl snl; - - bzero(&snl, sizeof(struct sockaddr_nl)); - snl.nl_family = AF_NETLINK; - snl.nl_pid = getpid(); - snl.nl_groups = 1; - fd = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT); - DISPLAY_CHK_RETURN(fd < 0, DISPLAY_FAILURE, DISPLAY_LOGE("socket fail")); - ret = setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &bufferSize, sizeof(bufferSize)); - if (ret == -1) { - DISPLAY_LOGE("setsockopt fail"); - close(fd); - return DISPLAY_FAILURE; - } - ret = bind(fd, (struct sockaddr *)&snl, sizeof(struct sockaddr_nl)); - if (ret < 0) { - DISPLAY_LOGE("bind fail"); - close(fd); - return DISPLAY_FAILURE; - } - return fd; -} - -static void ParseUeventMessage(const char *buf, uint32_t len) -{ - uint32_t num; - - for (num = 0; num < len;) { - const char *event = buf + num; - if (strcmp(event, "STATE=HDMI=0") == 0) { - HdiSession::GetInstance().HandleHotplug(false); - break; - } else if (strcmp(event, "STATE=HDMI=1") == 0) { - HdiSession::GetInstance().HandleHotplug(true); - break; - } - num += strlen(event) + 1; - } -} - -void HdiNetLinkMonitor::MonitorThread() -{ - constexpr int BUFFER_SIZE = 2048; /* buffer for the variables */ - int len; - int fd = -1; - - fd = ThreadInit(); - DISPLAY_CHK_RETURN_NOT_VALUE(fd < 0, DISPLAY_LOGE("socket fail")); - mScoketFd = fd; - while (mRunning) { - char buf[BUFFER_SIZE] = { 0 }; - len = read(fd, &buf, sizeof(buf)); - if (len < 0) { - DISPLAY_LOGE("read uevent message fail"); - break; - } - ParseUeventMessage(buf, len); - } -} -} // DISPLAY -} // HDI -} // OHOS diff --git a/hardware/display/src/display_device/hdi_netlink_monitor.h b/hardware/display/src/display_device/hdi_netlink_monitor.h deleted file mode 100644 index 12b83182b9c9f90b31e7a41b8ef5faec6042928c..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/hdi_netlink_monitor.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef HDI_NETLINK_NONITOR_H -#define HDI_NETLINK_NONITOR_H -#include - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -class HdiNetLinkMonitor { -public: - HdiNetLinkMonitor(); - int Init(); - virtual ~HdiNetLinkMonitor(); - -private: - void MonitorThread(); - volatile bool mRunning = false; - int mScoketFd = -1; - std::unique_ptr mThread; -}; -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY - -#endif // HDI_NETLINK_NONITOR_H \ No newline at end of file diff --git a/hardware/display/src/display_device/hdi_session.cpp b/hardware/display/src/display_device/hdi_session.cpp deleted file mode 100644 index 352d27c7f31ddf3b3b7ac32352826df4e638448f..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/hdi_session.cpp +++ /dev/null @@ -1,415 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#include -#include -#include -#include "display_common.h" -#include "display_device.h" -#include "display_layer.h" -#include "hdi_netlink_monitor.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -HdiSession &HdiSession::GetInstance() -{ - static HdiSession instance; - static std::once_flag once; - std::call_once(once, [&]() { instance.Init(); }); - return instance; -} - -void HdiSession::Init() -{ - DISPLAY_DEBUGLOG(); - mHdiDevices = HdiDeviceInterface::DiscoveryDevice(); - DISPLAY_DEBUGLOG("devices size %{public}zd", mHdiDevices.size()); - mHdiDisplays.clear(); - for (auto device : mHdiDevices) { - auto displays = device->DiscoveryDisplay(); - /* Register the connectors instead of display device. - * There are several connectors in one display device - * in rockchip platform. - */ - for (auto display : displays) { - mHdiDisplays[display.first] = display.second; - } - } - std::shared_ptr mNetLinkMonitor = std::make_shared(); - mNetLinkMonitor->Init(); -} - -void HdiSession::HandleHotplug(bool plugIn) -{ - for (auto device : mHdiDevices) { - for (auto displayMap : mHdiDisplays) { - auto display = displayMap.second; - auto isSuccess = device->HandleHotplug(display->GetId(), plugIn); - if (isSuccess == true) { - DoHotPlugCallback(display->GetId(), plugIn); - } - } - } -} - -int32_t HdiSession::RegHotPlugCallback(HotPlugCallback callback, void *data) -{ - DISPLAY_CHK_RETURN((callback == nullptr), DISPLAY_NULL_PTR, DISPLAY_LOGE("the callback is nullptr")); - mHotPlugCallBacks.emplace(callback, data); - for (auto displayMap : mHdiDisplays) { - auto display = displayMap.second; - if (display->IsConnected()) { - DoHotPlugCallback(display->GetId(), true); - } - } - return DISPLAY_SUCCESS; -} - -void HdiSession::DoHotPlugCallback(uint32_t devId, bool connect) -{ - DISPLAY_DEBUGLOG(); - for (const auto &callback : mHotPlugCallBacks) { - callback.first(devId, connect, callback.second); - } -} -} // OHOS -} // HDI -} // DISPLAY - -using namespace OHOS::HDI::DISPLAY; -static int32_t RegHotPlugCallback(HotPlugCallback callback, void *data) -{ - DISPLAY_DEBUGLOG(); - HdiSession::GetInstance().RegHotPlugCallback(callback, data); - return DISPLAY_SUCCESS; -} - -static int32_t GetDisplayCapability(uint32_t devId, DisplayCapability *info) -{ - DISPLAY_DEBUGLOG(); - DISPLAY_CHK_RETURN(info == nullptr, DISPLAY_NULL_PTR, DISPLAY_LOGE("info is nullptr")); - return HdiSession::GetInstance().CallDisplayFunction(devId, &HdiDisplay::GetDisplayCapability, info); -} - -static int32_t GetDisplaySupportedModes(uint32_t devId, uint32_t *num, DisplayModeInfo *modes) -{ - DISPLAY_DEBUGLOG(); - DISPLAY_CHK_RETURN(num == nullptr, DISPLAY_NULL_PTR, DISPLAY_LOGE("num is nullptr")); - return HdiSession::GetInstance().CallDisplayFunction(devId, &HdiDisplay::GetDisplaySupportedModes, num, modes); -} - -static int32_t GetDisplayMode(uint32_t devId, uint32_t *mode) -{ - DISPLAY_DEBUGLOG(); - DISPLAY_CHK_RETURN((mode == nullptr), DISPLAY_NULL_PTR, DISPLAY_LOGE("mode is nullptr")); - return HdiSession::GetInstance().CallDisplayFunction(devId, &HdiDisplay::GetDisplayMode, mode); -} - -static int32_t SetDisplayMode(uint32_t devId, uint32_t mode) -{ - DISPLAY_DEBUGLOG(); - return HdiSession::GetInstance().CallDisplayFunction(devId, &HdiDisplay::SetDisplayMode, mode); -} - -static int32_t GetDisplayPowerStatus(uint32_t devId, DispPowerStatus *status) -{ - DISPLAY_DEBUGLOG(); - DISPLAY_CHK_RETURN((status == nullptr), DISPLAY_NULL_PTR, DISPLAY_LOGE("status is nullptr")); - return HdiSession::GetInstance().CallDisplayFunction(devId, &HdiDisplay::GetDisplayPowerStatus, status); -} - -static int32_t SetDisplayPowerStatus(uint32_t devId, DispPowerStatus status) -{ - DISPLAY_DEBUGLOG(); - return HdiSession::GetInstance().CallDisplayFunction(devId, &HdiDisplay::SetDisplayPowerStatus, status); -} - -static int32_t GetDisplayBacklight(uint32_t devId, uint32_t *value) -{ - DISPLAY_DEBUGLOG(); - DISPLAY_CHK_RETURN((value == nullptr), DISPLAY_NULL_PTR, DISPLAY_LOGE("value is nullptr")); - return HdiSession::GetInstance().CallDisplayFunction(devId, &HdiDisplay::GetDisplayBacklight, value); -} - -static int32_t SetDisplayBacklight(uint32_t devId, uint32_t value) -{ - DISPLAY_DEBUGLOG(); - return HdiSession::GetInstance().CallDisplayFunction(devId, &HdiDisplay::SetDisplayBacklight, value); -} - -static int32_t GetDisplayProperty(uint32_t devId, uint32_t id, uint64_t *value) -{ - DISPLAY_DEBUGLOG(); - (void)id; - DISPLAY_CHK_RETURN((value == nullptr), DISPLAY_NULL_PTR, DISPLAY_LOGE("value is nullptr")); - return DISPLAY_NOT_SUPPORT; -} - -static int32_t SetDisplayProperty(uint32_t devId, uint32_t id, uint64_t value) -{ - DISPLAY_DEBUGLOG(); - (void)id; - return DISPLAY_NOT_SUPPORT; -} - -static int32_t PrepareDisplayLayers(uint32_t devId, bool *needFlushFb) -{ - DISPLAY_DEBUGLOG(); - DISPLAY_CHK_RETURN((needFlushFb == nullptr), DISPLAY_NULL_PTR, DISPLAY_LOGE("needFlushFb is nullptr")); - return HdiSession::GetInstance().CallDisplayFunction(devId, &HdiDisplay::PrepareDisplayLayers, needFlushFb); -} - -static int32_t GetDisplayCompChange(uint32_t devId, uint32_t *num, uint32_t *layers, int32_t *type) -{ - DISPLAY_DEBUGLOG(); - DISPLAY_CHK_RETURN((num == nullptr), DISPLAY_NULL_PTR, DISPLAY_LOGE("num is nullptr")); - return HdiSession::GetInstance().CallDisplayFunction(devId, &HdiDisplay::GetDisplayCompChange, num, layers, type); -} - -static int32_t SetDisplayClientCrop(uint32_t devId, IRect *rect) -{ - DISPLAY_DEBUGLOG(); - DISPLAY_CHK_RETURN((rect == NULL), DISPLAY_NULL_PTR, DISPLAY_LOGE("rect is nullptr")); - return DISPLAY_NOT_SUPPORT; -} - -static int32_t SetDisplayClientDestRect(uint32_t devId, IRect *rect) -{ - DISPLAY_DEBUGLOG(); - DISPLAY_CHK_RETURN((rect == NULL), DISPLAY_NULL_PTR, DISPLAY_LOGE("rect is nullptr")); - return DISPLAY_NOT_SUPPORT; -} - -static int32_t SetDisplayClientBuffer(uint32_t devId, const BufferHandle *buffer, int32_t fence) -{ - DISPLAY_DEBUGLOG(); - return HdiSession::GetInstance().CallDisplayFunction(devId, &HdiDisplay::SetDisplayClientBuffer, buffer, fence); -} - -static int32_t SetDisplayClientDamage(uint32_t devId, uint32_t num, IRect *rect) -{ - DISPLAY_DEBUGLOG(); - (void)num; - DISPLAY_CHK_RETURN((rect == NULL), DISPLAY_NULL_PTR, DISPLAY_LOGE("rect is nullptr")); - return DISPLAY_NOT_SUPPORT; -} - -static int32_t SetDisplayVsyncEnabled(uint32_t devId, bool enabled) -{ - DISPLAY_DEBUGLOG(); - return HdiSession::GetInstance().CallDisplayFunction(devId, &HdiDisplay::SetDisplayVsyncEnabled, enabled); -} - -static int32_t RegDisplayVBlankCallback(uint32_t devId, VBlankCallback callback, void *data) -{ - DISPLAY_DEBUGLOG(); - return HdiSession::GetInstance().CallDisplayFunction(devId, &HdiDisplay::RegDisplayVBlankCallback, callback, data); -} - -static int32_t GetDisplayReleaseFence(uint32_t devId, uint32_t *num, uint32_t *layers, int32_t *fences) -{ - DISPLAY_DEBUGLOG(); - return HdiSession::GetInstance().CallDisplayFunction(devId, &HdiDisplay::GetDisplayReleaseFence, num, layers, - fences); -} - -static int32_t Commit(uint32_t devId, int32_t *fence) -{ - DISPLAY_DEBUGLOG(); - DISPLAY_CHK_RETURN((fence == NULL), DISPLAY_NULL_PTR, DISPLAY_LOGE("fence is nullptr")); - return HdiSession::GetInstance().CallDisplayFunction(devId, &HdiDisplay::Commit, fence); -} - -static int32_t CreateVirtualDisplay(uint32_t width, uint32_t height, int32_t *format, uint32_t *devId) -{ - DISPLAY_DEBUGLOG(); - return DISPLAY_NOT_SUPPORT; -} -static int32_t DestroyVirtualDisplay(uint32_t devId) -{ - DISPLAY_DEBUGLOG(); - return DISPLAY_NOT_SUPPORT; -} -static int32_t SetVirtualDisplayBuffer(uint32_t devId, BufferHandle *buffer, int32_t releaseFence) -{ - DISPLAY_DEBUGLOG(); - return DISPLAY_NOT_SUPPORT; -} - - -// Layer function -static int32_t CreateLayer(uint32_t devId, const LayerInfo *layerInfo, uint32_t *layerId) -{ - DISPLAY_DEBUGLOG(); - DISPLAY_CHK_RETURN((layerId == NULL), DISPLAY_NULL_PTR, DISPLAY_LOGE("layerId is nullptr")); - return HdiSession::GetInstance().CallDisplayFunction(devId, &HdiDisplay::CreateLayer, layerInfo, layerId); -} - -static int32_t CloseLayer(uint32_t devId, uint32_t layerId) -{ - DISPLAY_DEBUGLOG(); - return HdiSession::GetInstance().CallDisplayFunction(devId, &HdiDisplay::CloseLayer, layerId); -} - -static int32_t SetLayerSize(uint32_t devId, uint32_t layerId, IRect *rect) -{ - DISPLAY_CHK_RETURN((rect == NULL), DISPLAY_NULL_PTR, DISPLAY_LOGE("rect is nullptr")); - DISPLAY_DEBUGLOG(); - return HdiSession::GetInstance().CallLayerFunction(devId, layerId, &HdiLayer::SetLayerSize, rect); -} - -static int32_t SetLayerCrop(uint32_t devId, uint32_t layerId, IRect *rect) -{ - DISPLAY_DEBUGLOG(); - DISPLAY_CHK_RETURN((rect == NULL), DISPLAY_NULL_PTR, DISPLAY_LOGE("rect is nullptr")); - return HdiSession::GetInstance().CallLayerFunction(devId, layerId, &HdiLayer::SetLayerCrop, rect); -} - -static int32_t SetLayerZorder(uint32_t devId, uint32_t layerId, uint32_t zorder) -{ - DISPLAY_DEBUGLOG(); - return HdiSession::GetInstance().CallDisplayFunction(devId, &HdiDisplay::SetLayerZorder, layerId, zorder); -} - -static int32_t SetLayerPreMulti(uint32_t devId, uint32_t layerId, bool preMul) -{ - DISPLAY_DEBUGLOG(); - return HdiSession::GetInstance().CallLayerFunction(devId, layerId, &HdiLayer::SetLayerPreMulti, preMul); -} - -static int32_t SetLayerAlpha(uint32_t devId, uint32_t layerId, LayerAlpha *alpha) -{ - DISPLAY_DEBUGLOG(); - DISPLAY_CHK_RETURN((alpha == NULL), DISPLAY_NULL_PTR, DISPLAY_LOGE("alpha is nullptr")); - return HdiSession::GetInstance().CallLayerFunction(devId, layerId, &HdiLayer::SetLayerAlpha, alpha); -} - -static int32_t SetTransformMode(uint32_t devId, uint32_t layerId, TransformType type) -{ - DISPLAY_DEBUGLOG(); - return HdiSession::GetInstance().CallLayerFunction(devId, layerId, &HdiLayer::SetTransformMode, type); -} - -static int32_t SetLayerDirtyRegion(uint32_t devId, uint32_t layerId, IRect *region) -{ - DISPLAY_DEBUGLOG(); - DISPLAY_CHK_RETURN((region == NULL), DISPLAY_NULL_PTR, DISPLAY_LOGE("region is nullptr")); - return HdiSession::GetInstance().CallLayerFunction(devId, layerId, &HdiLayer::SetLayerDirtyRegion, region); -} - -static int32_t SetLayerVisibleRegion(uint32_t devId, uint32_t layerId, uint32_t num, IRect *rect) -{ - DISPLAY_DEBUGLOG(); - DISPLAY_CHK_RETURN((rect == NULL), DISPLAY_NULL_PTR, DISPLAY_LOGE("rect is nullptr")); - return HdiSession::GetInstance().CallLayerFunction(devId, layerId, &HdiLayer::SetLayerVisibleRegion, num, rect); -} - -static int32_t SetLayerBuffer(uint32_t devId, uint32_t layerId, const BufferHandle *buffer, int32_t fence) -{ - DISPLAY_DEBUGLOG(); - return HdiSession::GetInstance().CallLayerFunction(devId, layerId, &HdiLayer::SetLayerBuffer, buffer, fence); -} - -static int32_t SetLayerCompositionType(uint32_t devId, uint32_t layerId, CompositionType type) -{ - DISPLAY_DEBUGLOG(); - return HdiSession::GetInstance().CallLayerFunction(devId, layerId, &HdiLayer::SetLayerCompositionType, type); -} - -static int32_t SetLayerBlendType(uint32_t devId, uint32_t layerId, BlendType type) -{ - DISPLAY_DEBUGLOG(); - return HdiSession::GetInstance().CallLayerFunction(devId, layerId, &HdiLayer::SetLayerBlendType, type); -} - - -extern "C" { -int32_t DeviceInitialize(DeviceFuncs **funcs) -{ - DISPLAY_CHK_RETURN((funcs == nullptr), DISPLAY_NULL_PTR, DISPLAY_LOGE("in funcs is null")); - DeviceFuncs *dFuncs = (DeviceFuncs *)calloc(1, sizeof(DeviceFuncs)); - DISPLAY_CHK_RETURN((dFuncs == nullptr), DISPLAY_FAILURE, DISPLAY_LOGE("can not calloc")); - - dFuncs->RegHotPlugCallback = RegHotPlugCallback; - dFuncs->GetDisplayCapability = GetDisplayCapability; - dFuncs->GetDisplaySupportedModes = GetDisplaySupportedModes; - dFuncs->GetDisplayMode = GetDisplayMode; - dFuncs->SetDisplayMode = SetDisplayMode; - dFuncs->GetDisplayPowerStatus = GetDisplayPowerStatus; - dFuncs->SetDisplayPowerStatus = SetDisplayPowerStatus; - dFuncs->PrepareDisplayLayers = PrepareDisplayLayers; - dFuncs->GetDisplayBacklight = GetDisplayBacklight; - dFuncs->SetDisplayBacklight = SetDisplayBacklight; - dFuncs->GetDisplayProperty = GetDisplayProperty; - dFuncs->GetDisplayCompChange = GetDisplayCompChange; - dFuncs->SetDisplayClientCrop = SetDisplayClientCrop; - dFuncs->SetDisplayClientDestRect = SetDisplayClientDestRect; - dFuncs->SetDisplayClientBuffer = SetDisplayClientBuffer; - dFuncs->SetDisplayClientDamage = SetDisplayClientDamage; - dFuncs->SetDisplayVsyncEnabled = SetDisplayVsyncEnabled; - dFuncs->RegDisplayVBlankCallback = RegDisplayVBlankCallback; - dFuncs->GetDisplayReleaseFence = GetDisplayReleaseFence; - dFuncs->CreateVirtualDisplay = CreateVirtualDisplay; - dFuncs->DestroyVirtualDisplay = DestroyVirtualDisplay; - dFuncs->SetVirtualDisplayBuffer = SetVirtualDisplayBuffer; - dFuncs->SetDisplayProperty = SetDisplayProperty; - dFuncs->Commit = Commit; - *funcs = dFuncs; - DISPLAY_DEBUGLOG("%{public}s: device initialize success", __func__); - HdiSession::GetInstance(); - return DISPLAY_SUCCESS; -} - -int32_t DeviceUninitialize(DeviceFuncs *funcs) -{ - DISPLAY_CHK_RETURN((funcs == nullptr), DISPLAY_NULL_PTR, DISPLAY_LOGE("in funcs is null")); - free(funcs); - return DISPLAY_SUCCESS; -} - - -int32_t LayerInitialize(LayerFuncs **funcs) -{ - DISPLAY_CHK_RETURN((funcs == nullptr), DISPLAY_NULL_PTR, DISPLAY_LOGE("the in funcs is nullptr")); - LayerFuncs *lFuncs = (LayerFuncs *)calloc(1, sizeof(LayerFuncs)); - DISPLAY_CHK_RETURN((lFuncs == nullptr), DISPLAY_FAILURE, DISPLAY_LOGE("can not calloc errno: %{public}d", errno)); - lFuncs->SetLayerAlpha = SetLayerAlpha; - lFuncs->CreateLayer = CreateLayer; - lFuncs->CloseLayer = CloseLayer; - lFuncs->SetLayerSize = SetLayerSize; - lFuncs->SetLayerCrop = SetLayerCrop; - lFuncs->SetLayerZorder = SetLayerZorder; - lFuncs->SetLayerPreMulti = SetLayerPreMulti; - lFuncs->SetTransformMode = SetTransformMode; - lFuncs->SetLayerDirtyRegion = SetLayerDirtyRegion; - lFuncs->SetLayerVisibleRegion = SetLayerVisibleRegion; - lFuncs->SetLayerBuffer = SetLayerBuffer; - lFuncs->SetLayerCompositionType = SetLayerCompositionType; - lFuncs->SetLayerBlendType = SetLayerBlendType; - - *funcs = lFuncs; - DISPLAY_DEBUGLOG("%{public}s: layer initialize success", __func__); - return DISPLAY_SUCCESS; -} - -int32_t LayerUninitialize(LayerFuncs *funcs) -{ - DISPLAY_CHK_RETURN((funcs == nullptr), DISPLAY_FAILURE, DISPLAY_LOGE("the funcs is nullptr")); - free(funcs); - DISPLAY_DEBUGLOG("%{public}s: layer uninitialize success", __func__); - return DISPLAY_SUCCESS; -} -} diff --git a/hardware/display/src/display_device/hdi_session.h b/hardware/display/src/display_device/hdi_session.h deleted file mode 100644 index eb040db883243d5796ca99f07d084c51ab56cdd2..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/hdi_session.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef HDI_SESSION_H -#define HDI_SESSION_H -#include -#include -#include -#include "display_device.h" -#include "hdi_device_interface.h" -#include "hdi_display.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -class HdiSession { -public: - void Init(); - static HdiSession &GetInstance(); - - template - int32_t CallDisplayFunction(uint32_t devId, int32_t (HdiDisplay::*member)(Args...), Args... args) - { - DISPLAY_DEBUGLOG("device Id : %{public}d", devId); - DISPLAY_CHK_RETURN((devId == INVALIDE_DISPLAY_ID), DISPLAY_FAILURE, DISPLAY_LOGE("invalide device id")); - auto iter = mHdiDisplays.find(devId); - DISPLAY_CHK_RETURN((iter == mHdiDisplays.end()), DISPLAY_FAILURE, - DISPLAY_LOGE("can not find display %{public}d", devId)); - auto display = iter->second.get(); - return (display->*member)(std::forward(args)...); - } - - template - int32_t CallLayerFunction(uint32_t devId, uint32_t layerId, int32_t (HdiLayer::*member)(Args...), Args... args) - { - DISPLAY_DEBUGLOG("device Id : %{public}d", devId); - DISPLAY_CHK_RETURN((devId == INVALIDE_DISPLAY_ID), DISPLAY_FAILURE, DISPLAY_LOGE("invalide device id")); - auto iter = mHdiDisplays.find(devId); - DISPLAY_CHK_RETURN((iter == mHdiDisplays.end()), DISPLAY_FAILURE, - DISPLAY_LOGE("can not find display %{public}d", devId)); - auto display = iter->second.get(); - auto layer = display->GetHdiLayer(layerId); - DISPLAY_CHK_RETURN((layer == nullptr), DISPLAY_FAILURE, - DISPLAY_LOGE("can not find the layer %{public}d", layerId)); - return (layer->*member)(std::forward(args)...); - } - - int32_t RegHotPlugCallback(HotPlugCallback callback, void *data); - void DoHotPlugCallback(uint32_t devId, bool connect); - void HandleHotplug(bool plugIn); - -private: - std::unordered_map> mHdiDisplays; - std::vector> mHdiDevices; - std::unordered_map mHotPlugCallBacks; -}; -} // namespace OHOS -} // namespace HDI -} // namespace DISPLAY - -#endif // HDI_SESSION_H \ No newline at end of file diff --git a/hardware/display/src/display_device/hdi_shared_fd.h b/hardware/display/src/display_device/hdi_shared_fd.h deleted file mode 100644 index d21cfb940efe5e4896b2085436cf1a8aeb758670..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_device/hdi_shared_fd.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef HDI_SHARED_FD -#define HDI_SHARED_FD -#include -#include -#include "display_common.h" - -namespace OHOS { -namespace HDI { -namespace DISPLAY { -class HdiFd { -public: - HdiFd() - { - DISPLAY_DEBUGLOG(); - } - explicit HdiFd(int fd) : mFd(fd) - { - DISPLAY_DEBUGLOG("mFd %{public}d", mFd); - } - int GetFd() const - { - return mFd; - }; - - HdiFd &operator = (int fd) - { - if (mFd >= 0) { - close(mFd); - } - mFd = fd; - return *this; - } - - virtual ~HdiFd() - { - if (mFd >= 0) { - close(mFd); - } - } - -private: - int mFd = -1; -}; - -using FdPtr = std::shared_ptr; -} // OHOS -} // HDIO -} // DISPLAY - -#endif // HDI_SHARED_FD \ No newline at end of file diff --git a/hardware/display/src/display_gfx/display_gfx.c b/hardware/display/src/display_gfx/display_gfx.c deleted file mode 100644 index e6105d726f06a8575da0661460164867f7c220f6..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_gfx/display_gfx.c +++ /dev/null @@ -1,515 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#include -#include -#include "im2d.h" -#include "rga.h" -#include "display_common.h" -#include "display_gralloc.h" -#include "securec.h" -#include "display_gfx.h" - -#define ALIGN_UP(x, a) ((((x) + ((a)-1)) / (a)) * (a)) -GrallocFuncs *grallocFucs = NULL; -int32_t rkInitGfx() -{ - DISPLAY_LOGE("%s\n", querystring(RGA_ALL)); - return DISPLAY_SUCCESS; -} - -int32_t rkDeinitGfx() -{ - return DISPLAY_SUCCESS; -} - -RgaSURF_FORMAT colorSpaceModeChange(PixelFormat color, uint8_t *isYuv) -{ - RgaSURF_FORMAT rkFormat; - switch (color) { - case PIXEL_FMT_RGB_565: /**< RGB565 format */ - rkFormat = RK_FORMAT_RGB_565; - *isYuv = 0; - break; - case PIXEL_FMT_RGBA_4444: /**< RGBA4444 format */ - rkFormat = RK_FORMAT_RGBA_4444; - *isYuv = 0; - break; - case PIXEL_FMT_RGBA_5551: /**< RGBA5551 format */ - rkFormat = RK_FORMAT_RGBA_5551; - *isYuv = 0; - break; - case PIXEL_FMT_RGBX_8888: /**< RGBX8888 format */ - rkFormat = RK_FORMAT_RGBX_8888; - *isYuv = 0; - break; - case PIXEL_FMT_RGBA_8888: /**< RGBA8888 format */ - rkFormat = RK_FORMAT_RGBA_8888; - *isYuv = 0; - break; - case PIXEL_FMT_RGB_888: /**< RGB888 format */ - rkFormat = RK_FORMAT_RGB_888; - *isYuv = 0; - break; - case PIXEL_FMT_BGR_565: /**< BGR565 format */ - rkFormat = RK_FORMAT_BGR_565; - *isYuv = 0; - break; - case PIXEL_FMT_BGRA_4444: /**< BGRA4444 format */ - rkFormat = RK_FORMAT_BGRA_4444; - *isYuv = 0; - break; - case PIXEL_FMT_BGRA_5551: /**< BGRA5551 format */ - rkFormat = RK_FORMAT_BGRA_5551; - *isYuv = 0; - break; - case PIXEL_FMT_BGRX_8888: /**< BGRX8888 format */ - rkFormat = RK_FORMAT_BGRX_8888; - *isYuv = 0; - break; - case PIXEL_FMT_BGRA_8888: /**< BGRA8888 format */ - rkFormat = RK_FORMAT_BGRA_8888; - *isYuv = 0; - break; - case PIXEL_FMT_YCBCR_422_SP: /**< YCBCR422 semi-planar format */ - rkFormat = RK_FORMAT_YCbCr_420_SP; - *isYuv = 1; - break; - case PIXEL_FMT_YCRCB_422_SP: /**< YCRCB422 semi-planar format */ - rkFormat = RK_FORMAT_YCrCb_422_SP; - *isYuv = 1; - break; - case PIXEL_FMT_YCBCR_420_SP: /**< YCBCR420 semi-planar format */ - rkFormat = RK_FORMAT_YCbCr_420_SP; - *isYuv = 1; - break; - case PIXEL_FMT_YCRCB_420_SP: /**< YCRCB420 semi-planar format */ - rkFormat = RK_FORMAT_YCrCb_420_SP; - *isYuv = 1; - break; - case PIXEL_FMT_YCBCR_422_P: /**< YCBCR422 planar format */ - rkFormat = RK_FORMAT_YCbCr_422_P; - *isYuv = 1; - break; - case PIXEL_FMT_YCRCB_422_P: /**< YCRCB422 planar format */ - rkFormat = RK_FORMAT_YCrCb_422_P; - *isYuv = 1; - break; - case PIXEL_FMT_YCBCR_420_P: /**< YCBCR420 planar format */ - rkFormat = RK_FORMAT_YCbCr_420_P; - *isYuv = 1; - break; - case PIXEL_FMT_YCRCB_420_P: /**< YCRCB420 planar format */ - rkFormat = RK_FORMAT_YCrCb_420_P; - *isYuv = 1; - break; - case PIXEL_FMT_YUYV_422_PKG: /**< YUYV422 packed format */ - rkFormat = RK_FORMAT_YUYV_422; - *isYuv = 1; - break; - case PIXEL_FMT_UYVY_422_PKG: /**< UYVY422 packed format */ - rkFormat = RK_FORMAT_UYVY_422; - *isYuv = 1; - break; - case PIXEL_FMT_YVYU_422_PKG: /**< YVYU422 packed format */ - rkFormat = RK_FORMAT_YUYV_422; - *isYuv = 1; - break; - case PIXEL_FMT_VYUY_422_PKG: /**< VYUY422 packed format */ - rkFormat = RK_FORMAT_VYUY_422; - *isYuv = 1; - break; - default: -// PIXEL_FMT_CLUT8: /**< CLUT8 format */ -// PIXEL_FMT_CLUT1, /**< CLUT1 format */ -// PIXEL_FMT_CLUT4, /**< CLUT4 format */ -// PIXEL_FMT_RGBA_5658, /**< RGBA5658 format */ -// PIXEL_FMT_RGBX_4444, /**< RGBX4444 format */ -// PIXEL_FMT_RGB_444, /**< RGB444 format */ -// PIXEL_FMT_RGBX_5551, /**< RGBX5551 format */ -// PIXEL_FMT_RGB_555, /**< RGB555 format */ -// PIXEL_FMT_BGRX_4444, /**< BGRX4444 format */ -// PIXEL_FMT_BGRX_5551, /**< BGRX5551 format */ -// PIXEL_FMT_YUV_422_I, /**< YUV422 interleaved format */ - rkFormat = RK_FORMAT_UNKNOWN; - break; - } - return rkFormat; -} - -int32_t rkFillRect(ISurface *iSurface, IRect *rect, uint32_t color, GfxOpt *opt) -{ - rga_buffer_t dst; - im_rect imRect; - IM_STATUS ret; - uint8_t isYuv; - - errno_t eok = memset_s((void *)&imRect, sizeof(imRect), 0, sizeof(imRect)); - if (eok != EOK) { - DISPLAY_LOGE("memset_s failed"); - return false; - } - imRect.x = rect->x; - imRect.y = rect->y; - imRect.width = rect->w; - imRect.height = rect->h; - - eok = memset_s((void *)&dst, sizeof(dst), 0, sizeof(dst)); - if (eok != EOK) { - DISPLAY_LOGE("memset_s failed"); - return false; - } - dst.phy_addr = 0; // (void*)iSurface->phyAddr; - dst.vir_addr = 0; // iSurface->virAddr; - dst.fd = (int32_t)iSurface->phyAddr; - if ((int)dst.phy_addr == 0 && dst.fd == 0 && dst.vir_addr == NULL) { - DISPLAY_LOGE("source iSurface address error"); - return DISPLAY_PARAM_ERR; - } - DISPLAY_LOGE("gfx vir %{public}p phy 0x%{public}x fd %{public}d", dst.vir_addr, (int32_t)dst.phy_addr, dst.fd); - dst.width = iSurface->width; - dst.height = iSurface->height; - dst.wstride = ALIGN_UP(iSurface->width, 16); - dst.hstride = ALIGN_UP(iSurface->height, 16); - dst.format = colorSpaceModeChange(iSurface->enColorFmt, &isYuv); - dst.color_space_mode = IM_COLOR_SPACE_DEFAULT; - dst.color = color; - if (opt->enGlobalAlpha) - dst.global_alpha = opt->globalAlpha; - ret = imfill(dst, imRect, color); - if (ret != IM_STATUS_SUCCESS) - return DISPLAY_FAILURE; - else - return DISPLAY_SUCCESS; -} - -int32_t blendTypeChange(BlendType blendType) -{ - int32_t rkBlendType; - switch (blendType) { - case BLEND_SRC: /**< SRC blending */ - rkBlendType = IM_ALPHA_BLEND_SRC; - break; - case BLEND_DST: /**< SRC blending */ - rkBlendType = IM_ALPHA_BLEND_DST; - break; - case BLEND_SRCOVER: /**< SRC_OVER blending */ - rkBlendType = IM_ALPHA_BLEND_SRC_OVER; - break; - case BLEND_DSTOVER: /**< DST_OVER blending */ - rkBlendType = IM_ALPHA_BLEND_DST_OVER; - break; - default: - /* Fix up later */ -// BLEND_NONE /**< No blending */ -// BLEND_CLEAR: /**< CLEAR blending */ -// BLEND_SRCIN: /**< SRC_IN blending */ -// BLEND_DSTIN: /**< DST_IN blending */ -// BLEND_SRCOUT: /**< SRC_OUT blending */ -// BLEND_DSTOUT: /**< DST_OUT blending */ -// BLEND_SRCATOP: /**< SRC_ATOP blending */ -// BLEND_DSTATOP: /**< DST_ATOP blending */ -// BLEND_ADD: /**< ADD blending */ -// BLEND_XOR: /**< XOR blending */ -// BLEND_DST: /**< DST blending */ -// BLEND_AKS: /**< AKS blending */ -// BLEND_AKD: /**< AKD blending */ -// BLEND_BUTT: /**< Null operation */ - rkBlendType = IM_STATUS_NOT_SUPPORTED; - break; - } - return rkBlendType; -} - -int32_t TransformTypeChange(TransformType type) -{ - int32_t rkRotateType; - switch (type) { - case ROTATE_90: /**< Rotation by 90 degrees */ - rkRotateType = IM_HAL_TRANSFORM_ROT_90; - break; - case ROTATE_180: /**< Rotation by 180 degrees */ - rkRotateType = IM_HAL_TRANSFORM_ROT_180; - break; - case ROTATE_270: /**< Rotation by 270 degrees */ - rkRotateType = IM_HAL_TRANSFORM_ROT_270; - break; - default: - rkRotateType = 0; /**< No rotation */ - break; - } - return rkRotateType; -} - -int32_t mirrorTypeChange(MirrorType type) -{ - int32_t rkMirrorType; - switch (type) { - case MIRROR_LR: /**< Left and right mirrors */ - rkMirrorType = IM_HAL_TRANSFORM_FLIP_H; - break; - case MIRROR_TB: /**< Top and bottom mirrors */ - rkMirrorType = IM_HAL_TRANSFORM_FLIP_V; - break; - default: - rkMirrorType = 0; - break; - } - return rkMirrorType; -} - -int32_t doFlit(ISurface *srcSurface, IRect *srcRect, ISurface *dstSurface, IRect *dstRect, GfxOpt *opt) -{ - int32_t usage = 0; - uint8_t isYuv = 0; - rga_buffer_t dstRgaBuffer, srcRgaBuffer, bRgbBuffer; - IM_STATUS ret = 0; - im_rect srect; - im_rect drect; - im_rect prect; - int32_t rkBlendType = 0; - int32_t rkRotateType = 0; - int32_t rkMirrorType = 0; - - errno_t eok = memset_s(&dstRgaBuffer, sizeof(dstRgaBuffer), 0, sizeof(dstRgaBuffer)); - if (eok != EOK) { - DISPLAY_LOGE("memset_s failed"); - return false; - } - eok = memset_s(&srcRgaBuffer, sizeof(srcRgaBuffer), 0, sizeof(srcRgaBuffer)); - if (eok != EOK) { - DISPLAY_LOGE("memset_s failed"); - return false; - } - eok = memset_s(&bRgbBuffer, sizeof(bRgbBuffer), 0, sizeof(bRgbBuffer)); - if (eok != EOK) { - DISPLAY_LOGE("memset_s failed"); - return false; - } - eok = memset_s(&srect, sizeof(srect), 0, sizeof(srect)); - if (eok != EOK) { - DISPLAY_LOGE("memset_s failed"); - return false; - } - eok = memset_s(&drect, sizeof(drect), 0, sizeof(drect)); - if (eok != EOK) { - DISPLAY_LOGE("memset_s failed"); - return false; - } - eok = memset_s(&prect, sizeof(prect), 0, sizeof(prect)); - if (eok != EOK) { - DISPLAY_LOGE("memset_s failed"); - return false; - } - if (opt->enGlobalAlpha) { - dstRgaBuffer.global_alpha = opt->globalAlpha; - srcRgaBuffer.global_alpha = opt->globalAlpha; - } - dstRgaBuffer.width = dstSurface->width; - dstRgaBuffer.height = dstSurface->height; - dstRgaBuffer.wstride = ALIGN_UP(dstSurface->width, 16); - dstRgaBuffer.hstride = ALIGN_UP(dstSurface->height, 16); - dstRgaBuffer.format = colorSpaceModeChange(dstSurface->enColorFmt, &isYuv); - dstRgaBuffer.phy_addr = 0; // (void *)dstSurface->phyAddr; - dstRgaBuffer.vir_addr = 0; // dstSurface->virAddr; - dstRgaBuffer.color_space_mode = IM_COLOR_SPACE_DEFAULT; - dstRgaBuffer.fd = (int32_t)dstSurface->phyAddr; - if (isYuv == 1) { - DISPLAY_LOGE("rk gfx do not support dst buffer is yuv format"); - return DISPLAY_PARAM_ERR; - } - - srcRgaBuffer.width = srcSurface->width; - srcRgaBuffer.height = srcSurface->height; - srcRgaBuffer.wstride = ALIGN_UP(srcSurface->width, 16); - srcRgaBuffer.hstride = ALIGN_UP(srcSurface->height, 16); - srcRgaBuffer.phy_addr = 0; // (void *)srcSurface->phyAddr; - srcRgaBuffer.vir_addr = 0; // srcSurface->virAddr; - srcRgaBuffer.format = colorSpaceModeChange(srcSurface->enColorFmt, &isYuv); - srcRgaBuffer.color_space_mode = IM_COLOR_SPACE_DEFAULT; - srcRgaBuffer.fd = (int32_t)srcSurface->phyAddr; - - if ((int)srcRgaBuffer.phy_addr == 0 && srcRgaBuffer.fd == 0 && srcRgaBuffer.vir_addr == NULL) { - DISPLAY_LOGE("source iSurface address error"); - return DISPLAY_PARAM_ERR; - } - - DISPLAY_LOGE("gfx src fd %{public}d, w %{public}d, h %{publuc}d, sw %{public}d sh %{public}d vir %{public}p", - (int32_t)srcSurface->phyAddr, srcSurface->width, srcSurface->height, ALIGN_UP(srcSurface->width, 16), - ALIGN_UP(srcSurface->height, 16), srcRgaBuffer.vir_addr); - DISPLAY_LOGE("gfx dst fd %{public}d, w %{public}d, h %{public}d, sw %{public}d sh %{public}d vir %{public}p", - (int32_t)dstSurface->phyAddr, dstSurface->width, dstSurface->height, ALIGN_UP(dstSurface->width, 16), - ALIGN_UP(dstSurface->height, 16), dstRgaBuffer.vir_addr); - - srect.x = srcRect->x; - srect.y = srcRect->y; - srect.height = srcRect->h; - srect.width = srcRect->w; - drect.x = dstRect->x; - drect.y = dstRect->y; - drect.height = dstRect->h; - drect.width = dstRect->w; - - if (opt->blendType) { - rkBlendType = blendTypeChange(opt->blendType); - if (rkBlendType > 0) { - usage |= rkBlendType; - if (rkBlendType == IM_ALPHA_BLEND_DST_OVER || rkBlendType == IM_ALPHA_BLEND_SRC_OVER) - usage |= IM_ALPHA_BLEND_PRE_MUL; - } else if (rkBlendType == IM_STATUS_NOT_SUPPORTED) { - return DISPLAY_NOT_SUPPORT; - } - } - if (opt->rotateType) { - rkRotateType = TransformTypeChange(opt->rotateType); - if (rkRotateType != 0) - usage |= rkRotateType; - } - if (opt->mirrorType == MIRROR_LR || opt->mirrorType == MIRROR_TB) { - rkMirrorType = mirrorTypeChange(opt->mirrorType); - if (rkMirrorType != 0) - usage |= rkMirrorType; - } - if (opt->enableScale) { - DISPLAY_LOGE("gfx scale from (%{puhblic}d, %{public}d) to (%{public}d, %{public}d)", srcRgaBuffer.width, srcRgaBuffer.height, dstRgaBuffer.width, - dstRgaBuffer.height); - } - usage |= IM_SYNC; - if (isYuv == 1) { - if (rkBlendType == IM_ALPHA_BLEND_SRC_OVER || rkBlendType == IM_ALPHA_BLEND_SRC) { - usage = 0; - if (opt->enableScale == 0) { - eok = memset_s(&srect, sizeof(srect), 0, sizeof(srect)); - if (eok != EOK) { - DISPLAY_LOGE("memset_s failed"); - return false; - } - srect.width = srcRgaBuffer.width; - srect.height = srcRgaBuffer.height; - - eok = memset_s(&drect, sizeof(drect), 0, sizeof(drect)); - if (eok != EOK) { - DISPLAY_LOGE("memset_s failed"); - return false; - } - drect.x = dstRgaBuffer.width - srcRgaBuffer.width; - drect.y = dstRgaBuffer.height - srcRgaBuffer.height; - drect.width = srcRgaBuffer.width; - drect.height = srcRgaBuffer.height; - } - usage = rkRotateType | rkMirrorType | IM_SYNC; - ret = improcess(srcRgaBuffer, dstRgaBuffer, bRgbBuffer, srect, drect, prect, usage); - if (ret != IM_STATUS_SUCCESS) { - DISPLAY_LOGE("gfx improcess %{public}s", imStrError(ret)); - } - } else if (rkBlendType == IM_ALPHA_BLEND_DST_OVER) { - if (grallocFucs == NULL) { - ret = GrallocInitialize(&grallocFucs); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("Gralloc init failed")); - } - AllocInfo info = { - .width = dstRgaBuffer.width, - .height = dstRgaBuffer.height, - .usage = HBM_USE_MEM_DMA | HBM_USE_CPU_READ | HBM_USE_CPU_WRITE, - .format = PIXEL_FMT_RGBA_8888, // srcSurface->enColorFmt, - }; - BufferHandle *buffer = NULL; - - ret = grallocFucs->AllocMem(&info, &buffer); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), DISPLAY_FAILURE, DISPLAY_LOGE("can not alloc memory")); - - bRgbBuffer.width = dstRgaBuffer.width; - bRgbBuffer.height = dstRgaBuffer.height; - bRgbBuffer.wstride = dstRgaBuffer.wstride; - bRgbBuffer.hstride = dstRgaBuffer.hstride; - bRgbBuffer.format = RK_FORMAT_RGBA_8888; // srcRgaBuffer.format; - bRgbBuffer.phy_addr = 0; // (void *) buffer->phyAddr; - bRgbBuffer.vir_addr = 0; // buffer->virAddr; - bRgbBuffer.color_space_mode = dstRgaBuffer.color_space_mode; - bRgbBuffer.fd = (int32_t)buffer->phyAddr; - int ret = memcpy_s(&prect, sizeof(drect), &drect, sizeof(drect)); - if (!ret) { - printf("memcpy_s failed!\n"); - } - ret = improcess(srcRgaBuffer, bRgbBuffer, dstRgaBuffer, srect, prect, drect, usage); - if (ret != IM_STATUS_SUCCESS) { - DISPLAY_LOGE("gfx improcess %{public}s", imStrError(ret)); - } else { - ret = imcopy(bRgbBuffer, dstRgaBuffer); - if (ret != IM_STATUS_SUCCESS) { - DISPLAY_LOGE("gfx improcess %{public}s", imStrError(ret)); - } - } - grallocFucs->FreeMem(buffer); - } - } else { - ret = improcess(srcRgaBuffer, dstRgaBuffer, bRgbBuffer, srect, drect, prect, usage); - if (ret != IM_STATUS_SUCCESS) { - DISPLAY_LOGE("gfx improcess %{public}s", imStrError(ret)); - } - } - if (ret != IM_STATUS_SUCCESS) - return DISPLAY_FAILURE; - else - return DISPLAY_SUCCESS; -} - -int32_t rkBlit(ISurface *srcSurface, IRect *srcRect, ISurface *dstSurface, IRect *dstRect, GfxOpt *opt) -{ - CHECK_NULLPOINTER_RETURN_VALUE(srcSurface, DISPLAY_NULL_PTR); - CHECK_NULLPOINTER_RETURN_VALUE(srcRect, DISPLAY_NULL_PTR); - CHECK_NULLPOINTER_RETURN_VALUE(dstSurface, DISPLAY_NULL_PTR); - CHECK_NULLPOINTER_RETURN_VALUE(dstRect, DISPLAY_NULL_PTR); - CHECK_NULLPOINTER_RETURN_VALUE(opt, DISPLAY_NULL_PTR); - - if (doFlit(srcSurface, srcRect, dstSurface, dstRect, opt) < 0) - return DISPLAY_FAILURE; - else - return DISPLAY_SUCCESS; -} - -int32_t rkSync(int32_t timeOut) -{ - return DISPLAY_SUCCESS; -} - -int32_t GfxInitialize(GfxFuncs **funcs) -{ - DISPLAY_CHK_RETURN((funcs == NULL), DISPLAY_PARAM_ERR, DISPLAY_LOGE("info is null")); - GfxFuncs *gfxFuncs = (GfxFuncs *)malloc(sizeof(GfxFuncs)); - DISPLAY_CHK_RETURN((gfxFuncs == NULL), DISPLAY_NULL_PTR, DISPLAY_LOGE("gfxFuncs is nullptr")); - errno_t eok = memset_s((void *)gfxFuncs, sizeof(GfxFuncs), 0, sizeof(GfxFuncs)); - if (eok != EOK) { - DISPLAY_LOGE("memset_s failed"); - free(gfxFuncs); - return DISPLAY_FAILURE; - } - gfxFuncs->InitGfx = rkInitGfx; - gfxFuncs->DeinitGfx = rkDeinitGfx; - gfxFuncs->FillRect = rkFillRect; - gfxFuncs->Blit = rkBlit; - gfxFuncs->Sync = rkSync; - *funcs = gfxFuncs; - - return DISPLAY_SUCCESS; -} - -int32_t GfxUninitialize(GfxFuncs *funcs) -{ - CHECK_NULLPOINTER_RETURN_VALUE(funcs, DISPLAY_NULL_PTR); - free(funcs); - DISPLAY_LOGI("%s: gfx uninitialize success", __func__); - return DISPLAY_SUCCESS; -} diff --git a/hardware/display/src/display_gralloc/display_gralloc.c b/hardware/display/src/display_gralloc/display_gralloc.c deleted file mode 100644 index 2be67aa2f58057fcca76082f1b3cbcc0f9b22716..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_gralloc/display_gralloc.c +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#include "display_gralloc.h" -#include -#include -#include "display_common.h" -#include "display_gralloc_gbm.h" - -int32_t AllocMem(const AllocInfo *info, BufferHandle **handle) -{ - DISPLAY_CHK_RETURN((info == NULL), DISPLAY_NULL_PTR, DISPLAY_LOGE("info is null")); - DISPLAY_CHK_RETURN((handle == NULL), DISPLAY_NULL_PTR, DISPLAY_LOGE("handle is null")); -#ifdef GRALLOC_GBM_SUPPORT - if (info->usage & HBM_USE_MEM_DMA) { - return GbmAllocMem(info, handle); - } -#endif - DISPLAY_LOGE("the usage is not support 0x%{public}" PRIx64 "", info->usage); - return DISPLAY_NOT_SUPPORT; -} - -void FreeMem(BufferHandle *handle) -{ - DISPLAY_CHK_RETURN_NOT_VALUE((handle == NULL), DISPLAY_LOGE("handle is null")); -#ifdef GRALLOC_GBM_SUPPORT - if (handle->usage & HBM_USE_MEM_DMA) { - GbmFreeMem(handle); - return; - } -#endif -} - -void *Mmap(BufferHandle *handle) -{ - DISPLAY_CHK_RETURN((handle == NULL), NULL, DISPLAY_LOGE("handle is null")); -#ifdef GRALLOC_GBM_SUPPORT - if (handle->usage & HBM_USE_MEM_DMA) { - return GbmMmap(handle); - } -#endif - return NULL; -} - -int32_t Unmap(BufferHandle *handle) -{ - DISPLAY_CHK_RETURN((handle == NULL), DISPLAY_NULL_PTR, DISPLAY_LOGE("handle is null")); -#ifdef GRALLOC_GBM_SUPPORT - if (handle->usage & HBM_USE_MEM_DMA) { - return GbmUnmap(handle); - } -#endif - return DISPLAY_NOT_SUPPORT; -} - -int32_t FlushCache(BufferHandle *handle) -{ - DISPLAY_CHK_RETURN((handle == NULL), DISPLAY_NULL_PTR, DISPLAY_LOGE("handle is null")); -#ifdef GRALLOC_GBM_SUPPORT - if (handle->usage & HBM_USE_MEM_DMA) { - return GbmFlushCache(handle); - } -#endif - return DISPLAY_NOT_SUPPORT; -} - -int32_t InvalidateCache(BufferHandle *handle) -{ - DISPLAY_CHK_RETURN((handle == NULL), DISPLAY_NULL_PTR, DISPLAY_LOGE("handle is null")); -#ifdef GRALLOC_GBM_SUPPORT - if (handle->usage & HBM_USE_MEM_DMA) { - return GbmInvalidateCache(handle); - } -#endif - return DISPLAY_NOT_SUPPORT; -} - -int32_t GrallocUninitialize(GrallocFuncs *funcs) -{ - DISPLAY_CHK_RETURN(funcs == NULL, DISPLAY_PARAM_ERR, DISPLAY_LOGE("funcs is null")); - DISPLAY_DEBUGLOG(); -#ifdef GRALLOC_GBM_SUPPORT - if (GbmGrallocUninitialize() != DISPLAY_SUCCESS) { - DISPLAY_LOGE("gbm uninit failed"); - } -#endif - free(funcs); - return DISPLAY_SUCCESS; -} - -int32_t GrallocInitialize(GrallocFuncs **funcs) -{ - DISPLAY_DEBUGLOG(); - DISPLAY_CHK_RETURN((funcs == NULL), DISPLAY_PARAM_ERR, DISPLAY_LOGE("funcs is null")); - GrallocFuncs *grallocFuncs = (GrallocFuncs *)malloc(sizeof(GrallocFuncs)); - DISPLAY_CHK_RETURN((grallocFuncs == NULL), DISPLAY_NULL_PTR, DISPLAY_LOGE("memset_s failed")); - errno_t eok = memset_s(grallocFuncs, sizeof(GrallocFuncs), 0, sizeof(GrallocFuncs)); - DISPLAY_CHK_RETURN((eok != EOK), DISPLAY_FAILURE, DISPLAY_LOGE("memset_s failed")); - // initialize gbm gralloc -#ifdef GRALLOC_GBM_SUPPORT - int ret = GbmGrallocInitialize(); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), ret, DISPLAY_LOGE("gbm initial"); - free(grallocFuncs)); -#endif - grallocFuncs->AllocMem = AllocMem; - grallocFuncs->FreeMem = FreeMem; - grallocFuncs->Mmap = Mmap; - grallocFuncs->Unmap = Unmap; - grallocFuncs->InvalidateCache = InvalidateCache; - grallocFuncs->FlushCache = FlushCache; - *funcs = grallocFuncs; - return DISPLAY_SUCCESS; -} diff --git a/hardware/display/src/display_gralloc/display_gralloc_gbm.c b/hardware/display/src/display_gralloc/display_gralloc_gbm.c deleted file mode 100644 index 872a54d71e4d7cdc4b5283f28e3467cf2d2f7d25..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_gralloc/display_gralloc_gbm.c +++ /dev/null @@ -1,432 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#include "display_gralloc_gbm.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "wayland_drm_auth_client.h" -#include "drm_fourcc.h" -#include "hisilicon_drm.h" -#include "hi_gbm.h" -#include "hdf_dlist.h" -#include "display_gralloc_private.h" -#include "display_common.h" - -const char *g_drmFileNode = "/dev/dri/renderD128"; -static GrallocManager *g_grallocManager = NULL; -static pthread_mutex_t g_lock; - -typedef struct { - uint32_t drmFormat; - PixelFormat pixFormat; -} PixelFormatConvertTbl; - -typedef struct { - uint32_t value; - const char *str; -} ValueStrMap; - -static GrallocManager *GetGrallocManager(void) -{ - if (g_grallocManager == NULL) { - g_grallocManager = (GrallocManager *)malloc(sizeof(GrallocManager)); - errno_t eok = memset_s(g_grallocManager, sizeof(GrallocManager), 0, sizeof(GrallocManager)); - if (eok != EOK) { - DISPLAY_LOGE("memset_s failed"); - } - if (g_grallocManager == NULL) { - DISPLAY_LOGE("gralloc manager malloc failed"); - } - } - return g_grallocManager; -} - -const char *GetPixelFmtStr(PixelFormat format) -{ - static const ValueStrMap pixelStrMaps[] = { - {PIXEL_FMT_CLUT8, "PIXEL_FMT_CLUT8"}, {PIXEL_FMT_CLUT1, "PIXEL_FMT_CLUT1"}, - {PIXEL_FMT_CLUT4, "PIXEL_FMT_CLUT4"}, {PIXEL_FMT_RGB_565, "PIXEL_FMT_RGB_565"}, - {PIXEL_FMT_RGBA_5658, "IXEL_FMT_RGBA_5658"}, {PIXEL_FMT_RGBX_4444, "PIXEL_FMT_RGBX_4444"}, - {PIXEL_FMT_RGBA_4444, "PIXEL_FMT_RGBA_4444"}, {PIXEL_FMT_RGB_444, "PIXEL_FMT_RGB_444"}, - {PIXEL_FMT_RGBX_5551, "PIXEL_FMT_RGBX_5551"}, {PIXEL_FMT_RGBA_5551, "PIXEL_FMT_RGBA_5551"}, - {PIXEL_FMT_RGB_555, "PIXEL_FMT_RGB_555"}, {PIXEL_FMT_RGBX_8888, "PIXEL_FMT_RGBX_8888"}, - {PIXEL_FMT_RGBA_8888, "PIXEL_FMT_RGBA_8888"}, {PIXEL_FMT_RGB_888, "PIXEL_FMT_RGB_888"}, - {PIXEL_FMT_BGR_565, "PIXEL_FMT_BGR_565"}, {PIXEL_FMT_BGRX_4444, "PIXEL_FMT_BGRX_4444"}, - {PIXEL_FMT_BGRA_4444, "PIXEL_FMT_BGRA_4444"}, {PIXEL_FMT_BGRX_5551, "PIXEL_FMT_BGRX_5551"}, - {PIXEL_FMT_BGRA_5551, "PIXEL_FMT_BGRA_5551"}, {PIXEL_FMT_BGRX_8888, "PIXEL_FMT_BGRX_8888"}, - {PIXEL_FMT_BGRA_8888, "PIXEL_FMT_BGRA_8888"}, {PIXEL_FMT_YUV_422_I, "PIXEL_FMT_YUV_422_I"}, - {PIXEL_FMT_YUV_422_I, "PIXEL_FMT_YUV_422_I"}, {PIXEL_FMT_YCBCR_422_SP, "PIXEL_FMT_YCBCR_422_SP"}, - {PIXEL_FMT_YCRCB_422_SP, "PIXEL_FMT_YCRCB_422_SP"}, {PIXEL_FMT_YCBCR_420_SP, "PIXEL_FMT_YCBCR_420_SP"}, - {PIXEL_FMT_YCRCB_420_SP, "PIXEL_FMT_YCRCB_420_SP"}, {PIXEL_FMT_YCBCR_422_P, "PIXEL_FMT_YCBCR_422_P"}, - {PIXEL_FMT_YCRCB_422_P, "PIXEL_FMT_YCRCB_422_P"}, {PIXEL_FMT_YCBCR_420_P, "PIXEL_FMT_YCBCR_420_P"}, - {PIXEL_FMT_YCRCB_420_P, "PIXEL_FMT_YCRCB_420_P"}, {PIXEL_FMT_YUYV_422_PKG, "PIXEL_FMT_YUYV_422_PKG"}, - {PIXEL_FMT_UYVY_422_PKG, "PIXEL_FMT_UYVY_422_PKG"}, {PIXEL_FMT_YVYU_422_PKG, "PIXEL_FMT_YVYU_422_PKG"}, - {PIXEL_FMT_VYUY_422_PKG, "PIXEL_FMT_VYUY_422_PKG"}, {PIXEL_FMT_BUTT, "PIXEL_FMT_BUTT"}, - }; - static const char *unknown = "unknown format"; - for (uint32_t i = 0; i < sizeof(pixelStrMaps) / sizeof(pixelStrMaps[0]); i++) { - if (pixelStrMaps[i].value == format) { - return pixelStrMaps[i].str; - } - } - DISPLAY_LOGE("GetPixelFmtStr unknown format %{public}d", format); - return unknown; -} - -const char *GetDrmFmtStr(uint32_t format) -{ - static const ValueStrMap formatStrMaps[] = { - {DRM_FORMAT_C8, "DRM_FORMAT_C8" }, {DRM_FORMAT_R8, "DRM_FORMAT_R8" }, - {DRM_FORMAT_R16, "DRM_FORMAT_R16"}, {DRM_FORMAT_RG88, "DRM_FORMAT_RG88"}, - {DRM_FORMAT_GR88, "DRM_FORMAT_GR88"}, {DRM_FORMAT_RG1616, "DRM_FORMAT_RG1616"}, - {DRM_FORMAT_GR1616, "DRM_FORMAT_GR1616"}, {DRM_FORMAT_RGB332, "DRM_FORMAT_RGB332"}, - {DRM_FORMAT_BGR233, "DRM_FORMAT_BGR233"}, {DRM_FORMAT_XRGB4444, "DRM_FORMAT_XRGB4444"}, - {DRM_FORMAT_XBGR4444, "DRM_FORMAT_XBGR4444"}, {DRM_FORMAT_RGBX4444, "DRM_FORMAT_RGBX4444"}, - {DRM_FORMAT_BGRX4444, "DRM_FORMAT_BGRX4444"}, {DRM_FORMAT_ARGB4444, "DRM_FORMAT_ARGB4444"}, - {DRM_FORMAT_ABGR4444, "DRM_FORMAT_ABGR4444"}, {DRM_FORMAT_RGBA4444, "DRM_FORMAT_RGBA4444"}, - {DRM_FORMAT_BGRA4444, "DRM_FORMAT_BGRA4444"}, {DRM_FORMAT_XRGB1555, "DRM_FORMAT_XRGB1555"}, - {DRM_FORMAT_XBGR1555, "DRM_FORMAT_XBGR1555"}, {DRM_FORMAT_RGBX5551, "DRM_FORMAT_RGBX5551"}, - {DRM_FORMAT_BGRX5551, "DRM_FORMAT_BGRX5551"}, {DRM_FORMAT_ARGB1555, "DRM_FORMAT_ARGB1555"}, - {DRM_FORMAT_ABGR1555, "DRM_FORMAT_ABGR1555"}, {DRM_FORMAT_RGBA5551, "DRM_FORMAT_RGBA5551"}, - {DRM_FORMAT_BGRA5551, "DRM_FORMAT_BGRA5551"}, {DRM_FORMAT_RGB565, "DRM_FORMAT_RGB565"}, - {DRM_FORMAT_BGR565, "DRM_FORMAT_BGR565"}, {DRM_FORMAT_RGB888, "DRM_FORMAT_RGB888"}, - {DRM_FORMAT_BGR888, "DRM_FORMAT_BGR888"}, {DRM_FORMAT_XRGB8888, "DRM_FORMAT_XRGB8888"}, - {DRM_FORMAT_XBGR8888, "DRM_FORMAT_XBGR8888"}, {DRM_FORMAT_RGBX8888, "DRM_FORMAT_RGBX8888"}, - {DRM_FORMAT_BGRX8888, "DRM_FORMAT_BGRX8888"}, {DRM_FORMAT_ARGB8888, "DRM_FORMAT_ARGB8888"}, - {DRM_FORMAT_ABGR8888, "DRM_FORMAT_ABGR8888"}, {DRM_FORMAT_RGBA8888, "DRM_FORMAT_RGBA8888"}, - {DRM_FORMAT_BGRA8888, "DRM_FORMAT_BGRA8888"}, {DRM_FORMAT_XRGB2101010, "DRM_FORMAT_XRGB2101010"}, - {DRM_FORMAT_BGRX1010102, "DRM_FORMAT_BGRX1010102"}, {DRM_FORMAT_ARGB2101010, "DRM_FORMAT_ARGB2101010"}, - {DRM_FORMAT_ABGR2101010, "DRM_FORMAT_ABGR2101010"}, {DRM_FORMAT_RGBA1010102, "DRM_FORMAT_RGBA1010102"}, - {DRM_FORMAT_YVYU, "DRM_FORMAT_YVYU"}, {DRM_FORMAT_UYVY, "DRM_FORMAT_UYVY"}, - {DRM_FORMAT_VYUY, "DRM_FORMAT_VYUY"}, {DRM_FORMAT_AYUV, "DRM_FORMAT_AYUV"}, - {DRM_FORMAT_NV12, "DRM_FORMAT_NV12"}, {DRM_FORMAT_NV21, "DRM_FORMAT_NV21"}, - {DRM_FORMAT_NV16, "DRM_FORMAT_NV16"}, {DRM_FORMAT_NV61, "DRM_FORMAT_NV61"}, - {DRM_FORMAT_NV24, "DRM_FORMAT_NV24"}, {DRM_FORMAT_NV42, "DRM_FORMAT_NV42"}, - {DRM_FORMAT_YUV410, "DRM_FORMAT_YUV410"}, {DRM_FORMAT_YVU410, "DRM_FORMAT_YVU410"}, - {DRM_FORMAT_YUV411, "DRM_FORMAT_YUV411"}, {DRM_FORMAT_YVU411, "DRM_FORMAT_YVU411"}, - {DRM_FORMAT_YUV420, "DRM_FORMAT_YUV420"}, {DRM_FORMAT_YVU420, "DRM_FORMAT_YVU420"}, - {DRM_FORMAT_YUV422, "DRM_FORMAT_YUV422"}, {DRM_FORMAT_YVU422, "DRM_FORMAT_YVU422"}, - {DRM_FORMAT_YUV444, "DRM_FORMAT_YUV444"}, {DRM_FORMAT_YVU444, "DRM_FORMAT_YVU444"}, - }; - - static const char *unknown = "unknown drm format"; - for (uint32_t i = 0; i < sizeof(formatStrMaps) / sizeof(formatStrMaps[0]); i++) { - if (formatStrMaps[i].value == format) { - return formatStrMaps[i].str; - } - } - DISPLAY_LOGE("GetDrmFmtStr unknown format %{public}d", format); - return unknown; -} - -static uint32_t ConvertFormatToDrm(PixelFormat fmtIn) -{ - static const PixelFormatConvertTbl convertTable[] = { - {DRM_FORMAT_RGBX8888, PIXEL_FMT_RGBX_8888}, {DRM_FORMAT_RGBA8888, PIXEL_FMT_RGBA_8888}, - {DRM_FORMAT_RGB888, PIXEL_FMT_RGB_888}, {DRM_FORMAT_RGB565, PIXEL_FMT_BGR_565}, - {DRM_FORMAT_BGRX4444, PIXEL_FMT_BGRX_4444}, {DRM_FORMAT_BGRA4444, PIXEL_FMT_BGRA_4444}, - {DRM_FORMAT_RGBA4444, PIXEL_FMT_RGBA_4444}, {DRM_FORMAT_RGBX4444, PIXEL_FMT_RGBX_4444}, - {DRM_FORMAT_BGRX5551, PIXEL_FMT_BGRX_5551}, {DRM_FORMAT_BGRA5551, PIXEL_FMT_BGRA_5551}, - {DRM_FORMAT_BGRX8888, PIXEL_FMT_BGRX_8888}, {DRM_FORMAT_BGRA8888, PIXEL_FMT_BGRA_8888}, - {DRM_FORMAT_NV12, PIXEL_FMT_YCBCR_420_SP}, {DRM_FORMAT_NV21, PIXEL_FMT_YCRCB_420_SP}, - {DRM_FORMAT_YUV420, PIXEL_FMT_YCBCR_420_P}, {DRM_FORMAT_YVU420, PIXEL_FMT_YCRCB_420_P}, - {DRM_FORMAT_NV16, PIXEL_FMT_YCBCR_422_SP}, {DRM_FORMAT_NV61, PIXEL_FMT_YCRCB_422_SP}, - {DRM_FORMAT_YUV422, PIXEL_FMT_YCBCR_422_P}, {DRM_FORMAT_YVU422, PIXEL_FMT_YCRCB_422_P}, - }; - uint32_t fmtOut = 0; - for (uint32_t i = 0; i < sizeof(convertTable) / sizeof(convertTable[0]); i++) { - if (convertTable[i].pixFormat == fmtIn) { - fmtOut = convertTable[i].drmFormat; - } - } - DISPLAY_DEBUGLOG("fmtIn %{public}d : %{public}s, outFmt %{public}d : %{public}s", fmtIn, GetPixelFmtStr(fmtIn), fmtOut, - GetDrmFmtStr(fmtOut)); - return fmtOut; -} - -static uint64_t ConvertUsageToGbm(uint64_t inUsage) -{ - uint64_t outUsage = GBM_BO_USE_TEXTURING; - if (inUsage & HBM_USE_CPU_READ) { - outUsage |= GBM_BO_USE_SW_READ_OFTEN; - } - if (inUsage & HBM_USE_CPU_WRITE) { - outUsage |= GBM_BO_USE_SW_WRITE_OFTEN; - } - DISPLAY_DEBUGLOG("outUsage 0x%{public}" PRIx64 "", outUsage); - return outUsage; -} - -static int32_t InitGbmDevice(const char *drmFile, GrallocManager *grallocManager) -{ - DISPLAY_DEBUGLOG(); - if (grallocManager->gbmDevice == NULL) { - char path[PATH_MAX] = {0}; - if (realpath(drmFile, path) == NULL) { - DISPLAY_LOGE(" drm File : %{public}s is not a realpath, errno: %{public}s", drmFile, strerror(errno)); - return DISPLAY_PARAM_ERR; - } - int drmFd = open(path, O_RDWR); - if (drmFd < 0) { - DISPLAY_LOGE("drm file:%{public}s open failed %{public}s", drmFile, strerror(errno)); - return DISPLAY_FD_ERR; - } - /* - if (WaylandDrmAuth(drmFd) != AUTH_SCUCCESS) { - DISPLAY_LOGE("drm authentication failed, may have no permission to allocate memory"); - } - */ - drmDropMaster(drmFd); - struct gbm_device *gbmDevice = hdi_gbm_create_device(drmFd); - grallocManager->drmFd = drmFd; - if (gbmDevice == NULL) { - close(drmFd); - grallocManager->drmFd = -1; - DISPLAY_LOGE("gbm device create failed"); - return DISPLAY_FAILURE; - } - grallocManager->gbmDevice = gbmDevice; - grallocManager->drmFd = drmFd; - DListHeadInit(&grallocManager->gbmBoHead); - } - return DISPLAY_SUCCESS; -} - -static void DeInitGbmDevice(GrallocManager *grallocManager) -{ - DISPLAY_DEBUGLOG(); - hdi_gbm_device_destroy(grallocManager->gbmDevice); - if (grallocManager->drmFd > 0) { - close(grallocManager->drmFd); - grallocManager->drmFd = -1; - } - grallocManager->gbmDevice = NULL; -} - -static int32_t DmaBufferSync(const BufferHandle *handle, bool start) -{ - DISPLAY_DEBUGLOG(); - struct dma_buf_sync syncPrm; - errno_t eok = memset_s(&syncPrm, sizeof(syncPrm), 0, sizeof(syncPrm)); - DISPLAY_CHK_RETURN((eok != EOK), DISPLAY_PARAM_ERR, DISPLAY_LOGE("dma buffer sync memset_s failed")); - - if (handle->usage & HBM_USE_CPU_WRITE) { - syncPrm.flags |= DMA_BUF_SYNC_WRITE; - } - - if (handle->usage & HBM_USE_CPU_READ) { - syncPrm.flags |= DMA_BUF_SYNC_READ; - } - - if (start) { - syncPrm.flags |= DMA_BUF_SYNC_START; - } else { - syncPrm.flags |= DMA_BUF_SYNC_END; - } - int retry = 6; - int ret; - do { - ret = ioctl(handle->fd, DMA_BUF_IOCTL_SYNC, &syncPrm); - } while ((retry--) && (ret != -EAGAIN) && (ret != -EINTR)); - - if (ret < 0) { - DISPLAY_LOGE("sync failed"); - return DISPLAY_SYS_BUSY; - } - return DISPLAY_SUCCESS; -} - -static void InitBufferHandle(struct gbm_bo *bo, int fd, const AllocInfo *info, PriBufferHandle *buffer) -{ - BufferHandle *bufferHandle = &(buffer->hdl); - bufferHandle->fd = fd; - bufferHandle->reserveFds = 0; - bufferHandle->reserveInts = 0; - bufferHandle->stride = hdi_gbm_bo_get_stride(bo); - bufferHandle->width = hdi_gbm_bo_get_width(bo); - bufferHandle->height = hdi_gbm_bo_get_height(bo); - bufferHandle->usage = info->usage; - bufferHandle->format = info->format; - bufferHandle->virAddr = NULL; - bufferHandle->size = hdi_gbm_bo_get_stride(bo) * hdi_gbm_bo_get_height(bo); -} - -int32_t GbmAllocMem(const AllocInfo *info, BufferHandle **buffer) -{ - DISPLAY_CHK_RETURN((info == NULL), DISPLAY_NULL_PTR, DISPLAY_LOGE("info is null")); - DISPLAY_CHK_RETURN((buffer == NULL), DISPLAY_NULL_PTR, DISPLAY_LOGE("buffer is null")); - PriBufferHandle *priBuffer = NULL; - uint32_t drmFmt = ConvertFormatToDrm(info->format); - DISPLAY_CHK_RETURN((drmFmt == INVALID_PIXEL_FMT), DISPLAY_NOT_SUPPORT, - DISPLAY_LOGE("format %{public}d can not support", info->format)); - DISPLAY_DEBUGLOG("requeset width %{public}d, heigt %{public}d, format %{public}d", - info->width, info->height, drmFmt); - - GRALLOC_LOCK(); - GrallocManager *grallocManager = GetGrallocManager(); - DISPLAY_CHK_RETURN((grallocManager == NULL), DISPLAY_PARAM_ERR, DISPLAY_LOGE("gralloc manager failed"); - GRALLOC_UNLOCK()); - struct gbm_bo *bo = - hdi_gbm_bo_create(grallocManager->gbmDevice, info->width, info->height, drmFmt, ConvertUsageToGbm(info->usage)); - DISPLAY_CHK_RETURN((bo == NULL), DISPLAY_NOMEM, DISPLAY_LOGE("gbm create bo failed"); GRALLOC_UNLOCK()); - - int fd = hdi_gbm_bo_get_fd(bo); - DISPLAY_CHK_RETURN((fd < 0), DISPLAY_FD_ERR, DISPLAY_LOGE("gbm can not get fd"); hdi_gbm_bo_destroy(bo); \ - GRALLOC_UNLOCK()); - - priBuffer = (PriBufferHandle *)malloc(sizeof(PriBufferHandle)); - DISPLAY_CHK_RETURN((priBuffer == NULL), DISPLAY_NULL_PTR, DISPLAY_LOGE("bufferhandle malloc failed"); goto error); - - errno_t eok = memset_s(priBuffer, sizeof(PriBufferHandle), 0, sizeof(PriBufferHandle)); - if (eok != EOK) { - DISPLAY_LOGE("memset_s failed"); - } - DISPLAY_CHK_RETURN((eok != EOK), DISPLAY_PARAM_ERR, DISPLAY_LOGE("memset_s failed"); goto error); - - InitBufferHandle(bo, fd, info, priBuffer); - *buffer = &priBuffer->hdl; - hdi_gbm_bo_destroy(bo); - GRALLOC_UNLOCK(); - return DISPLAY_SUCCESS; -error: - close(fd); - hdi_gbm_bo_destroy(bo); - if (priBuffer != NULL) { - free(priBuffer); - } - GRALLOC_UNLOCK(); - return DISPLAY_FAILURE; -} - -static void CloseBufferHandle(BufferHandle *handle) -{ - DISPLAY_CHK_RETURN_NOT_VALUE((handle == NULL), DISPLAY_LOGE("buffer is null")); - if (handle->fd >= 0) { - close(handle->fd); - handle->fd = -1; - } - const uint32_t reserveFds = handle->reserveFds; - for (uint32_t i = 0; i < reserveFds; i++) { - if (handle->reserve[i] >= 0) { - close(handle->reserve[i]); - handle->reserve[i] = -1; - } - } -} - -void GbmFreeMem(BufferHandle *buffer) -{ - DISPLAY_DEBUGLOG(); - DISPLAY_CHK_RETURN_NOT_VALUE((buffer == NULL), DISPLAY_LOGE("buffer is null")); - if ((buffer->virAddr != NULL) && (GbmUnmap(buffer) != DISPLAY_SUCCESS)) { - DISPLAY_LOGE("freeMem unmap buffer failed"); - } - CloseBufferHandle(buffer); - free(buffer); -} - -void *GbmMmap(BufferHandle *buffer) -{ - void *virAddr = NULL; - DISPLAY_DEBUGLOG(); - if (buffer == NULL) { - DISPLAY_LOGE("gbmmap the buffer handle is NULL"); - return NULL; - } - if (buffer->virAddr != NULL) { - DISPLAY_DEBUGLOG("the buffer has virtual addr"); - return buffer->virAddr; - } - virAddr = mmap(NULL, buffer->size, PROT_READ | PROT_WRITE, MAP_SHARED, buffer->fd, 0); - if (virAddr == MAP_FAILED) { - DISPLAY_LOGE("mmap failed errno %{public}s, fd : %{public}d", strerror(errno), buffer->fd); - } - buffer->virAddr = virAddr; - return virAddr; -} - -int32_t GbmUnmap(BufferHandle *buffer) -{ - DISPLAY_DEBUGLOG(); - if (buffer == NULL) { - DISPLAY_LOGE("gbmumap the buffer handle is null"); - return DISPLAY_NULL_PTR; - } - - if (buffer->virAddr == NULL) { - DISPLAY_LOGE("virAddr is NULL , has not map the buffer"); - return DISPLAY_PARAM_ERR; - } - int ret = munmap(buffer->virAddr, buffer->size); - if (ret != 0) { - DISPLAY_LOGE("munmap failed err: %{public}s", strerror(errno)); - return DISPLAY_FAILURE; - } - buffer->virAddr = NULL; - return DISPLAY_SUCCESS; -} - -int32_t GbmInvalidateCache(BufferHandle *buffer) -{ - DISPLAY_DEBUGLOG(); - return DmaBufferSync(buffer, true); -} - -int32_t GbmFlushCache(BufferHandle *buffer) -{ - DISPLAY_DEBUGLOG(); - return DmaBufferSync(buffer, false); -} - -int32_t GbmGrallocUninitialize(void) -{ - DISPLAY_DEBUGLOG(); - GRALLOC_LOCK(); - GrallocManager *grallocManager = GetGrallocManager(); - DISPLAY_CHK_RETURN((grallocManager == NULL), DISPLAY_PARAM_ERR, DISPLAY_LOGE("gralloc manager failed"); \ - GRALLOC_UNLOCK()); - grallocManager->referCount--; - if (grallocManager->referCount < 0) { - DeInitGbmDevice(grallocManager); - free(g_grallocManager); - g_grallocManager = NULL; - } - GRALLOC_UNLOCK(); - return DISPLAY_SUCCESS; -} - -int32_t GbmGrallocInitialize(void) -{ - DISPLAY_DEBUGLOG(); - GRALLOC_LOCK(); - GrallocManager *grallocManager = GetGrallocManager(); - DISPLAY_CHK_RETURN((grallocManager == NULL), DISPLAY_PARAM_ERR, DISPLAY_LOGE("gralloc manager failed"); \ - GRALLOC_UNLOCK()); - int ret = InitGbmDevice(g_drmFileNode, grallocManager); - DISPLAY_CHK_RETURN((ret != DISPLAY_SUCCESS), ret, DISPLAY_LOGE("gralloc manager failed"); GRALLOC_UNLOCK()); - grallocManager->referCount++; - GRALLOC_UNLOCK(); - return DISPLAY_SUCCESS; -} \ No newline at end of file diff --git a/hardware/display/src/display_gralloc/display_gralloc_gbm.h b/hardware/display/src/display_gralloc/display_gralloc_gbm.h deleted file mode 100644 index c41252fe6bda23663f1c09c358f03c58919d0b56..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_gralloc/display_gralloc_gbm.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef DISPLAY_GRALLOC_GBM_H -#define DISPLAY_GRALLOC_GBM_H -#include "display_type.h" -#include "hdf_dlist.h" -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - struct gbm_device *gbmDevice; - int drmFd; - struct DListHead gbmBoHead; - int32_t referCount; -} GrallocManager; - -typedef struct { - struct DListHead entry; - struct gbm_bo *bo; - int fd; -} GbmBoList; - -int32_t GbmAllocMem(const AllocInfo *info, BufferHandle **buffer); -void GbmFreeMem(BufferHandle *buffer); -void *GbmMmap(BufferHandle *buffer); -int32_t GbmUnmap(BufferHandle *buffer); -int32_t GbmInvalidateCache(BufferHandle *buffer); -int32_t GbmFlushCache(BufferHandle *buffer); -int32_t GbmGrallocUninitialize(void); -int32_t GbmGrallocInitialize(void); - -#ifdef GRALLOC_LOCK_DEBUG -#define GRALLOC_LOCK(format, ...) \ - do { \ - HDF_LOGE("[%{public}s@%{public}s:%{public}d]" format "\n", __FUNCTION__, __FILE__, __LINE__, ##__VA_ARGS__); \ - pthread_mutex_lock(&g_lock); \ - } while (0) - -#define GRALLOC_UNLOCK(format, ...) \ - do { \ - HDF_LOGE("[%{public}s@%{public}s:%{public}d]" format "\n", __FUNCTION__, __FILE__, __LINE__, ##__VA_ARGS__); \ - pthread_mutex_unlock(&g_lock); \ - } while (0) -#else -#define GRALLOC_LOCK(format, ...) \ - do { \ - pthread_mutex_lock(&g_lock); \ - } while (0) - -#define GRALLOC_UNLOCK(format, ...) \ - do { \ - pthread_mutex_unlock(&g_lock); \ - } while (0) -#endif - -#ifdef __cplusplus -} -#endif - -#endif // DISPLAY_GRALLOC_GBM_H diff --git a/hardware/display/src/display_gralloc/hi_gbm.c b/hardware/display/src/display_gralloc/hi_gbm.c deleted file mode 100644 index 0c3c790c3668cb76116b84577afcd6a38e309b4d..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_gralloc/hi_gbm.c +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#include "hi_gbm.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include "display_common.h" -#include "hi_gbm_internal.h" -#ifdef ROCKCHIP_CMA -#define ROCKCHIP_BO_CONTIG (1 << 0) -#endif - -typedef struct { - uint32_t numPlanes; - uint32_t radio[MAX_PLANES]; -} PlaneLayoutInfo; - -typedef struct { - uint32_t format; - uint32_t bitsPerPixel; // bits per pixel for first plane - const PlaneLayoutInfo *planes; -} FormatInfo; - -static const PlaneLayoutInfo g_yuv420SPLayout = { - .numPlanes = 2, - .radio = { 4, 2 }, -}; - -static const PlaneLayoutInfo g_yuv420PLayout = { - .numPlanes = 3, - .radio = { 4, 1, 1 }, -}; - -static const PlaneLayoutInfo g_yuv422SPLayout = { - .numPlanes = 2, - .radio = { 4, 4 }, -}; - -static const PlaneLayoutInfo g_yuv422PLayout = { - .numPlanes = 3, - .radio = { 4, 2, 2 }, -}; - -static const FormatInfo *GetFormatInfo(uint32_t format) -{ - static const FormatInfo fmtInfos[] = { - {DRM_FORMAT_RGBX8888, 32, NULL}, {DRM_FORMAT_RGBA8888, 32, NULL}, - {DRM_FORMAT_BGRX8888, 32, NULL}, {DRM_FORMAT_BGRA8888, 32, NULL}, - {DRM_FORMAT_RGB888, 24, NULL}, {DRM_FORMAT_RGB565, 16, NULL}, - {DRM_FORMAT_BGRX4444, 16, NULL}, {DRM_FORMAT_BGRA4444, 16, NULL}, - {DRM_FORMAT_RGBA4444, 16, NULL}, {DRM_FORMAT_RGBX4444, 16, NULL}, - {DRM_FORMAT_BGRX5551, 16, NULL}, {DRM_FORMAT_BGRA5551, 16, NULL}, - {DRM_FORMAT_NV12, 8, &g_yuv420SPLayout}, {DRM_FORMAT_NV21, 8, &g_yuv420SPLayout}, - {DRM_FORMAT_NV16, 8, &g_yuv422SPLayout}, {DRM_FORMAT_NV61, 8, &g_yuv422SPLayout}, - {DRM_FORMAT_YUV420, 8, &g_yuv420PLayout}, {DRM_FORMAT_YVU420, 8, &g_yuv420PLayout}, - {DRM_FORMAT_YUV422, 8, &g_yuv422PLayout}, {DRM_FORMAT_YVU422, 8, &g_yuv422PLayout}, - }; - - for (uint32_t i = 0; i < sizeof(fmtInfos) / sizeof(FormatInfo); i++) { - if (fmtInfos[i].format == format) { - return &fmtInfos[i]; - } - } - DISPLAY_LOGE("the format can not support"); - return NULL; -} - -void InitGbmBo(struct gbm_bo *bo, const struct drm_mode_create_dumb *dumb) -{ - DISPLAY_CHK_RETURN_NOT_VALUE((dumb == NULL), DISPLAY_LOGE("dumb is null")); - DISPLAY_CHK_RETURN_NOT_VALUE((bo == NULL), DISPLAY_LOGE("bo is null")); - bo->stride = dumb->pitch; - bo->size = dumb->size; - bo->handle = dumb->handle; -} - -static uint32_t AdjustStrideFromFormat(uint32_t format, uint32_t height) -{ - uint32_t tmpHeight = height; - const FormatInfo *fmtInfo = GetFormatInfo(format); - if ((fmtInfo != NULL) && (fmtInfo->planes != NULL)) { - uint32_t sum = fmtInfo->planes->radio[0]; - for (uint32_t i = 1; (i < fmtInfo->planes->numPlanes) && (i < MAX_PLANES); i++) { - sum += fmtInfo->planes->radio[i]; - } - if (sum > 0) { - tmpHeight = DIV_ROUND_UP((height * sum), fmtInfo->planes->radio[0]); - } - DISPLAY_DEBUGLOG("height adjust to : %{public}d", tmpHeight); - } - return tmpHeight; -} - -struct gbm_bo *hdi_gbm_bo_create(struct gbm_device *gbm, uint32_t width, uint32_t height, uint32_t format, - uint32_t usage) -{ - DISPLAY_UNUSED(usage); - int ret; - struct gbm_bo *bo; - struct drm_mode_create_dumb dumb = { 0 }; - const FormatInfo *fmtInfo = GetFormatInfo(format); - DISPLAY_CHK_RETURN((fmtInfo == NULL), NULL, DISPLAY_LOGE("formt: 0x%{public}x can not get layout info", format)); - bo = (struct gbm_bo *)calloc(1, sizeof(struct gbm_bo)); - DISPLAY_CHK_RETURN((bo == NULL), NULL, DISPLAY_LOGE("gbm bo create fialed no memery")); - (void)memset_s(bo, sizeof(struct gbm_bo), 0, sizeof(struct gbm_bo)); - bo->width = width; - bo->height = height; - bo->gbm = gbm; - bo->format = format; - // init create_dumb - dumb.height = ALIGN_UP(height, HEIGHT_ALIGN); - dumb.width = ALIGN_UP(AdjustStrideFromFormat(format, width), WIDTH_ALIGN); - dumb.flags = 0; - dumb.bpp = fmtInfo->bitsPerPixel; - ret = drmIoctl(gbm->fd, DRM_IOCTL_MODE_CREATE_DUMB, &dumb); - DISPLAY_LOGI("fmt 0x%{public}x create dumb width: %{public}d height: %{public}d bpp: %{public}u pitch %{public}d " - "size %{public}llu", - format, dumb.width, dumb.height, dumb.bpp, dumb.pitch, dumb.size); - DISPLAY_CHK_RETURN((ret != 0), NULL, DISPLAY_LOGE("DRM_IOCTL_MODE_CREATE_DUMB failed errno %{public}d", errno)); - InitGbmBo(bo, &dumb); - DISPLAY_LOGI( - "fmt 0x%{public}x create dumb width: %{public}d height: %{public}d stride %{public}d size %{public}u", format, - bo->width, bo->height, bo->stride, bo->size); - return bo; -} - -struct gbm_device *hdi_gbm_create_device(int fd) -{ - struct gbm_device *gbm; - gbm = (struct gbm_device *)calloc(1, sizeof(struct gbm_device)); - DISPLAY_CHK_RETURN((gbm == NULL), NULL, DISPLAY_LOGE("memory calloc failed")); - gbm->fd = fd; - return gbm; -} - -void hdi_gbm_device_destroy(struct gbm_device *gbm) -{ - free(gbm); -} - -uint32_t hdi_gbm_bo_get_stride(struct gbm_bo *bo) -{ - DISPLAY_CHK_RETURN((bo == NULL), 0, DISPLAY_LOGE("the bo is null")); - return bo->stride; -} - -uint32_t hdi_gbm_bo_get_width(struct gbm_bo *bo) -{ - DISPLAY_CHK_RETURN((bo == NULL), 0, DISPLAY_LOGE("the bo is null")); - return bo->width; -} - -uint32_t hdi_gbm_bo_get_height(struct gbm_bo *bo) -{ - DISPLAY_CHK_RETURN((bo == NULL), 0, DISPLAY_LOGE("the bo is null")); - return bo->height; -} - -void hdi_gbm_bo_destroy(struct gbm_bo *bo) -{ - int ret; - DISPLAY_CHK_RETURN_NOT_VALUE((bo == NULL), DISPLAY_LOGE("the bo is null")); - struct drm_mode_destroy_dumb dumb = { 0 }; - dumb.handle = bo->handle; - ret = drmIoctl(bo->gbm->fd, DRM_IOCTL_MODE_DESTROY_DUMB, &dumb); - DISPLAY_CHK_RETURN_NOT_VALUE((ret), DISPLAY_LOGE("dumb buffer destroy failed errno %{public}d", errno)); - free(bo); -} - -int hdi_gbm_bo_get_fd(struct gbm_bo *bo) -{ - int fd, ret; - ret = drmPrimeHandleToFD(bo->gbm->fd, bo->handle, DRM_CLOEXEC | DRM_RDWR, &fd); - DISPLAY_CHK_RETURN((ret), -1, - DISPLAY_LOGE("drmPrimeHandleToFD failed ret: %{public}d errno: %{public}d", ret, errno)); - return fd; -} diff --git a/hardware/display/src/display_gralloc/hi_gbm.h b/hardware/display/src/display_gralloc/hi_gbm.h deleted file mode 100644 index 906e286949d85c6fafb5fed7e5b14e8b9473c431..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_gralloc/hi_gbm.h +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef HI_GBM_H -#define HI_GBM_H -#include - -#if defined(__cplusplus) -extern "C" { -#endif - -struct gbm_device; -struct gbm_bo; - -enum gbm_bo_flags { - /* * - * Buffer is going to be presented to the screen using an API such as KMS - */ - GBM_BO_USE_SCANOUT = (1 << 0), - /* * - * Buffer is going to be used as cursor - */ - GBM_BO_USE_CURSOR = (1 << 1), - /* * - * Deprecated - */ - GBM_BO_USE_CURSOR_64X64 = GBM_BO_USE_CURSOR, - /* * - * Buffer is to be used for rendering - for example it is going to be used - * as the storage for a color buffer - */ - GBM_BO_USE_RENDERING = (1 << 2), - /* * - * Deprecated - */ - GBM_BO_USE_WRITE = (1 << 3), - /* * - * Buffer is guaranteed to be laid out linearly in memory. That is, the - * buffer is laid out as an array with 'height' blocks, each block with - * length 'stride'. Each stride is in the same order as the rows of the - * buffer. This is intended to be used with buffers that will be accessed - * via dma-buf mmap(). - */ - GBM_BO_USE_LINEAR = (1 << 4), - /* * - * The buffer will be used as a texture that will be sampled from. - */ - GBM_BO_USE_TEXTURING = (1 << 5), - /* * - * The buffer will be written to by a camera subsystem. - */ - GBM_BO_USE_CAMERA_WRITE = (1 << 6), - /* * - * The buffer will be read from by a camera subsystem. - */ - GBM_BO_USE_CAMERA_READ = (1 << 7), - /* * - * Buffer inaccessible to unprivileged users. - */ - GBM_BO_USE_PROTECTED = (1 << 8), - /* * - * These flags specify the frequency of software access. These flags do not - * guarantee the buffer is linear, but do guarantee gbm_bo_map(..) will - * present a linear view. - */ - GBM_BO_USE_SW_READ_OFTEN = (1 << 9), - GBM_BO_USE_SW_READ_RARELY = (1 << 10), - GBM_BO_USE_SW_WRITE_OFTEN = (1 << 11), - GBM_BO_USE_SW_WRITE_RARELY = (1 << 12), - /* * - * The buffer will be written by a video decode accelerator. - */ - GBM_BO_USE_HW_VIDEO_DECODER = (1 << 13), -}; - -struct gbm_device *hdi_gbm_create_device(int fd); -void hdi_gbm_device_destroy(struct gbm_device *gbm); -struct gbm_bo *hdi_gbm_bo_create(struct gbm_device *gbm, uint32_t width, uint32_t height, - uint32_t format, uint32_t usage); -uint32_t hdi_gbm_bo_get_stride(struct gbm_bo *bo); -uint32_t hdi_gbm_bo_get_width(struct gbm_bo *bo); -uint32_t hdi_gbm_bo_get_height(struct gbm_bo *bo); -void hdi_gbm_bo_destroy(struct gbm_bo *bo); -int hdi_gbm_bo_get_fd(struct gbm_bo *bo); - -#if defined(__cplusplus) -} -#endif -#endif // HI_GBM_H diff --git a/hardware/display/src/display_gralloc/hi_gbm_internal.h b/hardware/display/src/display_gralloc/hi_gbm_internal.h deleted file mode 100644 index 3155bb669334833f45da03be5db37f6b47d59653..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_gralloc/hi_gbm_internal.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef HI_GBM_INTERNEL_H -#define HI_GBM_INTERNEL_H - -#define DIV_ROUND_UP(n, d) (((n) + (d)-1) / (d)) -#define ALIGN_UP(x, a) ((((x) + ((a)-1)) / (a)) * (a)) -#define HEIGHT_ALIGN 2U -#define WIDTH_ALIGN 8U - -#define MAX_PLANES 3 - -struct gbm_device { - int fd; -}; - -struct gbm_bo { - struct gbm_device *gbm; - uint32_t width; - uint32_t height; - uint32_t format; - uint32_t handle; - uint32_t stride; - uint32_t size; -}; - -#endif // HI_GBM_INTERNEL_H \ No newline at end of file diff --git a/hardware/display/src/display_gralloc/hisilicon_drm.h b/hardware/display/src/display_gralloc/hisilicon_drm.h deleted file mode 100644 index eed389e88acc3154ba29a3d0010f3a463b18f7b1..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_gralloc/hisilicon_drm.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef HISILICON_DRM_H -#define HISILICON_DRM_H - -#include "drm.h" - -#if defined(__cplusplus) -extern "C" { -#endif -#define DRM_HISILICON_GEM_FD_TO_PHYADDR 0x1 - -struct DrmHisiliconPhyaddr { - /* * return the physical address */ - __u64 phyaddr; - /* * dmabuf file descriptor */ - __s32 fd; -}; - -#define DRM_IOCTL_HISILICON_GEM_FD_TO_PHYADDR \ - DRM_IOWR(DRM_COMMAND_BASE + DRM_HISILICON_GEM_FD_TO_PHYADDR, struct DrmHisiliconPhyaddr) - -#if defined(__cplusplus) -} -#endif - -#endif // HISILICON_DRM_H diff --git a/hardware/display/src/display_gralloc/wayland_drm_auth_client.c b/hardware/display/src/display_gralloc/wayland_drm_auth_client.c deleted file mode 100644 index d5b1cda395ed9826bc310d0004f96548b5836b5c..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_gralloc/wayland_drm_auth_client.c +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#include "wayland_drm_auth_client.h" -#include -#include -#include "xf86drm.h" -#include "wayland-client.h" -#include "drm-auth-client-protocol.h" -#include "display_common.h" - -typedef struct { - struct wl_display *display; - struct wl_registry *registry; - struct wl_drm_auth *drmAuth; - enum wl_drm_auth_status authStatus; -} WaylandDisplay; - -const char *AUTH_INTERFACE_NAME = "wl_drm_auth"; - -static void AuthenticationStatus(void *data, struct wl_drm_auth *wlDrmAuth, uint32_t status) -{ - (void)wlDrmAuth; - DISPLAY_DEBUGLOG("AuthenticationStatus the status %{public}d", status); - WaylandDisplay *display = data; - display->authStatus = status; -} - -static const struct wl_drm_auth_listener g_drmAuthListener = { AuthenticationStatus }; - -static void RegistryHandleGlobal(void *data, struct wl_registry *registry, uint32_t id, const char *interface, - uint32_t version) -{ - WaylandDisplay *display = data; - DISPLAY_DEBUGLOG("interface global : %{public}s", interface); - if (strcmp(interface, wl_drm_auth_interface.name) == 0) { - display->drmAuth = wl_registry_bind(registry, id, &wl_drm_auth_interface, 1); - wl_drm_auth_add_listener(display->drmAuth, &g_drmAuthListener, display); - } -} - -static void RegistryHandleGlobalRemove(void *data, struct wl_registry *registry, uint32_t name) -{ - DISPLAY_DEBUGLOG("RegistryHandleGlobalRemove %{publuc}d name ", name); -} - -static const struct wl_registry_listener g_registrListener = { RegistryHandleGlobal, RegistryHandleGlobalRemove }; - -void DeInitWaylandClient(WaylandDisplay *display) -{ - DISPLAY_DEBUGLOG("DeInitWaylandClient"); - DISPLAY_CHK_RETURN_NOT_VALUE((display == NULL), DISPLAY_DEBUGLOG("display is NULL")); - if (display->registry != NULL) { - wl_registry_destroy(display->registry); - } - - if (display->display != NULL) { - wl_display_flush(display->display); - wl_display_disconnect(display->display); - } - free(display); -} - -WaylandDisplay *InitWaylandClient(void) -{ - WaylandDisplay *dsp; - int ret; - dsp = calloc(1, sizeof(WaylandDisplay)); - DISPLAY_CHK_RETURN((dsp == NULL), NULL, DISPLAY_LOGE("can not alloc memory errno : %{public}d", errno)); - dsp->display = wl_display_connect(NULL); - DISPLAY_CHK_RETURN((dsp->display == NULL), NULL, DISPLAY_LOGE("display connect failed, errno: %{public}d", errno); - DeInitWaylandClient(dsp)); - dsp->registry = wl_display_get_registry(dsp->display); - DISPLAY_CHK_RETURN((dsp->registry == NULL), NULL, DISPLAY_LOGE("can not get registry"); - DeInitWaylandClient(dsp)); - ret = wl_registry_add_listener(dsp->registry, &g_registrListener, dsp); - DISPLAY_CHK_RETURN((ret < 0), NULL, DISPLAY_LOGE("add listener failed")); - wl_display_roundtrip(dsp->display); // for get registry - wl_display_roundtrip(dsp->display); // for the listener will bind the service - return dsp; -} - -int32_t WaylandDrmAuth(int drmFd) -{ - WaylandDisplay *dsp; - drm_magic_t magic; - int ret; - dsp = InitWaylandClient(); - DISPLAY_CHK_RETURN((dsp == NULL), AUTH_FAILED, DISPLAY_LOGE("init wayland client failed")); - ret = drmGetMagic(drmFd, &magic); - DISPLAY_CHK_RETURN((ret != 0), AUTH_FAILED, DISPLAY_LOGE("can not get magic")); - DISPLAY_CHK_RETURN((dsp->drmAuth == NULL), AUTH_FAILED, DISPLAY_LOGE("drm auth service no find")); - wl_drm_auth_authenticate(dsp->drmAuth, magic); - wl_display_roundtrip(dsp->display); // wait for authenticate status return - DISPLAY_DEBUGLOG("the status of authenticate is %{public}d", dsp->authStatus); - if (dsp->authStatus == WL_DRM_AUTH_STATUS_SUCCESS) { - ret = AUTH_SCUCCESS; - } - DeInitWaylandClient(dsp); - return ret; -} diff --git a/hardware/display/src/display_gralloc/wayland_drm_auth_client.h b/hardware/display/src/display_gralloc/wayland_drm_auth_client.h deleted file mode 100644 index 69be0fa04193612989e7fb62f207faf385455bf6..0000000000000000000000000000000000000000 --- a/hardware/display/src/display_gralloc/wayland_drm_auth_client.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef WAYLAND_DRM_AUTH_CLIENT_H -#define WAYLAND_DRM_AUTH_CLIENT_H -#include - -typedef enum { - AUTH_SCUCCESS = 0, /* * authenticate sucess */ - AUTH_FAILED = 1 /* * authenticate failed */ -} AuthStatus; - -/* * - * @brief authenticate the drm fd - * - * it will connect to the wayland server, and will block to authenticate the drm fd, then disconnect the wayland - * - * @param display Indicates the pointer of wayland display - * - * @param drmFd Indicates the file descriptor of drm device - * - * @return Returns AUTH_SCUCCESS if the operation is successful else returns AUTH_FAILED - * otherwise. - * @since 1.0 - * @version 1.0 - */ -int32_t WaylandDrmAuth(int drmFd); - -#endif // WAYLAND_DRM_AUTH_CLIENT_H diff --git a/hardware/gpu/BUILD.gn b/hardware/gpu/BUILD.gn deleted file mode 100755 index b6da2d6ef2e1663fa092bfa3cda0d15a1380bf4b..0000000000000000000000000000000000000000 --- a/hardware/gpu/BUILD.gn +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (C) 2021 HiHope Open Source Organization . -# 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") - -config("libmali-bifrost-g52-g2p0-ohos") { - include_dirs = [ "include" ] - cflags = [ - "-Wno-incompatible-pointer-types", - "-Werror", - "-Wimplicit-function-declaration", - "-Wno-error=unused-variable", - ] - cflags = [] -} - -ohos_prebuilt_shared_library("mali-bifrost-g52-g2p0-ohos") { - if (target_cpu == "arm") { - source = "lib/libmali-bifrost-g52-g2p0-ohos.so" - } else if (target_cpu == "arm64") { - source = "lib64/libmali-bifrost-g52-g2p0-wayland.so" - } - install_images = [ chipset_base_dir ] - subsystem_name = "hdf" - part_name = "display_device_driver" - install_enable = true - symlink_target_name = [ - "libEGL.so", - "libGLESv1.so", - "libGLESv2.so", - "libGLESv3.so", - "libmali.so.0", - "libmali.so.1", - ] -} diff --git a/hardware/gpu/include/gbm.h b/hardware/gpu/include/gbm.h deleted file mode 100644 index 1e8bc46f881ddca09ad721e11ebd5a8055da0d9d..0000000000000000000000000000000000000000 --- a/hardware/gpu/include/gbm.h +++ /dev/null @@ -1,355 +0,0 @@ -/* - * Copyright (c) 2021 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. - */ - -#ifndef _GBM_H_ -#define _GBM_H_ - -#define __GBM__ 1 - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - - -/** - * \file gbm.h - * \brief Generic Buffer Manager - */ - -struct gbm_device; -struct gbm_bo; -struct gbm_iSurface; - -/** - * \mainpage The Generic Buffer Manager - * - * This module provides an abstraction that the caller can use to request a - * buffer from the underlying memory management system for the platform. - * - * This allows the creation of portable code whilst still allowing access to - * the underlying memory manager. - */ - -/** - * Abstraction representing the handle to a buffer allocated by the - * manager - */ -union gbm_bo_handle { - void *ptr; - int32_t s32; - uint32_t u32; - int64_t s64; - uint64_t u64; -}; - -/** Format of the allocated buffer */ -enum gbm_bo_format { - /** RGB with 8 bits per channel in a 32 bit value */ - GBM_BO_FORMAT_XRGB8888, - /** ARGB with 8 bits per channel in a 32 bit value */ - GBM_BO_FORMAT_ARGB8888 -}; - - -/** - * The FourCC format codes are taken from the drm_fourcc.h definition, and - * re-namespaced. New GBM formats must not be added, unless they are - * identical ports from drm_fourcc. - */ -#define __gbm_fourcc_code(a, b, c, d) ((uint32_t)(a) | ((uint32_t)(b) << 8) | \ - ((uint32_t)(c) << 16) | ((uint32_t)(d) << 24)) - -#define GBM_FORMAT_BIG_ENDIAN (1<<31) /* format is big endian instead of little endian */ - -/* color index */ -#define GBM_FORMAT_C8 __gbm_fourcc_code('C', '8', ' ', ' ') /* [7:0] C */ - -/* 8 bpp Red */ -#define GBM_FORMAT_R8 __gbm_fourcc_code('R', '8', ' ', ' ') /* [7:0] R */ - -/* 16 bpp RG */ -#define GBM_FORMAT_GR88 __gbm_fourcc_code('G', 'R', '8', '8') /* [15:0] G:R 8:8 little endian */ - -/* 8 bpp RGB */ -#define GBM_FORMAT_RGB332 __gbm_fourcc_code('R', 'G', 'B', '8') /* [7:0] R:G:B 3:3:2 */ -#define GBM_FORMAT_BGR233 __gbm_fourcc_code('B', 'G', 'R', '8') /* [7:0] B:G:R 2:3:3 */ - -/* 16 bpp RGB */ -#define GBM_FORMAT_XRGB4444 __gbm_fourcc_code('X', 'R', '1', '2') /* [15:0] x:R:G:B 4:4:4:4 little endian */ -#define GBM_FORMAT_XBGR4444 __gbm_fourcc_code('X', 'B', '1', '2') /* [15:0] x:B:G:R 4:4:4:4 little endian */ -#define GBM_FORMAT_RGBX4444 __gbm_fourcc_code('R', 'X', '1', '2') /* [15:0] R:G:B:x 4:4:4:4 little endian */ -#define GBM_FORMAT_BGRX4444 __gbm_fourcc_code('B', 'X', '1', '2') /* [15:0] B:G:R:x 4:4:4:4 little endian */ - -#define GBM_FORMAT_ARGB4444 __gbm_fourcc_code('A', 'R', '1', '2') /* [15:0] A:R:G:B 4:4:4:4 little endian */ -#define GBM_FORMAT_ABGR4444 __gbm_fourcc_code('A', 'B', '1', '2') /* [15:0] A:B:G:R 4:4:4:4 little endian */ -#define GBM_FORMAT_RGBA4444 __gbm_fourcc_code('R', 'A', '1', '2') /* [15:0] R:G:B:A 4:4:4:4 little endian */ -#define GBM_FORMAT_BGRA4444 __gbm_fourcc_code('B', 'A', '1', '2') /* [15:0] B:G:R:A 4:4:4:4 little endian */ - -#define GBM_FORMAT_XRGB1555 __gbm_fourcc_code('X', 'R', '1', '5') /* [15:0] x:R:G:B 1:5:5:5 little endian */ -#define GBM_FORMAT_XBGR1555 __gbm_fourcc_code('X', 'B', '1', '5') /* [15:0] x:B:G:R 1:5:5:5 little endian */ -#define GBM_FORMAT_RGBX5551 __gbm_fourcc_code('R', 'X', '1', '5') /* [15:0] R:G:B:x 5:5:5:1 little endian */ -#define GBM_FORMAT_BGRX5551 __gbm_fourcc_code('B', 'X', '1', '5') /* [15:0] B:G:R:x 5:5:5:1 little endian */ - -#define GBM_FORMAT_ARGB1555 __gbm_fourcc_code('A', 'R', '1', '5') /* [15:0] A:R:G:B 1:5:5:5 little endian */ -#define GBM_FORMAT_ABGR1555 __gbm_fourcc_code('A', 'B', '1', '5') /* [15:0] A:B:G:R 1:5:5:5 little endian */ -#define GBM_FORMAT_RGBA5551 __gbm_fourcc_code('R', 'A', '1', '5') /* [15:0] R:G:B:A 5:5:5:1 little endian */ -#define GBM_FORMAT_BGRA5551 __gbm_fourcc_code('B', 'A', '1', '5') /* [15:0] B:G:R:A 5:5:5:1 little endian */ - -#define GBM_FORMAT_RGB565 __gbm_fourcc_code('R', 'G', '1', '6') /* [15:0] R:G:B 5:6:5 little endian */ -#define GBM_FORMAT_BGR565 __gbm_fourcc_code('B', 'G', '1', '6') /* [15:0] B:G:R 5:6:5 little endian */ - -/* 24 bpp RGB */ -#define GBM_FORMAT_RGB888 __gbm_fourcc_code('R', 'G', '2', '4') /* [23:0] R:G:B little endian */ -#define GBM_FORMAT_BGR888 __gbm_fourcc_code('B', 'G', '2', '4') /* [23:0] B:G:R little endian */ - -/* 32 bpp RGB */ -#define GBM_FORMAT_XRGB8888 __gbm_fourcc_code('X', 'R', '2', '4') /* [31:0] x:R:G:B 8:8:8:8 little endian */ -#define GBM_FORMAT_XBGR8888 __gbm_fourcc_code('X', 'B', '2', '4') /* [31:0] x:B:G:R 8:8:8:8 little endian */ -#define GBM_FORMAT_RGBX8888 __gbm_fourcc_code('R', 'X', '2', '4') /* [31:0] R:G:B:x 8:8:8:8 little endian */ -#define GBM_FORMAT_BGRX8888 __gbm_fourcc_code('B', 'X', '2', '4') /* [31:0] B:G:R:x 8:8:8:8 little endian */ - -#define GBM_FORMAT_ARGB8888 __gbm_fourcc_code('A', 'R', '2', '4') /* [31:0] A:R:G:B 8:8:8:8 little endian */ -#define GBM_FORMAT_ABGR8888 __gbm_fourcc_code('A', 'B', '2', '4') /* [31:0] A:B:G:R 8:8:8:8 little endian */ -#define GBM_FORMAT_RGBA8888 __gbm_fourcc_code('R', 'A', '2', '4') /* [31:0] R:G:B:A 8:8:8:8 little endian */ -#define GBM_FORMAT_BGRA8888 __gbm_fourcc_code('B', 'A', '2', '4') /* [31:0] B:G:R:A 8:8:8:8 little endian */ - -#define GBM_FORMAT_XRGB2101010 __gbm_fourcc_code('X', 'R', '3', '0') /* [31:0] x:R:G:B 2:10:10:10 little endian */ -#define GBM_FORMAT_XBGR2101010 __gbm_fourcc_code('X', 'B', '3', '0') /* [31:0] x:B:G:R 2:10:10:10 little endian */ -#define GBM_FORMAT_RGBX1010102 __gbm_fourcc_code('R', 'X', '3', '0') /* [31:0] R:G:B:x 10:10:10:2 little endian */ -#define GBM_FORMAT_BGRX1010102 __gbm_fourcc_code('B', 'X', '3', '0') /* [31:0] B:G:R:x 10:10:10:2 little endian */ - -#define GBM_FORMAT_ARGB2101010 __gbm_fourcc_code('A', 'R', '3', '0') /* [31:0] A:R:G:B 2:10:10:10 little endian */ -#define GBM_FORMAT_ABGR2101010 __gbm_fourcc_code('A', 'B', '3', '0') /* [31:0] A:B:G:R 2:10:10:10 little endian */ -#define GBM_FORMAT_RGBA1010102 __gbm_fourcc_code('R', 'A', '3', '0') /* [31:0] R:G:B:A 10:10:10:2 little endian */ -#define GBM_FORMAT_BGRA1010102 __gbm_fourcc_code('B', 'A', '3', '0') /* [31:0] B:G:R:A 10:10:10:2 little endian */ - -/* packed YCbCr */ -#define GBM_FORMAT_YUYV __gbm_fourcc_code('Y', 'U', 'Y', 'V') /* [31:0] Cr0:Y1:Cb0:Y0 8:8:8:8 little endian */ -#define GBM_FORMAT_YVYU __gbm_fourcc_code('Y', 'V', 'Y', 'U') /* [31:0] Cb0:Y1:Cr0:Y0 8:8:8:8 little endian */ -#define GBM_FORMAT_UYVY __gbm_fourcc_code('U', 'Y', 'V', 'Y') /* [31:0] Y1:Cr0:Y0:Cb0 8:8:8:8 little endian */ -#define GBM_FORMAT_VYUY __gbm_fourcc_code('V', 'Y', 'U', 'Y') /* [31:0] Y1:Cb0:Y0:Cr0 8:8:8:8 little endian */ - -#define GBM_FORMAT_AYUV __gbm_fourcc_code('A', 'Y', 'U', 'V') /* [31:0] A:Y:Cb:Cr 8:8:8:8 little endian */ - -/* - * 2 plane YCbCr - * index 0 = Y plane, [7:0] Y - * index 1 = Cr:Cb plane, [15:0] Cr:Cb little endian - * or - * index 1 = Cb:Cr plane, [15:0] Cb:Cr little endian - */ -#define GBM_FORMAT_NV12 __gbm_fourcc_code('N', 'V', '1', '2') /* 2x2 subsampled Cr:Cb plane */ -#define GBM_FORMAT_NV21 __gbm_fourcc_code('N', 'V', '2', '1') /* 2x2 subsampled Cb:Cr plane */ -#define GBM_FORMAT_NV16 __gbm_fourcc_code('N', 'V', '1', '6') /* 2x1 subsampled Cr:Cb plane */ -#define GBM_FORMAT_NV61 __gbm_fourcc_code('N', 'V', '6', '1') /* 2x1 subsampled Cb:Cr plane */ - -/* - * 3 plane YCbCr - * index 0: Y plane, [7:0] Y - * index 1: Cb plane, [7:0] Cb - * index 2: Cr plane, [7:0] Cr - * or - * index 1: Cr plane, [7:0] Cr - * index 2: Cb plane, [7:0] Cb - */ -#define GBM_FORMAT_YUV410 __gbm_fourcc_code('Y', 'U', 'V', '9') /* 4x4 subsampled Cb (1) and Cr (2) planes */ -#define GBM_FORMAT_YVU410 __gbm_fourcc_code('Y', 'V', 'U', '9') /* 4x4 subsampled Cr (1) and Cb (2) planes */ -#define GBM_FORMAT_YUV411 __gbm_fourcc_code('Y', 'U', '1', '1') /* 4x1 subsampled Cb (1) and Cr (2) planes */ -#define GBM_FORMAT_YVU411 __gbm_fourcc_code('Y', 'V', '1', '1') /* 4x1 subsampled Cr (1) and Cb (2) planes */ -#define GBM_FORMAT_YUV420 __gbm_fourcc_code('Y', 'U', '1', '2') /* 2x2 subsampled Cb (1) and Cr (2) planes */ -#define GBM_FORMAT_YVU420 __gbm_fourcc_code('Y', 'V', '1', '2') /* 2x2 subsampled Cr (1) and Cb (2) planes */ -#define GBM_FORMAT_YUV422 __gbm_fourcc_code('Y', 'U', '1', '6') /* 2x1 subsampled Cb (1) and Cr (2) planes */ -#define GBM_FORMAT_YVU422 __gbm_fourcc_code('Y', 'V', '1', '6') /* 2x1 subsampled Cr (1) and Cb (2) planes */ -#define GBM_FORMAT_YUV444 __gbm_fourcc_code('Y', 'U', '2', '4') /* non-subsampled Cb (1) and Cr (2) planes */ -#define GBM_FORMAT_YVU444 __gbm_fourcc_code('Y', 'V', '2', '4') /* non-subsampled Cr (1) and Cb (2) planes */ - - -/** - * Flags to indicate the intended use for the buffer - these are passed into - * gbm_bo_create(). The caller must set the union of all the flags that are - * appropriate - * - * \sa Use gbm_device_is_format_supported() to check if the combination of format - * and use flags are supported - */ -enum gbm_bo_flags { - /** - * Buffer is going to be presented to the screen using an API such as KMS - */ - GBM_BO_USE_SCANOUT = (1 << 0), - /** - * Buffer is going to be used as cursor - */ - GBM_BO_USE_CURSOR = (1 << 1), - /** - * Deprecated - */ - GBM_BO_USE_CURSOR_64X64 = GBM_BO_USE_CURSOR, - /** - * Buffer is to be used for rendering - for example it is going to be used - * as the storage for a color buffer - */ - GBM_BO_USE_RENDERING = (1 << 2), - /** - * Buffer can be used for gbm_bo_write. This is guaranteed to work - * with GBM_BO_USE_CURSOR, but may not work for other combinations. - */ - GBM_BO_USE_WRITE = (1 << 3), - /** - * Buffer is linear, i.e. not tiled. - */ - GBM_BO_USE_LINEAR = (1 << 4), -}; - -int gbm_device_get_fd(struct gbm_device *gbm); - -const char *gbm_device_get_backend_name(struct gbm_device *gbm); - -int gbm_device_is_format_supported(struct gbm_device *gbm, uint32_t format, uint32_t usage); - -int gbm_device_get_format_modifier_plane_count(struct gbm_device *gbm, uint32_t format, uint64_t modifier); - -void gbm_device_destroy(struct gbm_device *gbm); - -struct gbm_device *gbm_create_device(int fd); - -struct gbm_bo *gbm_bo_create(struct gbm_device *gbm, uint32_t width, uint32_t height, uint32_t format, uint32_t flags); - -struct gbm_bo *gbm_bo_create_with_modifiers(struct gbm_device *gbm, - uint32_t width, - uint32_t height, - uint32_t format, - const uint64_t *modifiers, - const unsigned int count); - -#define GBM_BO_IMPORT_WL_BUFFER 0x5501 -#define GBM_BO_IMPORT_EGL_IMAGE 0x5502 -#define GBM_BO_IMPORT_FD 0x5503 -#define GBM_BO_IMPORT_FD_MODIFIER 0x5504 - -struct gbm_import_fd_data { - int fd; - uint32_t width; - uint32_t height; - uint32_t stride; - uint32_t format; -}; - -struct gbm_import_fd_modifier_data { - uint32_t width; - uint32_t height; - uint32_t format; - uint32_t num_fds; - int fds[4]; - int strides[4]; - int offsets[4]; - uint64_t modifier; -}; - -struct gbm_bo *bm_bo_import(struct gbm_device *gbm, uint32_t type, void *buffer, uint32_t usage); - -/** - * Flags to indicate the type of mapping for the buffer - these are - * passed into gbm_bo_map(). The caller must set the union of all the - * flags that are appropriate. - * - * These flags are independent of the GBM_BO_USE_* creation flags. However, - * mapping the buffer may require copying to/from a staging buffer. - * - * See also: pipe_transfer_usage - */ -enum gbm_bo_transfer_flags { - /** - * Buffer contents read back (or accessed directly) at transfer - * create time. - */ - GBM_BO_TRANSFER_READ = (1 << 0), - /** - * Buffer contents will be written back at unmap time - * (or modified as a result of being accessed directly). - */ - GBM_BO_TRANSFER_WRITE = (1 << 1), - /** - * Read/modify/write - */ - GBM_BO_TRANSFER_READ_WRITE = (GBM_BO_TRANSFER_READ | GBM_BO_TRANSFER_WRITE), -}; - -void *gbm_bo_map(struct gbm_bo *bo, - uint32_t x, uint32_t y, uint32_t width, uint32_t height, - uint32_t flags, uint32_t *stride, void **map_data); - -void gbm_bo_unmap(struct gbm_bo *bo, void *map_data); - -uint32_t gbm_bo_get_width(struct gbm_bo *bo); - -uint32_t gbm_bo_get_height(struct gbm_bo *bo); - -uint32_t gbm_bo_get_stride(struct gbm_bo *bo); - -uint32_t gbm_bo_get_stride_for_plane(struct gbm_bo *bo, int plane); - -uint32_t gbm_bo_get_format(struct gbm_bo *bo); - -uint32_t gbm_bo_get_bpp(struct gbm_bo *bo); - -uint32_t gbm_bo_get_offset(struct gbm_bo *bo, int plane); - -struct gbm_device *gbm_bo_get_device(struct gbm_bo *bo); - -union gbm_bo_handle gbm_bo_get_handle(struct gbm_bo *bo); - -int gbm_bo_get_fd(struct gbm_bo *bo); - -uint64_t gbm_bo_get_modifier(struct gbm_bo *bo); - -int gbm_bo_get_plane_count(struct gbm_bo *bo); - -union gbm_bo_handle gbm_bo_get_handle_for_plane(struct gbm_bo *bo, int plane); - -int gbm_bo_write(struct gbm_bo *bo, const void *buf, size_t count); - -void gbm_bo_set_user_data(struct gbm_bo *bo, void *data, void (*destroy_user_data)(struct gbm_bo *, void *)); - -void *gbm_bo_get_user_data(struct gbm_bo *bo); - -void gbm_bo_destroy(struct gbm_bo *bo); - -struct gbm_iSurface *gbm_iSurface_create(struct gbm_device *gbm, - uint32_t width, uint32_t height, - uint32_t format, uint32_t flags); - -struct gbm_iSurface *gbm_iSurface_create_with_modifiers(struct gbm_device *gbm, - uint32_t width, uint32_t height, - uint32_t format, - const uint64_t *modifiers, - const unsigned int count); - -struct gbm_bo *gbm_iSurface_lock_front_buffer(struct gbm_iSurface *iSurface); - -void gbm_iSurface_release_buffer(struct gbm_iSurface *iSurface, struct gbm_bo *bo); - -int gbm_iSurface_has_free_buffers(struct gbm_iSurface *iSurface); - -void gbm_iSurface_destroy(struct gbm_iSurface *iSurface); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/hardware/gpu/lib/libmali-bifrost-g52-g2p0-ohos.so b/hardware/gpu/lib/libmali-bifrost-g52-g2p0-ohos.so deleted file mode 100644 index b26b8fe4c812397974e789f734f125652db4872a..0000000000000000000000000000000000000000 --- a/hardware/gpu/lib/libmali-bifrost-g52-g2p0-ohos.so +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3744a81e260907994ee6ec817340ca19a3577ea7c8d4125ae7beba86175edbee -size 52550604 diff --git a/hardware/gpu/lib64/libmali-bifrost-g52-g2p0-wayland.so b/hardware/gpu/lib64/libmali-bifrost-g52-g2p0-wayland.so deleted file mode 100644 index fb647f46aeb1443ff0ea00845e37509392b6017b..0000000000000000000000000000000000000000 Binary files a/hardware/gpu/lib64/libmali-bifrost-g52-g2p0-wayland.so and /dev/null differ diff --git a/hardware/isp/bin/ispserver b/hardware/isp/bin/ispserver deleted file mode 100644 index ed2444235148e77713aad68c79a4599215fc2772..0000000000000000000000000000000000000000 Binary files a/hardware/isp/bin/ispserver and /dev/null differ diff --git a/hardware/isp/bin64/ispserver b/hardware/isp/bin64/ispserver deleted file mode 100644 index c59ad612fea6974e54ec6c6fa3aa34ac53e4c83b..0000000000000000000000000000000000000000 Binary files a/hardware/isp/bin64/ispserver and /dev/null differ diff --git a/hardware/isp/etc/iqfil.json b/hardware/isp/etc/iqfil.json deleted file mode 100644 index 6d892a2b54a877e2676802749c9c4b79dc80e57e..0000000000000000000000000000000000000000 --- a/hardware/isp/etc/iqfil.json +++ /dev/null @@ -1,4650 +0,0 @@ -{ - "sensor_calib": { - "resolution": { - "width": 3264, - "height": 2448 - }, - "Gain2Reg": { - "GainMode": "EXPGAIN_MODE_LINEAR", - "GainRange": [1, 16, 64, 0, 1, 64, 1024], - "GainRange_len": 7 - }, - "Time2Reg": { - "fCoeff": [0, 0, 1, 0.5] - }, - "CISGainSet": { - "CISAgainRange": { - "Min": 1, - "Max": 16 - }, - "CISExtraAgainRange": { - "Min": 1, - "Max": 1 - }, - "CISDgainRange": { - "Min": 1, - "Max": 1 - }, - "CISIspDgainRange": { - "Min": 1, - "Max": 1 - }, - "CISHdrGainIndSetEn": 1 - }, - "CISTimeSet": { - "Linear": { - "CISTimeRegMin": 4, - "CISLinTimeRegMaxFac": { - "fCoeff": [1, 4] - }, - "CISTimeRegOdevity": { - "fCoeff": [1, 0] - } - }, - "Hdr": [{ - "name": "HDR_TWO_FRAME", - "CISTimeRegUnEqualEn": 1, - "CISTimeRegMin": 4, - "CISHdrTimeRegSumFac": { - "fCoeff": [1, 4] - }, - "CISTimeRegMax": { - "Coeff": [0, 0, 0] - }, - "CISTimeRegOdevity": { - "fCoeff": [1, 0] - } - }, { - "name": "HDR_THREE_FRAME", - "CISTimeRegUnEqualEn": 1, - "CISTimeRegMin": 4, - "CISHdrTimeRegSumFac": { - "fCoeff": [1, 4] - }, - "CISTimeRegMax": { - "Coeff": [0, 0, 0] - }, - "CISTimeRegOdevity": { - "fCoeff": [1, 0] - } - }] - }, - "CISHdrSet": { - "hdr_en": 0, - "hdr_mode": "RK_AIQ_ISP_HDR_MODE_2_LINE_HDR", - "line_mode": "RK_AIQ_SENSOR_HDR_LINE_MODE_STAGGER" - }, - "CISDcgSet": { - "Linear": { - "support_en": 0, - "dcg_optype": "RK_AIQ_OP_MODE_AUTO", - "dcg_mode": { - "Coeff": [0, 0, 0] - }, - "dcg_ratio": 1, - "sync_switch": 0, - "lcg2hcg_gain_th": 32, - "hcg2lcg_gain_th": 16 - }, - "Hdr": { - "support_en": 0, - "dcg_optype": "RK_AIQ_OP_MODE_AUTO", - "dcg_mode": { - "Coeff": [0, 0, 0] - }, - "dcg_ratio": 3.5, - "sync_switch": 1, - "lcg2hcg_gain_th": 32, - "hcg2lcg_gain_th": 16 - } - }, - "CISExpUpdate": { - "Linear": { - "time_update": 2, - "gain_update": 2, - "dcg_update": 2 - }, - "Hdr": { - "time_update": 2, - "gain_update": 2, - "dcg_update": 1 - } - }, - "CISMinFps": 10, - "CISFlip": 3 - }, - "module_calib": { - "sensor_module": { - "FNumber": 1.6, - "EFL": 5.2, - "LensT": 90, - "IRCutT": 90 - } - }, - "main_scene": [{ - "name": "normal", - "sub_scene": [{ - "name": "day", - "scene_isp21": { - "ae_calib": { - "CommCtrl": { - "Enable": 1, - "AecRunInterval": 0, - "AecOpType": "RK_AIQ_OP_MODE_AUTO", - "HistStatsMode": "CAM_HISTV2_MODE_Y", - "RawStatsMode": "CAM_RAWSTATSV2_MODE_Y", - "YRangeMode": "CAM_YRANGEV2_MODE_FULL", - "AecGridWeight": [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 1, 1, 2, 5, 8, 8, 8, 8, 8, 8, 8, 8, 8, 5, 2, 1, 1, 2, 5, 8, 10, 10, 10, 10, 10, 10, 10, 8, 5, 2, 1, 1, 2, 5, 8, 10, 13, 13, 13, 13, 13, 10, 8, 5, 2, 1, 1, 2, 5, 8, 10, 13, 15, 15, 15, 13, 10, 8, 5, 2, 1, 1, 2, 5, 8, 10, 13, 15, 15, 15, 13, 10, 8, 5, 2, 1, 1, 2, 5, 8, 10, 13, 15, 15, 15, 13, 10, 8, 5, 2, 1, 1, 2, 5, 8, 10, 13, 13, 13, 13, 13, 10, 8, 5, 2, 1, 1, 2, 5, 8, 10, 10, 10, 10, 10, 10, 10, 8, 5, 2, 1, 1, 2, 5, 8, 8, 8, 8, 8, 8, 8, 8, 8, 5, 2, 1, 1, 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0], - "AecManualCtrl": { - "LinearAE": { - "ManualTimeEn": 1, - "ManualGainEn": 1, - "ManualIspDgainEn": 1, - "TimeValue": 0.02, - "GainValue": 6, - "IspDGainValue": 1 - }, - "HdrAE": { - "ManualTimeEn": 1, - "ManualGainEn": 1, - "ManualIspDgainEn": 1, - "TimeValue": [0.01, 0.02, 0.03], - "GainValue": [1, 1, 1], - "IspDGainValue": [1, 1, 1] - } - }, - "AecSpeed": { - "DampOver": 0.15, - "DampUnder": 0.45, - "DampDark2Bright": 0.15, - "DampBright2Dark": 0.45 - }, - "AecDelayFrmNum": { - "BlackDelay": 2, - "WhiteDelay": 2 - }, - "AecFrameRateMode": { - "isFpsFix": 1, - "FpsValue": 25 - }, - "AecAntiFlicker": { - "enable": 1, - "Frequency": "AECV2_FLICKER_FREQUENCY_50HZ", - "Mode": "AECV2_ANTIFLICKER_AUTO_MODE" - }, - "AecEnvLvCalib": { - "CalibFNumber": 1.6, - "CurveCoeff": [0.02859, 0.5972] - }, - "AecWinScale": { - "InRawWinScale": { - "h_offs": 0, - "v_offs": 0, - "h_size": 1, - "v_size": 1 - }, - "TmoRawWinScale": { - "h_offs": 0.1, - "v_offs": 0.1, - "h_size": 0.9, - "v_size": 0.9 - }, - "YuvWinScale": { - "h_offs": 0, - "v_offs": 0, - "h_size": 1, - "v_size": 1 - } - } - }, - "LinearAeCtrl": { - "RawStatsEn": 1, - "ToleranceIn": 10, - "ToleranceOut": 15, - "Evbias": 0, - "StrategyMode": "AECV2_STRATEGY_MODE_LOWLIGHT_PRIOR", - "InitExp": { - "InitTimeValue": 0.003, - "InitGainValue": 1, - "InitIspDGainValue": 1, - "InitPIrisGainValue": 512, - "InitDCIrisDutyValue": 100 - }, - "Route": { - "TimeDot": [0, 0.04, 0.04, 0.04, 0.04, 0.04], - "TimeDot_len": 6, - "GainDot": [1, 1, 4, 8, 15.5, 16], - "GainDot_len": 6, - "IspDGainDot": [1, 1, 1, 1, 1, 2], - "IspDGainDot_len": 6, - "PIrisDot": [512, 512, 512, 512, 512, 512], - "PIrisDot_len": 6 - }, - "DySetpoint": { - "ExpLevel": [0, 0.032, 0.064, 0.192, 0.32, 0.448], - "ExpLevel_len": 6, - "DySetpoint": [45, 45, 40, 38, 33, 30], - "DySetpoint_len": 6 - }, - "BackLightCtrl": { - "Enable": 0, - "StrBias": 0, - "MeasArea": "AECV2_MEASURE_AREA_AUTO", - "OEROILowTh": 150, - "LumaDistTh": 10, - "LvLowTh": 0.3125, - "LvHighTh": 7.5, - "BacklitSetPoint": { - "ExpLevel": [0.032, 0.064, 0.128, 0.192, 0.32, 0.448], - "ExpLevel_len": 6, - "NonOEPdfTh": [0.4, 0.45, 0.55, 0.65, 0.75, 1], - "NonOEPdfTh_len": 6, - "LowLightPdfTh": [0.2, 0.2, 0.22, 0.25, 0.3, 0.35], - "LowLightPdfTh_len": 6, - "TargetLLLuma": [25, 22, 20, 18, 15, 12], - "TargetLLLuma_len": 6 - } - }, - "OverExpCtrl": { - "Enable": 0, - "StrBias": 0, - "MaxWeight": 8, - "HighLightTh": 150, - "LowLightTh": 30, - "OverExpSetPoint": { - "OEpdf": [0.01, 0.02, 0.03, 0.04, 0.05, 0.07], - "OEpdf_len": 6, - "LowLightWeight": [1, 1, 1, 1, 1, 1], - "LowLightWeight_len": 6, - "HighLightWeight": [4, 3, 3, 3, 2, 2], - "HighLightWeight_len": 6 - } - } - }, - "HdrAeCtrl": { - "ToleranceIn": 10, - "ToleranceOut": 15, - "Evbias": 0, - "StrategyMode": "AECV2_STRATEGY_MODE_LOWLIGHT_PRIOR", - "LumaDistTh": 10, - "InitExp": { - "InitTimeValue": [0.0005, 0.003, 0.003], - "InitGainValue": [1, 1, 1], - "InitIspDGainValue": [1, 1, 1], - "InitPIrisGainValue": 512, - "InitDCIrisDutyValue": 100 - }, - "Route": { - "Frm0TimeDot": [0, 0.003, 0.003, 0.003, 0.003, 0.003], - "Frm0TimeDot_len": 6, - "Frm0GainDot": [1, 1, 4, 8, 15.5, 32], - "Frm0GainDot_len": 6, - "Frm0IspDGainDot": [1, 1, 1, 1, 1, 1], - "Frm0IspDGainDot_len": 6, - "Frm1TimeDot": [0, 0.03, 0.03, 0.03, 0.03, 0.03], - "Frm1TimeDot_len": 6, - "Frm1GainDot": [1, 1, 4, 8, 15.5, 64], - "Frm1GainDot_len": 6, - "Frm1IspDGainDot": [1, 1, 1, 1, 1, 1], - "Frm1IspDGainDot_len": 6, - "Frm2TimeDot": [0, 0.03, 0.03, 0.03, 0.03, 0.03], - "Frm2TimeDot_len": 6, - "Frm2GainDot": [1, 1, 4, 8, 15.5, 64], - "Frm2GainDot_len": 6, - "Frm2IspDGainDot": [1, 1, 1, 1, 1, 1], - "Frm2IspDGainDot_len": 6, - "PIrisDot": [512, 512, 512, 512, 512, 512], - "PIrisDot_len": 6 - }, - "ExpRatioCtrl": { - "ExpRatioType": "AECV2_HDR_RATIOTYPE_MODE_AUTO", - "ExpRatio": { - "RatioExpDot": [0, 0.1, 0.3, 0.5, 0.7, 1], - "RatioExpDot_len": 6, - "M2SRatioFix": [4, 4, 4, 4, 4, 4], - "M2SRatioFix_len": 6, - "L2MRatioFix": [4, 4, 4, 4, 4, 4], - "L2MRatioFix_len": 6, - "M2SRatioMax": [64, 64, 64, 64, 64, 64], - "M2SRatioMax_len": 6, - "L2MRatioMax": [32, 32, 30, 28, 26, 24], - "L2MRatioMax_len": 6 - } - }, - "LongFrmMode": { - "mode": "AECV2_HDR_LONGFRMMODE_NORMAL", - "SfrmMinLine": 2, - "LfrmModeExpTh": 0.62 - }, - "LframeCtrl": { - "OEROILowTh": 150, - "LvLowTh": 0.3125, - "LvHighTh": 7.5, - "LfrmSetPoint": { - "LExpLevel": [0, 0.0192, 0.0576, 0.096, 0.192, 0.384], - "LExpLevel_len": 6, - "NonOEPdfTh": [0.4, 0.45, 0.55, 0.65, 0.75, 1], - "NonOEPdfTh_len": 6, - "LowLightPdfTh": [0.2, 0.22, 0.25, 0.3, 0.35, 0.4], - "LowLightPdfTh_len": 6, - "LSetPoint": [75, 70, 65, 60, 45, 40], - "LSetPoint_len": 6, - "TargetLLLuma": [35, 32, 30, 28, 25, 20], - "TargetLLLuma_len": 6 - } - }, - "MframeCtrl": { - "MExpLevel": [0.096, 0.192, 0.384, 0.96, 1.344, 1.92], - "MExpLevel_len": 6, - "MSetPoint": [60, 60, 55, 50, 45, 40], - "MSetPoint_len": 6 - }, - "SframeCtrl": { - "HLROIExpandEn": 0, - "HLLumaTolerance": 12, - "SfrmSetPoint": { - "SExpLevel": [0, 0.0048, 0.0144, 0.024, 0.0384, 0.0576], - "SExpLevel_len": 6, - "SSetPoint": [18, 18, 15, 12, 12, 12], - "SSetPoint_len": 6, - "TargetHLLuma": [100, 100, 100, 90, 80, 70], - "TargetHLLuma_len": 6 - } - } - }, - "IrisCtrl": { - "Enable": 0, - "IrisType": "IRISV2_DC_TYPE", - "ManualEn": 0, - "ManualAttr": { - "PIrisGainValue": 1, - "DCIrisHoldValue": 30 - }, - "InitAttr": { - "PIrisGainValue": 512, - "DCIrisHoldValue": 100 - }, - "PIrisAttr": { - "TotalStep": 81, - "EffcStep": 44, - "ZeroIsMax": 1, - "StepTable": [512, 511, 506, 499, 491, 483, 474, 465, 456, 446, 437, 427, 417, 408, 398, 388, 378, 368, 359, 349, 339, 329, 319, 309, 300, 290, 280, 271, 261, 252, 242, 233, 224, 214, 205, 196, 187, 178, 170, 161, 153, 144, 136, 128, 120, 112, 105, 98, 90, 83, 77, 70, 64, 58, 52, 46, 41, 36, 31, 27, 23, 19, 16, 13, 10, 8, 6, 4, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - }, - "DCIrisAttr": { - "Kp": 0.5, - "Ki": 0.2, - "Kd": 0.3, - "MinPwmDuty": 0, - "MaxPwmDuty": 100, - "OpenPwmDuty": 40, - "ClosePwmDuty": 22 - } - }, - "SyncTest": { - "Enable": 0, - "IntervalFrm": 60, - "AlterExp": { - "LinearAE": [{ - "TimeValue": 0.02, - "GainValue": 1, - "IspDGainValue": 1, - "PIrisGainValue": 1, - "DcgMode": 0 - }, { - "TimeValue": 0.02, - "GainValue": 6, - "IspDGainValue": 1, - "PIrisGainValue": 29, - "DcgMode": 0 - }], - "LinearAE_len": 2, - "HdrAE": [{ - "TimeValue": [0.01, 0.02, 0.03], - "GainValue": [1, 1, 1], - "IspDGainValue": [1, 1, 1], - "PIrisGainValue": 1, - "DcgMode": [0, 0, 0] - }, { - "TimeValue": [0.01, 0.02, 0.03], - "GainValue": [6, 6, 1], - "IspDGainValue": [1, 1, 1], - "PIrisGainValue": 29, - "DcgMode": [0, 0, 0] - }], - "HdrAE_len": 2 - } - } - }, - "wb_v21": { - "control": { - "byPass": 0, - "mode": "CALIB_WB_MODE_AUTO" - }, - "manualPara": { - "mode": "CALIB_MWB_MODE_SCENE", - "cfg": { - "mwbGain": [1.31933, 1, 1, 2.50981], - "scene": "CALIB_WB_SCENE_CLOUDY_DAYLIGHT", - "cct": { - "CCT": 5000, - "CCRI": 0 - } - } - }, - "autoPara": { - "hdrPara": { - "frameChooseMode": "CALIB_AWB_HDR_FRAME_CHOOSE_MODE_MANUAL", - "frameChoose": 1 - }, - "lscBypassEnable": 0, - "uvDetectionEnable": 1, - "xyDetectionEnable": 1, - "yuvDetectionEnable": 1, - "lsUsedForYuvDet": ["A", "CWF", "D65", "TL84", "D50", "HZ", "D75"], - "lsUsedForYuvDet_len": 7, - "blkStatisticsEnable": 1, - "downScaleMode": "CALIB_AWB_DS_8X8", - "blkMeasureMode": "CALIB_AWB_BLK_STAT_MODE_ALL_V201", - "mainWindow": { - "mode": "CALIB_AWB_WINDOW_CFG_FIXED", - "window": [0, 0, 1, 1] - }, - "limitRange": { - "lumaValue": [0], - "lumaValue_len": 1, - "maxR": [230], - "maxR_len": 1, - "minR": [6], - "minR_len": 1, - "maxG": [230], - "maxG_len": 1, - "minG": [9], - "minG_len": 1, - "maxB": [230], - "maxB_len": 1, - "minB": [6], - "minB_len": 1, - "maxY": [210], - "maxY_len": 1, - "minY": [9], - "minY_len": 1 - }, - "rgb2TcsPara": { - "pseudoLuminanceWeight": [0.372935, 0.37602, 0.251045], - "rotationMat": [-0.589702, 0.807621, -0.326631, 0.807621, 0.589702, 0.560524, 0, 0, 1] - }, - "rgb2RotationYuvMat": [0.0351562, 0.136719, 0.0136719, 34.875, -0.0839844, 0.00195312, 0.0703125, 134.875, 0.046875, -0.0566406, 0.0507812, 109.812, 0, 0, 0, 1], - "extraWpRange": [{ - "domain": "CALIB_AWB_EXTRA_RANGE_DOMAIN_UV", - "mode": "CALIB_AWB_EXCLUDE_WP_MODE", - "region": [244, 249, 228, 211] - }, { - "domain": "CALIB_AWB_EXTRA_RANGE_DOMAIN_XY", - "mode": "CALIB_AWB_EXCLUDE_WP_MODE", - "region": [-1096, -985, 140, 65] - }, { - "domain": "CALIB_AWB_EXTRA_RANGE_DOMAIN_XY", - "mode": "CALIB_AWB_EXCLUDE_WP_MODE", - "region": [-40, 158, 121, 16] - }, { - "domain": "CALIB_AWB_EXTRA_RANGE_DOMAIN_XY", - "mode": "CALIB_AWB_EXCLUDE_WP_MODE", - "region": [-235, -40, 237, 80] - }, { - "domain": "CALIB_AWB_EXTRA_RANGE_DOMAIN_UV", - "mode": "CALIB_AWB_EXCLUDE_WP_MODE", - "region": [0, 0, 0, 0] - }, { - "domain": "CALIB_AWB_EXTRA_RANGE_DOMAIN_UV", - "mode": "CALIB_AWB_EXCLUDE_WP_MODE", - "region": [0, 0, 0, 0] - }, { - "domain": "CALIB_AWB_EXTRA_RANGE_DOMAIN_UV", - "mode": "CALIB_AWB_EXCLUDE_WP_MODE", - "region": [0, 0, 0, 0] - }], - "wpDiffLumaWeight": { - "enable": 1, - "wpDiffWeiEnableTh": { - "wpDiffWeiNoTh": 0.004, - "wpDiffWeiLvValueTh": 64 - }, - "wpDiffwei_y": [0, 16, 32, 64, 96, 128, 192, 224, 240], - "perfectBin": [0, 0, 0, 1, 1, 1, 1, 0], - "wpDiffWeightLvSet": [{ - "LvValue": 256, - "ratioSet": [{ - "ratioValue": 0, - "weight": [1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "ratioValue": 0.01, - "weight": [1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "ratioValue": 0.1, - "weight": [1, 1, 1, 1, 1, 1, 1, 1, 1] - }], - "ratioSet_len": 3 - }, { - "LvValue": 8192, - "ratioSet": [{ - "ratioValue": 0, - "weight": [1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "ratioValue": 0.01, - "weight": [1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "ratioValue": 0.1, - "weight": [0, 0, 0.2, 0.5, 1, 1, 1, 0.5, 0] - }], - "ratioSet_len": 3 - }], - "wpDiffWeightLvSet_len": 2 - }, - "wpDiffBlkWeiEnable": 1, - "wpDiffBlkWeight": [6, 6, 6, 8, 8, 8, 8, 10, 8, 8, 8, 8, 6, 6, 6, 6, 6, 8, 8, 10, 10, 12, 12, 12, 10, 10, 8, 8, 6, 6, 6, 8, 10, 12, 14, 16, 18, 20, 18, 16, 14, 12, 10, 8, 6, 8, 8, 12, 16, 22, 26, 30, 32, 30, 26, 22, 16, 12, 8, 8, 8, 10, 14, 22, 28, 36, 42, 46, 42, 36, 28, 22, 14, 10, 8, 8, 10, 16, 26, 36, 46, 54, 58, 54, 46, 36, 26, 16, 10, 8, 8, 12, 18, 30, 42, 54, 63, 63, 63, 54, 42, 30, 18, 12, 8, 10, 12, 20, 32, 46, 58, 63, 63, 63, 58, 46, 32, 20, 12, 10, 8, 12, 18, 30, 42, 54, 63, 63, 63, 54, 42, 30, 18, 12, 8, 8, 10, 16, 26, 36, 46, 54, 58, 54, 46, 36, 26, 16, 10, 8, 8, 10, 14, 22, 28, 36, 42, 46, 42, 36, 28, 22, 14, 10, 8, 8, 8, 12, 16, 22, 26, 30, 32, 30, 26, 22, 16, 12, 8, 8, 6, 8, 10, 12, 14, 16, 18, 20, 18, 16, 14, 12, 10, 8, 6, 6, 6, 8, 8, 10, 10, 12, 12, 12, 10, 10, 8, 8, 6, 6, 6, 6, 6, 8, 8, 8, 8, 10, 8, 8, 8, 8, 6, 6, 6], - "lightSources": [{ - "name": "A", - "doorType": "CALIB_AWB_DOOR_TYPE_INDOOR", - "standardGainValue": [1.31933, 1, 1, 2.50981], - "uvRegion": { - "u": [124.5, 54.5, 58.5, 125], - "v": [128, 114.5, 90.5, 127] - }, - "xyRegion": { - "normal": [-1.225, -0.73125, 0.0729253, -0.0435484], - "big": [-1.22875, -0.745, 0.092997, -0.0761649] - }, - "rtYuvRegion": { - "thcurve_u": [50, 54, 70, 78, 110, 142], - "thcure_th": [1.1875, 1.1875, 1.1875, 1.75, 2, 4], - "lineVector": [10, 140.875, 109.375, 186.688, 101.625, 110.5], - "disP1P2": 15 - }, - "staWeight": [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 90, 75], - "dayGainLvThSet": [1024, 8192], - "defaultDayGainLow": [1.76901, 1, 1, 2.15255], - "defaultDayGainHigh": [1.9499, 1, 1, 1.66695], - "xyType2Enable": 1 - }, { - "name": "CWF", - "doorType": "CALIB_AWB_DOOR_TYPE_INDOOR", - "standardGainValue": [1.76901, 1, 1, 2.15255], - "uvRegion": { - "u": [68.5, 74.5, 124, 123], - "v": [73.5, 60.5, 125, 125.5] - }, - "xyRegion": { - "normal": [-0.732778, -0.438333, 0.000487089, -0.0845602], - "big": [-0.737593, -0.43537, 0.0435897, -0.1] - }, - "rtYuvRegion": { - "thcurve_u": [50, 54, 70, 78, 110, 142], - "thcure_th": [1.125, 1.1875, 1.1875, 1.75, 2, 4], - "lineVector": [10, 137.812, 110.75, 190, 119.812, 103.938], - "disP1P2": 15 - }, - "staWeight": [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 70, 60, 50, 40], - "dayGainLvThSet": [1024, 8192], - "defaultDayGainLow": [1.76901, 1, 1, 2.15255], - "defaultDayGainHigh": [1.9499, 1, 1, 1.66695], - "xyType2Enable": 1 - }, { - "name": "D50", - "doorType": "CALIB_AWB_DOOR_TYPE_AMBIGUITY", - "standardGainValue": [1.9499, 1, 1, 1.66695], - "uvRegion": { - "u": [74, 94, 126, 124.5], - "v": [59.5, 53.5, 124.5, 125.5] - }, - "xyRegion": { - "normal": [-0.426481, -0.171667, 0.0682934, -0.0644886], - "big": [-0.427963, -0.179074, 0.088365, -0.0845602] - }, - "rtYuvRegion": { - "thcurve_u": [50, 54, 70, 78, 110, 142], - "thcure_th": [1.1875, 1.3125, 1.375, 1.75, 2, 4], - "lineVector": [10, 135.75, 110, 191, 132.938, 108.5], - "disP1P2": 15 - }, - "staWeight": [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100], - "dayGainLvThSet": [1024, 8192], - "defaultDayGainLow": [1.76901, 1, 1, 2.15255], - "defaultDayGainHigh": [1.9499, 1, 1, 1.66695], - "xyType2Enable": 1 - }, { - "name": "D65", - "doorType": "CALIB_AWB_DOOR_TYPE_OUTDOOR", - "standardGainValue": [2.18207, 1, 1, 1.45549], - "uvRegion": { - "u": [94, 112.5, 127.5, 126], - "v": [53.5, 48.5, 121, 124] - }, - "xyRegion": { - "normal": [-0.176111, 0.0712963, 0.0875931, -0.104632], - "big": [-0.186481, 0.0801852, 0.136228, -0.171023] - }, - "rtYuvRegion": { - "thcurve_u": [50, 54, 70, 78, 110, 142], - "thcure_th": [1.1875, 1.5, 1.5, 1.8125, 2, 4], - "lineVector": [10, 133.812, 109.625, 190.75, 143.812, 109.625], - "disP1P2": 15 - }, - "staWeight": [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 90, 80, 70], - "dayGainLvThSet": [1024, 8192], - "defaultDayGainLow": [1.76901, 1, 1, 2.15255], - "defaultDayGainHigh": [1.9499, 1, 1, 1.66695], - "xyType2Enable": 1 - }, { - "name": "D75", - "doorType": "CALIB_AWB_DOOR_TYPE_OUTDOOR", - "standardGainValue": [2.32318, 1, 1, 1.35032], - "uvRegion": { - "u": [131.5, 127, 112.5, 129.5], - "v": [121, 122.5, 48.5, 43.5] - }, - "xyRegion": { - "normal": [0.0835185, 0.369074, 0.0962136, -0.0938241], - "big": [0.0787037, 0.375, 0.142404, -0.181831] - }, - "rtYuvRegion": { - "thcurve_u": [50, 54, 70, 78, 110, 142], - "thcure_th": [1.1875, 1.3125, 1.5, 1.75, 2, 4], - "lineVector": [10, 132.688, 109.875, 190.25, 149.625, 110.688], - "disP1P2": 15 - }, - "staWeight": [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 90, 80, 70, 50], - "dayGainLvThSet": [1024, 8192], - "defaultDayGainLow": [1.76901, 1, 1, 2.15255], - "defaultDayGainHigh": [1.9499, 1, 1, 1.66695], - "xyType2Enable": 1 - }, { - "name": "HZ", - "doorType": "CALIB_AWB_DOOR_TYPE_INDOOR", - "standardGainValue": [1.05376, 1, 1, 2.97437], - "uvRegion": { - "u": [123.5, 57.5, 55.5, 124.5], - "v": [130.5, 140, 113.5, 128] - }, - "xyRegion": { - "normal": [-1.96056, -1.23625, 0.089909, -0.0310036], - "big": [-1.96278, -1.22944, 0.100717, -0.0837883] - }, - "rtYuvRegion": { - "thcurve_u": [50, 54, 70, 78, 110, 142], - "thcure_th": [1.1875, 1.3125, 1.3125, 1.75, 2, 4], - "lineVector": [10, 143.625, 108.562, 181.688, 86.5625, 115.438], - "disP1P2": 15 - }, - "staWeight": [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 90, 75, 50], - "dayGainLvThSet": [1024, 8192], - "defaultDayGainLow": [1.76901, 1, 1, 2.15255], - "defaultDayGainHigh": [1.9499, 1, 1, 1.66695], - "xyType2Enable": 1 - }, { - "name": "TL84", - "doorType": "CALIB_AWB_DOOR_TYPE_INDOOR", - "standardGainValue": [1.71132, 1, 1, 2.14938], - "uvRegion": { - "u": [124, 58, 68.5, 124.5], - "v": [126.5, 90, 73.5, 125.5] - }, - "xyRegion": { - "normal": [-0.728333, -0.433889, 0.0529823, -0.038241], - "big": [-0.73875, -0.433889, 0.088365, -0.066129] - }, - "rtYuvRegion": { - "thcurve_u": [50, 54, 70, 78, 110, 142], - "thcure_th": [1.1875, 1.1875, 1.3125, 1.75, 2, 4], - "lineVector": [10, 138.062, 110.062, 189.875, 118.312, 106.188], - "disP1P2": 15 - }, - "staWeight": [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 90, 80, 70, 60, 60], - "dayGainLvThSet": [1024, 8192], - "defaultDayGainLow": [1.76901, 1, 1, 2.15255], - "defaultDayGainHigh": [1.9499, 1, 1, 1.66695], - "xyType2Enable": 1 - }], - "lightSources_len": 7 - }, - "autoExtPara": { - "lightSourceForFirstFrame": "D50", - "tolerance": { - "lumaValue": [256, 512, 32768, 131072], - "lumaValue_len": 4, - "toleranceValue": [0, 0, 0, 0], - "toleranceValue_len": 4 - }, - "runInterval": { - "lumaValue": [256, 512, 32768, 131072], - "lumaValue_len": 4, - "intervalValue": [0, 0, 0, 0], - "intervalValue_len": 4 - }, - "dampFactor": { - "dFStep": 0.05, - "dFMin": 0.7, - "dFMax": 0.9, - "lvIIRsize": 4, - "lvVarTh": 0.04 - }, - "wbGainAdjust": { - "enable": 0, - "lutAll": [{ - "lumaValue": 128, - "ct_grid_num": 7, - "cri_grid_num": 9, - "ct_in_range": [2000, 8000], - "cri_in_range": [-1, 1], - "ct_lut_out": [2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000], - "ct_lut_out_len": 63, - "cri_lut_out": [-1, -1, -1, -1, -1, -1, -1, -0.75, -0.75, -0.75, -0.75, -0.75, -0.75, -0.75, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, 0, 0, 0, 0, 0, 0, 0, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 1, 1, 1, 1, 1, 1, 1], - "cri_lut_out_len": 63 - }, { - "lumaValue": 8192, - "ct_grid_num": 7, - "cri_grid_num": 9, - "ct_in_range": [2000, 8000], - "cri_in_range": [-1, 1], - "ct_lut_out": [2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000], - "ct_lut_out_len": 63, - "cri_lut_out": [-1, -1, -1, -1, -1, -1, -1, -0.75, -0.75, -0.75, -0.75, -0.75, -0.75, -0.75, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, 0, 0, 0, 0, 0, 0, 0, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 1, 1, 1, 1, 1, 1, 1], - "cri_lut_out_len": 63 - }, { - "lumaValue": 65536, - "ct_grid_num": 7, - "cri_grid_num": 9, - "ct_in_range": [2000, 8000], - "cri_in_range": [-1, 1], - "ct_lut_out": [2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000], - "ct_lut_out_len": 63, - "cri_lut_out": [-1, -1, -1, -1, -1, -1, -1, -0.75, -0.75, -0.75, -0.75, -0.75, -0.75, -0.75, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, 0, 0, 0, 0, 0, 0, 0, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 1, 1, 1, 1, 1, 1, 1], - "cri_lut_out_len": 63 - }], - "lutAll_len": 3 - }, - "wbGainDaylightClip": { - "enable": 0, - "outdoor_cct_min": 5000 - }, - "wbGainClip": { - "enable": 0, - "cct": [1000, 2856, 4100, 6500, 7500], - "cct_len": 5, - "cri_bound_up": [0.091, 0.091, 0.18, 0.12, 0.12], - "cri_bound_up_len": 5, - "cri_bound_low": [0.07, 0.07, 0.16, 0.16, 0.16], - "cri_bound_low_len": 5 - }, - "division": { - "lumaValThLow": 110, - "lumaValThLow2": 200, - "lumaValThHigh": 65536, - "lumaValThHigh2": 65600, - "wpNumTh": { - "lumaValue": [0], - "lumaValue_len": 1, - "low": [50], - "low_len": 1, - "high": [80], - "high_len": 1 - } - }, - "defaultNightGain": [1.31933, 1, 1, 2.50981], - "lumaValueMatrix": [0, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144], - "defaultNightGainWeight": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "probCalcDis": { - "proDis_THH": 4.6124, - "proDis_THL": 0.0269 - }, - "probCalcLv": { - "outdoorLumaValThLow": 30000, - "outdoorLumaValThHigh": 45745 - }, - "probCalcWp": { - "wpNumPercTh": 0.031, - "wpNumPercTh2": 0.2 - }, - "converged": { - "varThforUnDamp": 0.005, - "varThforDamp": 0.005 - }, - "xyRegionStableSelection": { - "enable": 1, - "wpNumTh": { - "lumaValue": [0], - "lumaValue_len": 1, - "forBigType": [80], - "forBigType_len": 1, - "forExtraType": [80], - "forExtraType_len": 1 - }, - "xyTypeListSize": 50, - "varianceLumaTh": 0.06 - }, - "weightForNightGainCalc": [25, 25, 25, 25], - "weightForNightGainCalc_len": 4, - "singleColorProces": { - "enable": 1, - "colorBlock": [{ - "index": 15, - "meanC": 26.1455, - "meanH": 30.4796 - }, { - "index": 13, - "meanC": 24.607, - "meanH": -75.964 - }, { - "index": 5, - "meanC": 10.9565, - "meanH": -67.7098 - }, { - "index": 10, - "meanC": 11.9595, - "meanH": -41.2431 - }, { - "index": 14, - "meanC": 19.0206, - "meanH": 144.275 - }, { - "index": 16, - "meanC": 30.264, - "meanH": 88.699 - }], - "colorBlock_len": 6, - "lsUsedForEstimation": [{ - "name": "A", - "RGain": 1.31933, - "BGain": 2.50981 - }, { - "name": "TL84", - "RGain": 1.9499, - "BGain": 1.66695 - }, { - "name": "D50", - "RGain": 1.71132, - "BGain": 2.14938 - }], - "lsUsedForEstimation_len": 3, - "alpha": 0.9 - }, - "lineRgBg": [-0.8395, -0.5434, -2.741], - "lineRgProjCCT": [1, -0.0003, 0.4559], - "chrAdpttAdj": { - "enable": 0, - "targetGain": [2.2099, 1, 1, 1.6302], - "laCalcFactor": 40 - }, - "remosaicCfg": { - "enable": 0, - "applyInvWbGainEnable": 1, - "sensorWbGain": [1, 1, 1, 1] - }, - "wbGainOffset": { - "enable": 0, - "offset": [0, 0, 0, 0] - } - } - }, - "agamma_calib": { - "GammaTuningPara": { - "Gamma_en": 1, - "Gamma_out_segnum": "GAMMATYPE_LOG", - "Gamma_out_offset": 0, - "Gamma_curve": [0, 6, 11, 17, 22, 28, 33, 39, 44, 55, 66, 77, 88, 109, 130, 150, 170, 210, 248, 286, 323, 393, 460, 525, 586, 702, 809, 909, 1002, 1172, 1325, 1462, 1588, 1811, 2004, 2174, 2327, 2590, 2813, 3006, 3177, 3467, 3708, 3915, 4095] - } - }, - "ablc_calib": { - "BlcTuningPara": { - "enable": 1, - "BLC_Data": { - "ISO": [50, 100, 200, 400, 800, 1600, 3200, 10000, 12800, 25600, 51200, 102400, 204800], - "ISO_len": 13, - "R_Channel": [255, 253, 255, 255, 254, 256, 256, 256, 256, 256, 256, 256, 256], - "R_Channel_len": 13, - "Gr_Channel": [256, 254, 256, 256, 257, 256, 256, 256, 256, 256, 256, 256, 256], - "Gr_Channel_len": 13, - "Gb_Channel": [256, 254, 256, 256, 257, 256, 256, 256, 256, 256, 256, 256, 256], - "Gb_Channel_len": 13, - "B_Channel": [255, 253, 255, 254, 254, 256, 256, 256, 256, 256, 256, 256, 256], - "B_Channel_len": 13 - } - } - }, - "adegamma_calib": { - "DegammaTuningPara": { - "degamma_en": 0, - "X_axis": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "curve_R": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "curve_G": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "curve_B": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - } - }, - "agic_calib_v21": { - "GicTuningPara": { - "enable": 0, - "gr_ration": 0, - "GicData": { - "ISO": [50, 100, 200, 400, 800, 1600, 3200, 6400, 12800], - "ISO_len": 9, - "min_busy_thre": [40, 40, 40, 40, 40, 40, 40, 40, 40], - "min_busy_thre_len": 9, - "min_grad_thr1": [16, 16, 16, 16, 16, 16, 16, 16, 16], - "min_grad_thr1_len": 9, - "min_grad_thr2": [8, 8, 8, 8, 8, 8, 8, 8, 8], - "min_grad_thr2_len": 9, - "k_grad1": [64, 64, 64, 64, 64, 64, 64, 64, 64], - "k_grad1_len": 9, - "k_grad2": [2, 2, 2, 2, 2, 2, 2, 2, 2], - "k_grad2_len": 9, - "gb_thre": [32, 32, 32, 32, 32, 32, 32, 32, 32], - "gb_thre_len": 9, - "maxCorV": [10, 10, 10, 10, 10, 10, 10, 10, 10], - "maxCorV_len": 9, - "maxCorVboth": [20, 20, 20, 20, 20, 20, 20, 20, 20], - "maxCorVboth_len": 9, - "dark_thre": [120, 120, 120, 120, 120, 120, 120, 120, 120], - "dark_thre_len": 9, - "dark_threHi": [240, 240, 240, 240, 240, 240, 240, 240, 240], - "dark_threHi_len": 9, - "k_grad1_dark": [64, 64, 64, 64, 64, 64, 64, 64, 64], - "k_grad1_dark_len": 9, - "k_grad2_dark": [2, 2, 2, 2, 2, 2, 2, 2, 2], - "k_grad2_dark_len": 9, - "min_grad_thr_dark1": [16, 16, 16, 16, 16, 16, 16, 16, 16], - "min_grad_thr_dark1_len": 9, - "min_grad_thr_dark2": [8, 8, 8, 8, 8, 8, 8, 8, 8], - "min_grad_thr_dark2_len": 9, - "noiseCurve_0": [0, 0, 0, 0, 0, 0, 0, 0, 0], - "noiseCurve_0_len": 9, - "noiseCurve_1": [0, 0, 0, 0, 0, 0, 0, 0, 0], - "noiseCurve_1_len": 9, - "NoiseScale": [0, 0, 0, 0, 0, 0, 0, 0, 0], - "NoiseScale_len": 9, - "NoiseBase": [0, 0, 0, 0, 0, 0, 0, 0, 0], - "NoiseBase_len": 9, - "globalStrength": [1, 1, 1, 1, 1, 1, 1, 1, 1], - "globalStrength_len": 9, - "diff_clip": [32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767], - "diff_clip_len": 9 - } - } - }, - "adehaze_calib_v21": { - "DehazeTuningPara": { - "Enable": 1, - "cfg_alpha": 0, - "ByPassThr": 0, - "dehaze_setting": { - "en": 0, - "air_lc_en": 1, - "stab_fnum": 8, - "sigma": 6, - "wt_sigma": 8, - "air_sigma": 120, - "tmax_sigma": 0.01, - "pre_wet": 0.01, - "DehazeData": { - "EnvLv": [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.7, 0.9, 1], - "EnvLv_len": 9, - "dc_min_th": [64, 64, 64, 64, 64, 64, 64, 64, 64], - "dc_min_th_len": 9, - "dc_max_th": [192, 192, 192, 192, 192, 192, 192, 192, 192], - "dc_max_th_len": 9, - "yhist_th": [249, 249, 249, 249, 249, 249, 249, 249, 249], - "yhist_th_len": 9, - "yblk_th": [0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002], - "yblk_th_len": 9, - "dark_th": [250, 250, 250, 250, 250, 250, 250, 250, 250], - "dark_th_len": 9, - "bright_min": [180, 180, 180, 180, 180, 180, 180, 180, 180], - "bright_min_len": 9, - "bright_max": [240, 240, 240, 240, 240, 240, 240, 240, 240], - "bright_max_len": 9, - "wt_max": [0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9], - "wt_max_len": 9, - "air_min": [200, 200, 200, 200, 200, 200, 200, 200, 200], - "air_min_len": 9, - "air_max": [250, 250, 250, 250, 250, 250, 250, 250, 250], - "air_max_len": 9, - "tmax_base": [125, 125, 125, 125, 125, 125, 125, 125, 125], - "tmax_base_len": 9, - "tmax_off": [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], - "tmax_off_len": 9, - "tmax_max": [0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8], - "tmax_max_len": 9, - "cfg_wt": [0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8], - "cfg_wt_len": 9, - "cfg_air": [210, 210, 210, 210, 210, 210, 210, 210, 210], - "cfg_air_len": 9, - "cfg_tmax": [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], - "cfg_tmax_len": 9, - "dc_weitcur": [1, 1, 1, 1, 1, 1, 1, 1, 1], - "dc_weitcur_len": 9, - "bf_weight": [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], - "bf_weight_len": 9, - "range_sigma": [0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14], - "range_sigma_len": 9, - "space_sigma_pre": [0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14], - "space_sigma_pre_len": 9, - "space_sigma_cur": [0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14], - "space_sigma_cur_len": 9 - } - }, - "enhance_setting": { - "en": 1, - "enhance_curve": [0, 64, 128, 192, 256, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960, 1023], - "EnhanceData": { - "EnvLv": [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.7, 0.9, 1], - "EnvLv_len": 9, - "enhance_value": [1.15, 1.15, 1.15, 1.12, 1.12, 1.12, 1.1, 1.1, 1], - "enhance_value_len": 9, - "enhance_chroma": [1.5, 1.4, 1.3, 1.2, 1.2, 1.2, 1.1, 1.1, 1], - "enhance_chroma_len": 9 - } - }, - "hist_setting": { - "en": 0, - "hist_para_en": 1, - "HistData": { - "EnvLv": [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.7, 0.9, 1], - "EnvLv_len": 9, - "hist_gratio": [2, 2, 2, 2, 2, 2, 2, 2, 2], - "hist_gratio_len": 9, - "hist_th_off": [64, 64, 64, 64, 64, 64, 64, 64, 64], - "hist_th_off_len": 9, - "hist_k": [2, 2, 2, 2, 2, 2, 2, 2, 2], - "hist_k_len": 9, - "hist_min": [0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015], - "hist_min_len": 9, - "hist_scale": [0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09], - "hist_scale_len": 9, - "cfg_gratio": [2, 2, 2, 2, 2, 2, 2, 2, 2], - "cfg_gratio_len": 9 - } - } - } - }, - "adpcc_calib": { - "DpccTuningPara": { - "Enable": 1, - "Fast_Mode": { - "Fast_mode_en": 0, - "Single_enable": 0, - "Double_enable": 0, - "Triple_enable": 0, - "Fast_Data": { - "ISO": [50, 100, 200, 400, 800, 1600, 3200, 6400, 12800, 25600, 51200, 102400, 204800], - "ISO_len": 13, - "Single_level": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "Single_level_len": 13, - "Double_level": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "Double_level_len": 13, - "Triple_level": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "Triple_level_len": 13 - } - }, - "Expert_Mode": { - "stage1_Enable": 1, - "grayscale_mode": 0, - "dpcc_out_sel": 1, - "stage1_g_3x3": 0, - "stage1_rb_3x3": 0, - "stage1_inc_rb_center": 1, - "stage1_inc_g_center": 1, - "rk_out_sel": 1, - "SetEnable": { - "ISO": [50, 100, 200, 400, 800, 1500, 1507, 1510, 3200, 6400, 12800, 102400, 204800], - "fix_set": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "set1": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "set2": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "set3": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - }, - "set1": { - "RK": { - "RK_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_sw_mindis": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "g_sw_mindis": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "sw_dis_scale_min": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "sw_dis_scale_max": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - }, - "LC": { - "LC_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_line_thr": [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8], - "g_line_thr": [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8], - "rb_line_mad_fac": [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], - "g_line_mad_fac": [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4] - }, - "PG": { - "PG_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_pg_fac": [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], - "g_pg_fac": [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3] - }, - "RND": { - "RND_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_rnd_thr": [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10], - "g_rnd_thr": [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10], - "rb_rnd_offs": [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], - "g_rnd_offs": [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3] - }, - "RG": { - "RG_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_rg_fac": [32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32], - "g_rg_fac": [32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32] - }, - "RO": { - "RO_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_ro_lim": [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], - "g_ro_lim": [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2] - } - }, - "set2": { - "RK": { - "RK_enable": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "rb_sw_mindis": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "g_sw_mindis": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "sw_dis_scale_min": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "sw_dis_scale_max": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - }, - "LC": { - "LC_enable": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "rb_line_thr": [16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16], - "g_line_thr": [24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24], - "rb_line_mad_fac": [16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16], - "g_line_mad_fac": [12, 12, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, - "PG": { - "PG_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_pg_fac": [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], - "g_pg_fac": [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3] - }, - "RND": { - "RND_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_rnd_thr": [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8], - "g_rnd_thr": [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8], - "rb_rnd_offs": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "g_rnd_offs": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - }, - "RG": { - "RG_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_rg_fac": [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8], - "g_rg_fac": [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8] - }, - "RO": { - "RO_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_ro_lim": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "g_ro_lim": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - } - }, - "set3": { - "RK": { - "RK_enable": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "rb_sw_mindis": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "g_sw_mindis": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "sw_dis_scale_min": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "sw_dis_scale_max": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - }, - "LC": { - "LC_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_line_thr": [32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32], - "g_line_thr": [32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32], - "rb_line_mad_fac": [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], - "g_line_mad_fac": [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4] - }, - "PG": { - "PG_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_pg_fac": [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], - "g_pg_fac": [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3] - }, - "RND": { - "RND_enable": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "rb_rnd_thr": [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8], - "g_rnd_thr": [6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6], - "rb_rnd_offs": [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], - "g_rnd_offs": [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3] - }, - "RG": { - "RG_enable": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "rb_rg_fac": [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], - "g_rg_fac": [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4] - }, - "RO": { - "RO_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_ro_lim": [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], - "g_ro_lim": [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2] - } - } - }, - "Dpcc_pdaf": { - "en": 0, - "point_en": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "offsetx": 0, - "offsety": 0, - "wrapx": 0, - "wrapy": 0, - "wrapx_num": 0, - "wrapy_num": 0, - "point_x": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "point_y": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "forward_med": 0 - }, - "Sensor_dpcc": { - "sensor_dpcc_auto_en": 0, - "max_level": 20, - "SensorDpcc_Data": { - "ISO": [50, 100, 200, 400, 800, 1500, 1507, 1510, 3200, 6400, 12800, 102400, 204800], - "ISO_len": 13, - "level_single": [19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19], - "level_single_len": 13, - "level_multiple": [19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19], - "level_multiple_len": 13 - } - } - } - }, - "amerge_calib": { - "MergeTuningPara": { - "OECurve": { - "EnvLv": [0, 0.005, 0.01, 0.05, 0.1, 0.15, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 1], - "EnvLv_len": 13, - "Smooth": [0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4], - "Smooth_len": 13, - "Offset": [210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210], - "Offset_len": 13 - }, - "MDCurve": { - "MoveCoef": [0, 0.005, 0.01, 0.05, 0.1, 0.15, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 1], - "MoveCoef_len": 13, - "LM_smooth": [0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4], - "LM_smooth_len": 13, - "LM_offset": [0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38], - "LM_offset_len": 13, - "MS_smooth": [0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4], - "MS_smooth_len": 13, - "MS_offset": [0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38], - "MS_offset_len": 13 - }, - "ByPassThr": 0, - "OECurve_damp": 0.3, - "MDCurveLM_damp": 0.3, - "MDCurveMS_damp": 0.3 - } - }, - "adrc_calib": { - "DrcTuningPara": { - "Enable": 0, - "DrcGain": { - "EnvLv": [0, 0.005, 0.01, 0.05, 0.1, 0.15, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 1], - "EnvLv_len": 13, - "DrcGain": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "DrcGain_len": 13, - "Alpha": [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], - "Alpha_len": 13, - "Clip": [16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16], - "Clip_len": 13 - }, - "HiLight": { - "EnvLv": [0, 0.005, 0.01, 0.05, 0.1, 0.15, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 1], - "EnvLv_len": 13, - "Strength": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "Strength_len": 13 - }, - "LocalTMOSetting": { - "LocalTMOData": { - "EnvLv": [0, 0.005, 0.01, 0.05, 0.1, 0.15, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 1], - "EnvLv_len": 13, - "LocalWeit": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "LocalWeit_len": 13, - "GlobalContrast": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "GlobalContrast_len": 13, - "LoLitContrast": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "LoLitContrast_len": 13 - }, - "curPixWeit": 0.376471, - "preFrameWeit": 1, - "Range_force_sgm": 0, - "Range_sgm_cur": 0.125015, - "Range_sgm_pre": 0.125015, - "Space_sgm_cur": 4068, - "Space_sgm_pre": 3968 - }, - "CompressSetting": { - "Mode": "COMPRESS_AUTO", - "Manual_curve": [0, 558, 1087, 1588, 2063, 2515, 2944, 3353, 3744, 4473, 5139, 5751, 6316, 6838, 7322, 7772, 8192] - }, - "Scale_y": [0, 2, 20, 76, 193, 381, 631, 772, 919, 1066, 1211, 1479, 1700, 1863, 1968, 2024, 2048], - "ByPassThr": 0, - "Edge_Weit": 0.0627451, - "OutPutLongFrame": 0, - "IIR_frame": 16, - "Tolerance": 0, - "damp": 0.9 - } - }, - "cpsl": { - "param": { - "enable": 1, - "mode": "RK_AIQ_OP_MODE_AUTO", - "force_gray": 1, - "light_src": "LED", - "auto_adjust_sens": 50, - "auto_on2off_th": 3000, - "auto_off2on_th": 100, - "auto_sw_interval": 0, - "manual_on": 0, - "manual_strength": 100 - } - }, - "orb": { - "param": { - "orb_en": 0 - } - }, - "debayer": { - "param": { - "debayer_en": 1, - "debayer_filter1": [2, -6, 0, 6, -2], - "debayer_filter2": [2, -4, 4, -4, 2], - "debayer_gain_offset": 4, - "debayer_offset": 1, - "debayer_clip_en": 1, - "debayer_filter_g_en": 1, - "debayer_filter_c_en": 1, - "debayer_thed0": 3, - "debayer_thed1": 6, - "debayer_dist_scale": 8, - "debayer_cnr_strength": 5, - "debayer_shift_num": 2, - "array": { - "ISO": [50, 100, 200, 400, 800, 1600, 3200, 6400, 12800], - "sharp_strength": [4, 4, 4, 4, 4, 4, 4, 4, 4], - "debayer_hf_offset": [1, 1, 1, 1, 1, 1, 1, 1, 1] - } - } - }, - "cproc": { - "param": { - "enable": 1, - "brightness": 128, - "contrast": 128, - "saturation": 128, - "hue": 128 - } - }, - "ie": { - "param": { - "enable": 0, - "mode": 0 - } - }, - "lsc_v2": { - "common": { - "enable": 1, - "resolutionAll": [{ - "name": "3264x2448", - "lsc_sect_size_x": [204, 204, 204, 204, 204, 204, 204, 204], - "lsc_sect_size_y": [153, 153, 153, 153, 153, 153, 153, 153] - }], - "resolutionAll_len": 1 - }, - "alscCoef": { - "damp_enable": 1, - "illAll": [{ - "usedForCase": 0, - "name": "A", - "wbGain": [1.2422, 2.5859], - "tableUsed": [{ - "name": "A_100" - }, { - "name": "A_70" - }], - "tableUsed_len": 2, - "gains": [1, 4, 6, 8], - "gains_len": 4, - "vig": [100, 100, 90, 70], - "vig_len": 4 - }, { - "usedForCase": 0, - "name": "CWF", - "wbGain": [1.7163, 2.2709], - "tableUsed": [{ - "name": "CWF_100" - }, { - "name": "CWF_70" - }], - "tableUsed_len": 2, - "gains": [1, 4, 6, 8], - "gains_len": 4, - "vig": [100, 100, 90, 70], - "vig_len": 4 - }, { - "usedForCase": 0, - "name": "D50", - "wbGain": [2.0413, 1.565], - "tableUsed": [{ - "name": "D50_100" - }, { - "name": "D50_70" - }], - "tableUsed_len": 2, - "gains": [1, 4, 6, 8], - "gains_len": 4, - "vig": [100, 100, 80, 70], - "vig_len": 4 - }, { - "usedForCase": 0, - "name": "D65", - "wbGain": [2.1927, 1.4514], - "tableUsed": [{ - "name": "D65_100" - }, { - "name": "D65_70" - }], - "tableUsed_len": 2, - "gains": [1, 4, 6, 8], - "gains_len": 4, - "vig": [90, 85, 80, 70], - "vig_len": 4 - }, { - "usedForCase": 0, - "name": "D75", - "wbGain": [2.3467, 1.323], - "tableUsed": [{ - "name": "D75_100" - }, { - "name": "D75_70" - }], - "tableUsed_len": 2, - "gains": [1, 4, 6, 8], - "gains_len": 4, - "vig": [90, 85, 80, 70], - "vig_len": 4 - }, { - "usedForCase": 0, - "name": "HZ", - "wbGain": [0.9985, 3.0212], - "tableUsed": [{ - "name": "HZ_100" - }, { - "name": "HZ_70" - }], - "tableUsed_len": 2, - "gains": [1, 4, 6, 8], - "gains_len": 4, - "vig": [100, 100, 90, 70], - "vig_len": 4 - }, { - "usedForCase": 0, - "name": "TL84", - "wbGain": [1.622, 2.3057], - "tableUsed": [{ - "name": "TL84_100" - }, { - "name": "TL84_70" - }], - "tableUsed_len": 2, - "gains": [1, 4, 6, 8], - "gains_len": 4, - "vig": [100, 100, 90, 70], - "vig_len": 4 - }, { - "usedForCase": 2, - "name": "GRAY", - "wbGain": [1, 1], - "tableUsed": [{ - "name": "GRAY_0" - }], - "tableUsed_len": 1, - "gains": [1, 10, 31, 64], - "gains_len": 4, - "vig": [90, 60, 25, 0], - "vig_len": 4 - }], - "illAll_len": 8 - }, - "tbl": { - "tableAll": [{ - "name": "3264x2448_A_100", - "resolution": "3264x2448", - "illumination": "A", - "vignetting": 100, - "lsc_samples_red": { - "uCoeff": [4126, 3298, 2812, 2502, 2280, 2072, 1924, 1846, 1834, 1846, 1936, 2044, 2254, 2420, 2746, 3157, 4070, 3621, 3012, 2601, 2334, 2080, 1887, 1737, 1645, 1614, 1645, 1732, 1869, 2037, 2263, 2534, 2880, 3513, 3316, 2785, 2430, 2147, 1881, 1688, 1567, 1473, 1448, 1470, 1559, 1678, 1869, 2072, 2353, 2696, 3191, 3140, 2613, 2280, 1975, 1748, 1550, 1403, 1322, 1298, 1319, 1407, 1542, 1717, 1943, 2195, 2545, 3012, 3027, 2471, 2179, 1869, 1627, 1430, 1298, 1223, 1189, 1216, 1293, 1427, 1597, 1846, 2117, 2410, 2894, 2894, 2410, 2058, 1785, 1526, 1337, 1201, 1130, 1108, 1119, 1211, 1337, 1526, 1748, 2009, 2316, 2825, 2812, 2334, 2002, 1712, 1451, 1271, 1149, 1076, 1057, 1074, 1141, 1284, 1455, 1673, 1949, 2271, 2672, 2812, 2289, 1969, 1678, 1434, 1249, 1115, 1055, 1031, 1049, 1128, 1231, 1427, 1650, 1918, 2271, 2672, 2825, 2325, 1982, 1683, 1437, 1236, 1117, 1044, 1024, 1044, 1119, 1236, 1427, 1650, 1956, 2254, 2660, 2825, 2334, 2002, 1712, 1462, 1273, 1147, 1080, 1049, 1074, 1132, 1265, 1459, 1693, 1949, 2271, 2708, 2866, 2381, 2065, 1774, 1530, 1334, 1211, 1125, 1100, 1113, 1191, 1316, 1499, 1748, 2002, 2334, 2785, 3027, 2471, 2163, 1875, 1627, 1434, 1279, 1194, 1186, 1198, 1282, 1403, 1588, 1840, 2102, 2430, 2937, 3226, 2601, 2298, 1956, 1742, 1530, 1397, 1313, 1284, 1313, 1400, 1538, 1702, 1943, 2237, 2567, 3075, 3432, 2825, 2430, 2109, 1875, 1688, 1542, 1459, 1430, 1462, 1538, 1669, 1834, 2094, 2362, 2672, 3261, 3666, 2982, 2590, 2325, 2051, 1875, 1737, 1645, 1610, 1645, 1722, 1863, 2016, 2280, 2545, 2894, 3452, 4070, 3279, 2825, 2523, 2280, 2065, 1930, 1869, 1817, 1840, 1924, 2065, 2212, 2460, 2759, 3174, 4042, 5511, 3712, 3174, 2838, 2590, 2353, 2220, 2163, 2124, 2132, 2179, 2325, 2513, 2772, 3140, 3534, 5313] - }, - "lsc_samples_greenR": { - "uCoeff": [3693, 2996, 2530, 2306, 2054, 1929, 1805, 1724, 1696, 1708, 1801, 1879, 2025, 2196, 2421, 2834, 3566, 3264, 2749, 2366, 2107, 1899, 1753, 1654, 1576, 1559, 1569, 1636, 1737, 1865, 2031, 2271, 2611, 3059, 3021, 2530, 2202, 1976, 1770, 1618, 1507, 1434, 1401, 1417, 1486, 1593, 1720, 1889, 2089, 2405, 2890, 2812, 2351, 2071, 1837, 1650, 1486, 1385, 1315, 1278, 1303, 1359, 1459, 1618, 1779, 2003, 2264, 2649, 2649, 2257, 1976, 1733, 1542, 1398, 1274, 1203, 1183, 1201, 1256, 1369, 1504, 1681, 1904, 2157, 2556, 2593, 2163, 1889, 1654, 1451, 1289, 1191, 1128, 1099, 1118, 1189, 1292, 1434, 1614, 1837, 2071, 2437, 2521, 2150, 1856, 1600, 1398, 1254, 1141, 1080, 1054, 1072, 1120, 1231, 1385, 1556, 1770, 2042, 2437, 2462, 2132, 1814, 1576, 1380, 1229, 1120, 1050, 1024, 1046, 1109, 1217, 1354, 1542, 1762, 2020, 2328, 2495, 2125, 1823, 1572, 1374, 1217, 1109, 1052, 1027, 1037, 1104, 1219, 1354, 1542, 1766, 2025, 2336, 2574, 2138, 1837, 1614, 1403, 1256, 1139, 1075, 1054, 1075, 1120, 1231, 1382, 1569, 1796, 2083, 2389, 2630, 2189, 1904, 1669, 1462, 1292, 1181, 1116, 1101, 1116, 1177, 1296, 1431, 1632, 1860, 2132, 2478, 2749, 2271, 2003, 1724, 1552, 1385, 1263, 1206, 1168, 1185, 1263, 1364, 1504, 1704, 1934, 2202, 2574, 2913, 2397, 2083, 1837, 1654, 1495, 1377, 1306, 1272, 1306, 1359, 1480, 1621, 1801, 2014, 2285, 2749, 3034, 2556, 2250, 1965, 1779, 1618, 1498, 1425, 1409, 1442, 1504, 1603, 1745, 1939, 2157, 2454, 2867, 3339, 2834, 2374, 2157, 1945, 1779, 1650, 1589, 1569, 1593, 1636, 1762, 1904, 2089, 2314, 2639, 3138, 3730, 3046, 2649, 2314, 2101, 1950, 1832, 1762, 1733, 1766, 1823, 1929, 2071, 2271, 2521, 2924, 3602, 5113, 3401, 2913, 2556, 2314, 2132, 2025, 1976, 1934, 1987, 2065, 2157, 2314, 2512, 2823, 3264, 4974] - }, - "lsc_samples_greenB": { - "uCoeff": [3964, 3072, 2671, 2333, 2095, 1945, 1834, 1751, 1743, 1760, 1811, 1935, 2095, 2276, 2499, 2926, 3781, 3367, 2814, 2425, 2162, 1982, 1777, 1679, 1606, 1579, 1610, 1664, 1760, 1920, 2107, 2326, 2681, 3192, 3111, 2587, 2255, 2020, 1820, 1642, 1514, 1446, 1423, 1437, 1514, 1613, 1781, 1956, 2168, 2482, 2973, 2926, 2441, 2143, 1876, 1679, 1520, 1407, 1326, 1300, 1326, 1388, 1514, 1635, 1839, 2065, 2348, 2731, 2772, 2341, 2037, 1777, 1582, 1412, 1287, 1221, 1205, 1225, 1284, 1410, 1565, 1739, 1966, 2234, 2652, 2681, 2241, 1961, 1699, 1489, 1331, 1221, 1143, 1122, 1141, 1201, 1326, 1466, 1672, 1895, 2162, 2542, 2551, 2201, 1910, 1646, 1446, 1280, 1148, 1095, 1065, 1081, 1152, 1267, 1418, 1603, 1834, 2089, 2482, 2569, 2168, 1871, 1610, 1399, 1245, 1129, 1061, 1040, 1052, 1122, 1241, 1396, 1589, 1807, 2083, 2417, 2534, 2137, 1867, 1613, 1407, 1237, 1127, 1065, 1024, 1061, 1112, 1231, 1376, 1572, 1811, 2071, 2402, 2569, 2168, 1895, 1638, 1423, 1265, 1145, 1079, 1061, 1081, 1133, 1254, 1391, 1599, 1830, 2107, 2482, 2633, 2221, 1971, 1687, 1486, 1310, 1183, 1114, 1104, 1117, 1183, 1296, 1460, 1661, 1890, 2168, 2499, 2761, 2297, 2014, 1760, 1542, 1383, 1262, 1189, 1172, 1189, 1260, 1365, 1511, 1719, 1950, 2227, 2643, 2914, 2433, 2107, 1857, 1642, 1486, 1363, 1280, 1265, 1280, 1360, 1469, 1631, 1820, 2042, 2333, 2731, 3151, 2569, 2214, 1982, 1777, 1603, 1480, 1407, 1381, 1410, 1480, 1599, 1731, 1940, 2201, 2482, 2949, 3321, 2772, 2402, 2119, 1910, 1747, 1631, 1575, 1536, 1555, 1631, 1735, 1895, 2089, 2326, 2643, 3151, 3742, 3009, 2560, 2290, 2065, 1900, 1785, 1723, 1687, 1723, 1777, 1910, 2037, 2241, 2508, 2914, 3579, 5016, 3367, 2937, 2560, 2326, 2150, 2020, 1935, 1935, 1966, 2009, 2125, 2318, 2474, 2836, 3248, 5016] - }, - "lsc_samples_blue": { - "uCoeff": [3507, 2733, 2331, 2107, 1884, 1823, 1704, 1617, 1654, 1654, 1704, 1767, 1896, 2138, 2331, 2707, 3422, 2930, 2516, 2154, 1948, 1778, 1654, 1538, 1506, 1514, 1522, 1572, 1635, 1767, 1896, 2138, 2472, 2930, 2787, 2293, 2017, 1847, 1654, 1530, 1437, 1388, 1362, 1388, 1430, 1514, 1635, 1789, 1989, 2275, 2682, 2494, 2204, 1909, 1704, 1538, 1444, 1324, 1276, 1265, 1265, 1336, 1437, 1538, 1683, 1884, 2138, 2584, 2451, 2076, 1835, 1617, 1459, 1324, 1248, 1181, 1162, 1201, 1254, 1324, 1459, 1635, 1801, 2032, 2369, 2331, 1989, 1735, 1563, 1395, 1254, 1171, 1121, 1121, 1130, 1167, 1259, 1395, 1555, 1735, 1948, 2204, 2239, 1935, 1724, 1514, 1330, 1216, 1125, 1086, 1058, 1095, 1130, 1222, 1355, 1506, 1693, 1909, 2222, 2204, 1909, 1674, 1498, 1312, 1191, 1099, 1062, 1024, 1062, 1116, 1191, 1324, 1482, 1664, 1884, 2138, 2204, 1909, 1664, 1467, 1306, 1176, 1091, 1047, 1024, 1043, 1108, 1186, 1324, 1444, 1664, 1884, 2222, 2204, 1909, 1683, 1498, 1324, 1181, 1108, 1078, 1028, 1050, 1108, 1211, 1330, 1467, 1664, 1884, 2154, 2257, 1989, 1745, 1530, 1355, 1254, 1134, 1082, 1082, 1078, 1143, 1227, 1336, 1506, 1683, 1935, 2171, 2389, 2003, 1801, 1581, 1423, 1300, 1201, 1130, 1108, 1162, 1181, 1276, 1430, 1589, 1778, 2032, 2331, 2516, 2122, 1859, 1674, 1506, 1381, 1265, 1216, 1191, 1222, 1271, 1375, 1498, 1664, 1847, 2076, 2430, 2707, 2293, 1975, 1745, 1589, 1459, 1381, 1312, 1300, 1330, 1375, 1452, 1572, 1724, 1909, 2154, 2584, 2787, 2430, 2107, 1871, 1693, 1589, 1506, 1452, 1416, 1437, 1482, 1581, 1683, 1835, 2017, 2331, 2871, 3382, 2632, 2312, 2003, 1823, 1724, 1617, 1563, 1522, 1563, 1607, 1704, 1801, 1975, 2222, 2516, 3157, 4435, 2930, 2584, 2138, 1962, 1884, 1778, 1704, 1704, 1704, 1724, 1859, 1935, 2154, 2472, 2842, 4301] - } - }, { - "name": "3264x2448_A_70", - "resolution": "3264x2448", - "illumination": "A", - "vignetting": 70, - "lsc_samples_red": { - "uCoeff": [3195, 2722, 2425, 2228, 2080, 1926, 1812, 1751, 1743, 1751, 1822, 1902, 2058, 2161, 2373, 2617, 3156, 2914, 2556, 2297, 2123, 1937, 1788, 1666, 1589, 1563, 1589, 1662, 1772, 1900, 2063, 2243, 2454, 2835, 2740, 2417, 2188, 1990, 1784, 1627, 1525, 1443, 1421, 1440, 1518, 1618, 1773, 1925, 2125, 2347, 2647, 2646, 2309, 2087, 1859, 1679, 1511, 1381, 1308, 1286, 1305, 1385, 1504, 1651, 1831, 2015, 2254, 2548, 2588, 2215, 2018, 1779, 1579, 1407, 1287, 1217, 1184, 1210, 1282, 1404, 1552, 1758, 1965, 2165, 2484, 2505, 2181, 1926, 1713, 1492, 1323, 1196, 1128, 1107, 1117, 1206, 1323, 1492, 1679, 1883, 2102, 2450, 2454, 2128, 1885, 1653, 1426, 1262, 1146, 1075, 1057, 1073, 1139, 1275, 1430, 1617, 1839, 2075, 2342, 2462, 2096, 1861, 1625, 1412, 1242, 1114, 1055, 1031, 1049, 1126, 1225, 1406, 1599, 1816, 2081, 2350, 2476, 2129, 1874, 1631, 1416, 1230, 1116, 1044, 1024, 1044, 1118, 1230, 1406, 1600, 1851, 2068, 2343, 2473, 2134, 1890, 1656, 1439, 1265, 1145, 1080, 1049, 1074, 1130, 1258, 1436, 1639, 1843, 2081, 2379, 2497, 2167, 1941, 1709, 1500, 1323, 1207, 1124, 1099, 1112, 1188, 1305, 1471, 1686, 1885, 2128, 2432, 2610, 2232, 2018, 1794, 1587, 1415, 1272, 1191, 1183, 1195, 1274, 1386, 1550, 1763, 1964, 2197, 2539, 2743, 2322, 2121, 1857, 1685, 1501, 1381, 1304, 1276, 1304, 1384, 1508, 1648, 1845, 2068, 2294, 2625, 2869, 2481, 2214, 1977, 1794, 1639, 1512, 1438, 1412, 1441, 1508, 1622, 1757, 1964, 2156, 2357, 2738, 3002, 2573, 2321, 2143, 1935, 1797, 1682, 1603, 1572, 1603, 1668, 1786, 1904, 2104, 2284, 2504, 2842, 3240, 2762, 2478, 2281, 2110, 1946, 1840, 1793, 1748, 1766, 1835, 1946, 2052, 2229, 2425, 2681, 3220, 4165, 3031, 2709, 2502, 2340, 2168, 2071, 2031, 2000, 2004, 2035, 2144, 2275, 2448, 2682, 2898, 4026] - }, - "lsc_samples_greenR": { - "uCoeff": [2892, 2497, 2204, 2068, 1890, 1803, 1708, 1643, 1620, 1629, 1704, 1760, 1865, 1979, 2119, 2376, 2803, 2654, 2353, 2107, 1932, 1781, 1670, 1591, 1526, 1512, 1520, 1575, 1656, 1751, 1869, 2031, 2247, 2505, 2519, 2216, 2000, 1843, 1685, 1563, 1470, 1406, 1377, 1390, 1450, 1541, 1641, 1768, 1906, 2117, 2421, 2394, 2097, 1910, 1738, 1591, 1452, 1364, 1301, 1267, 1290, 1340, 1427, 1562, 1687, 1852, 2027, 2269, 2293, 2039, 1843, 1657, 1501, 1376, 1264, 1197, 1178, 1195, 1246, 1349, 1466, 1611, 1782, 1957, 2220, 2266, 1974, 1779, 1594, 1422, 1277, 1186, 1126, 1098, 1116, 1184, 1280, 1406, 1558, 1733, 1898, 2143, 2221, 1973, 1757, 1550, 1376, 1246, 1139, 1079, 1054, 1071, 1118, 1223, 1364, 1510, 1681, 1882, 2154, 2181, 1963, 1724, 1531, 1361, 1223, 1119, 1050, 1024, 1046, 1108, 1211, 1336, 1500, 1678, 1868, 2073, 2210, 1959, 1733, 1529, 1356, 1211, 1108, 1052, 1027, 1037, 1103, 1213, 1337, 1501, 1682, 1874, 2082, 2271, 1968, 1744, 1566, 1383, 1249, 1137, 1075, 1054, 1075, 1119, 1225, 1363, 1525, 1708, 1922, 2122, 2308, 2006, 1799, 1613, 1436, 1282, 1178, 1115, 1100, 1115, 1174, 1286, 1407, 1580, 1760, 1958, 2187, 2390, 2065, 1878, 1658, 1517, 1369, 1256, 1202, 1166, 1182, 1256, 1349, 1472, 1640, 1818, 2007, 2251, 2499, 2154, 1936, 1750, 1604, 1468, 1362, 1297, 1265, 1297, 1345, 1454, 1574, 1718, 1876, 2062, 2371, 2564, 2263, 2061, 1851, 1708, 1574, 1471, 1406, 1392, 1422, 1476, 1561, 1677, 1828, 1983, 2181, 2436, 2758, 2456, 2142, 1998, 1841, 1709, 1602, 1551, 1534, 1554, 1589, 1694, 1804, 1940, 2092, 2302, 2607, 2993, 2582, 2336, 2106, 1956, 1844, 1752, 1695, 1671, 1699, 1744, 1826, 1930, 2070, 2233, 2488, 2900, 3886, 2799, 2504, 2272, 2108, 1978, 1900, 1866, 1832, 1876, 1935, 1999, 2108, 2236, 2434, 2697, 3789] - }, - "lsc_samples_greenB": { - "uCoeff": [3082, 2553, 2314, 2090, 1924, 1817, 1733, 1667, 1662, 1675, 1713, 1808, 1924, 2044, 2180, 2444, 2954, 2729, 2403, 2155, 1979, 1853, 1691, 1614, 1554, 1531, 1557, 1600, 1676, 1799, 1932, 2075, 2301, 2602, 2587, 2261, 2044, 1881, 1730, 1585, 1476, 1417, 1397, 1409, 1476, 1559, 1695, 1826, 1971, 2178, 2484, 2482, 2170, 1971, 1772, 1617, 1484, 1385, 1311, 1288, 1311, 1367, 1478, 1577, 1740, 1905, 2095, 2332, 2389, 2108, 1896, 1697, 1538, 1390, 1276, 1215, 1200, 1219, 1273, 1388, 1522, 1663, 1835, 2020, 2295, 2336, 2040, 1841, 1635, 1458, 1317, 1215, 1141, 1120, 1139, 1196, 1312, 1436, 1611, 1784, 1974, 2226, 2245, 2016, 1804, 1592, 1421, 1271, 1145, 1094, 1065, 1080, 1149, 1258, 1395, 1553, 1737, 1921, 2190, 2267, 1994, 1774, 1563, 1379, 1238, 1127, 1061, 1040, 1052, 1121, 1234, 1376, 1543, 1718, 1922, 2145, 2241, 1969, 1772, 1566, 1387, 1231, 1126, 1065, 1024, 1061, 1111, 1225, 1358, 1529, 1722, 1913, 2135, 2267, 1994, 1796, 1588, 1402, 1258, 1143, 1079, 1061, 1081, 1131, 1247, 1372, 1552, 1738, 1942, 2197, 2311, 2033, 1858, 1630, 1459, 1300, 1180, 1113, 1103, 1116, 1180, 1286, 1435, 1606, 1787, 1988, 2204, 2399, 2086, 1888, 1690, 1507, 1367, 1255, 1186, 1170, 1186, 1253, 1350, 1478, 1653, 1832, 2028, 2306, 2499, 2184, 1956, 1768, 1593, 1459, 1349, 1272, 1258, 1272, 1346, 1443, 1583, 1735, 1900, 2102, 2357, 2654, 2274, 2031, 1865, 1706, 1561, 1454, 1388, 1365, 1391, 1454, 1557, 1664, 1829, 2020, 2203, 2499, 2744, 2407, 2165, 1966, 1810, 1680, 1584, 1538, 1503, 1519, 1584, 1669, 1796, 1940, 2102, 2305, 2617, 3002, 2554, 2264, 2086, 1925, 1800, 1709, 1660, 1629, 1660, 1702, 1809, 1900, 2045, 2222, 2480, 2883, 3818, 2774, 2523, 2275, 2118, 1993, 1896, 1830, 1832, 1857, 1886, 1972, 2112, 2205, 2444, 2685, 3818] - }, - "lsc_samples_blue": { - "uCoeff": [2762, 2300, 2048, 1906, 1747, 1712, 1619, 1548, 1583, 1581, 1619, 1664, 1757, 1932, 2048, 2281, 2703, 2411, 2174, 1936, 1799, 1676, 1582, 1487, 1463, 1471, 1477, 1518, 1565, 1667, 1755, 1923, 2140, 2411, 2344, 2028, 1846, 1732, 1583, 1483, 1405, 1363, 1340, 1363, 1399, 1469, 1566, 1682, 1823, 2014, 2266, 2151, 1978, 1773, 1621, 1489, 1413, 1307, 1264, 1254, 1253, 1318, 1407, 1489, 1603, 1752, 1925, 2220, 2138, 1890, 1722, 1554, 1425, 1307, 1239, 1176, 1158, 1195, 1244, 1307, 1425, 1570, 1693, 1854, 2074, 2059, 1829, 1644, 1512, 1370, 1244, 1167, 1119, 1119, 1128, 1163, 1248, 1370, 1505, 1644, 1795, 1958, 1996, 1792, 1641, 1472, 1312, 1209, 1123, 1085, 1058, 1094, 1128, 1215, 1336, 1464, 1613, 1770, 1982, 1973, 1774, 1600, 1460, 1297, 1186, 1098, 1062, 1024, 1062, 1115, 1186, 1308, 1445, 1591, 1753, 1920, 1975, 1775, 1592, 1432, 1292, 1172, 1090, 1047, 1024, 1043, 1107, 1181, 1309, 1411, 1592, 1754, 1990, 1973, 1774, 1608, 1460, 1308, 1176, 1107, 1078, 1028, 1050, 1107, 1205, 1314, 1431, 1591, 1753, 1933, 2010, 1837, 1659, 1486, 1336, 1246, 1132, 1081, 1082, 1077, 1141, 1220, 1318, 1464, 1604, 1792, 1941, 2105, 1841, 1702, 1528, 1396, 1288, 1196, 1128, 1107, 1159, 1176, 1265, 1403, 1536, 1682, 1865, 2059, 2189, 1928, 1743, 1605, 1468, 1360, 1255, 1210, 1186, 1216, 1261, 1355, 1460, 1596, 1732, 1890, 2122, 2314, 2050, 1829, 1657, 1536, 1427, 1360, 1298, 1288, 1315, 1355, 1421, 1520, 1639, 1773, 1938, 2220, 2344, 2137, 1921, 1752, 1617, 1537, 1469, 1423, 1391, 1409, 1447, 1530, 1608, 1722, 1846, 2058, 2407, 2740, 2263, 2064, 1845, 1715, 1644, 1558, 1514, 1479, 1514, 1549, 1626, 1696, 1822, 1991, 2174, 2576, 3412, 2447, 2246, 1932, 1812, 1764, 1684, 1625, 1627, 1625, 1637, 1743, 1790, 1945, 2158, 2382, 3318] - } - }, { - "name": "3264x2448_CWF_100", - "resolution": "3264x2448", - "illumination": "CWF", - "vignetting": 100, - "lsc_samples_red": { - "uCoeff": [3843, 2836, 2410, 2174, 2021, 1861, 1718, 1682, 1654, 1740, 1740, 1861, 1961, 2163, 2469, 2739, 3569, 3224, 2721, 2273, 2021, 1853, 1696, 1595, 1545, 1499, 1499, 1614, 1696, 1803, 1961, 2210, 2532, 3076, 2877, 2410, 2106, 1879, 1740, 1576, 1466, 1390, 1376, 1405, 1450, 1545, 1682, 1853, 2021, 2367, 2836, 2739, 2286, 1991, 1763, 1614, 1435, 1348, 1291, 1255, 1275, 1339, 1450, 1557, 1755, 1952, 2248, 2667, 2667, 2174, 1906, 1696, 1493, 1362, 1263, 1188, 1171, 1181, 1243, 1348, 1477, 1661, 1861, 2084, 2485, 2516, 2106, 1853, 1601, 1435, 1300, 1177, 1106, 1088, 1121, 1181, 1287, 1435, 1563, 1811, 2052, 2395, 2485, 2041, 1779, 1557, 1395, 1239, 1125, 1076, 1065, 1076, 1134, 1243, 1395, 1516, 1763, 2021, 2312, 2410, 2041, 1779, 1563, 1362, 1209, 1094, 1032, 1024, 1040, 1097, 1199, 1348, 1510, 1718, 1961, 2367, 2469, 2021, 1787, 1576, 1366, 1202, 1103, 1048, 1037, 1040, 1112, 1199, 1362, 1534, 1718, 1991, 2326, 2395, 2052, 1827, 1576, 1390, 1251, 1125, 1076, 1054, 1062, 1134, 1220, 1380, 1545, 1740, 1991, 2395, 2532, 2106, 1853, 1614, 1419, 1279, 1160, 1112, 1097, 1112, 1177, 1287, 1419, 1582, 1803, 2052, 2410, 2631, 2210, 1906, 1696, 1516, 1376, 1251, 1171, 1167, 1167, 1239, 1352, 1466, 1661, 1879, 2140, 2469, 2836, 2312, 2021, 1779, 1640, 1466, 1362, 1255, 1243, 1300, 1348, 1445, 1563, 1763, 1952, 2235, 2667, 2962, 2367, 2084, 1879, 1732, 1595, 1450, 1376, 1390, 1380, 1450, 1545, 1682, 1861, 2073, 2367, 2962, 3224, 2667, 2235, 2041, 1853, 1682, 1601, 1534, 1516, 1510, 1582, 1710, 1827, 1981, 2198, 2532, 3007, 3569, 2877, 2469, 2210, 2011, 1906, 1732, 1674, 1682, 1710, 1755, 1827, 1933, 2140, 2410, 2739, 3476, 4992, 3224, 2721, 2439, 2286, 2073, 1952, 1933, 1879, 1879, 1981, 2073, 2198, 2395, 2580, 3148, 4931] - }, - "lsc_samples_greenR": { - "uCoeff": [3573, 2847, 2513, 2213, 2018, 1875, 1764, 1665, 1626, 1653, 1750, 1810, 1983, 2124, 2407, 2778, 3555, 3104, 2619, 2264, 2036, 1864, 1715, 1603, 1528, 1491, 1528, 1570, 1653, 1796, 1983, 2213, 2532, 2983, 2847, 2459, 2092, 1906, 1737, 1559, 1444, 1386, 1364, 1386, 1444, 1531, 1669, 1820, 2036, 2334, 2733, 2800, 2295, 2018, 1764, 1581, 1444, 1335, 1295, 1264, 1271, 1324, 1426, 1549, 1707, 1955, 2213, 2532, 2570, 2164, 1922, 1682, 1501, 1353, 1254, 1187, 1165, 1165, 1247, 1327, 1466, 1626, 1834, 2105, 2513, 2504, 2092, 1834, 1614, 1409, 1290, 1175, 1127, 1108, 1116, 1159, 1257, 1397, 1570, 1791, 2024, 2366, 2459, 2054, 1782, 1592, 1378, 1230, 1132, 1079, 1047, 1059, 1114, 1206, 1353, 1518, 1737, 1983, 2287, 2416, 2060, 1764, 1528, 1353, 1206, 1105, 1056, 1036, 1043, 1100, 1199, 1324, 1501, 1715, 1983, 2310, 2407, 2079, 1764, 1549, 1353, 1204, 1103, 1052, 1024, 1047, 1105, 1193, 1324, 1508, 1715, 1983, 2295, 2477, 2079, 1806, 1577, 1378, 1230, 1132, 1075, 1056, 1079, 1116, 1216, 1361, 1528, 1750, 1989, 2366, 2486, 2164, 1880, 1626, 1418, 1275, 1171, 1100, 1086, 1119, 1165, 1261, 1403, 1599, 1806, 2042, 2416, 2629, 2213, 1955, 1702, 1488, 1356, 1247, 1169, 1159, 1171, 1236, 1353, 1472, 1653, 1875, 2144, 2532, 2766, 2318, 2054, 1791, 1622, 1454, 1353, 1268, 1261, 1268, 1335, 1435, 1570, 1750, 1966, 2264, 2570, 2945, 2504, 2171, 1922, 1728, 1581, 1447, 1397, 1348, 1378, 1457, 1570, 1677, 1875, 2073, 2390, 2744, 3104, 2701, 2318, 2092, 1849, 1728, 1622, 1549, 1511, 1549, 1603, 1707, 1810, 2036, 2264, 2570, 2932, 3573, 2970, 2541, 2228, 2018, 1859, 1782, 1702, 1694, 1694, 1741, 1864, 1983, 2192, 2450, 2800, 3465, 4699, 3299, 2847, 2513, 2287, 2105, 2006, 1927, 1864, 1955, 1983, 2036, 2206, 2450, 2733, 3191, 4866] - }, - "lsc_samples_greenB": { - "uCoeff": [3658, 2936, 2478, 2207, 2012, 1874, 1763, 1660, 1636, 1697, 1758, 1854, 1994, 2178, 2383, 2826, 3437, 3167, 2725, 2335, 2048, 1884, 1714, 1610, 1537, 1507, 1534, 1594, 1689, 1844, 2030, 2243, 2562, 3040, 2923, 2469, 2158, 1949, 1745, 1562, 1458, 1393, 1365, 1374, 1449, 1551, 1685, 1844, 2098, 2359, 2838, 2792, 2288, 2012, 1791, 1621, 1443, 1349, 1283, 1267, 1279, 1341, 1425, 1555, 1723, 1977, 2228, 2611, 2611, 2280, 1949, 1710, 1523, 1365, 1253, 1188, 1165, 1188, 1251, 1336, 1474, 1664, 1874, 2138, 2552, 2533, 2165, 1874, 1617, 1434, 1283, 1188, 1118, 1116, 1116, 1161, 1267, 1413, 1583, 1791, 2018, 2400, 2443, 2098, 1829, 1555, 1390, 1239, 1148, 1077, 1070, 1065, 1121, 1209, 1368, 1534, 1736, 2012, 2335, 2409, 2054, 1791, 1555, 1349, 1196, 1101, 1057, 1030, 1040, 1105, 1200, 1341, 1513, 1702, 1960, 2303, 2409, 2054, 1772, 1565, 1341, 1200, 1105, 1048, 1024, 1044, 1105, 1188, 1331, 1494, 1723, 1977, 2288, 2478, 2073, 1814, 1576, 1376, 1230, 1118, 1056, 1040, 1062, 1116, 1219, 1360, 1534, 1723, 2048, 2383, 2524, 2124, 1869, 1617, 1422, 1253, 1150, 1094, 1081, 1086, 1159, 1257, 1393, 1565, 1786, 2054, 2400, 2641, 2185, 1905, 1685, 1487, 1341, 1232, 1165, 1133, 1154, 1215, 1336, 1477, 1621, 1859, 2124, 2478, 2662, 2288, 2018, 1772, 1606, 1416, 1331, 1246, 1237, 1253, 1298, 1407, 1572, 1736, 1977, 2228, 2621, 2936, 2443, 2138, 1874, 1689, 1534, 1431, 1352, 1323, 1352, 1422, 1534, 1664, 1859, 2105, 2351, 2704, 3167, 2641, 2280, 2000, 1814, 1697, 1565, 1497, 1462, 1487, 1565, 1664, 1805, 2018, 2228, 2552, 2974, 3508, 2874, 2496, 2165, 2000, 1859, 1723, 1652, 1636, 1652, 1697, 1805, 1994, 2118, 2409, 2769, 3403, 4921, 3167, 2736, 2533, 2199, 2048, 1960, 1900, 1829, 1854, 1977, 2030, 2138, 2383, 2693, 3000, 4750] - }, - "lsc_samples_blue": { - "uCoeff": [3130, 2548, 2211, 1953, 1739, 1609, 1627, 1551, 1512, 1528, 1609, 1672, 1700, 1916, 2118, 2465, 3036, 2783, 2313, 1966, 1801, 1609, 1535, 1454, 1387, 1406, 1413, 1468, 1528, 1627, 1791, 1928, 2261, 2733, 2592, 2164, 1892, 1681, 1528, 1433, 1350, 1309, 1275, 1275, 1350, 1413, 1551, 1653, 1823, 2046, 2406, 2349, 1992, 1759, 1601, 1426, 1338, 1244, 1199, 1190, 1214, 1254, 1309, 1433, 1584, 1759, 1953, 2313, 2244, 1892, 1681, 1535, 1393, 1259, 1171, 1162, 1132, 1149, 1176, 1254, 1387, 1482, 1635, 1869, 2133, 2133, 1834, 1627, 1482, 1332, 1190, 1136, 1099, 1075, 1079, 1132, 1209, 1309, 1433, 1601, 1801, 2089, 2074, 1801, 1609, 1447, 1275, 1171, 1099, 1045, 1024, 1064, 1087, 1162, 1270, 1374, 1535, 1770, 2074, 1992, 1759, 1575, 1406, 1270, 1145, 1068, 1035, 1024, 1031, 1068, 1149, 1239, 1387, 1551, 1729, 2005, 2032, 1770, 1551, 1393, 1254, 1149, 1064, 1042, 1031, 1024, 1056, 1132, 1244, 1393, 1551, 1739, 2074, 2089, 1801, 1575, 1406, 1254, 1149, 1068, 1042, 1031, 1031, 1068, 1149, 1259, 1387, 1535, 1791, 2032, 2089, 1834, 1584, 1433, 1292, 1209, 1111, 1064, 1053, 1068, 1107, 1176, 1275, 1406, 1601, 1770, 2089, 2261, 1869, 1653, 1454, 1332, 1239, 1149, 1111, 1079, 1087, 1158, 1224, 1309, 1454, 1627, 1857, 2180, 2313, 1966, 1729, 1559, 1406, 1303, 1224, 1190, 1158, 1171, 1209, 1309, 1393, 1528, 1700, 1916, 2244, 2406, 2089, 1834, 1627, 1505, 1393, 1303, 1254, 1254, 1244, 1303, 1368, 1505, 1609, 1770, 1992, 2406, 2592, 2261, 1953, 1770, 1584, 1490, 1393, 1368, 1332, 1356, 1393, 1433, 1584, 1700, 1916, 2164, 2548, 2890, 2425, 2133, 1869, 1681, 1601, 1512, 1468, 1454, 1454, 1490, 1584, 1681, 1834, 2032, 2406, 2890, 3952, 2708, 2368, 2005, 1892, 1729, 1653, 1584, 1627, 1575, 1601, 1759, 1823, 2005, 2180, 2592, 4004] - } - }, { - "name": "3264x2448_CWF_70", - "resolution": "3264x2448", - "illumination": "CWF", - "vignetting": 70, - "lsc_samples_red": { - "uCoeff": [2997, 2377, 2110, 1961, 1862, 1745, 1632, 1606, 1583, 1657, 1651, 1745, 1812, 1952, 2156, 2305, 2806, 2625, 2332, 2032, 1860, 1741, 1619, 1538, 1498, 1458, 1456, 1555, 1619, 1698, 1810, 1982, 2186, 2517, 2412, 2121, 1920, 1759, 1659, 1525, 1432, 1365, 1353, 1379, 1417, 1497, 1607, 1737, 1850, 2087, 2381, 2338, 2045, 1842, 1673, 1558, 1405, 1329, 1278, 1245, 1263, 1321, 1419, 1507, 1666, 1809, 2014, 2283, 2307, 1971, 1783, 1624, 1456, 1343, 1253, 1183, 1167, 1176, 1234, 1329, 1441, 1593, 1745, 1897, 2165, 2205, 1927, 1747, 1546, 1407, 1288, 1173, 1104, 1087, 1119, 1176, 1275, 1407, 1512, 1711, 1882, 2110, 2192, 1881, 1689, 1511, 1373, 1231, 1123, 1075, 1065, 1075, 1132, 1235, 1373, 1474, 1675, 1864, 2054, 2139, 1886, 1693, 1519, 1344, 1203, 1093, 1032, 1024, 1040, 1096, 1194, 1331, 1471, 1639, 1818, 2104, 2189, 1871, 1701, 1532, 1348, 1197, 1102, 1048, 1037, 1040, 1111, 1194, 1345, 1494, 1640, 1845, 2074, 2127, 1895, 1735, 1531, 1371, 1244, 1123, 1076, 1054, 1062, 1132, 1214, 1361, 1503, 1658, 1844, 2127, 2230, 1936, 1754, 1563, 1396, 1270, 1157, 1111, 1096, 1111, 1174, 1277, 1396, 1534, 1710, 1890, 2132, 2296, 2014, 1793, 1632, 1483, 1360, 1244, 1168, 1165, 1164, 1233, 1337, 1436, 1601, 1770, 1955, 2168, 2439, 2084, 1882, 1699, 1591, 1441, 1348, 1248, 1237, 1291, 1334, 1421, 1520, 1684, 1823, 2021, 2307, 2509, 2110, 1921, 1775, 1665, 1553, 1425, 1359, 1373, 1363, 1425, 1507, 1620, 1759, 1912, 2110, 2509, 2671, 2324, 2027, 1899, 1759, 1621, 1557, 1499, 1484, 1477, 1539, 1647, 1736, 1847, 1996, 2217, 2509, 2876, 2452, 2191, 2019, 1878, 1805, 1662, 1615, 1625, 1648, 1682, 1735, 1810, 1960, 2143, 2346, 2808, 3802, 2667, 2354, 2177, 2085, 1927, 1837, 1828, 1783, 1780, 1862, 1927, 2011, 2141, 2243, 2610, 3759] - }, - "lsc_samples_greenR": { - "uCoeff": [2808, 2385, 2191, 1993, 1859, 1757, 1672, 1591, 1558, 1580, 1660, 1701, 1830, 1920, 2108, 2334, 2796, 2538, 2253, 2025, 1873, 1751, 1636, 1546, 1483, 1450, 1483, 1516, 1581, 1692, 1828, 1984, 2186, 2450, 2389, 2159, 1909, 1783, 1656, 1510, 1412, 1361, 1342, 1361, 1412, 1484, 1596, 1709, 1862, 2061, 2304, 2385, 2052, 1865, 1674, 1528, 1413, 1317, 1282, 1253, 1259, 1307, 1397, 1499, 1624, 1812, 1986, 2180, 2231, 1962, 1797, 1612, 1463, 1334, 1244, 1182, 1161, 1160, 1238, 1310, 1431, 1562, 1721, 1914, 2186, 2196, 1915, 1731, 1558, 1383, 1278, 1171, 1125, 1107, 1114, 1155, 1246, 1372, 1518, 1693, 1859, 2087, 2172, 1892, 1692, 1543, 1357, 1223, 1130, 1078, 1047, 1059, 1112, 1199, 1334, 1475, 1652, 1832, 2034, 2144, 1902, 1679, 1487, 1336, 1200, 1104, 1056, 1036, 1043, 1099, 1194, 1308, 1462, 1636, 1837, 2059, 2139, 1920, 1681, 1507, 1336, 1199, 1102, 1052, 1024, 1047, 1104, 1188, 1309, 1470, 1637, 1838, 2049, 2193, 1918, 1717, 1532, 1359, 1224, 1130, 1075, 1056, 1079, 1115, 1210, 1343, 1487, 1667, 1842, 2104, 2193, 1985, 1778, 1574, 1395, 1266, 1168, 1099, 1086, 1118, 1162, 1252, 1381, 1549, 1713, 1882, 2137, 2295, 2016, 1836, 1638, 1457, 1341, 1240, 1166, 1157, 1168, 1230, 1338, 1442, 1593, 1766, 1959, 2218, 2384, 2089, 1911, 1709, 1575, 1429, 1339, 1260, 1254, 1260, 1322, 1411, 1527, 1673, 1835, 2045, 2231, 2496, 2221, 1994, 1813, 1661, 1540, 1423, 1379, 1333, 1361, 1432, 1530, 1615, 1771, 1912, 2129, 2342, 2582, 2351, 2096, 1943, 1756, 1663, 1576, 1513, 1480, 1513, 1558, 1644, 1721, 1894, 2051, 2247, 2453, 2879, 2524, 2249, 2034, 1884, 1764, 1707, 1641, 1636, 1634, 1670, 1768, 1854, 2004, 2175, 2393, 2800, 3597, 2723, 2452, 2237, 2085, 1955, 1884, 1823, 1769, 1847, 1864, 1895, 2017, 2186, 2363, 2642, 3713] - }, - "lsc_samples_greenB": { - "uCoeff": [2868, 2452, 2163, 1988, 1854, 1756, 1671, 1587, 1567, 1619, 1667, 1738, 1839, 1964, 2089, 2370, 2713, 2583, 2335, 2082, 1883, 1768, 1635, 1552, 1491, 1465, 1488, 1537, 1613, 1733, 1868, 2008, 2209, 2491, 2446, 2167, 1963, 1820, 1663, 1512, 1425, 1368, 1343, 1350, 1416, 1502, 1610, 1729, 1914, 2080, 2382, 2379, 2046, 1860, 1698, 1564, 1412, 1330, 1270, 1256, 1267, 1323, 1396, 1505, 1638, 1830, 1998, 2240, 2263, 2058, 1820, 1637, 1483, 1345, 1243, 1183, 1161, 1183, 1241, 1318, 1438, 1596, 1756, 1941, 2217, 2219, 1976, 1766, 1561, 1406, 1271, 1183, 1116, 1114, 1114, 1157, 1256, 1387, 1530, 1693, 1853, 2113, 2159, 1929, 1733, 1509, 1369, 1231, 1145, 1076, 1070, 1065, 1119, 1202, 1348, 1490, 1651, 1857, 2072, 2138, 1897, 1703, 1512, 1332, 1191, 1100, 1057, 1030, 1040, 1104, 1195, 1324, 1473, 1625, 1817, 2053, 2140, 1899, 1688, 1522, 1325, 1195, 1104, 1048, 1024, 1044, 1104, 1183, 1315, 1457, 1644, 1833, 2043, 2194, 1913, 1724, 1531, 1357, 1224, 1117, 1056, 1040, 1062, 1115, 1213, 1342, 1493, 1643, 1892, 2117, 2224, 1951, 1768, 1566, 1399, 1245, 1147, 1093, 1081, 1085, 1156, 1249, 1371, 1518, 1695, 1892, 2124, 2304, 1993, 1793, 1622, 1456, 1327, 1226, 1162, 1131, 1151, 1209, 1322, 1447, 1564, 1752, 1942, 2175, 2303, 2065, 1880, 1692, 1560, 1393, 1318, 1239, 1231, 1246, 1287, 1385, 1529, 1660, 1844, 2015, 2271, 2489, 2172, 1967, 1771, 1626, 1497, 1407, 1336, 1309, 1336, 1399, 1497, 1603, 1757, 1939, 2097, 2312, 2629, 2303, 2064, 1863, 1724, 1635, 1523, 1465, 1434, 1456, 1523, 1605, 1717, 1879, 2021, 2233, 2484, 2832, 2450, 2212, 1981, 1868, 1764, 1654, 1595, 1583, 1595, 1630, 1716, 1863, 1942, 2142, 2369, 2755, 3752, 2624, 2365, 2253, 2012, 1905, 1844, 1799, 1738, 1758, 1858, 1890, 1960, 2131, 2332, 2500, 3632] - }, - "lsc_samples_blue": { - "uCoeff": [2498, 2162, 1954, 1781, 1625, 1528, 1552, 1490, 1457, 1470, 1536, 1582, 1592, 1751, 1881, 2100, 2432, 2304, 2017, 1785, 1676, 1530, 1477, 1411, 1354, 1373, 1378, 1424, 1470, 1546, 1667, 1754, 1977, 2268, 2198, 1926, 1743, 1589, 1471, 1395, 1325, 1290, 1259, 1258, 1325, 1377, 1491, 1565, 1686, 1833, 2059, 2039, 1807, 1646, 1531, 1388, 1315, 1231, 1191, 1182, 1205, 1241, 1288, 1394, 1516, 1646, 1775, 2012, 1976, 1739, 1590, 1481, 1364, 1245, 1165, 1158, 1129, 1145, 1170, 1241, 1358, 1433, 1550, 1720, 1890, 1902, 1700, 1550, 1439, 1311, 1182, 1133, 1098, 1074, 1078, 1129, 1201, 1290, 1394, 1527, 1672, 1867, 1864, 1679, 1539, 1411, 1260, 1166, 1097, 1045, 1024, 1064, 1086, 1157, 1256, 1344, 1474, 1653, 1864, 1803, 1647, 1512, 1375, 1257, 1141, 1067, 1035, 1024, 1031, 1067, 1145, 1228, 1358, 1491, 1621, 1813, 1837, 1657, 1492, 1364, 1242, 1145, 1063, 1042, 1031, 1024, 1056, 1129, 1233, 1364, 1492, 1631, 1870, 1881, 1683, 1512, 1375, 1242, 1145, 1067, 1042, 1031, 1031, 1067, 1145, 1247, 1358, 1477, 1674, 1835, 1876, 1707, 1517, 1398, 1276, 1202, 1109, 1064, 1053, 1068, 1105, 1170, 1260, 1373, 1532, 1653, 1876, 2003, 1729, 1573, 1413, 1311, 1229, 1145, 1109, 1078, 1086, 1154, 1215, 1290, 1413, 1550, 1719, 1939, 2030, 1799, 1631, 1502, 1376, 1287, 1216, 1185, 1154, 1166, 1201, 1293, 1364, 1474, 1606, 1758, 1976, 2083, 1885, 1709, 1554, 1459, 1366, 1287, 1243, 1244, 1233, 1287, 1343, 1459, 1538, 1655, 1807, 2083, 2198, 2003, 1793, 1666, 1521, 1447, 1365, 1345, 1312, 1334, 1365, 1395, 1521, 1605, 1763, 1926, 2165, 2382, 2104, 1919, 1733, 1592, 1535, 1464, 1428, 1417, 1415, 1444, 1520, 1592, 1703, 1838, 2089, 2382, 3074, 2281, 2077, 1823, 1754, 1631, 1575, 1519, 1559, 1511, 1529, 1657, 1696, 1823, 1930, 2195, 3110] - } - }, { - "name": "3264x2448_D50_100", - "resolution": "3264x2448", - "illumination": "D50", - "vignetting": 100, - "lsc_samples_red": { - "uCoeff": [3563, 2927, 2529, 2174, 2017, 1868, 1729, 1687, 1638, 1647, 1751, 1868, 1974, 2157, 2462, 2896, 4026, 3309, 2700, 2299, 2017, 1819, 1708, 1609, 1555, 1505, 1555, 1600, 1687, 1819, 2017, 2244, 2575, 3055, 3055, 2462, 2092, 1881, 1708, 1538, 1428, 1392, 1352, 1413, 1489, 1530, 1677, 1819, 2017, 2318, 2896, 2927, 2262, 2017, 1751, 1609, 1458, 1313, 1283, 1260, 1266, 1332, 1428, 1564, 1740, 1946, 2244, 2754, 2674, 2208, 1906, 1697, 1513, 1365, 1232, 1175, 1180, 1180, 1243, 1385, 1513, 1628, 1856, 2124, 2624, 2754, 2046, 1843, 1657, 1465, 1266, 1165, 1105, 1110, 1114, 1165, 1295, 1392, 1582, 1796, 2124, 2462, 2506, 2061, 1807, 1582, 1413, 1232, 1132, 1063, 1075, 1088, 1141, 1211, 1358, 1538, 1751, 2002, 2358, 2462, 2017, 1751, 1530, 1345, 1190, 1114, 1047, 1024, 1051, 1088, 1211, 1358, 1538, 1740, 1974, 2318, 2419, 2061, 1762, 1547, 1385, 1185, 1105, 1071, 1028, 1063, 1119, 1211, 1378, 1489, 1708, 1974, 2440, 2624, 2124, 1784, 1600, 1378, 1232, 1110, 1055, 1071, 1075, 1114, 1243, 1385, 1547, 1784, 2017, 2398, 2506, 2157, 1856, 1647, 1428, 1313, 1175, 1105, 1092, 1092, 1165, 1283, 1413, 1600, 1856, 2061, 2506, 2700, 2157, 1906, 1729, 1538, 1332, 1254, 1190, 1160, 1165, 1227, 1326, 1497, 1657, 1881, 2124, 2529, 2958, 2318, 2017, 1762, 1628, 1458, 1358, 1266, 1238, 1272, 1326, 1435, 1591, 1751, 1988, 2157, 2700, 3055, 2462, 2174, 1868, 1708, 1582, 1465, 1385, 1365, 1385, 1465, 1538, 1708, 1881, 2124, 2358, 2838, 3474, 2700, 2262, 2046, 1906, 1677, 1600, 1538, 1473, 1538, 1591, 1697, 1807, 2002, 2226, 2552, 3124, 3913, 2838, 2506, 2262, 2061, 1919, 1708, 1740, 1638, 1708, 1751, 1856, 2002, 2141, 2462, 2896, 3518, 4705, 3349, 2838, 2529, 2299, 2124, 1988, 1974, 1946, 1933, 2017, 2124, 2244, 2506, 2674, 3159, 4956] - }, - "lsc_samples_greenR": { - "uCoeff": [3825, 3056, 2647, 2246, 2066, 1876, 1719, 1670, 1638, 1689, 1744, 1775, 1944, 2148, 2420, 2864, 3638, 3276, 2732, 2307, 2073, 1859, 1689, 1611, 1532, 1475, 1512, 1594, 1656, 1813, 1983, 2246, 2647, 3171, 2979, 2502, 2188, 1876, 1709, 1552, 1446, 1388, 1347, 1369, 1425, 1536, 1689, 1882, 2088, 2325, 2878, 2797, 2325, 2010, 1786, 1615, 1453, 1354, 1267, 1246, 1240, 1323, 1436, 1540, 1729, 1950, 2237, 2567, 2758, 2221, 1983, 1670, 1509, 1354, 1243, 1176, 1160, 1169, 1230, 1338, 1475, 1647, 1870, 2117, 2502, 2534, 2148, 1841, 1620, 1412, 1272, 1167, 1112, 1090, 1096, 1156, 1267, 1412, 1577, 1797, 2080, 2381, 2470, 2102, 1813, 1573, 1376, 1240, 1112, 1076, 1057, 1066, 1114, 1203, 1344, 1528, 1744, 1996, 2353, 2502, 2088, 1775, 1552, 1347, 1210, 1080, 1048, 1033, 1042, 1090, 1205, 1347, 1497, 1729, 2003, 2289, 2481, 2110, 1791, 1577, 1338, 1193, 1100, 1038, 1024, 1038, 1096, 1181, 1329, 1528, 1709, 2010, 2362, 2534, 2110, 1797, 1573, 1385, 1220, 1136, 1070, 1055, 1057, 1123, 1203, 1326, 1509, 1739, 2003, 2450, 2578, 2196, 1870, 1615, 1408, 1275, 1149, 1092, 1094, 1094, 1149, 1256, 1388, 1548, 1819, 2073, 2372, 2612, 2280, 1983, 1689, 1501, 1357, 1220, 1172, 1153, 1167, 1228, 1329, 1460, 1661, 1847, 2204, 2512, 2878, 2325, 2088, 1819, 1611, 1475, 1318, 1261, 1228, 1283, 1318, 1429, 1594, 1744, 1963, 2307, 2732, 2979, 2556, 2221, 1919, 1714, 1552, 1460, 1376, 1329, 1372, 1453, 1552, 1709, 1888, 2140, 2450, 2950, 3331, 2758, 2353, 2030, 1876, 1714, 1573, 1520, 1501, 1497, 1624, 1709, 1847, 2052, 2325, 2623, 3137, 3705, 3025, 2567, 2316, 2052, 1853, 1734, 1744, 1661, 1714, 1786, 1859, 2066, 2280, 2523, 2823, 3638, 5201, 3331, 2878, 2556, 2325, 2110, 2044, 1906, 1853, 1870, 2003, 2088, 2188, 2420, 2758, 3331, 4705] - }, - "lsc_samples_greenB": { - "uCoeff": [3656, 3056, 2536, 2328, 2076, 1886, 1784, 1717, 1703, 1679, 1784, 1801, 1973, 2257, 2442, 2825, 3845, 3405, 2772, 2365, 2128, 1868, 1743, 1655, 1548, 1524, 1548, 1624, 1713, 1823, 2062, 2301, 2685, 3120, 3025, 2569, 2167, 1948, 1727, 1606, 1483, 1402, 1376, 1409, 1468, 1544, 1698, 1892, 2175, 2442, 2893, 2825, 2328, 2098, 1779, 1628, 1497, 1351, 1287, 1273, 1265, 1333, 1433, 1619, 1768, 2020, 2337, 2637, 2721, 2283, 1993, 1693, 1536, 1367, 1265, 1199, 1173, 1185, 1247, 1348, 1472, 1651, 1910, 2191, 2602, 2547, 2215, 1898, 1655, 1450, 1316, 1175, 1112, 1100, 1116, 1171, 1268, 1412, 1589, 1828, 2113, 2494, 2494, 2136, 1784, 1589, 1383, 1221, 1131, 1080, 1057, 1078, 1131, 1226, 1380, 1540, 1774, 2091, 2384, 2463, 2151, 1795, 1564, 1348, 1197, 1106, 1047, 1033, 1057, 1120, 1199, 1339, 1528, 1738, 1980, 2384, 2473, 2076, 1784, 1548, 1348, 1209, 1110, 1047, 1024, 1038, 1110, 1194, 1304, 1509, 1743, 2013, 2328, 2547, 2113, 1834, 1581, 1383, 1221, 1127, 1076, 1053, 1072, 1120, 1204, 1348, 1540, 1774, 2027, 2365, 2525, 2159, 1851, 1624, 1450, 1249, 1162, 1096, 1090, 1100, 1175, 1255, 1412, 1581, 1801, 2136, 2433, 2649, 2249, 1910, 1722, 1486, 1348, 1216, 1164, 1164, 1159, 1226, 1324, 1450, 1642, 1868, 2207, 2515, 2893, 2365, 2084, 1779, 1602, 1443, 1336, 1242, 1221, 1252, 1321, 1402, 1577, 1753, 1987, 2301, 2602, 2965, 2494, 2199, 1910, 1688, 1577, 1433, 1367, 1318, 1339, 1426, 1516, 1679, 1851, 2113, 2423, 2907, 3348, 2746, 2365, 2048, 1834, 1693, 1577, 1528, 1490, 1520, 1564, 1679, 1806, 2055, 2301, 2625, 3072, 3656, 2965, 2547, 2257, 2027, 1851, 1722, 1717, 1655, 1669, 1743, 1828, 1993, 2207, 2494, 2851, 3526, 4845, 3293, 2965, 2463, 2257, 2013, 1980, 1857, 1898, 1880, 1973, 2020, 2199, 2483, 2772, 3222, 5008] - }, - "lsc_samples_blue": { - "uCoeff": [3493, 2791, 2385, 2082, 1979, 1766, 1684, 1594, 1623, 1645, 1684, 1792, 1886, 2070, 2354, 2791, 3493, 2975, 2518, 2196, 1990, 1757, 1638, 1573, 1508, 1489, 1501, 1553, 1660, 1749, 1896, 2119, 2417, 2769, 2769, 2339, 2058, 1792, 1630, 1560, 1430, 1350, 1360, 1355, 1402, 1508, 1638, 1792, 2024, 2279, 2609, 2609, 2196, 1906, 1684, 1501, 1430, 1310, 1243, 1238, 1256, 1310, 1419, 1533, 1676, 1886, 2119, 2466, 2466, 2119, 1876, 1601, 1495, 1335, 1205, 1174, 1137, 1137, 1226, 1310, 1430, 1623, 1829, 2058, 2433, 2354, 2012, 1766, 1560, 1386, 1247, 1148, 1089, 1092, 1112, 1163, 1243, 1386, 1527, 1716, 2001, 2279, 2265, 1990, 1716, 1520, 1365, 1193, 1096, 1063, 1039, 1060, 1126, 1193, 1360, 1508, 1699, 1906, 2119, 2209, 1926, 1676, 1471, 1350, 1166, 1086, 1039, 1042, 1045, 1076, 1155, 1306, 1495, 1699, 1906, 2082, 2237, 1979, 1684, 1471, 1306, 1201, 1051, 1042, 1024, 1036, 1086, 1166, 1335, 1441, 1699, 1906, 2309, 2170, 1979, 1766, 1465, 1360, 1193, 1076, 1042, 1024, 1042, 1076, 1205, 1335, 1477, 1699, 1906, 2251, 2323, 1979, 1740, 1540, 1381, 1238, 1126, 1070, 1051, 1073, 1112, 1226, 1355, 1495, 1724, 1990, 2209, 2385, 2012, 1838, 1608, 1430, 1301, 1182, 1148, 1102, 1123, 1213, 1283, 1413, 1560, 1749, 2001, 2385, 2501, 2196, 1958, 1676, 1527, 1391, 1310, 1201, 1193, 1201, 1292, 1365, 1465, 1676, 1838, 2106, 2401, 2667, 2309, 2001, 1766, 1594, 1489, 1386, 1310, 1310, 1325, 1381, 1477, 1587, 1792, 1947, 2251, 2687, 2927, 2483, 2170, 1937, 1749, 1594, 1508, 1465, 1402, 1447, 1471, 1630, 1749, 1857, 2144, 2401, 2707, 3427, 2647, 2339, 2024, 1876, 1757, 1660, 1601, 1623, 1560, 1623, 1707, 1801, 2024, 2196, 2647, 3272, 4610, 2903, 2518, 2183, 2106, 1896, 1792, 1716, 1676, 1660, 1810, 1886, 1979, 2183, 2483, 2903, 4440] - } - }, { - "name": "3264x2448_D50_70", - "resolution": "3264x2448", - "illumination": "D50", - "vignetting": 70, - "lsc_samples_red": { - "uCoeff": [2801, 2445, 2203, 1961, 1859, 1751, 1641, 1610, 1569, 1575, 1661, 1751, 1822, 1947, 2151, 2422, 3125, 2687, 2316, 2053, 1857, 1712, 1630, 1551, 1507, 1463, 1507, 1543, 1611, 1712, 1857, 2009, 2219, 2502, 2545, 2162, 1909, 1761, 1631, 1491, 1397, 1367, 1331, 1387, 1453, 1483, 1603, 1708, 1846, 2048, 2426, 2482, 2025, 1864, 1663, 1554, 1426, 1296, 1270, 1249, 1254, 1314, 1398, 1513, 1653, 1804, 2011, 2350, 2312, 1999, 1783, 1625, 1474, 1345, 1223, 1170, 1175, 1175, 1234, 1364, 1474, 1564, 1740, 1930, 2273, 2394, 1877, 1738, 1597, 1435, 1255, 1161, 1103, 1109, 1112, 1161, 1283, 1367, 1529, 1697, 1942, 2163, 2209, 1898, 1714, 1534, 1390, 1224, 1130, 1063, 1075, 1087, 1139, 1204, 1339, 1494, 1664, 1848, 2091, 2181, 1866, 1668, 1489, 1328, 1185, 1113, 1047, 1024, 1051, 1087, 1205, 1340, 1496, 1658, 1829, 2065, 2149, 1905, 1679, 1506, 1366, 1180, 1104, 1071, 1028, 1063, 1118, 1206, 1360, 1452, 1631, 1831, 2165, 2311, 1956, 1697, 1553, 1359, 1226, 1109, 1055, 1071, 1075, 1113, 1236, 1366, 1505, 1697, 1866, 2129, 2209, 1979, 1757, 1593, 1404, 1303, 1172, 1104, 1092, 1091, 1162, 1274, 1390, 1550, 1757, 1898, 2209, 2351, 1969, 1793, 1662, 1504, 1318, 1247, 1187, 1158, 1162, 1221, 1312, 1465, 1597, 1772, 1942, 2216, 2534, 2089, 1879, 1683, 1580, 1433, 1344, 1258, 1232, 1264, 1313, 1411, 1546, 1674, 1854, 1957, 2332, 2581, 2187, 1997, 1765, 1643, 1541, 1440, 1368, 1350, 1368, 1440, 1500, 1643, 1777, 1955, 2103, 2414, 2859, 2350, 2049, 1903, 1806, 1617, 1556, 1503, 1444, 1503, 1547, 1635, 1718, 1865, 2020, 2233, 2597, 3126, 2422, 2220, 2062, 1921, 1817, 1640, 1675, 1585, 1646, 1679, 1761, 1870, 1961, 2185, 2467, 2839, 3601, 2760, 2445, 2250, 2096, 1971, 1868, 1864, 1842, 1828, 1893, 1971, 2049, 2231, 2317, 2618, 3776] - }, - "lsc_samples_greenR": { - "uCoeff": [2985, 2541, 2296, 2019, 1900, 1757, 1633, 1595, 1569, 1612, 1654, 1670, 1797, 1940, 2118, 2398, 2854, 2663, 2340, 2060, 1904, 1746, 1613, 1553, 1486, 1436, 1468, 1537, 1584, 1707, 1828, 2011, 2275, 2586, 2488, 2193, 1988, 1757, 1631, 1503, 1414, 1363, 1326, 1346, 1394, 1489, 1614, 1762, 1905, 2053, 2412, 2383, 2076, 1858, 1693, 1559, 1422, 1335, 1255, 1236, 1230, 1306, 1406, 1491, 1643, 1807, 2005, 2207, 2378, 2009, 1850, 1601, 1471, 1335, 1234, 1171, 1156, 1164, 1221, 1320, 1439, 1581, 1752, 1924, 2178, 2220, 1962, 1737, 1564, 1386, 1261, 1163, 1110, 1089, 1095, 1152, 1256, 1386, 1525, 1698, 1905, 2098, 2180, 1932, 1719, 1526, 1355, 1232, 1110, 1075, 1057, 1066, 1112, 1197, 1325, 1485, 1658, 1843, 2087, 2213, 1926, 1689, 1509, 1330, 1204, 1079, 1048, 1033, 1042, 1089, 1199, 1330, 1459, 1648, 1854, 2042, 2199, 1946, 1705, 1533, 1322, 1188, 1099, 1038, 1024, 1038, 1095, 1176, 1313, 1488, 1632, 1861, 2103, 2239, 1944, 1709, 1529, 1366, 1214, 1134, 1070, 1055, 1057, 1122, 1197, 1310, 1470, 1657, 1854, 2171, 2267, 2012, 1769, 1564, 1386, 1266, 1146, 1091, 1093, 1093, 1146, 1248, 1367, 1503, 1724, 1908, 2102, 2281, 2072, 1861, 1626, 1469, 1342, 1214, 1169, 1151, 1164, 1222, 1315, 1431, 1601, 1742, 2009, 2202, 2471, 2095, 1940, 1734, 1564, 1449, 1306, 1253, 1222, 1275, 1306, 1406, 1549, 1667, 1832, 2080, 2357, 2522, 2263, 2037, 1810, 1649, 1513, 1435, 1359, 1315, 1355, 1428, 1513, 1644, 1783, 1968, 2177, 2500, 2752, 2396, 2125, 1889, 1779, 1650, 1531, 1486, 1470, 1465, 1578, 1646, 1754, 1908, 2102, 2289, 2606, 2975, 2566, 2270, 2108, 1913, 1758, 1664, 1679, 1606, 1652, 1710, 1764, 1925, 2078, 2234, 2410, 2926, 3948, 2747, 2477, 2272, 2117, 1959, 1917, 1804, 1760, 1772, 1881, 1940, 2002, 2161, 2383, 2747, 3601] - }, - "lsc_samples_greenB": { - "uCoeff": [2866, 2541, 2209, 2086, 1908, 1766, 1689, 1637, 1627, 1603, 1689, 1693, 1822, 2028, 2135, 2369, 2999, 2757, 2371, 2107, 1950, 1754, 1661, 1592, 1501, 1480, 1501, 1564, 1634, 1715, 1895, 2055, 2304, 2549, 2522, 2246, 1971, 1819, 1647, 1552, 1448, 1376, 1353, 1383, 1434, 1496, 1622, 1771, 1977, 2146, 2424, 2404, 2079, 1933, 1687, 1571, 1462, 1332, 1274, 1262, 1253, 1315, 1403, 1563, 1677, 1867, 2086, 2260, 2349, 2060, 1858, 1622, 1495, 1347, 1255, 1193, 1169, 1180, 1238, 1329, 1436, 1584, 1787, 1985, 2256, 2230, 2018, 1786, 1595, 1421, 1303, 1171, 1110, 1099, 1114, 1167, 1257, 1386, 1536, 1725, 1933, 2188, 2200, 1961, 1693, 1540, 1362, 1214, 1129, 1079, 1057, 1077, 1129, 1219, 1359, 1496, 1685, 1923, 2112, 2182, 1979, 1707, 1520, 1331, 1192, 1105, 1047, 1033, 1057, 1119, 1194, 1322, 1487, 1656, 1834, 2118, 2192, 1917, 1698, 1506, 1331, 1204, 1109, 1047, 1024, 1038, 1109, 1189, 1290, 1471, 1662, 1864, 2075, 2249, 1947, 1741, 1536, 1364, 1215, 1125, 1076, 1053, 1072, 1119, 1198, 1331, 1498, 1688, 1874, 2103, 2224, 1980, 1752, 1572, 1425, 1241, 1159, 1095, 1090, 1099, 1172, 1247, 1389, 1533, 1708, 1961, 2151, 2311, 2046, 1797, 1656, 1455, 1333, 1210, 1161, 1162, 1156, 1220, 1310, 1421, 1583, 1760, 2011, 2205, 2483, 2128, 1936, 1699, 1556, 1419, 1323, 1235, 1215, 1245, 1309, 1380, 1533, 1675, 1853, 2075, 2256, 2512, 2213, 2018, 1802, 1625, 1536, 1409, 1350, 1305, 1324, 1403, 1480, 1617, 1750, 1945, 2155, 2467, 2764, 2387, 2135, 1905, 1742, 1631, 1534, 1494, 1460, 1486, 1522, 1619, 1717, 1911, 2082, 2291, 2558, 2939, 2520, 2254, 2058, 1892, 1757, 1653, 1655, 1600, 1611, 1672, 1736, 1862, 2016, 2211, 2432, 2845, 3699, 2718, 2545, 2196, 2060, 1875, 1861, 1761, 1800, 1781, 1855, 1881, 2012, 2213, 2394, 2665, 3813] - }, - "lsc_samples_blue": { - "uCoeff": [2752, 2343, 2090, 1886, 1827, 1663, 1602, 1528, 1556, 1573, 1602, 1685, 1748, 1876, 2066, 2343, 2752, 2444, 2175, 1970, 1834, 1658, 1568, 1519, 1464, 1449, 1458, 1501, 1587, 1651, 1755, 1908, 2097, 2294, 2331, 2064, 1880, 1685, 1561, 1511, 1399, 1328, 1338, 1333, 1373, 1463, 1568, 1685, 1852, 2017, 2211, 2239, 1972, 1770, 1604, 1456, 1400, 1293, 1232, 1228, 1245, 1293, 1390, 1485, 1597, 1753, 1910, 2129, 2150, 1925, 1757, 1540, 1458, 1317, 1197, 1169, 1134, 1133, 1218, 1294, 1398, 1559, 1717, 1875, 2124, 2077, 1848, 1671, 1509, 1362, 1237, 1144, 1088, 1091, 1110, 1159, 1233, 1362, 1479, 1628, 1839, 2018, 2016, 1838, 1633, 1477, 1345, 1187, 1095, 1063, 1039, 1060, 1124, 1187, 1340, 1466, 1618, 1767, 1900, 1977, 1788, 1602, 1435, 1333, 1162, 1085, 1039, 1042, 1045, 1075, 1151, 1291, 1457, 1622, 1772, 1875, 2002, 1835, 1610, 1436, 1292, 1196, 1051, 1042, 1024, 1036, 1085, 1162, 1319, 1408, 1623, 1773, 2060, 1946, 1833, 1681, 1429, 1342, 1188, 1075, 1042, 1024, 1042, 1075, 1199, 1318, 1440, 1622, 1772, 2011, 2063, 1829, 1655, 1496, 1360, 1230, 1124, 1070, 1051, 1072, 1110, 1219, 1336, 1454, 1641, 1838, 1972, 2102, 1848, 1734, 1553, 1403, 1288, 1177, 1146, 1101, 1121, 1207, 1271, 1387, 1509, 1656, 1839, 2102, 2177, 1989, 1828, 1607, 1487, 1370, 1298, 1195, 1188, 1195, 1281, 1345, 1430, 1607, 1725, 1915, 2099, 2283, 2063, 1851, 1676, 1540, 1455, 1365, 1296, 1297, 1310, 1360, 1444, 1534, 1699, 1805, 2016, 2299, 2449, 2178, 1973, 1809, 1667, 1541, 1471, 1435, 1378, 1418, 1437, 1574, 1667, 1740, 1952, 2114, 2284, 2773, 2275, 2086, 1863, 1761, 1673, 1597, 1549, 1571, 1512, 1564, 1629, 1696, 1863, 1970, 2275, 2660, 3534, 2427, 2195, 1968, 1933, 1775, 1696, 1636, 1603, 1587, 1712, 1766, 1827, 1968, 2167, 2427, 3415] - } - }, { - "name": "3264x2448_D65_100", - "resolution": "3264x2448", - "illumination": "D65", - "vignetting": 100, - "lsc_samples_red": { - "uCoeff": [3961, 3057, 2569, 2328, 2059, 1924, 1785, 1700, 1674, 1700, 1785, 1868, 2059, 2231, 2471, 2919, 3775, 3210, 2745, 2328, 2100, 1868, 1728, 1623, 1560, 1545, 1560, 1623, 1700, 1868, 2046, 2246, 2611, 3210, 3087, 2529, 2200, 1936, 1737, 1607, 1454, 1410, 1368, 1404, 1488, 1568, 1728, 1924, 2156, 2415, 3057, 2867, 2345, 2086, 1815, 1623, 1468, 1328, 1276, 1251, 1291, 1351, 1448, 1607, 1815, 2021, 2294, 2745, 2654, 2200, 1959, 1718, 1516, 1351, 1246, 1182, 1173, 1173, 1251, 1351, 1495, 1691, 1924, 2231, 2611, 2654, 2200, 1868, 1615, 1422, 1266, 1186, 1116, 1079, 1116, 1173, 1281, 1441, 1623, 1826, 2100, 2509, 2590, 2100, 1847, 1583, 1391, 1232, 1120, 1061, 1051, 1072, 1136, 1232, 1422, 1560, 1815, 2059, 2452, 2509, 2059, 1826, 1591, 1368, 1191, 1105, 1058, 1027, 1047, 1120, 1218, 1374, 1538, 1766, 2046, 2397, 2529, 2086, 1815, 1568, 1368, 1218, 1097, 1037, 1024, 1037, 1094, 1213, 1374, 1545, 1785, 2059, 2415, 2590, 2100, 1826, 1591, 1391, 1232, 1132, 1068, 1037, 1058, 1109, 1200, 1404, 1583, 1815, 2046, 2452, 2590, 2142, 1868, 1648, 1441, 1281, 1173, 1105, 1083, 1094, 1173, 1291, 1441, 1607, 1847, 2127, 2471, 2792, 2246, 1924, 1700, 1523, 1362, 1236, 1156, 1148, 1191, 1236, 1351, 1509, 1674, 1959, 2185, 2611, 2817, 2345, 2046, 1826, 1615, 1441, 1334, 1266, 1251, 1276, 1345, 1448, 1607, 1785, 2059, 2294, 2745, 2973, 2509, 2200, 1936, 1737, 1607, 1448, 1404, 1374, 1391, 1488, 1583, 1728, 1901, 2142, 2415, 2919, 3275, 2721, 2345, 2086, 1868, 1737, 1640, 1560, 1523, 1523, 1607, 1718, 1857, 2086, 2294, 2590, 3147, 3775, 2973, 2529, 2246, 2021, 1924, 1756, 1700, 1718, 1718, 1785, 1924, 1983, 2231, 2471, 2867, 3606, 5087, 3378, 2892, 2529, 2362, 2142, 2059, 1971, 1901, 1983, 2008, 2156, 2278, 2471, 2745, 3210, 5087] - }, - "lsc_samples_greenR": { - "uCoeff": [3795, 2895, 2488, 2210, 2042, 1887, 1754, 1684, 1671, 1663, 1763, 1820, 2023, 2139, 2443, 2787, 3499, 3214, 2666, 2316, 2061, 1856, 1701, 1599, 1544, 1510, 1513, 1573, 1675, 1801, 2011, 2217, 2545, 3012, 2871, 2470, 2126, 1908, 1714, 1573, 1457, 1399, 1363, 1374, 1448, 1527, 1684, 1851, 2073, 2365, 2776, 2753, 2308, 2023, 1806, 1607, 1448, 1352, 1287, 1253, 1277, 1352, 1442, 1555, 1740, 1947, 2254, 2604, 2676, 2232, 1947, 1705, 1513, 1365, 1253, 1176, 1170, 1176, 1239, 1346, 1470, 1650, 1866, 2126, 2545, 2545, 2146, 1866, 1630, 1420, 1280, 1170, 1114, 1094, 1105, 1168, 1270, 1408, 1584, 1791, 2099, 2399, 2470, 2106, 1820, 1573, 1371, 1233, 1131, 1068, 1055, 1066, 1114, 1224, 1363, 1527, 1754, 1999, 2357, 2416, 2061, 1791, 1562, 1360, 1204, 1101, 1056, 1024, 1043, 1099, 1195, 1328, 1523, 1731, 2011, 2374, 2507, 2073, 1806, 1559, 1374, 1217, 1105, 1051, 1027, 1038, 1112, 1197, 1328, 1503, 1745, 2017, 2308, 2507, 2119, 1835, 1584, 1388, 1226, 1135, 1078, 1045, 1071, 1114, 1217, 1360, 1548, 1763, 2054, 2365, 2574, 2188, 1871, 1634, 1442, 1277, 1164, 1107, 1087, 1099, 1168, 1277, 1417, 1581, 1801, 2080, 2416, 2666, 2217, 1964, 1696, 1513, 1354, 1242, 1176, 1150, 1181, 1233, 1338, 1483, 1671, 1887, 2167, 2479, 2787, 2341, 2054, 1806, 1607, 1451, 1328, 1265, 1242, 1263, 1335, 1457, 1581, 1763, 1976, 2262, 2676, 2972, 2479, 2188, 1903, 1731, 1581, 1470, 1397, 1365, 1391, 1451, 1570, 1688, 1871, 2106, 2399, 2787, 3214, 2698, 2332, 2080, 1866, 1718, 1599, 1523, 1499, 1527, 1596, 1696, 1840, 2042, 2285, 2584, 3026, 3611, 2972, 2564, 2239, 2042, 1887, 1772, 1705, 1684, 1705, 1758, 1887, 2036, 2217, 2507, 2846, 3445, 4903, 3325, 2846, 2516, 2239, 2106, 1947, 1925, 1840, 1919, 1964, 2042, 2269, 2425, 2709, 3124, 4698] - }, - "lsc_samples_greenB": { - "uCoeff": [3674, 2933, 2477, 2244, 2014, 1863, 1755, 1719, 1693, 1693, 1750, 1857, 2032, 2207, 2477, 2845, 3483, 3199, 2685, 2306, 2083, 1868, 1723, 1627, 1562, 1548, 1548, 1592, 1693, 1832, 2032, 2229, 2572, 2999, 2858, 2477, 2129, 1933, 1750, 1585, 1476, 1411, 1384, 1396, 1460, 1562, 1676, 1868, 2090, 2414, 2833, 2810, 2306, 2032, 1798, 1627, 1483, 1345, 1286, 1264, 1288, 1348, 1444, 1566, 1755, 1973, 2259, 2685, 2633, 2207, 1933, 1710, 1527, 1373, 1274, 1175, 1177, 1175, 1243, 1340, 1476, 1676, 1868, 2150, 2504, 2533, 2136, 1857, 1627, 1432, 1271, 1179, 1120, 1100, 1118, 1169, 1274, 1402, 1585, 1812, 2070, 2458, 2414, 2090, 1802, 1573, 1367, 1236, 1130, 1073, 1045, 1066, 1120, 1231, 1367, 1551, 1750, 2014, 2346, 2414, 2064, 1783, 1541, 1359, 1211, 1107, 1045, 1024, 1046, 1094, 1198, 1332, 1509, 1723, 1984, 2330, 2414, 2045, 1764, 1527, 1348, 1211, 1102, 1051, 1024, 1045, 1094, 1196, 1332, 1506, 1723, 1990, 2306, 2405, 2064, 1812, 1555, 1365, 1225, 1120, 1060, 1040, 1056, 1113, 1218, 1348, 1520, 1737, 2014, 2330, 2495, 2109, 1857, 1611, 1423, 1266, 1159, 1089, 1084, 1094, 1151, 1257, 1393, 1577, 1798, 2064, 2346, 2633, 2164, 1938, 1693, 1473, 1324, 1225, 1151, 1133, 1153, 1207, 1324, 1466, 1655, 1842, 2116, 2504, 2707, 2298, 2014, 1769, 1600, 1411, 1324, 1248, 1227, 1255, 1311, 1420, 1555, 1732, 1938, 2222, 2685, 2933, 2458, 2116, 1894, 1710, 1541, 1432, 1367, 1337, 1359, 1426, 1520, 1680, 1857, 2083, 2388, 2775, 3067, 2653, 2274, 2026, 1832, 1680, 1577, 1527, 1483, 1506, 1577, 1680, 1812, 2002, 2244, 2552, 3053, 3576, 2895, 2477, 2222, 2026, 1832, 1723, 1668, 1655, 1676, 1723, 1847, 1984, 2157, 2432, 2810, 3412, 4845, 3215, 2775, 2414, 2185, 2045, 1911, 1900, 1847, 1878, 1916, 2070, 2185, 2405, 2696, 3096, 4580] - }, - "lsc_samples_blue": { - "uCoeff": [3195, 2638, 2235, 2000, 1856, 1738, 1653, 1576, 1559, 1576, 1617, 1698, 1810, 1921, 2246, 2531, 3291, 2843, 2474, 2106, 1864, 1725, 1593, 1511, 1456, 1427, 1456, 1495, 1576, 1685, 1818, 2028, 2355, 2754, 2576, 2235, 1947, 1788, 1593, 1475, 1400, 1340, 1316, 1332, 1382, 1456, 1576, 1718, 1896, 2158, 2591, 2474, 2076, 1833, 1653, 1506, 1369, 1289, 1231, 1221, 1241, 1270, 1365, 1495, 1623, 1795, 2056, 2406, 2317, 2000, 1766, 1565, 1418, 1293, 1207, 1150, 1135, 1150, 1188, 1278, 1400, 1559, 1725, 1964, 2235, 2212, 1947, 1705, 1511, 1369, 1221, 1147, 1090, 1082, 1098, 1138, 1241, 1332, 1470, 1653, 1896, 2168, 2168, 1872, 1660, 1446, 1300, 1178, 1093, 1059, 1041, 1051, 1101, 1188, 1312, 1432, 1623, 1818, 2126, 2158, 1872, 1635, 1432, 1304, 1159, 1085, 1041, 1024, 1056, 1074, 1150, 1263, 1427, 1593, 1833, 2126, 2106, 1864, 1641, 1418, 1281, 1144, 1077, 1043, 1039, 1041, 1074, 1150, 1289, 1418, 1599, 1810, 2066, 2190, 1864, 1623, 1475, 1304, 1178, 1085, 1039, 1034, 1041, 1090, 1166, 1281, 1441, 1617, 1841, 2096, 2190, 1921, 1698, 1506, 1332, 1201, 1112, 1085, 1051, 1074, 1118, 1197, 1328, 1470, 1641, 1864, 2158, 2269, 1973, 1738, 1548, 1396, 1252, 1169, 1121, 1101, 1121, 1178, 1263, 1365, 1537, 1705, 1947, 2269, 2433, 2037, 1788, 1617, 1461, 1340, 1241, 1178, 1169, 1175, 1252, 1340, 1456, 1582, 1795, 2028, 2367, 2531, 2190, 1938, 1718, 1576, 1441, 1340, 1278, 1252, 1281, 1352, 1409, 1543, 1698, 1872, 2106, 2474, 2862, 2393, 2037, 1818, 1653, 1543, 1446, 1387, 1374, 1369, 1470, 1543, 1672, 1818, 2009, 2246, 2686, 3195, 2591, 2201, 1921, 1788, 1679, 1559, 1506, 1506, 1543, 1565, 1660, 1759, 1913, 2137, 2488, 2999, 4089, 2807, 2446, 2168, 1938, 1833, 1705, 1653, 1635, 1641, 1685, 1810, 1921, 2076, 2317, 2737, 4331] - } - }, { - "name": "3264x2448_D65_70", - "resolution": "3264x2448", - "illumination": "D65", - "vignetting": 70, - "lsc_samples_red": { - "uCoeff": [3080, 2542, 2234, 2086, 1894, 1799, 1690, 1622, 1601, 1622, 1690, 1751, 1894, 2007, 2158, 2439, 2950, 2615, 2350, 2077, 1927, 1754, 1648, 1564, 1512, 1500, 1512, 1564, 1623, 1754, 1881, 2011, 2247, 2615, 2569, 2215, 1998, 1808, 1656, 1553, 1421, 1384, 1346, 1378, 1452, 1518, 1648, 1798, 1962, 2125, 2546, 2436, 2092, 1923, 1719, 1566, 1435, 1310, 1264, 1241, 1278, 1332, 1417, 1552, 1719, 1868, 2051, 2343, 2296, 1992, 1829, 1644, 1477, 1332, 1237, 1177, 1169, 1168, 1241, 1332, 1458, 1620, 1799, 2018, 2263, 2315, 2005, 1760, 1559, 1395, 1255, 1181, 1114, 1078, 1114, 1169, 1269, 1413, 1566, 1724, 1922, 2200, 2276, 1931, 1749, 1535, 1370, 1224, 1118, 1061, 1051, 1071, 1134, 1224, 1399, 1514, 1721, 1896, 2166, 2219, 1901, 1734, 1545, 1350, 1186, 1104, 1058, 1027, 1047, 1119, 1212, 1355, 1496, 1681, 1890, 2129, 2237, 1926, 1726, 1525, 1350, 1212, 1096, 1037, 1024, 1037, 1093, 1207, 1356, 1504, 1699, 1903, 2145, 2284, 1936, 1734, 1545, 1372, 1226, 1130, 1068, 1037, 1058, 1108, 1195, 1384, 1538, 1725, 1890, 2173, 2276, 1966, 1767, 1594, 1417, 1272, 1170, 1104, 1083, 1093, 1170, 1281, 1417, 1557, 1749, 1953, 2181, 2424, 2044, 1809, 1636, 1490, 1347, 1230, 1153, 1146, 1188, 1230, 1336, 1476, 1612, 1840, 1993, 2281, 2424, 2111, 1904, 1741, 1568, 1417, 1321, 1258, 1244, 1268, 1332, 1424, 1561, 1704, 1915, 2069, 2368, 2518, 2225, 2019, 1825, 1669, 1564, 1424, 1386, 1358, 1373, 1461, 1542, 1661, 1794, 1970, 2149, 2476, 2710, 2367, 2118, 1937, 1772, 1671, 1593, 1524, 1491, 1489, 1562, 1654, 1763, 1937, 2076, 2263, 2614, 3026, 2526, 2239, 2049, 1886, 1821, 1683, 1639, 1658, 1655, 1709, 1821, 1854, 2036, 2192, 2444, 2903, 3868, 2782, 2488, 2250, 2149, 1986, 1930, 1862, 1802, 1872, 1886, 1998, 2078, 2203, 2372, 2656, 3868] - }, - "lsc_samples_greenR": { - "uCoeff": [2964, 2421, 2171, 1990, 1880, 1767, 1663, 1608, 1598, 1589, 1671, 1709, 1864, 1932, 2136, 2340, 2757, 2618, 2289, 2067, 1894, 1744, 1624, 1542, 1497, 1468, 1469, 1519, 1601, 1696, 1852, 1987, 2196, 2471, 2407, 2168, 1937, 1784, 1636, 1522, 1424, 1374, 1341, 1350, 1415, 1481, 1609, 1735, 1893, 2085, 2336, 2349, 2062, 1869, 1711, 1552, 1417, 1333, 1274, 1243, 1265, 1333, 1411, 1505, 1653, 1805, 2019, 2235, 2314, 2018, 1819, 1632, 1474, 1345, 1243, 1171, 1166, 1171, 1230, 1327, 1435, 1583, 1749, 1931, 2211, 2228, 1960, 1759, 1573, 1393, 1268, 1166, 1112, 1093, 1103, 1164, 1259, 1382, 1531, 1693, 1921, 2113, 2180, 1936, 1725, 1526, 1351, 1225, 1129, 1068, 1055, 1066, 1112, 1217, 1343, 1484, 1667, 1846, 2090, 2144, 1903, 1703, 1518, 1342, 1198, 1100, 1056, 1024, 1043, 1098, 1190, 1312, 1483, 1650, 1860, 2110, 2219, 1915, 1718, 1517, 1356, 1211, 1104, 1051, 1027, 1038, 1111, 1192, 1312, 1465, 1664, 1867, 2059, 2217, 1952, 1742, 1539, 1369, 1220, 1133, 1078, 1045, 1071, 1113, 1211, 1342, 1506, 1679, 1897, 2103, 2264, 2005, 1770, 1581, 1418, 1268, 1161, 1106, 1087, 1098, 1165, 1268, 1394, 1533, 1708, 1914, 2137, 2324, 2020, 1844, 1632, 1480, 1339, 1236, 1173, 1148, 1178, 1227, 1324, 1452, 1610, 1777, 1978, 2176, 2400, 2108, 1911, 1723, 1561, 1426, 1315, 1257, 1236, 1255, 1322, 1432, 1537, 1684, 1843, 2043, 2314, 2517, 2201, 2009, 1796, 1664, 1540, 1444, 1379, 1350, 1373, 1426, 1530, 1625, 1768, 1939, 2136, 2375, 2664, 2349, 2107, 1932, 1771, 1654, 1555, 1489, 1468, 1493, 1552, 1634, 1748, 1900, 2068, 2258, 2523, 2906, 2525, 2267, 2043, 1905, 1788, 1698, 1644, 1627, 1644, 1685, 1788, 1899, 2025, 2221, 2428, 2786, 3739, 2742, 2452, 2239, 2045, 1955, 1832, 1821, 1748, 1816, 1847, 1900, 2070, 2165, 2344, 2592, 3596] - }, - "lsc_samples_greenB": { - "uCoeff": [2879, 2449, 2162, 2018, 1856, 1746, 1664, 1639, 1618, 1616, 1660, 1741, 1871, 1988, 2162, 2384, 2745, 2607, 2304, 2059, 1912, 1754, 1643, 1567, 1514, 1502, 1501, 1536, 1617, 1723, 1870, 1997, 2217, 2461, 2397, 2174, 1939, 1806, 1668, 1533, 1441, 1385, 1361, 1371, 1426, 1512, 1602, 1750, 1907, 2124, 2379, 2393, 2061, 1877, 1704, 1570, 1449, 1326, 1273, 1253, 1275, 1329, 1413, 1515, 1666, 1827, 2023, 2297, 2280, 1998, 1806, 1637, 1487, 1353, 1264, 1170, 1173, 1170, 1234, 1322, 1440, 1607, 1751, 1951, 2179, 2219, 1952, 1751, 1570, 1405, 1260, 1174, 1118, 1099, 1116, 1165, 1263, 1377, 1532, 1711, 1897, 2159, 2136, 1922, 1709, 1526, 1347, 1228, 1128, 1072, 1045, 1066, 1118, 1223, 1347, 1506, 1663, 1858, 2081, 2142, 1905, 1696, 1499, 1341, 1205, 1106, 1045, 1024, 1046, 1093, 1193, 1316, 1470, 1643, 1838, 2075, 2144, 1891, 1681, 1487, 1331, 1206, 1101, 1051, 1024, 1045, 1093, 1191, 1316, 1468, 1644, 1844, 2057, 2135, 1905, 1722, 1512, 1347, 1219, 1119, 1060, 1040, 1056, 1112, 1212, 1331, 1480, 1656, 1863, 2075, 2200, 1938, 1758, 1560, 1400, 1257, 1156, 1088, 1084, 1093, 1148, 1249, 1371, 1529, 1706, 1900, 2081, 2298, 1975, 1821, 1630, 1443, 1310, 1219, 1148, 1131, 1150, 1202, 1310, 1436, 1595, 1738, 1935, 2196, 2338, 2073, 1876, 1690, 1554, 1389, 1311, 1241, 1221, 1248, 1299, 1397, 1513, 1657, 1811, 2010, 2321, 2487, 2184, 1948, 1788, 1645, 1503, 1408, 1350, 1323, 1343, 1403, 1484, 1618, 1756, 1920, 2127, 2366, 2554, 2313, 2059, 1886, 1740, 1620, 1534, 1493, 1453, 1473, 1534, 1620, 1723, 1865, 2034, 2233, 2543, 2881, 2466, 2197, 2029, 1891, 1740, 1654, 1610, 1600, 1617, 1654, 1753, 1854, 1974, 2161, 2400, 2762, 3699, 2660, 2396, 2156, 2000, 1903, 1801, 1799, 1754, 1779, 1805, 1924, 2000, 2149, 2334, 2571, 3513] - }, - "lsc_samples_blue": { - "uCoeff": [2544, 2229, 1973, 1819, 1723, 1639, 1575, 1512, 1499, 1512, 1543, 1604, 1685, 1755, 1981, 2149, 2611, 2348, 2141, 1898, 1729, 1630, 1528, 1463, 1417, 1392, 1417, 1448, 1513, 1596, 1690, 1835, 2050, 2283, 2186, 1982, 1788, 1681, 1529, 1433, 1371, 1319, 1297, 1311, 1354, 1416, 1513, 1621, 1746, 1921, 2197, 2135, 1875, 1708, 1576, 1460, 1344, 1274, 1221, 1212, 1231, 1256, 1340, 1450, 1550, 1676, 1859, 2083, 2033, 1827, 1663, 1507, 1387, 1278, 1199, 1146, 1132, 1146, 1181, 1263, 1370, 1502, 1627, 1798, 1969, 1965, 1794, 1618, 1465, 1346, 1212, 1143, 1089, 1081, 1097, 1135, 1231, 1311, 1428, 1573, 1752, 1930, 1939, 1739, 1584, 1410, 1284, 1172, 1092, 1059, 1041, 1051, 1099, 1182, 1295, 1397, 1552, 1693, 1905, 1936, 1743, 1565, 1399, 1289, 1155, 1084, 1041, 1024, 1056, 1073, 1146, 1250, 1394, 1528, 1710, 1911, 1896, 1737, 1572, 1387, 1268, 1141, 1076, 1043, 1039, 1041, 1073, 1146, 1275, 1387, 1534, 1691, 1864, 1962, 1736, 1555, 1438, 1289, 1173, 1084, 1039, 1034, 1041, 1089, 1162, 1267, 1407, 1549, 1716, 1886, 1956, 1780, 1618, 1464, 1314, 1195, 1110, 1084, 1051, 1073, 1116, 1191, 1310, 1432, 1567, 1732, 1931, 2010, 1816, 1647, 1498, 1371, 1242, 1165, 1119, 1100, 1119, 1173, 1252, 1342, 1488, 1618, 1794, 2010, 2124, 1858, 1682, 1554, 1426, 1322, 1232, 1173, 1165, 1170, 1242, 1322, 1422, 1523, 1688, 1850, 2072, 2179, 1967, 1797, 1634, 1524, 1410, 1322, 1266, 1242, 1269, 1333, 1381, 1494, 1616, 1741, 1899, 2135, 2400, 2107, 1863, 1707, 1582, 1495, 1414, 1362, 1351, 1346, 1436, 1495, 1599, 1707, 1840, 1991, 2269, 2604, 2232, 1974, 1776, 1685, 1604, 1506, 1463, 1464, 1496, 1511, 1587, 1660, 1770, 1923, 2152, 2461, 3170, 2355, 2138, 1956, 1792, 1720, 1620, 1580, 1566, 1570, 1603, 1701, 1778, 1881, 2037, 2303, 3339] - } - }, { - "name": "3264x2448_D75_100", - "resolution": "3264x2448", - "illumination": "D75", - "vignetting": 100, - "lsc_samples_red": { - "uCoeff": [4057, 3248, 2635, 2340, 2136, 1951, 1795, 1753, 1763, 1785, 1852, 1964, 2105, 2322, 2521, 2953, 3895, 3321, 2895, 2418, 2167, 1900, 1785, 1654, 1617, 1574, 1626, 1635, 1795, 1888, 2090, 2359, 2708, 3248, 3248, 2500, 2216, 1964, 1785, 1608, 1509, 1456, 1381, 1435, 1509, 1608, 1774, 1951, 2183, 2458, 3110, 2953, 2398, 2075, 1841, 1635, 1525, 1387, 1290, 1279, 1301, 1387, 1479, 1617, 1829, 2075, 2340, 2683, 2839, 2233, 1991, 1712, 1582, 1381, 1262, 1225, 1171, 1205, 1279, 1375, 1525, 1722, 1964, 2216, 2659, 2708, 2216, 1951, 1682, 1501, 1301, 1215, 1131, 1113, 1109, 1200, 1325, 1501, 1692, 1888, 2183, 2500, 2635, 2167, 1876, 1644, 1435, 1251, 1148, 1057, 1053, 1085, 1167, 1290, 1442, 1654, 1829, 2136, 2588, 2566, 2090, 1852, 1574, 1394, 1220, 1101, 1050, 1042, 1046, 1105, 1241, 1387, 1582, 1795, 2105, 2458, 2588, 2075, 1852, 1608, 1375, 1225, 1097, 1046, 1024, 1039, 1089, 1225, 1381, 1541, 1829, 2090, 2521, 2635, 2167, 1864, 1608, 1435, 1257, 1113, 1053, 1057, 1057, 1135, 1246, 1428, 1617, 1864, 2105, 2418, 2839, 2200, 1964, 1692, 1486, 1337, 1200, 1139, 1085, 1153, 1210, 1331, 1456, 1673, 1876, 2200, 2635, 2839, 2359, 2046, 1785, 1557, 1375, 1296, 1205, 1185, 1215, 1279, 1381, 1549, 1732, 1964, 2268, 2683, 3014, 2418, 2090, 1841, 1644, 1449, 1343, 1290, 1296, 1290, 1375, 1494, 1626, 1852, 2061, 2340, 2812, 3077, 2521, 2233, 1938, 1785, 1599, 1509, 1421, 1421, 1435, 1494, 1574, 1795, 1938, 2167, 2500, 3045, 3321, 2759, 2340, 2090, 1938, 1763, 1635, 1565, 1541, 1541, 1654, 1774, 1876, 2075, 2303, 2683, 3143, 3844, 3077, 2635, 2285, 2136, 1964, 1841, 1785, 1732, 1774, 1807, 1925, 2061, 2268, 2588, 2953, 3844, 5211, 3359, 3014, 2611, 2418, 2183, 2090, 2046, 2046, 2075, 2105, 2167, 2303, 2635, 2953, 3399, 5120] - }, - "lsc_samples_greenR": { - "uCoeff": [3711, 3002, 2580, 2209, 2064, 1882, 1738, 1689, 1655, 1734, 1716, 1850, 1977, 2166, 2428, 2923, 3908, 3286, 2741, 2301, 2083, 1892, 1707, 1615, 1550, 1525, 1540, 1588, 1698, 1855, 1983, 2231, 2663, 3270, 2989, 2437, 2124, 1898, 1720, 1561, 1468, 1390, 1367, 1405, 1448, 1558, 1672, 1860, 2064, 2376, 2823, 2823, 2301, 2014, 1810, 1584, 1458, 1353, 1278, 1263, 1273, 1326, 1417, 1565, 1747, 1954, 2209, 2685, 2663, 2231, 1954, 1707, 1518, 1353, 1265, 1184, 1175, 1190, 1235, 1359, 1471, 1635, 1830, 2138, 2560, 2580, 2151, 1898, 1655, 1452, 1293, 1192, 1135, 1125, 1127, 1175, 1280, 1433, 1591, 1815, 2097, 2455, 2455, 2110, 1824, 1584, 1423, 1253, 1141, 1092, 1074, 1092, 1149, 1244, 1376, 1550, 1780, 2045, 2376, 2455, 2090, 1805, 1558, 1367, 1221, 1123, 1060, 1035, 1064, 1103, 1201, 1353, 1518, 1752, 1995, 2359, 2455, 2077, 1785, 1554, 1353, 1207, 1123, 1050, 1024, 1043, 1114, 1219, 1324, 1508, 1698, 1995, 2301, 2642, 2097, 1845, 1561, 1388, 1244, 1145, 1085, 1064, 1081, 1133, 1239, 1359, 1558, 1752, 2014, 2350, 2707, 2187, 1882, 1655, 1452, 1313, 1184, 1135, 1104, 1133, 1194, 1298, 1445, 1615, 1805, 2083, 2419, 2685, 2247, 1977, 1738, 1525, 1373, 1256, 1197, 1159, 1197, 1265, 1345, 1478, 1672, 1903, 2180, 2590, 2859, 2384, 2051, 1815, 1603, 1452, 1337, 1268, 1246, 1278, 1345, 1433, 1584, 1766, 1972, 2239, 2707, 3072, 2560, 2138, 1914, 1707, 1558, 1455, 1376, 1373, 1385, 1455, 1536, 1698, 1866, 2070, 2428, 2884, 3286, 2763, 2342, 2090, 1887, 1729, 1611, 1529, 1511, 1536, 1588, 1689, 1830, 2026, 2262, 2663, 3044, 3711, 3030, 2653, 2262, 2064, 1898, 1752, 1711, 1689, 1720, 1752, 1898, 2020, 2187, 2580, 2897, 3629, 5160, 3422, 2923, 2492, 2301, 2077, 1954, 1926, 1882, 1903, 1972, 2051, 2254, 2419, 2823, 3238, 4752] - }, - "lsc_samples_greenB": { - "uCoeff": [3822, 3058, 2578, 2267, 2035, 1917, 1763, 1739, 1699, 1681, 1748, 1889, 2029, 2163, 2500, 2896, 3652, 3337, 2728, 2331, 2080, 1900, 1748, 1635, 1554, 1547, 1543, 1611, 1712, 1862, 2010, 2275, 2662, 3101, 3002, 2490, 2121, 1900, 1744, 1565, 1471, 1405, 1417, 1414, 1442, 1543, 1708, 1889, 2067, 2417, 2883, 2762, 2267, 2029, 1777, 1603, 1454, 1367, 1289, 1267, 1284, 1333, 1429, 1580, 1721, 1962, 2251, 2662, 2662, 2177, 1917, 1703, 1525, 1367, 1259, 1195, 1172, 1195, 1255, 1361, 1487, 1656, 1841, 2128, 2558, 2568, 2134, 1873, 1635, 1451, 1312, 1200, 1137, 1124, 1149, 1191, 1294, 1429, 1611, 1852, 2080, 2500, 2538, 2074, 1821, 1600, 1414, 1250, 1164, 1105, 1081, 1094, 1149, 1236, 1378, 1532, 1772, 2023, 2348, 2462, 2035, 1777, 1532, 1367, 1202, 1122, 1047, 1034, 1059, 1110, 1204, 1331, 1498, 1730, 1986, 2315, 2408, 1986, 1777, 1532, 1358, 1202, 1114, 1047, 1024, 1054, 1107, 1189, 1331, 1498, 1725, 1957, 2340, 2481, 2080, 1801, 1550, 1378, 1240, 1122, 1076, 1045, 1079, 1126, 1231, 1370, 1543, 1758, 2023, 2382, 2558, 2155, 1878, 1631, 1435, 1279, 1182, 1110, 1107, 1110, 1180, 1294, 1429, 1588, 1821, 2074, 2471, 2662, 2236, 1906, 1681, 1504, 1339, 1231, 1180, 1155, 1178, 1236, 1358, 1474, 1639, 1889, 2134, 2578, 2797, 2275, 1986, 1777, 1584, 1423, 1328, 1247, 1220, 1247, 1317, 1411, 1565, 1730, 1939, 2221, 2672, 2935, 2426, 2080, 1857, 1694, 1540, 1405, 1361, 1347, 1355, 1417, 1532, 1664, 1821, 2054, 2399, 2809, 3254, 2728, 2291, 2023, 1816, 1677, 1588, 1515, 1491, 1518, 1588, 1664, 1816, 1962, 2191, 2609, 3207, 3673, 2988, 2578, 2214, 2017, 1857, 1748, 1694, 1703, 1677, 1767, 1836, 1974, 2170, 2500, 2871, 3612, 5388, 3354, 2822, 2490, 2221, 2042, 1974, 1945, 1873, 1934, 1889, 2054, 2214, 2408, 2797, 3238, 4906] - }, - "lsc_samples_blue": { - "uCoeff": [3326, 2769, 2360, 2056, 1881, 1701, 1641, 1624, 1527, 1568, 1601, 1689, 1920, 1985, 2224, 2673, 3374, 2964, 2541, 2172, 1920, 1759, 1568, 1507, 1437, 1446, 1446, 1488, 1585, 1689, 1881, 2065, 2434, 2837, 2704, 2278, 1985, 1786, 1596, 1464, 1369, 1330, 1282, 1300, 1369, 1437, 1537, 1707, 1912, 2203, 2613, 2473, 2112, 1858, 1647, 1460, 1341, 1254, 1202, 1196, 1228, 1251, 1369, 1437, 1579, 1800, 2029, 2447, 2313, 2020, 1766, 1558, 1415, 1289, 1215, 1154, 1129, 1157, 1199, 1275, 1394, 1522, 1720, 1969, 2267, 2384, 1977, 1707, 1517, 1357, 1247, 1151, 1105, 1092, 1105, 1146, 1228, 1341, 1478, 1695, 1912, 2278, 2256, 1920, 1670, 1469, 1307, 1193, 1126, 1076, 1066, 1084, 1115, 1193, 1322, 1420, 1647, 1904, 2151, 2192, 1904, 1618, 1433, 1282, 1166, 1066, 1047, 1045, 1057, 1094, 1157, 1268, 1390, 1579, 1822, 2112, 2182, 1881, 1612, 1424, 1278, 1148, 1079, 1031, 1024, 1035, 1076, 1146, 1264, 1377, 1585, 1836, 2142, 2224, 1912, 1664, 1437, 1282, 1178, 1092, 1057, 1054, 1054, 1086, 1178, 1275, 1415, 1601, 1873, 2122, 2245, 1969, 1707, 1478, 1334, 1218, 1126, 1094, 1084, 1084, 1113, 1224, 1334, 1478, 1676, 1881, 2192, 2348, 2029, 1773, 1532, 1402, 1251, 1199, 1143, 1126, 1129, 1178, 1254, 1369, 1537, 1707, 1969, 2372, 2447, 2093, 1836, 1612, 1428, 1322, 1231, 1181, 1169, 1178, 1228, 1338, 1433, 1579, 1807, 2029, 2384, 2584, 2224, 1944, 1701, 1483, 1394, 1318, 1258, 1241, 1268, 1334, 1402, 1527, 1652, 1912, 2074, 2555, 2890, 2447, 2093, 1881, 1652, 1537, 1451, 1386, 1386, 1398, 1433, 1532, 1624, 1793, 2020, 2313, 2769, 3279, 2673, 2336, 2003, 1807, 1695, 1574, 1517, 1527, 1517, 1596, 1658, 1807, 1960, 2213, 2598, 3302, 4359, 2803, 2500, 2172, 1985, 1836, 1746, 1664, 1624, 1652, 1676, 1904, 1960, 2103, 2384, 2803, 4400] - } - }, { - "name": "3264x2448_D75_70", - "resolution": "3264x2448", - "illumination": "D75", - "vignetting": 70, - "lsc_samples_red": { - "uCoeff": [3147, 2685, 2286, 2096, 1959, 1822, 1699, 1669, 1680, 1697, 1749, 1833, 1933, 2081, 2197, 2464, 3034, 2695, 2466, 2149, 1983, 1782, 1698, 1591, 1564, 1526, 1572, 1574, 1707, 1771, 1918, 2102, 2322, 2642, 2689, 2192, 2011, 1832, 1699, 1554, 1472, 1427, 1358, 1407, 1472, 1554, 1689, 1821, 1984, 2159, 2586, 2502, 2135, 1913, 1742, 1577, 1488, 1366, 1277, 1267, 1288, 1366, 1446, 1561, 1731, 1913, 2088, 2295, 2441, 2019, 1856, 1639, 1538, 1360, 1252, 1219, 1167, 1199, 1268, 1355, 1485, 1648, 1833, 2005, 2300, 2357, 2019, 1833, 1620, 1469, 1288, 1209, 1129, 1112, 1107, 1195, 1311, 1469, 1629, 1778, 1991, 2193, 2312, 1987, 1774, 1591, 1411, 1243, 1145, 1057, 1053, 1084, 1164, 1280, 1418, 1600, 1733, 1961, 2275, 2265, 1927, 1757, 1529, 1374, 1214, 1100, 1050, 1042, 1046, 1104, 1234, 1368, 1537, 1707, 1940, 2178, 2285, 1916, 1759, 1562, 1357, 1219, 1096, 1046, 1024, 1039, 1088, 1219, 1363, 1500, 1738, 1929, 2231, 2320, 1993, 1768, 1561, 1413, 1250, 1112, 1053, 1057, 1057, 1133, 1239, 1407, 1569, 1768, 1940, 2145, 2476, 2015, 1852, 1634, 1459, 1326, 1196, 1138, 1085, 1152, 1206, 1320, 1431, 1617, 1774, 2015, 2312, 2461, 2138, 1916, 1713, 1521, 1359, 1288, 1201, 1182, 1211, 1272, 1365, 1514, 1665, 1844, 2062, 2338, 2578, 2172, 1942, 1754, 1595, 1425, 1330, 1281, 1288, 1281, 1360, 1467, 1578, 1764, 1917, 2107, 2420, 2597, 2235, 2047, 1827, 1713, 1557, 1481, 1402, 1403, 1415, 1467, 1534, 1722, 1827, 1991, 2218, 2573, 2744, 2397, 2114, 1941, 1834, 1695, 1588, 1528, 1508, 1506, 1606, 1705, 1779, 1928, 2083, 2337, 2611, 3076, 2606, 2325, 2082, 1986, 1857, 1760, 1716, 1670, 1706, 1729, 1822, 1921, 2067, 2287, 2511, 3076, 3955, 2768, 2583, 2317, 2196, 2022, 1957, 1928, 1931, 1954, 1970, 2008, 2099, 2336, 2535, 2797, 3891] - }, - "lsc_samples_greenR": { - "uCoeff": [2905, 2501, 2243, 1989, 1898, 1763, 1649, 1612, 1584, 1652, 1630, 1735, 1825, 1954, 2124, 2442, 3043, 2670, 2347, 2055, 1912, 1775, 1629, 1556, 1503, 1481, 1493, 1532, 1621, 1743, 1828, 1998, 2287, 2658, 2496, 2142, 1935, 1776, 1641, 1511, 1434, 1365, 1345, 1379, 1415, 1509, 1599, 1743, 1885, 2094, 2371, 2403, 2057, 1862, 1714, 1531, 1426, 1334, 1266, 1252, 1261, 1309, 1388, 1514, 1659, 1811, 1982, 2297, 2304, 2018, 1825, 1634, 1479, 1334, 1255, 1179, 1171, 1185, 1226, 1340, 1436, 1570, 1718, 1941, 2223, 2256, 1964, 1786, 1595, 1423, 1281, 1187, 1133, 1123, 1125, 1171, 1268, 1406, 1537, 1714, 1919, 2157, 2168, 1939, 1729, 1536, 1400, 1245, 1139, 1091, 1074, 1091, 1146, 1236, 1355, 1505, 1690, 1884, 2105, 2175, 1927, 1716, 1515, 1349, 1215, 1122, 1060, 1035, 1064, 1102, 1196, 1336, 1478, 1669, 1847, 2098, 2178, 1918, 1699, 1512, 1336, 1202, 1122, 1050, 1024, 1043, 1113, 1213, 1309, 1470, 1622, 1849, 2053, 2326, 1933, 1751, 1518, 1369, 1237, 1143, 1085, 1064, 1081, 1131, 1232, 1341, 1515, 1669, 1863, 2091, 2370, 2004, 1780, 1601, 1427, 1303, 1181, 1134, 1103, 1132, 1191, 1288, 1420, 1564, 1712, 1916, 2140, 2339, 2045, 1855, 1670, 1491, 1357, 1249, 1194, 1157, 1194, 1258, 1330, 1448, 1611, 1791, 1989, 2264, 2457, 2144, 1908, 1731, 1557, 1427, 1324, 1260, 1240, 1270, 1332, 1409, 1540, 1687, 1840, 2024, 2338, 2594, 2266, 1967, 1806, 1642, 1519, 1430, 1359, 1357, 1368, 1430, 1498, 1634, 1764, 1909, 2160, 2449, 2718, 2400, 2116, 1941, 1789, 1664, 1566, 1495, 1480, 1501, 1545, 1628, 1739, 1886, 2049, 2321, 2537, 2979, 2570, 2339, 2062, 1924, 1798, 1680, 1649, 1631, 1657, 1680, 1798, 1886, 2000, 2280, 2467, 2920, 3919, 2815, 2512, 2220, 2097, 1930, 1838, 1822, 1785, 1801, 1854, 1908, 2058, 2160, 2434, 2677, 3634] - }, - "lsc_samples_greenB": { - "uCoeff": [2983, 2543, 2242, 2037, 1874, 1793, 1671, 1656, 1623, 1605, 1658, 1769, 1869, 1952, 2180, 2422, 2864, 2707, 2337, 2079, 1910, 1782, 1665, 1574, 1506, 1501, 1496, 1553, 1633, 1749, 1851, 2034, 2286, 2535, 2505, 2184, 1933, 1777, 1662, 1515, 1437, 1379, 1392, 1388, 1410, 1495, 1631, 1768, 1888, 2126, 2416, 2356, 2029, 1874, 1685, 1548, 1422, 1347, 1276, 1256, 1271, 1315, 1399, 1527, 1636, 1818, 2016, 2279, 2303, 1973, 1793, 1631, 1485, 1347, 1249, 1189, 1168, 1189, 1245, 1342, 1450, 1589, 1727, 1933, 2222, 2247, 1950, 1765, 1577, 1422, 1299, 1195, 1135, 1122, 1147, 1186, 1282, 1402, 1555, 1746, 1905, 2193, 2235, 1909, 1726, 1550, 1391, 1242, 1161, 1104, 1081, 1093, 1146, 1228, 1357, 1488, 1683, 1866, 2083, 2181, 1881, 1691, 1491, 1349, 1196, 1121, 1047, 1034, 1059, 1109, 1198, 1315, 1460, 1649, 1839, 2063, 2140, 1841, 1692, 1492, 1341, 1197, 1113, 1047, 1024, 1054, 1106, 1184, 1315, 1460, 1646, 1816, 2085, 2196, 1919, 1712, 1507, 1359, 1233, 1121, 1076, 1045, 1079, 1124, 1225, 1352, 1501, 1674, 1871, 2117, 2251, 1977, 1776, 1579, 1411, 1270, 1179, 1109, 1106, 1109, 1177, 1284, 1405, 1539, 1726, 1909, 2181, 2321, 2035, 1793, 1619, 1472, 1325, 1225, 1177, 1153, 1175, 1230, 1343, 1444, 1581, 1779, 1950, 2254, 2408, 2054, 1852, 1697, 1540, 1400, 1315, 1240, 1214, 1240, 1305, 1389, 1522, 1655, 1812, 2009, 2311, 2489, 2158, 1917, 1756, 1631, 1502, 1383, 1345, 1332, 1339, 1394, 1495, 1603, 1724, 1895, 2136, 2392, 2694, 2372, 2073, 1883, 1726, 1617, 1545, 1482, 1461, 1485, 1545, 1605, 1726, 1831, 1991, 2278, 2659, 2952, 2538, 2279, 2022, 1883, 1762, 1676, 1634, 1644, 1618, 1693, 1743, 1846, 1985, 2216, 2447, 2907, 4079, 2764, 2433, 2218, 2030, 1900, 1856, 1839, 1777, 1829, 1781, 1911, 2024, 2151, 2413, 2677, 3741] - }, - "lsc_samples_blue": { - "uCoeff": [2635, 2327, 2071, 1865, 1744, 1607, 1564, 1555, 1470, 1505, 1529, 1596, 1777, 1807, 1964, 2255, 2669, 2436, 2193, 1951, 1776, 1660, 1506, 1459, 1400, 1409, 1408, 1442, 1521, 1599, 1743, 1864, 2111, 2343, 2282, 2016, 1820, 1679, 1531, 1423, 1342, 1309, 1265, 1281, 1342, 1399, 1479, 1611, 1759, 1957, 2214, 2135, 1904, 1730, 1571, 1419, 1318, 1241, 1193, 1188, 1218, 1238, 1344, 1398, 1511, 1681, 1837, 2115, 2030, 1844, 1663, 1501, 1384, 1274, 1207, 1150, 1126, 1153, 1192, 1261, 1365, 1469, 1623, 1802, 1994, 2101, 1819, 1620, 1470, 1335, 1237, 1147, 1103, 1091, 1103, 1142, 1219, 1320, 1435, 1609, 1765, 2017, 2009, 1779, 1593, 1431, 1290, 1187, 1124, 1075, 1066, 1083, 1113, 1187, 1305, 1386, 1573, 1766, 1925, 1964, 1770, 1550, 1400, 1268, 1162, 1065, 1047, 1045, 1057, 1093, 1153, 1255, 1360, 1516, 1700, 1899, 1957, 1752, 1546, 1392, 1265, 1144, 1078, 1031, 1024, 1035, 1075, 1142, 1252, 1349, 1522, 1714, 1925, 1989, 1777, 1591, 1404, 1268, 1173, 1091, 1057, 1054, 1054, 1085, 1173, 1262, 1383, 1535, 1744, 1907, 2000, 1820, 1626, 1439, 1316, 1211, 1124, 1093, 1084, 1083, 1111, 1217, 1316, 1439, 1598, 1746, 1958, 2072, 1863, 1677, 1484, 1377, 1241, 1194, 1141, 1124, 1127, 1173, 1244, 1346, 1488, 1620, 1813, 2091, 2135, 1904, 1723, 1549, 1396, 1305, 1222, 1176, 1165, 1173, 1219, 1320, 1401, 1520, 1698, 1851, 2086, 2220, 1995, 1802, 1619, 1440, 1367, 1301, 1247, 1231, 1256, 1316, 1374, 1479, 1576, 1775, 1873, 2197, 2421, 2150, 1909, 1761, 1581, 1490, 1418, 1361, 1363, 1373, 1402, 1485, 1556, 1685, 1849, 2044, 2331, 2665, 2295, 2083, 1845, 1701, 1618, 1519, 1473, 1483, 1473, 1539, 1586, 1701, 1809, 1984, 2237, 2682, 3359, 2352, 2180, 1959, 1832, 1723, 1656, 1590, 1556, 1579, 1595, 1782, 1811, 1903, 2090, 2352, 3387] - } - }, { - "name": "3264x2448_HZ_100", - "resolution": "3264x2448", - "illumination": "HZ", - "vignetting": 100, - "lsc_samples_red": { - "uCoeff": [4417, 3517, 2971, 2590, 2357, 2197, 1998, 1901, 1833, 1901, 1965, 2130, 2304, 2553, 2946, 3399, 4283, 3721, 3129, 2720, 2397, 2156, 1943, 1777, 1705, 1661, 1688, 1782, 1901, 2111, 2365, 2639, 3009, 3535, 3535, 2922, 2544, 2217, 1959, 1742, 1597, 1496, 1471, 1508, 1597, 1734, 1922, 2150, 2473, 2773, 3415, 3335, 2730, 2373, 2062, 1809, 1586, 1435, 1337, 1318, 1361, 1435, 1565, 1755, 2009, 2296, 2639, 3199, 3156, 2600, 2231, 1901, 1665, 1462, 1315, 1228, 1201, 1228, 1308, 1459, 1634, 1871, 2183, 2517, 2984, 3088, 2481, 2183, 1814, 1565, 1343, 1226, 1128, 1102, 1125, 1214, 1343, 1538, 1791, 2093, 2447, 2946, 2910, 2439, 2093, 1742, 1489, 1284, 1152, 1075, 1069, 1082, 1160, 1289, 1474, 1717, 2021, 2342, 2817, 2984, 2422, 2044, 1721, 1462, 1254, 1120, 1053, 1024, 1059, 1127, 1248, 1429, 1684, 1987, 2357, 2806, 2922, 2422, 2062, 1721, 1462, 1257, 1120, 1053, 1028, 1047, 1127, 1259, 1438, 1680, 2009, 2365, 2806, 2946, 2422, 2074, 1760, 1489, 1284, 1158, 1082, 1047, 1069, 1136, 1279, 1471, 1713, 1998, 2373, 2829, 3009, 2508, 2124, 1800, 1551, 1348, 1193, 1138, 1113, 1127, 1199, 1332, 1538, 1809, 2111, 2397, 2922, 3074, 2581, 2238, 1927, 1653, 1450, 1298, 1201, 1177, 1214, 1296, 1421, 1623, 1881, 2183, 2581, 3061, 3335, 2752, 2406, 2044, 1777, 1569, 1421, 1325, 1305, 1348, 1407, 1531, 1738, 2009, 2326, 2639, 3199, 3625, 2922, 2517, 2203, 1970, 1738, 1572, 1462, 1456, 1474, 1565, 1713, 1943, 2170, 2481, 2829, 3319, 3884, 3129, 2709, 2422, 2143, 1943, 1791, 1668, 1661, 1668, 1768, 1891, 2093, 2342, 2669, 3009, 3644, 4258, 3449, 2971, 2639, 2373, 2176, 1987, 1927, 1881, 1907, 1993, 2130, 2326, 2553, 2898, 3304, 4086, 5936, 3884, 3415, 3009, 2679, 2447, 2304, 2267, 2197, 2197, 2326, 2447, 2669, 2875, 3243, 3644, 5477] - }, - "lsc_samples_greenR": { - "uCoeff": [3773, 3054, 2584, 2368, 2081, 1922, 1814, 1746, 1708, 1768, 1809, 1876, 2033, 2191, 2441, 2915, 3713, 3328, 2724, 2392, 2119, 1902, 1746, 1656, 1578, 1561, 1582, 1614, 1712, 1892, 2027, 2254, 2623, 3122, 3002, 2529, 2205, 1971, 1768, 1607, 1495, 1425, 1389, 1417, 1482, 1582, 1733, 1912, 2125, 2400, 2952, 2903, 2368, 2081, 1814, 1648, 1482, 1367, 1297, 1283, 1295, 1354, 1458, 1593, 1768, 1993, 2283, 2703, 2683, 2240, 1971, 1717, 1534, 1378, 1267, 1184, 1178, 1180, 1251, 1381, 1498, 1668, 1902, 2171, 2584, 2633, 2178, 1902, 1629, 1443, 1283, 1184, 1129, 1092, 1118, 1174, 1262, 1434, 1600, 1837, 2094, 2476, 2511, 2119, 1833, 1607, 1392, 1247, 1122, 1067, 1045, 1061, 1125, 1225, 1381, 1547, 1786, 2039, 2424, 2511, 2106, 1837, 1554, 1362, 1223, 1108, 1047, 1024, 1045, 1102, 1198, 1339, 1534, 1768, 2039, 2400, 2476, 2106, 1814, 1571, 1378, 1210, 1101, 1045, 1024, 1039, 1109, 1196, 1354, 1547, 1773, 2033, 2392, 2556, 2112, 1828, 1582, 1383, 1247, 1134, 1079, 1041, 1067, 1131, 1236, 1381, 1554, 1804, 2081, 2424, 2623, 2164, 1902, 1660, 1434, 1292, 1184, 1111, 1106, 1115, 1159, 1274, 1431, 1600, 1866, 2081, 2476, 2745, 2298, 2010, 1751, 1527, 1383, 1247, 1184, 1159, 1184, 1255, 1378, 1521, 1668, 1933, 2205, 2556, 2892, 2400, 2112, 1837, 1641, 1485, 1354, 1285, 1264, 1280, 1349, 1473, 1614, 1795, 2016, 2352, 2724, 3108, 2575, 2212, 1965, 1768, 1614, 1504, 1440, 1397, 1403, 1485, 1600, 1738, 1960, 2144, 2502, 2940, 3312, 2800, 2416, 2119, 1954, 1773, 1645, 1585, 1568, 1582, 1656, 1733, 1902, 2081, 2352, 2714, 3122, 3753, 3028, 2683, 2336, 2119, 1982, 1823, 1755, 1751, 1764, 1833, 1960, 2094, 2283, 2594, 2915, 3694, 4832, 3408, 3002, 2652, 2384, 2191, 2069, 2004, 1954, 1982, 2045, 2144, 2321, 2584, 2811, 3266, 5113] - }, - "lsc_samples_greenB": { - "uCoeff": [3789, 3068, 2586, 2339, 2090, 1974, 1836, 1716, 1720, 1758, 1831, 1963, 2103, 2278, 2605, 2965, 3769, 3327, 2823, 2452, 2174, 1941, 1758, 1656, 1578, 1568, 1578, 1633, 1745, 1920, 2103, 2346, 2736, 3281, 3136, 2586, 2293, 2013, 1799, 1622, 1504, 1423, 1403, 1432, 1489, 1585, 1776, 1952, 2160, 2522, 2990, 2928, 2452, 2154, 1895, 1637, 1501, 1389, 1317, 1288, 1310, 1373, 1486, 1648, 1831, 2066, 2402, 2834, 2779, 2362, 2042, 1763, 1557, 1409, 1281, 1209, 1177, 1213, 1272, 1387, 1527, 1737, 1990, 2264, 2694, 2715, 2271, 1968, 1691, 1473, 1317, 1197, 1137, 1112, 1143, 1201, 1303, 1464, 1633, 1885, 2180, 2549, 2625, 2221, 1905, 1648, 1426, 1265, 1147, 1079, 1056, 1070, 1143, 1252, 1423, 1600, 1817, 2115, 2605, 2605, 2180, 1895, 1614, 1395, 1228, 1128, 1051, 1034, 1061, 1119, 1230, 1387, 1578, 1803, 2078, 2452, 2596, 2180, 1900, 1589, 1400, 1230, 1112, 1050, 1024, 1045, 1121, 1220, 1373, 1568, 1812, 2115, 2452, 2674, 2221, 1905, 1622, 1432, 1259, 1134, 1072, 1048, 1069, 1121, 1239, 1395, 1592, 1831, 2122, 2452, 2674, 2264, 1947, 1675, 1464, 1307, 1169, 1107, 1090, 1111, 1169, 1288, 1440, 1637, 1855, 2174, 2540, 2801, 2331, 2042, 1737, 1534, 1379, 1241, 1167, 1154, 1167, 1241, 1352, 1504, 1707, 1963, 2250, 2715, 2904, 2469, 2128, 1855, 1640, 1470, 1355, 1268, 1237, 1265, 1334, 1458, 1607, 1831, 2048, 2394, 2801, 3136, 2596, 2221, 1968, 1754, 1589, 1470, 1389, 1373, 1389, 1440, 1589, 1716, 1947, 2201, 2478, 2916, 3407, 2812, 2444, 2122, 1910, 1741, 1603, 1534, 1514, 1534, 1607, 1720, 1880, 2066, 2331, 2664, 3149, 3729, 3068, 2634, 2293, 2072, 1920, 1776, 1687, 1671, 1683, 1763, 1895, 2019, 2242, 2558, 2916, 3634, 5098, 3457, 2965, 2634, 2362, 2115, 1979, 1968, 1920, 1974, 1996, 2122, 2278, 2549, 2823, 3342, 4821] - }, - "lsc_samples_blue": { - "uCoeff": [3491, 2854, 2439, 2091, 1920, 1816, 1736, 1723, 1639, 1686, 1723, 1845, 1985, 2002, 2365, 2722, 3598, 3000, 2545, 2252, 1985, 1816, 1698, 1552, 1542, 1512, 1532, 1583, 1686, 1802, 2002, 2169, 2545, 3039, 2854, 2365, 2073, 1874, 1650, 1542, 1456, 1412, 1395, 1387, 1465, 1552, 1698, 1845, 2055, 2342, 2786, 2660, 2230, 1968, 1723, 1573, 1429, 1339, 1281, 1288, 1310, 1363, 1456, 1605, 1723, 1920, 2274, 2660, 2464, 2129, 1874, 1639, 1474, 1355, 1254, 1196, 1178, 1202, 1267, 1387, 1474, 1605, 1860, 2129, 2464, 2319, 2002, 1789, 1583, 1387, 1288, 1184, 1133, 1111, 1149, 1196, 1295, 1395, 1583, 1775, 2055, 2365, 2319, 1968, 1723, 1532, 1339, 1221, 1111, 1086, 1056, 1101, 1149, 1234, 1363, 1542, 1736, 1985, 2274, 2210, 1968, 1736, 1502, 1317, 1184, 1111, 1056, 1042, 1061, 1106, 1227, 1355, 1502, 1674, 1920, 2230, 2210, 1936, 1698, 1493, 1317, 1184, 1101, 1042, 1024, 1056, 1106, 1221, 1347, 1532, 1674, 1985, 2252, 2319, 1936, 1723, 1493, 1339, 1184, 1106, 1061, 1033, 1081, 1111, 1209, 1339, 1512, 1698, 1985, 2230, 2252, 1936, 1749, 1552, 1355, 1247, 1149, 1076, 1066, 1076, 1149, 1227, 1395, 1532, 1698, 1920, 2252, 2365, 2055, 1802, 1627, 1421, 1281, 1184, 1144, 1127, 1155, 1202, 1267, 1395, 1583, 1802, 2019, 2365, 2545, 2129, 1920, 1686, 1512, 1387, 1288, 1227, 1202, 1221, 1281, 1379, 1502, 1650, 1874, 2091, 2545, 2820, 2274, 2002, 1775, 1594, 1474, 1379, 1310, 1317, 1324, 1387, 1465, 1605, 1749, 1985, 2252, 2660, 2925, 2439, 2129, 1874, 1723, 1605, 1542, 1447, 1421, 1456, 1474, 1594, 1698, 1920, 2073, 2439, 2854, 3295, 2690, 2274, 2002, 1860, 1749, 1639, 1583, 1583, 1583, 1605, 1736, 1845, 2002, 2210, 2660, 3342, 4327, 3039, 2572, 2210, 1985, 1816, 1789, 1749, 1686, 1749, 1749, 1874, 2055, 2129, 2464, 2925, 4409] - } - }, { - "name": "3264x2448_HZ_70", - "resolution": "3264x2448", - "illumination": "HZ", - "vignetting": 70, - "lsc_samples_red": { - "uCoeff": [3399, 2886, 2549, 2300, 2144, 2034, 1877, 1800, 1742, 1800, 1848, 1976, 2100, 2270, 2530, 2797, 3305, 2987, 2646, 2393, 2176, 2003, 1838, 1702, 1644, 1606, 1628, 1707, 1801, 1964, 2149, 2328, 2554, 2851, 2904, 2526, 2283, 2050, 1853, 1676, 1553, 1464, 1442, 1475, 1553, 1669, 1820, 1992, 2224, 2408, 2815, 2795, 2404, 2165, 1936, 1735, 1545, 1411, 1322, 1305, 1345, 1411, 1525, 1686, 1889, 2100, 2330, 2691, 2688, 2321, 2063, 1808, 1614, 1437, 1303, 1221, 1196, 1221, 1296, 1434, 1586, 1781, 2022, 2253, 2554, 2658, 2240, 2035, 1739, 1529, 1329, 1220, 1126, 1101, 1123, 1208, 1329, 1504, 1718, 1957, 2211, 2546, 2532, 2216, 1966, 1680, 1462, 1275, 1149, 1074, 1069, 1081, 1157, 1279, 1448, 1657, 1902, 2135, 2458, 2601, 2209, 1927, 1665, 1439, 1247, 1119, 1053, 1024, 1059, 1125, 1241, 1408, 1631, 1877, 2154, 2458, 2554, 2211, 1945, 1666, 1440, 1250, 1119, 1053, 1028, 1047, 1126, 1252, 1417, 1628, 1898, 2163, 2460, 2570, 2209, 1954, 1700, 1464, 1276, 1156, 1082, 1047, 1069, 1134, 1271, 1447, 1657, 1887, 2167, 2476, 2611, 2274, 1993, 1733, 1520, 1336, 1190, 1137, 1112, 1126, 1195, 1321, 1508, 1741, 1981, 2181, 2542, 2647, 2323, 2083, 1842, 1611, 1431, 1290, 1198, 1174, 1210, 1288, 1403, 1583, 1800, 2035, 2323, 2637, 2828, 2446, 2214, 1935, 1717, 1538, 1404, 1315, 1297, 1338, 1391, 1502, 1681, 1904, 2145, 2353, 2722, 3017, 2559, 2287, 2060, 1880, 1686, 1540, 1441, 1436, 1452, 1534, 1663, 1856, 2031, 2257, 2484, 2783, 3166, 2690, 2420, 2226, 2016, 1858, 1732, 1624, 1620, 1624, 1711, 1811, 1972, 2158, 2386, 2595, 2986, 3377, 2893, 2596, 2379, 2191, 2044, 1891, 1846, 1806, 1827, 1897, 2004, 2150, 2307, 2537, 2781, 3252, 4462, 3160, 2897, 2641, 2415, 2249, 2145, 2123, 2065, 2061, 2164, 2249, 2407, 2532, 2763, 2980, 4141] - }, - "lsc_samples_greenR": { - "uCoeff": [2948, 2540, 2246, 2119, 1912, 1797, 1716, 1663, 1631, 1682, 1711, 1757, 1872, 1975, 2134, 2436, 2906, 2701, 2334, 2128, 1943, 1784, 1664, 1593, 1528, 1514, 1532, 1555, 1633, 1775, 1865, 2017, 2256, 2551, 2505, 2215, 2002, 1839, 1684, 1553, 1459, 1398, 1365, 1390, 1447, 1531, 1653, 1788, 1936, 2113, 2468, 2464, 2111, 1918, 1718, 1589, 1448, 1347, 1284, 1271, 1282, 1335, 1426, 1539, 1677, 1844, 2042, 2311, 2319, 2025, 1839, 1643, 1494, 1358, 1257, 1179, 1174, 1175, 1241, 1360, 1460, 1599, 1780, 1968, 2242, 2298, 1987, 1790, 1572, 1415, 1271, 1179, 1127, 1091, 1116, 1170, 1251, 1406, 1545, 1733, 1917, 2174, 2213, 1947, 1737, 1557, 1371, 1239, 1120, 1067, 1045, 1061, 1123, 1218, 1360, 1502, 1695, 1879, 2144, 2220, 1941, 1744, 1511, 1344, 1217, 1107, 1047, 1024, 1045, 1101, 1193, 1322, 1493, 1683, 1884, 2131, 2194, 1943, 1725, 1528, 1360, 1205, 1100, 1045, 1024, 1039, 1108, 1191, 1337, 1506, 1689, 1881, 2127, 2257, 1946, 1736, 1537, 1364, 1240, 1132, 1079, 1041, 1067, 1129, 1229, 1362, 1511, 1715, 1920, 2150, 2303, 1985, 1797, 1605, 1410, 1282, 1181, 1110, 1105, 1114, 1156, 1265, 1407, 1550, 1766, 1915, 2185, 2387, 2087, 1884, 1682, 1493, 1367, 1240, 1181, 1157, 1181, 1248, 1362, 1488, 1607, 1817, 2010, 2237, 2482, 2157, 1961, 1750, 1592, 1458, 1340, 1277, 1257, 1272, 1335, 1447, 1567, 1713, 1878, 2117, 2351, 2621, 2278, 2029, 1851, 1698, 1571, 1476, 1420, 1380, 1385, 1458, 1558, 1670, 1846, 1972, 2219, 2492, 2737, 2429, 2177, 1966, 1849, 1704, 1597, 1547, 1533, 1544, 1607, 1668, 1803, 1933, 2124, 2361, 2595, 3010, 2568, 2363, 2125, 1971, 1873, 1744, 1689, 1688, 1697, 1753, 1853, 1950, 2080, 2292, 2481, 2967, 3690, 2804, 2574, 2350, 2167, 2029, 1939, 1891, 1849, 1871, 1918, 1988, 2114, 2295, 2424, 2698, 3886] - }, - "lsc_samples_greenB": { - "uCoeff": [2960, 2550, 2248, 2095, 1920, 1842, 1735, 1636, 1642, 1673, 1731, 1832, 1931, 2046, 2263, 2473, 2946, 2700, 2410, 2177, 1989, 1817, 1674, 1593, 1528, 1521, 1528, 1573, 1663, 1799, 1929, 2091, 2343, 2666, 2606, 2260, 2075, 1875, 1711, 1567, 1467, 1396, 1379, 1404, 1453, 1533, 1691, 1822, 1965, 2209, 2496, 2483, 2179, 1980, 1789, 1579, 1466, 1368, 1303, 1276, 1296, 1353, 1452, 1589, 1733, 1906, 2138, 2411, 2394, 2125, 1900, 1684, 1515, 1387, 1270, 1203, 1173, 1207, 1262, 1366, 1487, 1661, 1856, 2045, 2328, 2363, 2065, 1848, 1628, 1443, 1304, 1192, 1135, 1111, 1141, 1196, 1290, 1434, 1575, 1775, 1989, 2231, 2304, 2033, 1800, 1594, 1403, 1256, 1145, 1078, 1056, 1070, 1141, 1244, 1400, 1550, 1722, 1943, 2288, 2296, 2004, 1796, 1566, 1375, 1222, 1126, 1051, 1034, 1061, 1118, 1224, 1368, 1533, 1714, 1917, 2173, 2291, 2006, 1801, 1544, 1381, 1224, 1111, 1050, 1024, 1045, 1120, 1214, 1355, 1525, 1723, 1950, 2175, 2351, 2038, 1804, 1574, 1410, 1252, 1132, 1072, 1048, 1069, 1120, 1232, 1375, 1546, 1739, 1955, 2173, 2344, 2069, 1837, 1619, 1438, 1297, 1166, 1106, 1090, 1110, 1166, 1278, 1416, 1584, 1756, 1993, 2236, 2431, 2115, 1912, 1669, 1500, 1363, 1235, 1164, 1152, 1164, 1235, 1337, 1472, 1642, 1843, 2047, 2363, 2492, 2214, 1974, 1766, 1591, 1444, 1341, 1260, 1231, 1257, 1321, 1433, 1561, 1745, 1905, 2152, 2411, 2643, 2295, 2037, 1853, 1685, 1548, 1444, 1371, 1357, 1371, 1416, 1548, 1650, 1835, 2020, 2200, 2474, 2809, 2439, 2200, 1968, 1810, 1675, 1558, 1499, 1482, 1499, 1562, 1656, 1783, 1920, 2106, 2322, 2615, 2992, 2599, 2324, 2088, 1931, 1818, 1701, 1627, 1615, 1624, 1690, 1796, 1885, 2046, 2262, 2482, 2923, 3876, 2841, 2545, 2336, 2149, 1963, 1860, 1859, 1819, 1864, 1875, 1969, 2078, 2266, 2434, 2755, 3682] - }, - "lsc_samples_blue": { - "uCoeff": [2751, 2390, 2133, 1893, 1777, 1706, 1647, 1642, 1570, 1610, 1636, 1731, 1832, 1821, 2075, 2292, 2826, 2462, 2196, 2015, 1830, 1709, 1621, 1500, 1495, 1470, 1486, 1528, 1610, 1697, 1844, 1948, 2196, 2490, 2394, 2085, 1893, 1755, 1579, 1494, 1423, 1386, 1371, 1362, 1431, 1503, 1622, 1730, 1878, 2067, 2343, 2278, 1999, 1823, 1638, 1521, 1399, 1321, 1269, 1276, 1296, 1343, 1424, 1550, 1638, 1782, 2035, 2278, 2148, 1934, 1756, 1573, 1438, 1336, 1244, 1190, 1174, 1196, 1257, 1366, 1438, 1543, 1744, 1934, 2148, 2049, 1840, 1691, 1530, 1363, 1276, 1179, 1131, 1110, 1147, 1191, 1283, 1370, 1530, 1679, 1884, 2086, 2060, 1819, 1640, 1488, 1321, 1214, 1109, 1085, 1056, 1100, 1146, 1226, 1343, 1497, 1651, 1834, 2024, 1978, 1824, 1655, 1463, 1301, 1179, 1110, 1056, 1042, 1061, 1105, 1221, 1337, 1463, 1600, 1783, 1994, 1980, 1798, 1622, 1456, 1302, 1179, 1100, 1042, 1024, 1056, 1105, 1215, 1330, 1492, 1601, 1840, 2014, 2066, 1797, 1643, 1455, 1322, 1179, 1105, 1061, 1033, 1081, 1110, 1203, 1322, 1472, 1621, 1838, 1994, 2006, 1792, 1663, 1507, 1336, 1239, 1146, 1075, 1066, 1075, 1146, 1220, 1373, 1488, 1618, 1779, 2006, 2086, 1884, 1703, 1570, 1394, 1269, 1179, 1142, 1125, 1152, 1197, 1256, 1370, 1530, 1703, 1854, 2086, 2211, 1934, 1795, 1615, 1473, 1366, 1277, 1220, 1197, 1215, 1270, 1359, 1464, 1583, 1756, 1902, 2211, 2400, 2035, 1851, 1684, 1540, 1441, 1358, 1296, 1304, 1309, 1366, 1433, 1550, 1661, 1837, 2017, 2278, 2448, 2144, 1939, 1755, 1644, 1551, 1502, 1418, 1395, 1427, 1439, 1541, 1622, 1795, 1893, 2144, 2394, 2677, 2308, 2033, 1844, 1747, 1666, 1578, 1533, 1534, 1533, 1547, 1655, 1734, 1844, 1982, 2285, 2711, 3336, 2529, 2237, 1990, 1832, 1706, 1694, 1665, 1611, 1665, 1659, 1756, 1891, 1924, 2152, 2444, 3394] - } - }, { - "name": "3264x2448_TL84_100", - "resolution": "3264x2448", - "illumination": "TL84", - "vignetting": 100, - "lsc_samples_red": { - "uCoeff": [3642, 2815, 2401, 2160, 1963, 1865, 1745, 1660, 1608, 1702, 1753, 1848, 1935, 2160, 2346, 2739, 3517, 3188, 2567, 2231, 2011, 1815, 1695, 1589, 1553, 1502, 1536, 1602, 1681, 1807, 1973, 2160, 2535, 3023, 2957, 2459, 2105, 1873, 1702, 1565, 1464, 1389, 1357, 1399, 1459, 1559, 1702, 1865, 2052, 2346, 2796, 2668, 2231, 1963, 1760, 1602, 1459, 1339, 1293, 1249, 1281, 1348, 1454, 1589, 1776, 1963, 2207, 2616, 2600, 2127, 1908, 1681, 1502, 1366, 1234, 1181, 1154, 1181, 1249, 1339, 1496, 1653, 1831, 2073, 2504, 2504, 2105, 1831, 1608, 1433, 1293, 1191, 1110, 1092, 1098, 1167, 1277, 1454, 1589, 1783, 2031, 2444, 2430, 2002, 1783, 1565, 1385, 1249, 1125, 1070, 1058, 1067, 1138, 1209, 1385, 1536, 1730, 1963, 2333, 2401, 2002, 1745, 1541, 1366, 1209, 1101, 1050, 1029, 1048, 1098, 1191, 1353, 1524, 1730, 1963, 2243, 2430, 2002, 1753, 1541, 1357, 1209, 1101, 1050, 1024, 1024, 1092, 1198, 1339, 1496, 1709, 1973, 2294, 2430, 2042, 1783, 1577, 1385, 1257, 1135, 1072, 1053, 1053, 1101, 1234, 1357, 1541, 1745, 2002, 2373, 2444, 2052, 1831, 1602, 1409, 1293, 1198, 1122, 1084, 1113, 1161, 1265, 1438, 1608, 1791, 2031, 2401, 2685, 2149, 1908, 1702, 1513, 1371, 1245, 1167, 1138, 1171, 1219, 1339, 1464, 1647, 1882, 2116, 2567, 2739, 2243, 2002, 1776, 1589, 1464, 1353, 1273, 1249, 1265, 1326, 1409, 1565, 1776, 1945, 2207, 2633, 2854, 2444, 2105, 1908, 1723, 1565, 1454, 1389, 1357, 1389, 1454, 1553, 1674, 1882, 2073, 2333, 2854, 3213, 2567, 2256, 2011, 1848, 1681, 1608, 1541, 1518, 1518, 1589, 1660, 1815, 1963, 2207, 2600, 2979, 3547, 2874, 2459, 2207, 2031, 1873, 1730, 1702, 1660, 1674, 1753, 1848, 1963, 2127, 2387, 2685, 3547, 4633, 3238, 2758, 2444, 2256, 2083, 1982, 1882, 1873, 1882, 1973, 2002, 2243, 2430, 2739, 3091, 4740] - }, - "lsc_samples_greenR": { - "uCoeff": [3620, 2844, 2491, 2216, 1966, 1835, 1739, 1699, 1636, 1716, 1721, 1815, 1920, 2110, 2418, 2693, 3506, 3140, 2608, 2269, 2020, 1825, 1699, 1581, 1544, 1516, 1527, 1581, 1652, 1781, 1943, 2172, 2500, 2932, 2945, 2436, 2117, 1893, 1699, 1566, 1459, 1401, 1369, 1404, 1437, 1534, 1656, 1815, 2039, 2325, 2726, 2682, 2254, 1996, 1781, 1593, 1459, 1358, 1291, 1245, 1289, 1338, 1416, 1541, 1708, 1898, 2187, 2578, 2538, 2151, 1882, 1686, 1496, 1369, 1250, 1181, 1162, 1177, 1238, 1330, 1447, 1616, 1820, 2070, 2454, 2519, 2110, 1815, 1612, 1431, 1291, 1177, 1117, 1104, 1110, 1175, 1281, 1410, 1559, 1786, 2002, 2341, 2427, 2045, 1786, 1559, 1383, 1236, 1131, 1060, 1058, 1072, 1129, 1220, 1366, 1530, 1730, 1960, 2223, 2392, 2039, 1767, 1548, 1358, 1216, 1104, 1058, 1024, 1053, 1106, 1196, 1336, 1496, 1699, 1932, 2269, 2392, 2026, 1781, 1534, 1372, 1216, 1099, 1048, 1029, 1048, 1102, 1200, 1336, 1506, 1716, 1932, 2341, 2436, 2051, 1791, 1566, 1398, 1245, 1133, 1072, 1053, 1067, 1119, 1231, 1352, 1534, 1757, 1966, 2308, 2472, 2117, 1877, 1669, 1443, 1302, 1183, 1106, 1091, 1106, 1158, 1274, 1401, 1570, 1771, 2045, 2400, 2578, 2194, 1904, 1699, 1506, 1358, 1241, 1185, 1168, 1168, 1250, 1347, 1459, 1644, 1856, 2117, 2519, 2796, 2308, 2008, 1791, 1596, 1459, 1352, 1284, 1255, 1289, 1341, 1447, 1585, 1739, 1937, 2231, 2578, 2893, 2472, 2144, 1898, 1748, 1574, 1459, 1392, 1360, 1392, 1443, 1548, 1703, 1845, 2077, 2366, 2726, 3201, 2682, 2285, 2064, 1856, 1708, 1608, 1534, 1516, 1544, 1581, 1682, 1800, 2039, 2246, 2538, 2984, 3581, 2971, 2519, 2231, 2045, 1877, 1757, 1690, 1686, 1708, 1771, 1882, 2020, 2172, 2427, 2807, 3506, 4633, 3216, 2844, 2436, 2254, 2097, 1943, 1882, 1856, 1877, 1882, 2039, 2201, 2418, 2682, 3096, 4666] - }, - "lsc_samples_greenB": { - "uCoeff": [3604, 2880, 2479, 2235, 1986, 1868, 1740, 1691, 1682, 1695, 1745, 1812, 1992, 2134, 2416, 2759, 3604, 3140, 2681, 2274, 2061, 1863, 1722, 1616, 1541, 1523, 1527, 1578, 1674, 1817, 2011, 2213, 2527, 3011, 2867, 2442, 2162, 1911, 1731, 1585, 1472, 1403, 1385, 1385, 1453, 1559, 1695, 1868, 2087, 2381, 2867, 2714, 2314, 2017, 1792, 1593, 1462, 1371, 1283, 1268, 1293, 1343, 1449, 1574, 1749, 1951, 2220, 2617, 2566, 2176, 1934, 1700, 1502, 1374, 1256, 1186, 1169, 1180, 1235, 1354, 1485, 1649, 1852, 2114, 2517, 2517, 2127, 1868, 1608, 1446, 1283, 1184, 1112, 1094, 1114, 1178, 1266, 1418, 1601, 1782, 2067, 2364, 2451, 2061, 1797, 1585, 1383, 1235, 1139, 1067, 1043, 1078, 1120, 1240, 1371, 1534, 1745, 1992, 2347, 2389, 2061, 1792, 1541, 1351, 1210, 1110, 1034, 1035, 1052, 1097, 1190, 1346, 1523, 1713, 1969, 2364, 2364, 2061, 1759, 1559, 1351, 1206, 1101, 1043, 1024, 1043, 1099, 1184, 1346, 1499, 1726, 1992, 2290, 2461, 2061, 1817, 1566, 1385, 1235, 1125, 1072, 1043, 1052, 1110, 1217, 1354, 1527, 1726, 1945, 2314, 2488, 2127, 1832, 1605, 1430, 1259, 1155, 1086, 1074, 1086, 1157, 1266, 1403, 1589, 1792, 2035, 2364, 2586, 2184, 1911, 1695, 1482, 1340, 1223, 1163, 1155, 1163, 1219, 1335, 1475, 1620, 1827, 2114, 2507, 2783, 2274, 2035, 1759, 1585, 1430, 1306, 1259, 1226, 1249, 1324, 1424, 1574, 1726, 1945, 2258, 2596, 2867, 2461, 2127, 1873, 1682, 1537, 1437, 1346, 1332, 1377, 1424, 1513, 1678, 1863, 2100, 2322, 2703, 3186, 2627, 2290, 2035, 1812, 1674, 1552, 1495, 1462, 1502, 1563, 1649, 1797, 1986, 2184, 2527, 3011, 3508, 2892, 2461, 2176, 1969, 1817, 1731, 1661, 1645, 1653, 1700, 1827, 1928, 2127, 2416, 2714, 3399, 4813, 3140, 2748, 2442, 2213, 1998, 1884, 1873, 1832, 1827, 1906, 2017, 2155, 2416, 2596, 3111, 4779] - }, - "lsc_samples_blue": { - "uCoeff": [3252, 2701, 2238, 2018, 1758, 1647, 1575, 1575, 1566, 1549, 1637, 1619, 1758, 2003, 2255, 2490, 3045, 2727, 2387, 2091, 1837, 1706, 1566, 1485, 1455, 1412, 1455, 1477, 1575, 1647, 1791, 1976, 2273, 2701, 2627, 2186, 1873, 1716, 1575, 1477, 1365, 1339, 1315, 1333, 1385, 1440, 1524, 1647, 1848, 2122, 2469, 2448, 2061, 1780, 1610, 1493, 1333, 1291, 1246, 1210, 1236, 1274, 1352, 1433, 1610, 1780, 2003, 2367, 2238, 1923, 1706, 1541, 1391, 1321, 1210, 1175, 1142, 1175, 1215, 1291, 1391, 1516, 1706, 1923, 2255, 2186, 1873, 1666, 1485, 1352, 1230, 1161, 1090, 1098, 1098, 1138, 1230, 1333, 1477, 1619, 1848, 2186, 2186, 1837, 1637, 1433, 1285, 1215, 1111, 1078, 1062, 1066, 1138, 1161, 1291, 1405, 1583, 1825, 2138, 2122, 1825, 1575, 1426, 1291, 1161, 1082, 1062, 1024, 1062, 1090, 1165, 1274, 1412, 1575, 1802, 2076, 2138, 1802, 1583, 1426, 1285, 1156, 1098, 1035, 1028, 1054, 1078, 1161, 1285, 1405, 1601, 1802, 2061, 2122, 1802, 1637, 1412, 1291, 1190, 1107, 1062, 1046, 1046, 1111, 1180, 1268, 1405, 1610, 1837, 2061, 2122, 1837, 1637, 1485, 1339, 1199, 1124, 1066, 1078, 1062, 1111, 1210, 1333, 1440, 1619, 1825, 2203, 2273, 1936, 1676, 1516, 1385, 1246, 1190, 1111, 1111, 1124, 1175, 1252, 1358, 1508, 1676, 1885, 2238, 2273, 2018, 1780, 1566, 1426, 1309, 1230, 1180, 1180, 1190, 1252, 1339, 1433, 1549, 1726, 1936, 2255, 2490, 2122, 1837, 1666, 1508, 1405, 1333, 1274, 1246, 1297, 1321, 1412, 1508, 1666, 1837, 2076, 2406, 2627, 2255, 1962, 1780, 1619, 1516, 1426, 1391, 1365, 1385, 1412, 1508, 1601, 1758, 1923, 2255, 2603, 3045, 2534, 2186, 1910, 1758, 1647, 1524, 1508, 1493, 1485, 1541, 1610, 1716, 1885, 2122, 2367, 3145, 4144, 2701, 2367, 2091, 1837, 1716, 1686, 1575, 1619, 1619, 1666, 1758, 1848, 2018, 2238, 2651, 3972] - } - }, { - "name": "3264x2448_TL84_70", - "resolution": "3264x2448", - "illumination": "TL84", - "vignetting": 70, - "lsc_samples_red": { - "uCoeff": [2857, 2361, 2103, 1949, 1813, 1748, 1655, 1587, 1542, 1624, 1662, 1733, 1790, 1949, 2060, 2305, 2769, 2599, 2213, 1998, 1852, 1708, 1618, 1533, 1505, 1460, 1490, 1545, 1606, 1701, 1820, 1941, 2188, 2479, 2472, 2159, 1919, 1754, 1625, 1515, 1430, 1364, 1335, 1374, 1426, 1510, 1625, 1747, 1875, 2070, 2351, 2284, 2000, 1818, 1670, 1547, 1427, 1321, 1280, 1239, 1269, 1329, 1422, 1536, 1685, 1818, 1981, 2244, 2254, 1932, 1785, 1611, 1464, 1346, 1225, 1176, 1150, 1176, 1240, 1321, 1459, 1586, 1719, 1888, 2179, 2196, 1926, 1728, 1553, 1406, 1281, 1186, 1108, 1091, 1097, 1163, 1266, 1425, 1536, 1686, 1864, 2148, 2148, 1848, 1692, 1518, 1364, 1241, 1123, 1070, 1058, 1067, 1136, 1202, 1364, 1492, 1646, 1815, 2071, 2132, 1853, 1663, 1499, 1348, 1203, 1100, 1050, 1029, 1048, 1097, 1186, 1336, 1484, 1649, 1820, 2005, 2157, 1854, 1671, 1500, 1340, 1204, 1100, 1050, 1024, 1024, 1091, 1193, 1323, 1459, 1632, 1830, 2048, 2155, 1887, 1696, 1532, 1366, 1250, 1133, 1072, 1053, 1053, 1100, 1228, 1339, 1499, 1663, 1853, 2109, 2160, 1890, 1735, 1552, 1387, 1283, 1194, 1121, 1084, 1112, 1158, 1256, 1414, 1558, 1700, 1873, 2125, 2339, 1963, 1795, 1638, 1480, 1355, 1239, 1164, 1136, 1168, 1213, 1325, 1434, 1588, 1773, 1935, 2246, 2363, 2027, 1866, 1696, 1544, 1439, 1339, 1265, 1242, 1257, 1313, 1387, 1522, 1696, 1817, 1998, 2280, 2427, 2172, 1939, 1800, 1657, 1525, 1429, 1371, 1342, 1371, 1429, 1514, 1612, 1778, 1912, 2083, 2427, 2663, 2245, 2044, 1873, 1755, 1620, 1563, 1506, 1486, 1485, 1546, 1601, 1725, 1832, 2004, 2271, 2488, 2860, 2450, 2183, 2016, 1895, 1776, 1660, 1641, 1605, 1615, 1681, 1754, 1836, 1949, 2124, 2304, 2860, 3550, 2677, 2383, 2181, 2059, 1936, 1863, 1783, 1777, 1783, 1855, 1866, 2049, 2169, 2368, 2567, 3625] - }, - "lsc_samples_greenR": { - "uCoeff": [2841, 2383, 2173, 1995, 1816, 1722, 1650, 1621, 1567, 1636, 1634, 1705, 1777, 1909, 2116, 2270, 2761, 2564, 2245, 2029, 1859, 1717, 1622, 1526, 1497, 1473, 1482, 1526, 1580, 1679, 1795, 1951, 2161, 2412, 2463, 2141, 1929, 1771, 1623, 1516, 1426, 1375, 1347, 1378, 1405, 1487, 1584, 1704, 1865, 2053, 2299, 2295, 2019, 1846, 1689, 1539, 1427, 1339, 1278, 1235, 1276, 1320, 1387, 1492, 1625, 1763, 1965, 2215, 2206, 1952, 1763, 1615, 1459, 1349, 1241, 1176, 1158, 1172, 1229, 1312, 1413, 1553, 1709, 1885, 2140, 2208, 1930, 1714, 1556, 1404, 1279, 1173, 1115, 1103, 1108, 1171, 1269, 1384, 1508, 1689, 1840, 2067, 2146, 1884, 1695, 1513, 1362, 1228, 1129, 1060, 1058, 1071, 1127, 1213, 1346, 1486, 1646, 1813, 1983, 2125, 1884, 1682, 1506, 1340, 1210, 1103, 1058, 1024, 1053, 1105, 1191, 1319, 1458, 1622, 1794, 2026, 2127, 1875, 1696, 1494, 1354, 1210, 1098, 1048, 1029, 1048, 1101, 1195, 1320, 1468, 1638, 1795, 2086, 2160, 1894, 1703, 1522, 1378, 1238, 1131, 1072, 1053, 1067, 1118, 1225, 1335, 1493, 1673, 1822, 2057, 2182, 1945, 1775, 1613, 1419, 1292, 1180, 1105, 1091, 1105, 1155, 1265, 1379, 1523, 1682, 1884, 2124, 2254, 2000, 1792, 1635, 1474, 1343, 1235, 1182, 1166, 1165, 1243, 1332, 1430, 1585, 1750, 1936, 2208, 2407, 2081, 1871, 1709, 1551, 1434, 1338, 1276, 1248, 1280, 1328, 1423, 1541, 1663, 1810, 2018, 2237, 2456, 2195, 1972, 1792, 1679, 1534, 1434, 1374, 1345, 1374, 1419, 1510, 1639, 1745, 1915, 2109, 2328, 2654, 2336, 2068, 1918, 1762, 1645, 1563, 1499, 1484, 1509, 1538, 1621, 1712, 1897, 2036, 2222, 2492, 2885, 2524, 2231, 2036, 1907, 1780, 1684, 1630, 1628, 1646, 1697, 1784, 1886, 1987, 2157, 2398, 2830, 3550, 2661, 2450, 2174, 2058, 1948, 1829, 1783, 1762, 1778, 1775, 1898, 2013, 2160, 2323, 2571, 3573] - }, - "lsc_samples_greenB": { - "uCoeff": [2830, 2410, 2164, 2011, 1833, 1751, 1651, 1614, 1608, 1617, 1655, 1702, 1838, 1928, 2115, 2320, 2830, 2564, 2301, 2033, 1894, 1750, 1642, 1557, 1494, 1480, 1482, 1523, 1600, 1710, 1852, 1984, 2182, 2470, 2404, 2146, 1967, 1787, 1651, 1533, 1438, 1377, 1362, 1361, 1420, 1510, 1619, 1750, 1904, 2098, 2404, 2319, 2067, 1864, 1699, 1539, 1430, 1351, 1270, 1257, 1280, 1325, 1418, 1522, 1661, 1808, 1991, 2245, 2228, 1972, 1807, 1628, 1464, 1354, 1246, 1181, 1165, 1175, 1226, 1335, 1448, 1582, 1737, 1921, 2190, 2206, 1944, 1760, 1553, 1418, 1271, 1179, 1110, 1093, 1112, 1173, 1255, 1392, 1546, 1685, 1894, 2085, 2165, 1898, 1705, 1537, 1362, 1227, 1137, 1067, 1043, 1077, 1118, 1232, 1351, 1490, 1659, 1840, 2082, 2122, 1903, 1704, 1499, 1334, 1204, 1109, 1034, 1035, 1052, 1096, 1185, 1329, 1483, 1634, 1825, 2102, 2104, 1905, 1676, 1517, 1334, 1201, 1100, 1043, 1024, 1043, 1098, 1179, 1329, 1461, 1647, 1846, 2045, 2180, 1903, 1726, 1522, 1366, 1228, 1123, 1072, 1043, 1052, 1109, 1211, 1336, 1486, 1646, 1805, 2062, 2195, 1953, 1736, 1555, 1406, 1250, 1152, 1085, 1074, 1085, 1154, 1257, 1381, 1540, 1700, 1876, 2096, 2261, 1992, 1798, 1631, 1451, 1326, 1217, 1160, 1153, 1160, 1213, 1321, 1445, 1564, 1725, 1934, 2198, 2397, 2053, 1894, 1681, 1541, 1407, 1294, 1251, 1220, 1242, 1311, 1401, 1530, 1651, 1817, 2040, 2251, 2436, 2186, 1957, 1770, 1620, 1499, 1413, 1330, 1318, 1360, 1401, 1477, 1616, 1761, 1934, 2074, 2311, 2643, 2292, 2073, 1894, 1723, 1614, 1511, 1463, 1434, 1470, 1522, 1591, 1709, 1851, 1985, 2213, 2512, 2832, 2464, 2184, 1990, 1841, 1726, 1661, 1604, 1591, 1596, 1633, 1735, 1806, 1949, 2148, 2326, 2752, 3676, 2604, 2375, 2179, 2023, 1862, 1777, 1775, 1741, 1734, 1796, 1879, 1975, 2158, 2256, 2582, 3653] - }, - "lsc_samples_blue": { - "uCoeff": [2584, 2276, 1975, 1834, 1641, 1560, 1506, 1511, 1505, 1488, 1561, 1536, 1641, 1822, 1988, 2119, 2439, 2263, 2074, 1885, 1706, 1614, 1504, 1439, 1416, 1378, 1416, 1432, 1512, 1563, 1667, 1793, 1987, 2244, 2224, 1943, 1727, 1619, 1513, 1435, 1339, 1318, 1296, 1312, 1357, 1402, 1467, 1560, 1706, 1893, 2106, 2115, 1863, 1664, 1539, 1449, 1310, 1276, 1235, 1202, 1226, 1260, 1328, 1394, 1539, 1664, 1816, 2053, 1972, 1764, 1611, 1486, 1362, 1304, 1202, 1170, 1139, 1170, 1207, 1276, 1362, 1464, 1611, 1764, 1985, 1944, 1732, 1584, 1441, 1330, 1221, 1157, 1089, 1097, 1097, 1135, 1221, 1312, 1434, 1543, 1712, 1944, 1953, 1709, 1564, 1398, 1270, 1208, 1109, 1077, 1062, 1066, 1136, 1156, 1275, 1372, 1516, 1699, 1915, 1907, 1703, 1512, 1393, 1277, 1157, 1081, 1062, 1024, 1062, 1089, 1161, 1261, 1381, 1512, 1683, 1870, 1922, 1685, 1520, 1394, 1272, 1152, 1097, 1035, 1028, 1054, 1077, 1157, 1272, 1375, 1536, 1685, 1860, 1907, 1683, 1567, 1381, 1277, 1185, 1106, 1062, 1046, 1046, 1110, 1175, 1255, 1374, 1543, 1713, 1858, 1902, 1709, 1564, 1445, 1321, 1193, 1122, 1066, 1078, 1062, 1109, 1203, 1315, 1404, 1548, 1699, 1967, 2013, 1785, 1593, 1469, 1361, 1236, 1185, 1109, 1110, 1122, 1171, 1242, 1336, 1462, 1593, 1743, 1985, 1999, 1842, 1675, 1508, 1394, 1293, 1221, 1175, 1175, 1185, 1242, 1321, 1401, 1493, 1628, 1775, 1985, 2148, 1912, 1712, 1588, 1462, 1377, 1315, 1262, 1236, 1284, 1304, 1384, 1462, 1588, 1712, 1875, 2083, 2224, 1998, 1801, 1674, 1552, 1471, 1395, 1366, 1343, 1361, 1382, 1463, 1536, 1655, 1769, 1998, 2206, 2495, 2188, 1962, 1767, 1659, 1576, 1474, 1464, 1452, 1443, 1490, 1543, 1623, 1746, 1910, 2059, 2567, 3208, 2276, 2076, 1893, 1707, 1620, 1604, 1511, 1552, 1550, 1586, 1656, 1717, 1834, 1975, 2239, 3088] - } - }, { - "name": "3264x2448_GRAY_0", - "resolution": "3264x2448", - "illumination": "GRAY", - "vignetting": 0, - "lsc_samples_red": { - "uCoeff": [1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024] - }, - "lsc_samples_greenR": { - "uCoeff": [1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024] - }, - "lsc_samples_greenB": { - "uCoeff": [1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024] - }, - "lsc_samples_blue": { - "uCoeff": [1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024] - } - }], - "tableAll_len": 15 - } - }, - "colorAsGrey": { - "param": { - "enable": 0 - } - }, - "lumaDetect": { - "luma_detect_en": 1, - "fixed_times": 0, - "mutation_threshold": 0.0002, - "mutation_threshold_level2": 1000 - }, - "aldch": { - "param": { - "ldch_en": 0, - "meshfile": "LDCH_mesh_2688_1520_os04a10_4IR", - "correct_level": 255, - "correct_level_max": 255, - "light_center": [1351.12, 739.486], - "coefficient": [-1830.26, 0.000423795, -2.50767e-07, 1.27247e-10] - } - }, - "ccm_calib": { - "control": { - "enable": 1, - "mode": "CALIB_CCM_MODE_AUTO", - "wbgain_tolerance": 0.1, - "gain_tolerance": 0.2 - }, - "lumaCCM": { - "rgb2y_para": [38, 75, 15], - "low_bound_pos_bit": 8, - "y_alpha_curve": [0, 64, 128, 192, 256, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960, 1024], - "gain_alphaScale_curve": { - "gain": [1, 2, 4, 8, 16, 32, 64, 128, 256], - "scale": [1, 0.8, 0.8, 0.9, 1, 1, 1, 1, 1] - } - }, - "manualPara": { - "ccMatrix": [1, 0, 0, 0, 1, 0, 0, 0, 1], - "ccOffsets": [0, 0, 0] - }, - "TuningPara": { - "damp_enable": 1, - "illu_estim": { - "interp_enable": 0, - "default_illu": "A", - "weightRB": [1, 1], - "prob_limit": 0.2, - "frame_no": 8 - }, - "aCcmCof": [{ - "name": "A", - "awbGain": [1.3452, 2.4161], - "minDist": 0.05, - "matrixUsed": ["A_100", "A_74"], - "matrixUsed_len": 2, - "gain_sat_curve": { - "gains": [1, 4, 6, 16], - "sat": [90, 88, 80, 50] - } - }, { - "name": "CWF", - "awbGain": [1.8123, 2.0694], - "minDist": 0.05, - "matrixUsed": ["CWF_100", "CWF_74"], - "matrixUsed_len": 2, - "gain_sat_curve": { - "gains": [1, 4, 6, 16], - "sat": [90, 88, 80, 50] - } - }, { - "name": "D50", - "awbGain": [2.0413, 1.565], - "minDist": 0.05, - "matrixUsed": ["D50_100", "D50_74"], - "matrixUsed_len": 2, - "gain_sat_curve": { - "gains": [1, 4, 6, 16], - "sat": [90, 88, 80, 50] - } - }, { - "name": "D65", - "awbGain": [2.204, 1.4498], - "minDist": 0.05, - "matrixUsed": ["D65_100", "D65_74"], - "matrixUsed_len": 2, - "gain_sat_curve": { - "gains": [1, 4, 6, 16], - "sat": [90, 88, 80, 50] - } - }, { - "name": "D75", - "awbGain": [2.3379, 1.3483], - "minDist": 0.05, - "matrixUsed": ["D75_100", "D75_74"], - "matrixUsed_len": 2, - "gain_sat_curve": { - "gains": [1, 4, 6, 16], - "sat": [90, 88, 80, 50] - } - }, { - "name": "HZ", - "awbGain": [1.1019, 2.9858], - "minDist": 0.05, - "matrixUsed": ["HZ_100", "HZ_74"], - "matrixUsed_len": 2, - "gain_sat_curve": { - "gains": [1, 4, 6, 16], - "sat": [90, 88, 80, 50] - } - }, { - "name": "TL84", - "awbGain": [1.7523, 2.1252], - "minDist": 0.05, - "matrixUsed": ["TL84_100", "TL84_74"], - "matrixUsed_len": 2, - "gain_sat_curve": { - "gains": [1, 4, 6, 16], - "sat": [90, 88, 80, 50] - } - }], - "aCcmCof_len": 7, - "matrixAll": [{ - "name": "A_100", - "illumination": "A", - "saturation": 100, - "ccMatrix": [1.6891, -0.5521, -0.137, -0.3788, 1.5903, -0.2116, -0.1644, -0.948, 2.1124], - "ccOffsets": [0, 0, 0] - }, { - "name": "A_74", - "illumination": "A", - "saturation": 74, - "ccMatrix": [1.3186, -0.2377, -0.081, -0.2115, 1.3487, -0.1372, -0.0538, -0.529, 1.5828], - "ccOffsets": [0, 0, 0] - }, { - "name": "CWF_100", - "illumination": "CWF", - "saturation": 100, - "ccMatrix": [2.2712, -1.2488, -0.0224, -0.4072, 1.5721, -0.1649, -0.107, -0.5879, 1.6949], - "ccOffsets": [0, 0, 0] - }, { - "name": "CWF_74", - "illumination": "CWF", - "saturation": 74, - "ccMatrix": [1.792, -0.7994, 0.0074, -0.1898, 1.2888, -0.0989, 0.0311, -0.3086, 1.2775], - "ccOffsets": [0, 0, 0] - }, { - "name": "D50_100", - "illumination": "D50", - "saturation": 100, - "ccMatrix": [1.655, -0.9098, 0.2548, -0.2647, 1.2982, -0.0335, 0.16, -0.7713, 1.6113], - "ccOffsets": [0, 0, 0] - }, { - "name": "D50_74", - "illumination": "D50", - "saturation": 74, - "ccMatrix": [1.5565, -0.5177, -0.0389, -0.0858, 1.3389, -0.2531, 0.0647, -0.2656, 1.201], - "ccOffsets": [0, 0, 0] - }, { - "name": "D65_100", - "illumination": "D65", - "saturation": 100, - "ccMatrix": [2.0667, -1.0499, -0.0168, -0.2201, 1.594, -0.3739, -0.0537, -0.4778, 1.5315], - "ccOffsets": [0, 0, 0] - }, { - "name": "D65_74", - "illumination": "D65", - "saturation": 74, - "ccMatrix": [1.6549, -0.6301, -0.0248, -0.0372, 1.327, -0.2899, 0.0849, -0.2052, 1.1202], - "ccOffsets": [0, 0, 0] - }, { - "name": "D75_100", - "illumination": "D75", - "saturation": 100, - "ccMatrix": [2.155, -1.122, -0.033, -0.2227, 1.6076, -0.3849, -0.0495, -0.4337, 1.4832], - "ccOffsets": [0, 0, 0] - }, { - "name": "D75_74", - "illumination": "D75", - "saturation": 74, - "ccMatrix": [1.7269, -0.6857, -0.0411, -0.0325, 1.3349, -0.3024, 0.0946, -0.1747, 1.0801], - "ccOffsets": [0, 0, 0] - }, { - "name": "HZ_100", - "illumination": "HZ", - "saturation": 100, - "ccMatrix": [1.5916, -0.3465, -0.2451, -0.4361, 1.5559, -0.1198, -0.4226, -1.2969, 2.7195], - "ccOffsets": [0, 0, 0] - }, { - "name": "HZ_74", - "illumination": "HZ", - "saturation": 74, - "ccMatrix": [1.2224, -0.0853, -0.1371, -0.2778, 1.3236, -0.0457, -0.2688, -0.787, 2.0558], - "ccOffsets": [0, 0, 0] - }, { - "name": "TL84_100", - "illumination": "TL84", - "saturation": 100, - "ccMatrix": [1.935, -0.8598, -0.0752, -0.3278, 1.5314, -0.2036, -0.1164, -0.5772, 1.6936], - "ccOffsets": [0, 0, 0] - }, { - "name": "TL84_74", - "illumination": "TL84", - "saturation": 74, - "ccMatrix": [1.5289, -0.4872, -0.0417, -0.1454, 1.283, -0.1376, 0.01, -0.2765, 1.2665], - "ccOffsets": [0, 0, 0] - }], - "matrixAll_len": 14 - } - }, - "lut3d_calib": { - "common": { - "enable": 0, - "mode": "CALIB_Lut3D_MODE_AUTO", - "gain_tolerance": 0.1, - "wbgain_tolerance": 1 - }, - "MLut3D": { - "Table": { - "look_up_table_r": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "look_up_table_g": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "look_up_table_b": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - } - }, - "ALut3D": { - "damp_en": 1, - "lutAll": [{ - "name": "Normal", - "awbGain": [1, 1], - "gain_alpha": { - "gain": [1, 2, 4, 8, 16, 32, 64, 128, 256], - "alpha": [1, 1, 1, 1, 1, 1, 1, 1, 1] - }, - "Table": { - "look_up_table_r": [0, 20, 205, 415, 626, 829, 1023, 1023, 1023, 0, 20, 205, 415, 626, 829, 1023, 1023, 1023, 0, 20, 205, 415, 626, 829, 1023, 1023, 1023, 0, 20, 205, 416, 626, 829, 1023, 1023, 1023, 0, 20, 205, 415, 626, 829, 1023, 1023, 1023, 0, 20, 205, 416, 626, 829, 1023, 1023, 1023, 0, 20, 205, 415, 626, 829, 1023, 1023, 1023, 509, 511, 541, 616, 724, 850, 971, 1023, 1023, 677, 678, 687, 714, 759, 821, 897, 983, 1023, 0, 20, 205, 415, 626, 829, 1023, 1023, 1023, 0, 17, 202, 413, 623, 826, 1023, 1023, 1023, 0, 17, 202, 413, 623, 826, 1023, 1023, 1023, 0, 17, 202, 413, 623, 826, 1023, 1023, 1023, 0, 17, 202, 413, 623, 826, 1023, 1023, 1023, 0, 17, 202, 413, 623, 826, 1023, 1023, 1023, 0, 17, 202, 413, 623, 826, 1023, 1023, 1023, 509, 510, 541, 616, 724, 850, 970, 1023, 1023, 677, 678, 687, 714, 759, 821, 897, 983, 1023, 0, 20, 205, 415, 626, 829, 1023, 1023, 1023, 0, 17, 202, 413, 623, 826, 1023, 1023, 1023, 0, 17, 178, 386, 596, 800, 997, 1023, 1023, 0, 17, 178, 386, 596, 800, 997, 1023, 1023, 0, 17, 178, 386, 596, 800, 997, 1023, 1023, 0, 17, 178, 386, 596, 800, 997, 1023, 1023, 0, 17, 178, 386, 596, 800, 997, 1023, 1023, 511, 512, 539, 614, 723, 849, 969, 1023, 1023, 677, 678, 686, 713, 758, 820, 896, 982, 1023, 0, 20, 205, 416, 626, 829, 1023, 1023, 1023, 0, 17, 202, 413, 623, 826, 1023, 1023, 1023, 0, 17, 178, 386, 596, 800, 997, 1023, 1023, 0, 17, 178, 357, 567, 773, 971, 1023, 1023, 0, 17, 178, 357, 567, 773, 971, 1023, 1023, 0, 17, 178, 357, 567, 773, 971, 1023, 1023, 1, 17, 178, 357, 567, 773, 971, 1023, 1023, 516, 518, 544, 610, 718, 845, 965, 1023, 1023, 678, 679, 687, 710, 755, 817, 893, 979, 1023, 0, 20, 205, 415, 626, 829, 1023, 1023, 1023, 0, 17, 202, 413, 623, 826, 1023, 1023, 1023, 0, 17, 178, 386, 596, 800, 997, 1023, 1023, 0, 17, 178, 357, 567, 773, 971, 1023, 1023, 0, 17, 178, 357, 537, 745, 944, 1023, 1023, 0, 17, 178, 357, 537, 745, 944, 1023, 1023, 0, 17, 178, 357, 537, 745, 944, 1023, 1023, 526, 528, 554, 618, 713, 841, 957, 1023, 1023, 680, 680, 688, 711, 750, 811, 888, 974, 1023, 0, 20, 205, 416, 626, 829, 1023, 1023, 1023, 0, 17, 202, 413, 623, 826, 1023, 1023, 1023, 0, 17, 178, 386, 596, 800, 997, 1023, 1023, 0, 17, 178, 357, 567, 773, 971, 1023, 1023, 0, 17, 178, 357, 537, 745, 944, 1023, 1023, 0, 17, 178, 357, 537, 715, 916, 1023, 1023, 0, 17, 178, 357, 537, 715, 916, 1023, 1023, 543, 544, 569, 632, 725, 838, 947, 1023, 1023, 682, 682, 691, 713, 751, 804, 880, 967, 1023, 0, 20, 205, 415, 626, 829, 1023, 1023, 1023, 0, 17, 202, 413, 623, 826, 1023, 1023, 1023, 0, 17, 178, 386, 596, 800, 997, 1023, 1023, 1, 17, 178, 357, 567, 773, 971, 1023, 1023, 0, 17, 178, 357, 537, 745, 944, 1023, 1023, 0, 17, 178, 357, 537, 715, 916, 1023, 1023, 1, 17, 178, 357, 537, 715, 886, 1023, 1023, 569, 570, 594, 654, 745, 853, 935, 1023, 1023, 685, 686, 694, 716, 754, 806, 871, 957, 1023, 71, 83, 214, 402, 599, 791, 976, 1023, 1023, 72, 82, 212, 401, 597, 790, 975, 1023, 1023, 84, 93, 201, 386, 582, 776, 963, 1023, 1023, 114, 121, 215, 368, 561, 755, 942, 1023, 1023, 161, 166, 243, 384, 544, 735, 920, 1023, 1023, 230, 234, 293, 415, 563, 719, 900, 1023, 1023, 344, 347, 388, 482, 608, 747, 889, 1023, 1023, 608, 610, 632, 689, 776, 855, 936, 1023, 1023, 689, 690, 698, 720, 757, 808, 872, 945, 1023, 247, 250, 299, 407, 545, 693, 840, 978, 1023, 248, 251, 299, 407, 545, 693, 840, 978, 1023, 268, 271, 311, 413, 547, 693, 837, 975, 1023, 321, 323, 356, 435, 558, 695, 833, 968, 1023, 402, 403, 428, 489, 578, 700, 830, 960, 1023, 478, 479, 498, 546, 620, 711, 829, 951, 1023, 556, 557, 571, 608, 667, 743, 832, 943, 1023, 630, 630, 641, 669, 715, 777, 853, 936, 1023, 695, 695, 703, 725, 761, 811, 874, 946, 1023], - "look_up_table_g": [0, 0, 0, 1, 0, 1, 1, 637, 1771, 78, 78, 78, 78, 78, 78, 78, 663, 1778, 821, 820, 821, 821, 821, 821, 821, 1036, 1899, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1703, 2192, 2503, 2503, 2503, 2503, 2503, 2503, 2503, 2442, 2596, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3170, 3049, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 3837, 3501, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 3923, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 0, 0, 1, 1, 1, 0, 0, 637, 1771, 78, 69, 69, 69, 69, 69, 69, 660, 1778, 820, 810, 810, 810, 810, 810, 810, 1033, 1898, 1662, 1650, 1650, 1650, 1650, 1650, 1650, 1700, 2191, 2503, 2491, 2491, 2491, 2491, 2491, 2491, 2439, 2595, 3317, 3305, 3305, 3305, 3305, 3305, 3305, 3168, 3049, 4095, 4091, 4091, 4091, 4091, 4091, 4091, 3836, 3501, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 3923, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 0, 1, 0, 1, 1, 1, 0, 640, 1775, 78, 69, 69, 69, 69, 69, 69, 663, 1781, 821, 810, 713, 713, 713, 713, 713, 990, 1890, 1662, 1650, 1543, 1543, 1543, 1543, 1543, 1658, 2183, 2503, 2491, 2383, 2383, 2383, 2383, 2383, 2404, 2587, 3317, 3305, 3202, 3202, 3202, 3202, 3202, 3143, 3042, 4095, 4091, 3990, 3990, 3990, 3990, 3990, 3821, 3495, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 3918, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 1, 1, 1, 0, 1, 0, 2, 650, 1786, 78, 69, 69, 69, 69, 69, 69, 673, 1792, 821, 810, 713, 713, 713, 713, 713, 996, 1899, 1662, 1650, 1543, 1428, 1428, 1428, 1428, 1579, 2161, 2503, 2491, 2383, 2267, 2267, 2267, 2267, 2331, 2567, 3317, 3305, 3202, 3091, 3091, 3091, 3091, 3085, 3023, 4095, 4091, 3990, 3882, 3882, 3882, 3882, 3783, 3479, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 3904, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 0, 1, 1, 1, 0, 1, 0, 668, 1805, 78, 69, 69, 69, 69, 69, 69, 690, 1811, 821, 810, 713, 713, 713, 713, 713, 1008, 1916, 1662, 1650, 1543, 1428, 1428, 1428, 1428, 1587, 2174, 2503, 2491, 2383, 2267, 2149, 2149, 2149, 2242, 2534, 3317, 3305, 3202, 3091, 2978, 2978, 2978, 3008, 2993, 4095, 4091, 3990, 3882, 3775, 3775, 3775, 3727, 3452, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 3881, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 1, 0, 1, 0, 1, 1, 0, 697, 1834, 78, 69, 69, 69, 69, 69, 69, 718, 1840, 821, 810, 713, 713, 713, 713, 713, 1028, 1942, 1662, 1650, 1543, 1428, 1428, 1428, 1428, 1599, 2194, 2503, 2491, 2383, 2267, 2149, 2149, 2149, 2251, 2548, 3317, 3305, 3202, 3091, 2978, 2860, 2860, 2920, 2952, 4095, 4091, 3990, 3882, 3775, 3663, 3663, 3660, 3415, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 3848, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 1, 0, 0, 2, 0, 0, 3, 737, 1874, 78, 69, 69, 69, 69, 69, 69, 758, 1880, 821, 810, 713, 713, 713, 713, 713, 1056, 1979, 1662, 1650, 1543, 1428, 1428, 1428, 1428, 1618, 2223, 2503, 2491, 2383, 2267, 2149, 2149, 2149, 2264, 2567, 3317, 3305, 3202, 3091, 2978, 2860, 2860, 2931, 2964, 4095, 4091, 3990, 3882, 3775, 3663, 3545, 3586, 3368, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 3805, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 283, 284, 299, 339, 405, 501, 628, 793, 1927, 334, 328, 342, 378, 439, 529, 651, 812, 1932, 866, 861, 802, 820, 852, 903, 981, 1096, 2026, 1624, 1619, 1561, 1474, 1492, 1522, 1570, 1645, 2260, 2403, 2400, 2351, 2268, 2177, 2197, 2230, 2284, 2593, 3155, 3152, 3117, 3047, 2964, 2877, 2903, 2948, 2980, 3847, 3846, 3823, 3771, 3702, 3627, 3557, 3606, 3377, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 3754, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 988, 989, 1014, 1082, 1198, 1367, 1588, 1785, 1992, 1003, 1003, 1027, 1094, 1209, 1377, 1596, 1791, 1997, 1245, 1244, 1243, 1299, 1396, 1543, 1724, 1899, 2086, 1751, 1750, 1745, 1741, 1813, 1918, 2029, 2161, 2307, 2354, 2354, 2347, 2330, 2313, 2366, 2437, 2525, 2626, 2923, 2923, 2916, 2898, 2873, 2846, 2887, 2939, 3000, 3449, 3449, 3442, 3425, 3399, 3365, 3328, 3355, 3387, 3916, 3915, 3910, 3894, 3869, 3834, 3792, 3745, 3758, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095], - "look_up_table_b": [0, 0, 0, 0, 0, 0, 0, 159, 443, 0, 0, 0, 0, 0, 0, 0, 160, 443, 0, 0, 0, 0, 0, 0, 0, 168, 452, 0, 0, 0, 0, 0, 0, 1, 193, 476, 0, 0, 0, 0, 0, 0, 0, 237, 514, 0, 0, 0, 0, 0, 0, 0, 313, 563, 0, 0, 0, 1, 0, 0, 1, 461, 617, 509, 509, 515, 531, 563, 623, 709, 724, 673, 677, 677, 678, 680, 684, 691, 700, 711, 725, 20, 20, 20, 20, 20, 20, 20, 165, 444, 20, 17, 17, 17, 17, 17, 17, 165, 444, 20, 17, 17, 17, 17, 17, 17, 173, 453, 20, 17, 17, 17, 17, 17, 17, 197, 477, 20, 17, 17, 17, 17, 17, 17, 240, 515, 20, 17, 17, 17, 17, 17, 17, 316, 564, 20, 17, 17, 17, 17, 17, 17, 462, 618, 510, 510, 516, 532, 565, 623, 709, 725, 673, 678, 678, 678, 681, 685, 691, 700, 711, 725, 205, 205, 205, 205, 205, 205, 205, 254, 467, 205, 202, 202, 202, 202, 202, 202, 253, 467, 205, 202, 178, 178, 178, 178, 178, 247, 472, 205, 202, 178, 178, 178, 178, 178, 264, 495, 205, 202, 178, 178, 178, 178, 178, 297, 530, 205, 202, 178, 178, 178, 178, 178, 359, 576, 205, 202, 178, 178, 178, 178, 178, 490, 628, 537, 537, 539, 554, 584, 640, 720, 734, 681, 687, 687, 686, 689, 693, 699, 707, 718, 731, 415, 415, 415, 416, 415, 416, 415, 417, 525, 415, 413, 413, 413, 413, 413, 413, 416, 525, 415, 413, 386, 386, 386, 386, 386, 407, 529, 416, 413, 386, 357, 357, 357, 357, 395, 540, 415, 413, 386, 357, 357, 357, 357, 415, 570, 416, 413, 386, 357, 357, 357, 357, 458, 610, 415, 413, 386, 357, 357, 357, 357, 557, 656, 606, 606, 606, 610, 636, 684, 747, 760, 704, 712, 712, 712, 710, 714, 719, 727, 737, 749, 626, 626, 626, 626, 626, 626, 626, 601, 614, 626, 623, 623, 623, 623, 623, 623, 600, 614, 626, 623, 596, 596, 596, 596, 596, 590, 616, 626, 623, 596, 567, 567, 567, 567, 573, 622, 626, 623, 596, 567, 537, 537, 537, 560, 634, 626, 623, 596, 567, 537, 537, 537, 587, 665, 626, 623, 596, 567, 537, 537, 537, 654, 702, 706, 706, 706, 707, 713, 752, 793, 803, 741, 755, 755, 755, 753, 750, 754, 761, 769, 780, 829, 829, 829, 829, 829, 829, 829, 789, 724, 829, 826, 826, 826, 826, 826, 826, 788, 724, 829, 826, 800, 800, 800, 800, 800, 777, 724, 829, 826, 800, 773, 773, 773, 773, 759, 726, 829, 826, 800, 773, 745, 745, 745, 741, 730, 829, 826, 800, 773, 745, 715, 715, 730, 738, 829, 826, 800, 773, 745, 715, 715, 771, 765, 829, 829, 827, 825, 825, 838, 856, 863, 794, 816, 816, 815, 813, 809, 804, 809, 816, 823, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 973, 848, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 972, 848, 1023, 1023, 997, 997, 997, 997, 997, 961, 846, 1023, 1023, 997, 971, 971, 971, 971, 942, 843, 1023, 1023, 997, 971, 944, 944, 944, 921, 841, 1023, 1023, 997, 971, 944, 916, 916, 902, 840, 1023, 1023, 997, 971, 944, 916, 886, 897, 842, 961, 961, 959, 953, 947, 946, 935, 938, 861, 893, 893, 892, 889, 884, 878, 871, 875, 880, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 977, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 977, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 975, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 969, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 961, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 952, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 945, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 938, 982, 982, 980, 977, 972, 965, 956, 945, 948, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023] - } - }], - "lutAll_len": 1 - } - }, - "af": { - "TuningPara": { - "af_mode": "CalibDbV2_AF_MODE_NOT_SET", - "win_h_offs": 0, - "win_v_offs": 0, - "win_h_size": 0, - "win_v_size": 0, - "fixed_mode": { - "code": 8 - }, - "macro_mode": { - "code": 32 - }, - "infinity_mode": { - "code": 32 - }, - "contrast_af": { - "enable": 1, - "Afss": "CalibDbV2_CAM_AFM_FSS_ADAPTIVE_RANGE", - "FullDir": "CalibDbV2_CAM_AFM_ADAPTIVE_SEARCH", - "FullSteps": 9, - "FullRangeTbl": [0, 8, 16, 24, 32, 40, 48, 56, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "AdaptiveDir": "CalibDbV2_CAM_AFM_ADAPTIVE_SEARCH", - "AdaptiveSteps": 9, - "AdaptRangeTbl": [0, 8, 16, 24, 32, 40, 48, 56, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "TrigThers": 0.075, - "LumaTrigThers": 0, - "StableThers": 0.02, - "StableFrames": 3, - "StableTime": 200, - "SceneDiffEnable": 0, - "SceneDiffThers": 0, - "SceneDiffBlkThers": 0, - "CenterSceneDiffThers": 0, - "ValidMaxMinRatio": 0, - "ValidValueThers": 0, - "OutFocusValue": 50, - "OutFocusPos": 30, - "WeightEnable": 0, - "Weight": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "SearchPauseLumaEnable": 0, - "SearchPauseLumaThers": 0, - "SearchLumaStableFrames": 0, - "SearchLumaStableThers": 0, - "FlatValue": 0 - }, - "laser_af": { - "enable": 0, - "vcmDot": [0, 16, 32, 40, 48, 56, 64], - "distanceDot": [0.2, 0.24, 0.34, 0.4, 0.66, 1, 3] - }, - "pdaf": { - "enable": 0 - }, - "vcmcfg": { - "start_current": -1, - "rated_current": -1, - "step_mode": -1, - "extra_delay": 0 - }, - "measiso_cfg": [{ - "iso": 50, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }, { - "iso": 100, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }, { - "iso": 200, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }, { - "iso": 400, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }, { - "iso": 800, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }, { - "iso": 1600, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }, { - "iso": 3200, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }, { - "iso": 6400, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }, { - "iso": 12800, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }, { - "iso": 25600, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }, { - "iso": 51200, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }, { - "iso": 102400, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }, { - "iso": 204800, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }], - "zoomfocus_tbl": { - "tbl_len": 0, - "focal_length": [], - "focal_length_len": 0, - "zoom_pos": [], - "zoom_pos_len": 0, - "focus_infpos": [], - "focus_infpos_len": 0, - "focus_macropos": [], - "focus_macropos_len": 0 - } - } - }, - "thumbnails": { - "param": { - "thumbnail_configs": [{ - "owner_cookies": 0, - "stream_type": 0, - "after_nodes": 0, - "before_node": 0, - "format": "NV12\u0002", - "width_intfactor": 2, - "height_intfactor": 2, - "buffer_count": 0 - }, { - "owner_cookies": 1, - "stream_type": 0, - "after_nodes": 0, - "before_node": 0, - "format": "NV12\u0004", - "width_intfactor": 4, - "height_intfactor": 4, - "buffer_count": 0 - }, { - "owner_cookies": 2, - "stream_type": 0, - "after_nodes": 0, - "before_node": 0, - "format": "NV12\b", - "width_intfactor": 8, - "height_intfactor": 8, - "buffer_count": 0 - }], - "thumbnail_configs_len": 3 - } - }, - "bayernr_v2": { - "Version": "", - "CalibPara": { - "Setting": [{ - "SNR_Mode": "LSNR", - "Sensor_Mode": "lcg", - "Calib_ISO": [{ - "iso": 50, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [440, 385, 336, 292, 226, 191, 187, 202, 220, 235, 241, 238, 224, 203, 176, 155] - }, { - "iso": 100, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [747, 638, 535, 436, 251, 141, 120, 135, 114, 187, 226, 237, 222, 181, 112, 100] - }, { - "iso": 200, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [1233, 1094, 966, 850, 657, 526, 459, 448, 464, 483, 490, 477, 440, 383, 313, 262] - }, { - "iso": 400, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [1076, 1002, 936, 877, 783, 717, 674, 647, 628, 612, 593, 567, 534, 494, 452, 416] - }, { - "iso": 800, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [2708, 2445, 2204, 1986, 1624, 1366, 1209, 1136, 1113, 1104, 1082, 1031, 942, 813, 655, 512] - }, { - "iso": 1600, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 3200, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 6400, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 12800, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 25600, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 51200, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 102400, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 204800, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }], - "Calib_ISO_len": 13 - }, { - "SNR_Mode": "HSNR", - "Sensor_Mode": "hcg", - "Calib_ISO": [{ - "iso": 50, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [329, 292, 258, 227, 176, 141, 124, 121, 127, 133, 137, 135, 127, 113, 94, 75] - }, { - "iso": 100, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [747, 638, 535, 436, 251, 141, 120, 135, 114, 187, 226, 237, 222, 181, 112, 100] - }, { - "iso": 200, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [835, 721, 614, 514, 336, 194, 120, 147, 207, 256, 284, 288, 267, 221, 148, 120] - }, { - "iso": 400, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [789, 703, 625, 553, 435, 354, 311, 301, 308, 318, 321, 312, 288, 249, 198, 147] - }, { - "iso": 800, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [761, 707, 658, 614, 542, 490, 454, 430, 414, 401, 386, 366, 341, 309, 273, 238] - }, { - "iso": 1600, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 3200, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 6400, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 12800, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 25600, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 51200, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 102400, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 204800, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }], - "Calib_ISO_len": 13 - }], - "Setting_len": 2 - }, - "Bayernr2D": { - "enable": 1, - "Setting": [{ - "SNR_Mode": "LSNR", - "Sensor_Mode": "lcg", - "Tuning_ISO": [{ - "iso": 50, - "gauss_guide": 1, - "filter_strength": 15, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 100, - "gauss_guide": 1, - "filter_strength": 15, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 200, - "gauss_guide": 1, - "filter_strength": 15, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 400, - "gauss_guide": 1, - "filter_strength": 15, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 800, - "gauss_guide": 1, - "filter_strength": 15, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 1600, - "gauss_guide": 1, - "filter_strength": 0.8, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 3200, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 6400, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 12800, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 25600, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 51200, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 102400, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 204800, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }], - "Tuning_ISO_len": 13 - }, { - "SNR_Mode": "HSNR", - "Sensor_Mode": "hcg", - "Tuning_ISO": [{ - "iso": 50, - "gauss_guide": 0, - "filter_strength": 4, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 100, - "gauss_guide": 0, - "filter_strength": 4, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 200, - "gauss_guide": 0, - "filter_strength": 4, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 400, - "gauss_guide": 0, - "filter_strength": 4, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 800, - "gauss_guide": 0, - "filter_strength": 4, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 1600, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 3200, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 6400, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 12800, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 25600, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 51200, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 102400, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 204800, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }], - "Tuning_ISO_len": 13 - }], - "Setting_len": 2 - }, - "Bayernr3D": { - "enable": 0, - "Setting": [{ - "SNR_Mode": "LSNR", - "Sensor_Mode": "lcg", - "Tuning_ISO": [{ - "iso": 50, - "filter_strength": 0.5, - "sp_filter_strength": 0.55, - "lo_clipwgt": 0.9, - "hi_clipwgt": 0.88, - "softwgt": 0 - }, { - "iso": 100, - "filter_strength": 0.5, - "sp_filter_strength": 0.55, - "lo_clipwgt": 0.9, - "hi_clipwgt": 0.88, - "softwgt": 0 - }, { - "iso": 200, - "filter_strength": 0.5, - "sp_filter_strength": 0.6, - "lo_clipwgt": 0.9, - "hi_clipwgt": 0.88, - "softwgt": 0 - }, { - "iso": 400, - "filter_strength": 0.5, - "sp_filter_strength": 0.6, - "lo_clipwgt": 0.9, - "hi_clipwgt": 0.88, - "softwgt": 0 - }, { - "iso": 800, - "filter_strength": 0.5, - "sp_filter_strength": 0.65, - "lo_clipwgt": 0.9, - "hi_clipwgt": 0.88, - "softwgt": 0 - }, { - "iso": 1600, - "filter_strength": 0.1, - "sp_filter_strength": 0.65, - "lo_clipwgt": 0.9, - "hi_clipwgt": 0.9, - "softwgt": 0 - }, { - "iso": 3200, - "filter_strength": 0.1, - "sp_filter_strength": 0.65, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }, { - "iso": 6400, - "filter_strength": 0.5, - "sp_filter_strength": 0.7, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }, { - "iso": 12800, - "filter_strength": 0.5, - "sp_filter_strength": 0.7, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }, { - "iso": 25600, - "filter_strength": 0.6, - "sp_filter_strength": 0.7, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }, { - "iso": 51200, - "filter_strength": 0.6, - "sp_filter_strength": 0.7, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }, { - "iso": 102400, - "filter_strength": 0.7, - "sp_filter_strength": 0.7, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }, { - "iso": 204800, - "filter_strength": 0.7, - "sp_filter_strength": 0.7, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }], - "Tuning_ISO_len": 13 - }, { - "SNR_Mode": "HSNR", - "Sensor_Mode": "hcg", - "Tuning_ISO": [{ - "iso": 50, - "filter_strength": 0.1, - "sp_filter_strength": 0.55, - "lo_clipwgt": 0.9, - "hi_clipwgt": 0.9, - "softwgt": 0 - }, { - "iso": 100, - "filter_strength": 0.1, - "sp_filter_strength": 0.55, - "lo_clipwgt": 0.9, - "hi_clipwgt": 0.9, - "softwgt": 0 - }, { - "iso": 200, - "filter_strength": 0.1, - "sp_filter_strength": 0.6, - "lo_clipwgt": 0.9, - "hi_clipwgt": 0.9, - "softwgt": 0 - }, { - "iso": 400, - "filter_strength": 0.1, - "sp_filter_strength": 0.6, - "lo_clipwgt": 0.9, - "hi_clipwgt": 0.9, - "softwgt": 0 - }, { - "iso": 800, - "filter_strength": 0.1, - "sp_filter_strength": 0.65, - "lo_clipwgt": 0.9, - "hi_clipwgt": 0.9, - "softwgt": 0 - }, { - "iso": 1600, - "filter_strength": 0.1, - "sp_filter_strength": 0.65, - "lo_clipwgt": 0.9, - "hi_clipwgt": 0.9, - "softwgt": 0 - }, { - "iso": 3200, - "filter_strength": 0.1, - "sp_filter_strength": 0.65, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }, { - "iso": 6400, - "filter_strength": 0.5, - "sp_filter_strength": 0.7, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }, { - "iso": 12800, - "filter_strength": 0.5, - "sp_filter_strength": 0.7, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }, { - "iso": 25600, - "filter_strength": 0.6, - "sp_filter_strength": 0.7, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }, { - "iso": 51200, - "filter_strength": 0.6, - "sp_filter_strength": 0.7, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }, { - "iso": 102400, - "filter_strength": 0.7, - "sp_filter_strength": 0.7, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }, { - "iso": 204800, - "filter_strength": 0.7, - "sp_filter_strength": 0.7, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }], - "Tuning_ISO_len": 13 - }], - "Setting_len": 2 - } - }, - "cnr_v1": { - "Version": "", - "TuningPara": { - "enable": 1, - "Kernel_Coeff": { - "kernel_5x5": [1, 0.8825, 0.7788, 0.6065, 0.3679] - }, - "Setting": [{ - "SNR_Mode": "LSNR", - "Sensor_Mode": "lcg", - "Tuning_ISO": [{ - "iso": 50, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 30, - "color_sat_adj_alpha": 0.4, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 50, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 30, - "thumb_color_sat": 4, - "lf_denoise_strength": 40, - "lf_color_sat": 4, - "lf_denoise_alpha": 0.5 - }, { - "iso": 100, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 30, - "color_sat_adj_alpha": 0.4, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 50, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 30, - "thumb_color_sat": 4, - "lf_denoise_strength": 40, - "lf_color_sat": 4, - "lf_denoise_alpha": 0.5 - }, { - "iso": 200, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 30, - "color_sat_adj_alpha": 0.4, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 50, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 30, - "thumb_color_sat": 4, - "lf_denoise_strength": 40, - "lf_color_sat": 4, - "lf_denoise_alpha": 0.5 - }, { - "iso": 400, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 30, - "color_sat_adj_alpha": 0.4, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 50, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 30, - "thumb_color_sat": 4, - "lf_denoise_strength": 40, - "lf_color_sat": 4, - "lf_denoise_alpha": 0.5 - }, { - "iso": 800, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 30, - "color_sat_adj_alpha": 0.4, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 50, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 30, - "thumb_color_sat": 4, - "lf_denoise_strength": 40, - "lf_color_sat": 4, - "lf_denoise_alpha": 0.5 - }, { - "iso": 1600, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 3200, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 6400, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 12800, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 25600, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 51200, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 102400, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 204800, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }], - "Tuning_ISO_len": 13 - }, { - "SNR_Mode": "HSNR", - "Sensor_Mode": "hcg", - "Tuning_ISO": [{ - "iso": 50, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 100, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 200, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 400, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 800, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 1600, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 3200, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 6400, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 12800, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 25600, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 51200, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 102400, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 204800, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }], - "Tuning_ISO_len": 13 - }], - "Setting_len": 2 - } - }, - "ynr_v2": { - "Version": "", - "CalibPara": { - "Setting": [{ - "SNR_Mode": "LSNR", - "Sensor_Mode": "lcg", - "Calib_ISO": [{ - "iso": 50, - "sigma_curve": [5.26063e-13, -4.31051e-09, 6.01295e-06, 0.00733553, 30.2968], - "ynr_ci_l": 0.35887, - "ynr_ci_h": 0.218965 - }, { - "iso": 100, - "sigma_curve": [-8.51864e-13, 8.4477e-09, -3.1173e-05, 0.0431732, 20.4729], - "ynr_ci_l": 0.266861, - "ynr_ci_h": 0.176977 - }, { - "iso": 200, - "sigma_curve": [-1.91013e-12, 1.68572e-08, -5.42127e-05, 0.0644649, 50.8293], - "ynr_ci_l": 0.264338, - "ynr_ci_h": 0.176603 - }, { - "iso": 400, - "sigma_curve": [-1.39053e-12, 1.37088e-08, -5.30971e-05, 0.0730568, 77.3162], - "ynr_ci_l": 0.260614, - "ynr_ci_h": 0.169545 - }, { - "iso": 800, - "sigma_curve": [-7.56352e-13, 8.08215e-09, -4.17244e-05, 0.0722224, 122.519], - "ynr_ci_l": 0.292136, - "ynr_ci_h": 0.186536 - }, { - "iso": 1600, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 3200, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 6400, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 12800, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 25600, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 51200, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 102400, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 204800, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }], - "Calib_ISO_len": 13 - }, { - "SNR_Mode": "HSNR", - "Sensor_Mode": "hcg", - "Calib_ISO": [{ - "iso": 50, - "sigma_curve": [-3.79338e-13, 4.20139e-09, -1.65728e-05, 0.0227778, 17.7731], - "ynr_ci_l": 0.264599, - "ynr_ci_h": 0.186359 - }, { - "iso": 100, - "sigma_curve": [-8.51864e-13, 8.4477e-09, -3.1173e-05, 0.0431732, 20.4729], - "ynr_ci_l": 0.266861, - "ynr_ci_h": 0.176977 - }, { - "iso": 200, - "sigma_curve": [-1.01774e-12, 1.07758e-08, -4.22101e-05, 0.0597135, 28.7999], - "ynr_ci_l": 0.259483, - "ynr_ci_h": 0.166846 - }, { - "iso": 400, - "sigma_curve": [-1.32816e-12, 1.29829e-08, -4.53493e-05, 0.0511179, 55.0177], - "ynr_ci_l": 0.254945, - "ynr_ci_h": 0.156095 - }, { - "iso": 800, - "sigma_curve": [-1.76225e-12, 1.64389e-08, -5.4805e-05, 0.0586055, 72.3208], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 1600, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 3200, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 6400, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 12800, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 25600, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 51200, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 102400, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 204800, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }], - "Calib_ISO_len": 13 - }], - "Setting_len": 2 - }, - "TuningPara": { - "enable": 1, - "Setting": [{ - "SNR_Mode": "LSNR", - "Sensor_Mode": "lcg", - "Tuning_ISO": [{ - "iso": 50, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 20, - "low_bf_1": 20, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.1, - "low_dist_adj": 8, - "low_weight": 1, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.9, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 20, - "high_weight": 1, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1.05, 1.1, 1.1, 1.2, 1.4, 1.6, 1.8, 2, 2.2, 2.4, 2.8, 3, 3.5, 4] - }, { - "iso": 100, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 20, - "low_bf_1": 20, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.1, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.9, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 20, - "high_weight": 1, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1.05, 1.1, 1.1, 1.2, 1.4, 1.6, 1.8, 2, 2.2, 2.4, 2.8, 3, 3.5, 4] - }, { - "iso": 200, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 20, - "low_bf_1": 20, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.1, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.9, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 20, - "high_weight": 1, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1.05, 1.1, 1.1, 1.2, 1.4, 1.6, 1.8, 2, 2.2, 2.4, 2.8, 3, 3.5, 4] - }, { - "iso": 400, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 20, - "low_bf_1": 20, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.1, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.9, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 20, - "high_weight": 1, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1.05, 1.1, 1.1, 1.2, 1.4, 1.6, 1.8, 2, 2.2, 2.4, 2.8, 3, 3.5, 4] - }, { - "iso": 800, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 20, - "low_bf_1": 20, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.1, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.9, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 20, - "high_weight": 1, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1.05, 1.1, 1.1, 1.2, 1.4, 1.6, 1.8, 2, 2.2, 2.4, 2.8, 3, 3.5, 4] - }, { - "iso": 1600, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 5, - "low_bf_1": 5, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.5, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1.05, 1.1, 1.1, 1.2, 1.4, 1.6, 1.8, 2, 2.2, 2.4, 2.8, 3.5] - }, { - "iso": 3200, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.95, - "low_bf_1": 0.5, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 6400, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 1, - "low_bf_1": 0.5, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 12800, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 1.1, - "low_bf_1": 0.5, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 25600, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 1.1, - "low_bf_1": 0.5, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 51200, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 1.1, - "low_bf_1": 0.5, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 102400, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 1.1, - "low_bf_1": 0.5, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 204800, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 1.1, - "low_bf_1": 0.5, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }], - "Tuning_ISO_len": 13 - }, { - "SNR_Mode": "HSNR", - "Sensor_Mode": "hcg", - "Tuning_ISO": [{ - "iso": 50, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0.5, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 100, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 200, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 400, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 800, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 1600, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 3200, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 6400, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 12800, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 25600, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 51200, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 102400, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 204800, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }], - "Tuning_ISO_len": 13 - }], - "Setting_len": 2 - } - }, - "sharp_v3": { - "Version": "", - "TuningPara": { - "enable": 1, - "Setting": [{ - "SNR_Mode": "LSNR", - "Sensor_Mode": "lcg", - "Tuning_ISO": [{ - "iso": 50, - "pbf_gain": 0.8, - "pbf_ratio": 0.5, - "pbf_add": 1, - "gaus_ratio": 0.5, - "sharp_ratio": 10, - "bf_gain": 2, - "bf_ratio": 5, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [12, 16, 20, 24, 28, 24, 20, 20], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [512, 512, 512, 512, 512, 512, 512, 512] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 100, - "pbf_gain": 0.8, - "pbf_ratio": 0.5, - "pbf_add": 1, - "gaus_ratio": 0.5, - "sharp_ratio": 10, - "bf_gain": 3, - "bf_ratio": 5, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [24, 32, 40, 48, 56, 48, 48, 40], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [512, 512, 512, 512, 512, 512, 512, 512] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 200, - "pbf_gain": 0.8, - "pbf_ratio": 0.5, - "pbf_add": 1, - "gaus_ratio": 0.5, - "sharp_ratio": 10, - "bf_gain": 3, - "bf_ratio": 5, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [24, 32, 40, 48, 56, 48, 48, 40], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [512, 512, 512, 512, 512, 512, 512, 512] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 400, - "pbf_gain": 0.8, - "pbf_ratio": 0.5, - "pbf_add": 1, - "gaus_ratio": 0.5, - "sharp_ratio": 10, - "bf_gain": 4, - "bf_ratio": 5, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [32, 40, 48, 56, 64, 56, 48, 40], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [512, 512, 512, 512, 512, 512, 512, 512] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 800, - "pbf_gain": 0.8, - "pbf_ratio": 0.5, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 10, - "bf_gain": 4, - "bf_ratio": 5, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [40, 48, 56, 64, 80, 64, 56, 48], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [512, 512, 512, 512, 512, 512, 512, 512] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 1600, - "pbf_gain": 0.8, - "pbf_ratio": 0.2, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [256, 256, 256, 256, 256, 256, 256, 256] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 3200, - "pbf_gain": 0.8, - "pbf_ratio": 0.2, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 6400, - "pbf_gain": 0.8, - "pbf_ratio": 0.3, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 12800, - "pbf_gain": 0.8, - "pbf_ratio": 0.4, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 25600, - "pbf_gain": 0.8, - "pbf_ratio": 0.4, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 51200, - "pbf_gain": 0.8, - "pbf_ratio": 0.4, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 102400, - "pbf_gain": 0.8, - "pbf_ratio": 0.4, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 204800, - "pbf_gain": 0.8, - "pbf_ratio": 0.4, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }], - "Tuning_ISO_len": 13 - }, { - "SNR_Mode": "HSNR", - "Sensor_Mode": "hcg", - "Tuning_ISO": [{ - "iso": 50, - "pbf_gain": 0.8, - "pbf_ratio": 0, - "pbf_add": 1, - "gaus_ratio": 0, - "sharp_ratio": 6, - "bf_gain": 2, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [8, 12, 16, 16, 24, 20, 16, 16], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 100, - "pbf_gain": 0.8, - "pbf_ratio": 0, - "pbf_add": 1, - "gaus_ratio": 0, - "sharp_ratio": 6, - "bf_gain": 3, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [12, 16, 20, 24, 28, 24, 20, 20], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 200, - "pbf_gain": 0.8, - "pbf_ratio": 0, - "pbf_add": 1, - "gaus_ratio": 0, - "sharp_ratio": 6, - "bf_gain": 3, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [24, 32, 40, 48, 56, 48, 48, 40], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [512, 512, 512, 512, 512, 512, 512, 512] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 400, - "pbf_gain": 0.8, - "pbf_ratio": 0, - "pbf_add": 1, - "gaus_ratio": 0, - "sharp_ratio": 7, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [32, 40, 48, 56, 64, 56, 48, 40], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [512, 512, 512, 512, 512, 512, 512, 512] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 800, - "pbf_gain": 0.8, - "pbf_ratio": 0.2, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 7, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [40, 48, 56, 64, 80, 64, 56, 48], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [512, 512, 512, 512, 512, 512, 512, 512] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 1600, - "pbf_gain": 0.8, - "pbf_ratio": 0.2, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [256, 256, 256, 256, 256, 256, 256, 256] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 3200, - "pbf_gain": 0.8, - "pbf_ratio": 0.2, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 6400, - "pbf_gain": 0.8, - "pbf_ratio": 0.3, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 12800, - "pbf_gain": 0.8, - "pbf_ratio": 0.4, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 25600, - "pbf_gain": 0.8, - "pbf_ratio": 0.4, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 51200, - "pbf_gain": 0.8, - "pbf_ratio": 0.4, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 102400, - "pbf_gain": 0.8, - "pbf_ratio": 0.4, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 204800, - "pbf_gain": 0.8, - "pbf_ratio": 0.4, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }], - "Tuning_ISO_len": 13 - }], - "Setting_len": 2 - } - } - } - }], - "sub_scene_len": 1 - }], - "main_scene_len": 1, - "uapi": [], - "uapi_len": 0, - "sys_static_cfg": { - "algoSwitch": { - "enable": 0, - "enable_algos": [], - "enable_algos_len": 0 - } - } -} \ No newline at end of file diff --git a/hardware/isp/etc/iqfiles/gc8034_RK-CMK-8M-2-v1_CK8401.json b/hardware/isp/etc/iqfiles/gc8034_RK-CMK-8M-2-v1_CK8401.json deleted file mode 100644 index 6d892a2b54a877e2676802749c9c4b79dc80e57e..0000000000000000000000000000000000000000 --- a/hardware/isp/etc/iqfiles/gc8034_RK-CMK-8M-2-v1_CK8401.json +++ /dev/null @@ -1,4650 +0,0 @@ -{ - "sensor_calib": { - "resolution": { - "width": 3264, - "height": 2448 - }, - "Gain2Reg": { - "GainMode": "EXPGAIN_MODE_LINEAR", - "GainRange": [1, 16, 64, 0, 1, 64, 1024], - "GainRange_len": 7 - }, - "Time2Reg": { - "fCoeff": [0, 0, 1, 0.5] - }, - "CISGainSet": { - "CISAgainRange": { - "Min": 1, - "Max": 16 - }, - "CISExtraAgainRange": { - "Min": 1, - "Max": 1 - }, - "CISDgainRange": { - "Min": 1, - "Max": 1 - }, - "CISIspDgainRange": { - "Min": 1, - "Max": 1 - }, - "CISHdrGainIndSetEn": 1 - }, - "CISTimeSet": { - "Linear": { - "CISTimeRegMin": 4, - "CISLinTimeRegMaxFac": { - "fCoeff": [1, 4] - }, - "CISTimeRegOdevity": { - "fCoeff": [1, 0] - } - }, - "Hdr": [{ - "name": "HDR_TWO_FRAME", - "CISTimeRegUnEqualEn": 1, - "CISTimeRegMin": 4, - "CISHdrTimeRegSumFac": { - "fCoeff": [1, 4] - }, - "CISTimeRegMax": { - "Coeff": [0, 0, 0] - }, - "CISTimeRegOdevity": { - "fCoeff": [1, 0] - } - }, { - "name": "HDR_THREE_FRAME", - "CISTimeRegUnEqualEn": 1, - "CISTimeRegMin": 4, - "CISHdrTimeRegSumFac": { - "fCoeff": [1, 4] - }, - "CISTimeRegMax": { - "Coeff": [0, 0, 0] - }, - "CISTimeRegOdevity": { - "fCoeff": [1, 0] - } - }] - }, - "CISHdrSet": { - "hdr_en": 0, - "hdr_mode": "RK_AIQ_ISP_HDR_MODE_2_LINE_HDR", - "line_mode": "RK_AIQ_SENSOR_HDR_LINE_MODE_STAGGER" - }, - "CISDcgSet": { - "Linear": { - "support_en": 0, - "dcg_optype": "RK_AIQ_OP_MODE_AUTO", - "dcg_mode": { - "Coeff": [0, 0, 0] - }, - "dcg_ratio": 1, - "sync_switch": 0, - "lcg2hcg_gain_th": 32, - "hcg2lcg_gain_th": 16 - }, - "Hdr": { - "support_en": 0, - "dcg_optype": "RK_AIQ_OP_MODE_AUTO", - "dcg_mode": { - "Coeff": [0, 0, 0] - }, - "dcg_ratio": 3.5, - "sync_switch": 1, - "lcg2hcg_gain_th": 32, - "hcg2lcg_gain_th": 16 - } - }, - "CISExpUpdate": { - "Linear": { - "time_update": 2, - "gain_update": 2, - "dcg_update": 2 - }, - "Hdr": { - "time_update": 2, - "gain_update": 2, - "dcg_update": 1 - } - }, - "CISMinFps": 10, - "CISFlip": 3 - }, - "module_calib": { - "sensor_module": { - "FNumber": 1.6, - "EFL": 5.2, - "LensT": 90, - "IRCutT": 90 - } - }, - "main_scene": [{ - "name": "normal", - "sub_scene": [{ - "name": "day", - "scene_isp21": { - "ae_calib": { - "CommCtrl": { - "Enable": 1, - "AecRunInterval": 0, - "AecOpType": "RK_AIQ_OP_MODE_AUTO", - "HistStatsMode": "CAM_HISTV2_MODE_Y", - "RawStatsMode": "CAM_RAWSTATSV2_MODE_Y", - "YRangeMode": "CAM_YRANGEV2_MODE_FULL", - "AecGridWeight": [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 1, 1, 2, 5, 8, 8, 8, 8, 8, 8, 8, 8, 8, 5, 2, 1, 1, 2, 5, 8, 10, 10, 10, 10, 10, 10, 10, 8, 5, 2, 1, 1, 2, 5, 8, 10, 13, 13, 13, 13, 13, 10, 8, 5, 2, 1, 1, 2, 5, 8, 10, 13, 15, 15, 15, 13, 10, 8, 5, 2, 1, 1, 2, 5, 8, 10, 13, 15, 15, 15, 13, 10, 8, 5, 2, 1, 1, 2, 5, 8, 10, 13, 15, 15, 15, 13, 10, 8, 5, 2, 1, 1, 2, 5, 8, 10, 13, 13, 13, 13, 13, 10, 8, 5, 2, 1, 1, 2, 5, 8, 10, 10, 10, 10, 10, 10, 10, 8, 5, 2, 1, 1, 2, 5, 8, 8, 8, 8, 8, 8, 8, 8, 8, 5, 2, 1, 1, 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0], - "AecManualCtrl": { - "LinearAE": { - "ManualTimeEn": 1, - "ManualGainEn": 1, - "ManualIspDgainEn": 1, - "TimeValue": 0.02, - "GainValue": 6, - "IspDGainValue": 1 - }, - "HdrAE": { - "ManualTimeEn": 1, - "ManualGainEn": 1, - "ManualIspDgainEn": 1, - "TimeValue": [0.01, 0.02, 0.03], - "GainValue": [1, 1, 1], - "IspDGainValue": [1, 1, 1] - } - }, - "AecSpeed": { - "DampOver": 0.15, - "DampUnder": 0.45, - "DampDark2Bright": 0.15, - "DampBright2Dark": 0.45 - }, - "AecDelayFrmNum": { - "BlackDelay": 2, - "WhiteDelay": 2 - }, - "AecFrameRateMode": { - "isFpsFix": 1, - "FpsValue": 25 - }, - "AecAntiFlicker": { - "enable": 1, - "Frequency": "AECV2_FLICKER_FREQUENCY_50HZ", - "Mode": "AECV2_ANTIFLICKER_AUTO_MODE" - }, - "AecEnvLvCalib": { - "CalibFNumber": 1.6, - "CurveCoeff": [0.02859, 0.5972] - }, - "AecWinScale": { - "InRawWinScale": { - "h_offs": 0, - "v_offs": 0, - "h_size": 1, - "v_size": 1 - }, - "TmoRawWinScale": { - "h_offs": 0.1, - "v_offs": 0.1, - "h_size": 0.9, - "v_size": 0.9 - }, - "YuvWinScale": { - "h_offs": 0, - "v_offs": 0, - "h_size": 1, - "v_size": 1 - } - } - }, - "LinearAeCtrl": { - "RawStatsEn": 1, - "ToleranceIn": 10, - "ToleranceOut": 15, - "Evbias": 0, - "StrategyMode": "AECV2_STRATEGY_MODE_LOWLIGHT_PRIOR", - "InitExp": { - "InitTimeValue": 0.003, - "InitGainValue": 1, - "InitIspDGainValue": 1, - "InitPIrisGainValue": 512, - "InitDCIrisDutyValue": 100 - }, - "Route": { - "TimeDot": [0, 0.04, 0.04, 0.04, 0.04, 0.04], - "TimeDot_len": 6, - "GainDot": [1, 1, 4, 8, 15.5, 16], - "GainDot_len": 6, - "IspDGainDot": [1, 1, 1, 1, 1, 2], - "IspDGainDot_len": 6, - "PIrisDot": [512, 512, 512, 512, 512, 512], - "PIrisDot_len": 6 - }, - "DySetpoint": { - "ExpLevel": [0, 0.032, 0.064, 0.192, 0.32, 0.448], - "ExpLevel_len": 6, - "DySetpoint": [45, 45, 40, 38, 33, 30], - "DySetpoint_len": 6 - }, - "BackLightCtrl": { - "Enable": 0, - "StrBias": 0, - "MeasArea": "AECV2_MEASURE_AREA_AUTO", - "OEROILowTh": 150, - "LumaDistTh": 10, - "LvLowTh": 0.3125, - "LvHighTh": 7.5, - "BacklitSetPoint": { - "ExpLevel": [0.032, 0.064, 0.128, 0.192, 0.32, 0.448], - "ExpLevel_len": 6, - "NonOEPdfTh": [0.4, 0.45, 0.55, 0.65, 0.75, 1], - "NonOEPdfTh_len": 6, - "LowLightPdfTh": [0.2, 0.2, 0.22, 0.25, 0.3, 0.35], - "LowLightPdfTh_len": 6, - "TargetLLLuma": [25, 22, 20, 18, 15, 12], - "TargetLLLuma_len": 6 - } - }, - "OverExpCtrl": { - "Enable": 0, - "StrBias": 0, - "MaxWeight": 8, - "HighLightTh": 150, - "LowLightTh": 30, - "OverExpSetPoint": { - "OEpdf": [0.01, 0.02, 0.03, 0.04, 0.05, 0.07], - "OEpdf_len": 6, - "LowLightWeight": [1, 1, 1, 1, 1, 1], - "LowLightWeight_len": 6, - "HighLightWeight": [4, 3, 3, 3, 2, 2], - "HighLightWeight_len": 6 - } - } - }, - "HdrAeCtrl": { - "ToleranceIn": 10, - "ToleranceOut": 15, - "Evbias": 0, - "StrategyMode": "AECV2_STRATEGY_MODE_LOWLIGHT_PRIOR", - "LumaDistTh": 10, - "InitExp": { - "InitTimeValue": [0.0005, 0.003, 0.003], - "InitGainValue": [1, 1, 1], - "InitIspDGainValue": [1, 1, 1], - "InitPIrisGainValue": 512, - "InitDCIrisDutyValue": 100 - }, - "Route": { - "Frm0TimeDot": [0, 0.003, 0.003, 0.003, 0.003, 0.003], - "Frm0TimeDot_len": 6, - "Frm0GainDot": [1, 1, 4, 8, 15.5, 32], - "Frm0GainDot_len": 6, - "Frm0IspDGainDot": [1, 1, 1, 1, 1, 1], - "Frm0IspDGainDot_len": 6, - "Frm1TimeDot": [0, 0.03, 0.03, 0.03, 0.03, 0.03], - "Frm1TimeDot_len": 6, - "Frm1GainDot": [1, 1, 4, 8, 15.5, 64], - "Frm1GainDot_len": 6, - "Frm1IspDGainDot": [1, 1, 1, 1, 1, 1], - "Frm1IspDGainDot_len": 6, - "Frm2TimeDot": [0, 0.03, 0.03, 0.03, 0.03, 0.03], - "Frm2TimeDot_len": 6, - "Frm2GainDot": [1, 1, 4, 8, 15.5, 64], - "Frm2GainDot_len": 6, - "Frm2IspDGainDot": [1, 1, 1, 1, 1, 1], - "Frm2IspDGainDot_len": 6, - "PIrisDot": [512, 512, 512, 512, 512, 512], - "PIrisDot_len": 6 - }, - "ExpRatioCtrl": { - "ExpRatioType": "AECV2_HDR_RATIOTYPE_MODE_AUTO", - "ExpRatio": { - "RatioExpDot": [0, 0.1, 0.3, 0.5, 0.7, 1], - "RatioExpDot_len": 6, - "M2SRatioFix": [4, 4, 4, 4, 4, 4], - "M2SRatioFix_len": 6, - "L2MRatioFix": [4, 4, 4, 4, 4, 4], - "L2MRatioFix_len": 6, - "M2SRatioMax": [64, 64, 64, 64, 64, 64], - "M2SRatioMax_len": 6, - "L2MRatioMax": [32, 32, 30, 28, 26, 24], - "L2MRatioMax_len": 6 - } - }, - "LongFrmMode": { - "mode": "AECV2_HDR_LONGFRMMODE_NORMAL", - "SfrmMinLine": 2, - "LfrmModeExpTh": 0.62 - }, - "LframeCtrl": { - "OEROILowTh": 150, - "LvLowTh": 0.3125, - "LvHighTh": 7.5, - "LfrmSetPoint": { - "LExpLevel": [0, 0.0192, 0.0576, 0.096, 0.192, 0.384], - "LExpLevel_len": 6, - "NonOEPdfTh": [0.4, 0.45, 0.55, 0.65, 0.75, 1], - "NonOEPdfTh_len": 6, - "LowLightPdfTh": [0.2, 0.22, 0.25, 0.3, 0.35, 0.4], - "LowLightPdfTh_len": 6, - "LSetPoint": [75, 70, 65, 60, 45, 40], - "LSetPoint_len": 6, - "TargetLLLuma": [35, 32, 30, 28, 25, 20], - "TargetLLLuma_len": 6 - } - }, - "MframeCtrl": { - "MExpLevel": [0.096, 0.192, 0.384, 0.96, 1.344, 1.92], - "MExpLevel_len": 6, - "MSetPoint": [60, 60, 55, 50, 45, 40], - "MSetPoint_len": 6 - }, - "SframeCtrl": { - "HLROIExpandEn": 0, - "HLLumaTolerance": 12, - "SfrmSetPoint": { - "SExpLevel": [0, 0.0048, 0.0144, 0.024, 0.0384, 0.0576], - "SExpLevel_len": 6, - "SSetPoint": [18, 18, 15, 12, 12, 12], - "SSetPoint_len": 6, - "TargetHLLuma": [100, 100, 100, 90, 80, 70], - "TargetHLLuma_len": 6 - } - } - }, - "IrisCtrl": { - "Enable": 0, - "IrisType": "IRISV2_DC_TYPE", - "ManualEn": 0, - "ManualAttr": { - "PIrisGainValue": 1, - "DCIrisHoldValue": 30 - }, - "InitAttr": { - "PIrisGainValue": 512, - "DCIrisHoldValue": 100 - }, - "PIrisAttr": { - "TotalStep": 81, - "EffcStep": 44, - "ZeroIsMax": 1, - "StepTable": [512, 511, 506, 499, 491, 483, 474, 465, 456, 446, 437, 427, 417, 408, 398, 388, 378, 368, 359, 349, 339, 329, 319, 309, 300, 290, 280, 271, 261, 252, 242, 233, 224, 214, 205, 196, 187, 178, 170, 161, 153, 144, 136, 128, 120, 112, 105, 98, 90, 83, 77, 70, 64, 58, 52, 46, 41, 36, 31, 27, 23, 19, 16, 13, 10, 8, 6, 4, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - }, - "DCIrisAttr": { - "Kp": 0.5, - "Ki": 0.2, - "Kd": 0.3, - "MinPwmDuty": 0, - "MaxPwmDuty": 100, - "OpenPwmDuty": 40, - "ClosePwmDuty": 22 - } - }, - "SyncTest": { - "Enable": 0, - "IntervalFrm": 60, - "AlterExp": { - "LinearAE": [{ - "TimeValue": 0.02, - "GainValue": 1, - "IspDGainValue": 1, - "PIrisGainValue": 1, - "DcgMode": 0 - }, { - "TimeValue": 0.02, - "GainValue": 6, - "IspDGainValue": 1, - "PIrisGainValue": 29, - "DcgMode": 0 - }], - "LinearAE_len": 2, - "HdrAE": [{ - "TimeValue": [0.01, 0.02, 0.03], - "GainValue": [1, 1, 1], - "IspDGainValue": [1, 1, 1], - "PIrisGainValue": 1, - "DcgMode": [0, 0, 0] - }, { - "TimeValue": [0.01, 0.02, 0.03], - "GainValue": [6, 6, 1], - "IspDGainValue": [1, 1, 1], - "PIrisGainValue": 29, - "DcgMode": [0, 0, 0] - }], - "HdrAE_len": 2 - } - } - }, - "wb_v21": { - "control": { - "byPass": 0, - "mode": "CALIB_WB_MODE_AUTO" - }, - "manualPara": { - "mode": "CALIB_MWB_MODE_SCENE", - "cfg": { - "mwbGain": [1.31933, 1, 1, 2.50981], - "scene": "CALIB_WB_SCENE_CLOUDY_DAYLIGHT", - "cct": { - "CCT": 5000, - "CCRI": 0 - } - } - }, - "autoPara": { - "hdrPara": { - "frameChooseMode": "CALIB_AWB_HDR_FRAME_CHOOSE_MODE_MANUAL", - "frameChoose": 1 - }, - "lscBypassEnable": 0, - "uvDetectionEnable": 1, - "xyDetectionEnable": 1, - "yuvDetectionEnable": 1, - "lsUsedForYuvDet": ["A", "CWF", "D65", "TL84", "D50", "HZ", "D75"], - "lsUsedForYuvDet_len": 7, - "blkStatisticsEnable": 1, - "downScaleMode": "CALIB_AWB_DS_8X8", - "blkMeasureMode": "CALIB_AWB_BLK_STAT_MODE_ALL_V201", - "mainWindow": { - "mode": "CALIB_AWB_WINDOW_CFG_FIXED", - "window": [0, 0, 1, 1] - }, - "limitRange": { - "lumaValue": [0], - "lumaValue_len": 1, - "maxR": [230], - "maxR_len": 1, - "minR": [6], - "minR_len": 1, - "maxG": [230], - "maxG_len": 1, - "minG": [9], - "minG_len": 1, - "maxB": [230], - "maxB_len": 1, - "minB": [6], - "minB_len": 1, - "maxY": [210], - "maxY_len": 1, - "minY": [9], - "minY_len": 1 - }, - "rgb2TcsPara": { - "pseudoLuminanceWeight": [0.372935, 0.37602, 0.251045], - "rotationMat": [-0.589702, 0.807621, -0.326631, 0.807621, 0.589702, 0.560524, 0, 0, 1] - }, - "rgb2RotationYuvMat": [0.0351562, 0.136719, 0.0136719, 34.875, -0.0839844, 0.00195312, 0.0703125, 134.875, 0.046875, -0.0566406, 0.0507812, 109.812, 0, 0, 0, 1], - "extraWpRange": [{ - "domain": "CALIB_AWB_EXTRA_RANGE_DOMAIN_UV", - "mode": "CALIB_AWB_EXCLUDE_WP_MODE", - "region": [244, 249, 228, 211] - }, { - "domain": "CALIB_AWB_EXTRA_RANGE_DOMAIN_XY", - "mode": "CALIB_AWB_EXCLUDE_WP_MODE", - "region": [-1096, -985, 140, 65] - }, { - "domain": "CALIB_AWB_EXTRA_RANGE_DOMAIN_XY", - "mode": "CALIB_AWB_EXCLUDE_WP_MODE", - "region": [-40, 158, 121, 16] - }, { - "domain": "CALIB_AWB_EXTRA_RANGE_DOMAIN_XY", - "mode": "CALIB_AWB_EXCLUDE_WP_MODE", - "region": [-235, -40, 237, 80] - }, { - "domain": "CALIB_AWB_EXTRA_RANGE_DOMAIN_UV", - "mode": "CALIB_AWB_EXCLUDE_WP_MODE", - "region": [0, 0, 0, 0] - }, { - "domain": "CALIB_AWB_EXTRA_RANGE_DOMAIN_UV", - "mode": "CALIB_AWB_EXCLUDE_WP_MODE", - "region": [0, 0, 0, 0] - }, { - "domain": "CALIB_AWB_EXTRA_RANGE_DOMAIN_UV", - "mode": "CALIB_AWB_EXCLUDE_WP_MODE", - "region": [0, 0, 0, 0] - }], - "wpDiffLumaWeight": { - "enable": 1, - "wpDiffWeiEnableTh": { - "wpDiffWeiNoTh": 0.004, - "wpDiffWeiLvValueTh": 64 - }, - "wpDiffwei_y": [0, 16, 32, 64, 96, 128, 192, 224, 240], - "perfectBin": [0, 0, 0, 1, 1, 1, 1, 0], - "wpDiffWeightLvSet": [{ - "LvValue": 256, - "ratioSet": [{ - "ratioValue": 0, - "weight": [1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "ratioValue": 0.01, - "weight": [1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "ratioValue": 0.1, - "weight": [1, 1, 1, 1, 1, 1, 1, 1, 1] - }], - "ratioSet_len": 3 - }, { - "LvValue": 8192, - "ratioSet": [{ - "ratioValue": 0, - "weight": [1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "ratioValue": 0.01, - "weight": [1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "ratioValue": 0.1, - "weight": [0, 0, 0.2, 0.5, 1, 1, 1, 0.5, 0] - }], - "ratioSet_len": 3 - }], - "wpDiffWeightLvSet_len": 2 - }, - "wpDiffBlkWeiEnable": 1, - "wpDiffBlkWeight": [6, 6, 6, 8, 8, 8, 8, 10, 8, 8, 8, 8, 6, 6, 6, 6, 6, 8, 8, 10, 10, 12, 12, 12, 10, 10, 8, 8, 6, 6, 6, 8, 10, 12, 14, 16, 18, 20, 18, 16, 14, 12, 10, 8, 6, 8, 8, 12, 16, 22, 26, 30, 32, 30, 26, 22, 16, 12, 8, 8, 8, 10, 14, 22, 28, 36, 42, 46, 42, 36, 28, 22, 14, 10, 8, 8, 10, 16, 26, 36, 46, 54, 58, 54, 46, 36, 26, 16, 10, 8, 8, 12, 18, 30, 42, 54, 63, 63, 63, 54, 42, 30, 18, 12, 8, 10, 12, 20, 32, 46, 58, 63, 63, 63, 58, 46, 32, 20, 12, 10, 8, 12, 18, 30, 42, 54, 63, 63, 63, 54, 42, 30, 18, 12, 8, 8, 10, 16, 26, 36, 46, 54, 58, 54, 46, 36, 26, 16, 10, 8, 8, 10, 14, 22, 28, 36, 42, 46, 42, 36, 28, 22, 14, 10, 8, 8, 8, 12, 16, 22, 26, 30, 32, 30, 26, 22, 16, 12, 8, 8, 6, 8, 10, 12, 14, 16, 18, 20, 18, 16, 14, 12, 10, 8, 6, 6, 6, 8, 8, 10, 10, 12, 12, 12, 10, 10, 8, 8, 6, 6, 6, 6, 6, 8, 8, 8, 8, 10, 8, 8, 8, 8, 6, 6, 6], - "lightSources": [{ - "name": "A", - "doorType": "CALIB_AWB_DOOR_TYPE_INDOOR", - "standardGainValue": [1.31933, 1, 1, 2.50981], - "uvRegion": { - "u": [124.5, 54.5, 58.5, 125], - "v": [128, 114.5, 90.5, 127] - }, - "xyRegion": { - "normal": [-1.225, -0.73125, 0.0729253, -0.0435484], - "big": [-1.22875, -0.745, 0.092997, -0.0761649] - }, - "rtYuvRegion": { - "thcurve_u": [50, 54, 70, 78, 110, 142], - "thcure_th": [1.1875, 1.1875, 1.1875, 1.75, 2, 4], - "lineVector": [10, 140.875, 109.375, 186.688, 101.625, 110.5], - "disP1P2": 15 - }, - "staWeight": [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 90, 75], - "dayGainLvThSet": [1024, 8192], - "defaultDayGainLow": [1.76901, 1, 1, 2.15255], - "defaultDayGainHigh": [1.9499, 1, 1, 1.66695], - "xyType2Enable": 1 - }, { - "name": "CWF", - "doorType": "CALIB_AWB_DOOR_TYPE_INDOOR", - "standardGainValue": [1.76901, 1, 1, 2.15255], - "uvRegion": { - "u": [68.5, 74.5, 124, 123], - "v": [73.5, 60.5, 125, 125.5] - }, - "xyRegion": { - "normal": [-0.732778, -0.438333, 0.000487089, -0.0845602], - "big": [-0.737593, -0.43537, 0.0435897, -0.1] - }, - "rtYuvRegion": { - "thcurve_u": [50, 54, 70, 78, 110, 142], - "thcure_th": [1.125, 1.1875, 1.1875, 1.75, 2, 4], - "lineVector": [10, 137.812, 110.75, 190, 119.812, 103.938], - "disP1P2": 15 - }, - "staWeight": [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 70, 60, 50, 40], - "dayGainLvThSet": [1024, 8192], - "defaultDayGainLow": [1.76901, 1, 1, 2.15255], - "defaultDayGainHigh": [1.9499, 1, 1, 1.66695], - "xyType2Enable": 1 - }, { - "name": "D50", - "doorType": "CALIB_AWB_DOOR_TYPE_AMBIGUITY", - "standardGainValue": [1.9499, 1, 1, 1.66695], - "uvRegion": { - "u": [74, 94, 126, 124.5], - "v": [59.5, 53.5, 124.5, 125.5] - }, - "xyRegion": { - "normal": [-0.426481, -0.171667, 0.0682934, -0.0644886], - "big": [-0.427963, -0.179074, 0.088365, -0.0845602] - }, - "rtYuvRegion": { - "thcurve_u": [50, 54, 70, 78, 110, 142], - "thcure_th": [1.1875, 1.3125, 1.375, 1.75, 2, 4], - "lineVector": [10, 135.75, 110, 191, 132.938, 108.5], - "disP1P2": 15 - }, - "staWeight": [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100], - "dayGainLvThSet": [1024, 8192], - "defaultDayGainLow": [1.76901, 1, 1, 2.15255], - "defaultDayGainHigh": [1.9499, 1, 1, 1.66695], - "xyType2Enable": 1 - }, { - "name": "D65", - "doorType": "CALIB_AWB_DOOR_TYPE_OUTDOOR", - "standardGainValue": [2.18207, 1, 1, 1.45549], - "uvRegion": { - "u": [94, 112.5, 127.5, 126], - "v": [53.5, 48.5, 121, 124] - }, - "xyRegion": { - "normal": [-0.176111, 0.0712963, 0.0875931, -0.104632], - "big": [-0.186481, 0.0801852, 0.136228, -0.171023] - }, - "rtYuvRegion": { - "thcurve_u": [50, 54, 70, 78, 110, 142], - "thcure_th": [1.1875, 1.5, 1.5, 1.8125, 2, 4], - "lineVector": [10, 133.812, 109.625, 190.75, 143.812, 109.625], - "disP1P2": 15 - }, - "staWeight": [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 90, 80, 70], - "dayGainLvThSet": [1024, 8192], - "defaultDayGainLow": [1.76901, 1, 1, 2.15255], - "defaultDayGainHigh": [1.9499, 1, 1, 1.66695], - "xyType2Enable": 1 - }, { - "name": "D75", - "doorType": "CALIB_AWB_DOOR_TYPE_OUTDOOR", - "standardGainValue": [2.32318, 1, 1, 1.35032], - "uvRegion": { - "u": [131.5, 127, 112.5, 129.5], - "v": [121, 122.5, 48.5, 43.5] - }, - "xyRegion": { - "normal": [0.0835185, 0.369074, 0.0962136, -0.0938241], - "big": [0.0787037, 0.375, 0.142404, -0.181831] - }, - "rtYuvRegion": { - "thcurve_u": [50, 54, 70, 78, 110, 142], - "thcure_th": [1.1875, 1.3125, 1.5, 1.75, 2, 4], - "lineVector": [10, 132.688, 109.875, 190.25, 149.625, 110.688], - "disP1P2": 15 - }, - "staWeight": [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 90, 80, 70, 50], - "dayGainLvThSet": [1024, 8192], - "defaultDayGainLow": [1.76901, 1, 1, 2.15255], - "defaultDayGainHigh": [1.9499, 1, 1, 1.66695], - "xyType2Enable": 1 - }, { - "name": "HZ", - "doorType": "CALIB_AWB_DOOR_TYPE_INDOOR", - "standardGainValue": [1.05376, 1, 1, 2.97437], - "uvRegion": { - "u": [123.5, 57.5, 55.5, 124.5], - "v": [130.5, 140, 113.5, 128] - }, - "xyRegion": { - "normal": [-1.96056, -1.23625, 0.089909, -0.0310036], - "big": [-1.96278, -1.22944, 0.100717, -0.0837883] - }, - "rtYuvRegion": { - "thcurve_u": [50, 54, 70, 78, 110, 142], - "thcure_th": [1.1875, 1.3125, 1.3125, 1.75, 2, 4], - "lineVector": [10, 143.625, 108.562, 181.688, 86.5625, 115.438], - "disP1P2": 15 - }, - "staWeight": [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 90, 75, 50], - "dayGainLvThSet": [1024, 8192], - "defaultDayGainLow": [1.76901, 1, 1, 2.15255], - "defaultDayGainHigh": [1.9499, 1, 1, 1.66695], - "xyType2Enable": 1 - }, { - "name": "TL84", - "doorType": "CALIB_AWB_DOOR_TYPE_INDOOR", - "standardGainValue": [1.71132, 1, 1, 2.14938], - "uvRegion": { - "u": [124, 58, 68.5, 124.5], - "v": [126.5, 90, 73.5, 125.5] - }, - "xyRegion": { - "normal": [-0.728333, -0.433889, 0.0529823, -0.038241], - "big": [-0.73875, -0.433889, 0.088365, -0.066129] - }, - "rtYuvRegion": { - "thcurve_u": [50, 54, 70, 78, 110, 142], - "thcure_th": [1.1875, 1.1875, 1.3125, 1.75, 2, 4], - "lineVector": [10, 138.062, 110.062, 189.875, 118.312, 106.188], - "disP1P2": 15 - }, - "staWeight": [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 90, 80, 70, 60, 60], - "dayGainLvThSet": [1024, 8192], - "defaultDayGainLow": [1.76901, 1, 1, 2.15255], - "defaultDayGainHigh": [1.9499, 1, 1, 1.66695], - "xyType2Enable": 1 - }], - "lightSources_len": 7 - }, - "autoExtPara": { - "lightSourceForFirstFrame": "D50", - "tolerance": { - "lumaValue": [256, 512, 32768, 131072], - "lumaValue_len": 4, - "toleranceValue": [0, 0, 0, 0], - "toleranceValue_len": 4 - }, - "runInterval": { - "lumaValue": [256, 512, 32768, 131072], - "lumaValue_len": 4, - "intervalValue": [0, 0, 0, 0], - "intervalValue_len": 4 - }, - "dampFactor": { - "dFStep": 0.05, - "dFMin": 0.7, - "dFMax": 0.9, - "lvIIRsize": 4, - "lvVarTh": 0.04 - }, - "wbGainAdjust": { - "enable": 0, - "lutAll": [{ - "lumaValue": 128, - "ct_grid_num": 7, - "cri_grid_num": 9, - "ct_in_range": [2000, 8000], - "cri_in_range": [-1, 1], - "ct_lut_out": [2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000], - "ct_lut_out_len": 63, - "cri_lut_out": [-1, -1, -1, -1, -1, -1, -1, -0.75, -0.75, -0.75, -0.75, -0.75, -0.75, -0.75, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, 0, 0, 0, 0, 0, 0, 0, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 1, 1, 1, 1, 1, 1, 1], - "cri_lut_out_len": 63 - }, { - "lumaValue": 8192, - "ct_grid_num": 7, - "cri_grid_num": 9, - "ct_in_range": [2000, 8000], - "cri_in_range": [-1, 1], - "ct_lut_out": [2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000], - "ct_lut_out_len": 63, - "cri_lut_out": [-1, -1, -1, -1, -1, -1, -1, -0.75, -0.75, -0.75, -0.75, -0.75, -0.75, -0.75, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, 0, 0, 0, 0, 0, 0, 0, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 1, 1, 1, 1, 1, 1, 1], - "cri_lut_out_len": 63 - }, { - "lumaValue": 65536, - "ct_grid_num": 7, - "cri_grid_num": 9, - "ct_in_range": [2000, 8000], - "cri_in_range": [-1, 1], - "ct_lut_out": [2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 2000, 3000, 4000, 5000, 6000, 7000, 8000], - "ct_lut_out_len": 63, - "cri_lut_out": [-1, -1, -1, -1, -1, -1, -1, -0.75, -0.75, -0.75, -0.75, -0.75, -0.75, -0.75, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, 0, 0, 0, 0, 0, 0, 0, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 1, 1, 1, 1, 1, 1, 1], - "cri_lut_out_len": 63 - }], - "lutAll_len": 3 - }, - "wbGainDaylightClip": { - "enable": 0, - "outdoor_cct_min": 5000 - }, - "wbGainClip": { - "enable": 0, - "cct": [1000, 2856, 4100, 6500, 7500], - "cct_len": 5, - "cri_bound_up": [0.091, 0.091, 0.18, 0.12, 0.12], - "cri_bound_up_len": 5, - "cri_bound_low": [0.07, 0.07, 0.16, 0.16, 0.16], - "cri_bound_low_len": 5 - }, - "division": { - "lumaValThLow": 110, - "lumaValThLow2": 200, - "lumaValThHigh": 65536, - "lumaValThHigh2": 65600, - "wpNumTh": { - "lumaValue": [0], - "lumaValue_len": 1, - "low": [50], - "low_len": 1, - "high": [80], - "high_len": 1 - } - }, - "defaultNightGain": [1.31933, 1, 1, 2.50981], - "lumaValueMatrix": [0, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144], - "defaultNightGainWeight": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "probCalcDis": { - "proDis_THH": 4.6124, - "proDis_THL": 0.0269 - }, - "probCalcLv": { - "outdoorLumaValThLow": 30000, - "outdoorLumaValThHigh": 45745 - }, - "probCalcWp": { - "wpNumPercTh": 0.031, - "wpNumPercTh2": 0.2 - }, - "converged": { - "varThforUnDamp": 0.005, - "varThforDamp": 0.005 - }, - "xyRegionStableSelection": { - "enable": 1, - "wpNumTh": { - "lumaValue": [0], - "lumaValue_len": 1, - "forBigType": [80], - "forBigType_len": 1, - "forExtraType": [80], - "forExtraType_len": 1 - }, - "xyTypeListSize": 50, - "varianceLumaTh": 0.06 - }, - "weightForNightGainCalc": [25, 25, 25, 25], - "weightForNightGainCalc_len": 4, - "singleColorProces": { - "enable": 1, - "colorBlock": [{ - "index": 15, - "meanC": 26.1455, - "meanH": 30.4796 - }, { - "index": 13, - "meanC": 24.607, - "meanH": -75.964 - }, { - "index": 5, - "meanC": 10.9565, - "meanH": -67.7098 - }, { - "index": 10, - "meanC": 11.9595, - "meanH": -41.2431 - }, { - "index": 14, - "meanC": 19.0206, - "meanH": 144.275 - }, { - "index": 16, - "meanC": 30.264, - "meanH": 88.699 - }], - "colorBlock_len": 6, - "lsUsedForEstimation": [{ - "name": "A", - "RGain": 1.31933, - "BGain": 2.50981 - }, { - "name": "TL84", - "RGain": 1.9499, - "BGain": 1.66695 - }, { - "name": "D50", - "RGain": 1.71132, - "BGain": 2.14938 - }], - "lsUsedForEstimation_len": 3, - "alpha": 0.9 - }, - "lineRgBg": [-0.8395, -0.5434, -2.741], - "lineRgProjCCT": [1, -0.0003, 0.4559], - "chrAdpttAdj": { - "enable": 0, - "targetGain": [2.2099, 1, 1, 1.6302], - "laCalcFactor": 40 - }, - "remosaicCfg": { - "enable": 0, - "applyInvWbGainEnable": 1, - "sensorWbGain": [1, 1, 1, 1] - }, - "wbGainOffset": { - "enable": 0, - "offset": [0, 0, 0, 0] - } - } - }, - "agamma_calib": { - "GammaTuningPara": { - "Gamma_en": 1, - "Gamma_out_segnum": "GAMMATYPE_LOG", - "Gamma_out_offset": 0, - "Gamma_curve": [0, 6, 11, 17, 22, 28, 33, 39, 44, 55, 66, 77, 88, 109, 130, 150, 170, 210, 248, 286, 323, 393, 460, 525, 586, 702, 809, 909, 1002, 1172, 1325, 1462, 1588, 1811, 2004, 2174, 2327, 2590, 2813, 3006, 3177, 3467, 3708, 3915, 4095] - } - }, - "ablc_calib": { - "BlcTuningPara": { - "enable": 1, - "BLC_Data": { - "ISO": [50, 100, 200, 400, 800, 1600, 3200, 10000, 12800, 25600, 51200, 102400, 204800], - "ISO_len": 13, - "R_Channel": [255, 253, 255, 255, 254, 256, 256, 256, 256, 256, 256, 256, 256], - "R_Channel_len": 13, - "Gr_Channel": [256, 254, 256, 256, 257, 256, 256, 256, 256, 256, 256, 256, 256], - "Gr_Channel_len": 13, - "Gb_Channel": [256, 254, 256, 256, 257, 256, 256, 256, 256, 256, 256, 256, 256], - "Gb_Channel_len": 13, - "B_Channel": [255, 253, 255, 254, 254, 256, 256, 256, 256, 256, 256, 256, 256], - "B_Channel_len": 13 - } - } - }, - "adegamma_calib": { - "DegammaTuningPara": { - "degamma_en": 0, - "X_axis": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "curve_R": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "curve_G": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "curve_B": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - } - }, - "agic_calib_v21": { - "GicTuningPara": { - "enable": 0, - "gr_ration": 0, - "GicData": { - "ISO": [50, 100, 200, 400, 800, 1600, 3200, 6400, 12800], - "ISO_len": 9, - "min_busy_thre": [40, 40, 40, 40, 40, 40, 40, 40, 40], - "min_busy_thre_len": 9, - "min_grad_thr1": [16, 16, 16, 16, 16, 16, 16, 16, 16], - "min_grad_thr1_len": 9, - "min_grad_thr2": [8, 8, 8, 8, 8, 8, 8, 8, 8], - "min_grad_thr2_len": 9, - "k_grad1": [64, 64, 64, 64, 64, 64, 64, 64, 64], - "k_grad1_len": 9, - "k_grad2": [2, 2, 2, 2, 2, 2, 2, 2, 2], - "k_grad2_len": 9, - "gb_thre": [32, 32, 32, 32, 32, 32, 32, 32, 32], - "gb_thre_len": 9, - "maxCorV": [10, 10, 10, 10, 10, 10, 10, 10, 10], - "maxCorV_len": 9, - "maxCorVboth": [20, 20, 20, 20, 20, 20, 20, 20, 20], - "maxCorVboth_len": 9, - "dark_thre": [120, 120, 120, 120, 120, 120, 120, 120, 120], - "dark_thre_len": 9, - "dark_threHi": [240, 240, 240, 240, 240, 240, 240, 240, 240], - "dark_threHi_len": 9, - "k_grad1_dark": [64, 64, 64, 64, 64, 64, 64, 64, 64], - "k_grad1_dark_len": 9, - "k_grad2_dark": [2, 2, 2, 2, 2, 2, 2, 2, 2], - "k_grad2_dark_len": 9, - "min_grad_thr_dark1": [16, 16, 16, 16, 16, 16, 16, 16, 16], - "min_grad_thr_dark1_len": 9, - "min_grad_thr_dark2": [8, 8, 8, 8, 8, 8, 8, 8, 8], - "min_grad_thr_dark2_len": 9, - "noiseCurve_0": [0, 0, 0, 0, 0, 0, 0, 0, 0], - "noiseCurve_0_len": 9, - "noiseCurve_1": [0, 0, 0, 0, 0, 0, 0, 0, 0], - "noiseCurve_1_len": 9, - "NoiseScale": [0, 0, 0, 0, 0, 0, 0, 0, 0], - "NoiseScale_len": 9, - "NoiseBase": [0, 0, 0, 0, 0, 0, 0, 0, 0], - "NoiseBase_len": 9, - "globalStrength": [1, 1, 1, 1, 1, 1, 1, 1, 1], - "globalStrength_len": 9, - "diff_clip": [32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767], - "diff_clip_len": 9 - } - } - }, - "adehaze_calib_v21": { - "DehazeTuningPara": { - "Enable": 1, - "cfg_alpha": 0, - "ByPassThr": 0, - "dehaze_setting": { - "en": 0, - "air_lc_en": 1, - "stab_fnum": 8, - "sigma": 6, - "wt_sigma": 8, - "air_sigma": 120, - "tmax_sigma": 0.01, - "pre_wet": 0.01, - "DehazeData": { - "EnvLv": [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.7, 0.9, 1], - "EnvLv_len": 9, - "dc_min_th": [64, 64, 64, 64, 64, 64, 64, 64, 64], - "dc_min_th_len": 9, - "dc_max_th": [192, 192, 192, 192, 192, 192, 192, 192, 192], - "dc_max_th_len": 9, - "yhist_th": [249, 249, 249, 249, 249, 249, 249, 249, 249], - "yhist_th_len": 9, - "yblk_th": [0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002], - "yblk_th_len": 9, - "dark_th": [250, 250, 250, 250, 250, 250, 250, 250, 250], - "dark_th_len": 9, - "bright_min": [180, 180, 180, 180, 180, 180, 180, 180, 180], - "bright_min_len": 9, - "bright_max": [240, 240, 240, 240, 240, 240, 240, 240, 240], - "bright_max_len": 9, - "wt_max": [0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9], - "wt_max_len": 9, - "air_min": [200, 200, 200, 200, 200, 200, 200, 200, 200], - "air_min_len": 9, - "air_max": [250, 250, 250, 250, 250, 250, 250, 250, 250], - "air_max_len": 9, - "tmax_base": [125, 125, 125, 125, 125, 125, 125, 125, 125], - "tmax_base_len": 9, - "tmax_off": [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], - "tmax_off_len": 9, - "tmax_max": [0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8], - "tmax_max_len": 9, - "cfg_wt": [0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8], - "cfg_wt_len": 9, - "cfg_air": [210, 210, 210, 210, 210, 210, 210, 210, 210], - "cfg_air_len": 9, - "cfg_tmax": [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], - "cfg_tmax_len": 9, - "dc_weitcur": [1, 1, 1, 1, 1, 1, 1, 1, 1], - "dc_weitcur_len": 9, - "bf_weight": [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], - "bf_weight_len": 9, - "range_sigma": [0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14], - "range_sigma_len": 9, - "space_sigma_pre": [0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14], - "space_sigma_pre_len": 9, - "space_sigma_cur": [0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14], - "space_sigma_cur_len": 9 - } - }, - "enhance_setting": { - "en": 1, - "enhance_curve": [0, 64, 128, 192, 256, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960, 1023], - "EnhanceData": { - "EnvLv": [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.7, 0.9, 1], - "EnvLv_len": 9, - "enhance_value": [1.15, 1.15, 1.15, 1.12, 1.12, 1.12, 1.1, 1.1, 1], - "enhance_value_len": 9, - "enhance_chroma": [1.5, 1.4, 1.3, 1.2, 1.2, 1.2, 1.1, 1.1, 1], - "enhance_chroma_len": 9 - } - }, - "hist_setting": { - "en": 0, - "hist_para_en": 1, - "HistData": { - "EnvLv": [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.7, 0.9, 1], - "EnvLv_len": 9, - "hist_gratio": [2, 2, 2, 2, 2, 2, 2, 2, 2], - "hist_gratio_len": 9, - "hist_th_off": [64, 64, 64, 64, 64, 64, 64, 64, 64], - "hist_th_off_len": 9, - "hist_k": [2, 2, 2, 2, 2, 2, 2, 2, 2], - "hist_k_len": 9, - "hist_min": [0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015], - "hist_min_len": 9, - "hist_scale": [0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09], - "hist_scale_len": 9, - "cfg_gratio": [2, 2, 2, 2, 2, 2, 2, 2, 2], - "cfg_gratio_len": 9 - } - } - } - }, - "adpcc_calib": { - "DpccTuningPara": { - "Enable": 1, - "Fast_Mode": { - "Fast_mode_en": 0, - "Single_enable": 0, - "Double_enable": 0, - "Triple_enable": 0, - "Fast_Data": { - "ISO": [50, 100, 200, 400, 800, 1600, 3200, 6400, 12800, 25600, 51200, 102400, 204800], - "ISO_len": 13, - "Single_level": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "Single_level_len": 13, - "Double_level": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "Double_level_len": 13, - "Triple_level": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "Triple_level_len": 13 - } - }, - "Expert_Mode": { - "stage1_Enable": 1, - "grayscale_mode": 0, - "dpcc_out_sel": 1, - "stage1_g_3x3": 0, - "stage1_rb_3x3": 0, - "stage1_inc_rb_center": 1, - "stage1_inc_g_center": 1, - "rk_out_sel": 1, - "SetEnable": { - "ISO": [50, 100, 200, 400, 800, 1500, 1507, 1510, 3200, 6400, 12800, 102400, 204800], - "fix_set": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "set1": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "set2": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "set3": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - }, - "set1": { - "RK": { - "RK_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_sw_mindis": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "g_sw_mindis": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "sw_dis_scale_min": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "sw_dis_scale_max": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - }, - "LC": { - "LC_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_line_thr": [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8], - "g_line_thr": [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8], - "rb_line_mad_fac": [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], - "g_line_mad_fac": [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4] - }, - "PG": { - "PG_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_pg_fac": [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], - "g_pg_fac": [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3] - }, - "RND": { - "RND_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_rnd_thr": [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10], - "g_rnd_thr": [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10], - "rb_rnd_offs": [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], - "g_rnd_offs": [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3] - }, - "RG": { - "RG_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_rg_fac": [32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32], - "g_rg_fac": [32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32] - }, - "RO": { - "RO_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_ro_lim": [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], - "g_ro_lim": [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2] - } - }, - "set2": { - "RK": { - "RK_enable": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "rb_sw_mindis": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "g_sw_mindis": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "sw_dis_scale_min": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "sw_dis_scale_max": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - }, - "LC": { - "LC_enable": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "rb_line_thr": [16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16], - "g_line_thr": [24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24], - "rb_line_mad_fac": [16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16], - "g_line_mad_fac": [12, 12, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, - "PG": { - "PG_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_pg_fac": [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], - "g_pg_fac": [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3] - }, - "RND": { - "RND_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_rnd_thr": [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8], - "g_rnd_thr": [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8], - "rb_rnd_offs": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "g_rnd_offs": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - }, - "RG": { - "RG_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_rg_fac": [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8], - "g_rg_fac": [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8] - }, - "RO": { - "RO_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_ro_lim": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "g_ro_lim": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - } - }, - "set3": { - "RK": { - "RK_enable": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "rb_sw_mindis": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "g_sw_mindis": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "sw_dis_scale_min": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "sw_dis_scale_max": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - }, - "LC": { - "LC_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_line_thr": [32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32], - "g_line_thr": [32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32], - "rb_line_mad_fac": [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], - "g_line_mad_fac": [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4] - }, - "PG": { - "PG_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_pg_fac": [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], - "g_pg_fac": [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3] - }, - "RND": { - "RND_enable": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "rb_rnd_thr": [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8], - "g_rnd_thr": [6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6], - "rb_rnd_offs": [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], - "g_rnd_offs": [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3] - }, - "RG": { - "RG_enable": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "rb_rg_fac": [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], - "g_rg_fac": [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4] - }, - "RO": { - "RO_enable": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "rb_ro_lim": [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], - "g_ro_lim": [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2] - } - } - }, - "Dpcc_pdaf": { - "en": 0, - "point_en": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "offsetx": 0, - "offsety": 0, - "wrapx": 0, - "wrapy": 0, - "wrapx_num": 0, - "wrapy_num": 0, - "point_x": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "point_y": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "forward_med": 0 - }, - "Sensor_dpcc": { - "sensor_dpcc_auto_en": 0, - "max_level": 20, - "SensorDpcc_Data": { - "ISO": [50, 100, 200, 400, 800, 1500, 1507, 1510, 3200, 6400, 12800, 102400, 204800], - "ISO_len": 13, - "level_single": [19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19], - "level_single_len": 13, - "level_multiple": [19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19], - "level_multiple_len": 13 - } - } - } - }, - "amerge_calib": { - "MergeTuningPara": { - "OECurve": { - "EnvLv": [0, 0.005, 0.01, 0.05, 0.1, 0.15, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 1], - "EnvLv_len": 13, - "Smooth": [0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4], - "Smooth_len": 13, - "Offset": [210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210], - "Offset_len": 13 - }, - "MDCurve": { - "MoveCoef": [0, 0.005, 0.01, 0.05, 0.1, 0.15, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 1], - "MoveCoef_len": 13, - "LM_smooth": [0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4], - "LM_smooth_len": 13, - "LM_offset": [0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38], - "LM_offset_len": 13, - "MS_smooth": [0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4], - "MS_smooth_len": 13, - "MS_offset": [0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38, 0.38], - "MS_offset_len": 13 - }, - "ByPassThr": 0, - "OECurve_damp": 0.3, - "MDCurveLM_damp": 0.3, - "MDCurveMS_damp": 0.3 - } - }, - "adrc_calib": { - "DrcTuningPara": { - "Enable": 0, - "DrcGain": { - "EnvLv": [0, 0.005, 0.01, 0.05, 0.1, 0.15, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 1], - "EnvLv_len": 13, - "DrcGain": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "DrcGain_len": 13, - "Alpha": [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], - "Alpha_len": 13, - "Clip": [16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16], - "Clip_len": 13 - }, - "HiLight": { - "EnvLv": [0, 0.005, 0.01, 0.05, 0.1, 0.15, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 1], - "EnvLv_len": 13, - "Strength": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "Strength_len": 13 - }, - "LocalTMOSetting": { - "LocalTMOData": { - "EnvLv": [0, 0.005, 0.01, 0.05, 0.1, 0.15, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 1], - "EnvLv_len": 13, - "LocalWeit": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - "LocalWeit_len": 13, - "GlobalContrast": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "GlobalContrast_len": 13, - "LoLitContrast": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "LoLitContrast_len": 13 - }, - "curPixWeit": 0.376471, - "preFrameWeit": 1, - "Range_force_sgm": 0, - "Range_sgm_cur": 0.125015, - "Range_sgm_pre": 0.125015, - "Space_sgm_cur": 4068, - "Space_sgm_pre": 3968 - }, - "CompressSetting": { - "Mode": "COMPRESS_AUTO", - "Manual_curve": [0, 558, 1087, 1588, 2063, 2515, 2944, 3353, 3744, 4473, 5139, 5751, 6316, 6838, 7322, 7772, 8192] - }, - "Scale_y": [0, 2, 20, 76, 193, 381, 631, 772, 919, 1066, 1211, 1479, 1700, 1863, 1968, 2024, 2048], - "ByPassThr": 0, - "Edge_Weit": 0.0627451, - "OutPutLongFrame": 0, - "IIR_frame": 16, - "Tolerance": 0, - "damp": 0.9 - } - }, - "cpsl": { - "param": { - "enable": 1, - "mode": "RK_AIQ_OP_MODE_AUTO", - "force_gray": 1, - "light_src": "LED", - "auto_adjust_sens": 50, - "auto_on2off_th": 3000, - "auto_off2on_th": 100, - "auto_sw_interval": 0, - "manual_on": 0, - "manual_strength": 100 - } - }, - "orb": { - "param": { - "orb_en": 0 - } - }, - "debayer": { - "param": { - "debayer_en": 1, - "debayer_filter1": [2, -6, 0, 6, -2], - "debayer_filter2": [2, -4, 4, -4, 2], - "debayer_gain_offset": 4, - "debayer_offset": 1, - "debayer_clip_en": 1, - "debayer_filter_g_en": 1, - "debayer_filter_c_en": 1, - "debayer_thed0": 3, - "debayer_thed1": 6, - "debayer_dist_scale": 8, - "debayer_cnr_strength": 5, - "debayer_shift_num": 2, - "array": { - "ISO": [50, 100, 200, 400, 800, 1600, 3200, 6400, 12800], - "sharp_strength": [4, 4, 4, 4, 4, 4, 4, 4, 4], - "debayer_hf_offset": [1, 1, 1, 1, 1, 1, 1, 1, 1] - } - } - }, - "cproc": { - "param": { - "enable": 1, - "brightness": 128, - "contrast": 128, - "saturation": 128, - "hue": 128 - } - }, - "ie": { - "param": { - "enable": 0, - "mode": 0 - } - }, - "lsc_v2": { - "common": { - "enable": 1, - "resolutionAll": [{ - "name": "3264x2448", - "lsc_sect_size_x": [204, 204, 204, 204, 204, 204, 204, 204], - "lsc_sect_size_y": [153, 153, 153, 153, 153, 153, 153, 153] - }], - "resolutionAll_len": 1 - }, - "alscCoef": { - "damp_enable": 1, - "illAll": [{ - "usedForCase": 0, - "name": "A", - "wbGain": [1.2422, 2.5859], - "tableUsed": [{ - "name": "A_100" - }, { - "name": "A_70" - }], - "tableUsed_len": 2, - "gains": [1, 4, 6, 8], - "gains_len": 4, - "vig": [100, 100, 90, 70], - "vig_len": 4 - }, { - "usedForCase": 0, - "name": "CWF", - "wbGain": [1.7163, 2.2709], - "tableUsed": [{ - "name": "CWF_100" - }, { - "name": "CWF_70" - }], - "tableUsed_len": 2, - "gains": [1, 4, 6, 8], - "gains_len": 4, - "vig": [100, 100, 90, 70], - "vig_len": 4 - }, { - "usedForCase": 0, - "name": "D50", - "wbGain": [2.0413, 1.565], - "tableUsed": [{ - "name": "D50_100" - }, { - "name": "D50_70" - }], - "tableUsed_len": 2, - "gains": [1, 4, 6, 8], - "gains_len": 4, - "vig": [100, 100, 80, 70], - "vig_len": 4 - }, { - "usedForCase": 0, - "name": "D65", - "wbGain": [2.1927, 1.4514], - "tableUsed": [{ - "name": "D65_100" - }, { - "name": "D65_70" - }], - "tableUsed_len": 2, - "gains": [1, 4, 6, 8], - "gains_len": 4, - "vig": [90, 85, 80, 70], - "vig_len": 4 - }, { - "usedForCase": 0, - "name": "D75", - "wbGain": [2.3467, 1.323], - "tableUsed": [{ - "name": "D75_100" - }, { - "name": "D75_70" - }], - "tableUsed_len": 2, - "gains": [1, 4, 6, 8], - "gains_len": 4, - "vig": [90, 85, 80, 70], - "vig_len": 4 - }, { - "usedForCase": 0, - "name": "HZ", - "wbGain": [0.9985, 3.0212], - "tableUsed": [{ - "name": "HZ_100" - }, { - "name": "HZ_70" - }], - "tableUsed_len": 2, - "gains": [1, 4, 6, 8], - "gains_len": 4, - "vig": [100, 100, 90, 70], - "vig_len": 4 - }, { - "usedForCase": 0, - "name": "TL84", - "wbGain": [1.622, 2.3057], - "tableUsed": [{ - "name": "TL84_100" - }, { - "name": "TL84_70" - }], - "tableUsed_len": 2, - "gains": [1, 4, 6, 8], - "gains_len": 4, - "vig": [100, 100, 90, 70], - "vig_len": 4 - }, { - "usedForCase": 2, - "name": "GRAY", - "wbGain": [1, 1], - "tableUsed": [{ - "name": "GRAY_0" - }], - "tableUsed_len": 1, - "gains": [1, 10, 31, 64], - "gains_len": 4, - "vig": [90, 60, 25, 0], - "vig_len": 4 - }], - "illAll_len": 8 - }, - "tbl": { - "tableAll": [{ - "name": "3264x2448_A_100", - "resolution": "3264x2448", - "illumination": "A", - "vignetting": 100, - "lsc_samples_red": { - "uCoeff": [4126, 3298, 2812, 2502, 2280, 2072, 1924, 1846, 1834, 1846, 1936, 2044, 2254, 2420, 2746, 3157, 4070, 3621, 3012, 2601, 2334, 2080, 1887, 1737, 1645, 1614, 1645, 1732, 1869, 2037, 2263, 2534, 2880, 3513, 3316, 2785, 2430, 2147, 1881, 1688, 1567, 1473, 1448, 1470, 1559, 1678, 1869, 2072, 2353, 2696, 3191, 3140, 2613, 2280, 1975, 1748, 1550, 1403, 1322, 1298, 1319, 1407, 1542, 1717, 1943, 2195, 2545, 3012, 3027, 2471, 2179, 1869, 1627, 1430, 1298, 1223, 1189, 1216, 1293, 1427, 1597, 1846, 2117, 2410, 2894, 2894, 2410, 2058, 1785, 1526, 1337, 1201, 1130, 1108, 1119, 1211, 1337, 1526, 1748, 2009, 2316, 2825, 2812, 2334, 2002, 1712, 1451, 1271, 1149, 1076, 1057, 1074, 1141, 1284, 1455, 1673, 1949, 2271, 2672, 2812, 2289, 1969, 1678, 1434, 1249, 1115, 1055, 1031, 1049, 1128, 1231, 1427, 1650, 1918, 2271, 2672, 2825, 2325, 1982, 1683, 1437, 1236, 1117, 1044, 1024, 1044, 1119, 1236, 1427, 1650, 1956, 2254, 2660, 2825, 2334, 2002, 1712, 1462, 1273, 1147, 1080, 1049, 1074, 1132, 1265, 1459, 1693, 1949, 2271, 2708, 2866, 2381, 2065, 1774, 1530, 1334, 1211, 1125, 1100, 1113, 1191, 1316, 1499, 1748, 2002, 2334, 2785, 3027, 2471, 2163, 1875, 1627, 1434, 1279, 1194, 1186, 1198, 1282, 1403, 1588, 1840, 2102, 2430, 2937, 3226, 2601, 2298, 1956, 1742, 1530, 1397, 1313, 1284, 1313, 1400, 1538, 1702, 1943, 2237, 2567, 3075, 3432, 2825, 2430, 2109, 1875, 1688, 1542, 1459, 1430, 1462, 1538, 1669, 1834, 2094, 2362, 2672, 3261, 3666, 2982, 2590, 2325, 2051, 1875, 1737, 1645, 1610, 1645, 1722, 1863, 2016, 2280, 2545, 2894, 3452, 4070, 3279, 2825, 2523, 2280, 2065, 1930, 1869, 1817, 1840, 1924, 2065, 2212, 2460, 2759, 3174, 4042, 5511, 3712, 3174, 2838, 2590, 2353, 2220, 2163, 2124, 2132, 2179, 2325, 2513, 2772, 3140, 3534, 5313] - }, - "lsc_samples_greenR": { - "uCoeff": [3693, 2996, 2530, 2306, 2054, 1929, 1805, 1724, 1696, 1708, 1801, 1879, 2025, 2196, 2421, 2834, 3566, 3264, 2749, 2366, 2107, 1899, 1753, 1654, 1576, 1559, 1569, 1636, 1737, 1865, 2031, 2271, 2611, 3059, 3021, 2530, 2202, 1976, 1770, 1618, 1507, 1434, 1401, 1417, 1486, 1593, 1720, 1889, 2089, 2405, 2890, 2812, 2351, 2071, 1837, 1650, 1486, 1385, 1315, 1278, 1303, 1359, 1459, 1618, 1779, 2003, 2264, 2649, 2649, 2257, 1976, 1733, 1542, 1398, 1274, 1203, 1183, 1201, 1256, 1369, 1504, 1681, 1904, 2157, 2556, 2593, 2163, 1889, 1654, 1451, 1289, 1191, 1128, 1099, 1118, 1189, 1292, 1434, 1614, 1837, 2071, 2437, 2521, 2150, 1856, 1600, 1398, 1254, 1141, 1080, 1054, 1072, 1120, 1231, 1385, 1556, 1770, 2042, 2437, 2462, 2132, 1814, 1576, 1380, 1229, 1120, 1050, 1024, 1046, 1109, 1217, 1354, 1542, 1762, 2020, 2328, 2495, 2125, 1823, 1572, 1374, 1217, 1109, 1052, 1027, 1037, 1104, 1219, 1354, 1542, 1766, 2025, 2336, 2574, 2138, 1837, 1614, 1403, 1256, 1139, 1075, 1054, 1075, 1120, 1231, 1382, 1569, 1796, 2083, 2389, 2630, 2189, 1904, 1669, 1462, 1292, 1181, 1116, 1101, 1116, 1177, 1296, 1431, 1632, 1860, 2132, 2478, 2749, 2271, 2003, 1724, 1552, 1385, 1263, 1206, 1168, 1185, 1263, 1364, 1504, 1704, 1934, 2202, 2574, 2913, 2397, 2083, 1837, 1654, 1495, 1377, 1306, 1272, 1306, 1359, 1480, 1621, 1801, 2014, 2285, 2749, 3034, 2556, 2250, 1965, 1779, 1618, 1498, 1425, 1409, 1442, 1504, 1603, 1745, 1939, 2157, 2454, 2867, 3339, 2834, 2374, 2157, 1945, 1779, 1650, 1589, 1569, 1593, 1636, 1762, 1904, 2089, 2314, 2639, 3138, 3730, 3046, 2649, 2314, 2101, 1950, 1832, 1762, 1733, 1766, 1823, 1929, 2071, 2271, 2521, 2924, 3602, 5113, 3401, 2913, 2556, 2314, 2132, 2025, 1976, 1934, 1987, 2065, 2157, 2314, 2512, 2823, 3264, 4974] - }, - "lsc_samples_greenB": { - "uCoeff": [3964, 3072, 2671, 2333, 2095, 1945, 1834, 1751, 1743, 1760, 1811, 1935, 2095, 2276, 2499, 2926, 3781, 3367, 2814, 2425, 2162, 1982, 1777, 1679, 1606, 1579, 1610, 1664, 1760, 1920, 2107, 2326, 2681, 3192, 3111, 2587, 2255, 2020, 1820, 1642, 1514, 1446, 1423, 1437, 1514, 1613, 1781, 1956, 2168, 2482, 2973, 2926, 2441, 2143, 1876, 1679, 1520, 1407, 1326, 1300, 1326, 1388, 1514, 1635, 1839, 2065, 2348, 2731, 2772, 2341, 2037, 1777, 1582, 1412, 1287, 1221, 1205, 1225, 1284, 1410, 1565, 1739, 1966, 2234, 2652, 2681, 2241, 1961, 1699, 1489, 1331, 1221, 1143, 1122, 1141, 1201, 1326, 1466, 1672, 1895, 2162, 2542, 2551, 2201, 1910, 1646, 1446, 1280, 1148, 1095, 1065, 1081, 1152, 1267, 1418, 1603, 1834, 2089, 2482, 2569, 2168, 1871, 1610, 1399, 1245, 1129, 1061, 1040, 1052, 1122, 1241, 1396, 1589, 1807, 2083, 2417, 2534, 2137, 1867, 1613, 1407, 1237, 1127, 1065, 1024, 1061, 1112, 1231, 1376, 1572, 1811, 2071, 2402, 2569, 2168, 1895, 1638, 1423, 1265, 1145, 1079, 1061, 1081, 1133, 1254, 1391, 1599, 1830, 2107, 2482, 2633, 2221, 1971, 1687, 1486, 1310, 1183, 1114, 1104, 1117, 1183, 1296, 1460, 1661, 1890, 2168, 2499, 2761, 2297, 2014, 1760, 1542, 1383, 1262, 1189, 1172, 1189, 1260, 1365, 1511, 1719, 1950, 2227, 2643, 2914, 2433, 2107, 1857, 1642, 1486, 1363, 1280, 1265, 1280, 1360, 1469, 1631, 1820, 2042, 2333, 2731, 3151, 2569, 2214, 1982, 1777, 1603, 1480, 1407, 1381, 1410, 1480, 1599, 1731, 1940, 2201, 2482, 2949, 3321, 2772, 2402, 2119, 1910, 1747, 1631, 1575, 1536, 1555, 1631, 1735, 1895, 2089, 2326, 2643, 3151, 3742, 3009, 2560, 2290, 2065, 1900, 1785, 1723, 1687, 1723, 1777, 1910, 2037, 2241, 2508, 2914, 3579, 5016, 3367, 2937, 2560, 2326, 2150, 2020, 1935, 1935, 1966, 2009, 2125, 2318, 2474, 2836, 3248, 5016] - }, - "lsc_samples_blue": { - "uCoeff": [3507, 2733, 2331, 2107, 1884, 1823, 1704, 1617, 1654, 1654, 1704, 1767, 1896, 2138, 2331, 2707, 3422, 2930, 2516, 2154, 1948, 1778, 1654, 1538, 1506, 1514, 1522, 1572, 1635, 1767, 1896, 2138, 2472, 2930, 2787, 2293, 2017, 1847, 1654, 1530, 1437, 1388, 1362, 1388, 1430, 1514, 1635, 1789, 1989, 2275, 2682, 2494, 2204, 1909, 1704, 1538, 1444, 1324, 1276, 1265, 1265, 1336, 1437, 1538, 1683, 1884, 2138, 2584, 2451, 2076, 1835, 1617, 1459, 1324, 1248, 1181, 1162, 1201, 1254, 1324, 1459, 1635, 1801, 2032, 2369, 2331, 1989, 1735, 1563, 1395, 1254, 1171, 1121, 1121, 1130, 1167, 1259, 1395, 1555, 1735, 1948, 2204, 2239, 1935, 1724, 1514, 1330, 1216, 1125, 1086, 1058, 1095, 1130, 1222, 1355, 1506, 1693, 1909, 2222, 2204, 1909, 1674, 1498, 1312, 1191, 1099, 1062, 1024, 1062, 1116, 1191, 1324, 1482, 1664, 1884, 2138, 2204, 1909, 1664, 1467, 1306, 1176, 1091, 1047, 1024, 1043, 1108, 1186, 1324, 1444, 1664, 1884, 2222, 2204, 1909, 1683, 1498, 1324, 1181, 1108, 1078, 1028, 1050, 1108, 1211, 1330, 1467, 1664, 1884, 2154, 2257, 1989, 1745, 1530, 1355, 1254, 1134, 1082, 1082, 1078, 1143, 1227, 1336, 1506, 1683, 1935, 2171, 2389, 2003, 1801, 1581, 1423, 1300, 1201, 1130, 1108, 1162, 1181, 1276, 1430, 1589, 1778, 2032, 2331, 2516, 2122, 1859, 1674, 1506, 1381, 1265, 1216, 1191, 1222, 1271, 1375, 1498, 1664, 1847, 2076, 2430, 2707, 2293, 1975, 1745, 1589, 1459, 1381, 1312, 1300, 1330, 1375, 1452, 1572, 1724, 1909, 2154, 2584, 2787, 2430, 2107, 1871, 1693, 1589, 1506, 1452, 1416, 1437, 1482, 1581, 1683, 1835, 2017, 2331, 2871, 3382, 2632, 2312, 2003, 1823, 1724, 1617, 1563, 1522, 1563, 1607, 1704, 1801, 1975, 2222, 2516, 3157, 4435, 2930, 2584, 2138, 1962, 1884, 1778, 1704, 1704, 1704, 1724, 1859, 1935, 2154, 2472, 2842, 4301] - } - }, { - "name": "3264x2448_A_70", - "resolution": "3264x2448", - "illumination": "A", - "vignetting": 70, - "lsc_samples_red": { - "uCoeff": [3195, 2722, 2425, 2228, 2080, 1926, 1812, 1751, 1743, 1751, 1822, 1902, 2058, 2161, 2373, 2617, 3156, 2914, 2556, 2297, 2123, 1937, 1788, 1666, 1589, 1563, 1589, 1662, 1772, 1900, 2063, 2243, 2454, 2835, 2740, 2417, 2188, 1990, 1784, 1627, 1525, 1443, 1421, 1440, 1518, 1618, 1773, 1925, 2125, 2347, 2647, 2646, 2309, 2087, 1859, 1679, 1511, 1381, 1308, 1286, 1305, 1385, 1504, 1651, 1831, 2015, 2254, 2548, 2588, 2215, 2018, 1779, 1579, 1407, 1287, 1217, 1184, 1210, 1282, 1404, 1552, 1758, 1965, 2165, 2484, 2505, 2181, 1926, 1713, 1492, 1323, 1196, 1128, 1107, 1117, 1206, 1323, 1492, 1679, 1883, 2102, 2450, 2454, 2128, 1885, 1653, 1426, 1262, 1146, 1075, 1057, 1073, 1139, 1275, 1430, 1617, 1839, 2075, 2342, 2462, 2096, 1861, 1625, 1412, 1242, 1114, 1055, 1031, 1049, 1126, 1225, 1406, 1599, 1816, 2081, 2350, 2476, 2129, 1874, 1631, 1416, 1230, 1116, 1044, 1024, 1044, 1118, 1230, 1406, 1600, 1851, 2068, 2343, 2473, 2134, 1890, 1656, 1439, 1265, 1145, 1080, 1049, 1074, 1130, 1258, 1436, 1639, 1843, 2081, 2379, 2497, 2167, 1941, 1709, 1500, 1323, 1207, 1124, 1099, 1112, 1188, 1305, 1471, 1686, 1885, 2128, 2432, 2610, 2232, 2018, 1794, 1587, 1415, 1272, 1191, 1183, 1195, 1274, 1386, 1550, 1763, 1964, 2197, 2539, 2743, 2322, 2121, 1857, 1685, 1501, 1381, 1304, 1276, 1304, 1384, 1508, 1648, 1845, 2068, 2294, 2625, 2869, 2481, 2214, 1977, 1794, 1639, 1512, 1438, 1412, 1441, 1508, 1622, 1757, 1964, 2156, 2357, 2738, 3002, 2573, 2321, 2143, 1935, 1797, 1682, 1603, 1572, 1603, 1668, 1786, 1904, 2104, 2284, 2504, 2842, 3240, 2762, 2478, 2281, 2110, 1946, 1840, 1793, 1748, 1766, 1835, 1946, 2052, 2229, 2425, 2681, 3220, 4165, 3031, 2709, 2502, 2340, 2168, 2071, 2031, 2000, 2004, 2035, 2144, 2275, 2448, 2682, 2898, 4026] - }, - "lsc_samples_greenR": { - "uCoeff": [2892, 2497, 2204, 2068, 1890, 1803, 1708, 1643, 1620, 1629, 1704, 1760, 1865, 1979, 2119, 2376, 2803, 2654, 2353, 2107, 1932, 1781, 1670, 1591, 1526, 1512, 1520, 1575, 1656, 1751, 1869, 2031, 2247, 2505, 2519, 2216, 2000, 1843, 1685, 1563, 1470, 1406, 1377, 1390, 1450, 1541, 1641, 1768, 1906, 2117, 2421, 2394, 2097, 1910, 1738, 1591, 1452, 1364, 1301, 1267, 1290, 1340, 1427, 1562, 1687, 1852, 2027, 2269, 2293, 2039, 1843, 1657, 1501, 1376, 1264, 1197, 1178, 1195, 1246, 1349, 1466, 1611, 1782, 1957, 2220, 2266, 1974, 1779, 1594, 1422, 1277, 1186, 1126, 1098, 1116, 1184, 1280, 1406, 1558, 1733, 1898, 2143, 2221, 1973, 1757, 1550, 1376, 1246, 1139, 1079, 1054, 1071, 1118, 1223, 1364, 1510, 1681, 1882, 2154, 2181, 1963, 1724, 1531, 1361, 1223, 1119, 1050, 1024, 1046, 1108, 1211, 1336, 1500, 1678, 1868, 2073, 2210, 1959, 1733, 1529, 1356, 1211, 1108, 1052, 1027, 1037, 1103, 1213, 1337, 1501, 1682, 1874, 2082, 2271, 1968, 1744, 1566, 1383, 1249, 1137, 1075, 1054, 1075, 1119, 1225, 1363, 1525, 1708, 1922, 2122, 2308, 2006, 1799, 1613, 1436, 1282, 1178, 1115, 1100, 1115, 1174, 1286, 1407, 1580, 1760, 1958, 2187, 2390, 2065, 1878, 1658, 1517, 1369, 1256, 1202, 1166, 1182, 1256, 1349, 1472, 1640, 1818, 2007, 2251, 2499, 2154, 1936, 1750, 1604, 1468, 1362, 1297, 1265, 1297, 1345, 1454, 1574, 1718, 1876, 2062, 2371, 2564, 2263, 2061, 1851, 1708, 1574, 1471, 1406, 1392, 1422, 1476, 1561, 1677, 1828, 1983, 2181, 2436, 2758, 2456, 2142, 1998, 1841, 1709, 1602, 1551, 1534, 1554, 1589, 1694, 1804, 1940, 2092, 2302, 2607, 2993, 2582, 2336, 2106, 1956, 1844, 1752, 1695, 1671, 1699, 1744, 1826, 1930, 2070, 2233, 2488, 2900, 3886, 2799, 2504, 2272, 2108, 1978, 1900, 1866, 1832, 1876, 1935, 1999, 2108, 2236, 2434, 2697, 3789] - }, - "lsc_samples_greenB": { - "uCoeff": [3082, 2553, 2314, 2090, 1924, 1817, 1733, 1667, 1662, 1675, 1713, 1808, 1924, 2044, 2180, 2444, 2954, 2729, 2403, 2155, 1979, 1853, 1691, 1614, 1554, 1531, 1557, 1600, 1676, 1799, 1932, 2075, 2301, 2602, 2587, 2261, 2044, 1881, 1730, 1585, 1476, 1417, 1397, 1409, 1476, 1559, 1695, 1826, 1971, 2178, 2484, 2482, 2170, 1971, 1772, 1617, 1484, 1385, 1311, 1288, 1311, 1367, 1478, 1577, 1740, 1905, 2095, 2332, 2389, 2108, 1896, 1697, 1538, 1390, 1276, 1215, 1200, 1219, 1273, 1388, 1522, 1663, 1835, 2020, 2295, 2336, 2040, 1841, 1635, 1458, 1317, 1215, 1141, 1120, 1139, 1196, 1312, 1436, 1611, 1784, 1974, 2226, 2245, 2016, 1804, 1592, 1421, 1271, 1145, 1094, 1065, 1080, 1149, 1258, 1395, 1553, 1737, 1921, 2190, 2267, 1994, 1774, 1563, 1379, 1238, 1127, 1061, 1040, 1052, 1121, 1234, 1376, 1543, 1718, 1922, 2145, 2241, 1969, 1772, 1566, 1387, 1231, 1126, 1065, 1024, 1061, 1111, 1225, 1358, 1529, 1722, 1913, 2135, 2267, 1994, 1796, 1588, 1402, 1258, 1143, 1079, 1061, 1081, 1131, 1247, 1372, 1552, 1738, 1942, 2197, 2311, 2033, 1858, 1630, 1459, 1300, 1180, 1113, 1103, 1116, 1180, 1286, 1435, 1606, 1787, 1988, 2204, 2399, 2086, 1888, 1690, 1507, 1367, 1255, 1186, 1170, 1186, 1253, 1350, 1478, 1653, 1832, 2028, 2306, 2499, 2184, 1956, 1768, 1593, 1459, 1349, 1272, 1258, 1272, 1346, 1443, 1583, 1735, 1900, 2102, 2357, 2654, 2274, 2031, 1865, 1706, 1561, 1454, 1388, 1365, 1391, 1454, 1557, 1664, 1829, 2020, 2203, 2499, 2744, 2407, 2165, 1966, 1810, 1680, 1584, 1538, 1503, 1519, 1584, 1669, 1796, 1940, 2102, 2305, 2617, 3002, 2554, 2264, 2086, 1925, 1800, 1709, 1660, 1629, 1660, 1702, 1809, 1900, 2045, 2222, 2480, 2883, 3818, 2774, 2523, 2275, 2118, 1993, 1896, 1830, 1832, 1857, 1886, 1972, 2112, 2205, 2444, 2685, 3818] - }, - "lsc_samples_blue": { - "uCoeff": [2762, 2300, 2048, 1906, 1747, 1712, 1619, 1548, 1583, 1581, 1619, 1664, 1757, 1932, 2048, 2281, 2703, 2411, 2174, 1936, 1799, 1676, 1582, 1487, 1463, 1471, 1477, 1518, 1565, 1667, 1755, 1923, 2140, 2411, 2344, 2028, 1846, 1732, 1583, 1483, 1405, 1363, 1340, 1363, 1399, 1469, 1566, 1682, 1823, 2014, 2266, 2151, 1978, 1773, 1621, 1489, 1413, 1307, 1264, 1254, 1253, 1318, 1407, 1489, 1603, 1752, 1925, 2220, 2138, 1890, 1722, 1554, 1425, 1307, 1239, 1176, 1158, 1195, 1244, 1307, 1425, 1570, 1693, 1854, 2074, 2059, 1829, 1644, 1512, 1370, 1244, 1167, 1119, 1119, 1128, 1163, 1248, 1370, 1505, 1644, 1795, 1958, 1996, 1792, 1641, 1472, 1312, 1209, 1123, 1085, 1058, 1094, 1128, 1215, 1336, 1464, 1613, 1770, 1982, 1973, 1774, 1600, 1460, 1297, 1186, 1098, 1062, 1024, 1062, 1115, 1186, 1308, 1445, 1591, 1753, 1920, 1975, 1775, 1592, 1432, 1292, 1172, 1090, 1047, 1024, 1043, 1107, 1181, 1309, 1411, 1592, 1754, 1990, 1973, 1774, 1608, 1460, 1308, 1176, 1107, 1078, 1028, 1050, 1107, 1205, 1314, 1431, 1591, 1753, 1933, 2010, 1837, 1659, 1486, 1336, 1246, 1132, 1081, 1082, 1077, 1141, 1220, 1318, 1464, 1604, 1792, 1941, 2105, 1841, 1702, 1528, 1396, 1288, 1196, 1128, 1107, 1159, 1176, 1265, 1403, 1536, 1682, 1865, 2059, 2189, 1928, 1743, 1605, 1468, 1360, 1255, 1210, 1186, 1216, 1261, 1355, 1460, 1596, 1732, 1890, 2122, 2314, 2050, 1829, 1657, 1536, 1427, 1360, 1298, 1288, 1315, 1355, 1421, 1520, 1639, 1773, 1938, 2220, 2344, 2137, 1921, 1752, 1617, 1537, 1469, 1423, 1391, 1409, 1447, 1530, 1608, 1722, 1846, 2058, 2407, 2740, 2263, 2064, 1845, 1715, 1644, 1558, 1514, 1479, 1514, 1549, 1626, 1696, 1822, 1991, 2174, 2576, 3412, 2447, 2246, 1932, 1812, 1764, 1684, 1625, 1627, 1625, 1637, 1743, 1790, 1945, 2158, 2382, 3318] - } - }, { - "name": "3264x2448_CWF_100", - "resolution": "3264x2448", - "illumination": "CWF", - "vignetting": 100, - "lsc_samples_red": { - "uCoeff": [3843, 2836, 2410, 2174, 2021, 1861, 1718, 1682, 1654, 1740, 1740, 1861, 1961, 2163, 2469, 2739, 3569, 3224, 2721, 2273, 2021, 1853, 1696, 1595, 1545, 1499, 1499, 1614, 1696, 1803, 1961, 2210, 2532, 3076, 2877, 2410, 2106, 1879, 1740, 1576, 1466, 1390, 1376, 1405, 1450, 1545, 1682, 1853, 2021, 2367, 2836, 2739, 2286, 1991, 1763, 1614, 1435, 1348, 1291, 1255, 1275, 1339, 1450, 1557, 1755, 1952, 2248, 2667, 2667, 2174, 1906, 1696, 1493, 1362, 1263, 1188, 1171, 1181, 1243, 1348, 1477, 1661, 1861, 2084, 2485, 2516, 2106, 1853, 1601, 1435, 1300, 1177, 1106, 1088, 1121, 1181, 1287, 1435, 1563, 1811, 2052, 2395, 2485, 2041, 1779, 1557, 1395, 1239, 1125, 1076, 1065, 1076, 1134, 1243, 1395, 1516, 1763, 2021, 2312, 2410, 2041, 1779, 1563, 1362, 1209, 1094, 1032, 1024, 1040, 1097, 1199, 1348, 1510, 1718, 1961, 2367, 2469, 2021, 1787, 1576, 1366, 1202, 1103, 1048, 1037, 1040, 1112, 1199, 1362, 1534, 1718, 1991, 2326, 2395, 2052, 1827, 1576, 1390, 1251, 1125, 1076, 1054, 1062, 1134, 1220, 1380, 1545, 1740, 1991, 2395, 2532, 2106, 1853, 1614, 1419, 1279, 1160, 1112, 1097, 1112, 1177, 1287, 1419, 1582, 1803, 2052, 2410, 2631, 2210, 1906, 1696, 1516, 1376, 1251, 1171, 1167, 1167, 1239, 1352, 1466, 1661, 1879, 2140, 2469, 2836, 2312, 2021, 1779, 1640, 1466, 1362, 1255, 1243, 1300, 1348, 1445, 1563, 1763, 1952, 2235, 2667, 2962, 2367, 2084, 1879, 1732, 1595, 1450, 1376, 1390, 1380, 1450, 1545, 1682, 1861, 2073, 2367, 2962, 3224, 2667, 2235, 2041, 1853, 1682, 1601, 1534, 1516, 1510, 1582, 1710, 1827, 1981, 2198, 2532, 3007, 3569, 2877, 2469, 2210, 2011, 1906, 1732, 1674, 1682, 1710, 1755, 1827, 1933, 2140, 2410, 2739, 3476, 4992, 3224, 2721, 2439, 2286, 2073, 1952, 1933, 1879, 1879, 1981, 2073, 2198, 2395, 2580, 3148, 4931] - }, - "lsc_samples_greenR": { - "uCoeff": [3573, 2847, 2513, 2213, 2018, 1875, 1764, 1665, 1626, 1653, 1750, 1810, 1983, 2124, 2407, 2778, 3555, 3104, 2619, 2264, 2036, 1864, 1715, 1603, 1528, 1491, 1528, 1570, 1653, 1796, 1983, 2213, 2532, 2983, 2847, 2459, 2092, 1906, 1737, 1559, 1444, 1386, 1364, 1386, 1444, 1531, 1669, 1820, 2036, 2334, 2733, 2800, 2295, 2018, 1764, 1581, 1444, 1335, 1295, 1264, 1271, 1324, 1426, 1549, 1707, 1955, 2213, 2532, 2570, 2164, 1922, 1682, 1501, 1353, 1254, 1187, 1165, 1165, 1247, 1327, 1466, 1626, 1834, 2105, 2513, 2504, 2092, 1834, 1614, 1409, 1290, 1175, 1127, 1108, 1116, 1159, 1257, 1397, 1570, 1791, 2024, 2366, 2459, 2054, 1782, 1592, 1378, 1230, 1132, 1079, 1047, 1059, 1114, 1206, 1353, 1518, 1737, 1983, 2287, 2416, 2060, 1764, 1528, 1353, 1206, 1105, 1056, 1036, 1043, 1100, 1199, 1324, 1501, 1715, 1983, 2310, 2407, 2079, 1764, 1549, 1353, 1204, 1103, 1052, 1024, 1047, 1105, 1193, 1324, 1508, 1715, 1983, 2295, 2477, 2079, 1806, 1577, 1378, 1230, 1132, 1075, 1056, 1079, 1116, 1216, 1361, 1528, 1750, 1989, 2366, 2486, 2164, 1880, 1626, 1418, 1275, 1171, 1100, 1086, 1119, 1165, 1261, 1403, 1599, 1806, 2042, 2416, 2629, 2213, 1955, 1702, 1488, 1356, 1247, 1169, 1159, 1171, 1236, 1353, 1472, 1653, 1875, 2144, 2532, 2766, 2318, 2054, 1791, 1622, 1454, 1353, 1268, 1261, 1268, 1335, 1435, 1570, 1750, 1966, 2264, 2570, 2945, 2504, 2171, 1922, 1728, 1581, 1447, 1397, 1348, 1378, 1457, 1570, 1677, 1875, 2073, 2390, 2744, 3104, 2701, 2318, 2092, 1849, 1728, 1622, 1549, 1511, 1549, 1603, 1707, 1810, 2036, 2264, 2570, 2932, 3573, 2970, 2541, 2228, 2018, 1859, 1782, 1702, 1694, 1694, 1741, 1864, 1983, 2192, 2450, 2800, 3465, 4699, 3299, 2847, 2513, 2287, 2105, 2006, 1927, 1864, 1955, 1983, 2036, 2206, 2450, 2733, 3191, 4866] - }, - "lsc_samples_greenB": { - "uCoeff": [3658, 2936, 2478, 2207, 2012, 1874, 1763, 1660, 1636, 1697, 1758, 1854, 1994, 2178, 2383, 2826, 3437, 3167, 2725, 2335, 2048, 1884, 1714, 1610, 1537, 1507, 1534, 1594, 1689, 1844, 2030, 2243, 2562, 3040, 2923, 2469, 2158, 1949, 1745, 1562, 1458, 1393, 1365, 1374, 1449, 1551, 1685, 1844, 2098, 2359, 2838, 2792, 2288, 2012, 1791, 1621, 1443, 1349, 1283, 1267, 1279, 1341, 1425, 1555, 1723, 1977, 2228, 2611, 2611, 2280, 1949, 1710, 1523, 1365, 1253, 1188, 1165, 1188, 1251, 1336, 1474, 1664, 1874, 2138, 2552, 2533, 2165, 1874, 1617, 1434, 1283, 1188, 1118, 1116, 1116, 1161, 1267, 1413, 1583, 1791, 2018, 2400, 2443, 2098, 1829, 1555, 1390, 1239, 1148, 1077, 1070, 1065, 1121, 1209, 1368, 1534, 1736, 2012, 2335, 2409, 2054, 1791, 1555, 1349, 1196, 1101, 1057, 1030, 1040, 1105, 1200, 1341, 1513, 1702, 1960, 2303, 2409, 2054, 1772, 1565, 1341, 1200, 1105, 1048, 1024, 1044, 1105, 1188, 1331, 1494, 1723, 1977, 2288, 2478, 2073, 1814, 1576, 1376, 1230, 1118, 1056, 1040, 1062, 1116, 1219, 1360, 1534, 1723, 2048, 2383, 2524, 2124, 1869, 1617, 1422, 1253, 1150, 1094, 1081, 1086, 1159, 1257, 1393, 1565, 1786, 2054, 2400, 2641, 2185, 1905, 1685, 1487, 1341, 1232, 1165, 1133, 1154, 1215, 1336, 1477, 1621, 1859, 2124, 2478, 2662, 2288, 2018, 1772, 1606, 1416, 1331, 1246, 1237, 1253, 1298, 1407, 1572, 1736, 1977, 2228, 2621, 2936, 2443, 2138, 1874, 1689, 1534, 1431, 1352, 1323, 1352, 1422, 1534, 1664, 1859, 2105, 2351, 2704, 3167, 2641, 2280, 2000, 1814, 1697, 1565, 1497, 1462, 1487, 1565, 1664, 1805, 2018, 2228, 2552, 2974, 3508, 2874, 2496, 2165, 2000, 1859, 1723, 1652, 1636, 1652, 1697, 1805, 1994, 2118, 2409, 2769, 3403, 4921, 3167, 2736, 2533, 2199, 2048, 1960, 1900, 1829, 1854, 1977, 2030, 2138, 2383, 2693, 3000, 4750] - }, - "lsc_samples_blue": { - "uCoeff": [3130, 2548, 2211, 1953, 1739, 1609, 1627, 1551, 1512, 1528, 1609, 1672, 1700, 1916, 2118, 2465, 3036, 2783, 2313, 1966, 1801, 1609, 1535, 1454, 1387, 1406, 1413, 1468, 1528, 1627, 1791, 1928, 2261, 2733, 2592, 2164, 1892, 1681, 1528, 1433, 1350, 1309, 1275, 1275, 1350, 1413, 1551, 1653, 1823, 2046, 2406, 2349, 1992, 1759, 1601, 1426, 1338, 1244, 1199, 1190, 1214, 1254, 1309, 1433, 1584, 1759, 1953, 2313, 2244, 1892, 1681, 1535, 1393, 1259, 1171, 1162, 1132, 1149, 1176, 1254, 1387, 1482, 1635, 1869, 2133, 2133, 1834, 1627, 1482, 1332, 1190, 1136, 1099, 1075, 1079, 1132, 1209, 1309, 1433, 1601, 1801, 2089, 2074, 1801, 1609, 1447, 1275, 1171, 1099, 1045, 1024, 1064, 1087, 1162, 1270, 1374, 1535, 1770, 2074, 1992, 1759, 1575, 1406, 1270, 1145, 1068, 1035, 1024, 1031, 1068, 1149, 1239, 1387, 1551, 1729, 2005, 2032, 1770, 1551, 1393, 1254, 1149, 1064, 1042, 1031, 1024, 1056, 1132, 1244, 1393, 1551, 1739, 2074, 2089, 1801, 1575, 1406, 1254, 1149, 1068, 1042, 1031, 1031, 1068, 1149, 1259, 1387, 1535, 1791, 2032, 2089, 1834, 1584, 1433, 1292, 1209, 1111, 1064, 1053, 1068, 1107, 1176, 1275, 1406, 1601, 1770, 2089, 2261, 1869, 1653, 1454, 1332, 1239, 1149, 1111, 1079, 1087, 1158, 1224, 1309, 1454, 1627, 1857, 2180, 2313, 1966, 1729, 1559, 1406, 1303, 1224, 1190, 1158, 1171, 1209, 1309, 1393, 1528, 1700, 1916, 2244, 2406, 2089, 1834, 1627, 1505, 1393, 1303, 1254, 1254, 1244, 1303, 1368, 1505, 1609, 1770, 1992, 2406, 2592, 2261, 1953, 1770, 1584, 1490, 1393, 1368, 1332, 1356, 1393, 1433, 1584, 1700, 1916, 2164, 2548, 2890, 2425, 2133, 1869, 1681, 1601, 1512, 1468, 1454, 1454, 1490, 1584, 1681, 1834, 2032, 2406, 2890, 3952, 2708, 2368, 2005, 1892, 1729, 1653, 1584, 1627, 1575, 1601, 1759, 1823, 2005, 2180, 2592, 4004] - } - }, { - "name": "3264x2448_CWF_70", - "resolution": "3264x2448", - "illumination": "CWF", - "vignetting": 70, - "lsc_samples_red": { - "uCoeff": [2997, 2377, 2110, 1961, 1862, 1745, 1632, 1606, 1583, 1657, 1651, 1745, 1812, 1952, 2156, 2305, 2806, 2625, 2332, 2032, 1860, 1741, 1619, 1538, 1498, 1458, 1456, 1555, 1619, 1698, 1810, 1982, 2186, 2517, 2412, 2121, 1920, 1759, 1659, 1525, 1432, 1365, 1353, 1379, 1417, 1497, 1607, 1737, 1850, 2087, 2381, 2338, 2045, 1842, 1673, 1558, 1405, 1329, 1278, 1245, 1263, 1321, 1419, 1507, 1666, 1809, 2014, 2283, 2307, 1971, 1783, 1624, 1456, 1343, 1253, 1183, 1167, 1176, 1234, 1329, 1441, 1593, 1745, 1897, 2165, 2205, 1927, 1747, 1546, 1407, 1288, 1173, 1104, 1087, 1119, 1176, 1275, 1407, 1512, 1711, 1882, 2110, 2192, 1881, 1689, 1511, 1373, 1231, 1123, 1075, 1065, 1075, 1132, 1235, 1373, 1474, 1675, 1864, 2054, 2139, 1886, 1693, 1519, 1344, 1203, 1093, 1032, 1024, 1040, 1096, 1194, 1331, 1471, 1639, 1818, 2104, 2189, 1871, 1701, 1532, 1348, 1197, 1102, 1048, 1037, 1040, 1111, 1194, 1345, 1494, 1640, 1845, 2074, 2127, 1895, 1735, 1531, 1371, 1244, 1123, 1076, 1054, 1062, 1132, 1214, 1361, 1503, 1658, 1844, 2127, 2230, 1936, 1754, 1563, 1396, 1270, 1157, 1111, 1096, 1111, 1174, 1277, 1396, 1534, 1710, 1890, 2132, 2296, 2014, 1793, 1632, 1483, 1360, 1244, 1168, 1165, 1164, 1233, 1337, 1436, 1601, 1770, 1955, 2168, 2439, 2084, 1882, 1699, 1591, 1441, 1348, 1248, 1237, 1291, 1334, 1421, 1520, 1684, 1823, 2021, 2307, 2509, 2110, 1921, 1775, 1665, 1553, 1425, 1359, 1373, 1363, 1425, 1507, 1620, 1759, 1912, 2110, 2509, 2671, 2324, 2027, 1899, 1759, 1621, 1557, 1499, 1484, 1477, 1539, 1647, 1736, 1847, 1996, 2217, 2509, 2876, 2452, 2191, 2019, 1878, 1805, 1662, 1615, 1625, 1648, 1682, 1735, 1810, 1960, 2143, 2346, 2808, 3802, 2667, 2354, 2177, 2085, 1927, 1837, 1828, 1783, 1780, 1862, 1927, 2011, 2141, 2243, 2610, 3759] - }, - "lsc_samples_greenR": { - "uCoeff": [2808, 2385, 2191, 1993, 1859, 1757, 1672, 1591, 1558, 1580, 1660, 1701, 1830, 1920, 2108, 2334, 2796, 2538, 2253, 2025, 1873, 1751, 1636, 1546, 1483, 1450, 1483, 1516, 1581, 1692, 1828, 1984, 2186, 2450, 2389, 2159, 1909, 1783, 1656, 1510, 1412, 1361, 1342, 1361, 1412, 1484, 1596, 1709, 1862, 2061, 2304, 2385, 2052, 1865, 1674, 1528, 1413, 1317, 1282, 1253, 1259, 1307, 1397, 1499, 1624, 1812, 1986, 2180, 2231, 1962, 1797, 1612, 1463, 1334, 1244, 1182, 1161, 1160, 1238, 1310, 1431, 1562, 1721, 1914, 2186, 2196, 1915, 1731, 1558, 1383, 1278, 1171, 1125, 1107, 1114, 1155, 1246, 1372, 1518, 1693, 1859, 2087, 2172, 1892, 1692, 1543, 1357, 1223, 1130, 1078, 1047, 1059, 1112, 1199, 1334, 1475, 1652, 1832, 2034, 2144, 1902, 1679, 1487, 1336, 1200, 1104, 1056, 1036, 1043, 1099, 1194, 1308, 1462, 1636, 1837, 2059, 2139, 1920, 1681, 1507, 1336, 1199, 1102, 1052, 1024, 1047, 1104, 1188, 1309, 1470, 1637, 1838, 2049, 2193, 1918, 1717, 1532, 1359, 1224, 1130, 1075, 1056, 1079, 1115, 1210, 1343, 1487, 1667, 1842, 2104, 2193, 1985, 1778, 1574, 1395, 1266, 1168, 1099, 1086, 1118, 1162, 1252, 1381, 1549, 1713, 1882, 2137, 2295, 2016, 1836, 1638, 1457, 1341, 1240, 1166, 1157, 1168, 1230, 1338, 1442, 1593, 1766, 1959, 2218, 2384, 2089, 1911, 1709, 1575, 1429, 1339, 1260, 1254, 1260, 1322, 1411, 1527, 1673, 1835, 2045, 2231, 2496, 2221, 1994, 1813, 1661, 1540, 1423, 1379, 1333, 1361, 1432, 1530, 1615, 1771, 1912, 2129, 2342, 2582, 2351, 2096, 1943, 1756, 1663, 1576, 1513, 1480, 1513, 1558, 1644, 1721, 1894, 2051, 2247, 2453, 2879, 2524, 2249, 2034, 1884, 1764, 1707, 1641, 1636, 1634, 1670, 1768, 1854, 2004, 2175, 2393, 2800, 3597, 2723, 2452, 2237, 2085, 1955, 1884, 1823, 1769, 1847, 1864, 1895, 2017, 2186, 2363, 2642, 3713] - }, - "lsc_samples_greenB": { - "uCoeff": [2868, 2452, 2163, 1988, 1854, 1756, 1671, 1587, 1567, 1619, 1667, 1738, 1839, 1964, 2089, 2370, 2713, 2583, 2335, 2082, 1883, 1768, 1635, 1552, 1491, 1465, 1488, 1537, 1613, 1733, 1868, 2008, 2209, 2491, 2446, 2167, 1963, 1820, 1663, 1512, 1425, 1368, 1343, 1350, 1416, 1502, 1610, 1729, 1914, 2080, 2382, 2379, 2046, 1860, 1698, 1564, 1412, 1330, 1270, 1256, 1267, 1323, 1396, 1505, 1638, 1830, 1998, 2240, 2263, 2058, 1820, 1637, 1483, 1345, 1243, 1183, 1161, 1183, 1241, 1318, 1438, 1596, 1756, 1941, 2217, 2219, 1976, 1766, 1561, 1406, 1271, 1183, 1116, 1114, 1114, 1157, 1256, 1387, 1530, 1693, 1853, 2113, 2159, 1929, 1733, 1509, 1369, 1231, 1145, 1076, 1070, 1065, 1119, 1202, 1348, 1490, 1651, 1857, 2072, 2138, 1897, 1703, 1512, 1332, 1191, 1100, 1057, 1030, 1040, 1104, 1195, 1324, 1473, 1625, 1817, 2053, 2140, 1899, 1688, 1522, 1325, 1195, 1104, 1048, 1024, 1044, 1104, 1183, 1315, 1457, 1644, 1833, 2043, 2194, 1913, 1724, 1531, 1357, 1224, 1117, 1056, 1040, 1062, 1115, 1213, 1342, 1493, 1643, 1892, 2117, 2224, 1951, 1768, 1566, 1399, 1245, 1147, 1093, 1081, 1085, 1156, 1249, 1371, 1518, 1695, 1892, 2124, 2304, 1993, 1793, 1622, 1456, 1327, 1226, 1162, 1131, 1151, 1209, 1322, 1447, 1564, 1752, 1942, 2175, 2303, 2065, 1880, 1692, 1560, 1393, 1318, 1239, 1231, 1246, 1287, 1385, 1529, 1660, 1844, 2015, 2271, 2489, 2172, 1967, 1771, 1626, 1497, 1407, 1336, 1309, 1336, 1399, 1497, 1603, 1757, 1939, 2097, 2312, 2629, 2303, 2064, 1863, 1724, 1635, 1523, 1465, 1434, 1456, 1523, 1605, 1717, 1879, 2021, 2233, 2484, 2832, 2450, 2212, 1981, 1868, 1764, 1654, 1595, 1583, 1595, 1630, 1716, 1863, 1942, 2142, 2369, 2755, 3752, 2624, 2365, 2253, 2012, 1905, 1844, 1799, 1738, 1758, 1858, 1890, 1960, 2131, 2332, 2500, 3632] - }, - "lsc_samples_blue": { - "uCoeff": [2498, 2162, 1954, 1781, 1625, 1528, 1552, 1490, 1457, 1470, 1536, 1582, 1592, 1751, 1881, 2100, 2432, 2304, 2017, 1785, 1676, 1530, 1477, 1411, 1354, 1373, 1378, 1424, 1470, 1546, 1667, 1754, 1977, 2268, 2198, 1926, 1743, 1589, 1471, 1395, 1325, 1290, 1259, 1258, 1325, 1377, 1491, 1565, 1686, 1833, 2059, 2039, 1807, 1646, 1531, 1388, 1315, 1231, 1191, 1182, 1205, 1241, 1288, 1394, 1516, 1646, 1775, 2012, 1976, 1739, 1590, 1481, 1364, 1245, 1165, 1158, 1129, 1145, 1170, 1241, 1358, 1433, 1550, 1720, 1890, 1902, 1700, 1550, 1439, 1311, 1182, 1133, 1098, 1074, 1078, 1129, 1201, 1290, 1394, 1527, 1672, 1867, 1864, 1679, 1539, 1411, 1260, 1166, 1097, 1045, 1024, 1064, 1086, 1157, 1256, 1344, 1474, 1653, 1864, 1803, 1647, 1512, 1375, 1257, 1141, 1067, 1035, 1024, 1031, 1067, 1145, 1228, 1358, 1491, 1621, 1813, 1837, 1657, 1492, 1364, 1242, 1145, 1063, 1042, 1031, 1024, 1056, 1129, 1233, 1364, 1492, 1631, 1870, 1881, 1683, 1512, 1375, 1242, 1145, 1067, 1042, 1031, 1031, 1067, 1145, 1247, 1358, 1477, 1674, 1835, 1876, 1707, 1517, 1398, 1276, 1202, 1109, 1064, 1053, 1068, 1105, 1170, 1260, 1373, 1532, 1653, 1876, 2003, 1729, 1573, 1413, 1311, 1229, 1145, 1109, 1078, 1086, 1154, 1215, 1290, 1413, 1550, 1719, 1939, 2030, 1799, 1631, 1502, 1376, 1287, 1216, 1185, 1154, 1166, 1201, 1293, 1364, 1474, 1606, 1758, 1976, 2083, 1885, 1709, 1554, 1459, 1366, 1287, 1243, 1244, 1233, 1287, 1343, 1459, 1538, 1655, 1807, 2083, 2198, 2003, 1793, 1666, 1521, 1447, 1365, 1345, 1312, 1334, 1365, 1395, 1521, 1605, 1763, 1926, 2165, 2382, 2104, 1919, 1733, 1592, 1535, 1464, 1428, 1417, 1415, 1444, 1520, 1592, 1703, 1838, 2089, 2382, 3074, 2281, 2077, 1823, 1754, 1631, 1575, 1519, 1559, 1511, 1529, 1657, 1696, 1823, 1930, 2195, 3110] - } - }, { - "name": "3264x2448_D50_100", - "resolution": "3264x2448", - "illumination": "D50", - "vignetting": 100, - "lsc_samples_red": { - "uCoeff": [3563, 2927, 2529, 2174, 2017, 1868, 1729, 1687, 1638, 1647, 1751, 1868, 1974, 2157, 2462, 2896, 4026, 3309, 2700, 2299, 2017, 1819, 1708, 1609, 1555, 1505, 1555, 1600, 1687, 1819, 2017, 2244, 2575, 3055, 3055, 2462, 2092, 1881, 1708, 1538, 1428, 1392, 1352, 1413, 1489, 1530, 1677, 1819, 2017, 2318, 2896, 2927, 2262, 2017, 1751, 1609, 1458, 1313, 1283, 1260, 1266, 1332, 1428, 1564, 1740, 1946, 2244, 2754, 2674, 2208, 1906, 1697, 1513, 1365, 1232, 1175, 1180, 1180, 1243, 1385, 1513, 1628, 1856, 2124, 2624, 2754, 2046, 1843, 1657, 1465, 1266, 1165, 1105, 1110, 1114, 1165, 1295, 1392, 1582, 1796, 2124, 2462, 2506, 2061, 1807, 1582, 1413, 1232, 1132, 1063, 1075, 1088, 1141, 1211, 1358, 1538, 1751, 2002, 2358, 2462, 2017, 1751, 1530, 1345, 1190, 1114, 1047, 1024, 1051, 1088, 1211, 1358, 1538, 1740, 1974, 2318, 2419, 2061, 1762, 1547, 1385, 1185, 1105, 1071, 1028, 1063, 1119, 1211, 1378, 1489, 1708, 1974, 2440, 2624, 2124, 1784, 1600, 1378, 1232, 1110, 1055, 1071, 1075, 1114, 1243, 1385, 1547, 1784, 2017, 2398, 2506, 2157, 1856, 1647, 1428, 1313, 1175, 1105, 1092, 1092, 1165, 1283, 1413, 1600, 1856, 2061, 2506, 2700, 2157, 1906, 1729, 1538, 1332, 1254, 1190, 1160, 1165, 1227, 1326, 1497, 1657, 1881, 2124, 2529, 2958, 2318, 2017, 1762, 1628, 1458, 1358, 1266, 1238, 1272, 1326, 1435, 1591, 1751, 1988, 2157, 2700, 3055, 2462, 2174, 1868, 1708, 1582, 1465, 1385, 1365, 1385, 1465, 1538, 1708, 1881, 2124, 2358, 2838, 3474, 2700, 2262, 2046, 1906, 1677, 1600, 1538, 1473, 1538, 1591, 1697, 1807, 2002, 2226, 2552, 3124, 3913, 2838, 2506, 2262, 2061, 1919, 1708, 1740, 1638, 1708, 1751, 1856, 2002, 2141, 2462, 2896, 3518, 4705, 3349, 2838, 2529, 2299, 2124, 1988, 1974, 1946, 1933, 2017, 2124, 2244, 2506, 2674, 3159, 4956] - }, - "lsc_samples_greenR": { - "uCoeff": [3825, 3056, 2647, 2246, 2066, 1876, 1719, 1670, 1638, 1689, 1744, 1775, 1944, 2148, 2420, 2864, 3638, 3276, 2732, 2307, 2073, 1859, 1689, 1611, 1532, 1475, 1512, 1594, 1656, 1813, 1983, 2246, 2647, 3171, 2979, 2502, 2188, 1876, 1709, 1552, 1446, 1388, 1347, 1369, 1425, 1536, 1689, 1882, 2088, 2325, 2878, 2797, 2325, 2010, 1786, 1615, 1453, 1354, 1267, 1246, 1240, 1323, 1436, 1540, 1729, 1950, 2237, 2567, 2758, 2221, 1983, 1670, 1509, 1354, 1243, 1176, 1160, 1169, 1230, 1338, 1475, 1647, 1870, 2117, 2502, 2534, 2148, 1841, 1620, 1412, 1272, 1167, 1112, 1090, 1096, 1156, 1267, 1412, 1577, 1797, 2080, 2381, 2470, 2102, 1813, 1573, 1376, 1240, 1112, 1076, 1057, 1066, 1114, 1203, 1344, 1528, 1744, 1996, 2353, 2502, 2088, 1775, 1552, 1347, 1210, 1080, 1048, 1033, 1042, 1090, 1205, 1347, 1497, 1729, 2003, 2289, 2481, 2110, 1791, 1577, 1338, 1193, 1100, 1038, 1024, 1038, 1096, 1181, 1329, 1528, 1709, 2010, 2362, 2534, 2110, 1797, 1573, 1385, 1220, 1136, 1070, 1055, 1057, 1123, 1203, 1326, 1509, 1739, 2003, 2450, 2578, 2196, 1870, 1615, 1408, 1275, 1149, 1092, 1094, 1094, 1149, 1256, 1388, 1548, 1819, 2073, 2372, 2612, 2280, 1983, 1689, 1501, 1357, 1220, 1172, 1153, 1167, 1228, 1329, 1460, 1661, 1847, 2204, 2512, 2878, 2325, 2088, 1819, 1611, 1475, 1318, 1261, 1228, 1283, 1318, 1429, 1594, 1744, 1963, 2307, 2732, 2979, 2556, 2221, 1919, 1714, 1552, 1460, 1376, 1329, 1372, 1453, 1552, 1709, 1888, 2140, 2450, 2950, 3331, 2758, 2353, 2030, 1876, 1714, 1573, 1520, 1501, 1497, 1624, 1709, 1847, 2052, 2325, 2623, 3137, 3705, 3025, 2567, 2316, 2052, 1853, 1734, 1744, 1661, 1714, 1786, 1859, 2066, 2280, 2523, 2823, 3638, 5201, 3331, 2878, 2556, 2325, 2110, 2044, 1906, 1853, 1870, 2003, 2088, 2188, 2420, 2758, 3331, 4705] - }, - "lsc_samples_greenB": { - "uCoeff": [3656, 3056, 2536, 2328, 2076, 1886, 1784, 1717, 1703, 1679, 1784, 1801, 1973, 2257, 2442, 2825, 3845, 3405, 2772, 2365, 2128, 1868, 1743, 1655, 1548, 1524, 1548, 1624, 1713, 1823, 2062, 2301, 2685, 3120, 3025, 2569, 2167, 1948, 1727, 1606, 1483, 1402, 1376, 1409, 1468, 1544, 1698, 1892, 2175, 2442, 2893, 2825, 2328, 2098, 1779, 1628, 1497, 1351, 1287, 1273, 1265, 1333, 1433, 1619, 1768, 2020, 2337, 2637, 2721, 2283, 1993, 1693, 1536, 1367, 1265, 1199, 1173, 1185, 1247, 1348, 1472, 1651, 1910, 2191, 2602, 2547, 2215, 1898, 1655, 1450, 1316, 1175, 1112, 1100, 1116, 1171, 1268, 1412, 1589, 1828, 2113, 2494, 2494, 2136, 1784, 1589, 1383, 1221, 1131, 1080, 1057, 1078, 1131, 1226, 1380, 1540, 1774, 2091, 2384, 2463, 2151, 1795, 1564, 1348, 1197, 1106, 1047, 1033, 1057, 1120, 1199, 1339, 1528, 1738, 1980, 2384, 2473, 2076, 1784, 1548, 1348, 1209, 1110, 1047, 1024, 1038, 1110, 1194, 1304, 1509, 1743, 2013, 2328, 2547, 2113, 1834, 1581, 1383, 1221, 1127, 1076, 1053, 1072, 1120, 1204, 1348, 1540, 1774, 2027, 2365, 2525, 2159, 1851, 1624, 1450, 1249, 1162, 1096, 1090, 1100, 1175, 1255, 1412, 1581, 1801, 2136, 2433, 2649, 2249, 1910, 1722, 1486, 1348, 1216, 1164, 1164, 1159, 1226, 1324, 1450, 1642, 1868, 2207, 2515, 2893, 2365, 2084, 1779, 1602, 1443, 1336, 1242, 1221, 1252, 1321, 1402, 1577, 1753, 1987, 2301, 2602, 2965, 2494, 2199, 1910, 1688, 1577, 1433, 1367, 1318, 1339, 1426, 1516, 1679, 1851, 2113, 2423, 2907, 3348, 2746, 2365, 2048, 1834, 1693, 1577, 1528, 1490, 1520, 1564, 1679, 1806, 2055, 2301, 2625, 3072, 3656, 2965, 2547, 2257, 2027, 1851, 1722, 1717, 1655, 1669, 1743, 1828, 1993, 2207, 2494, 2851, 3526, 4845, 3293, 2965, 2463, 2257, 2013, 1980, 1857, 1898, 1880, 1973, 2020, 2199, 2483, 2772, 3222, 5008] - }, - "lsc_samples_blue": { - "uCoeff": [3493, 2791, 2385, 2082, 1979, 1766, 1684, 1594, 1623, 1645, 1684, 1792, 1886, 2070, 2354, 2791, 3493, 2975, 2518, 2196, 1990, 1757, 1638, 1573, 1508, 1489, 1501, 1553, 1660, 1749, 1896, 2119, 2417, 2769, 2769, 2339, 2058, 1792, 1630, 1560, 1430, 1350, 1360, 1355, 1402, 1508, 1638, 1792, 2024, 2279, 2609, 2609, 2196, 1906, 1684, 1501, 1430, 1310, 1243, 1238, 1256, 1310, 1419, 1533, 1676, 1886, 2119, 2466, 2466, 2119, 1876, 1601, 1495, 1335, 1205, 1174, 1137, 1137, 1226, 1310, 1430, 1623, 1829, 2058, 2433, 2354, 2012, 1766, 1560, 1386, 1247, 1148, 1089, 1092, 1112, 1163, 1243, 1386, 1527, 1716, 2001, 2279, 2265, 1990, 1716, 1520, 1365, 1193, 1096, 1063, 1039, 1060, 1126, 1193, 1360, 1508, 1699, 1906, 2119, 2209, 1926, 1676, 1471, 1350, 1166, 1086, 1039, 1042, 1045, 1076, 1155, 1306, 1495, 1699, 1906, 2082, 2237, 1979, 1684, 1471, 1306, 1201, 1051, 1042, 1024, 1036, 1086, 1166, 1335, 1441, 1699, 1906, 2309, 2170, 1979, 1766, 1465, 1360, 1193, 1076, 1042, 1024, 1042, 1076, 1205, 1335, 1477, 1699, 1906, 2251, 2323, 1979, 1740, 1540, 1381, 1238, 1126, 1070, 1051, 1073, 1112, 1226, 1355, 1495, 1724, 1990, 2209, 2385, 2012, 1838, 1608, 1430, 1301, 1182, 1148, 1102, 1123, 1213, 1283, 1413, 1560, 1749, 2001, 2385, 2501, 2196, 1958, 1676, 1527, 1391, 1310, 1201, 1193, 1201, 1292, 1365, 1465, 1676, 1838, 2106, 2401, 2667, 2309, 2001, 1766, 1594, 1489, 1386, 1310, 1310, 1325, 1381, 1477, 1587, 1792, 1947, 2251, 2687, 2927, 2483, 2170, 1937, 1749, 1594, 1508, 1465, 1402, 1447, 1471, 1630, 1749, 1857, 2144, 2401, 2707, 3427, 2647, 2339, 2024, 1876, 1757, 1660, 1601, 1623, 1560, 1623, 1707, 1801, 2024, 2196, 2647, 3272, 4610, 2903, 2518, 2183, 2106, 1896, 1792, 1716, 1676, 1660, 1810, 1886, 1979, 2183, 2483, 2903, 4440] - } - }, { - "name": "3264x2448_D50_70", - "resolution": "3264x2448", - "illumination": "D50", - "vignetting": 70, - "lsc_samples_red": { - "uCoeff": [2801, 2445, 2203, 1961, 1859, 1751, 1641, 1610, 1569, 1575, 1661, 1751, 1822, 1947, 2151, 2422, 3125, 2687, 2316, 2053, 1857, 1712, 1630, 1551, 1507, 1463, 1507, 1543, 1611, 1712, 1857, 2009, 2219, 2502, 2545, 2162, 1909, 1761, 1631, 1491, 1397, 1367, 1331, 1387, 1453, 1483, 1603, 1708, 1846, 2048, 2426, 2482, 2025, 1864, 1663, 1554, 1426, 1296, 1270, 1249, 1254, 1314, 1398, 1513, 1653, 1804, 2011, 2350, 2312, 1999, 1783, 1625, 1474, 1345, 1223, 1170, 1175, 1175, 1234, 1364, 1474, 1564, 1740, 1930, 2273, 2394, 1877, 1738, 1597, 1435, 1255, 1161, 1103, 1109, 1112, 1161, 1283, 1367, 1529, 1697, 1942, 2163, 2209, 1898, 1714, 1534, 1390, 1224, 1130, 1063, 1075, 1087, 1139, 1204, 1339, 1494, 1664, 1848, 2091, 2181, 1866, 1668, 1489, 1328, 1185, 1113, 1047, 1024, 1051, 1087, 1205, 1340, 1496, 1658, 1829, 2065, 2149, 1905, 1679, 1506, 1366, 1180, 1104, 1071, 1028, 1063, 1118, 1206, 1360, 1452, 1631, 1831, 2165, 2311, 1956, 1697, 1553, 1359, 1226, 1109, 1055, 1071, 1075, 1113, 1236, 1366, 1505, 1697, 1866, 2129, 2209, 1979, 1757, 1593, 1404, 1303, 1172, 1104, 1092, 1091, 1162, 1274, 1390, 1550, 1757, 1898, 2209, 2351, 1969, 1793, 1662, 1504, 1318, 1247, 1187, 1158, 1162, 1221, 1312, 1465, 1597, 1772, 1942, 2216, 2534, 2089, 1879, 1683, 1580, 1433, 1344, 1258, 1232, 1264, 1313, 1411, 1546, 1674, 1854, 1957, 2332, 2581, 2187, 1997, 1765, 1643, 1541, 1440, 1368, 1350, 1368, 1440, 1500, 1643, 1777, 1955, 2103, 2414, 2859, 2350, 2049, 1903, 1806, 1617, 1556, 1503, 1444, 1503, 1547, 1635, 1718, 1865, 2020, 2233, 2597, 3126, 2422, 2220, 2062, 1921, 1817, 1640, 1675, 1585, 1646, 1679, 1761, 1870, 1961, 2185, 2467, 2839, 3601, 2760, 2445, 2250, 2096, 1971, 1868, 1864, 1842, 1828, 1893, 1971, 2049, 2231, 2317, 2618, 3776] - }, - "lsc_samples_greenR": { - "uCoeff": [2985, 2541, 2296, 2019, 1900, 1757, 1633, 1595, 1569, 1612, 1654, 1670, 1797, 1940, 2118, 2398, 2854, 2663, 2340, 2060, 1904, 1746, 1613, 1553, 1486, 1436, 1468, 1537, 1584, 1707, 1828, 2011, 2275, 2586, 2488, 2193, 1988, 1757, 1631, 1503, 1414, 1363, 1326, 1346, 1394, 1489, 1614, 1762, 1905, 2053, 2412, 2383, 2076, 1858, 1693, 1559, 1422, 1335, 1255, 1236, 1230, 1306, 1406, 1491, 1643, 1807, 2005, 2207, 2378, 2009, 1850, 1601, 1471, 1335, 1234, 1171, 1156, 1164, 1221, 1320, 1439, 1581, 1752, 1924, 2178, 2220, 1962, 1737, 1564, 1386, 1261, 1163, 1110, 1089, 1095, 1152, 1256, 1386, 1525, 1698, 1905, 2098, 2180, 1932, 1719, 1526, 1355, 1232, 1110, 1075, 1057, 1066, 1112, 1197, 1325, 1485, 1658, 1843, 2087, 2213, 1926, 1689, 1509, 1330, 1204, 1079, 1048, 1033, 1042, 1089, 1199, 1330, 1459, 1648, 1854, 2042, 2199, 1946, 1705, 1533, 1322, 1188, 1099, 1038, 1024, 1038, 1095, 1176, 1313, 1488, 1632, 1861, 2103, 2239, 1944, 1709, 1529, 1366, 1214, 1134, 1070, 1055, 1057, 1122, 1197, 1310, 1470, 1657, 1854, 2171, 2267, 2012, 1769, 1564, 1386, 1266, 1146, 1091, 1093, 1093, 1146, 1248, 1367, 1503, 1724, 1908, 2102, 2281, 2072, 1861, 1626, 1469, 1342, 1214, 1169, 1151, 1164, 1222, 1315, 1431, 1601, 1742, 2009, 2202, 2471, 2095, 1940, 1734, 1564, 1449, 1306, 1253, 1222, 1275, 1306, 1406, 1549, 1667, 1832, 2080, 2357, 2522, 2263, 2037, 1810, 1649, 1513, 1435, 1359, 1315, 1355, 1428, 1513, 1644, 1783, 1968, 2177, 2500, 2752, 2396, 2125, 1889, 1779, 1650, 1531, 1486, 1470, 1465, 1578, 1646, 1754, 1908, 2102, 2289, 2606, 2975, 2566, 2270, 2108, 1913, 1758, 1664, 1679, 1606, 1652, 1710, 1764, 1925, 2078, 2234, 2410, 2926, 3948, 2747, 2477, 2272, 2117, 1959, 1917, 1804, 1760, 1772, 1881, 1940, 2002, 2161, 2383, 2747, 3601] - }, - "lsc_samples_greenB": { - "uCoeff": [2866, 2541, 2209, 2086, 1908, 1766, 1689, 1637, 1627, 1603, 1689, 1693, 1822, 2028, 2135, 2369, 2999, 2757, 2371, 2107, 1950, 1754, 1661, 1592, 1501, 1480, 1501, 1564, 1634, 1715, 1895, 2055, 2304, 2549, 2522, 2246, 1971, 1819, 1647, 1552, 1448, 1376, 1353, 1383, 1434, 1496, 1622, 1771, 1977, 2146, 2424, 2404, 2079, 1933, 1687, 1571, 1462, 1332, 1274, 1262, 1253, 1315, 1403, 1563, 1677, 1867, 2086, 2260, 2349, 2060, 1858, 1622, 1495, 1347, 1255, 1193, 1169, 1180, 1238, 1329, 1436, 1584, 1787, 1985, 2256, 2230, 2018, 1786, 1595, 1421, 1303, 1171, 1110, 1099, 1114, 1167, 1257, 1386, 1536, 1725, 1933, 2188, 2200, 1961, 1693, 1540, 1362, 1214, 1129, 1079, 1057, 1077, 1129, 1219, 1359, 1496, 1685, 1923, 2112, 2182, 1979, 1707, 1520, 1331, 1192, 1105, 1047, 1033, 1057, 1119, 1194, 1322, 1487, 1656, 1834, 2118, 2192, 1917, 1698, 1506, 1331, 1204, 1109, 1047, 1024, 1038, 1109, 1189, 1290, 1471, 1662, 1864, 2075, 2249, 1947, 1741, 1536, 1364, 1215, 1125, 1076, 1053, 1072, 1119, 1198, 1331, 1498, 1688, 1874, 2103, 2224, 1980, 1752, 1572, 1425, 1241, 1159, 1095, 1090, 1099, 1172, 1247, 1389, 1533, 1708, 1961, 2151, 2311, 2046, 1797, 1656, 1455, 1333, 1210, 1161, 1162, 1156, 1220, 1310, 1421, 1583, 1760, 2011, 2205, 2483, 2128, 1936, 1699, 1556, 1419, 1323, 1235, 1215, 1245, 1309, 1380, 1533, 1675, 1853, 2075, 2256, 2512, 2213, 2018, 1802, 1625, 1536, 1409, 1350, 1305, 1324, 1403, 1480, 1617, 1750, 1945, 2155, 2467, 2764, 2387, 2135, 1905, 1742, 1631, 1534, 1494, 1460, 1486, 1522, 1619, 1717, 1911, 2082, 2291, 2558, 2939, 2520, 2254, 2058, 1892, 1757, 1653, 1655, 1600, 1611, 1672, 1736, 1862, 2016, 2211, 2432, 2845, 3699, 2718, 2545, 2196, 2060, 1875, 1861, 1761, 1800, 1781, 1855, 1881, 2012, 2213, 2394, 2665, 3813] - }, - "lsc_samples_blue": { - "uCoeff": [2752, 2343, 2090, 1886, 1827, 1663, 1602, 1528, 1556, 1573, 1602, 1685, 1748, 1876, 2066, 2343, 2752, 2444, 2175, 1970, 1834, 1658, 1568, 1519, 1464, 1449, 1458, 1501, 1587, 1651, 1755, 1908, 2097, 2294, 2331, 2064, 1880, 1685, 1561, 1511, 1399, 1328, 1338, 1333, 1373, 1463, 1568, 1685, 1852, 2017, 2211, 2239, 1972, 1770, 1604, 1456, 1400, 1293, 1232, 1228, 1245, 1293, 1390, 1485, 1597, 1753, 1910, 2129, 2150, 1925, 1757, 1540, 1458, 1317, 1197, 1169, 1134, 1133, 1218, 1294, 1398, 1559, 1717, 1875, 2124, 2077, 1848, 1671, 1509, 1362, 1237, 1144, 1088, 1091, 1110, 1159, 1233, 1362, 1479, 1628, 1839, 2018, 2016, 1838, 1633, 1477, 1345, 1187, 1095, 1063, 1039, 1060, 1124, 1187, 1340, 1466, 1618, 1767, 1900, 1977, 1788, 1602, 1435, 1333, 1162, 1085, 1039, 1042, 1045, 1075, 1151, 1291, 1457, 1622, 1772, 1875, 2002, 1835, 1610, 1436, 1292, 1196, 1051, 1042, 1024, 1036, 1085, 1162, 1319, 1408, 1623, 1773, 2060, 1946, 1833, 1681, 1429, 1342, 1188, 1075, 1042, 1024, 1042, 1075, 1199, 1318, 1440, 1622, 1772, 2011, 2063, 1829, 1655, 1496, 1360, 1230, 1124, 1070, 1051, 1072, 1110, 1219, 1336, 1454, 1641, 1838, 1972, 2102, 1848, 1734, 1553, 1403, 1288, 1177, 1146, 1101, 1121, 1207, 1271, 1387, 1509, 1656, 1839, 2102, 2177, 1989, 1828, 1607, 1487, 1370, 1298, 1195, 1188, 1195, 1281, 1345, 1430, 1607, 1725, 1915, 2099, 2283, 2063, 1851, 1676, 1540, 1455, 1365, 1296, 1297, 1310, 1360, 1444, 1534, 1699, 1805, 2016, 2299, 2449, 2178, 1973, 1809, 1667, 1541, 1471, 1435, 1378, 1418, 1437, 1574, 1667, 1740, 1952, 2114, 2284, 2773, 2275, 2086, 1863, 1761, 1673, 1597, 1549, 1571, 1512, 1564, 1629, 1696, 1863, 1970, 2275, 2660, 3534, 2427, 2195, 1968, 1933, 1775, 1696, 1636, 1603, 1587, 1712, 1766, 1827, 1968, 2167, 2427, 3415] - } - }, { - "name": "3264x2448_D65_100", - "resolution": "3264x2448", - "illumination": "D65", - "vignetting": 100, - "lsc_samples_red": { - "uCoeff": [3961, 3057, 2569, 2328, 2059, 1924, 1785, 1700, 1674, 1700, 1785, 1868, 2059, 2231, 2471, 2919, 3775, 3210, 2745, 2328, 2100, 1868, 1728, 1623, 1560, 1545, 1560, 1623, 1700, 1868, 2046, 2246, 2611, 3210, 3087, 2529, 2200, 1936, 1737, 1607, 1454, 1410, 1368, 1404, 1488, 1568, 1728, 1924, 2156, 2415, 3057, 2867, 2345, 2086, 1815, 1623, 1468, 1328, 1276, 1251, 1291, 1351, 1448, 1607, 1815, 2021, 2294, 2745, 2654, 2200, 1959, 1718, 1516, 1351, 1246, 1182, 1173, 1173, 1251, 1351, 1495, 1691, 1924, 2231, 2611, 2654, 2200, 1868, 1615, 1422, 1266, 1186, 1116, 1079, 1116, 1173, 1281, 1441, 1623, 1826, 2100, 2509, 2590, 2100, 1847, 1583, 1391, 1232, 1120, 1061, 1051, 1072, 1136, 1232, 1422, 1560, 1815, 2059, 2452, 2509, 2059, 1826, 1591, 1368, 1191, 1105, 1058, 1027, 1047, 1120, 1218, 1374, 1538, 1766, 2046, 2397, 2529, 2086, 1815, 1568, 1368, 1218, 1097, 1037, 1024, 1037, 1094, 1213, 1374, 1545, 1785, 2059, 2415, 2590, 2100, 1826, 1591, 1391, 1232, 1132, 1068, 1037, 1058, 1109, 1200, 1404, 1583, 1815, 2046, 2452, 2590, 2142, 1868, 1648, 1441, 1281, 1173, 1105, 1083, 1094, 1173, 1291, 1441, 1607, 1847, 2127, 2471, 2792, 2246, 1924, 1700, 1523, 1362, 1236, 1156, 1148, 1191, 1236, 1351, 1509, 1674, 1959, 2185, 2611, 2817, 2345, 2046, 1826, 1615, 1441, 1334, 1266, 1251, 1276, 1345, 1448, 1607, 1785, 2059, 2294, 2745, 2973, 2509, 2200, 1936, 1737, 1607, 1448, 1404, 1374, 1391, 1488, 1583, 1728, 1901, 2142, 2415, 2919, 3275, 2721, 2345, 2086, 1868, 1737, 1640, 1560, 1523, 1523, 1607, 1718, 1857, 2086, 2294, 2590, 3147, 3775, 2973, 2529, 2246, 2021, 1924, 1756, 1700, 1718, 1718, 1785, 1924, 1983, 2231, 2471, 2867, 3606, 5087, 3378, 2892, 2529, 2362, 2142, 2059, 1971, 1901, 1983, 2008, 2156, 2278, 2471, 2745, 3210, 5087] - }, - "lsc_samples_greenR": { - "uCoeff": [3795, 2895, 2488, 2210, 2042, 1887, 1754, 1684, 1671, 1663, 1763, 1820, 2023, 2139, 2443, 2787, 3499, 3214, 2666, 2316, 2061, 1856, 1701, 1599, 1544, 1510, 1513, 1573, 1675, 1801, 2011, 2217, 2545, 3012, 2871, 2470, 2126, 1908, 1714, 1573, 1457, 1399, 1363, 1374, 1448, 1527, 1684, 1851, 2073, 2365, 2776, 2753, 2308, 2023, 1806, 1607, 1448, 1352, 1287, 1253, 1277, 1352, 1442, 1555, 1740, 1947, 2254, 2604, 2676, 2232, 1947, 1705, 1513, 1365, 1253, 1176, 1170, 1176, 1239, 1346, 1470, 1650, 1866, 2126, 2545, 2545, 2146, 1866, 1630, 1420, 1280, 1170, 1114, 1094, 1105, 1168, 1270, 1408, 1584, 1791, 2099, 2399, 2470, 2106, 1820, 1573, 1371, 1233, 1131, 1068, 1055, 1066, 1114, 1224, 1363, 1527, 1754, 1999, 2357, 2416, 2061, 1791, 1562, 1360, 1204, 1101, 1056, 1024, 1043, 1099, 1195, 1328, 1523, 1731, 2011, 2374, 2507, 2073, 1806, 1559, 1374, 1217, 1105, 1051, 1027, 1038, 1112, 1197, 1328, 1503, 1745, 2017, 2308, 2507, 2119, 1835, 1584, 1388, 1226, 1135, 1078, 1045, 1071, 1114, 1217, 1360, 1548, 1763, 2054, 2365, 2574, 2188, 1871, 1634, 1442, 1277, 1164, 1107, 1087, 1099, 1168, 1277, 1417, 1581, 1801, 2080, 2416, 2666, 2217, 1964, 1696, 1513, 1354, 1242, 1176, 1150, 1181, 1233, 1338, 1483, 1671, 1887, 2167, 2479, 2787, 2341, 2054, 1806, 1607, 1451, 1328, 1265, 1242, 1263, 1335, 1457, 1581, 1763, 1976, 2262, 2676, 2972, 2479, 2188, 1903, 1731, 1581, 1470, 1397, 1365, 1391, 1451, 1570, 1688, 1871, 2106, 2399, 2787, 3214, 2698, 2332, 2080, 1866, 1718, 1599, 1523, 1499, 1527, 1596, 1696, 1840, 2042, 2285, 2584, 3026, 3611, 2972, 2564, 2239, 2042, 1887, 1772, 1705, 1684, 1705, 1758, 1887, 2036, 2217, 2507, 2846, 3445, 4903, 3325, 2846, 2516, 2239, 2106, 1947, 1925, 1840, 1919, 1964, 2042, 2269, 2425, 2709, 3124, 4698] - }, - "lsc_samples_greenB": { - "uCoeff": [3674, 2933, 2477, 2244, 2014, 1863, 1755, 1719, 1693, 1693, 1750, 1857, 2032, 2207, 2477, 2845, 3483, 3199, 2685, 2306, 2083, 1868, 1723, 1627, 1562, 1548, 1548, 1592, 1693, 1832, 2032, 2229, 2572, 2999, 2858, 2477, 2129, 1933, 1750, 1585, 1476, 1411, 1384, 1396, 1460, 1562, 1676, 1868, 2090, 2414, 2833, 2810, 2306, 2032, 1798, 1627, 1483, 1345, 1286, 1264, 1288, 1348, 1444, 1566, 1755, 1973, 2259, 2685, 2633, 2207, 1933, 1710, 1527, 1373, 1274, 1175, 1177, 1175, 1243, 1340, 1476, 1676, 1868, 2150, 2504, 2533, 2136, 1857, 1627, 1432, 1271, 1179, 1120, 1100, 1118, 1169, 1274, 1402, 1585, 1812, 2070, 2458, 2414, 2090, 1802, 1573, 1367, 1236, 1130, 1073, 1045, 1066, 1120, 1231, 1367, 1551, 1750, 2014, 2346, 2414, 2064, 1783, 1541, 1359, 1211, 1107, 1045, 1024, 1046, 1094, 1198, 1332, 1509, 1723, 1984, 2330, 2414, 2045, 1764, 1527, 1348, 1211, 1102, 1051, 1024, 1045, 1094, 1196, 1332, 1506, 1723, 1990, 2306, 2405, 2064, 1812, 1555, 1365, 1225, 1120, 1060, 1040, 1056, 1113, 1218, 1348, 1520, 1737, 2014, 2330, 2495, 2109, 1857, 1611, 1423, 1266, 1159, 1089, 1084, 1094, 1151, 1257, 1393, 1577, 1798, 2064, 2346, 2633, 2164, 1938, 1693, 1473, 1324, 1225, 1151, 1133, 1153, 1207, 1324, 1466, 1655, 1842, 2116, 2504, 2707, 2298, 2014, 1769, 1600, 1411, 1324, 1248, 1227, 1255, 1311, 1420, 1555, 1732, 1938, 2222, 2685, 2933, 2458, 2116, 1894, 1710, 1541, 1432, 1367, 1337, 1359, 1426, 1520, 1680, 1857, 2083, 2388, 2775, 3067, 2653, 2274, 2026, 1832, 1680, 1577, 1527, 1483, 1506, 1577, 1680, 1812, 2002, 2244, 2552, 3053, 3576, 2895, 2477, 2222, 2026, 1832, 1723, 1668, 1655, 1676, 1723, 1847, 1984, 2157, 2432, 2810, 3412, 4845, 3215, 2775, 2414, 2185, 2045, 1911, 1900, 1847, 1878, 1916, 2070, 2185, 2405, 2696, 3096, 4580] - }, - "lsc_samples_blue": { - "uCoeff": [3195, 2638, 2235, 2000, 1856, 1738, 1653, 1576, 1559, 1576, 1617, 1698, 1810, 1921, 2246, 2531, 3291, 2843, 2474, 2106, 1864, 1725, 1593, 1511, 1456, 1427, 1456, 1495, 1576, 1685, 1818, 2028, 2355, 2754, 2576, 2235, 1947, 1788, 1593, 1475, 1400, 1340, 1316, 1332, 1382, 1456, 1576, 1718, 1896, 2158, 2591, 2474, 2076, 1833, 1653, 1506, 1369, 1289, 1231, 1221, 1241, 1270, 1365, 1495, 1623, 1795, 2056, 2406, 2317, 2000, 1766, 1565, 1418, 1293, 1207, 1150, 1135, 1150, 1188, 1278, 1400, 1559, 1725, 1964, 2235, 2212, 1947, 1705, 1511, 1369, 1221, 1147, 1090, 1082, 1098, 1138, 1241, 1332, 1470, 1653, 1896, 2168, 2168, 1872, 1660, 1446, 1300, 1178, 1093, 1059, 1041, 1051, 1101, 1188, 1312, 1432, 1623, 1818, 2126, 2158, 1872, 1635, 1432, 1304, 1159, 1085, 1041, 1024, 1056, 1074, 1150, 1263, 1427, 1593, 1833, 2126, 2106, 1864, 1641, 1418, 1281, 1144, 1077, 1043, 1039, 1041, 1074, 1150, 1289, 1418, 1599, 1810, 2066, 2190, 1864, 1623, 1475, 1304, 1178, 1085, 1039, 1034, 1041, 1090, 1166, 1281, 1441, 1617, 1841, 2096, 2190, 1921, 1698, 1506, 1332, 1201, 1112, 1085, 1051, 1074, 1118, 1197, 1328, 1470, 1641, 1864, 2158, 2269, 1973, 1738, 1548, 1396, 1252, 1169, 1121, 1101, 1121, 1178, 1263, 1365, 1537, 1705, 1947, 2269, 2433, 2037, 1788, 1617, 1461, 1340, 1241, 1178, 1169, 1175, 1252, 1340, 1456, 1582, 1795, 2028, 2367, 2531, 2190, 1938, 1718, 1576, 1441, 1340, 1278, 1252, 1281, 1352, 1409, 1543, 1698, 1872, 2106, 2474, 2862, 2393, 2037, 1818, 1653, 1543, 1446, 1387, 1374, 1369, 1470, 1543, 1672, 1818, 2009, 2246, 2686, 3195, 2591, 2201, 1921, 1788, 1679, 1559, 1506, 1506, 1543, 1565, 1660, 1759, 1913, 2137, 2488, 2999, 4089, 2807, 2446, 2168, 1938, 1833, 1705, 1653, 1635, 1641, 1685, 1810, 1921, 2076, 2317, 2737, 4331] - } - }, { - "name": "3264x2448_D65_70", - "resolution": "3264x2448", - "illumination": "D65", - "vignetting": 70, - "lsc_samples_red": { - "uCoeff": [3080, 2542, 2234, 2086, 1894, 1799, 1690, 1622, 1601, 1622, 1690, 1751, 1894, 2007, 2158, 2439, 2950, 2615, 2350, 2077, 1927, 1754, 1648, 1564, 1512, 1500, 1512, 1564, 1623, 1754, 1881, 2011, 2247, 2615, 2569, 2215, 1998, 1808, 1656, 1553, 1421, 1384, 1346, 1378, 1452, 1518, 1648, 1798, 1962, 2125, 2546, 2436, 2092, 1923, 1719, 1566, 1435, 1310, 1264, 1241, 1278, 1332, 1417, 1552, 1719, 1868, 2051, 2343, 2296, 1992, 1829, 1644, 1477, 1332, 1237, 1177, 1169, 1168, 1241, 1332, 1458, 1620, 1799, 2018, 2263, 2315, 2005, 1760, 1559, 1395, 1255, 1181, 1114, 1078, 1114, 1169, 1269, 1413, 1566, 1724, 1922, 2200, 2276, 1931, 1749, 1535, 1370, 1224, 1118, 1061, 1051, 1071, 1134, 1224, 1399, 1514, 1721, 1896, 2166, 2219, 1901, 1734, 1545, 1350, 1186, 1104, 1058, 1027, 1047, 1119, 1212, 1355, 1496, 1681, 1890, 2129, 2237, 1926, 1726, 1525, 1350, 1212, 1096, 1037, 1024, 1037, 1093, 1207, 1356, 1504, 1699, 1903, 2145, 2284, 1936, 1734, 1545, 1372, 1226, 1130, 1068, 1037, 1058, 1108, 1195, 1384, 1538, 1725, 1890, 2173, 2276, 1966, 1767, 1594, 1417, 1272, 1170, 1104, 1083, 1093, 1170, 1281, 1417, 1557, 1749, 1953, 2181, 2424, 2044, 1809, 1636, 1490, 1347, 1230, 1153, 1146, 1188, 1230, 1336, 1476, 1612, 1840, 1993, 2281, 2424, 2111, 1904, 1741, 1568, 1417, 1321, 1258, 1244, 1268, 1332, 1424, 1561, 1704, 1915, 2069, 2368, 2518, 2225, 2019, 1825, 1669, 1564, 1424, 1386, 1358, 1373, 1461, 1542, 1661, 1794, 1970, 2149, 2476, 2710, 2367, 2118, 1937, 1772, 1671, 1593, 1524, 1491, 1489, 1562, 1654, 1763, 1937, 2076, 2263, 2614, 3026, 2526, 2239, 2049, 1886, 1821, 1683, 1639, 1658, 1655, 1709, 1821, 1854, 2036, 2192, 2444, 2903, 3868, 2782, 2488, 2250, 2149, 1986, 1930, 1862, 1802, 1872, 1886, 1998, 2078, 2203, 2372, 2656, 3868] - }, - "lsc_samples_greenR": { - "uCoeff": [2964, 2421, 2171, 1990, 1880, 1767, 1663, 1608, 1598, 1589, 1671, 1709, 1864, 1932, 2136, 2340, 2757, 2618, 2289, 2067, 1894, 1744, 1624, 1542, 1497, 1468, 1469, 1519, 1601, 1696, 1852, 1987, 2196, 2471, 2407, 2168, 1937, 1784, 1636, 1522, 1424, 1374, 1341, 1350, 1415, 1481, 1609, 1735, 1893, 2085, 2336, 2349, 2062, 1869, 1711, 1552, 1417, 1333, 1274, 1243, 1265, 1333, 1411, 1505, 1653, 1805, 2019, 2235, 2314, 2018, 1819, 1632, 1474, 1345, 1243, 1171, 1166, 1171, 1230, 1327, 1435, 1583, 1749, 1931, 2211, 2228, 1960, 1759, 1573, 1393, 1268, 1166, 1112, 1093, 1103, 1164, 1259, 1382, 1531, 1693, 1921, 2113, 2180, 1936, 1725, 1526, 1351, 1225, 1129, 1068, 1055, 1066, 1112, 1217, 1343, 1484, 1667, 1846, 2090, 2144, 1903, 1703, 1518, 1342, 1198, 1100, 1056, 1024, 1043, 1098, 1190, 1312, 1483, 1650, 1860, 2110, 2219, 1915, 1718, 1517, 1356, 1211, 1104, 1051, 1027, 1038, 1111, 1192, 1312, 1465, 1664, 1867, 2059, 2217, 1952, 1742, 1539, 1369, 1220, 1133, 1078, 1045, 1071, 1113, 1211, 1342, 1506, 1679, 1897, 2103, 2264, 2005, 1770, 1581, 1418, 1268, 1161, 1106, 1087, 1098, 1165, 1268, 1394, 1533, 1708, 1914, 2137, 2324, 2020, 1844, 1632, 1480, 1339, 1236, 1173, 1148, 1178, 1227, 1324, 1452, 1610, 1777, 1978, 2176, 2400, 2108, 1911, 1723, 1561, 1426, 1315, 1257, 1236, 1255, 1322, 1432, 1537, 1684, 1843, 2043, 2314, 2517, 2201, 2009, 1796, 1664, 1540, 1444, 1379, 1350, 1373, 1426, 1530, 1625, 1768, 1939, 2136, 2375, 2664, 2349, 2107, 1932, 1771, 1654, 1555, 1489, 1468, 1493, 1552, 1634, 1748, 1900, 2068, 2258, 2523, 2906, 2525, 2267, 2043, 1905, 1788, 1698, 1644, 1627, 1644, 1685, 1788, 1899, 2025, 2221, 2428, 2786, 3739, 2742, 2452, 2239, 2045, 1955, 1832, 1821, 1748, 1816, 1847, 1900, 2070, 2165, 2344, 2592, 3596] - }, - "lsc_samples_greenB": { - "uCoeff": [2879, 2449, 2162, 2018, 1856, 1746, 1664, 1639, 1618, 1616, 1660, 1741, 1871, 1988, 2162, 2384, 2745, 2607, 2304, 2059, 1912, 1754, 1643, 1567, 1514, 1502, 1501, 1536, 1617, 1723, 1870, 1997, 2217, 2461, 2397, 2174, 1939, 1806, 1668, 1533, 1441, 1385, 1361, 1371, 1426, 1512, 1602, 1750, 1907, 2124, 2379, 2393, 2061, 1877, 1704, 1570, 1449, 1326, 1273, 1253, 1275, 1329, 1413, 1515, 1666, 1827, 2023, 2297, 2280, 1998, 1806, 1637, 1487, 1353, 1264, 1170, 1173, 1170, 1234, 1322, 1440, 1607, 1751, 1951, 2179, 2219, 1952, 1751, 1570, 1405, 1260, 1174, 1118, 1099, 1116, 1165, 1263, 1377, 1532, 1711, 1897, 2159, 2136, 1922, 1709, 1526, 1347, 1228, 1128, 1072, 1045, 1066, 1118, 1223, 1347, 1506, 1663, 1858, 2081, 2142, 1905, 1696, 1499, 1341, 1205, 1106, 1045, 1024, 1046, 1093, 1193, 1316, 1470, 1643, 1838, 2075, 2144, 1891, 1681, 1487, 1331, 1206, 1101, 1051, 1024, 1045, 1093, 1191, 1316, 1468, 1644, 1844, 2057, 2135, 1905, 1722, 1512, 1347, 1219, 1119, 1060, 1040, 1056, 1112, 1212, 1331, 1480, 1656, 1863, 2075, 2200, 1938, 1758, 1560, 1400, 1257, 1156, 1088, 1084, 1093, 1148, 1249, 1371, 1529, 1706, 1900, 2081, 2298, 1975, 1821, 1630, 1443, 1310, 1219, 1148, 1131, 1150, 1202, 1310, 1436, 1595, 1738, 1935, 2196, 2338, 2073, 1876, 1690, 1554, 1389, 1311, 1241, 1221, 1248, 1299, 1397, 1513, 1657, 1811, 2010, 2321, 2487, 2184, 1948, 1788, 1645, 1503, 1408, 1350, 1323, 1343, 1403, 1484, 1618, 1756, 1920, 2127, 2366, 2554, 2313, 2059, 1886, 1740, 1620, 1534, 1493, 1453, 1473, 1534, 1620, 1723, 1865, 2034, 2233, 2543, 2881, 2466, 2197, 2029, 1891, 1740, 1654, 1610, 1600, 1617, 1654, 1753, 1854, 1974, 2161, 2400, 2762, 3699, 2660, 2396, 2156, 2000, 1903, 1801, 1799, 1754, 1779, 1805, 1924, 2000, 2149, 2334, 2571, 3513] - }, - "lsc_samples_blue": { - "uCoeff": [2544, 2229, 1973, 1819, 1723, 1639, 1575, 1512, 1499, 1512, 1543, 1604, 1685, 1755, 1981, 2149, 2611, 2348, 2141, 1898, 1729, 1630, 1528, 1463, 1417, 1392, 1417, 1448, 1513, 1596, 1690, 1835, 2050, 2283, 2186, 1982, 1788, 1681, 1529, 1433, 1371, 1319, 1297, 1311, 1354, 1416, 1513, 1621, 1746, 1921, 2197, 2135, 1875, 1708, 1576, 1460, 1344, 1274, 1221, 1212, 1231, 1256, 1340, 1450, 1550, 1676, 1859, 2083, 2033, 1827, 1663, 1507, 1387, 1278, 1199, 1146, 1132, 1146, 1181, 1263, 1370, 1502, 1627, 1798, 1969, 1965, 1794, 1618, 1465, 1346, 1212, 1143, 1089, 1081, 1097, 1135, 1231, 1311, 1428, 1573, 1752, 1930, 1939, 1739, 1584, 1410, 1284, 1172, 1092, 1059, 1041, 1051, 1099, 1182, 1295, 1397, 1552, 1693, 1905, 1936, 1743, 1565, 1399, 1289, 1155, 1084, 1041, 1024, 1056, 1073, 1146, 1250, 1394, 1528, 1710, 1911, 1896, 1737, 1572, 1387, 1268, 1141, 1076, 1043, 1039, 1041, 1073, 1146, 1275, 1387, 1534, 1691, 1864, 1962, 1736, 1555, 1438, 1289, 1173, 1084, 1039, 1034, 1041, 1089, 1162, 1267, 1407, 1549, 1716, 1886, 1956, 1780, 1618, 1464, 1314, 1195, 1110, 1084, 1051, 1073, 1116, 1191, 1310, 1432, 1567, 1732, 1931, 2010, 1816, 1647, 1498, 1371, 1242, 1165, 1119, 1100, 1119, 1173, 1252, 1342, 1488, 1618, 1794, 2010, 2124, 1858, 1682, 1554, 1426, 1322, 1232, 1173, 1165, 1170, 1242, 1322, 1422, 1523, 1688, 1850, 2072, 2179, 1967, 1797, 1634, 1524, 1410, 1322, 1266, 1242, 1269, 1333, 1381, 1494, 1616, 1741, 1899, 2135, 2400, 2107, 1863, 1707, 1582, 1495, 1414, 1362, 1351, 1346, 1436, 1495, 1599, 1707, 1840, 1991, 2269, 2604, 2232, 1974, 1776, 1685, 1604, 1506, 1463, 1464, 1496, 1511, 1587, 1660, 1770, 1923, 2152, 2461, 3170, 2355, 2138, 1956, 1792, 1720, 1620, 1580, 1566, 1570, 1603, 1701, 1778, 1881, 2037, 2303, 3339] - } - }, { - "name": "3264x2448_D75_100", - "resolution": "3264x2448", - "illumination": "D75", - "vignetting": 100, - "lsc_samples_red": { - "uCoeff": [4057, 3248, 2635, 2340, 2136, 1951, 1795, 1753, 1763, 1785, 1852, 1964, 2105, 2322, 2521, 2953, 3895, 3321, 2895, 2418, 2167, 1900, 1785, 1654, 1617, 1574, 1626, 1635, 1795, 1888, 2090, 2359, 2708, 3248, 3248, 2500, 2216, 1964, 1785, 1608, 1509, 1456, 1381, 1435, 1509, 1608, 1774, 1951, 2183, 2458, 3110, 2953, 2398, 2075, 1841, 1635, 1525, 1387, 1290, 1279, 1301, 1387, 1479, 1617, 1829, 2075, 2340, 2683, 2839, 2233, 1991, 1712, 1582, 1381, 1262, 1225, 1171, 1205, 1279, 1375, 1525, 1722, 1964, 2216, 2659, 2708, 2216, 1951, 1682, 1501, 1301, 1215, 1131, 1113, 1109, 1200, 1325, 1501, 1692, 1888, 2183, 2500, 2635, 2167, 1876, 1644, 1435, 1251, 1148, 1057, 1053, 1085, 1167, 1290, 1442, 1654, 1829, 2136, 2588, 2566, 2090, 1852, 1574, 1394, 1220, 1101, 1050, 1042, 1046, 1105, 1241, 1387, 1582, 1795, 2105, 2458, 2588, 2075, 1852, 1608, 1375, 1225, 1097, 1046, 1024, 1039, 1089, 1225, 1381, 1541, 1829, 2090, 2521, 2635, 2167, 1864, 1608, 1435, 1257, 1113, 1053, 1057, 1057, 1135, 1246, 1428, 1617, 1864, 2105, 2418, 2839, 2200, 1964, 1692, 1486, 1337, 1200, 1139, 1085, 1153, 1210, 1331, 1456, 1673, 1876, 2200, 2635, 2839, 2359, 2046, 1785, 1557, 1375, 1296, 1205, 1185, 1215, 1279, 1381, 1549, 1732, 1964, 2268, 2683, 3014, 2418, 2090, 1841, 1644, 1449, 1343, 1290, 1296, 1290, 1375, 1494, 1626, 1852, 2061, 2340, 2812, 3077, 2521, 2233, 1938, 1785, 1599, 1509, 1421, 1421, 1435, 1494, 1574, 1795, 1938, 2167, 2500, 3045, 3321, 2759, 2340, 2090, 1938, 1763, 1635, 1565, 1541, 1541, 1654, 1774, 1876, 2075, 2303, 2683, 3143, 3844, 3077, 2635, 2285, 2136, 1964, 1841, 1785, 1732, 1774, 1807, 1925, 2061, 2268, 2588, 2953, 3844, 5211, 3359, 3014, 2611, 2418, 2183, 2090, 2046, 2046, 2075, 2105, 2167, 2303, 2635, 2953, 3399, 5120] - }, - "lsc_samples_greenR": { - "uCoeff": [3711, 3002, 2580, 2209, 2064, 1882, 1738, 1689, 1655, 1734, 1716, 1850, 1977, 2166, 2428, 2923, 3908, 3286, 2741, 2301, 2083, 1892, 1707, 1615, 1550, 1525, 1540, 1588, 1698, 1855, 1983, 2231, 2663, 3270, 2989, 2437, 2124, 1898, 1720, 1561, 1468, 1390, 1367, 1405, 1448, 1558, 1672, 1860, 2064, 2376, 2823, 2823, 2301, 2014, 1810, 1584, 1458, 1353, 1278, 1263, 1273, 1326, 1417, 1565, 1747, 1954, 2209, 2685, 2663, 2231, 1954, 1707, 1518, 1353, 1265, 1184, 1175, 1190, 1235, 1359, 1471, 1635, 1830, 2138, 2560, 2580, 2151, 1898, 1655, 1452, 1293, 1192, 1135, 1125, 1127, 1175, 1280, 1433, 1591, 1815, 2097, 2455, 2455, 2110, 1824, 1584, 1423, 1253, 1141, 1092, 1074, 1092, 1149, 1244, 1376, 1550, 1780, 2045, 2376, 2455, 2090, 1805, 1558, 1367, 1221, 1123, 1060, 1035, 1064, 1103, 1201, 1353, 1518, 1752, 1995, 2359, 2455, 2077, 1785, 1554, 1353, 1207, 1123, 1050, 1024, 1043, 1114, 1219, 1324, 1508, 1698, 1995, 2301, 2642, 2097, 1845, 1561, 1388, 1244, 1145, 1085, 1064, 1081, 1133, 1239, 1359, 1558, 1752, 2014, 2350, 2707, 2187, 1882, 1655, 1452, 1313, 1184, 1135, 1104, 1133, 1194, 1298, 1445, 1615, 1805, 2083, 2419, 2685, 2247, 1977, 1738, 1525, 1373, 1256, 1197, 1159, 1197, 1265, 1345, 1478, 1672, 1903, 2180, 2590, 2859, 2384, 2051, 1815, 1603, 1452, 1337, 1268, 1246, 1278, 1345, 1433, 1584, 1766, 1972, 2239, 2707, 3072, 2560, 2138, 1914, 1707, 1558, 1455, 1376, 1373, 1385, 1455, 1536, 1698, 1866, 2070, 2428, 2884, 3286, 2763, 2342, 2090, 1887, 1729, 1611, 1529, 1511, 1536, 1588, 1689, 1830, 2026, 2262, 2663, 3044, 3711, 3030, 2653, 2262, 2064, 1898, 1752, 1711, 1689, 1720, 1752, 1898, 2020, 2187, 2580, 2897, 3629, 5160, 3422, 2923, 2492, 2301, 2077, 1954, 1926, 1882, 1903, 1972, 2051, 2254, 2419, 2823, 3238, 4752] - }, - "lsc_samples_greenB": { - "uCoeff": [3822, 3058, 2578, 2267, 2035, 1917, 1763, 1739, 1699, 1681, 1748, 1889, 2029, 2163, 2500, 2896, 3652, 3337, 2728, 2331, 2080, 1900, 1748, 1635, 1554, 1547, 1543, 1611, 1712, 1862, 2010, 2275, 2662, 3101, 3002, 2490, 2121, 1900, 1744, 1565, 1471, 1405, 1417, 1414, 1442, 1543, 1708, 1889, 2067, 2417, 2883, 2762, 2267, 2029, 1777, 1603, 1454, 1367, 1289, 1267, 1284, 1333, 1429, 1580, 1721, 1962, 2251, 2662, 2662, 2177, 1917, 1703, 1525, 1367, 1259, 1195, 1172, 1195, 1255, 1361, 1487, 1656, 1841, 2128, 2558, 2568, 2134, 1873, 1635, 1451, 1312, 1200, 1137, 1124, 1149, 1191, 1294, 1429, 1611, 1852, 2080, 2500, 2538, 2074, 1821, 1600, 1414, 1250, 1164, 1105, 1081, 1094, 1149, 1236, 1378, 1532, 1772, 2023, 2348, 2462, 2035, 1777, 1532, 1367, 1202, 1122, 1047, 1034, 1059, 1110, 1204, 1331, 1498, 1730, 1986, 2315, 2408, 1986, 1777, 1532, 1358, 1202, 1114, 1047, 1024, 1054, 1107, 1189, 1331, 1498, 1725, 1957, 2340, 2481, 2080, 1801, 1550, 1378, 1240, 1122, 1076, 1045, 1079, 1126, 1231, 1370, 1543, 1758, 2023, 2382, 2558, 2155, 1878, 1631, 1435, 1279, 1182, 1110, 1107, 1110, 1180, 1294, 1429, 1588, 1821, 2074, 2471, 2662, 2236, 1906, 1681, 1504, 1339, 1231, 1180, 1155, 1178, 1236, 1358, 1474, 1639, 1889, 2134, 2578, 2797, 2275, 1986, 1777, 1584, 1423, 1328, 1247, 1220, 1247, 1317, 1411, 1565, 1730, 1939, 2221, 2672, 2935, 2426, 2080, 1857, 1694, 1540, 1405, 1361, 1347, 1355, 1417, 1532, 1664, 1821, 2054, 2399, 2809, 3254, 2728, 2291, 2023, 1816, 1677, 1588, 1515, 1491, 1518, 1588, 1664, 1816, 1962, 2191, 2609, 3207, 3673, 2988, 2578, 2214, 2017, 1857, 1748, 1694, 1703, 1677, 1767, 1836, 1974, 2170, 2500, 2871, 3612, 5388, 3354, 2822, 2490, 2221, 2042, 1974, 1945, 1873, 1934, 1889, 2054, 2214, 2408, 2797, 3238, 4906] - }, - "lsc_samples_blue": { - "uCoeff": [3326, 2769, 2360, 2056, 1881, 1701, 1641, 1624, 1527, 1568, 1601, 1689, 1920, 1985, 2224, 2673, 3374, 2964, 2541, 2172, 1920, 1759, 1568, 1507, 1437, 1446, 1446, 1488, 1585, 1689, 1881, 2065, 2434, 2837, 2704, 2278, 1985, 1786, 1596, 1464, 1369, 1330, 1282, 1300, 1369, 1437, 1537, 1707, 1912, 2203, 2613, 2473, 2112, 1858, 1647, 1460, 1341, 1254, 1202, 1196, 1228, 1251, 1369, 1437, 1579, 1800, 2029, 2447, 2313, 2020, 1766, 1558, 1415, 1289, 1215, 1154, 1129, 1157, 1199, 1275, 1394, 1522, 1720, 1969, 2267, 2384, 1977, 1707, 1517, 1357, 1247, 1151, 1105, 1092, 1105, 1146, 1228, 1341, 1478, 1695, 1912, 2278, 2256, 1920, 1670, 1469, 1307, 1193, 1126, 1076, 1066, 1084, 1115, 1193, 1322, 1420, 1647, 1904, 2151, 2192, 1904, 1618, 1433, 1282, 1166, 1066, 1047, 1045, 1057, 1094, 1157, 1268, 1390, 1579, 1822, 2112, 2182, 1881, 1612, 1424, 1278, 1148, 1079, 1031, 1024, 1035, 1076, 1146, 1264, 1377, 1585, 1836, 2142, 2224, 1912, 1664, 1437, 1282, 1178, 1092, 1057, 1054, 1054, 1086, 1178, 1275, 1415, 1601, 1873, 2122, 2245, 1969, 1707, 1478, 1334, 1218, 1126, 1094, 1084, 1084, 1113, 1224, 1334, 1478, 1676, 1881, 2192, 2348, 2029, 1773, 1532, 1402, 1251, 1199, 1143, 1126, 1129, 1178, 1254, 1369, 1537, 1707, 1969, 2372, 2447, 2093, 1836, 1612, 1428, 1322, 1231, 1181, 1169, 1178, 1228, 1338, 1433, 1579, 1807, 2029, 2384, 2584, 2224, 1944, 1701, 1483, 1394, 1318, 1258, 1241, 1268, 1334, 1402, 1527, 1652, 1912, 2074, 2555, 2890, 2447, 2093, 1881, 1652, 1537, 1451, 1386, 1386, 1398, 1433, 1532, 1624, 1793, 2020, 2313, 2769, 3279, 2673, 2336, 2003, 1807, 1695, 1574, 1517, 1527, 1517, 1596, 1658, 1807, 1960, 2213, 2598, 3302, 4359, 2803, 2500, 2172, 1985, 1836, 1746, 1664, 1624, 1652, 1676, 1904, 1960, 2103, 2384, 2803, 4400] - } - }, { - "name": "3264x2448_D75_70", - "resolution": "3264x2448", - "illumination": "D75", - "vignetting": 70, - "lsc_samples_red": { - "uCoeff": [3147, 2685, 2286, 2096, 1959, 1822, 1699, 1669, 1680, 1697, 1749, 1833, 1933, 2081, 2197, 2464, 3034, 2695, 2466, 2149, 1983, 1782, 1698, 1591, 1564, 1526, 1572, 1574, 1707, 1771, 1918, 2102, 2322, 2642, 2689, 2192, 2011, 1832, 1699, 1554, 1472, 1427, 1358, 1407, 1472, 1554, 1689, 1821, 1984, 2159, 2586, 2502, 2135, 1913, 1742, 1577, 1488, 1366, 1277, 1267, 1288, 1366, 1446, 1561, 1731, 1913, 2088, 2295, 2441, 2019, 1856, 1639, 1538, 1360, 1252, 1219, 1167, 1199, 1268, 1355, 1485, 1648, 1833, 2005, 2300, 2357, 2019, 1833, 1620, 1469, 1288, 1209, 1129, 1112, 1107, 1195, 1311, 1469, 1629, 1778, 1991, 2193, 2312, 1987, 1774, 1591, 1411, 1243, 1145, 1057, 1053, 1084, 1164, 1280, 1418, 1600, 1733, 1961, 2275, 2265, 1927, 1757, 1529, 1374, 1214, 1100, 1050, 1042, 1046, 1104, 1234, 1368, 1537, 1707, 1940, 2178, 2285, 1916, 1759, 1562, 1357, 1219, 1096, 1046, 1024, 1039, 1088, 1219, 1363, 1500, 1738, 1929, 2231, 2320, 1993, 1768, 1561, 1413, 1250, 1112, 1053, 1057, 1057, 1133, 1239, 1407, 1569, 1768, 1940, 2145, 2476, 2015, 1852, 1634, 1459, 1326, 1196, 1138, 1085, 1152, 1206, 1320, 1431, 1617, 1774, 2015, 2312, 2461, 2138, 1916, 1713, 1521, 1359, 1288, 1201, 1182, 1211, 1272, 1365, 1514, 1665, 1844, 2062, 2338, 2578, 2172, 1942, 1754, 1595, 1425, 1330, 1281, 1288, 1281, 1360, 1467, 1578, 1764, 1917, 2107, 2420, 2597, 2235, 2047, 1827, 1713, 1557, 1481, 1402, 1403, 1415, 1467, 1534, 1722, 1827, 1991, 2218, 2573, 2744, 2397, 2114, 1941, 1834, 1695, 1588, 1528, 1508, 1506, 1606, 1705, 1779, 1928, 2083, 2337, 2611, 3076, 2606, 2325, 2082, 1986, 1857, 1760, 1716, 1670, 1706, 1729, 1822, 1921, 2067, 2287, 2511, 3076, 3955, 2768, 2583, 2317, 2196, 2022, 1957, 1928, 1931, 1954, 1970, 2008, 2099, 2336, 2535, 2797, 3891] - }, - "lsc_samples_greenR": { - "uCoeff": [2905, 2501, 2243, 1989, 1898, 1763, 1649, 1612, 1584, 1652, 1630, 1735, 1825, 1954, 2124, 2442, 3043, 2670, 2347, 2055, 1912, 1775, 1629, 1556, 1503, 1481, 1493, 1532, 1621, 1743, 1828, 1998, 2287, 2658, 2496, 2142, 1935, 1776, 1641, 1511, 1434, 1365, 1345, 1379, 1415, 1509, 1599, 1743, 1885, 2094, 2371, 2403, 2057, 1862, 1714, 1531, 1426, 1334, 1266, 1252, 1261, 1309, 1388, 1514, 1659, 1811, 1982, 2297, 2304, 2018, 1825, 1634, 1479, 1334, 1255, 1179, 1171, 1185, 1226, 1340, 1436, 1570, 1718, 1941, 2223, 2256, 1964, 1786, 1595, 1423, 1281, 1187, 1133, 1123, 1125, 1171, 1268, 1406, 1537, 1714, 1919, 2157, 2168, 1939, 1729, 1536, 1400, 1245, 1139, 1091, 1074, 1091, 1146, 1236, 1355, 1505, 1690, 1884, 2105, 2175, 1927, 1716, 1515, 1349, 1215, 1122, 1060, 1035, 1064, 1102, 1196, 1336, 1478, 1669, 1847, 2098, 2178, 1918, 1699, 1512, 1336, 1202, 1122, 1050, 1024, 1043, 1113, 1213, 1309, 1470, 1622, 1849, 2053, 2326, 1933, 1751, 1518, 1369, 1237, 1143, 1085, 1064, 1081, 1131, 1232, 1341, 1515, 1669, 1863, 2091, 2370, 2004, 1780, 1601, 1427, 1303, 1181, 1134, 1103, 1132, 1191, 1288, 1420, 1564, 1712, 1916, 2140, 2339, 2045, 1855, 1670, 1491, 1357, 1249, 1194, 1157, 1194, 1258, 1330, 1448, 1611, 1791, 1989, 2264, 2457, 2144, 1908, 1731, 1557, 1427, 1324, 1260, 1240, 1270, 1332, 1409, 1540, 1687, 1840, 2024, 2338, 2594, 2266, 1967, 1806, 1642, 1519, 1430, 1359, 1357, 1368, 1430, 1498, 1634, 1764, 1909, 2160, 2449, 2718, 2400, 2116, 1941, 1789, 1664, 1566, 1495, 1480, 1501, 1545, 1628, 1739, 1886, 2049, 2321, 2537, 2979, 2570, 2339, 2062, 1924, 1798, 1680, 1649, 1631, 1657, 1680, 1798, 1886, 2000, 2280, 2467, 2920, 3919, 2815, 2512, 2220, 2097, 1930, 1838, 1822, 1785, 1801, 1854, 1908, 2058, 2160, 2434, 2677, 3634] - }, - "lsc_samples_greenB": { - "uCoeff": [2983, 2543, 2242, 2037, 1874, 1793, 1671, 1656, 1623, 1605, 1658, 1769, 1869, 1952, 2180, 2422, 2864, 2707, 2337, 2079, 1910, 1782, 1665, 1574, 1506, 1501, 1496, 1553, 1633, 1749, 1851, 2034, 2286, 2535, 2505, 2184, 1933, 1777, 1662, 1515, 1437, 1379, 1392, 1388, 1410, 1495, 1631, 1768, 1888, 2126, 2416, 2356, 2029, 1874, 1685, 1548, 1422, 1347, 1276, 1256, 1271, 1315, 1399, 1527, 1636, 1818, 2016, 2279, 2303, 1973, 1793, 1631, 1485, 1347, 1249, 1189, 1168, 1189, 1245, 1342, 1450, 1589, 1727, 1933, 2222, 2247, 1950, 1765, 1577, 1422, 1299, 1195, 1135, 1122, 1147, 1186, 1282, 1402, 1555, 1746, 1905, 2193, 2235, 1909, 1726, 1550, 1391, 1242, 1161, 1104, 1081, 1093, 1146, 1228, 1357, 1488, 1683, 1866, 2083, 2181, 1881, 1691, 1491, 1349, 1196, 1121, 1047, 1034, 1059, 1109, 1198, 1315, 1460, 1649, 1839, 2063, 2140, 1841, 1692, 1492, 1341, 1197, 1113, 1047, 1024, 1054, 1106, 1184, 1315, 1460, 1646, 1816, 2085, 2196, 1919, 1712, 1507, 1359, 1233, 1121, 1076, 1045, 1079, 1124, 1225, 1352, 1501, 1674, 1871, 2117, 2251, 1977, 1776, 1579, 1411, 1270, 1179, 1109, 1106, 1109, 1177, 1284, 1405, 1539, 1726, 1909, 2181, 2321, 2035, 1793, 1619, 1472, 1325, 1225, 1177, 1153, 1175, 1230, 1343, 1444, 1581, 1779, 1950, 2254, 2408, 2054, 1852, 1697, 1540, 1400, 1315, 1240, 1214, 1240, 1305, 1389, 1522, 1655, 1812, 2009, 2311, 2489, 2158, 1917, 1756, 1631, 1502, 1383, 1345, 1332, 1339, 1394, 1495, 1603, 1724, 1895, 2136, 2392, 2694, 2372, 2073, 1883, 1726, 1617, 1545, 1482, 1461, 1485, 1545, 1605, 1726, 1831, 1991, 2278, 2659, 2952, 2538, 2279, 2022, 1883, 1762, 1676, 1634, 1644, 1618, 1693, 1743, 1846, 1985, 2216, 2447, 2907, 4079, 2764, 2433, 2218, 2030, 1900, 1856, 1839, 1777, 1829, 1781, 1911, 2024, 2151, 2413, 2677, 3741] - }, - "lsc_samples_blue": { - "uCoeff": [2635, 2327, 2071, 1865, 1744, 1607, 1564, 1555, 1470, 1505, 1529, 1596, 1777, 1807, 1964, 2255, 2669, 2436, 2193, 1951, 1776, 1660, 1506, 1459, 1400, 1409, 1408, 1442, 1521, 1599, 1743, 1864, 2111, 2343, 2282, 2016, 1820, 1679, 1531, 1423, 1342, 1309, 1265, 1281, 1342, 1399, 1479, 1611, 1759, 1957, 2214, 2135, 1904, 1730, 1571, 1419, 1318, 1241, 1193, 1188, 1218, 1238, 1344, 1398, 1511, 1681, 1837, 2115, 2030, 1844, 1663, 1501, 1384, 1274, 1207, 1150, 1126, 1153, 1192, 1261, 1365, 1469, 1623, 1802, 1994, 2101, 1819, 1620, 1470, 1335, 1237, 1147, 1103, 1091, 1103, 1142, 1219, 1320, 1435, 1609, 1765, 2017, 2009, 1779, 1593, 1431, 1290, 1187, 1124, 1075, 1066, 1083, 1113, 1187, 1305, 1386, 1573, 1766, 1925, 1964, 1770, 1550, 1400, 1268, 1162, 1065, 1047, 1045, 1057, 1093, 1153, 1255, 1360, 1516, 1700, 1899, 1957, 1752, 1546, 1392, 1265, 1144, 1078, 1031, 1024, 1035, 1075, 1142, 1252, 1349, 1522, 1714, 1925, 1989, 1777, 1591, 1404, 1268, 1173, 1091, 1057, 1054, 1054, 1085, 1173, 1262, 1383, 1535, 1744, 1907, 2000, 1820, 1626, 1439, 1316, 1211, 1124, 1093, 1084, 1083, 1111, 1217, 1316, 1439, 1598, 1746, 1958, 2072, 1863, 1677, 1484, 1377, 1241, 1194, 1141, 1124, 1127, 1173, 1244, 1346, 1488, 1620, 1813, 2091, 2135, 1904, 1723, 1549, 1396, 1305, 1222, 1176, 1165, 1173, 1219, 1320, 1401, 1520, 1698, 1851, 2086, 2220, 1995, 1802, 1619, 1440, 1367, 1301, 1247, 1231, 1256, 1316, 1374, 1479, 1576, 1775, 1873, 2197, 2421, 2150, 1909, 1761, 1581, 1490, 1418, 1361, 1363, 1373, 1402, 1485, 1556, 1685, 1849, 2044, 2331, 2665, 2295, 2083, 1845, 1701, 1618, 1519, 1473, 1483, 1473, 1539, 1586, 1701, 1809, 1984, 2237, 2682, 3359, 2352, 2180, 1959, 1832, 1723, 1656, 1590, 1556, 1579, 1595, 1782, 1811, 1903, 2090, 2352, 3387] - } - }, { - "name": "3264x2448_HZ_100", - "resolution": "3264x2448", - "illumination": "HZ", - "vignetting": 100, - "lsc_samples_red": { - "uCoeff": [4417, 3517, 2971, 2590, 2357, 2197, 1998, 1901, 1833, 1901, 1965, 2130, 2304, 2553, 2946, 3399, 4283, 3721, 3129, 2720, 2397, 2156, 1943, 1777, 1705, 1661, 1688, 1782, 1901, 2111, 2365, 2639, 3009, 3535, 3535, 2922, 2544, 2217, 1959, 1742, 1597, 1496, 1471, 1508, 1597, 1734, 1922, 2150, 2473, 2773, 3415, 3335, 2730, 2373, 2062, 1809, 1586, 1435, 1337, 1318, 1361, 1435, 1565, 1755, 2009, 2296, 2639, 3199, 3156, 2600, 2231, 1901, 1665, 1462, 1315, 1228, 1201, 1228, 1308, 1459, 1634, 1871, 2183, 2517, 2984, 3088, 2481, 2183, 1814, 1565, 1343, 1226, 1128, 1102, 1125, 1214, 1343, 1538, 1791, 2093, 2447, 2946, 2910, 2439, 2093, 1742, 1489, 1284, 1152, 1075, 1069, 1082, 1160, 1289, 1474, 1717, 2021, 2342, 2817, 2984, 2422, 2044, 1721, 1462, 1254, 1120, 1053, 1024, 1059, 1127, 1248, 1429, 1684, 1987, 2357, 2806, 2922, 2422, 2062, 1721, 1462, 1257, 1120, 1053, 1028, 1047, 1127, 1259, 1438, 1680, 2009, 2365, 2806, 2946, 2422, 2074, 1760, 1489, 1284, 1158, 1082, 1047, 1069, 1136, 1279, 1471, 1713, 1998, 2373, 2829, 3009, 2508, 2124, 1800, 1551, 1348, 1193, 1138, 1113, 1127, 1199, 1332, 1538, 1809, 2111, 2397, 2922, 3074, 2581, 2238, 1927, 1653, 1450, 1298, 1201, 1177, 1214, 1296, 1421, 1623, 1881, 2183, 2581, 3061, 3335, 2752, 2406, 2044, 1777, 1569, 1421, 1325, 1305, 1348, 1407, 1531, 1738, 2009, 2326, 2639, 3199, 3625, 2922, 2517, 2203, 1970, 1738, 1572, 1462, 1456, 1474, 1565, 1713, 1943, 2170, 2481, 2829, 3319, 3884, 3129, 2709, 2422, 2143, 1943, 1791, 1668, 1661, 1668, 1768, 1891, 2093, 2342, 2669, 3009, 3644, 4258, 3449, 2971, 2639, 2373, 2176, 1987, 1927, 1881, 1907, 1993, 2130, 2326, 2553, 2898, 3304, 4086, 5936, 3884, 3415, 3009, 2679, 2447, 2304, 2267, 2197, 2197, 2326, 2447, 2669, 2875, 3243, 3644, 5477] - }, - "lsc_samples_greenR": { - "uCoeff": [3773, 3054, 2584, 2368, 2081, 1922, 1814, 1746, 1708, 1768, 1809, 1876, 2033, 2191, 2441, 2915, 3713, 3328, 2724, 2392, 2119, 1902, 1746, 1656, 1578, 1561, 1582, 1614, 1712, 1892, 2027, 2254, 2623, 3122, 3002, 2529, 2205, 1971, 1768, 1607, 1495, 1425, 1389, 1417, 1482, 1582, 1733, 1912, 2125, 2400, 2952, 2903, 2368, 2081, 1814, 1648, 1482, 1367, 1297, 1283, 1295, 1354, 1458, 1593, 1768, 1993, 2283, 2703, 2683, 2240, 1971, 1717, 1534, 1378, 1267, 1184, 1178, 1180, 1251, 1381, 1498, 1668, 1902, 2171, 2584, 2633, 2178, 1902, 1629, 1443, 1283, 1184, 1129, 1092, 1118, 1174, 1262, 1434, 1600, 1837, 2094, 2476, 2511, 2119, 1833, 1607, 1392, 1247, 1122, 1067, 1045, 1061, 1125, 1225, 1381, 1547, 1786, 2039, 2424, 2511, 2106, 1837, 1554, 1362, 1223, 1108, 1047, 1024, 1045, 1102, 1198, 1339, 1534, 1768, 2039, 2400, 2476, 2106, 1814, 1571, 1378, 1210, 1101, 1045, 1024, 1039, 1109, 1196, 1354, 1547, 1773, 2033, 2392, 2556, 2112, 1828, 1582, 1383, 1247, 1134, 1079, 1041, 1067, 1131, 1236, 1381, 1554, 1804, 2081, 2424, 2623, 2164, 1902, 1660, 1434, 1292, 1184, 1111, 1106, 1115, 1159, 1274, 1431, 1600, 1866, 2081, 2476, 2745, 2298, 2010, 1751, 1527, 1383, 1247, 1184, 1159, 1184, 1255, 1378, 1521, 1668, 1933, 2205, 2556, 2892, 2400, 2112, 1837, 1641, 1485, 1354, 1285, 1264, 1280, 1349, 1473, 1614, 1795, 2016, 2352, 2724, 3108, 2575, 2212, 1965, 1768, 1614, 1504, 1440, 1397, 1403, 1485, 1600, 1738, 1960, 2144, 2502, 2940, 3312, 2800, 2416, 2119, 1954, 1773, 1645, 1585, 1568, 1582, 1656, 1733, 1902, 2081, 2352, 2714, 3122, 3753, 3028, 2683, 2336, 2119, 1982, 1823, 1755, 1751, 1764, 1833, 1960, 2094, 2283, 2594, 2915, 3694, 4832, 3408, 3002, 2652, 2384, 2191, 2069, 2004, 1954, 1982, 2045, 2144, 2321, 2584, 2811, 3266, 5113] - }, - "lsc_samples_greenB": { - "uCoeff": [3789, 3068, 2586, 2339, 2090, 1974, 1836, 1716, 1720, 1758, 1831, 1963, 2103, 2278, 2605, 2965, 3769, 3327, 2823, 2452, 2174, 1941, 1758, 1656, 1578, 1568, 1578, 1633, 1745, 1920, 2103, 2346, 2736, 3281, 3136, 2586, 2293, 2013, 1799, 1622, 1504, 1423, 1403, 1432, 1489, 1585, 1776, 1952, 2160, 2522, 2990, 2928, 2452, 2154, 1895, 1637, 1501, 1389, 1317, 1288, 1310, 1373, 1486, 1648, 1831, 2066, 2402, 2834, 2779, 2362, 2042, 1763, 1557, 1409, 1281, 1209, 1177, 1213, 1272, 1387, 1527, 1737, 1990, 2264, 2694, 2715, 2271, 1968, 1691, 1473, 1317, 1197, 1137, 1112, 1143, 1201, 1303, 1464, 1633, 1885, 2180, 2549, 2625, 2221, 1905, 1648, 1426, 1265, 1147, 1079, 1056, 1070, 1143, 1252, 1423, 1600, 1817, 2115, 2605, 2605, 2180, 1895, 1614, 1395, 1228, 1128, 1051, 1034, 1061, 1119, 1230, 1387, 1578, 1803, 2078, 2452, 2596, 2180, 1900, 1589, 1400, 1230, 1112, 1050, 1024, 1045, 1121, 1220, 1373, 1568, 1812, 2115, 2452, 2674, 2221, 1905, 1622, 1432, 1259, 1134, 1072, 1048, 1069, 1121, 1239, 1395, 1592, 1831, 2122, 2452, 2674, 2264, 1947, 1675, 1464, 1307, 1169, 1107, 1090, 1111, 1169, 1288, 1440, 1637, 1855, 2174, 2540, 2801, 2331, 2042, 1737, 1534, 1379, 1241, 1167, 1154, 1167, 1241, 1352, 1504, 1707, 1963, 2250, 2715, 2904, 2469, 2128, 1855, 1640, 1470, 1355, 1268, 1237, 1265, 1334, 1458, 1607, 1831, 2048, 2394, 2801, 3136, 2596, 2221, 1968, 1754, 1589, 1470, 1389, 1373, 1389, 1440, 1589, 1716, 1947, 2201, 2478, 2916, 3407, 2812, 2444, 2122, 1910, 1741, 1603, 1534, 1514, 1534, 1607, 1720, 1880, 2066, 2331, 2664, 3149, 3729, 3068, 2634, 2293, 2072, 1920, 1776, 1687, 1671, 1683, 1763, 1895, 2019, 2242, 2558, 2916, 3634, 5098, 3457, 2965, 2634, 2362, 2115, 1979, 1968, 1920, 1974, 1996, 2122, 2278, 2549, 2823, 3342, 4821] - }, - "lsc_samples_blue": { - "uCoeff": [3491, 2854, 2439, 2091, 1920, 1816, 1736, 1723, 1639, 1686, 1723, 1845, 1985, 2002, 2365, 2722, 3598, 3000, 2545, 2252, 1985, 1816, 1698, 1552, 1542, 1512, 1532, 1583, 1686, 1802, 2002, 2169, 2545, 3039, 2854, 2365, 2073, 1874, 1650, 1542, 1456, 1412, 1395, 1387, 1465, 1552, 1698, 1845, 2055, 2342, 2786, 2660, 2230, 1968, 1723, 1573, 1429, 1339, 1281, 1288, 1310, 1363, 1456, 1605, 1723, 1920, 2274, 2660, 2464, 2129, 1874, 1639, 1474, 1355, 1254, 1196, 1178, 1202, 1267, 1387, 1474, 1605, 1860, 2129, 2464, 2319, 2002, 1789, 1583, 1387, 1288, 1184, 1133, 1111, 1149, 1196, 1295, 1395, 1583, 1775, 2055, 2365, 2319, 1968, 1723, 1532, 1339, 1221, 1111, 1086, 1056, 1101, 1149, 1234, 1363, 1542, 1736, 1985, 2274, 2210, 1968, 1736, 1502, 1317, 1184, 1111, 1056, 1042, 1061, 1106, 1227, 1355, 1502, 1674, 1920, 2230, 2210, 1936, 1698, 1493, 1317, 1184, 1101, 1042, 1024, 1056, 1106, 1221, 1347, 1532, 1674, 1985, 2252, 2319, 1936, 1723, 1493, 1339, 1184, 1106, 1061, 1033, 1081, 1111, 1209, 1339, 1512, 1698, 1985, 2230, 2252, 1936, 1749, 1552, 1355, 1247, 1149, 1076, 1066, 1076, 1149, 1227, 1395, 1532, 1698, 1920, 2252, 2365, 2055, 1802, 1627, 1421, 1281, 1184, 1144, 1127, 1155, 1202, 1267, 1395, 1583, 1802, 2019, 2365, 2545, 2129, 1920, 1686, 1512, 1387, 1288, 1227, 1202, 1221, 1281, 1379, 1502, 1650, 1874, 2091, 2545, 2820, 2274, 2002, 1775, 1594, 1474, 1379, 1310, 1317, 1324, 1387, 1465, 1605, 1749, 1985, 2252, 2660, 2925, 2439, 2129, 1874, 1723, 1605, 1542, 1447, 1421, 1456, 1474, 1594, 1698, 1920, 2073, 2439, 2854, 3295, 2690, 2274, 2002, 1860, 1749, 1639, 1583, 1583, 1583, 1605, 1736, 1845, 2002, 2210, 2660, 3342, 4327, 3039, 2572, 2210, 1985, 1816, 1789, 1749, 1686, 1749, 1749, 1874, 2055, 2129, 2464, 2925, 4409] - } - }, { - "name": "3264x2448_HZ_70", - "resolution": "3264x2448", - "illumination": "HZ", - "vignetting": 70, - "lsc_samples_red": { - "uCoeff": [3399, 2886, 2549, 2300, 2144, 2034, 1877, 1800, 1742, 1800, 1848, 1976, 2100, 2270, 2530, 2797, 3305, 2987, 2646, 2393, 2176, 2003, 1838, 1702, 1644, 1606, 1628, 1707, 1801, 1964, 2149, 2328, 2554, 2851, 2904, 2526, 2283, 2050, 1853, 1676, 1553, 1464, 1442, 1475, 1553, 1669, 1820, 1992, 2224, 2408, 2815, 2795, 2404, 2165, 1936, 1735, 1545, 1411, 1322, 1305, 1345, 1411, 1525, 1686, 1889, 2100, 2330, 2691, 2688, 2321, 2063, 1808, 1614, 1437, 1303, 1221, 1196, 1221, 1296, 1434, 1586, 1781, 2022, 2253, 2554, 2658, 2240, 2035, 1739, 1529, 1329, 1220, 1126, 1101, 1123, 1208, 1329, 1504, 1718, 1957, 2211, 2546, 2532, 2216, 1966, 1680, 1462, 1275, 1149, 1074, 1069, 1081, 1157, 1279, 1448, 1657, 1902, 2135, 2458, 2601, 2209, 1927, 1665, 1439, 1247, 1119, 1053, 1024, 1059, 1125, 1241, 1408, 1631, 1877, 2154, 2458, 2554, 2211, 1945, 1666, 1440, 1250, 1119, 1053, 1028, 1047, 1126, 1252, 1417, 1628, 1898, 2163, 2460, 2570, 2209, 1954, 1700, 1464, 1276, 1156, 1082, 1047, 1069, 1134, 1271, 1447, 1657, 1887, 2167, 2476, 2611, 2274, 1993, 1733, 1520, 1336, 1190, 1137, 1112, 1126, 1195, 1321, 1508, 1741, 1981, 2181, 2542, 2647, 2323, 2083, 1842, 1611, 1431, 1290, 1198, 1174, 1210, 1288, 1403, 1583, 1800, 2035, 2323, 2637, 2828, 2446, 2214, 1935, 1717, 1538, 1404, 1315, 1297, 1338, 1391, 1502, 1681, 1904, 2145, 2353, 2722, 3017, 2559, 2287, 2060, 1880, 1686, 1540, 1441, 1436, 1452, 1534, 1663, 1856, 2031, 2257, 2484, 2783, 3166, 2690, 2420, 2226, 2016, 1858, 1732, 1624, 1620, 1624, 1711, 1811, 1972, 2158, 2386, 2595, 2986, 3377, 2893, 2596, 2379, 2191, 2044, 1891, 1846, 1806, 1827, 1897, 2004, 2150, 2307, 2537, 2781, 3252, 4462, 3160, 2897, 2641, 2415, 2249, 2145, 2123, 2065, 2061, 2164, 2249, 2407, 2532, 2763, 2980, 4141] - }, - "lsc_samples_greenR": { - "uCoeff": [2948, 2540, 2246, 2119, 1912, 1797, 1716, 1663, 1631, 1682, 1711, 1757, 1872, 1975, 2134, 2436, 2906, 2701, 2334, 2128, 1943, 1784, 1664, 1593, 1528, 1514, 1532, 1555, 1633, 1775, 1865, 2017, 2256, 2551, 2505, 2215, 2002, 1839, 1684, 1553, 1459, 1398, 1365, 1390, 1447, 1531, 1653, 1788, 1936, 2113, 2468, 2464, 2111, 1918, 1718, 1589, 1448, 1347, 1284, 1271, 1282, 1335, 1426, 1539, 1677, 1844, 2042, 2311, 2319, 2025, 1839, 1643, 1494, 1358, 1257, 1179, 1174, 1175, 1241, 1360, 1460, 1599, 1780, 1968, 2242, 2298, 1987, 1790, 1572, 1415, 1271, 1179, 1127, 1091, 1116, 1170, 1251, 1406, 1545, 1733, 1917, 2174, 2213, 1947, 1737, 1557, 1371, 1239, 1120, 1067, 1045, 1061, 1123, 1218, 1360, 1502, 1695, 1879, 2144, 2220, 1941, 1744, 1511, 1344, 1217, 1107, 1047, 1024, 1045, 1101, 1193, 1322, 1493, 1683, 1884, 2131, 2194, 1943, 1725, 1528, 1360, 1205, 1100, 1045, 1024, 1039, 1108, 1191, 1337, 1506, 1689, 1881, 2127, 2257, 1946, 1736, 1537, 1364, 1240, 1132, 1079, 1041, 1067, 1129, 1229, 1362, 1511, 1715, 1920, 2150, 2303, 1985, 1797, 1605, 1410, 1282, 1181, 1110, 1105, 1114, 1156, 1265, 1407, 1550, 1766, 1915, 2185, 2387, 2087, 1884, 1682, 1493, 1367, 1240, 1181, 1157, 1181, 1248, 1362, 1488, 1607, 1817, 2010, 2237, 2482, 2157, 1961, 1750, 1592, 1458, 1340, 1277, 1257, 1272, 1335, 1447, 1567, 1713, 1878, 2117, 2351, 2621, 2278, 2029, 1851, 1698, 1571, 1476, 1420, 1380, 1385, 1458, 1558, 1670, 1846, 1972, 2219, 2492, 2737, 2429, 2177, 1966, 1849, 1704, 1597, 1547, 1533, 1544, 1607, 1668, 1803, 1933, 2124, 2361, 2595, 3010, 2568, 2363, 2125, 1971, 1873, 1744, 1689, 1688, 1697, 1753, 1853, 1950, 2080, 2292, 2481, 2967, 3690, 2804, 2574, 2350, 2167, 2029, 1939, 1891, 1849, 1871, 1918, 1988, 2114, 2295, 2424, 2698, 3886] - }, - "lsc_samples_greenB": { - "uCoeff": [2960, 2550, 2248, 2095, 1920, 1842, 1735, 1636, 1642, 1673, 1731, 1832, 1931, 2046, 2263, 2473, 2946, 2700, 2410, 2177, 1989, 1817, 1674, 1593, 1528, 1521, 1528, 1573, 1663, 1799, 1929, 2091, 2343, 2666, 2606, 2260, 2075, 1875, 1711, 1567, 1467, 1396, 1379, 1404, 1453, 1533, 1691, 1822, 1965, 2209, 2496, 2483, 2179, 1980, 1789, 1579, 1466, 1368, 1303, 1276, 1296, 1353, 1452, 1589, 1733, 1906, 2138, 2411, 2394, 2125, 1900, 1684, 1515, 1387, 1270, 1203, 1173, 1207, 1262, 1366, 1487, 1661, 1856, 2045, 2328, 2363, 2065, 1848, 1628, 1443, 1304, 1192, 1135, 1111, 1141, 1196, 1290, 1434, 1575, 1775, 1989, 2231, 2304, 2033, 1800, 1594, 1403, 1256, 1145, 1078, 1056, 1070, 1141, 1244, 1400, 1550, 1722, 1943, 2288, 2296, 2004, 1796, 1566, 1375, 1222, 1126, 1051, 1034, 1061, 1118, 1224, 1368, 1533, 1714, 1917, 2173, 2291, 2006, 1801, 1544, 1381, 1224, 1111, 1050, 1024, 1045, 1120, 1214, 1355, 1525, 1723, 1950, 2175, 2351, 2038, 1804, 1574, 1410, 1252, 1132, 1072, 1048, 1069, 1120, 1232, 1375, 1546, 1739, 1955, 2173, 2344, 2069, 1837, 1619, 1438, 1297, 1166, 1106, 1090, 1110, 1166, 1278, 1416, 1584, 1756, 1993, 2236, 2431, 2115, 1912, 1669, 1500, 1363, 1235, 1164, 1152, 1164, 1235, 1337, 1472, 1642, 1843, 2047, 2363, 2492, 2214, 1974, 1766, 1591, 1444, 1341, 1260, 1231, 1257, 1321, 1433, 1561, 1745, 1905, 2152, 2411, 2643, 2295, 2037, 1853, 1685, 1548, 1444, 1371, 1357, 1371, 1416, 1548, 1650, 1835, 2020, 2200, 2474, 2809, 2439, 2200, 1968, 1810, 1675, 1558, 1499, 1482, 1499, 1562, 1656, 1783, 1920, 2106, 2322, 2615, 2992, 2599, 2324, 2088, 1931, 1818, 1701, 1627, 1615, 1624, 1690, 1796, 1885, 2046, 2262, 2482, 2923, 3876, 2841, 2545, 2336, 2149, 1963, 1860, 1859, 1819, 1864, 1875, 1969, 2078, 2266, 2434, 2755, 3682] - }, - "lsc_samples_blue": { - "uCoeff": [2751, 2390, 2133, 1893, 1777, 1706, 1647, 1642, 1570, 1610, 1636, 1731, 1832, 1821, 2075, 2292, 2826, 2462, 2196, 2015, 1830, 1709, 1621, 1500, 1495, 1470, 1486, 1528, 1610, 1697, 1844, 1948, 2196, 2490, 2394, 2085, 1893, 1755, 1579, 1494, 1423, 1386, 1371, 1362, 1431, 1503, 1622, 1730, 1878, 2067, 2343, 2278, 1999, 1823, 1638, 1521, 1399, 1321, 1269, 1276, 1296, 1343, 1424, 1550, 1638, 1782, 2035, 2278, 2148, 1934, 1756, 1573, 1438, 1336, 1244, 1190, 1174, 1196, 1257, 1366, 1438, 1543, 1744, 1934, 2148, 2049, 1840, 1691, 1530, 1363, 1276, 1179, 1131, 1110, 1147, 1191, 1283, 1370, 1530, 1679, 1884, 2086, 2060, 1819, 1640, 1488, 1321, 1214, 1109, 1085, 1056, 1100, 1146, 1226, 1343, 1497, 1651, 1834, 2024, 1978, 1824, 1655, 1463, 1301, 1179, 1110, 1056, 1042, 1061, 1105, 1221, 1337, 1463, 1600, 1783, 1994, 1980, 1798, 1622, 1456, 1302, 1179, 1100, 1042, 1024, 1056, 1105, 1215, 1330, 1492, 1601, 1840, 2014, 2066, 1797, 1643, 1455, 1322, 1179, 1105, 1061, 1033, 1081, 1110, 1203, 1322, 1472, 1621, 1838, 1994, 2006, 1792, 1663, 1507, 1336, 1239, 1146, 1075, 1066, 1075, 1146, 1220, 1373, 1488, 1618, 1779, 2006, 2086, 1884, 1703, 1570, 1394, 1269, 1179, 1142, 1125, 1152, 1197, 1256, 1370, 1530, 1703, 1854, 2086, 2211, 1934, 1795, 1615, 1473, 1366, 1277, 1220, 1197, 1215, 1270, 1359, 1464, 1583, 1756, 1902, 2211, 2400, 2035, 1851, 1684, 1540, 1441, 1358, 1296, 1304, 1309, 1366, 1433, 1550, 1661, 1837, 2017, 2278, 2448, 2144, 1939, 1755, 1644, 1551, 1502, 1418, 1395, 1427, 1439, 1541, 1622, 1795, 1893, 2144, 2394, 2677, 2308, 2033, 1844, 1747, 1666, 1578, 1533, 1534, 1533, 1547, 1655, 1734, 1844, 1982, 2285, 2711, 3336, 2529, 2237, 1990, 1832, 1706, 1694, 1665, 1611, 1665, 1659, 1756, 1891, 1924, 2152, 2444, 3394] - } - }, { - "name": "3264x2448_TL84_100", - "resolution": "3264x2448", - "illumination": "TL84", - "vignetting": 100, - "lsc_samples_red": { - "uCoeff": [3642, 2815, 2401, 2160, 1963, 1865, 1745, 1660, 1608, 1702, 1753, 1848, 1935, 2160, 2346, 2739, 3517, 3188, 2567, 2231, 2011, 1815, 1695, 1589, 1553, 1502, 1536, 1602, 1681, 1807, 1973, 2160, 2535, 3023, 2957, 2459, 2105, 1873, 1702, 1565, 1464, 1389, 1357, 1399, 1459, 1559, 1702, 1865, 2052, 2346, 2796, 2668, 2231, 1963, 1760, 1602, 1459, 1339, 1293, 1249, 1281, 1348, 1454, 1589, 1776, 1963, 2207, 2616, 2600, 2127, 1908, 1681, 1502, 1366, 1234, 1181, 1154, 1181, 1249, 1339, 1496, 1653, 1831, 2073, 2504, 2504, 2105, 1831, 1608, 1433, 1293, 1191, 1110, 1092, 1098, 1167, 1277, 1454, 1589, 1783, 2031, 2444, 2430, 2002, 1783, 1565, 1385, 1249, 1125, 1070, 1058, 1067, 1138, 1209, 1385, 1536, 1730, 1963, 2333, 2401, 2002, 1745, 1541, 1366, 1209, 1101, 1050, 1029, 1048, 1098, 1191, 1353, 1524, 1730, 1963, 2243, 2430, 2002, 1753, 1541, 1357, 1209, 1101, 1050, 1024, 1024, 1092, 1198, 1339, 1496, 1709, 1973, 2294, 2430, 2042, 1783, 1577, 1385, 1257, 1135, 1072, 1053, 1053, 1101, 1234, 1357, 1541, 1745, 2002, 2373, 2444, 2052, 1831, 1602, 1409, 1293, 1198, 1122, 1084, 1113, 1161, 1265, 1438, 1608, 1791, 2031, 2401, 2685, 2149, 1908, 1702, 1513, 1371, 1245, 1167, 1138, 1171, 1219, 1339, 1464, 1647, 1882, 2116, 2567, 2739, 2243, 2002, 1776, 1589, 1464, 1353, 1273, 1249, 1265, 1326, 1409, 1565, 1776, 1945, 2207, 2633, 2854, 2444, 2105, 1908, 1723, 1565, 1454, 1389, 1357, 1389, 1454, 1553, 1674, 1882, 2073, 2333, 2854, 3213, 2567, 2256, 2011, 1848, 1681, 1608, 1541, 1518, 1518, 1589, 1660, 1815, 1963, 2207, 2600, 2979, 3547, 2874, 2459, 2207, 2031, 1873, 1730, 1702, 1660, 1674, 1753, 1848, 1963, 2127, 2387, 2685, 3547, 4633, 3238, 2758, 2444, 2256, 2083, 1982, 1882, 1873, 1882, 1973, 2002, 2243, 2430, 2739, 3091, 4740] - }, - "lsc_samples_greenR": { - "uCoeff": [3620, 2844, 2491, 2216, 1966, 1835, 1739, 1699, 1636, 1716, 1721, 1815, 1920, 2110, 2418, 2693, 3506, 3140, 2608, 2269, 2020, 1825, 1699, 1581, 1544, 1516, 1527, 1581, 1652, 1781, 1943, 2172, 2500, 2932, 2945, 2436, 2117, 1893, 1699, 1566, 1459, 1401, 1369, 1404, 1437, 1534, 1656, 1815, 2039, 2325, 2726, 2682, 2254, 1996, 1781, 1593, 1459, 1358, 1291, 1245, 1289, 1338, 1416, 1541, 1708, 1898, 2187, 2578, 2538, 2151, 1882, 1686, 1496, 1369, 1250, 1181, 1162, 1177, 1238, 1330, 1447, 1616, 1820, 2070, 2454, 2519, 2110, 1815, 1612, 1431, 1291, 1177, 1117, 1104, 1110, 1175, 1281, 1410, 1559, 1786, 2002, 2341, 2427, 2045, 1786, 1559, 1383, 1236, 1131, 1060, 1058, 1072, 1129, 1220, 1366, 1530, 1730, 1960, 2223, 2392, 2039, 1767, 1548, 1358, 1216, 1104, 1058, 1024, 1053, 1106, 1196, 1336, 1496, 1699, 1932, 2269, 2392, 2026, 1781, 1534, 1372, 1216, 1099, 1048, 1029, 1048, 1102, 1200, 1336, 1506, 1716, 1932, 2341, 2436, 2051, 1791, 1566, 1398, 1245, 1133, 1072, 1053, 1067, 1119, 1231, 1352, 1534, 1757, 1966, 2308, 2472, 2117, 1877, 1669, 1443, 1302, 1183, 1106, 1091, 1106, 1158, 1274, 1401, 1570, 1771, 2045, 2400, 2578, 2194, 1904, 1699, 1506, 1358, 1241, 1185, 1168, 1168, 1250, 1347, 1459, 1644, 1856, 2117, 2519, 2796, 2308, 2008, 1791, 1596, 1459, 1352, 1284, 1255, 1289, 1341, 1447, 1585, 1739, 1937, 2231, 2578, 2893, 2472, 2144, 1898, 1748, 1574, 1459, 1392, 1360, 1392, 1443, 1548, 1703, 1845, 2077, 2366, 2726, 3201, 2682, 2285, 2064, 1856, 1708, 1608, 1534, 1516, 1544, 1581, 1682, 1800, 2039, 2246, 2538, 2984, 3581, 2971, 2519, 2231, 2045, 1877, 1757, 1690, 1686, 1708, 1771, 1882, 2020, 2172, 2427, 2807, 3506, 4633, 3216, 2844, 2436, 2254, 2097, 1943, 1882, 1856, 1877, 1882, 2039, 2201, 2418, 2682, 3096, 4666] - }, - "lsc_samples_greenB": { - "uCoeff": [3604, 2880, 2479, 2235, 1986, 1868, 1740, 1691, 1682, 1695, 1745, 1812, 1992, 2134, 2416, 2759, 3604, 3140, 2681, 2274, 2061, 1863, 1722, 1616, 1541, 1523, 1527, 1578, 1674, 1817, 2011, 2213, 2527, 3011, 2867, 2442, 2162, 1911, 1731, 1585, 1472, 1403, 1385, 1385, 1453, 1559, 1695, 1868, 2087, 2381, 2867, 2714, 2314, 2017, 1792, 1593, 1462, 1371, 1283, 1268, 1293, 1343, 1449, 1574, 1749, 1951, 2220, 2617, 2566, 2176, 1934, 1700, 1502, 1374, 1256, 1186, 1169, 1180, 1235, 1354, 1485, 1649, 1852, 2114, 2517, 2517, 2127, 1868, 1608, 1446, 1283, 1184, 1112, 1094, 1114, 1178, 1266, 1418, 1601, 1782, 2067, 2364, 2451, 2061, 1797, 1585, 1383, 1235, 1139, 1067, 1043, 1078, 1120, 1240, 1371, 1534, 1745, 1992, 2347, 2389, 2061, 1792, 1541, 1351, 1210, 1110, 1034, 1035, 1052, 1097, 1190, 1346, 1523, 1713, 1969, 2364, 2364, 2061, 1759, 1559, 1351, 1206, 1101, 1043, 1024, 1043, 1099, 1184, 1346, 1499, 1726, 1992, 2290, 2461, 2061, 1817, 1566, 1385, 1235, 1125, 1072, 1043, 1052, 1110, 1217, 1354, 1527, 1726, 1945, 2314, 2488, 2127, 1832, 1605, 1430, 1259, 1155, 1086, 1074, 1086, 1157, 1266, 1403, 1589, 1792, 2035, 2364, 2586, 2184, 1911, 1695, 1482, 1340, 1223, 1163, 1155, 1163, 1219, 1335, 1475, 1620, 1827, 2114, 2507, 2783, 2274, 2035, 1759, 1585, 1430, 1306, 1259, 1226, 1249, 1324, 1424, 1574, 1726, 1945, 2258, 2596, 2867, 2461, 2127, 1873, 1682, 1537, 1437, 1346, 1332, 1377, 1424, 1513, 1678, 1863, 2100, 2322, 2703, 3186, 2627, 2290, 2035, 1812, 1674, 1552, 1495, 1462, 1502, 1563, 1649, 1797, 1986, 2184, 2527, 3011, 3508, 2892, 2461, 2176, 1969, 1817, 1731, 1661, 1645, 1653, 1700, 1827, 1928, 2127, 2416, 2714, 3399, 4813, 3140, 2748, 2442, 2213, 1998, 1884, 1873, 1832, 1827, 1906, 2017, 2155, 2416, 2596, 3111, 4779] - }, - "lsc_samples_blue": { - "uCoeff": [3252, 2701, 2238, 2018, 1758, 1647, 1575, 1575, 1566, 1549, 1637, 1619, 1758, 2003, 2255, 2490, 3045, 2727, 2387, 2091, 1837, 1706, 1566, 1485, 1455, 1412, 1455, 1477, 1575, 1647, 1791, 1976, 2273, 2701, 2627, 2186, 1873, 1716, 1575, 1477, 1365, 1339, 1315, 1333, 1385, 1440, 1524, 1647, 1848, 2122, 2469, 2448, 2061, 1780, 1610, 1493, 1333, 1291, 1246, 1210, 1236, 1274, 1352, 1433, 1610, 1780, 2003, 2367, 2238, 1923, 1706, 1541, 1391, 1321, 1210, 1175, 1142, 1175, 1215, 1291, 1391, 1516, 1706, 1923, 2255, 2186, 1873, 1666, 1485, 1352, 1230, 1161, 1090, 1098, 1098, 1138, 1230, 1333, 1477, 1619, 1848, 2186, 2186, 1837, 1637, 1433, 1285, 1215, 1111, 1078, 1062, 1066, 1138, 1161, 1291, 1405, 1583, 1825, 2138, 2122, 1825, 1575, 1426, 1291, 1161, 1082, 1062, 1024, 1062, 1090, 1165, 1274, 1412, 1575, 1802, 2076, 2138, 1802, 1583, 1426, 1285, 1156, 1098, 1035, 1028, 1054, 1078, 1161, 1285, 1405, 1601, 1802, 2061, 2122, 1802, 1637, 1412, 1291, 1190, 1107, 1062, 1046, 1046, 1111, 1180, 1268, 1405, 1610, 1837, 2061, 2122, 1837, 1637, 1485, 1339, 1199, 1124, 1066, 1078, 1062, 1111, 1210, 1333, 1440, 1619, 1825, 2203, 2273, 1936, 1676, 1516, 1385, 1246, 1190, 1111, 1111, 1124, 1175, 1252, 1358, 1508, 1676, 1885, 2238, 2273, 2018, 1780, 1566, 1426, 1309, 1230, 1180, 1180, 1190, 1252, 1339, 1433, 1549, 1726, 1936, 2255, 2490, 2122, 1837, 1666, 1508, 1405, 1333, 1274, 1246, 1297, 1321, 1412, 1508, 1666, 1837, 2076, 2406, 2627, 2255, 1962, 1780, 1619, 1516, 1426, 1391, 1365, 1385, 1412, 1508, 1601, 1758, 1923, 2255, 2603, 3045, 2534, 2186, 1910, 1758, 1647, 1524, 1508, 1493, 1485, 1541, 1610, 1716, 1885, 2122, 2367, 3145, 4144, 2701, 2367, 2091, 1837, 1716, 1686, 1575, 1619, 1619, 1666, 1758, 1848, 2018, 2238, 2651, 3972] - } - }, { - "name": "3264x2448_TL84_70", - "resolution": "3264x2448", - "illumination": "TL84", - "vignetting": 70, - "lsc_samples_red": { - "uCoeff": [2857, 2361, 2103, 1949, 1813, 1748, 1655, 1587, 1542, 1624, 1662, 1733, 1790, 1949, 2060, 2305, 2769, 2599, 2213, 1998, 1852, 1708, 1618, 1533, 1505, 1460, 1490, 1545, 1606, 1701, 1820, 1941, 2188, 2479, 2472, 2159, 1919, 1754, 1625, 1515, 1430, 1364, 1335, 1374, 1426, 1510, 1625, 1747, 1875, 2070, 2351, 2284, 2000, 1818, 1670, 1547, 1427, 1321, 1280, 1239, 1269, 1329, 1422, 1536, 1685, 1818, 1981, 2244, 2254, 1932, 1785, 1611, 1464, 1346, 1225, 1176, 1150, 1176, 1240, 1321, 1459, 1586, 1719, 1888, 2179, 2196, 1926, 1728, 1553, 1406, 1281, 1186, 1108, 1091, 1097, 1163, 1266, 1425, 1536, 1686, 1864, 2148, 2148, 1848, 1692, 1518, 1364, 1241, 1123, 1070, 1058, 1067, 1136, 1202, 1364, 1492, 1646, 1815, 2071, 2132, 1853, 1663, 1499, 1348, 1203, 1100, 1050, 1029, 1048, 1097, 1186, 1336, 1484, 1649, 1820, 2005, 2157, 1854, 1671, 1500, 1340, 1204, 1100, 1050, 1024, 1024, 1091, 1193, 1323, 1459, 1632, 1830, 2048, 2155, 1887, 1696, 1532, 1366, 1250, 1133, 1072, 1053, 1053, 1100, 1228, 1339, 1499, 1663, 1853, 2109, 2160, 1890, 1735, 1552, 1387, 1283, 1194, 1121, 1084, 1112, 1158, 1256, 1414, 1558, 1700, 1873, 2125, 2339, 1963, 1795, 1638, 1480, 1355, 1239, 1164, 1136, 1168, 1213, 1325, 1434, 1588, 1773, 1935, 2246, 2363, 2027, 1866, 1696, 1544, 1439, 1339, 1265, 1242, 1257, 1313, 1387, 1522, 1696, 1817, 1998, 2280, 2427, 2172, 1939, 1800, 1657, 1525, 1429, 1371, 1342, 1371, 1429, 1514, 1612, 1778, 1912, 2083, 2427, 2663, 2245, 2044, 1873, 1755, 1620, 1563, 1506, 1486, 1485, 1546, 1601, 1725, 1832, 2004, 2271, 2488, 2860, 2450, 2183, 2016, 1895, 1776, 1660, 1641, 1605, 1615, 1681, 1754, 1836, 1949, 2124, 2304, 2860, 3550, 2677, 2383, 2181, 2059, 1936, 1863, 1783, 1777, 1783, 1855, 1866, 2049, 2169, 2368, 2567, 3625] - }, - "lsc_samples_greenR": { - "uCoeff": [2841, 2383, 2173, 1995, 1816, 1722, 1650, 1621, 1567, 1636, 1634, 1705, 1777, 1909, 2116, 2270, 2761, 2564, 2245, 2029, 1859, 1717, 1622, 1526, 1497, 1473, 1482, 1526, 1580, 1679, 1795, 1951, 2161, 2412, 2463, 2141, 1929, 1771, 1623, 1516, 1426, 1375, 1347, 1378, 1405, 1487, 1584, 1704, 1865, 2053, 2299, 2295, 2019, 1846, 1689, 1539, 1427, 1339, 1278, 1235, 1276, 1320, 1387, 1492, 1625, 1763, 1965, 2215, 2206, 1952, 1763, 1615, 1459, 1349, 1241, 1176, 1158, 1172, 1229, 1312, 1413, 1553, 1709, 1885, 2140, 2208, 1930, 1714, 1556, 1404, 1279, 1173, 1115, 1103, 1108, 1171, 1269, 1384, 1508, 1689, 1840, 2067, 2146, 1884, 1695, 1513, 1362, 1228, 1129, 1060, 1058, 1071, 1127, 1213, 1346, 1486, 1646, 1813, 1983, 2125, 1884, 1682, 1506, 1340, 1210, 1103, 1058, 1024, 1053, 1105, 1191, 1319, 1458, 1622, 1794, 2026, 2127, 1875, 1696, 1494, 1354, 1210, 1098, 1048, 1029, 1048, 1101, 1195, 1320, 1468, 1638, 1795, 2086, 2160, 1894, 1703, 1522, 1378, 1238, 1131, 1072, 1053, 1067, 1118, 1225, 1335, 1493, 1673, 1822, 2057, 2182, 1945, 1775, 1613, 1419, 1292, 1180, 1105, 1091, 1105, 1155, 1265, 1379, 1523, 1682, 1884, 2124, 2254, 2000, 1792, 1635, 1474, 1343, 1235, 1182, 1166, 1165, 1243, 1332, 1430, 1585, 1750, 1936, 2208, 2407, 2081, 1871, 1709, 1551, 1434, 1338, 1276, 1248, 1280, 1328, 1423, 1541, 1663, 1810, 2018, 2237, 2456, 2195, 1972, 1792, 1679, 1534, 1434, 1374, 1345, 1374, 1419, 1510, 1639, 1745, 1915, 2109, 2328, 2654, 2336, 2068, 1918, 1762, 1645, 1563, 1499, 1484, 1509, 1538, 1621, 1712, 1897, 2036, 2222, 2492, 2885, 2524, 2231, 2036, 1907, 1780, 1684, 1630, 1628, 1646, 1697, 1784, 1886, 1987, 2157, 2398, 2830, 3550, 2661, 2450, 2174, 2058, 1948, 1829, 1783, 1762, 1778, 1775, 1898, 2013, 2160, 2323, 2571, 3573] - }, - "lsc_samples_greenB": { - "uCoeff": [2830, 2410, 2164, 2011, 1833, 1751, 1651, 1614, 1608, 1617, 1655, 1702, 1838, 1928, 2115, 2320, 2830, 2564, 2301, 2033, 1894, 1750, 1642, 1557, 1494, 1480, 1482, 1523, 1600, 1710, 1852, 1984, 2182, 2470, 2404, 2146, 1967, 1787, 1651, 1533, 1438, 1377, 1362, 1361, 1420, 1510, 1619, 1750, 1904, 2098, 2404, 2319, 2067, 1864, 1699, 1539, 1430, 1351, 1270, 1257, 1280, 1325, 1418, 1522, 1661, 1808, 1991, 2245, 2228, 1972, 1807, 1628, 1464, 1354, 1246, 1181, 1165, 1175, 1226, 1335, 1448, 1582, 1737, 1921, 2190, 2206, 1944, 1760, 1553, 1418, 1271, 1179, 1110, 1093, 1112, 1173, 1255, 1392, 1546, 1685, 1894, 2085, 2165, 1898, 1705, 1537, 1362, 1227, 1137, 1067, 1043, 1077, 1118, 1232, 1351, 1490, 1659, 1840, 2082, 2122, 1903, 1704, 1499, 1334, 1204, 1109, 1034, 1035, 1052, 1096, 1185, 1329, 1483, 1634, 1825, 2102, 2104, 1905, 1676, 1517, 1334, 1201, 1100, 1043, 1024, 1043, 1098, 1179, 1329, 1461, 1647, 1846, 2045, 2180, 1903, 1726, 1522, 1366, 1228, 1123, 1072, 1043, 1052, 1109, 1211, 1336, 1486, 1646, 1805, 2062, 2195, 1953, 1736, 1555, 1406, 1250, 1152, 1085, 1074, 1085, 1154, 1257, 1381, 1540, 1700, 1876, 2096, 2261, 1992, 1798, 1631, 1451, 1326, 1217, 1160, 1153, 1160, 1213, 1321, 1445, 1564, 1725, 1934, 2198, 2397, 2053, 1894, 1681, 1541, 1407, 1294, 1251, 1220, 1242, 1311, 1401, 1530, 1651, 1817, 2040, 2251, 2436, 2186, 1957, 1770, 1620, 1499, 1413, 1330, 1318, 1360, 1401, 1477, 1616, 1761, 1934, 2074, 2311, 2643, 2292, 2073, 1894, 1723, 1614, 1511, 1463, 1434, 1470, 1522, 1591, 1709, 1851, 1985, 2213, 2512, 2832, 2464, 2184, 1990, 1841, 1726, 1661, 1604, 1591, 1596, 1633, 1735, 1806, 1949, 2148, 2326, 2752, 3676, 2604, 2375, 2179, 2023, 1862, 1777, 1775, 1741, 1734, 1796, 1879, 1975, 2158, 2256, 2582, 3653] - }, - "lsc_samples_blue": { - "uCoeff": [2584, 2276, 1975, 1834, 1641, 1560, 1506, 1511, 1505, 1488, 1561, 1536, 1641, 1822, 1988, 2119, 2439, 2263, 2074, 1885, 1706, 1614, 1504, 1439, 1416, 1378, 1416, 1432, 1512, 1563, 1667, 1793, 1987, 2244, 2224, 1943, 1727, 1619, 1513, 1435, 1339, 1318, 1296, 1312, 1357, 1402, 1467, 1560, 1706, 1893, 2106, 2115, 1863, 1664, 1539, 1449, 1310, 1276, 1235, 1202, 1226, 1260, 1328, 1394, 1539, 1664, 1816, 2053, 1972, 1764, 1611, 1486, 1362, 1304, 1202, 1170, 1139, 1170, 1207, 1276, 1362, 1464, 1611, 1764, 1985, 1944, 1732, 1584, 1441, 1330, 1221, 1157, 1089, 1097, 1097, 1135, 1221, 1312, 1434, 1543, 1712, 1944, 1953, 1709, 1564, 1398, 1270, 1208, 1109, 1077, 1062, 1066, 1136, 1156, 1275, 1372, 1516, 1699, 1915, 1907, 1703, 1512, 1393, 1277, 1157, 1081, 1062, 1024, 1062, 1089, 1161, 1261, 1381, 1512, 1683, 1870, 1922, 1685, 1520, 1394, 1272, 1152, 1097, 1035, 1028, 1054, 1077, 1157, 1272, 1375, 1536, 1685, 1860, 1907, 1683, 1567, 1381, 1277, 1185, 1106, 1062, 1046, 1046, 1110, 1175, 1255, 1374, 1543, 1713, 1858, 1902, 1709, 1564, 1445, 1321, 1193, 1122, 1066, 1078, 1062, 1109, 1203, 1315, 1404, 1548, 1699, 1967, 2013, 1785, 1593, 1469, 1361, 1236, 1185, 1109, 1110, 1122, 1171, 1242, 1336, 1462, 1593, 1743, 1985, 1999, 1842, 1675, 1508, 1394, 1293, 1221, 1175, 1175, 1185, 1242, 1321, 1401, 1493, 1628, 1775, 1985, 2148, 1912, 1712, 1588, 1462, 1377, 1315, 1262, 1236, 1284, 1304, 1384, 1462, 1588, 1712, 1875, 2083, 2224, 1998, 1801, 1674, 1552, 1471, 1395, 1366, 1343, 1361, 1382, 1463, 1536, 1655, 1769, 1998, 2206, 2495, 2188, 1962, 1767, 1659, 1576, 1474, 1464, 1452, 1443, 1490, 1543, 1623, 1746, 1910, 2059, 2567, 3208, 2276, 2076, 1893, 1707, 1620, 1604, 1511, 1552, 1550, 1586, 1656, 1717, 1834, 1975, 2239, 3088] - } - }, { - "name": "3264x2448_GRAY_0", - "resolution": "3264x2448", - "illumination": "GRAY", - "vignetting": 0, - "lsc_samples_red": { - "uCoeff": [1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024] - }, - "lsc_samples_greenR": { - "uCoeff": [1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024] - }, - "lsc_samples_greenB": { - "uCoeff": [1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024] - }, - "lsc_samples_blue": { - "uCoeff": [1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024] - } - }], - "tableAll_len": 15 - } - }, - "colorAsGrey": { - "param": { - "enable": 0 - } - }, - "lumaDetect": { - "luma_detect_en": 1, - "fixed_times": 0, - "mutation_threshold": 0.0002, - "mutation_threshold_level2": 1000 - }, - "aldch": { - "param": { - "ldch_en": 0, - "meshfile": "LDCH_mesh_2688_1520_os04a10_4IR", - "correct_level": 255, - "correct_level_max": 255, - "light_center": [1351.12, 739.486], - "coefficient": [-1830.26, 0.000423795, -2.50767e-07, 1.27247e-10] - } - }, - "ccm_calib": { - "control": { - "enable": 1, - "mode": "CALIB_CCM_MODE_AUTO", - "wbgain_tolerance": 0.1, - "gain_tolerance": 0.2 - }, - "lumaCCM": { - "rgb2y_para": [38, 75, 15], - "low_bound_pos_bit": 8, - "y_alpha_curve": [0, 64, 128, 192, 256, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960, 1024], - "gain_alphaScale_curve": { - "gain": [1, 2, 4, 8, 16, 32, 64, 128, 256], - "scale": [1, 0.8, 0.8, 0.9, 1, 1, 1, 1, 1] - } - }, - "manualPara": { - "ccMatrix": [1, 0, 0, 0, 1, 0, 0, 0, 1], - "ccOffsets": [0, 0, 0] - }, - "TuningPara": { - "damp_enable": 1, - "illu_estim": { - "interp_enable": 0, - "default_illu": "A", - "weightRB": [1, 1], - "prob_limit": 0.2, - "frame_no": 8 - }, - "aCcmCof": [{ - "name": "A", - "awbGain": [1.3452, 2.4161], - "minDist": 0.05, - "matrixUsed": ["A_100", "A_74"], - "matrixUsed_len": 2, - "gain_sat_curve": { - "gains": [1, 4, 6, 16], - "sat": [90, 88, 80, 50] - } - }, { - "name": "CWF", - "awbGain": [1.8123, 2.0694], - "minDist": 0.05, - "matrixUsed": ["CWF_100", "CWF_74"], - "matrixUsed_len": 2, - "gain_sat_curve": { - "gains": [1, 4, 6, 16], - "sat": [90, 88, 80, 50] - } - }, { - "name": "D50", - "awbGain": [2.0413, 1.565], - "minDist": 0.05, - "matrixUsed": ["D50_100", "D50_74"], - "matrixUsed_len": 2, - "gain_sat_curve": { - "gains": [1, 4, 6, 16], - "sat": [90, 88, 80, 50] - } - }, { - "name": "D65", - "awbGain": [2.204, 1.4498], - "minDist": 0.05, - "matrixUsed": ["D65_100", "D65_74"], - "matrixUsed_len": 2, - "gain_sat_curve": { - "gains": [1, 4, 6, 16], - "sat": [90, 88, 80, 50] - } - }, { - "name": "D75", - "awbGain": [2.3379, 1.3483], - "minDist": 0.05, - "matrixUsed": ["D75_100", "D75_74"], - "matrixUsed_len": 2, - "gain_sat_curve": { - "gains": [1, 4, 6, 16], - "sat": [90, 88, 80, 50] - } - }, { - "name": "HZ", - "awbGain": [1.1019, 2.9858], - "minDist": 0.05, - "matrixUsed": ["HZ_100", "HZ_74"], - "matrixUsed_len": 2, - "gain_sat_curve": { - "gains": [1, 4, 6, 16], - "sat": [90, 88, 80, 50] - } - }, { - "name": "TL84", - "awbGain": [1.7523, 2.1252], - "minDist": 0.05, - "matrixUsed": ["TL84_100", "TL84_74"], - "matrixUsed_len": 2, - "gain_sat_curve": { - "gains": [1, 4, 6, 16], - "sat": [90, 88, 80, 50] - } - }], - "aCcmCof_len": 7, - "matrixAll": [{ - "name": "A_100", - "illumination": "A", - "saturation": 100, - "ccMatrix": [1.6891, -0.5521, -0.137, -0.3788, 1.5903, -0.2116, -0.1644, -0.948, 2.1124], - "ccOffsets": [0, 0, 0] - }, { - "name": "A_74", - "illumination": "A", - "saturation": 74, - "ccMatrix": [1.3186, -0.2377, -0.081, -0.2115, 1.3487, -0.1372, -0.0538, -0.529, 1.5828], - "ccOffsets": [0, 0, 0] - }, { - "name": "CWF_100", - "illumination": "CWF", - "saturation": 100, - "ccMatrix": [2.2712, -1.2488, -0.0224, -0.4072, 1.5721, -0.1649, -0.107, -0.5879, 1.6949], - "ccOffsets": [0, 0, 0] - }, { - "name": "CWF_74", - "illumination": "CWF", - "saturation": 74, - "ccMatrix": [1.792, -0.7994, 0.0074, -0.1898, 1.2888, -0.0989, 0.0311, -0.3086, 1.2775], - "ccOffsets": [0, 0, 0] - }, { - "name": "D50_100", - "illumination": "D50", - "saturation": 100, - "ccMatrix": [1.655, -0.9098, 0.2548, -0.2647, 1.2982, -0.0335, 0.16, -0.7713, 1.6113], - "ccOffsets": [0, 0, 0] - }, { - "name": "D50_74", - "illumination": "D50", - "saturation": 74, - "ccMatrix": [1.5565, -0.5177, -0.0389, -0.0858, 1.3389, -0.2531, 0.0647, -0.2656, 1.201], - "ccOffsets": [0, 0, 0] - }, { - "name": "D65_100", - "illumination": "D65", - "saturation": 100, - "ccMatrix": [2.0667, -1.0499, -0.0168, -0.2201, 1.594, -0.3739, -0.0537, -0.4778, 1.5315], - "ccOffsets": [0, 0, 0] - }, { - "name": "D65_74", - "illumination": "D65", - "saturation": 74, - "ccMatrix": [1.6549, -0.6301, -0.0248, -0.0372, 1.327, -0.2899, 0.0849, -0.2052, 1.1202], - "ccOffsets": [0, 0, 0] - }, { - "name": "D75_100", - "illumination": "D75", - "saturation": 100, - "ccMatrix": [2.155, -1.122, -0.033, -0.2227, 1.6076, -0.3849, -0.0495, -0.4337, 1.4832], - "ccOffsets": [0, 0, 0] - }, { - "name": "D75_74", - "illumination": "D75", - "saturation": 74, - "ccMatrix": [1.7269, -0.6857, -0.0411, -0.0325, 1.3349, -0.3024, 0.0946, -0.1747, 1.0801], - "ccOffsets": [0, 0, 0] - }, { - "name": "HZ_100", - "illumination": "HZ", - "saturation": 100, - "ccMatrix": [1.5916, -0.3465, -0.2451, -0.4361, 1.5559, -0.1198, -0.4226, -1.2969, 2.7195], - "ccOffsets": [0, 0, 0] - }, { - "name": "HZ_74", - "illumination": "HZ", - "saturation": 74, - "ccMatrix": [1.2224, -0.0853, -0.1371, -0.2778, 1.3236, -0.0457, -0.2688, -0.787, 2.0558], - "ccOffsets": [0, 0, 0] - }, { - "name": "TL84_100", - "illumination": "TL84", - "saturation": 100, - "ccMatrix": [1.935, -0.8598, -0.0752, -0.3278, 1.5314, -0.2036, -0.1164, -0.5772, 1.6936], - "ccOffsets": [0, 0, 0] - }, { - "name": "TL84_74", - "illumination": "TL84", - "saturation": 74, - "ccMatrix": [1.5289, -0.4872, -0.0417, -0.1454, 1.283, -0.1376, 0.01, -0.2765, 1.2665], - "ccOffsets": [0, 0, 0] - }], - "matrixAll_len": 14 - } - }, - "lut3d_calib": { - "common": { - "enable": 0, - "mode": "CALIB_Lut3D_MODE_AUTO", - "gain_tolerance": 0.1, - "wbgain_tolerance": 1 - }, - "MLut3D": { - "Table": { - "look_up_table_r": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "look_up_table_g": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "look_up_table_b": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - } - }, - "ALut3D": { - "damp_en": 1, - "lutAll": [{ - "name": "Normal", - "awbGain": [1, 1], - "gain_alpha": { - "gain": [1, 2, 4, 8, 16, 32, 64, 128, 256], - "alpha": [1, 1, 1, 1, 1, 1, 1, 1, 1] - }, - "Table": { - "look_up_table_r": [0, 20, 205, 415, 626, 829, 1023, 1023, 1023, 0, 20, 205, 415, 626, 829, 1023, 1023, 1023, 0, 20, 205, 415, 626, 829, 1023, 1023, 1023, 0, 20, 205, 416, 626, 829, 1023, 1023, 1023, 0, 20, 205, 415, 626, 829, 1023, 1023, 1023, 0, 20, 205, 416, 626, 829, 1023, 1023, 1023, 0, 20, 205, 415, 626, 829, 1023, 1023, 1023, 509, 511, 541, 616, 724, 850, 971, 1023, 1023, 677, 678, 687, 714, 759, 821, 897, 983, 1023, 0, 20, 205, 415, 626, 829, 1023, 1023, 1023, 0, 17, 202, 413, 623, 826, 1023, 1023, 1023, 0, 17, 202, 413, 623, 826, 1023, 1023, 1023, 0, 17, 202, 413, 623, 826, 1023, 1023, 1023, 0, 17, 202, 413, 623, 826, 1023, 1023, 1023, 0, 17, 202, 413, 623, 826, 1023, 1023, 1023, 0, 17, 202, 413, 623, 826, 1023, 1023, 1023, 509, 510, 541, 616, 724, 850, 970, 1023, 1023, 677, 678, 687, 714, 759, 821, 897, 983, 1023, 0, 20, 205, 415, 626, 829, 1023, 1023, 1023, 0, 17, 202, 413, 623, 826, 1023, 1023, 1023, 0, 17, 178, 386, 596, 800, 997, 1023, 1023, 0, 17, 178, 386, 596, 800, 997, 1023, 1023, 0, 17, 178, 386, 596, 800, 997, 1023, 1023, 0, 17, 178, 386, 596, 800, 997, 1023, 1023, 0, 17, 178, 386, 596, 800, 997, 1023, 1023, 511, 512, 539, 614, 723, 849, 969, 1023, 1023, 677, 678, 686, 713, 758, 820, 896, 982, 1023, 0, 20, 205, 416, 626, 829, 1023, 1023, 1023, 0, 17, 202, 413, 623, 826, 1023, 1023, 1023, 0, 17, 178, 386, 596, 800, 997, 1023, 1023, 0, 17, 178, 357, 567, 773, 971, 1023, 1023, 0, 17, 178, 357, 567, 773, 971, 1023, 1023, 0, 17, 178, 357, 567, 773, 971, 1023, 1023, 1, 17, 178, 357, 567, 773, 971, 1023, 1023, 516, 518, 544, 610, 718, 845, 965, 1023, 1023, 678, 679, 687, 710, 755, 817, 893, 979, 1023, 0, 20, 205, 415, 626, 829, 1023, 1023, 1023, 0, 17, 202, 413, 623, 826, 1023, 1023, 1023, 0, 17, 178, 386, 596, 800, 997, 1023, 1023, 0, 17, 178, 357, 567, 773, 971, 1023, 1023, 0, 17, 178, 357, 537, 745, 944, 1023, 1023, 0, 17, 178, 357, 537, 745, 944, 1023, 1023, 0, 17, 178, 357, 537, 745, 944, 1023, 1023, 526, 528, 554, 618, 713, 841, 957, 1023, 1023, 680, 680, 688, 711, 750, 811, 888, 974, 1023, 0, 20, 205, 416, 626, 829, 1023, 1023, 1023, 0, 17, 202, 413, 623, 826, 1023, 1023, 1023, 0, 17, 178, 386, 596, 800, 997, 1023, 1023, 0, 17, 178, 357, 567, 773, 971, 1023, 1023, 0, 17, 178, 357, 537, 745, 944, 1023, 1023, 0, 17, 178, 357, 537, 715, 916, 1023, 1023, 0, 17, 178, 357, 537, 715, 916, 1023, 1023, 543, 544, 569, 632, 725, 838, 947, 1023, 1023, 682, 682, 691, 713, 751, 804, 880, 967, 1023, 0, 20, 205, 415, 626, 829, 1023, 1023, 1023, 0, 17, 202, 413, 623, 826, 1023, 1023, 1023, 0, 17, 178, 386, 596, 800, 997, 1023, 1023, 1, 17, 178, 357, 567, 773, 971, 1023, 1023, 0, 17, 178, 357, 537, 745, 944, 1023, 1023, 0, 17, 178, 357, 537, 715, 916, 1023, 1023, 1, 17, 178, 357, 537, 715, 886, 1023, 1023, 569, 570, 594, 654, 745, 853, 935, 1023, 1023, 685, 686, 694, 716, 754, 806, 871, 957, 1023, 71, 83, 214, 402, 599, 791, 976, 1023, 1023, 72, 82, 212, 401, 597, 790, 975, 1023, 1023, 84, 93, 201, 386, 582, 776, 963, 1023, 1023, 114, 121, 215, 368, 561, 755, 942, 1023, 1023, 161, 166, 243, 384, 544, 735, 920, 1023, 1023, 230, 234, 293, 415, 563, 719, 900, 1023, 1023, 344, 347, 388, 482, 608, 747, 889, 1023, 1023, 608, 610, 632, 689, 776, 855, 936, 1023, 1023, 689, 690, 698, 720, 757, 808, 872, 945, 1023, 247, 250, 299, 407, 545, 693, 840, 978, 1023, 248, 251, 299, 407, 545, 693, 840, 978, 1023, 268, 271, 311, 413, 547, 693, 837, 975, 1023, 321, 323, 356, 435, 558, 695, 833, 968, 1023, 402, 403, 428, 489, 578, 700, 830, 960, 1023, 478, 479, 498, 546, 620, 711, 829, 951, 1023, 556, 557, 571, 608, 667, 743, 832, 943, 1023, 630, 630, 641, 669, 715, 777, 853, 936, 1023, 695, 695, 703, 725, 761, 811, 874, 946, 1023], - "look_up_table_g": [0, 0, 0, 1, 0, 1, 1, 637, 1771, 78, 78, 78, 78, 78, 78, 78, 663, 1778, 821, 820, 821, 821, 821, 821, 821, 1036, 1899, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1703, 2192, 2503, 2503, 2503, 2503, 2503, 2503, 2503, 2442, 2596, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3170, 3049, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 3837, 3501, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 3923, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 0, 0, 1, 1, 1, 0, 0, 637, 1771, 78, 69, 69, 69, 69, 69, 69, 660, 1778, 820, 810, 810, 810, 810, 810, 810, 1033, 1898, 1662, 1650, 1650, 1650, 1650, 1650, 1650, 1700, 2191, 2503, 2491, 2491, 2491, 2491, 2491, 2491, 2439, 2595, 3317, 3305, 3305, 3305, 3305, 3305, 3305, 3168, 3049, 4095, 4091, 4091, 4091, 4091, 4091, 4091, 3836, 3501, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 3923, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 0, 1, 0, 1, 1, 1, 0, 640, 1775, 78, 69, 69, 69, 69, 69, 69, 663, 1781, 821, 810, 713, 713, 713, 713, 713, 990, 1890, 1662, 1650, 1543, 1543, 1543, 1543, 1543, 1658, 2183, 2503, 2491, 2383, 2383, 2383, 2383, 2383, 2404, 2587, 3317, 3305, 3202, 3202, 3202, 3202, 3202, 3143, 3042, 4095, 4091, 3990, 3990, 3990, 3990, 3990, 3821, 3495, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 3918, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 1, 1, 1, 0, 1, 0, 2, 650, 1786, 78, 69, 69, 69, 69, 69, 69, 673, 1792, 821, 810, 713, 713, 713, 713, 713, 996, 1899, 1662, 1650, 1543, 1428, 1428, 1428, 1428, 1579, 2161, 2503, 2491, 2383, 2267, 2267, 2267, 2267, 2331, 2567, 3317, 3305, 3202, 3091, 3091, 3091, 3091, 3085, 3023, 4095, 4091, 3990, 3882, 3882, 3882, 3882, 3783, 3479, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 3904, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 0, 1, 1, 1, 0, 1, 0, 668, 1805, 78, 69, 69, 69, 69, 69, 69, 690, 1811, 821, 810, 713, 713, 713, 713, 713, 1008, 1916, 1662, 1650, 1543, 1428, 1428, 1428, 1428, 1587, 2174, 2503, 2491, 2383, 2267, 2149, 2149, 2149, 2242, 2534, 3317, 3305, 3202, 3091, 2978, 2978, 2978, 3008, 2993, 4095, 4091, 3990, 3882, 3775, 3775, 3775, 3727, 3452, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 3881, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 1, 0, 1, 0, 1, 1, 0, 697, 1834, 78, 69, 69, 69, 69, 69, 69, 718, 1840, 821, 810, 713, 713, 713, 713, 713, 1028, 1942, 1662, 1650, 1543, 1428, 1428, 1428, 1428, 1599, 2194, 2503, 2491, 2383, 2267, 2149, 2149, 2149, 2251, 2548, 3317, 3305, 3202, 3091, 2978, 2860, 2860, 2920, 2952, 4095, 4091, 3990, 3882, 3775, 3663, 3663, 3660, 3415, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 3848, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 1, 0, 0, 2, 0, 0, 3, 737, 1874, 78, 69, 69, 69, 69, 69, 69, 758, 1880, 821, 810, 713, 713, 713, 713, 713, 1056, 1979, 1662, 1650, 1543, 1428, 1428, 1428, 1428, 1618, 2223, 2503, 2491, 2383, 2267, 2149, 2149, 2149, 2264, 2567, 3317, 3305, 3202, 3091, 2978, 2860, 2860, 2931, 2964, 4095, 4091, 3990, 3882, 3775, 3663, 3545, 3586, 3368, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 3805, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 283, 284, 299, 339, 405, 501, 628, 793, 1927, 334, 328, 342, 378, 439, 529, 651, 812, 1932, 866, 861, 802, 820, 852, 903, 981, 1096, 2026, 1624, 1619, 1561, 1474, 1492, 1522, 1570, 1645, 2260, 2403, 2400, 2351, 2268, 2177, 2197, 2230, 2284, 2593, 3155, 3152, 3117, 3047, 2964, 2877, 2903, 2948, 2980, 3847, 3846, 3823, 3771, 3702, 3627, 3557, 3606, 3377, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 3754, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 988, 989, 1014, 1082, 1198, 1367, 1588, 1785, 1992, 1003, 1003, 1027, 1094, 1209, 1377, 1596, 1791, 1997, 1245, 1244, 1243, 1299, 1396, 1543, 1724, 1899, 2086, 1751, 1750, 1745, 1741, 1813, 1918, 2029, 2161, 2307, 2354, 2354, 2347, 2330, 2313, 2366, 2437, 2525, 2626, 2923, 2923, 2916, 2898, 2873, 2846, 2887, 2939, 3000, 3449, 3449, 3442, 3425, 3399, 3365, 3328, 3355, 3387, 3916, 3915, 3910, 3894, 3869, 3834, 3792, 3745, 3758, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095], - "look_up_table_b": [0, 0, 0, 0, 0, 0, 0, 159, 443, 0, 0, 0, 0, 0, 0, 0, 160, 443, 0, 0, 0, 0, 0, 0, 0, 168, 452, 0, 0, 0, 0, 0, 0, 1, 193, 476, 0, 0, 0, 0, 0, 0, 0, 237, 514, 0, 0, 0, 0, 0, 0, 0, 313, 563, 0, 0, 0, 1, 0, 0, 1, 461, 617, 509, 509, 515, 531, 563, 623, 709, 724, 673, 677, 677, 678, 680, 684, 691, 700, 711, 725, 20, 20, 20, 20, 20, 20, 20, 165, 444, 20, 17, 17, 17, 17, 17, 17, 165, 444, 20, 17, 17, 17, 17, 17, 17, 173, 453, 20, 17, 17, 17, 17, 17, 17, 197, 477, 20, 17, 17, 17, 17, 17, 17, 240, 515, 20, 17, 17, 17, 17, 17, 17, 316, 564, 20, 17, 17, 17, 17, 17, 17, 462, 618, 510, 510, 516, 532, 565, 623, 709, 725, 673, 678, 678, 678, 681, 685, 691, 700, 711, 725, 205, 205, 205, 205, 205, 205, 205, 254, 467, 205, 202, 202, 202, 202, 202, 202, 253, 467, 205, 202, 178, 178, 178, 178, 178, 247, 472, 205, 202, 178, 178, 178, 178, 178, 264, 495, 205, 202, 178, 178, 178, 178, 178, 297, 530, 205, 202, 178, 178, 178, 178, 178, 359, 576, 205, 202, 178, 178, 178, 178, 178, 490, 628, 537, 537, 539, 554, 584, 640, 720, 734, 681, 687, 687, 686, 689, 693, 699, 707, 718, 731, 415, 415, 415, 416, 415, 416, 415, 417, 525, 415, 413, 413, 413, 413, 413, 413, 416, 525, 415, 413, 386, 386, 386, 386, 386, 407, 529, 416, 413, 386, 357, 357, 357, 357, 395, 540, 415, 413, 386, 357, 357, 357, 357, 415, 570, 416, 413, 386, 357, 357, 357, 357, 458, 610, 415, 413, 386, 357, 357, 357, 357, 557, 656, 606, 606, 606, 610, 636, 684, 747, 760, 704, 712, 712, 712, 710, 714, 719, 727, 737, 749, 626, 626, 626, 626, 626, 626, 626, 601, 614, 626, 623, 623, 623, 623, 623, 623, 600, 614, 626, 623, 596, 596, 596, 596, 596, 590, 616, 626, 623, 596, 567, 567, 567, 567, 573, 622, 626, 623, 596, 567, 537, 537, 537, 560, 634, 626, 623, 596, 567, 537, 537, 537, 587, 665, 626, 623, 596, 567, 537, 537, 537, 654, 702, 706, 706, 706, 707, 713, 752, 793, 803, 741, 755, 755, 755, 753, 750, 754, 761, 769, 780, 829, 829, 829, 829, 829, 829, 829, 789, 724, 829, 826, 826, 826, 826, 826, 826, 788, 724, 829, 826, 800, 800, 800, 800, 800, 777, 724, 829, 826, 800, 773, 773, 773, 773, 759, 726, 829, 826, 800, 773, 745, 745, 745, 741, 730, 829, 826, 800, 773, 745, 715, 715, 730, 738, 829, 826, 800, 773, 745, 715, 715, 771, 765, 829, 829, 827, 825, 825, 838, 856, 863, 794, 816, 816, 815, 813, 809, 804, 809, 816, 823, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 973, 848, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 972, 848, 1023, 1023, 997, 997, 997, 997, 997, 961, 846, 1023, 1023, 997, 971, 971, 971, 971, 942, 843, 1023, 1023, 997, 971, 944, 944, 944, 921, 841, 1023, 1023, 997, 971, 944, 916, 916, 902, 840, 1023, 1023, 997, 971, 944, 916, 886, 897, 842, 961, 961, 959, 953, 947, 946, 935, 938, 861, 893, 893, 892, 889, 884, 878, 871, 875, 880, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 977, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 977, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 975, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 969, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 961, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 952, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 945, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 938, 982, 982, 980, 977, 972, 965, 956, 945, 948, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023] - } - }], - "lutAll_len": 1 - } - }, - "af": { - "TuningPara": { - "af_mode": "CalibDbV2_AF_MODE_NOT_SET", - "win_h_offs": 0, - "win_v_offs": 0, - "win_h_size": 0, - "win_v_size": 0, - "fixed_mode": { - "code": 8 - }, - "macro_mode": { - "code": 32 - }, - "infinity_mode": { - "code": 32 - }, - "contrast_af": { - "enable": 1, - "Afss": "CalibDbV2_CAM_AFM_FSS_ADAPTIVE_RANGE", - "FullDir": "CalibDbV2_CAM_AFM_ADAPTIVE_SEARCH", - "FullSteps": 9, - "FullRangeTbl": [0, 8, 16, 24, 32, 40, 48, 56, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "AdaptiveDir": "CalibDbV2_CAM_AFM_ADAPTIVE_SEARCH", - "AdaptiveSteps": 9, - "AdaptRangeTbl": [0, 8, 16, 24, 32, 40, 48, 56, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "TrigThers": 0.075, - "LumaTrigThers": 0, - "StableThers": 0.02, - "StableFrames": 3, - "StableTime": 200, - "SceneDiffEnable": 0, - "SceneDiffThers": 0, - "SceneDiffBlkThers": 0, - "CenterSceneDiffThers": 0, - "ValidMaxMinRatio": 0, - "ValidValueThers": 0, - "OutFocusValue": 50, - "OutFocusPos": 30, - "WeightEnable": 0, - "Weight": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "SearchPauseLumaEnable": 0, - "SearchPauseLumaThers": 0, - "SearchLumaStableFrames": 0, - "SearchLumaStableThers": 0, - "FlatValue": 0 - }, - "laser_af": { - "enable": 0, - "vcmDot": [0, 16, 32, 40, 48, 56, 64], - "distanceDot": [0.2, 0.24, 0.34, 0.4, 0.66, 1, 3] - }, - "pdaf": { - "enable": 0 - }, - "vcmcfg": { - "start_current": -1, - "rated_current": -1, - "step_mode": -1, - "extra_delay": 0 - }, - "measiso_cfg": [{ - "iso": 50, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }, { - "iso": 100, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }, { - "iso": 200, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }, { - "iso": 400, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }, { - "iso": 800, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }, { - "iso": 1600, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }, { - "iso": 3200, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }, { - "iso": 6400, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }, { - "iso": 12800, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }, { - "iso": 25600, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }, { - "iso": 51200, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }, { - "iso": 102400, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }, { - "iso": 204800, - "afmThres": 4, - "gammaY": [0, 45, 108, 179, 245, 344, 409, 459, 500, 567, 622, 676, 759, 833, 896, 962, 1023], - "gaussWeight": [32, 16, 8] - }], - "zoomfocus_tbl": { - "tbl_len": 0, - "focal_length": [], - "focal_length_len": 0, - "zoom_pos": [], - "zoom_pos_len": 0, - "focus_infpos": [], - "focus_infpos_len": 0, - "focus_macropos": [], - "focus_macropos_len": 0 - } - } - }, - "thumbnails": { - "param": { - "thumbnail_configs": [{ - "owner_cookies": 0, - "stream_type": 0, - "after_nodes": 0, - "before_node": 0, - "format": "NV12\u0002", - "width_intfactor": 2, - "height_intfactor": 2, - "buffer_count": 0 - }, { - "owner_cookies": 1, - "stream_type": 0, - "after_nodes": 0, - "before_node": 0, - "format": "NV12\u0004", - "width_intfactor": 4, - "height_intfactor": 4, - "buffer_count": 0 - }, { - "owner_cookies": 2, - "stream_type": 0, - "after_nodes": 0, - "before_node": 0, - "format": "NV12\b", - "width_intfactor": 8, - "height_intfactor": 8, - "buffer_count": 0 - }], - "thumbnail_configs_len": 3 - } - }, - "bayernr_v2": { - "Version": "", - "CalibPara": { - "Setting": [{ - "SNR_Mode": "LSNR", - "Sensor_Mode": "lcg", - "Calib_ISO": [{ - "iso": 50, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [440, 385, 336, 292, 226, 191, 187, 202, 220, 235, 241, 238, 224, 203, 176, 155] - }, { - "iso": 100, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [747, 638, 535, 436, 251, 141, 120, 135, 114, 187, 226, 237, 222, 181, 112, 100] - }, { - "iso": 200, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [1233, 1094, 966, 850, 657, 526, 459, 448, 464, 483, 490, 477, 440, 383, 313, 262] - }, { - "iso": 400, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [1076, 1002, 936, 877, 783, 717, 674, 647, 628, 612, 593, 567, 534, 494, 452, 416] - }, { - "iso": 800, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [2708, 2445, 2204, 1986, 1624, 1366, 1209, 1136, 1113, 1104, 1082, 1031, 942, 813, 655, 512] - }, { - "iso": 1600, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 3200, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 6400, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 12800, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 25600, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 51200, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 102400, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 204800, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }], - "Calib_ISO_len": 13 - }, { - "SNR_Mode": "HSNR", - "Sensor_Mode": "hcg", - "Calib_ISO": [{ - "iso": 50, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [329, 292, 258, 227, 176, 141, 124, 121, 127, 133, 137, 135, 127, 113, 94, 75] - }, { - "iso": 100, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [747, 638, 535, 436, 251, 141, 120, 135, 114, 187, 226, 237, 222, 181, 112, 100] - }, { - "iso": 200, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [835, 721, 614, 514, 336, 194, 120, 147, 207, 256, 284, 288, 267, 221, 148, 120] - }, { - "iso": 400, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [789, 703, 625, 553, 435, 354, 311, 301, 308, 318, 321, 312, 288, 249, 198, 147] - }, { - "iso": 800, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [761, 707, 658, 614, 542, 490, 454, 430, 414, 401, 386, 366, 341, 309, 273, 238] - }, { - "iso": 1600, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 3200, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 6400, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 12800, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 25600, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 51200, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 102400, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }, { - "iso": 204800, - "lumapoint": [512, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 13312, 14336], - "sigma": [768, 768, 768, 768, 640, 640, 640, 640, 512, 512, 512, 512, 512, 512, 512, 384] - }], - "Calib_ISO_len": 13 - }], - "Setting_len": 2 - }, - "Bayernr2D": { - "enable": 1, - "Setting": [{ - "SNR_Mode": "LSNR", - "Sensor_Mode": "lcg", - "Tuning_ISO": [{ - "iso": 50, - "gauss_guide": 1, - "filter_strength": 15, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 100, - "gauss_guide": 1, - "filter_strength": 15, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 200, - "gauss_guide": 1, - "filter_strength": 15, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 400, - "gauss_guide": 1, - "filter_strength": 15, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 800, - "gauss_guide": 1, - "filter_strength": 15, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 1600, - "gauss_guide": 1, - "filter_strength": 0.8, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 3200, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 6400, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 12800, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 25600, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 51200, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 102400, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 204800, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }], - "Tuning_ISO_len": 13 - }, { - "SNR_Mode": "HSNR", - "Sensor_Mode": "hcg", - "Tuning_ISO": [{ - "iso": 50, - "gauss_guide": 0, - "filter_strength": 4, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 100, - "gauss_guide": 0, - "filter_strength": 4, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 200, - "gauss_guide": 0, - "filter_strength": 4, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 400, - "gauss_guide": 0, - "filter_strength": 4, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 800, - "gauss_guide": 0, - "filter_strength": 4, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 1600, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 3200, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 6400, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 12800, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 25600, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 51200, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 102400, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }, { - "iso": 204800, - "gauss_guide": 1, - "filter_strength": 0.7, - "edgesofts": 2, - "ratio": 0.01, - "weight": 1 - }], - "Tuning_ISO_len": 13 - }], - "Setting_len": 2 - }, - "Bayernr3D": { - "enable": 0, - "Setting": [{ - "SNR_Mode": "LSNR", - "Sensor_Mode": "lcg", - "Tuning_ISO": [{ - "iso": 50, - "filter_strength": 0.5, - "sp_filter_strength": 0.55, - "lo_clipwgt": 0.9, - "hi_clipwgt": 0.88, - "softwgt": 0 - }, { - "iso": 100, - "filter_strength": 0.5, - "sp_filter_strength": 0.55, - "lo_clipwgt": 0.9, - "hi_clipwgt": 0.88, - "softwgt": 0 - }, { - "iso": 200, - "filter_strength": 0.5, - "sp_filter_strength": 0.6, - "lo_clipwgt": 0.9, - "hi_clipwgt": 0.88, - "softwgt": 0 - }, { - "iso": 400, - "filter_strength": 0.5, - "sp_filter_strength": 0.6, - "lo_clipwgt": 0.9, - "hi_clipwgt": 0.88, - "softwgt": 0 - }, { - "iso": 800, - "filter_strength": 0.5, - "sp_filter_strength": 0.65, - "lo_clipwgt": 0.9, - "hi_clipwgt": 0.88, - "softwgt": 0 - }, { - "iso": 1600, - "filter_strength": 0.1, - "sp_filter_strength": 0.65, - "lo_clipwgt": 0.9, - "hi_clipwgt": 0.9, - "softwgt": 0 - }, { - "iso": 3200, - "filter_strength": 0.1, - "sp_filter_strength": 0.65, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }, { - "iso": 6400, - "filter_strength": 0.5, - "sp_filter_strength": 0.7, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }, { - "iso": 12800, - "filter_strength": 0.5, - "sp_filter_strength": 0.7, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }, { - "iso": 25600, - "filter_strength": 0.6, - "sp_filter_strength": 0.7, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }, { - "iso": 51200, - "filter_strength": 0.6, - "sp_filter_strength": 0.7, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }, { - "iso": 102400, - "filter_strength": 0.7, - "sp_filter_strength": 0.7, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }, { - "iso": 204800, - "filter_strength": 0.7, - "sp_filter_strength": 0.7, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }], - "Tuning_ISO_len": 13 - }, { - "SNR_Mode": "HSNR", - "Sensor_Mode": "hcg", - "Tuning_ISO": [{ - "iso": 50, - "filter_strength": 0.1, - "sp_filter_strength": 0.55, - "lo_clipwgt": 0.9, - "hi_clipwgt": 0.9, - "softwgt": 0 - }, { - "iso": 100, - "filter_strength": 0.1, - "sp_filter_strength": 0.55, - "lo_clipwgt": 0.9, - "hi_clipwgt": 0.9, - "softwgt": 0 - }, { - "iso": 200, - "filter_strength": 0.1, - "sp_filter_strength": 0.6, - "lo_clipwgt": 0.9, - "hi_clipwgt": 0.9, - "softwgt": 0 - }, { - "iso": 400, - "filter_strength": 0.1, - "sp_filter_strength": 0.6, - "lo_clipwgt": 0.9, - "hi_clipwgt": 0.9, - "softwgt": 0 - }, { - "iso": 800, - "filter_strength": 0.1, - "sp_filter_strength": 0.65, - "lo_clipwgt": 0.9, - "hi_clipwgt": 0.9, - "softwgt": 0 - }, { - "iso": 1600, - "filter_strength": 0.1, - "sp_filter_strength": 0.65, - "lo_clipwgt": 0.9, - "hi_clipwgt": 0.9, - "softwgt": 0 - }, { - "iso": 3200, - "filter_strength": 0.1, - "sp_filter_strength": 0.65, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }, { - "iso": 6400, - "filter_strength": 0.5, - "sp_filter_strength": 0.7, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }, { - "iso": 12800, - "filter_strength": 0.5, - "sp_filter_strength": 0.7, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }, { - "iso": 25600, - "filter_strength": 0.6, - "sp_filter_strength": 0.7, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }, { - "iso": 51200, - "filter_strength": 0.6, - "sp_filter_strength": 0.7, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }, { - "iso": 102400, - "filter_strength": 0.7, - "sp_filter_strength": 0.7, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }, { - "iso": 204800, - "filter_strength": 0.7, - "sp_filter_strength": 0.7, - "lo_clipwgt": 0.5, - "hi_clipwgt": 0.5, - "softwgt": 0 - }], - "Tuning_ISO_len": 13 - }], - "Setting_len": 2 - } - }, - "cnr_v1": { - "Version": "", - "TuningPara": { - "enable": 1, - "Kernel_Coeff": { - "kernel_5x5": [1, 0.8825, 0.7788, 0.6065, 0.3679] - }, - "Setting": [{ - "SNR_Mode": "LSNR", - "Sensor_Mode": "lcg", - "Tuning_ISO": [{ - "iso": 50, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 30, - "color_sat_adj_alpha": 0.4, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 50, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 30, - "thumb_color_sat": 4, - "lf_denoise_strength": 40, - "lf_color_sat": 4, - "lf_denoise_alpha": 0.5 - }, { - "iso": 100, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 30, - "color_sat_adj_alpha": 0.4, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 50, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 30, - "thumb_color_sat": 4, - "lf_denoise_strength": 40, - "lf_color_sat": 4, - "lf_denoise_alpha": 0.5 - }, { - "iso": 200, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 30, - "color_sat_adj_alpha": 0.4, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 50, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 30, - "thumb_color_sat": 4, - "lf_denoise_strength": 40, - "lf_color_sat": 4, - "lf_denoise_alpha": 0.5 - }, { - "iso": 400, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 30, - "color_sat_adj_alpha": 0.4, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 50, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 30, - "thumb_color_sat": 4, - "lf_denoise_strength": 40, - "lf_color_sat": 4, - "lf_denoise_alpha": 0.5 - }, { - "iso": 800, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 30, - "color_sat_adj_alpha": 0.4, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 50, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 30, - "thumb_color_sat": 4, - "lf_denoise_strength": 40, - "lf_color_sat": 4, - "lf_denoise_alpha": 0.5 - }, { - "iso": 1600, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 3200, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 6400, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 12800, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 25600, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 51200, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 102400, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 204800, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }], - "Tuning_ISO_len": 13 - }, { - "SNR_Mode": "HSNR", - "Sensor_Mode": "hcg", - "Tuning_ISO": [{ - "iso": 50, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 100, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 200, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 400, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 800, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 1600, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 3200, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 6400, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 12800, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 25600, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 51200, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 102400, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }, { - "iso": 204800, - "hf_bypass": 0, - "lf_bypass": 0, - "cnr_exgain": 1, - "cnr_g_gain": 1, - "color_sat_adj": 40, - "color_sat_adj_alpha": 0.8, - "hf_spikes_reducion_strength": 0.5, - "hf_denoise_strength": 10.2, - "hf_color_sat": 1.5, - "hf_denoise_alpha": 0, - "hf_bf_wgt_clip": 0, - "thumb_spikes_reducion_strength": 0.2, - "thumb_denoise_strength": 4, - "thumb_color_sat": 4, - "lf_denoise_strength": 4, - "lf_color_sat": 4, - "lf_denoise_alpha": 1 - }], - "Tuning_ISO_len": 13 - }], - "Setting_len": 2 - } - }, - "ynr_v2": { - "Version": "", - "CalibPara": { - "Setting": [{ - "SNR_Mode": "LSNR", - "Sensor_Mode": "lcg", - "Calib_ISO": [{ - "iso": 50, - "sigma_curve": [5.26063e-13, -4.31051e-09, 6.01295e-06, 0.00733553, 30.2968], - "ynr_ci_l": 0.35887, - "ynr_ci_h": 0.218965 - }, { - "iso": 100, - "sigma_curve": [-8.51864e-13, 8.4477e-09, -3.1173e-05, 0.0431732, 20.4729], - "ynr_ci_l": 0.266861, - "ynr_ci_h": 0.176977 - }, { - "iso": 200, - "sigma_curve": [-1.91013e-12, 1.68572e-08, -5.42127e-05, 0.0644649, 50.8293], - "ynr_ci_l": 0.264338, - "ynr_ci_h": 0.176603 - }, { - "iso": 400, - "sigma_curve": [-1.39053e-12, 1.37088e-08, -5.30971e-05, 0.0730568, 77.3162], - "ynr_ci_l": 0.260614, - "ynr_ci_h": 0.169545 - }, { - "iso": 800, - "sigma_curve": [-7.56352e-13, 8.08215e-09, -4.17244e-05, 0.0722224, 122.519], - "ynr_ci_l": 0.292136, - "ynr_ci_h": 0.186536 - }, { - "iso": 1600, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 3200, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 6400, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 12800, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 25600, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 51200, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 102400, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 204800, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }], - "Calib_ISO_len": 13 - }, { - "SNR_Mode": "HSNR", - "Sensor_Mode": "hcg", - "Calib_ISO": [{ - "iso": 50, - "sigma_curve": [-3.79338e-13, 4.20139e-09, -1.65728e-05, 0.0227778, 17.7731], - "ynr_ci_l": 0.264599, - "ynr_ci_h": 0.186359 - }, { - "iso": 100, - "sigma_curve": [-8.51864e-13, 8.4477e-09, -3.1173e-05, 0.0431732, 20.4729], - "ynr_ci_l": 0.266861, - "ynr_ci_h": 0.176977 - }, { - "iso": 200, - "sigma_curve": [-1.01774e-12, 1.07758e-08, -4.22101e-05, 0.0597135, 28.7999], - "ynr_ci_l": 0.259483, - "ynr_ci_h": 0.166846 - }, { - "iso": 400, - "sigma_curve": [-1.32816e-12, 1.29829e-08, -4.53493e-05, 0.0511179, 55.0177], - "ynr_ci_l": 0.254945, - "ynr_ci_h": 0.156095 - }, { - "iso": 800, - "sigma_curve": [-1.76225e-12, 1.64389e-08, -5.4805e-05, 0.0586055, 72.3208], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 1600, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 3200, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 6400, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 12800, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 25600, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 51200, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 102400, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }, { - "iso": 204800, - "sigma_curve": [-7.80229e-13, 6.77367e-09, -2.20431e-05, 0.0298751, 10.9382], - "ynr_ci_l": 0.267207, - "ynr_ci_h": 0.157733 - }], - "Calib_ISO_len": 13 - }], - "Setting_len": 2 - }, - "TuningPara": { - "enable": 1, - "Setting": [{ - "SNR_Mode": "LSNR", - "Sensor_Mode": "lcg", - "Tuning_ISO": [{ - "iso": 50, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 20, - "low_bf_1": 20, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.1, - "low_dist_adj": 8, - "low_weight": 1, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.9, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 20, - "high_weight": 1, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1.05, 1.1, 1.1, 1.2, 1.4, 1.6, 1.8, 2, 2.2, 2.4, 2.8, 3, 3.5, 4] - }, { - "iso": 100, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 20, - "low_bf_1": 20, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.1, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.9, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 20, - "high_weight": 1, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1.05, 1.1, 1.1, 1.2, 1.4, 1.6, 1.8, 2, 2.2, 2.4, 2.8, 3, 3.5, 4] - }, { - "iso": 200, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 20, - "low_bf_1": 20, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.1, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.9, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 20, - "high_weight": 1, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1.05, 1.1, 1.1, 1.2, 1.4, 1.6, 1.8, 2, 2.2, 2.4, 2.8, 3, 3.5, 4] - }, { - "iso": 400, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 20, - "low_bf_1": 20, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.1, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.9, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 20, - "high_weight": 1, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1.05, 1.1, 1.1, 1.2, 1.4, 1.6, 1.8, 2, 2.2, 2.4, 2.8, 3, 3.5, 4] - }, { - "iso": 800, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 20, - "low_bf_1": 20, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.1, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.9, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 20, - "high_weight": 1, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1.05, 1.1, 1.1, 1.2, 1.4, 1.6, 1.8, 2, 2.2, 2.4, 2.8, 3, 3.5, 4] - }, { - "iso": 1600, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 5, - "low_bf_1": 5, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.5, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1.05, 1.1, 1.1, 1.2, 1.4, 1.6, 1.8, 2, 2.2, 2.4, 2.8, 3.5] - }, { - "iso": 3200, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.95, - "low_bf_1": 0.5, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 6400, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 1, - "low_bf_1": 0.5, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 12800, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 1.1, - "low_bf_1": 0.5, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 25600, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 1.1, - "low_bf_1": 0.5, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 51200, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 1.1, - "low_bf_1": 0.5, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 102400, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 1.1, - "low_bf_1": 0.5, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 204800, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 1.1, - "low_bf_1": 0.5, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }], - "Tuning_ISO_len": 13 - }, { - "SNR_Mode": "HSNR", - "Sensor_Mode": "hcg", - "Tuning_ISO": [{ - "iso": 50, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0.5, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 100, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 200, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 400, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 800, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 1600, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 3200, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 6400, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 12800, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 25600, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 51200, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 102400, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }, { - "iso": 204800, - "ynr_bft3x3_bypass": 0, - "ynr_lbft5x5_bypass": 0, - "ynr_lgft3x3_bypass": 0, - "ynr_flt1x1_bypass": 0, - "ynr_sft5x5_bypass": 0, - "low_bf_0": 0.5, - "low_bf_1": 0.6, - "low_thred_adj": 0.25, - "low_peak_supress": 0.5, - "low_edge_adj_thresh": 7, - "low_center_weight": 0.4, - "low_dist_adj": 8, - "low_weight": 0, - "low_filt_strength_0": 0.7, - "low_filt_strength_1": 0.85, - "low_bi_weight": 0.2, - "base_filter_weight_0": 0.28, - "base_filter_weight_1": 0.46, - "base_filter_weight_2": 0.26, - "high_thred_adj": 1, - "high_weight": 0.78, - "hi_min_adj": 0.9, - "hi_edge_thed": 100, - "high_direction_weight": [1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5], - "rnr_strength": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - }], - "Tuning_ISO_len": 13 - }], - "Setting_len": 2 - } - }, - "sharp_v3": { - "Version": "", - "TuningPara": { - "enable": 1, - "Setting": [{ - "SNR_Mode": "LSNR", - "Sensor_Mode": "lcg", - "Tuning_ISO": [{ - "iso": 50, - "pbf_gain": 0.8, - "pbf_ratio": 0.5, - "pbf_add": 1, - "gaus_ratio": 0.5, - "sharp_ratio": 10, - "bf_gain": 2, - "bf_ratio": 5, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [12, 16, 20, 24, 28, 24, 20, 20], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [512, 512, 512, 512, 512, 512, 512, 512] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 100, - "pbf_gain": 0.8, - "pbf_ratio": 0.5, - "pbf_add": 1, - "gaus_ratio": 0.5, - "sharp_ratio": 10, - "bf_gain": 3, - "bf_ratio": 5, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [24, 32, 40, 48, 56, 48, 48, 40], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [512, 512, 512, 512, 512, 512, 512, 512] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 200, - "pbf_gain": 0.8, - "pbf_ratio": 0.5, - "pbf_add": 1, - "gaus_ratio": 0.5, - "sharp_ratio": 10, - "bf_gain": 3, - "bf_ratio": 5, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [24, 32, 40, 48, 56, 48, 48, 40], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [512, 512, 512, 512, 512, 512, 512, 512] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 400, - "pbf_gain": 0.8, - "pbf_ratio": 0.5, - "pbf_add": 1, - "gaus_ratio": 0.5, - "sharp_ratio": 10, - "bf_gain": 4, - "bf_ratio": 5, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [32, 40, 48, 56, 64, 56, 48, 40], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [512, 512, 512, 512, 512, 512, 512, 512] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 800, - "pbf_gain": 0.8, - "pbf_ratio": 0.5, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 10, - "bf_gain": 4, - "bf_ratio": 5, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [40, 48, 56, 64, 80, 64, 56, 48], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [512, 512, 512, 512, 512, 512, 512, 512] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 1600, - "pbf_gain": 0.8, - "pbf_ratio": 0.2, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [256, 256, 256, 256, 256, 256, 256, 256] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 3200, - "pbf_gain": 0.8, - "pbf_ratio": 0.2, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 6400, - "pbf_gain": 0.8, - "pbf_ratio": 0.3, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 12800, - "pbf_gain": 0.8, - "pbf_ratio": 0.4, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 25600, - "pbf_gain": 0.8, - "pbf_ratio": 0.4, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 51200, - "pbf_gain": 0.8, - "pbf_ratio": 0.4, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 102400, - "pbf_gain": 0.8, - "pbf_ratio": 0.4, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 204800, - "pbf_gain": 0.8, - "pbf_ratio": 0.4, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 128, 160, 192, 160, 128, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }], - "Tuning_ISO_len": 13 - }, { - "SNR_Mode": "HSNR", - "Sensor_Mode": "hcg", - "Tuning_ISO": [{ - "iso": 50, - "pbf_gain": 0.8, - "pbf_ratio": 0, - "pbf_add": 1, - "gaus_ratio": 0, - "sharp_ratio": 6, - "bf_gain": 2, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [8, 12, 16, 16, 24, 20, 16, 16], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 100, - "pbf_gain": 0.8, - "pbf_ratio": 0, - "pbf_add": 1, - "gaus_ratio": 0, - "sharp_ratio": 6, - "bf_gain": 3, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [12, 16, 20, 24, 28, 24, 20, 20], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 200, - "pbf_gain": 0.8, - "pbf_ratio": 0, - "pbf_add": 1, - "gaus_ratio": 0, - "sharp_ratio": 6, - "bf_gain": 3, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [24, 32, 40, 48, 56, 48, 48, 40], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [512, 512, 512, 512, 512, 512, 512, 512] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 400, - "pbf_gain": 0.8, - "pbf_ratio": 0, - "pbf_add": 1, - "gaus_ratio": 0, - "sharp_ratio": 7, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [32, 40, 48, 56, 64, 56, 48, 40], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [512, 512, 512, 512, 512, 512, 512, 512] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 800, - "pbf_gain": 0.8, - "pbf_ratio": 0.2, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 7, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [40, 48, 56, 64, 80, 64, 56, 48], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [512, 512, 512, 512, 512, 512, 512, 512] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 1600, - "pbf_gain": 0.8, - "pbf_ratio": 0.2, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [256, 256, 256, 256, 256, 256, 256, 256] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 3200, - "pbf_gain": 0.8, - "pbf_ratio": 0.2, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 6400, - "pbf_gain": 0.8, - "pbf_ratio": 0.3, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 12800, - "pbf_gain": 0.8, - "pbf_ratio": 0.4, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 25600, - "pbf_gain": 0.8, - "pbf_ratio": 0.4, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 51200, - "pbf_gain": 0.8, - "pbf_ratio": 0.4, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 102400, - "pbf_gain": 0.8, - "pbf_ratio": 0.4, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }, { - "iso": 204800, - "pbf_gain": 0.8, - "pbf_ratio": 0.4, - "pbf_add": 1, - "gaus_ratio": 1, - "sharp_ratio": 8, - "bf_gain": 4, - "bf_ratio": 1, - "bf_add": 32, - "luma_para": { - "luma_point": [0, 64, 128, 256, 384, 640, 896, 1024], - "luma_sigma": [48, 56, 64, 80, 96, 80, 64, 56], - "hf_clip": [64, 96, 12, 16, 19, 16, 12, 0], - "local_sharp_strength": [128, 128, 128, 128, 128, 128, 128, 128] - }, - "kernel_para": { - "prefilter_coeff": [0.2042, 0.1238, 0.0751], - "GaussianFilter_coeff": [0.2042, 0.1238, 0.0751], - "hfBilateralFilter_coeff": [0.2042, 0.1238, 0.0751] - } - }], - "Tuning_ISO_len": 13 - }], - "Setting_len": 2 - } - } - } - }], - "sub_scene_len": 1 - }], - "main_scene_len": 1, - "uapi": [], - "uapi_len": 0, - "sys_static_cfg": { - "algoSwitch": { - "enable": 0, - "enable_algos": [], - "enable_algos_len": 0 - } - } -} \ No newline at end of file diff --git a/hardware/isp/lib/librkaiq.z.so b/hardware/isp/lib/librkaiq.z.so deleted file mode 100644 index 1e0c605527c700a956590c94d43864d164714432..0000000000000000000000000000000000000000 Binary files a/hardware/isp/lib/librkaiq.z.so and /dev/null differ diff --git a/hardware/isp/lib64/librkaiq.z.so b/hardware/isp/lib64/librkaiq.z.so deleted file mode 100644 index 6a54322a23aae1482288894795f23f7086e32ec1..0000000000000000000000000000000000000000 Binary files a/hardware/isp/lib64/librkaiq.z.so and /dev/null differ diff --git a/hardware/mpp/BUILD.gn b/hardware/mpp/BUILD.gn deleted file mode 100755 index 17b48da92f7c8925f97c2b07da44bf1a67661dde..0000000000000000000000000000000000000000 --- a/hardware/mpp/BUILD.gn +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright (C) 2021 HiHope Open Source Organization . -# 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") - -ohos_prebuilt_shared_library("libmpp") { - if (target_cpu == "arm") { - source = "lib/librockchip_mpp.z.so" - } else { - source = "lib64/librockchip_mpp.so" - } - install_images = [ chipset_base_dir ] - part_name = "rockchip_products" - install_enable = true -} - -group("mpp") { - deps = [ ":libmpp" ] -} diff --git a/hardware/mpp/include/mpi_enc_utils.h b/hardware/mpp/include/mpi_enc_utils.h deleted file mode 100644 index 751025008475c7bc7f6bdf3befa005fb074a0fc1..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpi_enc_utils.h +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPI_ENC_UTILS_H__ -#define __MPI_ENC_UTILS_H__ - -#include - -#include "rk_venc_cmd.h" - -typedef struct MpiEncTestArgs_t { - MppCodingType type; - MppFrameFormat format; - - RK_S32 width; - RK_S32 height; -} MpiEncTestArgs; - -typedef struct { - // global flow control flag - RK_U32 frm_eos; - RK_U32 pkt_eos; - RK_S32 frame_count; - RK_U64 stream_size; - - // base flow context - MppCtx ctx; - MppApi *mpi; - MppEncCfg cfg; - - // input / output - MppBufferGroup buf_grp; - MppBuffer pkt_buf; - MppEncSeiMode sei_mode; - MppEncHeaderMode header_mode; - - // paramter for resource malloc - RK_U32 width; - RK_U32 height; - RK_U32 hor_stride; - RK_U32 ver_stride; - MppFrameFormat fmt; - MppCodingType type; - RK_S32 num_frames; - - // resources - size_t frame_size; - - RK_U32 split_mode; - RK_U32 split_arg; - - // rate control runtime parameter - - RK_S32 fps_in_flex; - RK_S32 fps_in_den; - RK_S32 fps_in_num; - RK_S32 fps_out_flex; - RK_S32 fps_out_den; - RK_S32 fps_out_num; - RK_S32 bps; - RK_S32 bps_max; - RK_S32 bps_min; - RK_S32 rc_mode; - RK_S32 gop_mode; - RK_S32 gop_len; - RK_S32 vi_len; -} MpiEncTestData; - -int hal_mpp_get_sps(void *ctx, unsigned char *buf, size_t *buf_size); -int hal_mpp_encode(void *ctx, int dma_fd, unsigned char *buf, size_t *buf_size); - -void *hal_mpp_ctx_create(MpiEncTestArgs *args); -void hal_mpp_ctx_delete(void *ctx); - -#endif /* __MPI_ENC_UTILS_H__ */ diff --git a/hardware/mpp/include/mpp_allocator.h b/hardware/mpp/include/mpp_allocator.h deleted file mode 100755 index 85cff8ca86ecfc8c7ca0692528c9fb79dd73779f..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_allocator.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_ALLOCATOR_H__ -#define __MPP_ALLOCATOR_H__ - -#include "rk_type.h" -#include "mpp_buffer.h" - -typedef void *MppAllocator; - -typedef struct MppAllocatorCfg_t { - // input - size_t alignment; - RK_U32 flags; -} MppAllocatorCfg; - -typedef struct MppAllocatorApi_t { - RK_U32 size; - RK_U32 version; - - MPP_RET (*alloc)(MppAllocator allocator, MppBufferInfo *data); - MPP_RET (*free)(MppAllocator allocator, MppBufferInfo *data); - MPP_RET (*import)(MppAllocator allocator, MppBufferInfo *data); - MPP_RET (*release)(MppAllocator allocator, MppBufferInfo *data); - MPP_RET (*mmap)(MppAllocator allocator, MppBufferInfo *data); -} MppAllocatorApi; - -#ifdef __cplusplus -extern "C" { -#endif - -MPP_RET mpp_allocator_get(MppAllocator *allocator, - MppAllocatorApi **api, MppBufferType type); -MPP_RET mpp_allocator_put(MppAllocator *allocator); - -#ifdef __cplusplus -} -#endif - -#endif /* __MPP_ALLOCATOR_H__ */ - diff --git a/hardware/mpp/include/mpp_buffer.h b/hardware/mpp/include/mpp_buffer.h deleted file mode 100644 index e7bec934105e452e426af9c65201178594f6c3ff..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_buffer.h +++ /dev/null @@ -1,318 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_BUFFER_H__ -#define __MPP_BUFFER_H__ - -#include "rk_type.h" -#include "mpp_err.h" - -/* - * MppBuffer module has several functions: - * - * 1. buffer get / put / reference management / external commit / get info. - * this part is the basic user interface for MppBuffer. - * - * function: - * - * mpp_buffer_get - * mpp_buffer_put - * mpp_buffer_inc_ref - * mpp_buffer_commit - * mpp_buffer_info_get - * - * 2. user buffer working flow control abstraction. - * buffer should attach to certain group, and buffer mode control the buffer usage flow. - * this part is also a part of user interface. - * - * function: - * - * mpp_buffer_group_get - * mpp_buffer_group_normal_get - * mpp_buffer_group_limit_get - * mpp_buffer_group_put - * mpp_buffer_group_limit_config - * - * 3. buffer allocator management - * this part is for allocator on different os, it does not have user interface - * it will support normal buffer, ion buffer, Linux v4l2 vb2 buffer - * user can only use MppBufferType to choose. - * - */ - -/* - * mpp buffer group support two work flow mode: - * - * normal flow: all buffer are generated by MPP - * under this mode, buffer pool is maintained internally - * - * typical call flow: - * - * mpp_buffer_group_get() return A - * mpp_buffer_get(A) return a ref +1 -> used - * mpp_buffer_inc_ref(a) ref +1 - * mpp_buffer_put(a) ref -1 - * mpp_buffer_put(a) ref -1 -> unused - * mpp_buffer_group_put(A) - * - * commit flow: all buffer are commited out of MPP - * under this mode, buffers is commit by external api. - * normally MPP only use it but not generate it. - * - * typical call flow: - * - * ==== external allocator ==== - * mpp_buffer_group_get() return A - * mpp_buffer_commit(A, x) - * mpp_buffer_commit(A, y) - * - * ======= internal user ====== - * mpp_buffer_get(A) return a - * mpp_buffer_get(A) return b - * mpp_buffer_put(a) - * mpp_buffer_put(b) - * - * ==== external allocator ==== - * mpp_buffer_group_put(A) - * - * NOTE: commit interface required group handle to record group information - */ - -/* - * mpp buffer group has two buffer limit mode: normal and limit - * - * normal mode: allows any buffer size and always general new buffer is no unused buffer - * is available. - * This mode normally use with normal flow and is used for table / stream buffer - * - * limit mode : restrict the buffer's size and count in the buffer group. if try to calloc - * buffer with different size or extra count it will fail. - * This mode normally use with commit flow and is used for frame buffer - */ - -/* - * NOTE: normal mode is recommanded to work with normal flow, working with limit mode is not. - * limit mode is recommanded to work with commit flow, working with normal mode is not. - */ -typedef enum { - MPP_BUFFER_INTERNAL, - MPP_BUFFER_EXTERNAL, - MPP_BUFFER_MODE_BUTT, -} MppBufferMode; - -/* - * the mpp buffer has serval types: - * - * normal : normal malloc buffer for unit test or hardware simulation - * ion : use ion device under Linux, MppBuffer will encapsulte ion file handle - * ext_dma : the DMABUF(DMA buffers) come from the application - * drm : use the drm device interface for memory management - */ -typedef enum { - MPP_BUFFER_TYPE_NORMAL, - MPP_BUFFER_TYPE_ION, - MPP_BUFFER_TYPE_EXT_DMA, - MPP_BUFFER_TYPE_DRM, - MPP_BUFFER_TYPE_BUTT, -} MppBufferType; - -#define MPP_BUFFER_TYPE_MASK 0x0000FFFF - -/* - * MPP_BUFFER_FLAGS cooperate with MppBufferType - * 16 high bits of MppBufferType are used in flags - * - * eg: - * DRM CMA buffer : MPP_BUFFER_TYPE_DRM | MPP_BUFFER_FLAGS_CONTIG - * = 0x00010003 - * DRM SECURE buffer: MPP_BUFFER_TYPE_DRM | MPP_BUFFER_FLAGS_SECURE - * = 0x00080003 - * - * flags originate from drm_rockchip_gem_mem_type - */ - -#define MPP_BUFFER_FLAGS_MASK 0x000f0000 // ROCKCHIP_BO_MASK << 16 -#define MPP_BUFFER_FLAGS_CONTIG 0x00010000 // ROCKCHIP_BO_CONTIG << 16 -#define MPP_BUFFER_FLAGS_CACHABLE 0x00020000 // ROCKCHIP_BO_CACHABLE << 16 -#define MPP_BUFFER_FLAGS_WC 0x00040000 // ROCKCHIP_BO_WC << 16 -#define MPP_BUFFER_FLAGS_SECURE 0x00080000 // ROCKCHIP_BO_SECURE << 16 - -/* - * MppBufferInfo variable's meaning is different in different MppBufferType - * - * Common - * index - the buffer index used to track buffer in buffer pool - * size - the buffer size - * - * MPP_BUFFER_TYPE_NORMAL - * - * ptr - virtual address of normal malloced buffer - * fd - unused and set to -1, the allocator would return its - * internal buffer counter number - * - * MPP_BUFFER_TYPE_ION - * - * ptr - virtual address of ion buffer in user space - * hnd - ion handle in user space - * fd - ion buffer file handle for map / unmap - * - */ -typedef struct MppBufferInfo_t { - MppBufferType type; - size_t size; - void *ptr; - void *hnd; - int fd; - int index; -} MppBufferInfo; - -#define BUFFER_GROUP_SIZE_DEFAULT (SZ_1M*80) - -/* - * mpp_buffer_import_with_tag(MppBufferGroup group, MppBufferInfo *info, MppBuffer *buffer) - * - * 1. group - specified the MppBuffer to be attached to. - * group can be NULL then this buffer will attached to default legecy group - * Default to NULL on mpp_buffer_import case - * - * 2. info - input information for the output MppBuffer - * info can NOT be NULL. It must contain at least one of ptr/fd. - * - * 3. buffer - generated MppBuffer from MppBufferInfo. - * buffer can be NULL then the buffer is commit to group with unused status. - * Otherwise generated buffer will be directly got and ref_count increased. - * Default to NULL on mpp_buffer_commit case - * - * mpp_buffer_commit usage: - * - * Add a external buffer info to group. This buffer will be on unused status. - * Typical usage is on MediaPlayer gralloc Graphic buffer then commit these buffer - * to decoder's buffer group. Then decoder will recycle these buffer and return buffer reference - * to MediaPlayer for display. - * - * mpp_buffer_import usage: - * - * Transfer a external buffer info to MppBuffer but it is not expected to attached to certain - * buffer group. So the group is set to NULL. Then this buffer can be used for MppFrame/MppPacket. - * Typical usage is for image processing. Image processing normally will be a oneshot operation - * It does not need complicated group management. But in other hand mpp still need to know the - * imported buffer is leak or not and trace its usage inside mpp process. So we attach this kind - * of buffer to default misc buffer group for management. - */ -#define mpp_buffer_commit(group, info) \ - mpp_buffer_import_with_tag(group, info, NULL, MODULE_TAG, __FUNCTION__) - -#define mpp_buffer_import(buffer, info) \ - mpp_buffer_import_with_tag(NULL, info, buffer, MODULE_TAG, __FUNCTION__) - -#define mpp_buffer_get(group, buffer, size) \ - mpp_buffer_get_with_tag(group, buffer, size, MODULE_TAG, __FUNCTION__) - -#define mpp_buffer_put(buffer) \ - mpp_buffer_put_with_caller(buffer, __FUNCTION__) - -#define mpp_buffer_inc_ref(buffer) \ - mpp_buffer_inc_ref_with_caller(buffer, __FUNCTION__) - -#define mpp_buffer_info_get(buffer, info) \ - mpp_buffer_info_get_with_caller(buffer, info, __FUNCTION__) - -#define mpp_buffer_read(buffer, offset, data, size) \ - mpp_buffer_read_with_caller(buffer, offset, data, size, __FUNCTION__) - -#define mpp_buffer_write(buffer, offset, data, size) \ - mpp_buffer_write_with_caller(buffer, offset, data, size, __FUNCTION__) - -#define mpp_buffer_get_ptr(buffer) \ - mpp_buffer_get_ptr_with_caller(buffer, __FUNCTION__) - -#define mpp_buffer_get_fd(buffer) \ - mpp_buffer_get_fd_with_caller(buffer, __FUNCTION__) - -#define mpp_buffer_get_size(buffer) \ - mpp_buffer_get_size_with_caller(buffer, __FUNCTION__) - -#define mpp_buffer_get_index(buffer) \ - mpp_buffer_get_index_with_caller(buffer, __FUNCTION__) - -#define mpp_buffer_set_index(buffer, index) \ - mpp_buffer_set_index_with_caller(buffer, index, __FUNCTION__) - -#define mpp_buffer_get_offset(buffer) \ - mpp_buffer_get_offset_with_caller(buffer, __FUNCTION__) - -#define mpp_buffer_set_offset(buffer, offset) \ - mpp_buffer_set_offset_with_caller(buffer, offset, __FUNCTION__) - -#define mpp_buffer_group_get_internal(group, type, ...) \ - mpp_buffer_group_get(group, type, MPP_BUFFER_INTERNAL, MODULE_TAG, __FUNCTION__) - -#define mpp_buffer_group_get_external(group, type, ...) \ - mpp_buffer_group_get(group, type, MPP_BUFFER_EXTERNAL, MODULE_TAG, __FUNCTION__) - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * MppBuffer interface - * these interface will change value of group and buffer so before calling functions - * parameter need to be checked. - * - * IMPORTANT: - * mpp_buffer_import_with_tag - compounded interface for commit and import - * - */ -MPP_RET mpp_buffer_import_with_tag(MppBufferGroup group, MppBufferInfo *info, MppBuffer *buffer, - const char *tag, const char *caller); -MPP_RET mpp_buffer_get_with_tag(MppBufferGroup group, MppBuffer *buffer, size_t size, - const char *tag, const char *caller); -MPP_RET mpp_buffer_put_with_caller(MppBuffer buffer, const char *caller); -MPP_RET mpp_buffer_inc_ref_with_caller(MppBuffer buffer, const char *caller); - -MPP_RET mpp_buffer_info_get_with_caller(MppBuffer buffer, MppBufferInfo *info, const char *caller); -MPP_RET mpp_buffer_read_with_caller(MppBuffer buffer, size_t offset, void *data, size_t size, const char *caller); -MPP_RET mpp_buffer_write_with_caller(MppBuffer buffer, size_t offset, void *data, size_t size, const char *caller); -void *mpp_buffer_get_ptr_with_caller(MppBuffer buffer, const char *caller); -int mpp_buffer_get_fd_with_caller(MppBuffer buffer, const char *caller); -size_t mpp_buffer_get_size_with_caller(MppBuffer buffer, const char *caller); -int mpp_buffer_get_index_with_caller(MppBuffer buffer, const char *caller); -MPP_RET mpp_buffer_set_index_with_caller(MppBuffer buffer, int index, const char *caller); -size_t mpp_buffer_get_offset_with_caller(MppBuffer buffer, const char *caller); -MPP_RET mpp_buffer_set_offset_with_caller(MppBuffer buffer, size_t offset, const char *caller); - -MPP_RET mpp_buffer_group_get(MppBufferGroup *group, MppBufferType type, MppBufferMode mode, - const char *tag, const char *caller); -MPP_RET mpp_buffer_group_put(MppBufferGroup group); -MPP_RET mpp_buffer_group_clear(MppBufferGroup group); -RK_S32 mpp_buffer_group_unused(MppBufferGroup group); -size_t mpp_buffer_group_usage(MppBufferGroup group); -MppBufferMode mpp_buffer_group_mode(MppBufferGroup group); -MppBufferType mpp_buffer_group_type(MppBufferGroup group); - -/* - * size : 0 - no limit, other - max buffer size - * count : 0 - no limit, other - max buffer count - */ -MPP_RET mpp_buffer_group_limit_config(MppBufferGroup group, size_t size, RK_S32 count); - -RK_U32 mpp_buffer_total_now(void); -RK_U32 mpp_buffer_total_max(void); - -#ifdef __cplusplus -} -#endif - -#endif /* __MPP_BUFFER_H__ */ \ No newline at end of file diff --git a/hardware/mpp/include/mpp_common.h b/hardware/mpp/include/mpp_common.h deleted file mode 100644 index 82337f466e7ce8162e95c92b690d9781e4ec9fb2..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_common.h +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_COMMON_H__ -#define __MPP_COMMON_H__ - -#include "rk_type.h" - -#define MPP_TAG_SIZE 32 - -#define MPP_ABS(x) ((x) < (0) ? -(x) : (x)) - -#define MPP_MAX(a, b) ((a) > (b) ? (a) : (b)) -#define MPP_MAX3(a, b, c) MPP_MAX(MPP_MAX(a, b), c) -#define MPP_MAX4(a, b, c, d) MPP_MAX((a), MPP_MAX3((b), (c), (d))) - -#define MPP_MIN(a, b) ((a) > (b) ? (b) : (a)) -#define MPP_MIN3(a, b, c) MPP_MIN(MPP_MIN(a, b), c) -#define MPP_MIN4(a, b, c, d) MPP_MIN((a), MPP_MIN3((b), (c), (d))) - -#define MPP_DIV(a, b) ((b) ? (a) / (b) : (a)) - -#define MPP_CLIP3(l, h, v) ((v) < (l) ? (l) : ((v) > (h) ? (h) : (v))) -#define MPP_SIGN(a) ((a) < (0) ? (-1) : (1)) -#define MPP_DIV_SIGN(a, b) (((a) + (MPP_SIGN(a) * (b)) / 2) / (b)) - -#define MPP_SWAP(type, a, b) do {type SWAP_tmp = b; b = a; a = SWAP_tmp; } while (0) -#define MPP_ARRAY_ELEMS(a) (sizeof(a) / sizeof((a)[0])) -#define MPP_ALIGN(x, a) (((x)+(a)-1)&~((a)-1)) -#define MPP_VSWAP(a, b) { (a) ^= (b); (b) ^= (a); (a) ^= (b); } - -#define MPP_RB16(x) ((((const RK_U8*)(x))[0] << 8) | ((const RK_U8*)(x))[1]) -#define MPP_WB16(p, d) do { \ - ((RK_U8*)(p))[1] = (d); \ - ((RK_U8*)(p))[0] = (d)>>8; } while (0) - -#define MPP_RL16(x) ((((const RK_U8*)(x))[1] << 8) | \ - ((const RK_U8*)(x))[0]) -#define MPP_WL16(p, d) do { \ - ((RK_U8*)(p))[0] = (d); \ - ((RK_U8*)(p))[1] = (d)>>8; } while (0) - -#define MPP_RB32(x) ((((const RK_U8*)(x))[0] << 24) | \ - (((const RK_U8*)(x))[1] << 16) | \ - (((const RK_U8*)(x))[2] << 8) | \ - ((const RK_U8*)(x))[3]) -#define MPP_WB32(p, d) do { \ - ((RK_U8*)(p))[3] = (d); \ - ((RK_U8*)(p))[2] = (d)>>8; \ - ((RK_U8*)(p))[1] = (d)>>16; \ - ((RK_U8*)(p))[0] = (d)>>24; } while (0) - -#define MPP_RL32(x) ((((const RK_U8*)(x))[3] << 24) | \ - (((const RK_U8*)(x))[2] << 16) | \ - (((const RK_U8*)(x))[1] << 8) | \ - ((const RK_U8*)(x))[0]) -#define MPP_WL32(p, d) do { \ - ((RK_U8*)(p))[0] = (d); \ - ((RK_U8*)(p))[1] = (d)>>8; \ - ((RK_U8*)(p))[2] = (d)>>16; \ - ((RK_U8*)(p))[3] = (d)>>24; } while (0) - -#define MPP_RB64(x) (((RK_U64)((const RK_U8*)(x))[0] << 56) | \ - ((RK_U64)((const RK_U8*)(x))[1] << 48) | \ - ((RK_U64)((const RK_U8*)(x))[2] << 40) | \ - ((RK_U64)((const RK_U8*)(x))[3] << 32) | \ - ((RK_U64)((const RK_U8*)(x))[4] << 24) | \ - ((RK_U64)((const RK_U8*)(x))[5] << 16) | \ - ((RK_U64)((const RK_U8*)(x))[6] << 8) | \ - (RK_U64)((const RK_U8*)(x))[7]) -#define MPP_WB64(p, d) do { \ - ((RK_U8*)(p))[7] = (d); \ - ((RK_U8*)(p))[6] = (d)>>8; \ - ((RK_U8*)(p))[5] = (d)>>16; \ - ((RK_U8*)(p))[4] = (d)>>24; \ - ((RK_U8*)(p))[3] = (d)>>32; \ - ((RK_U8*)(p))[2] = (d)>>40; \ - ((RK_U8*)(p))[1] = (d)>>48; \ - ((RK_U8*)(p))[0] = (d)>>56; } while (0) - -#define MPP_RL64(x) (((RK_U64)((const RK_U8*)(x))[7] << 56) | \ - ((RK_U64)((const RK_U8*)(x))[6] << 48) | \ - ((RK_U64)((const RK_U8*)(x))[5] << 40) | \ - ((RK_U64)((const RK_U8*)(x))[4] << 32) | \ - ((RK_U64)((const RK_U8*)(x))[3] << 24) | \ - ((RK_U64)((const RK_U8*)(x))[2] << 16) | \ - ((RK_U64)((const RK_U8*)(x))[1] << 8) | \ - (RK_U64)((const RK_U8*)(x))[0]) -#define MPP_WL64(p, d) do { \ - ((RK_U8*)(p))[0] = (d); \ - ((RK_U8*)(p))[1] = (d)>>8; \ - ((RK_U8*)(p))[2] = (d)>>16; \ - ((RK_U8*)(p))[3] = (d)>>24; \ - ((RK_U8*)(p))[4] = (d)>>32; \ - ((RK_U8*)(p))[5] = (d)>>40; \ - ((RK_U8*)(p))[6] = (d)>>48; \ - ((RK_U8*)(p))[7] = (d)>>56; } while (0) - -#define MPP_RB24(x) ((((const RK_U8*)(x))[0] << 16) | \ - (((const RK_U8*)(x))[1] << 8) | \ - ((const RK_U8*)(x))[2]) -#define MPP_WB24(p, d) do { \ - ((RK_U8*)(p))[2] = (d); \ - ((RK_U8*)(p))[1] = (d)>>8; \ - ((RK_U8*)(p))[0] = (d)>>16; } while (0) - -#define MPP_RL24(x) ((((const RK_U8*)(x))[2] << 16) | \ - (((const RK_U8*)(x))[1] << 8) | \ - ((const RK_U8*)(x))[0]) - -#define MPP_WL24(p, d) do { \ - ((RK_U8*)(p))[0] = (d); \ - ((RK_U8*)(p))[1] = (d)>>8; \ - ((RK_U8*)(p))[2] = (d)>>16; } while (0) - -#include -#if defined(_WIN32) && !defined(__MINGW32CE__) -#define fseeko _fseeki64 - -#include -#include -#include -#define chdir _chdir -#define mkdir _mkdir -#define access _access -#define off_t _off_t - -#define R_OK 4 /* Test for read permission. */ -#define W_OK 2 /* Test for write permission. */ -#define X_OK 1 /* Test for execute permission. */ -#define F_OK 0 /* Test for existence. */ - -#elif defined(__MINGW32CE__) -#define fseeko fseeko64 -#else -#include -#include -#include -#include -#define mkdir(x) mkdir(x, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) -#endif - -#define container_of(ptr, type, member) \ - ((type *)((char *)(ptr) - offsetof(type, member))) - -#define __RETURN __Return -#define __FAILED __Failed - -#define ARG_T(t) t -#define ARG_N(a, b, c, d, N, ...) N -#define ARG_N_HELPER(...) ARG_T(ARG_N(__VA_ARGS__)) -#define COUNT_ARG(...) ARG_N_HELPER(__VA_ARGS__, 4, 3, 2, 1, 0) - -#define SZ_1K (1024) -#define SZ_2K (SZ_1K*2) -#define SZ_4K (SZ_1K*4) -#define SZ_8K (SZ_1K*8) -#define SZ_16K (SZ_1K*16) -#define SZ_32K (SZ_1K*32) -#define SZ_64K (SZ_1K*64) -#define SZ_128K (SZ_1K*128) -#define SZ_256K (SZ_1K*256) -#define SZ_512K (SZ_1K*512) -#define SZ_1M (SZ_1K*SZ_1K) -#define SZ_2M (SZ_1M*2) -#define SZ_4M (SZ_1M*4) -#define SZ_8M (SZ_1M*8) -#define SZ_16M (SZ_1M*16) -#define SZ_32M (SZ_1M*32) -#define SZ_64M (SZ_1M*64) -#define SZ_80M (SZ_1M*80) -#define SZ_128M (SZ_1M*128) - -#ifdef __cplusplus -extern "C" { -#endif - -RK_S32 mpp_log2(RK_U32 v); -RK_S32 mpp_log2_16bit(RK_U32 v); - -static __inline RK_S32 mpp_ceil_log2(RK_S32 x) -{ - return mpp_log2((x - 1) << 1); -} - -static __inline RK_S32 mpp_clip(RK_S32 a, RK_S32 amin, RK_S32 amax) -{ - if (a < amin) { - return amin; - } else if (a > amax) { - return amax; - } else { - return a; - } -} - -static __inline RK_U32 mpp_is_32bit(void) -{ - return ((sizeof(void *) == 4) ? (1) : (0)); -} - -RK_S32 axb_div_c(RK_S32 a, RK_S32 b, RK_S32 c); - -#ifdef __cplusplus -} -#endif - -#endif /* __MPP_COMMON_H__ */ diff --git a/hardware/mpp/include/mpp_dev_defs.h b/hardware/mpp/include/mpp_dev_defs.h deleted file mode 100644 index 3fc52c52703ae1712550842a45afaa5785277517..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_dev_defs.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_DEV_DEFS_H__ -#define __MPP_DEV_DEFS_H__ - -/* - * Platform video codec hardware feature - */ -typedef enum MppClientType_e { - VPU_CLIENT_VDPU1 = 0, /* 0x00000001 */ - VPU_CLIENT_VDPU2 = 1, /* 0x00000002 */ - VPU_CLIENT_VDPU1_PP = 2, /* 0x00000004 */ - VPU_CLIENT_VDPU2_PP = 3, /* 0x00000008 */ - - VPU_CLIENT_HEVC_DEC = 8, /* 0x00000100 */ - VPU_CLIENT_RKVDEC = 9, /* 0x00000200 */ - VPU_CLIENT_AVSPLUS_DEC = 12, /* 0x00001000 */ - VPU_CLIENT_JPEG_DEC = 13, /* 0x00002000 */ - - VPU_CLIENT_RKVENC = 16, /* 0x00010000 */ - VPU_CLIENT_VEPU1 = 17, /* 0x00020000 */ - VPU_CLIENT_VEPU2 = 18, /* 0x00040000 */ - VPU_CLIENT_VEPU2_LITE = 19, /* 0x00080000 */ - VPU_CLIENT_VEPU22 = 24, /* 0x01000000 */ - - IEP_CLIENT_TYPE = 28, /* 0x10000000 */ - - VPU_CLIENT_BUTT, -} MppClientType; - -/* RK combined codec */ -#define HAVE_VDPU1 (1 << VPU_CLIENT_VDPU1) /* 0x00000001 */ -#define HAVE_VDPU2 (1 << VPU_CLIENT_VDPU2) /* 0x00000002 */ -#define HAVE_VDPU1_PP (1 << VPU_CLIENT_VDPU1_PP) /* 0x00000004 */ -#define HAVE_VDPU2_PP (1 << VPU_CLIENT_VDPU2_PP) /* 0x00000008 */ -/* RK standalone decoder */ -#define HAVE_HEVC_DEC (1 << VPU_CLIENT_HEVC_DEC) /* 0x00000100 */ -#define HAVE_RKVDEC (1 << VPU_CLIENT_RKVDEC) /* 0x00000200 */ -#define HAVE_AVSDEC (1 << VPU_CLIENT_AVSPLUS_DEC) /* 0x00001000 */ -#define HAVE_JPEG_DEC (1 << VPU_CLIENT_JPEG_DEC) /* 0x00002000 */ -/* RK standalone encoder */ -#define HAVE_RKVENC (1 << VPU_CLIENT_RKVENC) /* 0x00010000 */ -#define HAVE_VEPU1 (1 << VPU_CLIENT_VEPU1) /* 0x00020000 */ -#define HAVE_VEPU2 (1 << VPU_CLIENT_VEPU2) /* 0x00040000 */ -/* External encoder */ -#define HAVE_VEPU22 (1 << VPU_CLIENT_VEPU22) /* 0x01000000 */ -/* RK Image Enhance Processor for deinterlacing */ -#define HAVE_IEP (1 << IEP_CLIENT_TYPE) /* 0x10000000 */ - -/* Platform image process hardware feature */ -#define HAVE_IPP (0x00000001) -#define HAVE_RGA (0x00000002) -#define HAVE_RGA2 (0x00000004) - -#endif /* __MPP_DEV_DEFS_H__ */ diff --git a/hardware/mpp/include/mpp_device.h b/hardware/mpp/include/mpp_device.h deleted file mode 100644 index 7f9238df489ec3e2be6cdd512996dac89aa62eb1..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_device.h +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_DEVICE_H__ -#define __MPP_DEVICE_H__ - -#include "mpp_err.h" -#include "mpp_dev_defs.h" - -typedef enum MppDevIoctlCmd_e { - /* device batch mode config */ - MPP_DEV_BATCH_ON, - MPP_DEV_BATCH_OFF, - - /* hardware operation setup config */ - MPP_DEV_REG_WR, - MPP_DEV_REG_RD, - MPP_DEV_REG_OFFSET, - MPP_DEV_RCB_INFO, - MPP_DEV_SET_INFO, - - MPP_DEV_CMD_SEND, - MPP_DEV_CMD_POLL, - - MPP_DEV_IOCTL_CMD_BUTT, -} MppDevIoctlCmd; - -/* for MPP_DEV_REG_WR */ -typedef struct MppDevRegWrCfg_t { - void *reg; - RK_U32 size; - RK_U32 offset; -} MppDevRegWrCfg; - -/* for MPP_DEV_REG_RD */ -typedef struct MppDevRegRdCfg_t { - void *reg; - RK_U32 size; - RK_U32 offset; -} MppDevRegRdCfg; - -/* for MPP_DEV_REG_OFFSET */ -typedef struct MppDevRegOffsetCfg_t { - RK_U32 reg_idx; - RK_U32 offset; -} MppDevRegOffsetCfg; - -/* for MPP_DEV_RCB_INFO */ -typedef struct MppDevRcbInfoCfg_t { - RK_U32 reg_idx; - RK_U32 size; -} MppDevRcbInfoCfg; - -/* for MPP_DEV_SET_INFO */ -typedef struct MppDevSetInfoCfg_t { - RK_U32 type; - RK_U32 flag; - RK_U64 data; -} MppDevInfoCfg; - -typedef struct MppDevApi_t { - const char *name; - RK_U32 ctx_size; - MPP_RET (*init)(void *ctx, MppClientType type); - MPP_RET (*deinit)(void *ctx); - - /* bat mode function */ - MPP_RET (*attach)(void *ctx); - MPP_RET (*detach)(void *ctx); - - /* config the cmd on preparing */ - MPP_RET (*reg_wr)(void *ctx, MppDevRegWrCfg *cfg); - MPP_RET (*reg_rd)(void *ctx, MppDevRegRdCfg *cfg); - MPP_RET (*reg_offset)(void *ctx, MppDevRegOffsetCfg *cfg); - MPP_RET (*rcb_info)(void *ctx, MppDevRcbInfoCfg *cfg); - MPP_RET (*set_info)(void *ctx, MppDevInfoCfg *cfg); - - /* send cmd to hardware */ - MPP_RET (*cmd_send)(void *ctx); - - /* poll cmd from hardware */ - MPP_RET (*cmd_poll)(void *ctx); -} MppDevApi; - -typedef void* MppDev; - -#ifdef __cplusplus -extern "C" { -#endif - -MPP_RET mpp_dev_init(MppDev *ctx, MppClientType type); -MPP_RET mpp_dev_deinit(MppDev ctx); - -MPP_RET mpp_dev_ioctl(MppDev ctx, RK_S32 cmd, void *param); - -/* special helper function for large address offset config */ -MPP_RET mpp_dev_set_reg_offset(MppDev dev, RK_S32 index, RK_U32 offset); - -#ifdef __cplusplus -} -#endif - -#endif /* __MPP_DEVICE_H__ */ \ No newline at end of file diff --git a/hardware/mpp/include/mpp_env.h b/hardware/mpp/include/mpp_env.h deleted file mode 100755 index 12508814591e9fe74e509dd390be961f9506014d..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_env.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_ENV_H__ -#define __MPP_ENV_H__ - -#include "rk_type.h" - -#ifdef __cplusplus -extern "C" { -#endif - -RK_S32 mpp_env_get_u32(const char *name, RK_U32 *value, RK_U32 default_value); -RK_S32 mpp_env_get_str(const char *name, const char **value, const char *default_value); - -RK_S32 mpp_env_set_u32(const char *name, RK_U32 value); -RK_S32 mpp_env_set_str(const char *name, char *value); - -#ifdef __cplusplus -} -#endif - -#endif /* __MPP_ENV_H__ */ - diff --git a/hardware/mpp/include/mpp_err.h b/hardware/mpp/include/mpp_err.h deleted file mode 100644 index f68040a23d39ae67b6e216325244b21f5c77e25d..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_err.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_ERR_H__ -#define __MPP_ERR_H__ - -#define RK_OK 0 -#define RK_SUCCESS 0 - -typedef enum { - MPP_SUCCESS = RK_SUCCESS, - MPP_OK = RK_OK, - - MPP_NOK = -1, - MPP_ERR_UNKNOW = -2, - MPP_ERR_NULL_PTR = -3, - MPP_ERR_MALLOC = -4, - MPP_ERR_OPEN_FILE = -5, - MPP_ERR_VALUE = -6, - MPP_ERR_READ_BIT = -7, - MPP_ERR_TIMEOUT = -8, - MPP_ERR_PERM = -9, - - MPP_ERR_BASE = -1000, - - /* The error in stream processing */ - MPP_ERR_LIST_STREAM = MPP_ERR_BASE - 1, - MPP_ERR_INIT = MPP_ERR_BASE - 2, - MPP_ERR_VPU_CODEC_INIT = MPP_ERR_BASE - 3, - MPP_ERR_STREAM = MPP_ERR_BASE - 4, - MPP_ERR_FATAL_THREAD = MPP_ERR_BASE - 5, - MPP_ERR_NOMEM = MPP_ERR_BASE - 6, - MPP_ERR_PROTOL = MPP_ERR_BASE - 7, - MPP_FAIL_SPLIT_FRAME = MPP_ERR_BASE - 8, - MPP_ERR_VPUHW = MPP_ERR_BASE - 9, - MPP_EOS_STREAM_REACHED = MPP_ERR_BASE - 11, - MPP_ERR_BUFFER_FULL = MPP_ERR_BASE - 12, - MPP_ERR_DISPLAY_FULL = MPP_ERR_BASE - 13, -} MPP_RET; - -#endif /* __MPP_ERR_H__ */ diff --git a/hardware/mpp/include/mpp_eventfd.h b/hardware/mpp/include/mpp_eventfd.h deleted file mode 100644 index ed27db663ce12ed9678be009cb0dbd76d34a5bfd..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_eventfd.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_EVENTFD_H__ -#define __MPP_EVENTFD_H__ - -#include "rk_type.h" - -#ifdef __cplusplus -extern "C" { -#endif - -RK_S32 mpp_eventfd_get(RK_U32 init); -RK_S32 mpp_eventfd_put(RK_S32 fd); - -RK_S32 mpp_eventfd_read(RK_S32 fd, RK_U64 *val, RK_S64 timeout); -RK_S32 mpp_eventfd_write(RK_S32 fd, RK_U64 val); - -#ifdef __cplusplus -} -#endif - -#endif /* __MPP_EVENTFD_H__ */ - diff --git a/hardware/mpp/include/mpp_frame.h b/hardware/mpp/include/mpp_frame.h deleted file mode 100644 index a00b4ff4e41b47449f6b50e032f4b96c638d426d..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_frame.h +++ /dev/null @@ -1,391 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_FRAME_H__ -#define __MPP_FRAME_H__ - -#include "mpp_buffer.h" - -/* - * bit definition for mode flag in MppFrame - */ -/* progressive frame */ -#define MPP_FRAME_FLAG_FRAME (0x00000000) -/* top field only */ -#define MPP_FRAME_FLAG_TOP_FIELD (0x00000001) -/* bottom field only */ -#define MPP_FRAME_FLAG_BOT_FIELD (0x00000002) -/* paired field */ -#define MPP_FRAME_FLAG_PAIRED_FIELD (MPP_FRAME_FLAG_TOP_FIELD|MPP_FRAME_FLAG_BOT_FIELD) -/* paired field with field order of top first */ -#define MPP_FRAME_FLAG_TOP_FIRST (0x00000004) -/* paired field with field order of bottom first */ -#define MPP_FRAME_FLAG_BOT_FIRST (0x00000008) -/* paired field with unknown field order (MBAFF) */ -#define MPP_FRAME_FLAG_DEINTERLACED (MPP_FRAME_FLAG_TOP_FIRST|MPP_FRAME_FLAG_BOT_FIRST) -#define MPP_FRAME_FLAG_FIELD_ORDER_MASK (0x0000000C) -// for multiview stream -#define MPP_FRAME_FLAG_VIEW_ID_MASK (0x000000f0) - -#define MPP_FRAME_FLAG_IEP_DEI_MASK (0x00000f00) -#define MPP_FRAME_FLAG_IEP_DEI_I2O1 (0x00000100) -#define MPP_FRAME_FLAG_IEP_DEI_I4O2 (0x00000200) -#define MPP_FRAME_FLAG_IEP_DEI_I4O1 (0x00000300) - -/* - * MPEG vs JPEG YUV range. - */ -typedef enum { - MPP_FRAME_RANGE_UNSPECIFIED = 0, - MPP_FRAME_RANGE_MPEG = 1, ///< the normal 219*2^(n-8) "MPEG" YUV ranges - MPP_FRAME_RANGE_JPEG = 2, ///< the normal 2^n-1 "JPEG" YUV ranges - MPP_FRAME_RANGE_NB, ///< Not part of ABI -} MppFrameColorRange; - -typedef enum { - MPP_FRAME_VIDEO_FMT_COMPONEMT = 0, - MPP_FRAME_VIDEO_FMT_PAL = 1, - MPP_FRAME_VIDEO_FMT_NTSC = 2, - MPP_FRAME_VIDEO_FMT_SECAM = 3, - MPP_FRAME_VIDEO_FMT_MAC = 4, - MPP_FRAME_VIDEO_FMT_UNSPECIFIED = 5, - MPP_FRAME_VIDEO_FMT_RESERVED0 = 6, - MPP_FRAME_VIDEO_FMT_RESERVED1 = 7, -} MppFrameVideoFormat; - -/* - * Chromaticity coordinates of the source primaries. - */ -typedef enum { - MPP_FRAME_PRI_RESERVED0 = 0, - MPP_FRAME_PRI_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP177 Annex B - MPP_FRAME_PRI_UNSPECIFIED = 2, - MPP_FRAME_PRI_RESERVED = 3, - MPP_FRAME_PRI_BT470M = 4, ///< also FCC Title 47 Code of Federal Regulations 73.682 (a)(20) - - MPP_FRAME_PRI_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM - MPP_FRAME_PRI_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC - MPP_FRAME_PRI_SMPTE240M = 7, ///< functionally identical to above - MPP_FRAME_PRI_FILM = 8, ///< colour filters using Illuminant C - MPP_FRAME_PRI_BT2020 = 9, ///< ITU-R BT2020 - MPP_FRAME_PRI_SMPTEST428_1 = 10, ///< SMPTE ST 428-1 (CIE 1931 XYZ) - MPP_FRAME_PRI_SMPTE431 = 11, ///< SMPTE ST 431-2 (2011) / DCI P3 - MPP_FRAME_PRI_SMPTE432 = 12, ///< SMPTE ST 432-1 (2010) / P3 D65 / Display P3 - MPP_FRAME_PRI_JEDEC_P22 = 22, ///< JEDEC P22 phosphors - MPP_FRAME_PRI_NB, ///< Not part of ABI -} MppFrameColorPrimaries; - -/* - * Color Transfer Characteristic. - */ -typedef enum { - MPP_FRAME_TRC_RESERVED0 = 0, - MPP_FRAME_TRC_BT709 = 1, ///< also ITU-R BT1361 - MPP_FRAME_TRC_UNSPECIFIED = 2, - MPP_FRAME_TRC_RESERVED = 3, - MPP_FRAME_TRC_GAMMA22 = 4, ///< also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM - MPP_FRAME_TRC_GAMMA28 = 5, ///< also ITU-R BT470BG - ///< also ITU-R BT601-6 525 or 625 / ITU-R BT1358 525 or 625 / ITU-R BT1700 NTSC - MPP_FRAME_TRC_SMPTE170M = 6, - MPP_FRAME_TRC_SMPTE240M = 7, - MPP_FRAME_TRC_LINEAR = 8, ///< "Linear transfer characteristics" - MPP_FRAME_TRC_LOG = 9, ///< "Logarithmic transfer characteristic (100:1 range)" - MPP_FRAME_TRC_LOG_SQRT = 10, ///< "Logarithmic transfer characteristic (100 * Sqrt(10) : 1 range)" - MPP_FRAME_TRC_IEC61966_2_4 = 11, ///< IEC 61966-2-4 - MPP_FRAME_TRC_BT1361_ECG = 12, ///< ITU-R BT1361 Extended Colour Gamut - MPP_FRAME_TRC_IEC61966_2_1 = 13, ///< IEC 61966-2-1 (sRGB or sYCC) - MPP_FRAME_TRC_BT2020_10 = 14, ///< ITU-R BT2020 for 10 bit system - MPP_FRAME_TRC_BT2020_12 = 15, ///< ITU-R BT2020 for 12 bit system - MPP_FRAME_TRC_SMPTEST2084 = 16, ///< SMPTE ST 2084 for 10-, 12-, 14- and 16-bit systems - MPP_FRAME_TRC_SMPTEST428_1 = 17, ///< SMPTE ST 428-1 - MPP_FRAME_TRC_ARIB_STD_B67 = 18, ///< ARIB STD-B67, known as "Hybrid log-gamma" - MPP_FRAME_TRC_NB, ///< Not part of ABI -} MppFrameColorTransferCharacteristic; - -/* - * YUV colorspace type. - */ -typedef enum { - MPP_FRAME_SPC_RGB = 0, ///< order of coefficients is actually GBR, also IEC 61966-2-1 (sRGB) - MPP_FRAME_SPC_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B - MPP_FRAME_SPC_UNSPECIFIED = 2, - MPP_FRAME_SPC_RESERVED = 3, - MPP_FRAME_SPC_FCC = 4, ///< FCC Title 47 Code of Federal Regulations 73.682 (a)(20) - ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601 - MPP_FRAME_SPC_BT470BG = 5, - ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / functionally identical to above - MPP_FRAME_SPC_SMPTE170M = 6, - MPP_FRAME_SPC_SMPTE240M = 7, - MPP_FRAME_SPC_YCOCG = 8, ///< Used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16 - MPP_FRAME_SPC_BT2020_NCL = 9, ///< ITU-R BT2020 non-constant luminance system - MPP_FRAME_SPC_BT2020_CL = 10, ///< ITU-R BT2020 constant luminance system - MPP_FRAME_SPC_SMPTE2085 = 11, ///< SMPTE 2085, Y'D'zD'x - MPP_FRAME_SPC_CHROMA_DERIVED_NCL = 12, ///< Chromaticity-derived non-constant luminance system - MPP_FRAME_SPC_CHROMA_DERIVED_CL = 13, ///< Chromaticity-derived constant luminance system - MPP_FRAME_SPC_ICTCP = 14, ///< ITU-R BT.2100-0, ICtCp - MPP_FRAME_SPC_NB, ///< Not part of ABI -} MppFrameColorSpace; - -/* - * Location of chroma samples. - * - * Illustration showing the location of the first (top left) chroma sample of the - * image, the left shows only luma, the right - * shows the location of the chroma sample, the 2 could be imagined to overlay - * each other but are drawn separately due to limitations of ASCII - * - * 1st 2nd 1st 2nd horizontal luma sample positions - * v v v v - * ______ ______ - * 1st luma line > |X X ... |3 4 X ... X are luma samples, - * | |1 2 1-6 are possible chroma positions - * 2nd luma line > |X X ... |5 6 X ... 0 is undefined/unknown position - */ -typedef enum { - MPP_CHROMA_LOC_UNSPECIFIED = 0, - MPP_CHROMA_LOC_LEFT = 1, ///< mpeg2/4 4:2:0, h264 default for 4:2:0 - MPP_CHROMA_LOC_CENTER = 2, ///< mpeg1 4:2:0, jpeg 4:2:0, h263 4:2:0 - MPP_CHROMA_LOC_TOPLEFT = 3, ///< ITU-R 601, SMPTE 274M 296M S314M(DV 4:1:1), mpeg2 4:2:2 - MPP_CHROMA_LOC_TOP = 4, - MPP_CHROMA_LOC_BOTTOMLEFT = 5, - MPP_CHROMA_LOC_BOTTOM = 6, - MPP_CHROMA_LOC_NB, ///< Not part of ABI -} MppFrameChromaLocation; - -#define MPP_FRAME_FMT_MASK (0x000fffff) - -#define MPP_FRAME_FMT_COLOR_MASK (0x000f0000) -#define MPP_FRAME_FMT_YUV (0x00000000) -#define MPP_FRAME_FMT_RGB (0x00010000) - -#define MPP_FRAME_FBC_MASK (0x00f00000) -#define MPP_FRAME_FBC_NONE (0x00000000) -/* - * AFBC_V1 is for ISP output. - * It has default payload offset to be calculated * from width and height: - * Payload offset = MPP_ALIGN(MPP_ALIGN(width, 16) * MPP_ALIGN(height, 16) / 16, SZ_4K) - */ -#define MPP_FRAME_FBC_AFBC_V1 (0x00100000) -/* - * AFBC_V2 is for video decoder output. - * It stores payload offset in first 32-bit in header address - * Payload offset is always set to zero. - */ -#define MPP_FRAME_FBC_AFBC_V2 (0x00200000) - -#define MPP_FRAME_FMT_LE_MASK (0x01000000) - -#define MPP_FRAME_FMT_IS_YUV(fmt) ((((fmt) & MPP_FRAME_FMT_COLOR_MASK) == MPP_FRAME_FMT_YUV) && \ - (((fmt) & MPP_FRAME_FMT_MASK) < MPP_FMT_YUV_BUTT)) -#define MPP_FRAME_FMT_IS_RGB(fmt) ((((fmt) & MPP_FRAME_FMT_COLOR_MASK) == MPP_FRAME_FMT_RGB) && \ - (((fmt) & MPP_FRAME_FMT_MASK) < MPP_FMT_RGB_BUTT)) - -/* - * For MPP_FRAME_FBC_AFBC_V1 the 16byte aligned stride is used. - */ -#define MPP_FRAME_FMT_IS_FBC(fmt) ((fmt) & MPP_FRAME_FBC_MASK) - -#define MPP_FRAME_FMT_IS_LE(fmt) (((fmt) & MPP_FRAME_FMT_LE_MASK) == MPP_FRAME_FMT_LE_MASK) -#define MPP_FRAME_FMT_IS_BE(fmt) (((fmt) & MPP_FRAME_FMT_LE_MASK) == 0) - -/* mpp color format index definition */ -typedef enum { - MPP_FMT_YUV420SP = (MPP_FRAME_FMT_YUV + 0), /* YYYY... UV... (NV12) */ - /* - * A rockchip specific pixel format, without gap between pixel aganist - * the P010_10LE/P010_10BE - */ - MPP_FMT_YUV420SP_10BIT = (MPP_FRAME_FMT_YUV + 1), - MPP_FMT_YUV422SP = (MPP_FRAME_FMT_YUV + 2), /* YYYY... UVUV... (NV16) */ - MPP_FMT_YUV422SP_10BIT = (MPP_FRAME_FMT_YUV + 3), ///< Not part of ABI - MPP_FMT_YUV420P = (MPP_FRAME_FMT_YUV + 4), /* YYYY... U...V... (I420) */ - MPP_FMT_YUV420SP_VU = (MPP_FRAME_FMT_YUV + 5), /* YYYY... VUVUVU... (NV21) */ - MPP_FMT_YUV422P = (MPP_FRAME_FMT_YUV + 6), /* YYYY... UU...VV...(422P) */ - MPP_FMT_YUV422SP_VU = (MPP_FRAME_FMT_YUV + 7), /* YYYY... VUVUVU... (NV61) */ - MPP_FMT_YUV422_YUYV = (MPP_FRAME_FMT_YUV + 8), /* YUYVYUYV... (YUY2) */ - MPP_FMT_YUV422_YVYU = (MPP_FRAME_FMT_YUV + 9), /* YVYUYVYU... (YVY2) */ - MPP_FMT_YUV422_UYVY = (MPP_FRAME_FMT_YUV + 10), /* UYVYUYVY... (UYVY) */ - MPP_FMT_YUV422_VYUY = (MPP_FRAME_FMT_YUV + 11), /* VYUYVYUY... (VYUY) */ - MPP_FMT_YUV400 = (MPP_FRAME_FMT_YUV + 12), /* YYYY... */ - MPP_FMT_YUV440SP = (MPP_FRAME_FMT_YUV + 13), /* YYYY... UVUV... */ - MPP_FMT_YUV411SP = (MPP_FRAME_FMT_YUV + 14), /* YYYY... UV... */ - MPP_FMT_YUV444SP = (MPP_FRAME_FMT_YUV + 15), /* YYYY... UVUVUVUV... */ - MPP_FMT_YUV_BUTT, - - MPP_FMT_RGB565 = (MPP_FRAME_FMT_RGB + 0), /* 16-bit RGB */ - MPP_FMT_BGR565 = (MPP_FRAME_FMT_RGB + 1), /* 16-bit RGB */ - MPP_FMT_RGB555 = (MPP_FRAME_FMT_RGB + 2), /* 15-bit RGB */ - MPP_FMT_BGR555 = (MPP_FRAME_FMT_RGB + 3), /* 15-bit RGB */ - MPP_FMT_RGB444 = (MPP_FRAME_FMT_RGB + 4), /* 12-bit RGB */ - MPP_FMT_BGR444 = (MPP_FRAME_FMT_RGB + 5), /* 12-bit RGB */ - MPP_FMT_RGB888 = (MPP_FRAME_FMT_RGB + 6), /* 24-bit RGB */ - MPP_FMT_BGR888 = (MPP_FRAME_FMT_RGB + 7), /* 24-bit RGB */ - MPP_FMT_RGB101010 = (MPP_FRAME_FMT_RGB + 8), /* 30-bit RGB */ - MPP_FMT_BGR101010 = (MPP_FRAME_FMT_RGB + 9), /* 30-bit RGB */ - MPP_FMT_ARGB8888 = (MPP_FRAME_FMT_RGB + 10), /* 32-bit RGB */ - MPP_FMT_ABGR8888 = (MPP_FRAME_FMT_RGB + 11), /* 32-bit RGB */ - MPP_FMT_BGRA8888 = (MPP_FRAME_FMT_RGB + 12), /* 32-bit RGB */ - MPP_FMT_RGBA8888 = (MPP_FRAME_FMT_RGB + 13), /* 32-bit RGB */ - MPP_FMT_RGB_BUTT, - - MPP_FMT_BUTT, -} MppFrameFormat; - -/** - * Rational number (pair of numerator and denominator). - */ -typedef struct MppFrameRational { - RK_S32 num; ///< Numerator - RK_S32 den; ///< Denominator -} MppFrameRational; - -typedef struct MppFrameMasteringDisplayMetadata { - RK_U16 display_primaries[3][2]; - RK_U16 white_point[2]; - RK_U32 max_luminance; - RK_U32 min_luminance; -} MppFrameMasteringDisplayMetadata; - -typedef struct MppFrameContentLightMetadata { - RK_U16 MaxCLL; - RK_U16 MaxFALL; -} MppFrameContentLightMetadata; - -typedef enum { - MPP_FRAME_ERR_UNKNOW = 0x0001, - MPP_FRAME_ERR_UNSUPPORT = 0x0002, -} MPP_FRAME_ERR; - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * MppFrame interface - */ -MPP_RET mpp_frame_init(MppFrame *frame); -MPP_RET mpp_frame_deinit(MppFrame *frame); -MppFrame mpp_frame_get_next(MppFrame frame); - -/* - * normal parameter - * - * offset_x - * <--------> - * - * <---------------+ hor_stride +---------------> - * - * +------------------------------------------------------+ ^ ^ - * | | | | - * | | | | offset_y - * | | | | - * | +--------------------------------+ ^ | | v - * | | | | | | - * | | | + | + - * | | | | - * | | valid data area | height | ver_stride - * | | | | - * | | | + | + - * | | | | | | - * | +--------------------------------+ v | | - * | | | - * | <----------+ width +---------> | | - * | | | - * +------------------------------------------------------+ v - * - */ -RK_U32 mpp_frame_get_width(const MppFrame frame); -void mpp_frame_set_width(MppFrame frame, RK_U32 width); -RK_U32 mpp_frame_get_height(const MppFrame frame); -void mpp_frame_set_height(MppFrame frame, RK_U32 height); -RK_U32 mpp_frame_get_hor_stride(const MppFrame frame); -void mpp_frame_set_hor_stride(MppFrame frame, RK_U32 hor_stride); -RK_U32 mpp_frame_get_ver_stride(const MppFrame frame); -void mpp_frame_set_ver_stride(MppFrame frame, RK_U32 ver_stride); -void mpp_frame_set_hor_stride_pixel(MppFrame frame, RK_U32 hor_stride_pixel); -RK_U32 mpp_frame_get_hor_stride_pixel(const MppFrame frame); - -RK_U32 mpp_frame_get_offset_x(const MppFrame frame); -void mpp_frame_set_offset_x(MppFrame frame, RK_U32 offset_x); -RK_U32 mpp_frame_get_offset_y(const MppFrame frame); -void mpp_frame_set_offset_y(MppFrame frame, RK_U32 offset_y); -RK_U32 mpp_frame_get_mode(const MppFrame frame); -void mpp_frame_set_mode(MppFrame frame, RK_U32 mode); -RK_U32 mpp_frame_get_discard(const MppFrame frame); -void mpp_frame_set_discard(MppFrame frame, RK_U32 discard); -RK_U32 mpp_frame_get_viewid(const MppFrame frame); -void mpp_frame_set_viewid(MppFrame frame, RK_U32 viewid); -RK_U32 mpp_frame_get_poc(const MppFrame frame); -void mpp_frame_set_poc(MppFrame frame, RK_U32 poc); -RK_S64 mpp_frame_get_pts(const MppFrame frame); -void mpp_frame_set_pts(MppFrame frame, RK_S64 pts); -RK_S64 mpp_frame_get_dts(const MppFrame frame); -void mpp_frame_set_dts(MppFrame frame, RK_S64 dts); -RK_U32 mpp_frame_get_errinfo(const MppFrame frame); -void mpp_frame_set_errinfo(MppFrame frame, RK_U32 errinfo); -size_t mpp_frame_get_buf_size(const MppFrame frame); -void mpp_frame_set_buf_size(MppFrame frame, size_t buf_size); -/* - * flow control parmeter - */ -RK_U32 mpp_frame_get_eos(const MppFrame frame); -void mpp_frame_set_eos(MppFrame frame, RK_U32 eos); -RK_U32 mpp_frame_get_info_change(const MppFrame frame); -void mpp_frame_set_info_change(MppFrame frame, RK_U32 info_change); - -/* - * buffer parameter - */ -MppBuffer mpp_frame_get_buffer(const MppFrame frame); -void mpp_frame_set_buffer(MppFrame frame, MppBuffer buffer); - -/* - * meta data parameter - */ -RK_S32 mpp_frame_has_meta(const MppFrame frame); -MppMeta mpp_frame_get_meta(const MppFrame frame); -void mpp_frame_set_meta(MppFrame frame, MppMeta meta); - -/* - * color related parameter - */ -MppFrameColorRange mpp_frame_get_color_range(const MppFrame frame); -void mpp_frame_set_color_range(MppFrame frame, MppFrameColorRange color_range); -MppFrameColorPrimaries mpp_frame_get_color_primaries(const MppFrame frame); -void mpp_frame_set_color_primaries(MppFrame frame, MppFrameColorPrimaries color_primaries); -MppFrameColorTransferCharacteristic mpp_frame_get_color_trc(const MppFrame frame); -void mpp_frame_set_color_trc(MppFrame frame, MppFrameColorTransferCharacteristic color_trc); -MppFrameColorSpace mpp_frame_get_colorspace(const MppFrame frame); -void mpp_frame_set_colorspace(MppFrame frame, MppFrameColorSpace colorspace); -MppFrameChromaLocation mpp_frame_get_chroma_location(const MppFrame frame); -void mpp_frame_set_chroma_location(MppFrame frame, MppFrameChromaLocation chroma_location); -MppFrameFormat mpp_frame_get_fmt(MppFrame frame); -void mpp_frame_set_fmt(MppFrame frame, MppFrameFormat fmt); -MppFrameRational mpp_frame_get_sar(const MppFrame frame); -void mpp_frame_set_sar(MppFrame frame, MppFrameRational sar); -MppFrameMasteringDisplayMetadata mpp_frame_get_mastering_display(const MppFrame frame); -void mpp_frame_set_mastering_display(MppFrame frame, MppFrameMasteringDisplayMetadata mastering_display); -MppFrameContentLightMetadata mpp_frame_get_content_light(const MppFrame frame); -void mpp_frame_set_content_light(MppFrame frame, MppFrameContentLightMetadata content_light); - -/* - * HDR parameter - */ - -#ifdef __cplusplus -} -#endif - -#endif /* __MPP_FRAME_H__ */ diff --git a/hardware/mpp/include/mpp_hash.h b/hardware/mpp/include/mpp_hash.h deleted file mode 100644 index 75b0e7a403039e57afb3b23ce7cb01abd0ed19b3..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_hash.h +++ /dev/null @@ -1,389 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_HASH_H__ -#define __MPP_HASH_H__ - -#include - -#include "rk_type.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define GOLDEN_RATIO_32 0x61C88647 -#define GOLDEN_RATIO_64 0x61C8864680B583EBull - -#if __SIZEOF_POINTER__ == 4 -#define GOLDEN_RATIO_PRIME GOLDEN_RATIO_32 -#define hash_long(val, bits) hash_32(val, bits) -#elif __SIZEOF_POINTER__ == 8 -#define GOLDEN_RATIO_PRIME GOLDEN_RATIO_64 -#define hash_long(val, bits) hash_64(val, bits) -#else -#error __SIZEOF_POINTER__ not 4 or 8 -#endif - -struct hlist_node { - struct hlist_node *next, **pprev; -}; - -struct hlist_head { - struct hlist_node *first; -}; - -#define HLIST_HEAD_INIT { .first = NULL } -#define HLIST_HEAD(name) struct hlist_head name = { .first = NULL } -#define INIT_HLIST_HEAD(ptr) ((ptr)->first = NULL) - -#define LIST_POISON1 ((void *) 0x100) -#define LIST_POISON2 ((void *) 0x200) - -#define WRITE_ONCE(var, val) \ - (*((volatile typeof(val) *)(&(var))) = (val)) - -#define READ_ONCE(var) (*((volatile typeof(var) *)(&(var)))) - -static inline void INIT_HLIST_NODE(struct hlist_node *h) -{ - h->next = NULL; - h->pprev = NULL; -} - -static inline int hlist_unhashed(const struct hlist_node *h) -{ - return !h->pprev; -} - -static inline int hlist_empty(const struct hlist_head *h) -{ - return !READ_ONCE(h->first); -} - -static inline void _hlist_del(struct hlist_node *n) -{ - struct hlist_node *next = n->next; - struct hlist_node **pprev = n->pprev; - - WRITE_ONCE(*pprev, next); - if (next) { - next->pprev = pprev; - } -} - -static inline void hlist_del(struct hlist_node *n) -{ - _hlist_del(n); - n->next = (struct hlist_node*)LIST_POISON1; - n->pprev = (struct hlist_node**)LIST_POISON2; -} - -static inline void hlist_del_init(struct hlist_node *n) -{ - if (!hlist_unhashed(n)) { - _hlist_del(n); - INIT_HLIST_NODE(n); - } -} - -static inline void hlist_add_head(struct hlist_node *n, struct hlist_head *h) -{ - struct hlist_node *first = h->first; - n->next = first; - if (first) { - first->pprev = &n->next; - } - WRITE_ONCE(h->first, n); - n->pprev = &h->first; -} - -static inline void hlist_add_before(struct hlist_node *n, struct hlist_node *next) -{ - n->pprev = next->pprev; - n->next = next; - next->pprev = &n->next; - WRITE_ONCE(*(n->pprev), n); -} - -static inline void hlist_add_behind(struct hlist_node *n, struct hlist_node *prev) -{ - n->next = prev->next; - WRITE_ONCE(prev->next, n); - n->pprev = &prev->next; - - if (n->next) { - n->next->pprev = &n->next; - } -} - -static inline void hlist_add_fake(struct hlist_node *n) -{ - n->pprev = &n->next; -} - -static inline int hlist_fake(struct hlist_node *h) -{ - return h->pprev == &h->next; -} - -static inline int hlist_is_singular_node(struct hlist_node *n, struct hlist_head *h) -{ - return !n->next && n->pprev == &h->first; -} - -static inline void hlist_move_list(struct hlist_head *old, - struct hlist_head *_new) -{ - _new->first = old->first; - if (_new->first) { - _new->first->pprev = &_new->first; - } - old->first = NULL; -} - -#define hlist_entry(ptr, type, member) container_of(ptr, type, member) - -#define hlist_for_each(pos, head) \ - for ((pos) = (head)->first; (pos) ; (pos) = (pos)->next) - -#define hlist_for_each_safe(pos, n, head) \ - for ((pos) = (head)->first; (pos) && ( { n = (pos)->next; 1; } ); \ - (pos) = n) - -#define hlist_entry_safe(ptr, type, member) \ - ( { typeof(ptr) ____ptr = (ptr); \ - ____ptr ? hlist_entry(____ptr, type, member) : NULL; \ - }) - -#define hlist_for_each_entry(pos, head, member) \ - for ((pos) = hlist_entry_safe((head)->first, typeof(*(pos)), member); \ - (pos); \ - (pos) = hlist_entry_safe((pos)->member.next, typeof(*(pos)), member)) - -#define hlist_for_each_entry_continue(pos, member) \ - for ((pos) = hlist_entry_safe((pos)->member.next, typeof(*(pos)), member); \ - (pos); \ - (pos) = hlist_entry_safe((pos)->member.next, typeof(*(pos)), member)) - -#define hlist_for_each_entry_from(pos, member) \ - for (; (pos); \ - (pos) = hlist_entry_safe((pos)->member.next, typeof(*(pos)), member)) - -#define hlist_for_each_entry_safe(pos, n, head, member) \ - for ((pos) = hlist_entry_safe((head)->first, typeof(*(pos)), member); \ - (pos) && ( { n = (pos)->member.next; 1; }); \ - (pos) = hlist_entry_safe(n, typeof(*(pos)), member)) - -#define DEFINE_HASHTABLE(name, bits) \ - struct hlist_head name[1 << (bits)] = \ - { [0 ... ((1 << (bits)) - 1)] = HLIST_HEAD_INIT } - -#define DECLARE_HASHTABLE(name, bits) \ - struct hlist_head name[1 << (bits)] - -#define ARRAY_SIZE(x) (sizeof((x)) / sizeof((x)[0])) - -#define ilog2(n) \ - ( \ - (n) & (1ULL << 63) ? 63 : \ - (n) & (1ULL << 62) ? 62 : \ - (n) & (1ULL << 61) ? 61 : \ - (n) & (1ULL << 60) ? 60 : \ - (n) & (1ULL << 59) ? 59 : \ - (n) & (1ULL << 58) ? 58 : \ - (n) & (1ULL << 57) ? 57 : \ - (n) & (1ULL << 56) ? 56 : \ - (n) & (1ULL << 55) ? 55 : \ - (n) & (1ULL << 54) ? 54 : \ - (n) & (1ULL << 53) ? 53 : \ - (n) & (1ULL << 52) ? 52 : \ - (n) & (1ULL << 51) ? 51 : \ - (n) & (1ULL << 50) ? 50 : \ - (n) & (1ULL << 49) ? 49 : \ - (n) & (1ULL << 48) ? 48 : \ - (n) & (1ULL << 47) ? 47 : \ - (n) & (1ULL << 46) ? 46 : \ - (n) & (1ULL << 45) ? 45 : \ - (n) & (1ULL << 44) ? 44 : \ - (n) & (1ULL << 43) ? 43 : \ - (n) & (1ULL << 42) ? 42 : \ - (n) & (1ULL << 41) ? 41 : \ - (n) & (1ULL << 40) ? 40 : \ - (n) & (1ULL << 39) ? 39 : \ - (n) & (1ULL << 38) ? 38 : \ - (n) & (1ULL << 37) ? 37 : \ - (n) & (1ULL << 36) ? 36 : \ - (n) & (1ULL << 35) ? 35 : \ - (n) & (1ULL << 34) ? 34 : \ - (n) & (1ULL << 33) ? 33 : \ - (n) & (1ULL << 32) ? 32 : \ - (n) & (1ULL << 31) ? 31 : \ - (n) & (1ULL << 30) ? 30 : \ - (n) & (1ULL << 29) ? 29 : \ - (n) & (1ULL << 28) ? 28 : \ - (n) & (1ULL << 27) ? 27 : \ - (n) & (1ULL << 26) ? 26 : \ - (n) & (1ULL << 25) ? 25 : \ - (n) & (1ULL << 24) ? 24 : \ - (n) & (1ULL << 23) ? 23 : \ - (n) & (1ULL << 22) ? 22 : \ - (n) & (1ULL << 21) ? 21 : \ - (n) & (1ULL << 20) ? 20 : \ - (n) & (1ULL << 19) ? 19 : \ - (n) & (1ULL << 18) ? 18 : \ - (n) & (1ULL << 17) ? 17 : \ - (n) & (1ULL << 16) ? 16 : \ - (n) & (1ULL << 15) ? 15 : \ - (n) & (1ULL << 14) ? 14 : \ - (n) & (1ULL << 13) ? 13 : \ - (n) & (1ULL << 12) ? 12 : \ - (n) & (1ULL << 11) ? 11 : \ - (n) & (1ULL << 10) ? 10 : \ - (n) & (1ULL << 9) ? 9 : \ - (n) & (1ULL << 8) ? 8 : \ - (n) & (1ULL << 7) ? 7 : \ - (n) & (1ULL << 6) ? 6 : \ - (n) & (1ULL << 5) ? 5 : \ - (n) & (1ULL << 4) ? 4 : \ - (n) & (1ULL << 3) ? 3 : \ - (n) & (1ULL << 2) ? 2 : \ - (n) & (1ULL << 1) ? 1 : 0 \ - ) - -#define HASH_SIZE(name) (ARRAY_SIZE(name)) -#define HASH_BITS(name) ilog2(HASH_SIZE(name)) - -/* Use hash_32 when possible to allow for fast 32bit hashing in 64bit kernels. */ -#define hash_min(val, bits) \ - (sizeof(val) <= 4 ? hash_32(val, bits) : hash_long(val, bits)) - -#define hash_add(hashtable, node, key) \ - hlist_add_head(node, &(hashtable)[hash_min(key, HASH_BITS(hashtable))]) - -/** - * hash_empty - check whether a hashtable is empty - * @hashtable: hashtable to check - * - * This has to be a macro since HASH_BITS() will not work on pointers since - * it calculates the size during preprocessing. - */ -#define hash_empty(hashtable) __hash_empty(hashtable, HASH_SIZE(hashtable)) - -/** - * hash_for_each - iterate over a hashtable - * @name: hashtable to iterate - * @bkt: integer to use as bucket loop cursor - * @obj: the type * to use as a loop cursor for each entry - * @member: the name of the hlist_node within the struct - */ -#define hash_for_each(name, bkt, obj, member) \ - for ((bkt) = 0, (obj) = NULL; (obj) == NULL && (bkt) < HASH_SIZE(name); \ - (bkt)++) \ - hlist_for_each_entry((obj), &(name)[bkt], member) - -/** - * hash_for_each_safe - iterate over a hashtable safe against removal of - * hash entry - * @name: hashtable to iterate - * @bkt: integer to use as bucket loop cursor - * @tmp: a &struct used for temporary storage - * @obj: the type * to use as a loop cursor for each entry - * @member: the name of the hlist_node within the struct - */ -#define hash_for_each_safe(name, bkt, tmp, obj, member) \ - for ((bkt) = 0, (obj) = NULL; (obj) == NULL && (bkt) < HASH_SIZE(name); \ - (bkt)++) \ - hlist_for_each_entry_safe((obj), tmp, &(name)[bkt], member) - -#define hash_for_each_possible(name, obj, member, key) \ - hlist_for_each_entry((obj), &(name)[hash_min(key, HASH_BITS(name))], member) - -static inline RK_U32 hash_32(RK_U32 val, unsigned int bits) -{ - /* On some cpus multiply is faster, on others gcc will do shifts */ - RK_U32 hash = val * GOLDEN_RATIO_32; - - /* High bits are more random, so use them. */ - return hash >> (32 - bits); // 32:32bits -} - -static inline RK_U32 _hash_32(RK_U32 val) -{ - return val * GOLDEN_RATIO_32; -} - -static inline RK_U32 hash_64(RK_U64 val, unsigned int bits) -{ -#if __SIZEOF_POINTER__ == 8 // 8:sizeof pointer - /* 64x64-bit multiply is efficient on all 64-bit processors */ - return val * GOLDEN_RATIO_64 >> (64 - bits); -#else - /* Hash 64 bits using only 32x32-bit multiply. */ - return hash_32((RK_U32)val ^ ((val >> 32) * GOLDEN_RATIO_32), bits); -#endif -} - -static inline RK_U32 hash_ptr(const void *ptr, unsigned int bits) -{ - return hash_long((unsigned long)ptr, bits); -} - -/* This really should be called fold32_ptr; it does no hashing to speak of. */ -static inline RK_U32 hash32_ptr(const void *ptr) -{ - unsigned long val = (unsigned long)ptr; - -#if __SIZEOF_POINTER__ == 8 - val ^= (val >> 32); // 32:Shift 32 bits right -#endif - return (RK_U32)val; -} - -/** - * hash_hashed - check whether an object is in any hashtable - * @node: the &struct hlist_node of the object to be checked - */ -static inline bool hash_hashed(struct hlist_node *node) -{ - return !hlist_unhashed(node); -} - -static inline bool _hash_empty(struct hlist_head *ht, unsigned int sz) -{ - unsigned int i; - - for (i = 0; i < sz; i++) { - if (!hlist_empty(&ht[i])) { - return false; - } - } - return true; -} - -/** - * hash_del - remove an object from a hashtable - * @node: &struct hlist_node of the object to remove - */ -static inline void hash_del(struct hlist_node *node) -{ - hlist_del_init(node); -} - -#ifdef __cplusplus -} -#endif - -#endif /* __MPP_HASH_H__ */ diff --git a/hardware/mpp/include/mpp_list.h b/hardware/mpp/include/mpp_list.h deleted file mode 100644 index fa169b5d1fd755d922759848249704c19c6c595b..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_list.h +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_LIST_H__ -#define __MPP_LIST_H__ - -#include "rk_type.h" - -#include "mpp_thread.h" - -/* - * two list structures are defined, one for C++, the other for C - */ - -#ifdef __cplusplus - -// desctructor of list node -typedef void *(*node_destructor)(void *); - -struct mpp_list_node; - -class mpp_list : public MppMutexCond { -public: - mpp_list(node_destructor func = NULL); - ~mpp_list(); - - // for FIFO or FILO implement - // adding functions support simple structure like C struct or C++ class pointer, - // do not support C++ object - RK_S32 add_at_head(void *data, RK_S32 size); - RK_S32 add_at_tail(void *data, RK_S32 size); - // deleting function will copy the stored data to input pointer with size as size - // if NULL is passed to deleting functions, the node will be delete directly - RK_S32 del_at_head(void *data, RK_S32 size); - RK_S32 del_at_tail(void *data, RK_S32 size); - - // direct fifo operation - RK_S32 fifo_wr(void *data, RK_S32 size); - RK_S32 fifo_rd(void *data, RK_S32 *size); - - // for status check - RK_S32 list_is_empty(); - RK_S32 list_size(); - - // for vector implement - not implemented yet - // adding function will return a key - RK_S32 add_by_key(void *data, RK_S32 size, RK_U32 *key); - RK_S32 del_by_key(void *data, RK_S32 size, RK_U32 key); - RK_S32 show_by_key(void *data, RK_U32 key); - - RK_S32 flush(); - -private: - node_destructor destroy; - struct mpp_list_node *head; - RK_S32 count; - static RK_U32 keys; - static RK_U32 get_key(); - - mpp_list(const mpp_list &); - mpp_list &operator=(const mpp_list &); -}; -#endif - - -#ifdef __cplusplus -extern "C" { -#endif - -struct list_head { - struct list_head *next, *prev; -}; - -#define LIST_HEAD_INIT(name) { &(name), &(name) } - -#define LIST_HEAD(name) \ - struct list_head name = LIST_HEAD_INIT(name) - -#define INIT_LIST_HEAD(ptr) do { \ - (ptr)->next = (ptr); (ptr)->prev = (ptr); \ - } while (0) - - -#define list_for_each_safe(pos, n, head) do { \ - for ((pos) = (head)->next, (n) = (pos)->next; (pos) != (head); \ - (pos) = (n), (n) = (pos)->next) \ - } while (0) - - -#define list_entry(ptr, type, member) \ - ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member))) - -#define list_first_entry(ptr, type, member) \ - list_entry((ptr)->next, type, member) - -#define list_last_entry(ptr, type, member) \ - list_entry((ptr)->prev, type, member) - -#define list_first_entry_or_null(ptr, type, member)({ \ - struct list_head *head__ = (ptr); \ - struct list_head *pos__ = head__->next; \ - pos__ != head__ ? list_entry(pos__, type, member) : NULL; \ -}) - -#define list_next_entry(pos, type, member) \ - list_entry((pos)->member.next, type, member) - -#define list_prev_entry(pos, type, member) \ - list_entry((pos)->member.prev, type, member) - -#define list_for_each_entry(pos, head, type, member) \ - for ((pos) = list_entry((head)->next, type, member); \ - &(pos)->member != (head); \ - (pos) = list_next_entry((pos), type, member)) - -#define list_for_each_entry_safe(pos, n, head, type, member) \ - for ((pos) = list_first_entry(head, type, member), \ - (n) = list_next_entry((pos), type, member); \ - &(pos)->member != (head); \ - (pos) = (n), (n) = list_next_entry(n, type, member)) - -#define list_for_each_entry_reverse(pos, head, type, member) \ - for ((pos) = list_last_entry(head, type, member); \ - &(pos)->member != (head); \ - (pos) = list_prev_entry((pos), type, member)) - -#define list_for_each_entry_safe_reverse(pos, n, head, type, member) \ - for ((pos) = list_last_entry(head, type, member), \ - (n) = list_prev_entry((pos), type, member); \ - &(pos)->member != (head); \ - (pos) = (n), (n) = list_prev_entry(n, type, member)) - -static __inline void _list_add(struct list_head * _new, - struct list_head * prev, - struct list_head * next) -{ - next->prev = _new; - _new->next = next; - _new->prev = prev; - prev->next = _new; -} - -static __inline void list_add(struct list_head *_new, struct list_head *head) -{ - _list_add(_new, head, head->next); -} - -static __inline void list_add_tail(struct list_head *_new, struct list_head *head) -{ - _list_add(_new, head->prev, head); -} - -static __inline void _list_del(struct list_head * prev, struct list_head * next) -{ - next->prev = prev; - prev->next = next; -} - -static __inline void list_del_init(struct list_head *entry) -{ - _list_del(entry->prev, entry->next); - - INIT_LIST_HEAD(entry); -} - -static __inline int list_is_last(const struct list_head *list, const struct list_head *head) -{ - return list->next == head; -} - -static __inline int list_empty(struct list_head *head) -{ - return head->next == head; -} - -#ifdef __cplusplus -} -#endif - - -#endif /* __MPP_LIST_H__ */ diff --git a/hardware/mpp/include/mpp_log.h b/hardware/mpp/include/mpp_log.h deleted file mode 100644 index f868f8e2244f3b4b0c7e3d0ae276464d1fc5afd7..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_log.h +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_LOG_H__ -#define __MPP_LOG_H__ - -#include -#include - -#include "rk_type.h" - -/* - * mpp runtime log system usage: - * mpp_err is for error status message, it will print for sure. - * mpp_log is for important message like open/close/reset/flush, it will print too. - * mpp_dbg is for all optional message. it can be controlled by debug and flag. - */ - -#define mpp_log(fmt, ...) _mpp_log(MODULE_TAG, fmt, NULL, ## __VA_ARGS__) -#define mpp_err(fmt, ...) _mpp_err(MODULE_TAG, fmt, NULL, ## __VA_ARGS__) - -#define _mpp_dbg(debug, flag, fmt, ...) \ - do { \ - if (debug & flag) \ - mpp_log(fmt, ## __VA_ARGS__); \ - } while (0) - -#define mpp_dbg(flag, fmt, ...) _mpp_dbg(mpp_debug, flag, fmt, ## __VA_ARGS__) - -/* - * _f function will add function name to the log - */ -#define mpp_log_f(fmt, ...) _mpp_log(MODULE_TAG, fmt, __FUNCTION__, ## __VA_ARGS__) -#define mpp_err_f(fmt, ...) _mpp_err(MODULE_TAG, fmt, __FUNCTION__, ## __VA_ARGS__) -#define _mpp_dbg_f(debug, flag, fmt, ...) \ - do { \ - if (debug & flag) \ - mpp_log_f(fmt, ## __VA_ARGS__); \ - } while (0) - -#define mpp_dbg_f(flag, fmt, ...) _mpp_dbg_f(mpp_debug, flag, fmt, ## __VA_ARGS__) - - -#define MPP_DBG_TIMING (0x00000001) -#define MPP_DBG_PTS (0x00000002) -#define MPP_DBG_INFO (0x00000004) -#define MPP_DBG_PLATFORM (0x00000010) - -#define MPP_DBG_DUMP_LOG (0x00000100) -#define MPP_DBG_DUMP_IN (0x00000200) -#define MPP_DBG_DUMP_OUT (0x00000400) -#define MPP_DBG_DUMP_CFG (0x00000800) - -#define mpp_dbg_pts(fmt, ...) mpp_dbg(MPP_DBG_PTS, fmt, ## __VA_ARGS__) -#define mpp_dbg_info(fmt, ...) mpp_dbg(MPP_DBG_INFO, fmt, ## __VA_ARGS__) -#define mpp_dbg_platform(fmt, ...) mpp_dbg(MPP_DBG_PLATFORM, fmt, ## __VA_ARGS__) - -#define MPP_ABORT (0x10000000) - -/* - * mpp_dbg usage: - * - * in h264d module define module debug flag variable like: h265d_debug - * then define h265d_dbg macro as follow : - * - * extern RK_U32 h265d_debug; - * - * #define H265D_DBG_FUNCTION (0x00000001) - * #define H265D_DBG_VPS (0x00000002) - * #define H265D_DBG_SPS (0x00000004) - * #define H265D_DBG_PPS (0x00000008) - * #define H265D_DBG_SLICE_HDR (0x00000010) - * - * #define h265d_dbg(flag, fmt, ...) mpp_dbg(h265d_debug, flag, fmt, ## __VA_ARGS__) - * - * finally use environment control the debug flag - * - * mpp_get_env_u32("h264d_debug", &h265d_debug, 0) - * - */ -/* - * sub-module debug flag usage example: - * +------+-------------------+ - * | 8bit | 24bit | - * +------+-------------------+ - * 0~15 bit: software debug print - * 16~23 bit: hardware debug print - * 24~31 bit: information print format - */ - -#define mpp_abort() do { \ - if (mpp_debug & MPP_ABORT) { \ - abort(); \ - } \ -} while (0) - -#define MPP_STRINGS(x) MPP_TO_STRING(x) -#define MPP_TO_STRING(x) #x - -#define mpp_assert(cond) do { \ - if (!(cond)) { \ - mpp_err("Assertion %s failed at %s:%d\n", \ - MPP_STRINGS(cond), __FUNCTION__, __LINE__); \ - mpp_abort(); \ - } \ -} while (0) - - -#ifdef __cplusplus -extern "C" { -#endif - -extern RK_U32 mpp_debug; - -void mpp_log_set_flag(RK_U32 flag); -RK_U32 mpp_log_get_flag(void); - -void _mpp_log(const char *tag, const char *fmt, const char *func, ...); -void _mpp_err(const char *tag, const char *fmt, const char *func, ...); - -#ifdef __cplusplus -} -#endif - -#endif /* __MPP_LOG_H__ */ diff --git a/hardware/mpp/include/mpp_mem.h b/hardware/mpp/include/mpp_mem.h deleted file mode 100644 index a884899627763f4b24a193af9e5f92accc08112a..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_mem.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_MEM_H__ -#define __MPP_MEM_H__ - -#include - -#include "rk_type.h" -#include "mpp_err.h" - -#define mpp_malloc_with_caller(type, count, caller) \ - (type*)mpp_osal_malloc(caller, sizeof(type) * (count)) - -#define mpp_malloc(type, count) \ - (type*)mpp_osal_malloc(__FUNCTION__, sizeof(type) * (count)) - -#define mpp_malloc_size(type, size) \ - (type*)mpp_osal_malloc(__FUNCTION__, size) - -#define mpp_calloc_size(type, size) \ - (type*)mpp_osal_calloc(__FUNCTION__, size) - -#define mpp_calloc(type, count) \ - (type*)mpp_osal_calloc(__FUNCTION__, sizeof(type) * (count)) - -#define mpp_realloc(ptr, type, count) \ - (type*)mpp_osal_realloc(__FUNCTION__, ptr, sizeof(type) * (count)) - -#define mpp_free(ptr) \ - mpp_osal_free(__FUNCTION__, ptr) - -#define MPP_FREE(ptr) do { if (ptr) mpp_free(ptr); ptr = NULL; } while (0) -#define MPP_FCLOSE(fp) do { if (fp) fclose(fp); fp = NULL; } while (0) - -#ifdef __cplusplus -extern "C" { -#endif - -void *mpp_osal_malloc(const char *caller, size_t size); -void *mpp_osal_calloc(const char *caller, size_t size); -void *mpp_osal_realloc(const char *caller, void *ptr, size_t size); -void mpp_osal_free(const char *caller, void *ptr); - -void mpp_show_mem_status(void); -RK_U32 mpp_mem_total_now(void); -RK_U32 mpp_mem_total_max(void); - -/* - * mpp memory usage snapshot tool - * - * usage: - * call mpp_mem_get_snapshot on context init get one snapshot - * call mpp_mem_get_snapshot on context deinit get another snapshot - * call mpp_mem_diff_snapshot to show the difference between these two snapshot - * call mpp_mem_put_snapshot twice to release these two snapshot - */ -typedef void* MppMemSnapshot; - -MPP_RET mpp_mem_get_snapshot(MppMemSnapshot *hnd); -MPP_RET mpp_mem_put_snapshot(MppMemSnapshot *hnd); -MPP_RET mpp_mem_squash_snapshot(MppMemSnapshot hnd0, MppMemSnapshot hnd1); - -#ifdef __cplusplus -} -#endif - -#endif /* __MPP_MEM_H__ */ \ No newline at end of file diff --git a/hardware/mpp/include/mpp_mem_pool.h b/hardware/mpp/include/mpp_mem_pool.h deleted file mode 100644 index ea890a4df71eff2d08b3397c053182d55d510433..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_mem_pool.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_MEM_POOL_H__ -#define __MPP_MEM_POOL_H__ - -#include -#include "mpp_mem.h" -#include "mpp_common.h" - -typedef void* MppMemPool; - -#ifdef __cplusplus -extern "C" { -#endif - -MppMemPool mpp_mem_pool_init(size_t size); -void mpp_mem_pool_deinit(MppMemPool pool); - -void *mpp_mem_pool_get(MppMemPool pool); -void mpp_mem_pool_put(MppMemPool pool, void *p); - -#ifdef __cplusplus -} -#endif - -#endif /* __MPP_MEM_POOL_H__ */ diff --git a/hardware/mpp/include/mpp_meta.h b/hardware/mpp/include/mpp_meta.h deleted file mode 100644 index 7b1f9599aecf5692858420dd5fe3dd11e262047e..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_meta.h +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_META_H__ -#define __MPP_META_H__ - -#include -#include "rk_type.h" - -#define FOURCC_META(a, b, c, d) ((RK_U32)(a) << 24 | \ - ((RK_U32)(b) << 16) | \ - ((RK_U32)(c) << 8) | \ - ((RK_U32)(d) << 0)) - -/* - * Mpp Metadata definition - * - * Metadata is for information transmision in mpp. - * Mpp task will contain two meta data: - * - * 1. Data flow metadata - * This metadata contains information of input / output data flow. For example - * A. decoder input side task the input packet must be defined and output frame - * may not be defined. Then decoder will try malloc or use committed buffer to - * complete decoding. - * B. decoder output side task - * - * - * 2. Flow control metadata - * - */ -typedef enum MppMetaDataType_e { - /* - * mpp meta data of data flow - * reference counter will be used for these meta data type - */ - TYPE_FRAME = FOURCC_META('m', 'f', 'r', 'm'), - TYPE_PACKET = FOURCC_META('m', 'p', 'k', 't'), - TYPE_BUFFER = FOURCC_META('m', 'b', 'u', 'f'), - - /* mpp meta data of normal data type */ - TYPE_S32 = FOURCC_META('s', '3', '2', ' '), - TYPE_S64 = FOURCC_META('s', '6', '4', ' '), - TYPE_PTR = FOURCC_META('p', 't', 'r', ' '), -} MppMetaType; - -typedef enum MppMetaKey_e { - /* data flow key */ - KEY_INPUT_FRAME = FOURCC_META('i', 'f', 'r', 'm'), - KEY_INPUT_PACKET = FOURCC_META('i', 'p', 'k', 't'), - KEY_OUTPUT_FRAME = FOURCC_META('o', 'f', 'r', 'm'), - KEY_OUTPUT_PACKET = FOURCC_META('o', 'p', 'k', 't'), - /* output motion information for motion detection */ - KEY_MOTION_INFO = FOURCC_META('m', 'v', 'i', 'f'), - KEY_HDR_INFO = FOURCC_META('h', 'd', 'r', ' '), - - /* flow control key */ - KEY_INPUT_BLOCK = FOURCC_META('i', 'b', 'l', 'k'), - KEY_OUTPUT_BLOCK = FOURCC_META('o', 'b', 'l', 'k'), - KEY_INPUT_IDR_REQ = FOURCC_META('i', 'i', 'd', 'r'), /* input idr frame request flag */ - KEY_OUTPUT_INTRA = FOURCC_META('o', 'i', 'd', 'r'), /* output intra frame indicator */ - - /* mpp_frame / mpp_packet meta data info key */ - KEY_TEMPORAL_ID = FOURCC_META('t', 'l', 'i', 'd'), - KEY_LONG_REF_IDX = FOURCC_META('l', 't', 'i', 'd'), - KEY_ENC_AVERAGE_QP = FOURCC_META('a', 'v', 'g', 'q'), - KEY_ROI_DATA = FOURCC_META('r', 'o', 'i', ' '), - KEY_OSD_DATA = FOURCC_META('o', 's', 'd', ' '), - KEY_OSD_DATA2 = FOURCC_META('o', 's', 'd', '2'), - KEY_USER_DATA = FOURCC_META('u', 's', 'r', 'd'), - KEY_USER_DATAS = FOURCC_META('u', 'r', 'd', 's'), - - /* input motion list for smart p rate control */ - KEY_MV_LIST = FOURCC_META('m', 'v', 'l', 't'), - - /* frame long-term reference frame operation */ - KEY_ENC_MARK_LTR = FOURCC_META('m', 'l', 't', 'r'), - KEY_ENC_USE_LTR = FOURCC_META('u', 'l', 't', 'r'), - - /* MLVEC specified encoder feature */ - KEY_ENC_FRAME_QP = FOURCC_META('f', 'r', 'm', 'q'), - KEY_ENC_BASE_LAYER_PID = FOURCC_META('b', 'p', 'i', 'd'), -} MppMetaKey; - -#define mpp_meta_get(meta) mpp_meta_get_with_tag(meta, MODULE_TAG, __FUNCTION__) - -#include "mpp_frame.h" - -#ifdef __cplusplus -extern "C" { -#endif - -MPP_RET mpp_meta_get_with_tag(MppMeta *meta, const char *tag, const char *caller); -MPP_RET mpp_meta_put(MppMeta meta); -RK_S32 mpp_meta_size(MppMeta meta); - -MPP_RET mpp_meta_set_s32(MppMeta meta, MppMetaKey key, RK_S32 val); -MPP_RET mpp_meta_set_s64(MppMeta meta, MppMetaKey key, RK_S64 val); -MPP_RET mpp_meta_set_ptr(MppMeta meta, MppMetaKey key, void *val); -MPP_RET mpp_meta_get_s32(MppMeta meta, MppMetaKey key, RK_S32 *val); -MPP_RET mpp_meta_get_s64(MppMeta meta, MppMetaKey key, RK_S64 *val); -MPP_RET mpp_meta_get_ptr(MppMeta meta, MppMetaKey key, void **val); - -MPP_RET mpp_meta_set_frame (MppMeta meta, MppMetaKey key, MppFrame frame); -MPP_RET mpp_meta_set_packet(MppMeta meta, MppMetaKey key, MppPacket packet); -MPP_RET mpp_meta_set_buffer(MppMeta meta, MppMetaKey key, MppBuffer buffer); -MPP_RET mpp_meta_get_frame (MppMeta meta, MppMetaKey key, MppFrame *frame); -MPP_RET mpp_meta_get_packet(MppMeta meta, MppMetaKey key, MppPacket *packet); -MPP_RET mpp_meta_get_buffer(MppMeta meta, MppMetaKey key, MppBuffer *buffer); - -#ifdef __cplusplus -} -#endif - -#endif /* __MPP_META_H__ */ diff --git a/hardware/mpp/include/mpp_packet.h b/hardware/mpp/include/mpp_packet.h deleted file mode 100644 index 72b27843fc9d37c237543aef67f6f1a4508b4be5..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_packet.h +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_PACKET_H__ -#define __MPP_PACKET_H__ - -#include "mpp_meta.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * MppPacket interface - * - * mpp_packet_init = mpp_packet_new + mpp_packet_set_data + mpp_packet_set_size - * mpp_packet_copy_init = mpp_packet_init + memcpy - */ -MPP_RET mpp_packet_new(MppPacket *packet); -MPP_RET mpp_packet_init(MppPacket *packet, void *data, size_t size); -MPP_RET mpp_packet_init_with_buffer(MppPacket *packet, MppBuffer buffer); -MPP_RET mpp_packet_copy_init(MppPacket *packet, const MppPacket src); -MPP_RET mpp_packet_deinit(MppPacket *packet); - -/* - * data : ( R/W ) start address of the whole packet memory - * size : ( R/W ) total size of the whole packet memory - * pos : ( R/W ) current access position of the whole packet memory, used for buffer read/write - * length : ( R/W ) the rest length from current position to end of buffer - * NOTE: normally length is updated only by set_pos, - * so set length must be used carefully for special usage - */ -void mpp_packet_set_data(MppPacket packet, void *data); -void mpp_packet_set_size(MppPacket packet, size_t size); -void mpp_packet_set_pos(MppPacket packet, void *pos); -void mpp_packet_set_length(MppPacket packet, size_t size); - -void* mpp_packet_get_data(const MppPacket packet); -void* mpp_packet_get_pos(const MppPacket packet); -size_t mpp_packet_get_size(const MppPacket packet); -size_t mpp_packet_get_length(const MppPacket packet); - - -void mpp_packet_set_pts(MppPacket packet, RK_S64 pts); -RK_S64 mpp_packet_get_pts(const MppPacket packet); -void mpp_packet_set_dts(MppPacket packet, RK_S64 dts); -RK_S64 mpp_packet_get_dts(const MppPacket packet); - -void mpp_packet_set_flag(MppPacket packet, RK_U32 flag); -RK_U32 mpp_packet_get_flag(const MppPacket packet); - -MPP_RET mpp_packet_set_eos(MppPacket packet); -MPP_RET mpp_packet_clr_eos(MppPacket packet); -RK_U32 mpp_packet_get_eos(MppPacket packet); -MPP_RET mpp_packet_set_extra_data(MppPacket packet); - -void mpp_packet_set_buffer(MppPacket packet, MppBuffer buffer); -MppBuffer mpp_packet_get_buffer(const MppPacket packet); - -/* - * data access interface - */ -MPP_RET mpp_packet_read(MppPacket packet, size_t offset, void *data, size_t size); -MPP_RET mpp_packet_write(MppPacket packet, size_t offset, void *data, size_t size); - -/* - * meta data access interface - */ -RK_S32 mpp_packet_has_meta(const MppPacket packet); -MppMeta mpp_packet_get_meta(const MppPacket packet); - -/* - * multi packet sequence interface for slice/split encoding/decoding - * partition - the packet is a part of a while image - * soi - Start Of Image - * eoi - End Of Image - */ -RK_U32 mpp_packet_is_partition(const MppPacket packet); -RK_U32 mpp_packet_is_soi(const MppPacket packet); -RK_U32 mpp_packet_is_eoi(const MppPacket packet); - -#ifdef __cplusplus -} -#endif - -#endif /* __MPP_PACKET_H__ */ diff --git a/hardware/mpp/include/mpp_platform.h b/hardware/mpp/include/mpp_platform.h deleted file mode 100644 index bcf22c43be76bbd4e3a07e613cbb3e452941b683..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_platform.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_PLATFORM__ -#define __MPP_PLATFORM__ - -#include "rk_type.h" -#include "mpp_soc.h" - -/* - * Platform flag detection is for rockchip hardware platform detection - */ -typedef enum MppIoctlVersion_e { - IOCTL_VCODEC_SERVICE, - IOCTL_MPP_SERVICE_V1, - IOCTL_VERSION_BUTT, -} MppIoctlVersion; - -typedef enum MppKernelVersion_e { - KERNEL_UNKNOWN, - KERNEL_3_10, - KERNEL_4_4, - KERNEL_4_19, - KERNEL_VERSION_BUTT, -} MppKernelVersion; - -#ifdef __cplusplus -extern "C" { -#endif - -MppIoctlVersion mpp_get_ioctl_version(void); -MppKernelVersion mpp_get_kernel_version(void); -RK_U32 mpp_get_2d_hw_flag(void); -RK_U32 mpp_get_client_hw_id(RK_S32 client_type); - -#ifdef __cplusplus -} -#endif - -#endif /* __MPP_PLATFORM__ */ diff --git a/hardware/mpp/include/mpp_queue.h b/hardware/mpp/include/mpp_queue.h deleted file mode 100755 index 607842766eb552b670e75bf9903561876fa5a810..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_queue.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_QUEUE_H__ -#define __MPP_QUEUE_H__ - -#include "mpp_list.h" - -class MppQueue : public mpp_list { -public: - MppQueue(node_destructor func); - ~MppQueue(); - RK_S32 push(void *data, RK_S32 size); - RK_S32 pull(void *data, RK_S32 size); - RK_S32 flush(); -private: - sem_t mQueuePending; - int mFlushFlag; -}; - -#endif diff --git a/hardware/mpp/include/mpp_rc_api.h b/hardware/mpp/include/mpp_rc_api.h deleted file mode 100644 index 397b57960e41c5e70294848e3de41676fd1a9e00..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_rc_api.h +++ /dev/null @@ -1,255 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_RC_API_H__ -#define __MPP_RC_API_H__ - -#include "mpp_err.h" -#include "rk_venc_rc.h" -#include "mpp_rc_defs.h" - -/* - * Mpp rate control has three parts: - * - * 1. MPI user config module - * MppEncRcCfg structure is provided to user for overall rate control config - * Mpp will receive MppEncRcCfg from user, check parameter and set it to - * encoder. - * - * 2. Encoder rate control module - * Encoder will implement the rate control strategy required by users - * including CBR, VBR, AVBR and so on. - * This module only implement the target bit calculation behavior and - * quality restriction. And the quality level will be controlled by hal. - * - * 3. Hal rate control module - * Hal will implement the rate control on hardware. Hal will calculate the - * QP parameter for hardware according to the frame level target bit - * specified by the encoder. And the report the real bitrate and quality to - * encoder. - * - * The header defines the communication interfaces and structures used between - * MPI, encoder and hal. - */ - -typedef enum RcMode_e { - RC_VBR, - RC_CBR, - RC_FIXQP, - RC_AVBR, - RC_CVBR, - RC_QVBR, - RC_LEARNING, - RC_MODE_BUTT, -} RcMode; - -typedef enum GopMode_e { - NORMAL_P, - SMART_P, -} GopMode; - -/* - * frame rate parameters have great effect on rate control - * - * fps_in_flex - * 0 - fix input frame rate - * 1 - variable input frame rate - * - * fps_in_num - * input frame rate numerator, if 0 then default 30 - * - * fps_in_denorm - * input frame rate denorminator, if 0 then default 1 - * - * fps_out_flex - * 0 - fix output frame rate - * 1 - variable output frame rate - * - * fps_out_num - * output frame rate numerator, if 0 then default 30 - * - * fps_out_denorm - * output frame rate denorminator, if 0 then default 1 - */ -typedef struct RcFpsCfg_t { - RK_S32 fps_in_flex; - RK_S32 fps_in_num; - RK_S32 fps_in_denorm; - RK_S32 fps_out_flex; - RK_S32 fps_out_num; - RK_S32 fps_out_denorm; -} RcFpsCfg; - -typedef struct RcSuperframeCfg_t { - MppEncRcSuperFrameMode super_mode; - RK_U32 super_i_thd; - RK_U32 super_p_thd; - MppEncRcPriority rc_priority; -} RcSuperframeCfg; - -typedef struct RcDebreathCfg_t { - RK_U32 enable; - RK_U32 strength; -} RcDebreathCfg; - -typedef struct RcHierQPCfg_t { - RK_S32 hier_qp_en; - RK_S32 hier_qp_delta[4]; - RK_S32 hier_frame_num[4]; -} RcHierQPCfg; - -/* - * Control parameter from external config - * - * It will be updated on rc/prep/gopref config changed. - */ -typedef struct RcCfg_s { - /* encode image size */ - RK_S32 width; - RK_S32 height; - - /* Use rc_mode to find different api */ - RcMode mode; - - RcFpsCfg fps; - - GopMode gop_mode; - /* I frame gop len */ - RK_S32 igop; - /* visual gop len */ - RK_S32 vgop; - - /* bitrate parameter */ - RK_S32 bps_min; - RK_S32 bps_target; - RK_S32 bps_max; - RK_S32 stats_time; - - /* max I frame bit ratio to P frame bit */ - RK_S32 max_i_bit_prop; - RK_S32 min_i_bit_prop; - RK_S32 init_ip_ratio; - /* layer bitrate proportion */ - RK_S32 layer_bit_prop[4]; - - /* quality parameter */ - RK_S32 init_quality; - RK_S32 max_quality; - RK_S32 min_quality; - RK_S32 max_i_quality; - RK_S32 min_i_quality; - RK_S32 i_quality_delta; - RK_S32 vi_quality_delta; - /* layer quality proportion */ - RK_S32 layer_quality_delta[4]; - - /* reencode parameter */ - RK_S32 max_reencode_times; - - /* still / motion desision parameter */ - RK_S32 min_still_prop; - RK_S32 max_still_quality; - - /* - * vbr parameter - * - * vbr_hi_prop - high proportion bitrate for reduce quality - * vbr_lo_prop - low proportion bitrate for increase quality - */ - RK_S32 vbr_hi_prop; - RK_S32 vbr_lo_prop; - - MppEncRcDropFrmMode drop_mode; - RK_U32 drop_thd; - RK_U32 drop_gap; - - RcSuperframeCfg super_cfg; - RcDebreathCfg debreath_cfg; - RcHierQPCfg hier_qp_cfg; -} RcCfg; - -/* - * Different rate control strategy will be implemented by different API config - */ -typedef struct RcImplApi_t { - char *name; - MppCodingType type; - RK_U32 ctx_size; - - MPP_RET (*init)(void *ctx, RcCfg *cfg); - MPP_RET (*deinit)(void *ctx); - - MPP_RET (*check_drop)(void *ctx, EncRcTask *task); - MPP_RET (*check_reenc)(void *ctx, EncRcTask *task); - - /* - * frm_start - frame level rate control frm_start. - * The EncRcTaskInfo will be output to hal for hardware to implement. - * frm_end - frame level rate control frm_end. - * The EncRcTaskInfo is returned for real quality and bitrate. - */ - MPP_RET (*frm_start)(void *ctx, EncRcTask *task); - MPP_RET (*frm_end)(void *ctx, EncRcTask *task); - - /* - * hal_start - hardware level rate control start. - * The EncRcTaskInfo will be output to hal for hardware to implement. - * hal_end - hardware level rate control end. - * The EncRcTaskInfo is returned for real quality and bitrate. - */ - MPP_RET (*hal_start)(void *ctx, EncRcTask *task); - MPP_RET (*hal_end)(void *ctx, EncRcTask *task); -} RcImplApi; - -/* - * structures for RC API register and query - */ -typedef struct RcApiBrief_t { - const char *name; - MppCodingType type; -} RcApiBrief; - -typedef struct RcApiQueryAll_t { - /* input param for query */ - RcApiBrief *brief; - RK_S32 max_count; - - /* output query count */ - RK_S32 count; -} RcApiQueryAll; - -typedef struct RcApiQueryType_t { - /* input param for query */ - RcApiBrief *brief; - RK_S32 max_count; - MppCodingType type; - - /* output query count */ - RK_S32 count; -} RcApiQueryType; - -#ifdef __cplusplus -extern "C" { -#endif - -MPP_RET rc_api_add(const RcImplApi *api); -MPP_RET rc_brief_get_all(RcApiQueryAll *query); -MPP_RET rc_brief_get_by_type(RcApiQueryType *query); - -#ifdef __cplusplus -} -#endif - -#endif /* __MPP_RC_API_H__ */ \ No newline at end of file diff --git a/hardware/mpp/include/mpp_rc_defs.h b/hardware/mpp/include/mpp_rc_defs.h deleted file mode 100644 index 57ad2a8d62bfac01e6362bc7041990b2b5b5014c..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_rc_defs.h +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_RC_DEFS_H__ -#define __MPP_RC_DEFS_H__ - -#include "rk_venc_ref.h" - -#define MAX_CPB_REFS (8) - -/* - * EncFrmStatus controls record the encoding frame status and also control - * work flow of encoder. It is the communicat channel between encoder implement - * module, rate control module and hardware module. - * - * bit 0 ~ 31 frame status - * 0 ~ 15 current frame status - * 16 ~ 31 reference frame status - * bit 32 ~ 63 encoding flow control - */ -typedef union EncFrmStatus_u { - struct { - /* - * bit 0 ~ 31 frame status - */ - /* status flag */ - RK_U32 valid : 1; - /* - * 0 - write the reconstructed frame pixel to memory - * 1 - do not write the reconstructed frame pixel to memory - */ - RK_U32 non_recn : 1; - RK_U32 reserved0 : 2; - - /* reference status flag */ - /* - * 0 - inter frame - * 1 - intra frame - */ - RK_U32 is_intra : 1; - - /* - * Valid when is_intra is true - * 0 - normal intra frame - * 1 - IDR frame - */ - RK_U32 is_idr : 1; - - /* - * 0 - mark as reference frame - * 1 - mark as non-refernce frame - */ - RK_U32 is_non_ref : 1; - - /* - * Valid when is_non_ref is false - * 0 - mark as short-term reference frame - * 1 - mark as long-term refernce frame - */ - RK_U32 is_lt_ref : 1; - - /* bit 8 - 15 */ - RK_U32 lt_idx : 4; - RK_U32 temporal_id : 4; - - /* distance between current frame and reference frame */ - MppEncRefMode ref_mode : 6; - RK_S32 ref_arg : 8; - RK_S32 ref_dist : 2; - - /* - * bit 32 ~ 63 encoder flow control flags - */ - /* - * 0 - normal frame encoding - * 1 - current frame will be dropped - */ - RK_U32 drop : 1; - - /* - * 0 - rate control module does not change frame type parameter - * 1 - rate control module changes frame type parameter reencode is needed - * to reprocess the dpb process. Also this means dpb module will follow - * the frame status parameter provided by rate control module. - */ - RK_U32 re_dpb_proc : 1; - - /* - * 0 - current frame encoding is in normal flow - * 1 - current frame encoding is in reencode flow - */ - RK_U32 reencode : 1; - - /* - * When true current frame size is super large then the frame should be reencoded. - */ - RK_U32 super_frame : 1; - - /* - * When true currnet frame is force to encoded as software skip frame - */ - RK_U32 force_pskip : 1; - RK_U32 reserved1 : 3; - - /* reencode times */ - RK_U32 reencode_times : 8; - - /* sequential index for each frame */ - RK_U32 seq_idx : 16; - }; - RK_U64 val; -} EncFrmStatus; - -typedef struct EncCpbStatus_t { - RK_S32 seq_idx; - - EncFrmStatus curr; - EncFrmStatus refr; - - /* initial cpb status for current frame encoding */ - EncFrmStatus init[MAX_CPB_REFS]; - /* final cpb status after current frame encoding */ - EncFrmStatus final[MAX_CPB_REFS]; -} EncCpbStatus; - -#define ENC_RC_FORCE_QP (0x00000001) - -typedef struct EncRcForceCfg_t { - RK_U32 force_flag; - RK_S32 force_qp; - RK_U32 reserve[6]; -} EncRcForceCfg; - -/* - * communication channel between rc / hal / hardware - * - * rc -> hal bit_target / bit_max / bit_min - * hal -> hw quality_target / quality_max / quality_min - * hw -> rc / hal bit_real / quality_real / madi / madp - */ -typedef struct EncRcCommonInfo_t { - /* rc to hal */ - RK_S32 bit_target; - RK_S32 bit_max; - RK_S32 bit_min; - - RK_S32 quality_target; - RK_S32 quality_max; - RK_S32 quality_min; - - /* rc from hardware */ - RK_S32 bit_real; - RK_S32 quality_real; - RK_S32 madi; - RK_S32 madp; - - RK_U32 iblk4_prop; // scale 256 - RK_S32 reserve[15]; -} EncRcTaskInfo; - -typedef struct EncRcTask_s { - EncCpbStatus cpb; - EncFrmStatus frm; - EncRcTaskInfo info; - EncRcForceCfg force; - MppFrame frame; -} EncRcTask; - -#endif /* __MPP_RC_DEFS_H__ */ \ No newline at end of file diff --git a/hardware/mpp/include/mpp_runtime.h b/hardware/mpp/include/mpp_runtime.h deleted file mode 100644 index ef8a337cd09d700be2e22cb3579f0f5a2f9cb807..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_runtime.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_RUNTIME__ -#define __MPP_RUNTIME__ - -#include "mpp_buffer.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Runtime function detection is to support different binary on different - * runtime environment. This is usefull on product environemnt. - */ -RK_U32 mpp_rt_allcator_is_valid(MppBufferType type); - -#ifdef __cplusplus -} -#endif - -#endif /* __MPP_RUNTIME__ */ \ No newline at end of file diff --git a/hardware/mpp/include/mpp_server.h b/hardware/mpp/include/mpp_server.h deleted file mode 100644 index 049b8871dcb66127dc15612fb47bb7e02fc2cfbe..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_server.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_SERVER_H__ -#define __MPP_SERVER_H__ - -#include "mpp_device.h" - -#ifdef __cplusplus -extern "C" { -#endif - -MPP_RET mpp_server_attach(MppDev ctx); -MPP_RET mpp_server_detach(MppDev ctx); - -MPP_RET mpp_server_send_task(MppDev ctx); -MPP_RET mpp_server_wait_task(MppDev ctx, RK_S64 timeout); - -#ifdef __cplusplus -} -#endif - -#endif /* __MPP_SERVER_H__ */ \ No newline at end of file diff --git a/hardware/mpp/include/mpp_service.h b/hardware/mpp/include/mpp_service.h deleted file mode 100644 index 89bc40f82d7acd456dfd4720ce8d03fcfd02fd70..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_service.h +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_SERVICE_H__ -#define __MPP_SERVICE_H__ - -#include -#include "rk_type.h" - -/* Use 'v' as magic number */ -#define MPP_IOC_MAGIC 'v' -#define MPP_IOC_CFG_V1 _IOW(MPP_IOC_MAGIC, 1, unsigned int) -#define MAX_REQ_NUM 16 - -#if __SIZEOF_POINTER__ == 4 -#define REQ_DATA_PTR(ptr) ((RK_U32)(ptr)) -#elif __SIZEOF_POINTER__ == 8 -#define REQ_DATA_PTR(ptr) ((RK_U64)(ptr)) -#endif - -/* define flags for mpp_request */ -#define MPP_FLAGS_MULTI_MSG (0x00000001) -#define MPP_FLAGS_LAST_MSG (0x00000002) -#define MPP_FLAGS_REG_FD_NO_TRANS (0x00000004) -#define MPP_FLAGS_SCL_FD_NO_TRANS (0x00000008) -#define MPP_FLAGS_REG_OFFSET_ALONE (0x00000010) -#define MPP_FLAGS_POLL_NON_BLOCK (0x00000020) -#define MPP_FLAGS_SECURE_MODE (0x00010000) - -/* mpp service capability description */ -typedef enum MppDevCmd_e { - MPP_DEV_GET_START = 0, - MPP_DEV_GET_MAX_WIDTH, - MPP_DEV_GET_MAX_HEIGHT, - MPP_DEV_GET_MIN_WIDTH, - MPP_DEV_GET_MIN_HEIGHT, - MPP_DEV_GET_MMU_STATUS, - - MPP_DEV_SET_START = 0x01000000, - MPP_DEV_SET_HARD_PLATFORM, // set paltform by user - MPP_DEV_ENABLE_POSTPROCCESS, - - MPP_DEV_PROP_BUTT, -} MppDevCmd; - -typedef enum MppServiceCmdType_e { - MPP_CMD_QUERY_BASE = 0, - MPP_CMD_PROBE_HW_SUPPORT = MPP_CMD_QUERY_BASE + 0, - MPP_CMD_QUERY_HW_ID = MPP_CMD_QUERY_BASE + 1, - MPP_CMD_QUERY_CMD_SUPPORT = MPP_CMD_QUERY_BASE + 2, - MPP_CMD_QUERY_BUTT, - - MPP_CMD_INIT_BASE = 0x100, - MPP_CMD_INIT_CLIENT_TYPE = MPP_CMD_INIT_BASE + 0, - MPP_CMD_INIT_DRIVER_DATA = MPP_CMD_INIT_BASE + 1, - MPP_CMD_INIT_TRANS_TABLE = MPP_CMD_INIT_BASE + 2, - MPP_CMD_INIT_BUTT, - - MPP_CMD_SEND_BASE = 0x200, - MPP_CMD_SET_REG_WRITE = MPP_CMD_SEND_BASE + 0, - MPP_CMD_SET_REG_READ = MPP_CMD_SEND_BASE + 1, - MPP_CMD_SET_REG_ADDR_OFFSET = MPP_CMD_SEND_BASE + 2, - MPP_CMD_SET_RCB_INFO = MPP_CMD_SEND_BASE + 3, - /* for batch process start a task of one session */ - MPP_CMD_SET_SESSION_FD = MPP_CMD_SEND_BASE + 4, - MPP_CMD_SEND_BUTT, - - MPP_CMD_POLL_BASE = 0x300, - MPP_CMD_POLL_HW_FINISH = MPP_CMD_POLL_BASE + 0, - MPP_CMD_POLL_BUTT, - - MPP_CMD_CONTROL_BASE = 0x400, - MPP_CMD_RESET_SESSION = MPP_CMD_CONTROL_BASE + 0, - MPP_CMD_TRANS_FD_TO_IOVA = MPP_CMD_CONTROL_BASE + 1, - MPP_CMD_RELEASE_FD = MPP_CMD_CONTROL_BASE + 2, - MPP_CMD_SEND_CODEC_INFO = MPP_CMD_CONTROL_BASE + 3, - MPP_CMD_BAT_CMD = MPP_CMD_CONTROL_BASE + 4, - MPP_CMD_CONTROL_BUTT, - - MPP_CMD_BUTT, -} MppServiceCmdType; - -typedef struct mppReqV1_t { - RK_U32 cmd; - RK_U32 flag; - RK_U32 size; - RK_U32 offset; - RK_U64 data_ptr; -} MppReqV1; - -typedef struct MppServiceCmdCap_t { - RK_U32 support_cmd; - RK_U32 query_cmd; - RK_U32 init_cmd; - RK_U32 send_cmd; - RK_U32 poll_cmd; - RK_U32 ctrl_cmd; -} MppServiceCmdCap; - -#ifdef __cplusplus -extern "C" { -#endif - -void check_mpp_service_cap(RK_U32 *codec_type, RK_U32 *hw_ids, MppServiceCmdCap *cap); -const MppServiceCmdCap *mpp_get_mpp_service_cmd_cap(void); -const char *mpp_get_mpp_service_name(void); - -#ifdef __cplusplus -} -#endif - -#endif /* __MPP_SERVICE_H__ */ \ No newline at end of file diff --git a/hardware/mpp/include/mpp_service_api.h b/hardware/mpp/include/mpp_service_api.h deleted file mode 100644 index 6b861b0a8aa795a44cbd5c974aaa5f2e89e39672..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_service_api.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_SERVICE_API_H__ -#define __MPP_SERVICE_API_H__ - -#include "mpp_device.h" - -#ifdef __cplusplus -extern "C" { -#endif -#ifdef __cplusplus -} -#endif - -#endif /* __MPP_SERVICE_API_H__ */ \ No newline at end of file diff --git a/hardware/mpp/include/mpp_soc.h b/hardware/mpp/include/mpp_soc.h deleted file mode 100644 index 14d7f2c222c23a4dea98796242f4fb8517843067..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_soc.h +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_SOC_H__ -#define __MPP_SOC_H__ - -#include "mpp_dev_defs.h" - -/* Do NOT use this outside MPP it may be changed in new version */ -typedef enum RockchipSocType_e { - ROCKCHIP_SOC_AUTO, - ROCKCHIP_SOC_RK3036, - ROCKCHIP_SOC_RK3066, - ROCKCHIP_SOC_RK3188, - ROCKCHIP_SOC_RK3288, - ROCKCHIP_SOC_RK312X, - ROCKCHIP_SOC_RK3368, - ROCKCHIP_SOC_RK3399, - ROCKCHIP_SOC_RK3228H, - ROCKCHIP_SOC_RK3328, - ROCKCHIP_SOC_RK3228, - ROCKCHIP_SOC_RK3229, - ROCKCHIP_SOC_RV1108, - ROCKCHIP_SOC_RV1109, - ROCKCHIP_SOC_RV1126, - ROCKCHIP_SOC_RK3326, - ROCKCHIP_SOC_RK3128H, - ROCKCHIP_SOC_PX30, - ROCKCHIP_SOC_RK1808, - ROCKCHIP_SOC_RK3566, - ROCKCHIP_SOC_RK3568, - ROCKCHIP_SOC_BUTT, -} RockchipSocType; - -typedef struct MppDecHwCap_t { - RK_U32 cap_coding; - - MppClientType type : 8; - - RK_U32 cap_fbc : 4; - RK_U32 cap_4k : 1; - RK_U32 cap_8k : 1; - RK_U32 cap_colmv_buf : 1; - RK_U32 cap_hw_h265_rps : 1; - RK_U32 cap_hw_vp9_prob : 1; - RK_U32 cap_jpg_pp_out : 1; - RK_U32 cap_10bit : 1; - RK_U32 reserved : 13; -} MppDecHwCap; - -typedef struct MppEncHwCap_t { - RK_U32 cap_coding; - - MppClientType type : 8; - - RK_U32 cap_fbc : 4; - RK_U32 cap_4k : 1; - RK_U32 cap_8k : 1; - RK_U32 cap_hw_osd : 1; - RK_U32 cap_hw_roi : 1; - RK_U32 reserved : 16; -} MppEncHwCap; - -typedef struct { - const char *compatible; - const RockchipSocType soc_type; - const RK_U32 vcodec_type; - - /* Max 4 decoder cap */ - const MppDecHwCap *dec_caps[4]; - /* Max 4 encoder cap */ - const MppEncHwCap *enc_caps[4]; -} MppSocInfo; - -#ifdef __cplusplus -extern "C" { -#endif - -const char *mpp_get_soc_name(void); -RockchipSocType mpp_get_soc_type(void); -RK_U32 mpp_get_vcodec_type(void); - -const MppSocInfo *mpp_get_soc_info(void); -RK_U32 mpp_check_soc_cap(MppCtxType type, MppCodingType coding); - -#ifdef __cplusplus -} -#endif - -#endif /* __MPP_SOC_H__ */ \ No newline at end of file diff --git a/hardware/mpp/include/mpp_task.h b/hardware/mpp/include/mpp_task.h deleted file mode 100644 index 48de2d0866776d580530e076841de2ddd1d90b5d..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_task.h +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_TASK_H__ -#define __MPP_TASK_H__ - -#include "mpp_meta.h" - -/* - * Advanced task flow - * Advanced task flow introduces three concepts: port, task and item - * - * Port is from OpenMAX - * Port has two type: input port and output port which are all for data transaction. - * Port work like a queue. task will be dequeue from or enqueue to one port. - * On input side user will dequeue task from input port, setup task and enqueue task - * back to input port. - * On output side user will dequeue task from output port, get the information from - * and then enqueue task back to output port. - * - * Task indicates one transaction on the port. - * Task has two working mode: async mode and sync mode - * If mpp is work in sync mode on task enqueue function return the task has been done - * If mpp is work in async mode on task enqueue function return the task is just put - * on the task queue for process. - * Task can carry different items. Task just like a container of items - * - * Item indicates MppPacket or MppFrame which is contained in one task - */ - -/* - * One mpp task queue has two ports: input and output - * - * The whole picture is: - * Top layer mpp has two ports: mpp_input_port and mpp_output_port - * But internally these two ports belongs to two task queue. - * The mpp_input_port is the mpp_input_task_queue's input port. - * The mpp_output_port is the mpp_output_task_queue's output port. - * - * Each port uses its task queue to communication - */ -typedef enum { - MPP_PORT_INPUT, - MPP_PORT_OUTPUT, - MPP_PORT_BUTT, -} MppPortType; - -/* - * Advance task work flow mode: - ****************************************************************************** - * 1. async mode (default_val) - * - * mpp_init(type, coding, MPP_WORK_ASYNC) - * - * input thread - * a - poll(input) - * b - dequeue(input, *task) - * c - task_set_item(packet/frame) - * d - enqueue(input, task) // when enqueue return the task is not done yet - * - * output thread - * a - poll(output) - * b - dequeue(output, *task) - * c - task_get_item(frame/packet) - * d - enqueue(output, task) - ****************************************************************************** - * 2. sync mode - * - * mpp_init(type, coding, MPP_WORK_SYNC) - * - * a - poll(input) - * b - dequeue(input, *task) - * c - task_set_item(packet/frame) - * d - enqueue(task) // when enqueue return the task is finished - ****************************************************************************** - */ -typedef enum { - MPP_TASK_ASYNC, - MPP_TASK_SYNC, - MPP_TASK_WORK_MODE_BUTT, -} MppTaskWorkMode; - -/* - * Mpp port poll type - * - * MPP_POLL_BLOCK - for block poll - * MPP_POLL_NON_BLOCK - for non-block poll - * small than MPP_POLL_MAX - for poll with timeout in ms - * small than MPP_POLL_BUTT or larger than MPP_POLL_MAX is invalid value - */ -typedef enum { - MPP_POLL_BUTT = -2, - MPP_POLL_BLOCK = -1, - MPP_POLL_NON_BLOCK = 0, - MPP_POLL_MAX = 8000, -} MppPollType; - -/* - * Mpp timeout define - * MPP_TIMEOUT_BLOCK - for block poll - * MPP_TIMEOUT_NON_BLOCK - for non-block poll - * small than MPP_TIMEOUT_MAX - for poll with timeout in ms - * small than MPP_TIMEOUT_BUTT or larger than MPP_TIMEOUT_MAX is invalid value - */ -#define MPP_TIMEOUT_BUTT (-2L) -#define MPP_TIMEOUT_BLOCK (-1L) -#define MPP_TIMEOUT_NON_BLOCK (0L) -#define MPP_TIMEOUT_MAX (8000L) - -/* - * MppTask is descriptor of a task which send to mpp for process - * mpp can support different type of work mode, for example: - * - * decoder: - * - * 1. typical decoder mode: - * input - MppPacket (normal cpu buffer, need cpu copy) - * output - MppFrame (ion/drm buffer in external/internal mode) - * 2. secure decoder mode: - * input - MppPacket (externel ion/drm buffer, cpu can not access) - * output - MppFrame (ion/drm buffer in external/internal mode, cpu can not access) - * - * interface usage: - * - * typical flow - * input side: - * task_dequeue(ctx, PORT_INPUT, &task); - * task_put_item(task, MODE_INPUT, packet) - * task_enqueue(ctx, PORT_INPUT, task); - * output side: - * task_dequeue(ctx, PORT_OUTPUT, &task); - * task_get_item(task, MODE_OUTPUT, &frame) - * task_enqueue(ctx, PORT_OUTPUT, task); - * - * secure flow - * input side: - * task_dequeue(ctx, PORT_INPUT, &task); - * task_put_item(task, MODE_INPUT, packet) - * task_put_item(task, MODE_OUTPUT, frame) // buffer will be specified here - * task_enqueue(ctx, PORT_INPUT, task); - * output side: - * task_dequeue(ctx, PORT_OUTPUT, &task); - * task_get_item(task, MODE_OUTPUT, &frame) - * task_enqueue(ctx, PORT_OUTPUT, task); - * - * encoder: - * - * 1. typical encoder mode: - * input - MppFrame (ion/drm buffer in external mode) - * output - MppPacket (normal cpu buffer, need cpu copy) - * 2. user input encoder mode: - * input - MppFrame (normal cpu buffer, need to build hardware table for this buffer) - * output - MppPacket (normal cpu buffer, need cpu copy) - * 3. secure encoder mode: - * input - MppFrame (ion/drm buffer in external mode, cpu can not access) - * output - MppPacket (externel ion/drm buffer, cpu can not access) - * - * typical / user input flow - * input side: - * task_dequeue(ctx, PORT_INPUT, &task); - * task_put_item(task, MODE_INPUT, frame) - * task_enqueue(ctx, PORT_INPUT, task); - * output side: - * task_dequeue(ctx, PORT_OUTPUT, &task); - * task_get_item(task, MODE_OUTPUT, &packet) - * task_enqueue(ctx, PORT_OUTPUT, task); - * - * secure flow - * input side: - * task_dequeue(ctx, PORT_INPUT, &task); - * task_put_item(task, MODE_OUTPUT, packet) // buffer will be specified here - * task_put_item(task, MODE_INPUT, frame) - * task_enqueue(ctx, PORT_INPUT, task); - * output side: - * task_dequeue(ctx, PORT_OUTPUT, &task); - * task_get_item(task, MODE_OUTPUT, &packet) - * task_get_item(task, MODE_OUTPUT, &frame) - * task_enqueue(ctx, PORT_OUTPUT, task); - * - * NOTE: this flow can specify the output frame. User will setup both intput frame and output packet - * buffer at the input side. Then at output side when user gets a finished task user can get the output - * packet and corresponding released input frame. - * - * image processing - * - * 1. typical image process mode: - * input - MppFrame (ion/drm buffer in external mode) - * output - MppFrame (ion/drm buffer in external mode) - * - * typical / user input flow - * input side: - * task_dequeue(ctx, PORT_INPUT, &task); - * task_put_item(task, MODE_INPUT, frame) - * task_enqueue(ctx, PORT_INPUT, task); - * output side: - * task_dequeue(ctx, PORT_OUTPUT, &task); - * task_get_item(task, MODE_OUTPUT, &frame) - * task_enqueue(ctx, PORT_OUTPUT, task); - */ -/* NOTE: use index rather then handle to descripbe task */ - -#ifdef __cplusplus -extern "C" { -#endif - -MPP_RET mpp_task_meta_set_s32(MppTask task, MppMetaKey key, RK_S32 val); -MPP_RET mpp_task_meta_set_s64(MppTask task, MppMetaKey key, RK_S64 val); -MPP_RET mpp_task_meta_set_ptr(MppTask task, MppMetaKey key, void *val); -MPP_RET mpp_task_meta_set_frame (MppTask task, MppMetaKey key, MppFrame frame); -MPP_RET mpp_task_meta_set_packet(MppTask task, MppMetaKey key, MppPacket packet); -MPP_RET mpp_task_meta_set_buffer(MppTask task, MppMetaKey key, MppBuffer buffer); - -MPP_RET mpp_task_meta_get_s32(MppTask task, MppMetaKey key, RK_S32 *val, RK_S32 default_val); -MPP_RET mpp_task_meta_get_s64(MppTask task, MppMetaKey key, RK_S64 *val, RK_S64 default_val); -MPP_RET mpp_task_meta_get_ptr(MppTask task, MppMetaKey key, void **val, void *default_val); -MPP_RET mpp_task_meta_get_frame (MppTask task, MppMetaKey key, MppFrame *frame); -MPP_RET mpp_task_meta_get_packet(MppTask task, MppMetaKey key, MppPacket *packet); -MPP_RET mpp_task_meta_get_buffer(MppTask task, MppMetaKey key, MppBuffer *buffer); - -#ifdef __cplusplus -} -#endif - -#endif /* __MPP_QUEUE_H__ */ \ No newline at end of file diff --git a/hardware/mpp/include/mpp_thread.h b/hardware/mpp/include/mpp_thread.h deleted file mode 100644 index 521b4b59a0df72295fb11ec45dede927ca824974..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_thread.h +++ /dev/null @@ -1,314 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_THREAD_H__ -#define __MPP_THREAD_H__ - -#if defined(_WIN32) && !defined(__MINGW32CE__) - -/* - * NOTE: POSIX Threads for Win32 - * Downloaded from http://www.sourceware.org/pthreads-win32/ - */ -#include "semaphore.h" -#include "pthread.h" -#pragma comment(lib, "pthreadVC2.lib") - -/* - * add pthread_setname_np for windows - */ -int pthread_setname_np(pthread_t thread, const char *name); - -#else - -#include -#include -#include -#include - -#ifndef PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP -#define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP PTHREAD_RECURSIVE_MUTEX_INITIALIZER -#endif - -#endif - -#define THREAD_NAME_LEN 16 - -typedef void *(*MppThreadFunc)(void *); - -typedef enum { - MPP_THREAD_UNINITED, - MPP_THREAD_RUNNING, - MPP_THREAD_WAITING, - MPP_THREAD_STOPPING, -} MppThreadStatus; - -#ifdef __cplusplus - -#include "mpp_log.h" - -class Mutex; -class Condition; - -/* - * for shorter type name and function name - */ -class Mutex { -public: - Mutex(); - ~Mutex(); - - void lock(); - void unlock(); - int trylock(); - - class Autolock { - public: - inline Autolock(Mutex* mutex, RK_U32 enable = 1) - : mEnabled(enable), mLock(*mutex) - { - if (mEnabled) - mLock.lock(); - } - inline ~Autolock() - { - if (mEnabled) - mLock.unlock(); - } - private: - RK_S32 mEnabled; - Mutex& mLock; - }; - -private: - friend class Condition; - - pthread_mutex_t mMutex; - - Mutex(const Mutex &); - Mutex &operator = (const Mutex&); -}; - -inline Mutex::Mutex() -{ - pthread_mutexattr_t attr; - pthread_mutexattr_init(&attr); - pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); - pthread_mutex_init(&mMutex, &attr); - pthread_mutexattr_destroy(&attr); -} -inline Mutex::~Mutex() -{ - pthread_mutex_destroy(&mMutex); -} -inline void Mutex::lock() -{ - pthread_mutex_lock(&mMutex); -} -inline void Mutex::unlock() -{ - pthread_mutex_unlock(&mMutex); -} -inline int Mutex::trylock() -{ - return pthread_mutex_trylock(&mMutex); -} - -typedef Mutex::Autolock AutoMutex; - - -/* - * for shorter type name and function name - */ -class Condition { -public: - Condition(); - Condition(int type); - ~Condition(); - RK_S32 wait(Mutex& mutex); - RK_S32 wait(Mutex* mutex); - RK_S32 timedwait(Mutex& mutex, RK_S64 timeout); - RK_S32 timedwait(Mutex* mutex, RK_S64 timeout); - RK_S32 signal(); - RK_S32 broadcast(); - -private: - pthread_cond_t mCond; -}; - -inline Condition::Condition() -{ - pthread_cond_init(&mCond, NULL); -} -inline Condition::~Condition() -{ - pthread_cond_destroy(&mCond); -} -inline RK_S32 Condition::wait(Mutex& mutex) -{ - return pthread_cond_wait(&mCond, &mutex.mMutex); -} -inline RK_S32 Condition::wait(Mutex* mutex) -{ - return pthread_cond_wait(&mCond, &mutex->mMutex); -} -inline RK_S32 Condition::timedwait(Mutex& mutex, RK_S64 timeout) -{ - return timedwait(&mutex, timeout); -} -inline RK_S32 Condition::timedwait(Mutex* mutex, RK_S64 timeout) -{ - struct timespec ts; - - clock_gettime(CLOCK_REALTIME_COARSE, &ts); - - ts.tv_sec += timeout / 1000; // 1000:Get milliseconds - ts.tv_nsec += (timeout % 1000) * 1000000; // 1000:Get milliseconds // 1000000:Get seconds - /* Prevent the out of range at nanoseconds field */ - ts.tv_sec += ts.tv_nsec / 1000000000; // 1000000000:Get seconds - ts.tv_nsec %= 1000000000; // 1000000000:Get Get nanoseconds - - return pthread_cond_timedwait(&mCond, &mutex->mMutex, &ts); -} -inline RK_S32 Condition::signal() -{ - return pthread_cond_signal(&mCond); -} -inline RK_S32 Condition::broadcast() -{ - return pthread_cond_broadcast(&mCond); -} - -class MppMutexCond { -public: - MppMutexCond() {}; - ~MppMutexCond() {}; - - void lock() - { - mLock.lock(); - } - void unlock() - { - mLock.unlock(); - } - void trylock() - { - mLock.trylock(); - } - void wait() - { - mCondition.wait(mLock); - } - RK_S32 wait(RK_S64 timeout) - { - return mCondition.timedwait(mLock, timeout); - } - void signal() - { - mCondition.signal(); - } - void broadcast() - { - mCondition.broadcast(); - } - Mutex *mutex() - { - return &mLock; - } - -private: - Mutex mLock; - Condition mCondition; -}; - -// Thread lock / signal is distinguished by its source -typedef enum MppThreadSignal_e { - THREAD_WORK, // for working loop - THREAD_INPUT, // for thread input - THREAD_OUTPUT, // for thread output - THREAD_CONTROL, // for thread async control (reset) - THREAD_SIGNAL_BUTT, -} MppThreadSignal; - -#define THREAD_NORMAL 0 -#define THRE 0 - -class MppThread { -public: - MppThread(MppThreadFunc func, void *ctx, const char *name = NULL); - ~MppThread() {}; - - MppThreadStatus get_status(MppThreadSignal id = THREAD_WORK); - void set_status(MppThreadStatus status, MppThreadSignal id = THREAD_WORK); - void dump_status(); - - void start(); - void stop(); - - void lock(MppThreadSignal id = THREAD_WORK) - { - mpp_assert(id < THREAD_SIGNAL_BUTT); - mMutexCond[id].lock(); - } - - void unlock(MppThreadSignal id = THREAD_WORK) - { - mpp_assert(id < THREAD_SIGNAL_BUTT); - mMutexCond[id].unlock(); - } - - void wait(MppThreadSignal id = THREAD_WORK) - { - mpp_assert(id < THREAD_SIGNAL_BUTT); - MppThreadStatus status = mStatus[id]; - - mStatus[id] = MPP_THREAD_WAITING; - mMutexCond[id].wait(); - - // check the status is not changed then restore status - if (mStatus[id] == MPP_THREAD_WAITING) - mStatus[id] = status; - } - - void signal(MppThreadSignal id = THREAD_WORK) - { - mpp_assert(id < THREAD_SIGNAL_BUTT); - mMutexCond[id].signal(); - } - - Mutex *mutex(MppThreadSignal id = THREAD_WORK) - { - mpp_assert(id < THREAD_SIGNAL_BUTT); - return mMutexCond[id].mutex(); - } - -private: - pthread_t mThread; - MppMutexCond mMutexCond[THREAD_SIGNAL_BUTT]; - MppThreadStatus mStatus[THREAD_SIGNAL_BUTT]; - - MppThreadFunc mFunction; - char mName[THREAD_NAME_LEN]; - void *mContext; - - MppThread(); - MppThread(const MppThread &); - MppThread &operator=(const MppThread &); -}; - -#endif - -#endif /* __MPP_THREAD_H__ */ diff --git a/hardware/mpp/include/mpp_time.h b/hardware/mpp/include/mpp_time.h deleted file mode 100644 index 0ef1c07cddbbab49916923d06fe9879992691b93..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_time.h +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_TIME_H__ -#define __MPP_TIME_H__ - -#include "rk_type.h" -#include "mpp_thread.h" - -#if defined(_WIN32) && !defined(__MINGW32CE__) -#include -#define msleep Sleep -#define sleep(x) Sleep((x)*1000) -#else -#include -#define msleep(x) usleep((x)*1000) -#endif - -typedef void* MppClock; -typedef void* MppTimer; -typedef void* MppStopwatch; - -#ifdef __cplusplus -extern "C" { -#endif - -RK_S64 mpp_time(void); -void mpp_time_diff(RK_S64 start, RK_S64 end, RK_S64 limit, const char *fmt); - -/* - * Clock create / destroy / enable / disable function - * Note when clock is create it is default disabled user need to call enable - * fucntion with enable = 1 to enable the clock. - * User can use enable function with enable = 0 to disable the clock. - */ -MppClock mpp_clock_get(const char *name); -void mpp_clock_put(MppClock clock); -void mpp_clock_enable(MppClock clock, RK_U32 enable); - -/* - * Clock basic operation function - * start : let clock start timing counter - * pause : let clock pause and return the diff to start time - * reset : let clock counter to all zero - */ -RK_S64 mpp_clock_start(MppClock clock); -RK_S64 mpp_clock_pause(MppClock clock); -RK_S64 mpp_clock_reset(MppClock clock); - -/* - * These clock helper function can only be call when clock is paused: - * mpp_clock_get_sum - Return clock sum up total value - * mpp_clock_get_count - Return clock sum up counter value - * mpp_clock_get_name - Return clock name - */ -RK_S64 mpp_clock_get_sum(MppClock clock); -RK_S64 mpp_clock_get_count(MppClock clock); -const char *mpp_clock_get_name(MppClock clock); - -/* - * MppTimer is for timer with callback function - * It will provide the ability to repeat doing something until it is - * disalble or put. - * - * Timer work flow - * - * 1. mpp_timer_get - * 2. mpp_timer_set_callback - * 3. mpp_timer_set_timing(initial, interval) - * 4. mpp_timer_set_enable(initial, 1) - * ... running ... - * 5. mpp_timer_set_enable(initial, 0) - * 6. mpp_timer_put - */ -MppTimer mpp_timer_get(const char *name); -void mpp_timer_set_callback(MppTimer timer, MppThreadFunc func, void *ctx); -void mpp_timer_set_timing(MppTimer timer, RK_S32 initial, RK_S32 interval); -void mpp_timer_set_enable(MppTimer timer, RK_S32 enable); -void mpp_timer_put(MppTimer timer); - -/* - * MppStopwatch is for timer to record event and time - * - * Stopwatch work flow - * - * 1. mpp_stopwatch_get - * 2. mpp_stopwatch_setup(max_count, show_on_exit) - * 3. mpp_stopwatch_record(event) - * ... running ... - * 4. mpp_stopwatch_record(event) - * 5. mpp_stopwatch_put (show events and time) - */ -MppStopwatch mpp_stopwatch_get(const char *name); -void mpp_stopwatch_set_show_on_exit(MppStopwatch stopwatch, RK_S32 show_on_exit); -void mpp_stopwatch_record(MppStopwatch stopwatch, const char *event); -void mpp_stopwatch_put(MppStopwatch timer); -RK_S64 mpp_stopwatch_elapsed_time(MppStopwatch stopwatch); - -#ifdef __cplusplus -} -#endif - -#ifdef __cplusplus -class mpp_time { -public: - mpp_time(const char *name = __FUNCTION__); - ~mpp_time(); -private: - const char *mName; - RK_S64 mStart; - RK_S64 mEnd; - - mpp_time(const AutoTiming &); - mpp_time &operator = (const AutoTiming&); -}; - -#endif - -#define AUTO_TIMER_STRING(name, cnt) name ## cnt -#define AUTO_TIMER_NAME_STRING(name, cnt) AUTO_TIMER_STRING(name, cnt) -#define AUTO_TIMER_NAME(name) AUTO_TIMER_NAME_STRING(name, __COUNTER__) -#define AUTO_TIMING() AutoTiming AUTO_TIMER_NAME(auto_timing)(__FUNCTION__) - -#endif /* __MPP_TIME_H__ */ diff --git a/hardware/mpp/include/mpp_trace.h b/hardware/mpp/include/mpp_trace.h deleted file mode 100644 index a65a98ac49ea6dfb35ed3cc6aaff8a5bd0d46395..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/mpp_trace.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __MPP_TRACE_H__ -#define __MPP_TRACE_H__ - -#include "rk_type.h" - -#ifdef __cplusplus -extern "C" { -#endif - -void mpp_trace_begin(const char* name); -void mpp_trace_end(const char* name); -void mpp_trace_async_begin(const char* name, RK_S32 cookie); -void mpp_trace_async_end(const char* name, RK_S32 cookie); -void mpp_trace_int32(const char* name, RK_S32 value); -void mpp_trace_int64(const char* name, RK_S64 value); - -#ifdef __cplusplus -} -#endif - -#endif /* __MPP_TRACE_H__ */ \ No newline at end of file diff --git a/hardware/mpp/include/osal_2str.h b/hardware/mpp/include/osal_2str.h deleted file mode 100644 index b9084563726887b711ddc7a477c044eb2735f3ce..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/osal_2str.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __OSAL_2STR_H__ -#define __OSAL_2STR_H__ - -#include "mpp_dev_defs.h" - -#ifdef __cplusplus -extern "C" { -#endif - -const char *strof_client_type(MppClientType type); - -#ifdef __cplusplus -} -#endif - -#endif \ No newline at end of file diff --git a/hardware/mpp/include/rk_mpi.h b/hardware/mpp/include/rk_mpi.h deleted file mode 100644 index 0429f69fa62e5a29af6679cc28930da6dfdb1276..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/rk_mpi.h +++ /dev/null @@ -1,300 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __RK_MPI_H__ -#define __RK_MPI_H__ - -/** - * @addtogroup rk_mpi - * @brief Rockchip Media Process Interface - * @details Media Process Platform(MPP) provides application programming - * interface for the application layer, by which applications can - * call hardware encode and decode. Current MPP fully supports - * chipset RK3288/RK3228/RK3229/RK3399/RK3328/RV1108. Old chipset - * like RK29xx/RK30xx/RK31XX/RK3368 is partly supported due to lack - * of some hardware register generation module. - */ - -#include "rk_mpi_cmd.h" -#include "mpp_task.h" - -/** - * @ingroup rk_mpi - * @brief MPP main work function set - * @details all api function are seperated into two sets: data io api set - * and control api set - * - * (1). the data api set is for data input/output flow including: - * - * (1.1) simple data api set: - * - * decode : both send video stream packet to decoder and get video frame from - * decoder at the same time. - * - * encode : both send video frame to encoder and get encoded video stream from - * encoder at the same time. - * - * decode_put_packet: send video stream packet to decoder only, async interface - * - * decode_get_frame : get video frame from decoder only, async interface - * - * encode_put_frame : send video frame to encoder only, async interface - * - * encode_get_packet: get encoded video packet from encoder only, async interface - * - * (1.2) advanced task api set: - * - * poll : poll port for dequeue - * - * dequeue : pop a task from mpp task queue - * - * enqueue : push a task to mpp task queue - * - * (2). the control api set is for mpp context control including: - * - * control : similiar to ioctl in kernel driver, setup or get mpp internal parameter - * - * reset : clear all data in mpp context, discard all packet and frame, - * reset all components to initialized status - */ -typedef struct MppApi_t { - /** - * @brief size of struct MppApi - */ - RK_U32 size; - /** - * @brief mpp api version, generated by Git - */ - RK_U32 version; - - // simple data flow interface - /** - * @brief both send video stream packet to decoder and get video frame from - * decoder at the same time - * @param[in] ctx The context of mpp, created by mpp_create() and initiated - * by mpp_init(). - * @param[in] packet The input video stream, its usage can refer mpp_packet.h. - * @param[out] frame The output picture, its usage can refer mpp_frame.h. - * @return 0 and positive for success, negative for failure. The return - * value is an error code. For details, please refer mpp_err.h. - */ - MPP_RET (*decode)(MppCtx ctx, MppPacket packet, MppFrame *frame); - /** - * @brief send video stream packet to decoder only, async interface - * @param[in] ctx The context of mpp, created by mpp_create() and initiated - * by mpp_init(). - * @param[in] packet The input video stream, its usage can refer mpp_packet.h. - * @return 0 and positive for success, negative for failure. The return - * value is an error code. For details, please refer mpp_err.h. - */ - MPP_RET (*decode_put_packet)(MppCtx ctx, MppPacket packet); - /** - * @brief get video frame from decoder only, async interface - * @param[in] ctx The context of mpp, created by mpp_create() and initiated - * by mpp_init(). - * @param[out] frame The output picture, its usage can refer mpp_frame.h. - * @return 0 and positive for success, negative for failure. The return - * value is an error code. For details, please refer mpp_err.h. - */ - MPP_RET (*decode_get_frame)(MppCtx ctx, MppFrame *frame); - /** - * @brief both send video frame to encoder and get encoded video stream from - * encoder at the same time - * @param[in] ctx The context of mpp, created by mpp_create() and initiated - * by mpp_init(). - * @param[in] frame The input video data, its usage can refer mpp_frame.h. - * @param[out] packet The output compressed data, its usage can refer mpp_packet.h. - * @return 0 and positive for success, negative for failure. The return - * value is an error code. For details, please refer mpp_err.h. - */ - MPP_RET (*encode)(MppCtx ctx, MppFrame frame, MppPacket *packet); - /** - * @brief send video frame to encoder only, async interface - * @param[in] ctx The context of mpp, created by mpp_create() and initiated - * by mpp_init(). - * @param[in] frame The input video data, its usage can refer mpp_frame.h. - * @return 0 and positive for success, negative for failure. The return - * value is an error code. For details, please refer mpp_err.h. - */ - MPP_RET (*encode_put_frame)(MppCtx ctx, MppFrame frame); - /** - * @brief get encoded video packet from encoder only, async interface - * @param[in] ctx The context of mpp, created by mpp_create() and initiated - * by mpp_init(). - * @param[out] packet The output compressed data, its usage can refer mpp_packet.h. - * @return 0 and positive for success, negative for failure. The return - * value is an error code. For details, please refer mpp_err.h. - */ - MPP_RET (*encode_get_packet)(MppCtx ctx, MppPacket *packet); - - /** - * @brief ISP interface, will be supported in the future. - */ - MPP_RET (*isp)(MppCtx ctx, MppFrame dst, MppFrame src); - /** - * @brief ISP interface, will be supported in the future. - */ - MPP_RET (*isp_put_frame)(MppCtx ctx, MppFrame frame); - /** - * @brief ISP interface, will be supported in the future. - */ - MPP_RET (*isp_get_frame)(MppCtx ctx, MppFrame *frame); - - // advance data flow interface - /** - * @brief poll port for dequeue - * @param[in] ctx The context of mpp, created by mpp_create() and initiated - * by mpp_init(). - * @param[in] type input port or output port which are both for data transaction - * @param[in] timeout mpp poll type, its usage can refer mpp_task.h. - * @return 0 and positive for success, negative for failure. The return - * value is an error code. For details, please refer mpp_err.h. - */ - MPP_RET (*poll)(MppCtx ctx, MppPortType type, MppPollType timeout); - /** - * @brief dequeue MppTask, pop a task from mpp task queue - * @param[in] ctx The context of mpp, created by mpp_create() and initiated - * by mpp_init(). - * @param[in] type input port or output port which are both for data transaction - * @param[out] task MppTask popped from mpp task queue, its usage can refer mpp_task.h. - * @return 0 and positive for success, negative for failure. The return - * value is an error code. For details, please refer mpp_err.h. - */ - MPP_RET (*dequeue)(MppCtx ctx, MppPortType type, MppTask *task); - /** - * @brief enqueue MppTask, push a task to mpp task queue - * @param[in] ctx The context of mpp, created by mpp_create() and initiated - * by mpp_init(). - * @param[in] type input port or output port which are both for data transaction - * @param[in] task MppTask which is sent to mpp for process, its usage can refer mpp_task.h. - * @return 0 and positive for success, negative for failure. The return - * value is an error code. For details, please refer mpp_err.h. - */ - MPP_RET (*enqueue)(MppCtx ctx, MppPortType type, MppTask task); - - // control interface - /** - * @brief discard all packet and frame, reset all component, - * for both decoder and encoder - * @param[in] ctx The context of mpp, created by mpp_create() and initiated - * by mpp_init(). - * @return 0 for success, others for failure. The return value is an - * error code. For details, please refer mpp_err.h. - */ - MPP_RET (*reset)(MppCtx ctx); - /** - * @brief control function for mpp property setting - * @param[in] ctx The context of mpp, created by mpp_create() and initiated - * by mpp_init(). - * @param[in] cmd The mpi command, its definition can refer rk_mpi_cmd.h. - * @param[in,out] param The mpi command parameter - * @return 0 for success, others for failure. The return value is an - * error code. For details, please refer mpp_err.h. - */ - MPP_RET (*control)(MppCtx ctx, MpiCmd cmd, MppParam param); - - /** - * @brief The reserved segment, may be used in the future - */ - RK_U32 reserv[16]; -} MppApi; - - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @ingroup rk_mpi - * @brief Create empty context structure and mpi function pointers. - * Use functions in MppApi to access mpp services. - * @param[in,out] ctx pointer of the mpp context, refer to MpiImpl_t. - * @param[in,out] mpi pointer of mpi function, refer to MppApi. - * @return 0 for success, others for failure. The return value is an - * error code. For details, please refer mpp_err.h. - * @note This interface creates base flow context, all function calls - * are based on it. - */ -MPP_RET mpp_create(MppCtx *ctx, MppApi **mpi); -/** - * @ingroup rk_mpi - * @brief Call after mpp_create to setup mpp type and video format. - * This function will call internal context init function. - * @param[in] ctx The context of mpp, created by mpp_create(). - * @param[in] type specify decoder or encoder, refer to MppCtxType. - * @param[in] coding specify video compression coding, refer to MppCodingType. - * @return 0 for success, others for failure. The return value is an - * error code. For details, please refer mpp_err.h. - */ -MPP_RET mpp_init(MppCtx ctx, MppCtxType type, MppCodingType coding); -/** - * @ingroup rk_mpi - * @brief Call after mpp_init to start mpp working. - * Control SET_CFG can be called both before and after mpp_start. - * Before mpp_start is called both global param and dynamic param can be set. - * After mpp_start is called only dynamic param can be set. - * This funciton purpose is to stop recieving global param and do - * preparation for processing data flow. - * This function will call internal context start function. - * @param[in] ctx The context of mpp, created by mpp_create(). - * @return 0 for success, others for failure. The return value is an - * error code. For details, please refer mpp_err.h. - */ -MPP_RET mpp_start(MppCtx ctx); -/** - * @ingroup rk_mpi - * @brief Call before mpp_destroy to stop mpp working. - * Control SET_CFG can be called after starting. - * Before mpp_stop is called only dynamic param can be set. - * After mpp_stop is called both global param and dynamic param can be set. - * This funciton purpose is to stop processing data and do preparation - * to receive global param. - * @param[in] ctx The context of mpp, created by mpp_create(). - * @return 0 for success, others for failure. The return value is an - * error code. For details, please refer mpp_err.h. - */ -MPP_RET mpp_stop(MppCtx ctx); -/** - * @ingroup rk_mpi - * @brief Destroy mpp context and free both context and mpi structure, - * it matches with mpp_init(). - * @param[in] ctx The context of mpp, created by mpp_create(). - * @return 0 for success, others for failure. The return value is an - * error code. For details, please refer mpp_err.h. - */ -MPP_RET mpp_destroy(MppCtx ctx); -/** - * @ingroup rk_mpi - * @brief judge given format is supported or not by MPP. - * @param[in] type specify decoder or encoder, refer to MppCtxType. - * @param[in] coding specify video compression coding, refer to MppCodingType. - * @return 0 for support, -1 for unsupported. - */ -MPP_RET mpp_check_support_format(MppCtxType type, MppCodingType coding); -/** - * @ingroup rk_mpi - * @brief List all formats supported by MPP - * @param NULL no need to input parameter - * @return No return value. This function just prints format information supported - * by MPP on standard output. - */ -void mpp_show_support_format(void); -void mpp_show_color_format(void); - -#ifdef __cplusplus -} -#endif - -#endif /* __RK_MPI_H__ */ \ No newline at end of file diff --git a/hardware/mpp/include/rk_mpi_cmd.h b/hardware/mpp/include/rk_mpi_cmd.h deleted file mode 100644 index 09a45529f69ab221ba314b9a016a9a7bbbe3fba6..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/rk_mpi_cmd.h +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __RK_MPI_CMD_H__ -#define __RK_MPI_CMD_H__ - -/* - * Command id bit usage is defined as follows: - * bit 20 - 23 - module id - * bit 16 - 19 - contex id - * bit 0 - 15 - command id - */ -#define CMD_MODULE_ID_MASK (0x00F00000) -#define CMD_MODULE_OSAL (0x00100000) -#define CMD_MODULE_MPP (0x00200000) -#define CMD_MODULE_CODEC (0x00300000) -#define CMD_MODULE_HAL (0x00400000) - -#define CMD_CTX_ID_MASK (0x000F0000) -#define CMD_CTX_ID_DEC (0x00010000) -#define CMD_CTX_ID_ENC (0x00020000) -#define CMD_CTX_ID_ISP (0x00030000) - -/* separate encoder / decoder control command to different segment */ -#define CMD_CFG_ID_MASK (0x0000FF00) - -/* decoder control command */ -#define CMD_DEC_CFG_ALL (0x00000000) -#define CMD_DEC_QUERY (0x00000100) -#define CMD_DEC_CFG (0x00000200) - -/* encoder control command */ -#define CMD_ENC_CFG_ALL (0x00000000) -#define CMD_ENC_CFG_RC_API (0x00000100) - -#define CMD_ENC_CFG_MISC (0x00008000) -#define CMD_ENC_CFG_SPLIT (0x00008100) -#define CMD_ENC_CFG_REF (0x00008200) -#define CMD_ENC_CFG_ROI (0x00008300) -#define CMD_ENC_CFG_OSD (0x00008400) - -typedef enum { - MPP_OSAL_CMD_BASE = CMD_MODULE_OSAL, - MPP_OSAL_CMD_END, - - MPP_CMD_BASE = CMD_MODULE_MPP, - MPP_ENABLE_DEINTERLACE, - MPP_SET_INPUT_BLOCK, /* deprecated */ - MPP_SET_INTPUT_BLOCK_TIMEOUT, /* deprecated */ - MPP_SET_OUTPUT_BLOCK, /* deprecated */ - MPP_SET_OUTPUT_BLOCK_TIMEOUT, /* deprecated */ - /* - * timeout setup, refer to MPP_TIMEOUT_XXX - * zero - non block - * negative - block with no timeout - * positive - timeout in milisecond - */ - MPP_SET_INPUT_TIMEOUT, /* parameter type RK_S64 */ - MPP_SET_OUTPUT_TIMEOUT, /* parameter type RK_S64 */ - MPP_CMD_END, - - MPP_CODEC_CMD_BASE = CMD_MODULE_CODEC, - MPP_CODEC_GET_FRAME_INFO, - MPP_CODEC_CMD_END, - - MPP_DEC_CMD_BASE = CMD_MODULE_CODEC | CMD_CTX_ID_DEC, - MPP_DEC_SET_FRAME_INFO, /* vpu api legacy control for buffer slot dimension init */ - MPP_DEC_SET_EXT_BUF_GROUP, /* IMPORTANT: set external buffer group to mpp decoder */ - MPP_DEC_SET_INFO_CHANGE_READY, - MPP_DEC_SET_PRESENT_TIME_ORDER, /* use input time order for output */ - MPP_DEC_SET_PARSER_SPLIT_MODE, /* Need to setup before init */ - MPP_DEC_SET_PARSER_FAST_MODE, /* Need to setup before init */ - MPP_DEC_GET_STREAM_COUNT, - MPP_DEC_GET_VPUMEM_USED_COUNT, - MPP_DEC_SET_VC1_EXTRA_DATA, - MPP_DEC_SET_OUTPUT_FORMAT, - MPP_DEC_SET_DISABLE_ERROR, /* When set it will disable sw/hw error (H.264 / H.265) */ - MPP_DEC_SET_IMMEDIATE_OUT, - MPP_DEC_SET_ENABLE_DEINTERLACE, /* MPP enable deinterlace by default. Vpuapi can disable it */ - - MPP_DEC_CMD_QUERY = CMD_MODULE_CODEC | CMD_CTX_ID_DEC | CMD_DEC_QUERY, - /* query decoder runtime information for decode stage */ - MPP_DEC_QUERY, /* set and get MppDecQueryCfg structure */ - - CMD_DEC_CMD_CFG = CMD_MODULE_CODEC | CMD_CTX_ID_DEC | CMD_DEC_CFG, - MPP_DEC_SET_CFG, /* set MppDecCfg structure */ - MPP_DEC_GET_CFG, /* get MppDecCfg structure */ - - MPP_DEC_CMD_END, - - MPP_ENC_CMD_BASE = CMD_MODULE_CODEC | CMD_CTX_ID_ENC, - /* basic encoder setup control */ - MPP_ENC_SET_CFG, /* set MppEncCfg structure */ - MPP_ENC_GET_CFG, /* get MppEncCfg structure */ - MPP_ENC_SET_PREP_CFG, /* deprecated set MppEncPrepCfg structure, use MPP_ENC_SET_CFG instead */ - MPP_ENC_GET_PREP_CFG, /* deprecated get MppEncPrepCfg structure, use MPP_ENC_GET_CFG instead */ - MPP_ENC_SET_RC_CFG, /* deprecated set MppEncRcCfg structure, use MPP_ENC_SET_CFG instead */ - MPP_ENC_GET_RC_CFG, /* deprecated get MppEncRcCfg structure, use MPP_ENC_GET_CFG instead */ - MPP_ENC_SET_CODEC_CFG, /* deprecated set MppEncCodecCfg structure, use MPP_ENC_SET_CFG instead */ - MPP_ENC_GET_CODEC_CFG, /* deprecated get MppEncCodecCfg structure, use MPP_ENC_GET_CFG instead */ - /* runtime encoder setup control */ - MPP_ENC_SET_IDR_FRAME, /* next frame will be encoded as intra frame */ - MPP_ENC_SET_OSD_LEGACY_0, /* deprecated */ - MPP_ENC_SET_OSD_LEGACY_1, /* deprecated */ - MPP_ENC_SET_OSD_LEGACY_2, /* deprecated */ - MPP_ENC_GET_HDR_SYNC, /* get vps / sps / pps which has better sync behavior parameter is MppPacket */ - MPP_ENC_GET_EXTRA_INFO, /* deprecated */ - MPP_ENC_SET_SEI_CFG, /* SEI: Supplement Enhancemant Information, parameter is MppSeiMode */ - MPP_ENC_GET_SEI_DATA, /* SEI: Supplement Enhancemant Information, parameter is MppPacket */ - MPP_ENC_PRE_ALLOC_BUFF, /* deprecated */ - MPP_ENC_SET_QP_RANGE, /* used for adjusting qp range, the parameter can be 1 or 2 */ - MPP_ENC_SET_ROI_CFG, /* set MppEncROICfg structure */ - MPP_ENC_SET_CTU_QP, /* for H265 Encoder,set CTU's size and QP */ - - /* User define rate control stategy API control */ - MPP_ENC_CFG_RC_API = CMD_MODULE_CODEC | CMD_CTX_ID_ENC | CMD_ENC_CFG_RC_API, - /* - * Get RcApiQueryAll structure - * Get all available rate control stategy string and count - */ - MPP_ENC_GET_RC_API_ALL = MPP_ENC_CFG_RC_API + 1, - /* - * Get RcApiQueryType structure - * Get available rate control stategy string with certain type - */ - MPP_ENC_GET_RC_API_BY_TYPE = MPP_ENC_CFG_RC_API + 2, - /* - * Set RcImplApi structure - * Add new or update rate control stategy function pointers - */ - MPP_ENC_SET_RC_API_CFG = MPP_ENC_CFG_RC_API + 3, - /* - * Get RcApiBrief structure - * Get current used rate control stategy brief information (type and name) - */ - MPP_ENC_GET_RC_API_CURRENT = MPP_ENC_CFG_RC_API + 4, - /* - * Set RcApiBrief structure - * Set current used rate control stategy brief information (type and name) - */ - MPP_ENC_SET_RC_API_CURRENT = MPP_ENC_CFG_RC_API + 5, - - MPP_ENC_CFG_MISC = CMD_MODULE_CODEC | CMD_CTX_ID_ENC | CMD_ENC_CFG_MISC, - /* set MppEncHeaderMode */ - MPP_ENC_SET_HEADER_MODE, - /* get MppEncHeaderMode */ - MPP_ENC_GET_HEADER_MODE, - - MPP_ENC_CFG_SPLIT = CMD_MODULE_CODEC | CMD_CTX_ID_ENC | CMD_ENC_CFG_SPLIT, - /* set MppEncSliceSplit structure */ - MPP_ENC_SET_SPLIT, - /* get MppEncSliceSplit structure */ - MPP_ENC_GET_SPLIT, - - MPP_ENC_CFG_REF = CMD_MODULE_CODEC | CMD_CTX_ID_ENC | CMD_ENC_CFG_REF, - /* set MppEncRefCfg structure */ - MPP_ENC_SET_REF_CFG, - - MPP_ENC_CFG_OSD = CMD_MODULE_CODEC | CMD_CTX_ID_ENC | CMD_ENC_CFG_OSD, - /* set OSD palette, parameter should be pointer to MppEncOSDPltCfg */ - MPP_ENC_SET_OSD_PLT_CFG, - /* get OSD palette, parameter should be pointer to MppEncOSDPltCfg */ - MPP_ENC_GET_OSD_PLT_CFG, - /* set OSD data with at most 8 regions, parameter should be pointer to MppEncOSDData */ - MPP_ENC_SET_OSD_DATA_CFG, - - MPP_ENC_CMD_END, - - MPP_ISP_CMD_BASE = CMD_MODULE_CODEC | CMD_CTX_ID_ISP, - MPP_ISP_CMD_END, - - MPP_HAL_CMD_BASE = CMD_MODULE_HAL, - MPP_HAL_CMD_END, - - MPI_CMD_BUTT, -} MpiCmd; - -#include "rk_vdec_cmd.h" -#include "rk_vdec_cfg.h" -#include "rk_venc_cmd.h" -#include "rk_venc_cfg.h" -#include "rk_venc_ref.h" - -#endif /* __RK_MPI_CMD_H__ */ diff --git a/hardware/mpp/include/rk_type.h b/hardware/mpp/include/rk_type.h deleted file mode 100644 index 9adf3d0d987e494e73bee3bb4f612bbf98bf524e..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/rk_type.h +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __RK_TYPE_H__ -#define __RK_TYPE_H__ - -#include - -#if defined(_WIN32) && !defined(__MINGW32CE__) - -typedef unsigned char RK_U8; -typedef unsigned short RK_U16; -typedef unsigned int RK_U32; -typedef unsigned long RK_ULONG; -typedef unsigned __int64 RK_U64; - -typedef signed char RK_S8; -typedef signed short RK_S16; -typedef signed int RK_S32; -typedef signed long RK_LONG; -typedef signed __int64 RK_S64; - -#else - -typedef unsigned char RK_U8; -typedef unsigned short RK_U16; -typedef unsigned int RK_U32; -typedef unsigned long RK_ULONG; -typedef unsigned long long int RK_U64; - - -typedef signed char RK_S8; -typedef signed short RK_S16; -typedef signed int RK_S32; -typedef signed long RK_LONG; -typedef signed long long int RK_S64; - -#endif - -#ifndef MODULE_TAG -#define MODULE_TAG NULL -#endif - -/** - * @ingroup rk_mpi - * @brief The type of mpp context - * @details This type is used when calling mpp_init(), which including decoder, - * encoder and Image Signal Process(ISP). So far decoder and encoder - * are supported perfectly, and ISP will be supported in the future. - */ -typedef enum { - MPP_CTX_DEC, /**< decoder */ - MPP_CTX_ENC, /**< encoder */ - MPP_CTX_ISP, /**< isp */ - MPP_CTX_BUTT, /**< undefined */ -} MppCtxType; - -/** - * @ingroup rk_mpi - * @brief Enumeration used to define the possible video compression codings. - * sync with the omx_video.h - * - * @note This essentially refers to file extensions. If the coding is - * being used to specify the ENCODE type, then additional work - * must be done to configure the exact flavor of the compression - * to be used. For decode cases where the user application can - * not differentiate between MPEG-4 and H.264 bit streams, it is - * up to the codec to handle this. - */ -typedef enum { - MPP_VIDEO_CodingUnused, /**< Value when coding is N/A */ - MPP_VIDEO_CodingAutoDetect, /**< Autodetection of coding type */ - MPP_VIDEO_CodingMPEG2, /**< AKA: H.262 */ - MPP_VIDEO_CodingH263, /**< H.263 */ - MPP_VIDEO_CodingMPEG4, /**< MPEG-4 */ - MPP_VIDEO_CodingWMV, /**< Windows Media Video (WMV1,WMV2,WMV3)*/ - MPP_VIDEO_CodingRV, /**< all versions of Real Video */ - MPP_VIDEO_CodingAVC, /**< H.264/AVC */ - MPP_VIDEO_CodingMJPEG, /**< Motion JPEG */ - MPP_VIDEO_CodingVP8, /**< VP8 */ - MPP_VIDEO_CodingVP9, /**< VP9 */ - MPP_VIDEO_CodingVC1 = 0x01000000, /**< Windows Media Video (WMV1,WMV2,WMV3)*/ - MPP_VIDEO_CodingFLV1, /**< Sorenson H.263 */ - MPP_VIDEO_CodingDIVX3, /**< DIVX3 */ - MPP_VIDEO_CodingVP6, - MPP_VIDEO_CodingHEVC, /**< H.265/HEVC */ - MPP_VIDEO_CodingAVSPLUS, /**< AVS+ */ - MPP_VIDEO_CodingAVS, /**< AVS profile=0x20 */ - MPP_VIDEO_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - MPP_VIDEO_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - MPP_VIDEO_CodingMax = 0x7FFFFFFF -} MppCodingType; - -/* - * All external interface object list here. - * The interface object is defined as void * for expandability - * The cross include between these objects will introduce extra - * compiling difficulty. So we move them together in this header. - * - * Object interface header list: - * - * MppCtx - rk_mpi.h - * MppParam - rk_mpi.h - * - * MppFrame - mpp_frame.h - * MppPacket - mpp_packet.h - * - * MppBuffer - mpp_buffer.h - * MppBufferGroup - mpp_buffer.h - * - * MppTask - mpp_task.h - * MppMeta - mpp_meta.h - */ - -typedef void* MppCtx; -typedef void* MppParam; - -typedef void* MppFrame; -typedef void* MppPacket; - -typedef void* MppBuffer; -typedef void* MppBufferGroup; - -typedef void* MppTask; -typedef void* MppMeta; - -#endif /* __RK_TYPE_H__ */ \ No newline at end of file diff --git a/hardware/mpp/include/rk_vdec_cfg.h b/hardware/mpp/include/rk_vdec_cfg.h deleted file mode 100644 index a9b772d2e15ec26b3776a41430e7417909e1623e..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/rk_vdec_cfg.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __RK_VDEC_CFG_H__ -#define __RK_VDEC_CFG_H__ - -#include "rk_type.h" -#include "mpp_err.h" - -typedef void* MppDecCfg; - -#ifdef __cplusplus -extern "C" { -#endif - -MPP_RET mpp_dec_cfg_init(MppDecCfg *cfg); -MPP_RET mpp_dec_cfg_deinit(MppDecCfg cfg); - -MPP_RET mpp_dec_cfg_set_s32(MppDecCfg cfg, const char *name, RK_S32 val); -MPP_RET mpp_dec_cfg_set_u32(MppDecCfg cfg, const char *name, RK_U32 val); -MPP_RET mpp_dec_cfg_set_s64(MppDecCfg cfg, const char *name, RK_S64 val); -MPP_RET mpp_dec_cfg_set_u64(MppDecCfg cfg, const char *name, RK_U64 val); -MPP_RET mpp_dec_cfg_set_ptr(MppDecCfg cfg, const char *name, void *val); - -MPP_RET mpp_dec_cfg_get_s32(MppDecCfg cfg, const char *name, RK_S32 *val); -MPP_RET mpp_dec_cfg_get_u32(MppDecCfg cfg, const char *name, RK_U32 *val); -MPP_RET mpp_dec_cfg_get_s64(MppDecCfg cfg, const char *name, RK_S64 *val); -MPP_RET mpp_dec_cfg_get_u64(MppDecCfg cfg, const char *name, RK_U64 *val); -MPP_RET mpp_dec_cfg_get_ptr(MppDecCfg cfg, const char *name, void **val); - -void mpp_dec_cfg_show(void); - -#ifdef __cplusplus -} -#endif - -#endif /* __RK_VDEC_CFG_H__ */ \ No newline at end of file diff --git a/hardware/mpp/include/rk_vdec_cmd.h b/hardware/mpp/include/rk_vdec_cmd.h deleted file mode 100644 index f34dab6555b42e364d449761a81973b0ac18565c..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/rk_vdec_cmd.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __RK_VDEC_CMD_H__ -#define __RK_VDEC_CMD_H__ - -#include "rk_type.h" - -/* - * decoder query interface is only for debug usage - */ -#define MPP_DEC_QUERY_STATUS (0x00000001) -#define MPP_DEC_QUERY_WAIT (0x00000002) -#define MPP_DEC_QUERY_FPS (0x00000004) -#define MPP_DEC_QUERY_BPS (0x00000008) -#define MPP_DEC_QUERY_DEC_IN_PKT (0x00000010) -#define MPP_DEC_QUERY_DEC_WORK (0x00000020) -#define MPP_DEC_QUERY_DEC_OUT_FRM (0x00000040) - -#define MPP_DEC_QUERY_ALL (MPP_DEC_QUERY_STATUS | \ - MPP_DEC_QUERY_WAIT | \ - MPP_DEC_QUERY_FPS | \ - MPP_DEC_QUERY_BPS | \ - MPP_DEC_QUERY_DEC_IN_PKT | \ - MPP_DEC_QUERY_DEC_WORK | \ - MPP_DEC_QUERY_DEC_OUT_FRM) - -typedef struct MppDecQueryCfg_t { - /* - * 32 bit query flag for query data check - * Each bit represent a query data switch. - * bit 0 - for querying decoder runtime status - * bit 1 - for querying decoder runtime waiting status - * bit 2 - for querying decoder realtime decode fps - * bit 3 - for querying decoder realtime input bps - * bit 4 - for querying decoder input packet count - * bit 5 - for querying decoder start hardware times - * bit 6 - for querying decoder output frame count - */ - RK_U32 query_flag; - - /* 64 bit query data output */ - RK_U32 rt_status; - RK_U32 rt_wait; - RK_U32 rt_fps; - RK_U32 rt_bps; - RK_U32 dec_in_pkt_cnt; - RK_U32 dec_hw_run_cnt; - RK_U32 dec_out_frm_cnt; -} MppDecQueryCfg; - -#endif /* __RK_VDEC_CMD_H__ */ \ No newline at end of file diff --git a/hardware/mpp/include/rk_venc_cfg.h b/hardware/mpp/include/rk_venc_cfg.h deleted file mode 100644 index c81ef8123693783ab1661013f6a50340d0766113..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/rk_venc_cfg.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __RK_VENC_CFG_H__ -#define __RK_VENC_CFG_H__ - -#include "rk_type.h" -#include "mpp_err.h" - -typedef void* MppEncCfg; - -#ifdef __cplusplus -extern "C" { -#endif - -MPP_RET mpp_enc_cfg_init(MppEncCfg *cfg); -MPP_RET mpp_enc_cfg_deinit(MppEncCfg cfg); - -MPP_RET mpp_enc_cfg_set_s32(MppEncCfg cfg, const char *name, RK_S32 val); -MPP_RET mpp_enc_cfg_set_u32(MppEncCfg cfg, const char *name, RK_U32 val); -MPP_RET mpp_enc_cfg_set_s64(MppEncCfg cfg, const char *name, RK_S64 val); -MPP_RET mpp_enc_cfg_set_u64(MppEncCfg cfg, const char *name, RK_U64 val); -MPP_RET mpp_enc_cfg_set_ptr(MppEncCfg cfg, const char *name, void *val); -MPP_RET mpp_enc_cfg_set_st(MppEncCfg cfg, const char *name, void *val); - -MPP_RET mpp_enc_cfg_get_s32(MppEncCfg cfg, const char *name, RK_S32 *val); -MPP_RET mpp_enc_cfg_get_u32(MppEncCfg cfg, const char *name, RK_U32 *val); -MPP_RET mpp_enc_cfg_get_s64(MppEncCfg cfg, const char *name, RK_S64 *val); -MPP_RET mpp_enc_cfg_get_u64(MppEncCfg cfg, const char *name, RK_U64 *val); -MPP_RET mpp_enc_cfg_get_ptr(MppEncCfg cfg, const char *name, void **val); -MPP_RET mpp_enc_cfg_get_st(MppEncCfg cfg, const char *name, void *val); - -void mpp_enc_cfg_show(void); - -#ifdef __cplusplus -} -#endif - -#endif /* __RK_VENC_CFG_H__ */ \ No newline at end of file diff --git a/hardware/mpp/include/rk_venc_cmd.h b/hardware/mpp/include/rk_venc_cmd.h deleted file mode 100644 index ee2594a91527ee8c0d7b003595174f25427c5a8e..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/rk_venc_cmd.h +++ /dev/null @@ -1,1215 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __RK_VENC_CMD_H__ -#define __RK_VENC_CMD_H__ - -#include "mpp_frame.h" -#include "rk_venc_rc.h" - -/* - * Configure of encoder is very complicated. So we divide configures into - * four parts: - * - * 1. Rate control parameter - * This is quality and bitrate request from user. - * - * 2. Data source MppFrame parameter - * This is data source buffer information. - * Now it is PreP config - * PreP : Encoder Preprocess configuration - * - * 3. Video codec infomation - * This is user custormized stream information. - * including: - * H.264 / H.265 / vp8 / mjpeg - * - * 4. Misc parameter - * including: - * Split : Slice split configuration - * GopRef: Reference gop configuration - * ROI : Region Of Interest - * OSD : On Screen Display - * MD : Motion Detection - * - * The module transcation flow is as follows: - * - * + + - * User | Mpi/Mpp | EncImpl - * | | Hal - * | | - * +----------+ | +---------+ | +-----------+ - * | | | | +-----RcCfg-----> | - * | RcCfg +---------> | | | EncImpl | - * | | | | | +-Frame-----> | - * +----------+ | | | | | +--+-----^--+ - * | | | | | | | - * | | | | | | | - * +----------+ | | | | | syntax | - * | | | | | | | | | - * | MppFrame +---------> MppEnc +---+ | | result - * | | | | | | | | | - * +----------+ | | | | | | | - * | | | | | +--v-----+--+ - * | | | +-Frame-----> | - * +----------+ | | | | | | - * | | | | +---CodecCfg----> Hal | - * | CodecCfg +---------> | | | | - * | | | | <-----Extra-----> | - * +----------+ | +---------+ | +-----------+ - * | | - * | | - * + + - * - * The function call flow is shown below: - * - * mpi mpp_enc controller hal - * + + + + - * | | | | - * | | | | - * +----------init------------> | | - * | | | | - * | | | | - * | PrepCfg | | | - * +---------control----------> PrepCfg | | - * | +-----control-----> | - * | | | PrepCfg | - * | +--------------------------control--------> - * | | | allocate - * | | | buffer - * | | | | - * | RcCfg | | | - * +---------control----------> RcCfg | | - * | +-----control-----> | - * | | rc_init | - * | | | | - * | | | | - * | CodecCfg | | | - * +---------control----------> | CodecCfg | - * | +--------------------------control--------> - * | | | generate - * | | | sps/pps - * | | | Get extra info | - * | +--------------------------control--------> - * | Get extra info | | | - * +---------control----------> | | - * | | | | - * | | | | - * | ROICfg | | | - * +---------control----------> | ROICfg | - * | +--------------------------control--------> - * | | | | - * | OSDCfg | | | - * +---------control----------> | OSDCfg | - * | +--------------------------control--------> - * | | | | - * | MDCfg | | | - * +---------control----------> | MDCfg | - * | +--------------------------control--------> - * | | | | - * | Set extra info | | | - * +---------control----------> | Set extra info | - * | +--------------------------control--------> - * | | | | - * | task | | | - * +----------encode----------> task | | - * | +-----encode------> | - * | | encode | - * | | | syntax | - * | +--------------------------gen_reg--------> - * | | | | - * | | | | - * | +---------------------------start---------> - * | | | | - * | | | | - * | +---------------------------wait----------> - * | | | | - * | | callback | | - * | +-----------------> | - * +--OSD-MD--encode----------> | | - * | . | | | - * | . | | | - * | . | | | - * +--OSD-MD--encode----------> | | - * | | | | - * +----------deinit----------> | | - * + + + + - */ - -/* - * base working mode parameter - */ -typedef enum MppEncBaseCfgChange_e { - MPP_ENC_BASE_CFG_CHANGE_LOW_DELAY = (1 << 0), - MPP_ENC_BASE_CFG_CHANGE_ALL = (0xFFFFFFFF), -} MppEncBaseCfgChange; - -typedef struct MppEncBaseCfg_t { - RK_U32 change; - - RK_S32 low_delay; -} MppEncBaseCfg; - -/* - * Rate control parameter - */ -typedef enum MppEncRcCfgChange_e { - MPP_ENC_RC_CFG_CHANGE_RC_MODE = (1 << 0), - MPP_ENC_RC_CFG_CHANGE_QUALITY = (1 << 1), - MPP_ENC_RC_CFG_CHANGE_BPS = (1 << 2), /* change on bps target / max / min */ - MPP_ENC_RC_CFG_CHANGE_FPS_IN = (1 << 5), /* change on fps in flex / numerator / denorminator */ - MPP_ENC_RC_CFG_CHANGE_FPS_OUT = (1 << 6), /* change on fps out flex / numerator / denorminator */ - MPP_ENC_RC_CFG_CHANGE_GOP = (1 << 7), - MPP_ENC_RC_CFG_CHANGE_SKIP_CNT = (1 << 8), - MPP_ENC_RC_CFG_CHANGE_MAX_REENC = (1 << 9), - MPP_ENC_RC_CFG_CHANGE_DROP_FRM = (1 << 10), - MPP_ENC_RC_CFG_CHANGE_MAX_I_PROP = (1 << 11), - MPP_ENC_RC_CFG_CHANGE_MIN_I_PROP = (1 << 12), - MPP_ENC_RC_CFG_CHANGE_INIT_IP_RATIO = (1 << 13), - MPP_ENC_RC_CFG_CHANGE_PRIORITY = (1 << 14), - MPP_ENC_RC_CFG_CHANGE_SUPER_FRM = (1 << 15), - /* qp related change flag */ - MPP_ENC_RC_CFG_CHANGE_QP_INIT = (1 << 16), - MPP_ENC_RC_CFG_CHANGE_QP_RANGE = (1 << 17), - MPP_ENC_RC_CFG_CHANGE_QP_RANGE_I = (1 << 18), - MPP_ENC_RC_CFG_CHANGE_QP_MAX_STEP = (1 << 19), - MPP_ENC_RC_CFG_CHANGE_QP_IP = (1 << 20), - MPP_ENC_RC_CFG_CHANGE_QP_VI = (1 << 21), - MPP_ENC_RC_CFG_CHANGE_QP_ROW = (1 << 22), - MPP_ENC_RC_CFG_CHANGE_QP_ROW_I = (1 << 23), - MPP_ENC_RC_CFG_CHANGE_DEBREATH = (1 << 24), - MPP_ENC_RC_CFG_CHANGE_HIER_QP = (1 << 25), - MPP_ENC_RC_CFG_CHANGE_ST_TIME = (1 << 26), - MPP_ENC_RC_CFG_CHANGE_ALL = (0xFFFFFFFF), -} MppEncRcCfgChange; - -typedef enum MppEncRcQuality_e { - MPP_ENC_RC_QUALITY_WORST, - MPP_ENC_RC_QUALITY_WORSE, - MPP_ENC_RC_QUALITY_MEDIUM, - MPP_ENC_RC_QUALITY_BETTER, - MPP_ENC_RC_QUALITY_BEST, - MPP_ENC_RC_QUALITY_CQP, - MPP_ENC_RC_QUALITY_AQ_ONLY, - MPP_ENC_RC_QUALITY_BUTT -} MppEncRcQuality; - -typedef struct MppEncRcCfg_t { - RK_U32 change; - - /* - * rc_mode - rate control mode - * - * mpp provide two rate control mode: - * - * Constant Bit Rate (CBR) mode - * - paramter 'bps*' define target bps - * - paramter quality and qp will not take effect - * - * Variable Bit Rate (VBR) mode - * - paramter 'quality' define 5 quality levels - * - paramter 'bps*' is used as reference but not strict condition - * - special Constant QP (CQP) mode is under VBR mode - * CQP mode will work with qp in CodecCfg. But only use for test - * - * default: CBR - */ - MppEncRcMode rc_mode; - - /* - * quality - quality parameter, only takes effect in VBR mode - * - * Mpp does not give the direct parameter in different protocol. - * - * Mpp provide total 5 quality level: - * Worst - worse - Medium - better - best - * - * extra CQP level means special constant-qp (CQP) mode - * - * default value: Medium - */ - MppEncRcQuality quality; - - /* - * bit rate parameters - * mpp gives three bit rate control parameter for control - * bps_target - target bit rate, unit: bit per second - * bps_max - maximun bit rate, unit: bit per second - * bps_min - minimun bit rate, unit: bit per second - * if user need constant bit rate set parameters to the similar value - * if user need variable bit rate set parameters as they need - */ - RK_S32 bps_target; - RK_S32 bps_max; - RK_S32 bps_min; - - /* - * frame rate parameters have great effect on rate control - * - * fps_in_flex - * 0 - fix input frame rate - * 1 - variable input frame rate - * - * fps_in_num - * input frame rate numerator, if 0 then default 30 - * - * fps_in_denorm - * input frame rate denorminator, if 0 then default 1 - * - * fps_out_flex - * 0 - fix output frame rate - * 1 - variable output frame rate - * - * fps_out_num - * output frame rate numerator, if 0 then default 30 - * - * fps_out_denorm - * output frame rate denorminator, if 0 then default 1 - */ - RK_S32 fps_in_flex; - RK_S32 fps_in_num; - RK_S32 fps_in_denorm; - RK_S32 fps_out_flex; - RK_S32 fps_out_num; - RK_S32 fps_out_denorm; - - /* - * gop - group of picture, gap between Intra frame - * 0 for only 1 I frame the rest are all P frames - * 1 for all I frame - * 2 for I P I P I P - * 3 for I P P I P P - * etc... - */ - RK_S32 gop; - - /* - * skip_cnt - max continuous frame skip count - * 0 - frame skip is not allow - */ - RK_S32 skip_cnt; - - /* - * max_reenc_times - max reencode time for one frame - * 0 - reencode is not allowed - * 1~3 max reencode time is limited to 3 - */ - RK_U32 max_reenc_times; - - /* - * stats_time - the time of bitrate statistics - */ - RK_S32 stats_time; - - /* - * drop frame parameters - * used on bitrate is far over the max bitrate - * - * drop_mode - * - * MPP_ENC_RC_DROP_FRM_DISABLED - * - do not drop frame when bitrate overflow. - * MPP_ENC_RC_DROP_FRM_NORMAL - * - do not encode the dropped frame when bitrate overflow. - * MPP_ENC_RC_DROP_FRM_PSKIP - * - encode a all skip frame when bitrate overflow. - * - * drop_threshold - * - * The percentage threshold over max_bitrate for trigger frame drop. - * - * drop_gap - * The max continuous frame drop number - */ - MppEncRcDropFrmMode drop_mode; - RK_U32 drop_threshold; - RK_U32 drop_gap; - - MppEncRcSuperFrameMode super_mode; - RK_U32 super_i_thd; - RK_U32 super_p_thd; - - MppEncRcPriority rc_priority; - - RK_U32 debreath_en; - RK_U32 debre_strength; - RK_S32 max_i_prop; - RK_S32 min_i_prop; - RK_S32 init_ip_ratio; - - /* general qp control */ - RK_S32 qp_init; - RK_S32 qp_max; - RK_S32 qp_max_i; - RK_S32 qp_min; - RK_S32 qp_min_i; - RK_S32 qp_max_step; /* delta qp between each two P frame */ - RK_S32 qp_delta_ip; /* delta qp between I and P */ - RK_S32 qp_delta_vi; /* delta qp between vi and P */ - - RK_S32 hier_qp_en; - RK_S32 hier_qp_delta[4]; - RK_S32 hier_frame_num[4]; -} MppEncRcCfg; - - -typedef enum MppEncHwCfgChange_e { - /* qp related hardware config flag */ - MPP_ENC_HW_CFG_CHANGE_QP_ROW = (1 << 0), - MPP_ENC_HW_CFG_CHANGE_QP_ROW_I = (1 << 1), - MPP_ENC_HW_CFG_CHANGE_AQ_THRD_I = (1 << 2), - MPP_ENC_HW_CFG_CHANGE_AQ_THRD_P = (1 << 3), - MPP_ENC_HW_CFG_CHANGE_AQ_STEP_I = (1 << 4), - MPP_ENC_HW_CFG_CHANGE_AQ_STEP_P = (1 << 5), - MPP_ENC_HW_CFG_CHANGE_ALL = (0xFFFFFFFF), -} MppEncHwCfgChange; - -/* - * Hardware related rate control config - * - * This config will open some detail feature to external user to control - * hardware behavior directly. - */ -typedef struct MppEncHwCfg_t { - RK_U32 change; - - /* vepu541/vepu540 */ - RK_S32 qp_delta_row; /* delta qp between two row in P frame */ - RK_S32 qp_delta_row_i; /* delta qp between two row in I frame */ - RK_U32 aq_thrd_i[16]; - RK_U32 aq_thrd_p[16]; - RK_S32 aq_step_i[16]; - RK_S32 aq_step_p[16]; -} MppEncHwCfg; - -/* - * Mpp preprocess parameter - */ -typedef enum MppEncPrepCfgChange_e { - MPP_ENC_PREP_CFG_CHANGE_INPUT = (1 << 0), /* change on input config */ - MPP_ENC_PREP_CFG_CHANGE_FORMAT = (1 << 2), /* change on format */ - /* transform parameter */ - MPP_ENC_PREP_CFG_CHANGE_ROTATION = (1 << 4), /* change on ration */ - MPP_ENC_PREP_CFG_CHANGE_MIRRORING = (1 << 5), /* change on mirroring */ - /* enhancement parameter */ - MPP_ENC_PREP_CFG_CHANGE_DENOISE = (1 << 8), /* change on denoise */ - MPP_ENC_PREP_CFG_CHANGE_SHARPEN = (1 << 9), /* change on denoise */ - /* color related parameter */ - MPP_ENC_PREP_CFG_CHANGE_COLOR_RANGE = (1 << 16), /* change on color range */ - MPP_ENC_PREP_CFG_CHANGE_COLOR_SPACE = (1 << 17), /* change on color range */ - MPP_ENC_PREP_CFG_CHANGE_COLOR_PRIME = (1 << 18), /* change on color primaries */ - MPP_ENC_PREP_CFG_CHANGE_COLOR_TRC = (1 << 19), /* change on color transfer */ - - MPP_ENC_PREP_CFG_CHANGE_ALL = (0xFFFFFFFF), -} MppEncPrepCfgChange; - -/* - * Preprocess sharpen parameter - * - * 5x5 sharpen core - * - * enable_y - enable luma sharpen - * enable_uv - enable chroma sharpen - */ -typedef struct { - RK_U32 enable_y; - RK_U32 enable_uv; - RK_S32 coef[5]; - RK_S32 div; - RK_S32 threshold; -} MppEncPrepSharpenCfg; - -/* - * input frame rotation parameter - * 0 - disable rotation - * 1 - 90 degree - * 2 - 180 degree - * 3 - 270 degree - */ -typedef enum MppEncRotationCfg_e { - MPP_ENC_ROT_0, - MPP_ENC_ROT_90, - MPP_ENC_ROT_180, - MPP_ENC_ROT_270, - MPP_ENC_ROT_BUTT -} MppEncRotationCfg; - -typedef struct MppEncPrepCfg_t { - RK_U32 change; - - /* - * Mpp encoder input data dimension config - * - * width / height / hor_stride / ver_stride / format - * These information will be used for buffer allocation and rc config init - * The output format is always YUV420. So if input is RGB then color - * conversion will be done internally - */ - RK_S32 width; - RK_S32 height; - RK_S32 hor_stride; - RK_S32 ver_stride; - - /* - * Mpp encoder input data format config - */ - MppFrameFormat format; - MppFrameColorSpace color; - MppFrameColorPrimaries colorprim; - MppFrameColorTransferCharacteristic colortrc; - MppFrameColorRange range; - - MppEncRotationCfg rotation; - - /* - * input frame mirroring parameter - * 0 - disable mirroring - * 1 - horizontal mirroring - * 2 - vertical mirroring - */ - RK_S32 mirroring; - - RK_S32 denoise; - - MppEncPrepSharpenCfg sharpen; -} MppEncPrepCfg; - -/* - * Mpp Motion Detection parameter - * - * Mpp can output Motion Detection infomation for each frame. - * If user euqueue a encode task with KEY_MOTION_INFO by following function - * then encoder will output Motion Detection information to the buffer. - * - * mpp_task_meta_set_buffer(task, KEY_MOTION_INFO, buffer); - * - * Motion Detection information will be organized in this way: - * 1. Each 16x16 block will have a 32 bit block information which contains - * 15 bit SAD(Sum of Abstract Difference value - * 9 bit signed horizontal motion vector - * 8 bit signed vertical motion vector - * 2. The sequence of MD information in the buffer is corresponding to the - * block position in the frame, left-to right, top-to-bottom. - * 3. If the width of the frame is not a multiple of 256 pixels (16 macro - * blocks), DMA would extend the frame to a multiple of 256 pixels and - * the extended blocks' MD information are 32'h0000_0000. - * 4. Buffer must be ion buffer and 1024 byte aligned. - */ -typedef struct MppEncMDBlkInfo_t { - RK_U32 sad : 15; /* bit 0~14 - SAD */ - RK_S32 mvx : 9; /* bit 15~23 - signed horizontal mv */ - RK_S32 mvy : 8; /* bit 24~31 - signed vertical mv */ -} MppEncMDBlkInfo; - -typedef enum MppEncHeaderMode_e { - /* default mode: attach vps/sps/pps only on first frame */ - MPP_ENC_HEADER_MODE_DEFAULT, - /* IDR mode: attach vps/sps/pps on each IDR frame */ - MPP_ENC_HEADER_MODE_EACH_IDR, - MPP_ENC_HEADER_MODE_BUTT, -} MppEncHeaderMode; - -typedef enum MppEncSeiMode_e { - MPP_ENC_SEI_MODE_DISABLE, /* default mode, SEI writing is disabled */ - MPP_ENC_SEI_MODE_ONE_SEQ, /* one sequence has only one SEI */ - MPP_ENC_SEI_MODE_ONE_FRAME /* one frame may have one SEI, if SEI info has changed */ -} MppEncSeiMode; - -/* - * Mpp codec parameter - * parameter is defined from here - */ - -/* - * H.264 configurable parameter - */ -typedef enum MppEncH264CfgChange_e { - /* change on stream type */ - MPP_ENC_H264_CFG_STREAM_TYPE = (1 << 0), - /* change on svc / profile / level */ - MPP_ENC_H264_CFG_CHANGE_PROFILE = (1 << 1), - /* change on entropy_coding_mode / cabac_init_idc */ - MPP_ENC_H264_CFG_CHANGE_ENTROPY = (1 << 2), - - /* change on transform8x8_mode */ - MPP_ENC_H264_CFG_CHANGE_TRANS_8x8 = (1 << 4), - /* change on constrained_intra_pred_mode */ - MPP_ENC_H264_CFG_CHANGE_CONST_INTRA = (1 << 5), - /* change on chroma_cb_qp_offset/ chroma_cr_qp_offset */ - MPP_ENC_H264_CFG_CHANGE_CHROMA_QP = (1 << 6), - /* change on deblock_disable / deblock_offset_alpha / deblock_offset_beta */ - MPP_ENC_H264_CFG_CHANGE_DEBLOCKING = (1 << 7), - /* change on use_longterm */ - MPP_ENC_H264_CFG_CHANGE_LONG_TERM = (1 << 8), - /* change on scaling_list_mode */ - MPP_ENC_H264_CFG_CHANGE_SCALING_LIST = (1 << 9), - /* change on poc type */ - MPP_ENC_H264_CFG_CHANGE_POC_TYPE = (1 << 10), - /* change on log2 max poc lsb minus 4 */ - MPP_ENC_H264_CFG_CHANGE_MAX_POC_LSB = (1 << 11), - /* change on log2 max frame number minus 4 */ - MPP_ENC_H264_CFG_CHANGE_MAX_FRM_NUM = (1 << 12), - /* change on gaps_in_frame_num_value_allowed_flag */ - MPP_ENC_H264_CFG_CHANGE_GAPS_IN_FRM_NUM = (1 << 13), - - /* change on max_qp / min_qp */ - MPP_ENC_H264_CFG_CHANGE_QP_LIMIT = (1 << 16), - /* change on max_qp_i / min_qp_i */ - MPP_ENC_H264_CFG_CHANGE_QP_LIMIT_I = (1 << 17), - /* change on max_qp_step */ - MPP_ENC_H264_CFG_CHANGE_MAX_QP_STEP = (1 << 18), - /* change on qp_delta_ip */ - MPP_ENC_H264_CFG_CHANGE_QP_DELTA = (1 << 19), - /* change on intra_refresh_mode / intra_refresh_arg */ - MPP_ENC_H264_CFG_CHANGE_INTRA_REFRESH = (1 << 20), - /* change on max long-term reference frame count */ - MPP_ENC_H264_CFG_CHANGE_MAX_LTR = (1 << 21), - /* change on max temporal id */ - MPP_ENC_H264_CFG_CHANGE_MAX_TID = (1 << 22), - /* change on adding prefix nal */ - MPP_ENC_H264_CFG_CHANGE_ADD_PREFIX = (1 << 23), - /* change on base layer priority id */ - MPP_ENC_H264_CFG_CHANGE_BASE_LAYER_PID = (1 << 24), - - /* change on vui */ - MPP_ENC_H264_CFG_CHANGE_VUI = (1 << 28), - MPP_ENC_H264_CFG_CHANGE_ALL = (0xFFFFFFFF), -} MppEncH264CfgChange; - -typedef struct MppEncH264Cfg_t { - RK_U32 change; - - /* - * H.264 stream format - * 0 - H.264 Annex B: NAL unit starts with '00 00 00 01' - * 1 - Plain NAL units without startcode - */ - RK_S32 stream_type; - - /* - * H.264 codec syntax config - * - * do NOT setup the three option below unless you are familiar with encoder detail - * poc_type - picture order count type 0 ~ 2 - * log2_max_poc_lsb - used in sps with poc_type 0, - * log2_max_frame_num - used in sps - */ - RK_U32 poc_type; - RK_U32 log2_max_poc_lsb; - RK_U32 log2_max_frame_num; - RK_U32 gaps_not_allowed; - - /* - * H.264 profile_idc parameter - * 66 - Baseline profile - * 77 - Main profile - * 100 - High profile - */ - RK_S32 profile; - - /* - * H.264 level_idc parameter - * 10 / 11 / 12 / 13 - qcif@15fps / cif@7.5fps / cif@15fps / cif@30fps - * 20 / 21 / 22 - cif@30fps / half-D1@@25fps / D1@12.5fps - * 30 / 31 / 32 - D1@25fps / 720p@30fps / 720p@60fps - * 40 / 41 / 42 - 1080p@30fps / 1080p@30fps / 1080p@60fps - * 50 / 51 / 52 - 4K@30fps - */ - RK_S32 level; - - /* - * H.264 entropy coding method - * 0 - CAVLC - * 1 - CABAC - * When CABAC is select cabac_init_idc can be range 0~2 - */ - RK_S32 entropy_coding_mode; - RK_S32 cabac_init_idc; - - /* - * 8x8 intra prediction and 8x8 transform enable flag - * This flag can only be enable under High profile - * 0 : disable (BP/MP) - * 1 : enable (HP) - */ - RK_S32 transform8x8_mode; - - /* - * 0 : disable - * 1 : enable - */ - RK_S32 constrained_intra_pred_mode; - - /* - * 0 : flat scaling list - * 1 : default scaling list for all cases - * 2 : customized scaling list (not supported) - */ - RK_S32 scaling_list_mode; - - /* - * chroma qp offset (-12 - 12) - */ - RK_S32 chroma_cb_qp_offset; - RK_S32 chroma_cr_qp_offset; - - /* - * H.264 deblock filter mode flag - * 0 : enable - * 1 : disable - * 2 : disable deblocking filter at slice boundaries - * - * deblock filter offset alpha (-6 - 6) - * deblock filter offset beta (-6 - 6) - */ - RK_S32 deblock_disable; - RK_S32 deblock_offset_alpha; - RK_S32 deblock_offset_beta; - - /* - * H.264 long term reference picture enable flag - * 0 - disable - * 1 - enable - */ - RK_S32 use_longterm; - - /* - * quality config - * qp_max - 8 ~ 51 - * qp_max_i - 10 ~ 40 - * qp_min - 8 ~ 48 - * qp_min_i - 10 ~ 40 - * qp_max_step - max delta qp step between two frames - */ - RK_S32 qp_init; - RK_S16 qp_max; - RK_S16 qp_max_i; - RK_S16 qp_min; - RK_S16 qp_min_i; - RK_S16 qp_max_step; - RK_S16 qp_delta_ip; - - /* - * intra fresh config - * - * intra_refresh_mode - * 0 - no intra refresh - * 1 - intra refresh by MB row - * 2 - intra refresh by MB column - * 3 - intra refresh by MB gap - * - * intra_refresh_arg - * mode 0 - no effect - * mode 1 - refresh MB row number - * mode 2 - refresh MB colmn number - * mode 3 - refresh MB gap count - */ - RK_S32 intra_refresh_mode; - RK_S32 intra_refresh_arg; - - /* extra mode config */ - RK_S32 max_ltr_frames; - RK_S32 max_tid; - RK_S32 prefix_mode; - RK_S32 base_layer_pid; -} MppEncH264Cfg; - -#define H265E_MAX_ROI_NUMBER 64 - -typedef struct H265eRect_t { - RK_S32 left; - RK_S32 right; - RK_S32 top; - RK_S32 bottom; -} H265eRect; - -typedef struct H265eRoi_Region_t { - RK_U8 level; - H265eRect rect; -} H265eRoiRegion; - -/* - * roi region only can be setting when rc_enable = 1 - */ -typedef struct MppEncH265RoiCfg_t { - /* - * the value is defined by H265eCtuMethod - */ - - RK_U8 method; - /* - * the number of roi,the value must less than H265E_MAX_ROI_NUMBER - */ - RK_S32 num; - - /* delat qp using in roi region */ - RK_U32 delta_qp; - - /* roi region */ - H265eRoiRegion region[H265E_MAX_ROI_NUMBER]; -} MppEncH265RoiCfg; - -typedef struct H265eCtuQp_t { - /* the qp value using in ctu region */ - RK_U32 qp; - - /* - * define the ctu region - * method = H265E_METHOD_CUT_SIZE, the value of rect is in ctu size - * method = H264E_METHOD_COORDINATE,the value of rect is in coordinates - */ - H265eRect rect; -} H265eCtu; - -typedef struct H265eCtuRegion_t { - /* - * the value is defined by H265eCtuMethod - */ - RK_U8 method; - - /* - * the number of ctu,the value must less than H265E_MAX_ROI_NUMBER - */ - RK_S32 num; - - /* ctu region */ - H265eCtu ctu[H265E_MAX_ROI_NUMBER]; -} MppEncH265CtuCfg; - -/* - * define the method when set CTU/ROI parameters - * this value is using by method in H265eCtuRegion or H265eRoi struct - */ -typedef enum { - H265E_METHOD_CTU_SIZE, - H264E_METHOD_COORDINATE, -} H265eCtuMethod; - -/* - * H.265 configurable parameter - */ -typedef struct MppEncH265VuiCfg_t { - RK_U32 change; - RK_S32 vui_present; - RK_S32 vui_aspect_ratio; - RK_S32 vui_sar_size; - RK_S32 full_range; - RK_S32 time_scale; -} MppEncH265VuiCfg; - -typedef enum MppEncH265CfgChange_e { - /* change on stream type */ - MPP_ENC_H265_CFG_PROFILE_LEVEL_TILER_CHANGE = (1 << 0), - MPP_ENC_H265_CFG_INTRA_QP_CHANGE = (1 << 1), - MPP_ENC_H265_CFG_FRAME_RATE_CHANGE = (1 << 2), - MPP_ENC_H265_CFG_BITRATE_CHANGE = (1 << 3), - MPP_ENC_H265_CFG_GOP_SIZE = (1 << 4), - MPP_ENC_H265_CFG_RC_QP_CHANGE = (1 << 5), - MPP_ENC_H265_CFG_INTRA_REFRESH_CHANGE = (1 << 6), - MPP_ENC_H265_CFG_INDEPEND_SLICE_CHANGE = (1 << 7), - MPP_ENC_H265_CFG_DEPEND_SLICE_CHANGE = (1 << 8), - MPP_ENC_H265_CFG_CTU_CHANGE = (1 << 9), - MPP_ENC_H265_CFG_ROI_CHANGE = (1 << 10), - MPP_ENC_H265_CFG_CU_CHANGE = (1 << 11), - MPP_ENC_H265_CFG_DBLK_CHANGE = (1 << 12), - MPP_ENC_H265_CFG_SAO_CHANGE = (1 << 13), - MPP_ENC_H265_CFG_TRANS_CHANGE = (1 << 14), - MPP_ENC_H265_CFG_SLICE_CHANGE = (1 << 15), - MPP_ENC_H265_CFG_ENTROPY_CHANGE = (1 << 16), - MPP_ENC_H265_CFG_MERGE_CHANGE = (1 << 17), - MPP_ENC_H265_CFG_CHANGE_VUI = (1 << 18), - MPP_ENC_H265_CFG_RC_I_QP_CHANGE = (1 << 19), - MPP_ENC_H265_CFG_RC_MAX_QP_STEP_CHANGE = (1 << 21), - MPP_ENC_H265_CFG_RC_IP_DELTA_QP_CHANGE = (1 << 20), - MPP_ENC_H265_CFG_CHANGE_ALL = (0xFFFFFFFF), -} MppEncH265CfgChange; - -typedef struct MppEncH265SliceCfg_t { - /* default value: 0, means no slice split */ - RK_U32 split_enable; - - /* 0: by bits number; 1: by lcu line number */ - RK_U32 split_mode; - - /* - * when splitmode is 0, this value presents bits number, - * when splitmode is 1, this value presents lcu line number - */ - RK_U32 slice_size; - RK_U32 loop_filter_across_slices_enabled_flag; -} MppEncH265SliceCfg; - -typedef struct MppEncH265CuCfg_t { - RK_U32 cu32x32_en; /* default: 1 */ - RK_U32 cu16x16_en; /* default: 1 */ - RK_U32 cu8x8_en; /* default: 1 */ - RK_U32 cu4x4_en; /* default: 1 */ - - // intra pred - RK_U32 constrained_intra_pred_flag; /* default: 0 */ - RK_U32 strong_intra_smoothing_enabled_flag; /* INTRA_SMOOTH */ - RK_U32 pcm_enabled_flag; /* default: 0, enable ipcm */ - RK_U32 pcm_loop_filter_disabled_flag; -} MppEncH265CuCfg; - -typedef struct MppEncH265RefCfg_t { - RK_U32 num_lt_ref_pic; /* default: 0 */ -} MppEncH265RefCfg; - -typedef struct MppEncH265DblkCfg_t { - RK_U32 slice_deblocking_filter_disabled_flag; /* default value: 0. {0,1} */ - RK_S32 slice_beta_offset_div2; /* default value: 0. [-6,+6] */ - RK_S32 slice_tc_offset_div2; /* default value: 0. [-6,+6] */ -} MppEncH265DblkCfg_t; - -typedef struct MppEncH265SaoCfg_t { - RK_U32 slice_sao_luma_flag; - RK_U32 slice_sao_chroma_flag; -} MppEncH265SaoCfg; - -typedef struct MppEncH265TransCfg_t { - RK_U32 transquant_bypass_enabled_flag; - RK_U32 transform_skip_enabled_flag; - RK_U32 defalut_ScalingList_enable; /* default: 0 */ - RK_S32 cb_qp_offset; - RK_S32 cr_qp_offset; -} MppEncH265TransCfg; - -typedef struct MppEncH265MergeCfg_t { - RK_U32 max_mrg_cnd; - RK_U32 merge_up_flag; - RK_U32 merge_left_flag; -} MppEncH265MergesCfg; - -typedef struct MppEncH265EntropyCfg_t { - RK_U32 cabac_init_flag; /* default: 0 */ -} MppEncH265EntropyCfg; - -typedef struct MppEncH265Cfg_t { - RK_U32 change; - - /* H.265 codec syntax config */ - RK_S32 profile; - RK_S32 level; - RK_S32 tier; - - /* constraint intra prediction flag */ - RK_S32 const_intra_pred; - RK_S32 ctu_size; - RK_S32 max_cu_size; - RK_S32 tmvp_enable; - RK_S32 amp_enable; - RK_S32 wpp_enable; - RK_S32 merge_range; - RK_S32 sao_enable; - RK_U32 num_ref; - - /* quality config */ - RK_S32 max_qp; - RK_S32 min_qp; - RK_S32 max_i_qp; - RK_S32 min_i_qp; - RK_S32 ip_qp_delta; - RK_S32 max_delta_qp; - RK_S32 intra_qp; - RK_S32 gop_delta_qp; - RK_S32 qp_init; - RK_S32 qp_max_step; - RK_S32 raw_dealt_qp; - RK_U8 qpmax_map[8]; - RK_U8 qpmin_map[8]; - RK_S32 qpmap_mode; - - /* intra fresh config */ - RK_S32 intra_refresh_mode; - RK_S32 intra_refresh_arg; - - /* slice mode config */ - RK_S32 independ_slice_mode; - RK_S32 independ_slice_arg; - RK_S32 depend_slice_mode; - RK_S32 depend_slice_arg; - - MppEncH265CuCfg cu_cfg; - MppEncH265SliceCfg slice_cfg; - MppEncH265EntropyCfg entropy_cfg; - MppEncH265TransCfg trans_cfg; - MppEncH265SaoCfg sao_cfg; - MppEncH265DblkCfg_t dblk_cfg; - MppEncH265RefCfg ref_cfg; - MppEncH265MergesCfg merge_cfg; - - /* extra info */ - MppEncH265VuiCfg vui; - - MppEncH265CtuCfg ctu; - MppEncH265RoiCfg roi; -} MppEncH265Cfg; - -/* - * motion jpeg configurable parameter - */ -typedef enum MppEncJpegCfgChange_e { - /* change on quant parameter */ - MPP_ENC_JPEG_CFG_CHANGE_QP = (1 << 0), - MPP_ENC_JPEG_CFG_CHANGE_QTABLE = (1 << 1), - MPP_ENC_JPEG_CFG_CHANGE_QFACTOR = (1 << 2), - MPP_ENC_JPEG_CFG_CHANGE_ALL = (0xFFFFFFFF), -} MppEncJpegCfgChange; - -typedef struct MppEncJpegCfg_t { - RK_U32 change; - RK_S32 quant; - /* - * quality factor config - * - * q_factor - 1 ~ 99 - * qf_max - 1 ~ 99 - * qf_min - 1 ~ 99 - * qtable_y: qtable for luma - * qtable_u: qtable for chroma - * qtable_v: default equal qtable_u - */ - RK_S32 q_factor; - RK_S32 qf_max; - RK_S32 qf_min; - RK_U8 *qtable_y; - RK_U8 *qtable_u; - RK_U8 *qtable_v; -} MppEncJpegCfg; - -/* - * vp8 configurable parameter - */ -typedef enum MppEncVP8CfgChange_e { - MPP_ENC_VP8_CFG_CHANGE_QP = (1 << 0), - MPP_ENC_VP8_CFG_CHANGE_DIS_IVF = (1 << 1), - MPP_ENC_VP8_CFG_CHANGE_ALL = (0xFFFFFFFF), -} MppEncVP8CfgChange; - -typedef struct MppEncVp8Cfg_t { - RK_U32 change; - RK_S32 quant; - - RK_S32 qp_init; - RK_S32 qp_max; - RK_S32 qp_max_i; - RK_S32 qp_min; - RK_S32 qp_min_i; - RK_S32 qp_max_step; - RK_S32 disable_ivf; -} MppEncVp8Cfg; - -/** - * @ingroup rk_mpi - * @brief MPP encoder codec configuration parameters - * @details The encoder codec configuration parameters are different for each - * compression codings. For example, H.264 encoder can configure - * profile, level, qp, etc. while jpeg encoder can configure qp - * only. The detailed parameters can refer the corresponding data - * structure such as MppEncH264Cfg and MppEncJpegCfg. This data - * structure is associated with MPP_ENC_SET_CODEC_CFG command. - */ -typedef struct MppEncCodecCfg_t { - MppCodingType coding; - - union { - RK_U32 change; - MppEncH264Cfg h264; - MppEncH265Cfg h265; - MppEncJpegCfg jpeg; - MppEncVp8Cfg vp8; - }; -} MppEncCodecCfg; - -typedef enum MppEncSliceSplit_e { - /* change on quant parameter */ - MPP_ENC_SPLIT_CFG_CHANGE_MODE = (1 << 0), - MPP_ENC_SPLIT_CFG_CHANGE_ARG = (1 << 1), - MPP_ENC_SPLIT_CFG_CHANGE_ALL = (0xFFFFFFFF), -} MppEncSliceSplitChange; - -typedef enum MppEncSplitMode_e { - MPP_ENC_SPLIT_NONE, - MPP_ENC_SPLIT_BY_BYTE, - MPP_ENC_SPLIT_BY_CTU, -} MppEncSplitMode; - -typedef struct MppEncSliceSplit_t { - RK_U32 change; - - /* - * slice split mode - * - * MPP_ENC_SPLIT_NONE - No slice is split - * MPP_ENC_SPLIT_BY_BYTE - Slice is split by byte number - * MPP_ENC_SPLIT_BY_CTU - Slice is split by macroblock / ctu number - */ - RK_U32 split_mode; - - /* - * slice split size parameter - * - * When split by byte number this value is the max byte number for each - * slice. - * When split by macroblock / ctu number this value is the MB/CTU number - * for each slice. - */ - RK_U32 split_arg; -} MppEncSliceSplit; - -/** - * @brief Mpp ROI parameter - * Region configure define a rectangle as ROI - * @note x, y, w, h are calculated in pixels, which had better be 16-pixel aligned. - * These parameters MUST retain in memory when encoder is running. - * Both absolute qp and relative qp are supported in vepu541. - * Only absolute qp is supported in rv1108 - */ -typedef struct MppEncROIRegion_t { - RK_U16 x; /**< horizontal position of top left corner */ - RK_U16 y; /**< vertical position of top left corner */ - RK_U16 w; /**< width of ROI rectangle */ - RK_U16 h; /**< height of ROI rectangle */ - RK_U16 intra; /**< flag of forced intra macroblock */ - RK_S16 quality; /**< absolute / relative qp of macroblock */ - RK_U16 qp_area_idx; /**< qp min max area select*/ - RK_U8 area_map_en; /**< enable area map */ - RK_U8 abs_qp_en; /**< absolute qp enable flag*/ -} MppEncROIRegion; - -/** - * @brief MPP encoder's ROI configuration - */ -typedef struct MppEncROICfg_t { - RK_U32 number; /**< ROI rectangle number */ - MppEncROIRegion *regions; /**< ROI parameters */ -} MppEncROICfg; - -/* - * Mpp OSD parameter - * - * Mpp OSD support total 8 regions - * Mpp OSD support 256-color palette two mode palette: - * 1. Configurable OSD palette - * When palette is set. - * 2. fixed OSD palette - * When palette is NULL. - * - * if MppEncOSDPlt.buf != NULL , palette includes maximun 256 levels, - * every level composed of 32 bits defined below: - * Y : 8 bits - * U : 8 bits - * V : 8 bits - * alpha : 8 bits - */ -#define MPP_ENC_OSD_PLT_WHITE ((255<<24)|(128<<16)|(128<<8)|235) -#define MPP_ENC_OSD_PLT_YELLOW ((255<<24)|(146<<16)|(16<<8)|210) -#define MPP_ENC_OSD_PLT_CYAN ((255<<24)|(16<<16)|(166<<8)|170) -#define MPP_ENC_OSD_PLT_GREEN ((255<<24)|(34<<16)|(54<<8)|145) -#define MPP_ENC_OSD_PLT_TRANS ((0<<24)|(222<<16)|(202<<8)|106) -#define MPP_ENC_OSD_PLT_RED ((255<<24)|(240<<16)|(90<<8)| 81) -#define MPP_ENC_OSD_PLT_BLUE ((255<<24)|(110<<16)|(240<<8)| 41) -#define MPP_ENC_OSD_PLT_BLACK ((255<<24)|(128<<16)|(128<<8)| 16) - -typedef enum MppEncOSDPltType_e { - MPP_ENC_OSD_PLT_TYPE_DEFAULT, - MPP_ENC_OSD_PLT_TYPE_USERDEF, - MPP_ENC_OSD_PLT_TYPE_BUTT, -} MppEncOSDPltType; - -/* OSD palette value define */ -typedef union MppEncOSDPltVal_u { - struct { - RK_U32 v : 8; - RK_U32 u : 8; - RK_U32 y : 8; - RK_U32 alpha : 8; - }; - RK_U32 val; -} MppEncOSDPltVal; - -typedef struct MppEncOSDPlt_t { - MppEncOSDPltVal data[256]; -} MppEncOSDPlt; - -typedef enum MppEncOSDPltCfgChange_e { - MPP_ENC_OSD_PLT_CFG_CHANGE_MODE = (1 << 0), /* change osd plt type */ - MPP_ENC_OSD_PLT_CFG_CHANGE_PLT_VAL = (1 << 1), /* change osd plt table value */ - MPP_ENC_OSD_PLT_CFG_CHANGE_ALL = (0xFFFFFFFF), -} MppEncOSDPltCfgChange; - -typedef struct MppEncOSDPltCfg_t { - RK_U32 change; - MppEncOSDPltType type; - MppEncOSDPlt *plt; -} MppEncOSDPltCfg; - -/* position info is unit in 16 pixels(one MB), and - * x-directon range in pixels = (rd_pos_x - lt_pos_x + 1) * 16; - * y-directon range in pixels = (rd_pos_y - lt_pos_y + 1) * 16; - */ -typedef struct MppEncOSDRegion_t { - RK_U32 enable; - RK_U32 inverse; - RK_U32 start_mb_x; - RK_U32 start_mb_y; - RK_U32 num_mb_x; - RK_U32 num_mb_y; - RK_U32 buf_offset; -} MppEncOSDRegion; - -/* if num_region > 0 && region==NULL - * use old osd data - */ -typedef struct MppEncOSDData_t { - MppBuffer buf; - RK_U32 num_region; - MppEncOSDRegion region[8]; -} MppEncOSDData; - -typedef struct MppEncOSDRegion2_t { - RK_U32 enable; - RK_U32 inverse; - RK_U32 start_mb_x; - RK_U32 start_mb_y; - RK_U32 num_mb_x; - RK_U32 num_mb_y; - RK_U32 buf_offset; - MppBuffer buf; -} MppEncOSDRegion2; - -typedef struct MppEncOSDData2_t { - RK_U32 num_region; - MppEncOSDRegion2 region[8]; -} MppEncOSDData2; - -typedef struct MppEncUserData_t { - RK_U32 len; - void *pdata; -} MppEncUserData; - -typedef struct MppEncUserDataFull_t { - RK_U32 len; - RK_U8 *uuid; - void *pdata; -} MppEncUserDataFull; - -typedef struct MppEncUserDataSet_t { - RK_U32 count; - MppEncUserDataFull *datas; -} MppEncUserDataSet; - -#endif /* __RK_VENC_CMD_H__ */ diff --git a/hardware/mpp/include/rk_venc_rc.h b/hardware/mpp/include/rk_venc_rc.h deleted file mode 100644 index d58f9e29c73cd1a468989408c21660e210e384fb..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/rk_venc_rc.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __RK_VENC_RC_H__ -#define __RK_VENC_RC_H__ - -/* Rate control parameter */ -typedef enum MppEncRcMode_e { - MPP_ENC_RC_MODE_VBR, - MPP_ENC_RC_MODE_CBR, - MPP_ENC_RC_MODE_FIXQP, - MPP_ENC_RC_MODE_AVBR, - MPP_ENC_RC_MODE_BUTT -} MppEncRcMode; - -typedef enum MppEncRcPriority_e { - MPP_ENC_RC_BY_BITRATE_FIRST, - MPP_ENC_RC_BY_FRM_SIZE_FIRST, - MPP_ENC_RC_PRIORITY_BUTT -} MppEncRcPriority; - -typedef enum MppEncRcDropFrmMode_e { - MPP_ENC_RC_DROP_FRM_DISABLED, - MPP_ENC_RC_DROP_FRM_NORMAL, - MPP_ENC_RC_DROP_FRM_PSKIP, - MPP_ENC_RC_DROP_FRM_BUTT -} MppEncRcDropFrmMode; - -typedef enum MppEncRcSuperFrameMode_t { - MPP_ENC_RC_SUPER_FRM_NONE, - MPP_ENC_RC_SUPER_FRM_DROP, - MPP_ENC_RC_SUPER_FRM_REENC, - MPP_ENC_RC_SUPER_FRM_BUTT -} MppEncRcSuperFrameMode; - -typedef enum MppEncRcGopMode_e { - MPP_ENC_RC_NORMAL_P, - MPP_ENC_RC_SMART_P, - MPP_ENC_RC_GOP_MODE_BUTT, -} MppEncRcGopMode; - -#endif /* __RK_VENC_RC_H__ */ diff --git a/hardware/mpp/include/rk_venc_ref.h b/hardware/mpp/include/rk_venc_ref.h deleted file mode 100644 index fff7d862c7d6c14307e4d20189475c1303dc20d6..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/rk_venc_ref.h +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __RK_VENC_REF_H__ -#define __RK_VENC_REF_H__ - -#include "rk_type.h" -#include "mpp_err.h" - -/* - * MPP reference management system follows the model of H.264/H.265 reference - * frame mangement. - * - * The reference frame is defined into two type: long-term reference frame and - * short-refernce frame (lt_ref and st_ref). - * - * The lt_ref can be only indexed by long-term reference frame index (lt_idx). - * The st_ref can be indexed by its temporal id (tid) and previous count. - * - * MppEncRefMode defined the way for user to reference the required frame. - * - * Normal reference mode without argument - * REF_TO_PREV_REF_FRM - refer to previous reference frame in encode order (No matter Lt or St) - * REF_TO_PREV_ST_REF - refer to previous short-term reference frame - * REF_TO_PREV_LT_REF - refer to previous long-term reference frame - * REF_TO_PREV_INTRA - refer to previous Intra / IDR frame - * REF_TO_ST_REF_SETUP - refer to refernce frame defined in StRefSetup - * - * Normal reference mode with argument - * REF_TO_TEMPORAL_LAYER - refer to previous reference frame with temporal id argument - * REF_TO_LT_REF_IDX - refer to long-term reference frame with lt_ref_idx argument - * REF_TO_ST_PREV_N_REF - refer to short-term reference frame with diff frame_num argument - * - * Long-term reference only mode - * REF_TO_ST_REF_SETUP - use corresponding mode of original short-term reference frame - * - * Short-term reference only mode - * REF_TO_LT_REF_SETUP - indicate that this frame will be overwrited by long-term config - * - * By combining frames with these modes user can define many kinds of reference hierarchy - * structure. But normally user should use simplified preset hierarchy pattern. - * - * The rules for virtual cpb management is similiar to H.264/H.265 - * 1. When one frame is marked as long-term reference frame it will be kept in cpb until - * it is replaced by other frame with the same lt_idx or IDR frame. - * 2. When one frame is marked as short-term reference frame it will be inert into cpb when - * there is enough storage space. When the number of total sum of long-term and short-term - * reference frame excess the cpb size limit the oldest short-term frame will be removed. - * This is call sliding window in H.264. - */ - -/* max 4 temporal layer */ -#define MPP_ENC_MAX_TEMPORAL_LAYER_NUM 4 -/* max 4 long-term reference frame */ -#define MPP_ENC_MAX_LT_REF_NUM 16 - -/* - * Group Of Picture (GOP) config is separated into three parts: - * - * 1. Intra / IDR frame config - * igop - the interval of two intra / IDR frames - * - * 2. Long-term reference config (MppEncRefLtFrmCfg) - * - * Setup long-term reference index max lt_idx, loop interval and reference - * mode for auto long-term reference frame generation. The encoder will - * mark frame to be long-term reference frame with given interval. - * - * 2.1 lt_idx - * The long-term reference frame index is unique identifier for a long-term - * reference frame. - * The max long-term reference frame index should NOT larger than - * max_num_ref_frames in sps. - * - * 2.2 lt_gap - * When lt_gap is zero the long-term reference frame generation is disabled. - * When lt_gap is non-zero (usually 2~3 second interval) then the long-term - * reference frame will be generated for error recovery or smart hierarchy. - * - * 2.2 lt_delay - * The lt_delay is the delay time for generation of long-term reference frame. - * The start point of lt_delay is the IDR/intra frame genertaed by igop. - * - * 2.4 ref_mode: Long-term refernce frame reference mode - * NOTE: temporal id of longterm reference frame is always zero. - * - * Examples: - * Sequence has only one lt_ref 0 and setup one long-term reference frame - * every 300 frame. - * { - * .lt_idx = 0, - * .lt_gap = 300, - * .lt_delay = 0, - * } - * result: - * frame 0 ...... 299 300 301 ...... 599 600 601 - * lt_idx 0 xxxxxx x 0 x xxxxxx x 0 x - * - * Sequence has lt_ref from 0 to 2 and setup a long-term reference frame - * every 100 frame. - * { - * .lt_idx = 0, - * .lt_gap = 300, - * .lt_delay = 0, - * } - * { - * .lt_idx = 1, - * .lt_gap = 300, - * .lt_delay = 100, - * } - * { - * .lt_idx = 2, - * .lt_gap = 300, - * .lt_delay = 200, - * } - * result: - * frame 0 ... 99 100 101 ... 199 200 201 ... 299 300 301 - * lt_idx 0 xxx x 1 x xxx x 2 x xxx x 0 x - * - * 3. Short-term reference config (MppEncStRefSetup) - * - * 3.1 is_non_ref - * The is_non_ref indicated the current frame is reference frame or not. - * - * 3.2 temporal_id - * The temporal id of the current frame configure. - * - * 3.3 ref_mode: short-term refernce frame reference mode - * - * 3.4 repeat - * The repeat time of the short-term reference frame configure. - * The overall frame count with the same config is repeat + 1. - * - * Examples: - * - */ - -#define REF_MODE_MODE_MASK (0x1F) -#define REF_MODE_ARG_MASK (0xFFFF0000) - -typedef enum MppEncRefMode_e { - /* max 32 mode in 32-bit */ - /* for default ref global config */ - REF_MODE_GLOBAL, - REF_TO_PREV_REF_FRM = REF_MODE_GLOBAL, - REF_TO_PREV_ST_REF, - REF_TO_PREV_LT_REF, - REF_TO_PREV_INTRA, - - /* for global config with args */ - REF_MODE_GLOBAL_WITH_ARG = 0x4, - /* with ref arg as temporal layer id */ - REF_TO_TEMPORAL_LAYER = REF_MODE_GLOBAL_WITH_ARG, - /* with ref arg as long-term reference picture index */ - REF_TO_LT_REF_IDX, - /* with ref arg as short-term reference picture difference frame_num */ - REF_TO_ST_PREV_N_REF, - REF_MODE_GLOBAL_BUTT, - - /* for lt-ref */ - REF_MODE_LT = 0x18, - REF_TO_ST_REF_SETUP, - REF_MODE_LT_BUTT, - - /* for st-ref */ - REF_MODE_ST = 0x1C, - REF_TO_LT_REF_SETUP, - REF_MODE_ST_BUTT, -} MppEncRefMode; - -typedef struct MppEncRefLtFrmCfg_t { - RK_S32 lt_idx; /* lt_idx of the reference frame */ - RK_S32 temporal_id; /* temporal_id of the reference frame */ - MppEncRefMode ref_mode; - RK_S32 ref_arg; - RK_S32 lt_gap; /* gap between two lt-ref with same lt_idx */ - RK_S32 lt_delay; /* delay offset to igop start frame */ -} MppEncRefLtFrmCfg; - -typedef struct MppEncRefStFrmCfg_t { - RK_S32 is_non_ref; - RK_S32 temporal_id; - MppEncRefMode ref_mode; - RK_S32 ref_arg; - RK_S32 repeat; /* repeat times */ -} MppEncRefStFrmCfg; - -typedef struct MppEncRefPreset_t { - /* input parameter for query */ - const char *name; - RK_S32 max_lt_cnt; - RK_S32 max_st_cnt; - MppEncRefLtFrmCfg *lt_cfg; - MppEncRefStFrmCfg *st_cfg; - - /* output parameter */ - RK_S32 lt_cnt; - RK_S32 st_cnt; -} MppEncRefPreset; - -typedef void* MppEncRefCfg; - -#ifdef __cplusplus -extern "C" { -#endif - -MPP_RET mpp_enc_ref_cfg_init(MppEncRefCfg *ref); -MPP_RET mpp_enc_ref_cfg_deinit(MppEncRefCfg *ref); - -MPP_RET mpp_enc_ref_cfg_reset(MppEncRefCfg ref); -MPP_RET mpp_enc_ref_cfg_set_cfg_cnt(MppEncRefCfg ref, RK_S32 lt_cnt, RK_S32 st_cnt); -MPP_RET mpp_enc_ref_cfg_add_lt_cfg(MppEncRefCfg ref, RK_S32 cnt, MppEncRefLtFrmCfg *frm); -MPP_RET mpp_enc_ref_cfg_add_st_cfg(MppEncRefCfg ref, RK_S32 cnt, MppEncRefStFrmCfg *frm); -MPP_RET mpp_enc_ref_cfg_check(MppEncRefCfg ref); - -/* - * A new reference configure will restart a new gop and clear cpb by default. - * The keep cpb function will let encoder keeps the current cpb status and do NOT - * reset all the reference frame in cpb. - */ -MPP_RET mpp_enc_ref_cfg_set_keep_cpb(MppEncRefCfg ref, RK_S32 keep); -MPP_RET mpp_enc_ref_cfg_get_preset(MppEncRefPreset *preset); -MPP_RET mpp_enc_ref_cfg_show(MppEncRefCfg ref); - -#ifdef __cplusplus -} -#endif - -#endif /* __RK_VENC_REF_H__ */ \ No newline at end of file diff --git a/hardware/mpp/include/vcodec_service.h b/hardware/mpp/include/vcodec_service.h deleted file mode 100644 index 5d4bc075c60ea63cc7098c978a3c86f019614cb9..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/vcodec_service.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __VCODEC_SERVICE_H__ -#define __VCODEC_SERVICE_H__ - -#include "rk_type.h" - -#define EXTRA_INFO_MAGIC (0x4C4A46) - -#define VPU_IOC_MAGIC 'l' - -#define VPU_IOC_SET_CLIENT_TYPE _IOW(VPU_IOC_MAGIC, 1, unsigned long) -#define VPU_IOC_GET_HW_FUSE_STATUS _IOW(VPU_IOC_MAGIC, 2, unsigned long) -#define VPU_IOC_SET_REG _IOW(VPU_IOC_MAGIC, 3, unsigned long) -#define VPU_IOC_GET_REG _IOW(VPU_IOC_MAGIC, 4, unsigned long) - -#define VPU_IOC_SET_CLIENT_TYPE_U32 _IOW(VPU_IOC_MAGIC, 1, unsigned int) - -#define VPU_IOC_WRITE(nr, size) _IOC(_IOC_WRITE, VPU_IOC_MAGIC, (nr), (size)) - -#define VDPU1_REGISTERS (101) -#define VDPU2_REGISTERS (159) -#define VDPU1_PP_REGISTERS (164) -#define VDPU2_PP_REGISTERS (184) -#define RKHEVC_REGISTERS (68) -#define RKVDEC_REGISTERS (78) -#define AVSD_REGISTERS (60) - -#define VEPU1_REGISTERS (164) -#define VEPU2_REGISTERS (184) -#define RKVENC_REGISTERS (140) - -#define EXTRA_INFO_SIZE (sizeof(RK_U32) * 34) - -#ifdef __cplusplus -extern "C" { -#endif - -const char *mpp_get_vcodec_dev_name(MppCtxType type, MppCodingType coding); - -#ifdef __cplusplus -} -#endif - -#endif /* __VCODEC_SERVICE_H__ */ \ No newline at end of file diff --git a/hardware/mpp/include/vcodec_service_api.h b/hardware/mpp/include/vcodec_service_api.h deleted file mode 100644 index 1bff2cf1020c80f6dd0842d4c05e2f61c9759293..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/vcodec_service_api.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __VCODEC_SERVICE_API_H__ -#define __VCODEC_SERVICE_API_H__ - -#include "mpp_device.h" - -#ifdef __cplusplus -extern "C" { -#endif - -extern const MppDevApi vcodec_service_api; - -#ifdef __cplusplus -} -#endif - -#endif /* __VCODEC_SERVICE_API_H__ */ \ No newline at end of file diff --git a/hardware/mpp/include/vpu.h b/hardware/mpp/include/vpu.h deleted file mode 100644 index 8c2ea49e8199624275433fb56c1dfc7ff1fdcd44..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/vpu.h +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __VPU_H__ -#define __VPU_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "rk_type.h" - -#define VPU_SUCCESS (0) -#define VPU_FAILURE (-1) - -#define VPU_HW_WAIT_OK VPU_SUCCESS -#define VPU_HW_WAIT_ERROR VPU_FAILURE -#define VPU_HW_WAIT_TIMEOUT 1 - -// vpu decoder 60 registers, size 240B -#define VPU_REG_NUM_DEC (60) -// vpu post processor 41 registers, size 164B -#define VPU_REG_NUM_PP (41) -// vpu decoder + post processor 101 registers, size 404B -#define VPU_REG_NUM_DEC_PP (VPU_REG_NUM_DEC+VPU_REG_NUM_PP) -// vpu encoder 96 registers, size 384B -#define VPU_REG_NUM_ENC (96) - -typedef enum { - VPU_ENC = 0x0, - VPU_DEC = 0x1, - VPU_PP = 0x2, - VPU_DEC_PP = 0x3, - VPU_DEC_HEVC = 0x4, - VPU_DEC_RKV = 0x5, - VPU_ENC_RKV = 0x6, - VPU_DEC_AVS = 0x7, - VPU_ENC_VEPU22 = 0x8, - VPU_TYPE_BUTT, -} VPU_CLIENT_TYPE; - -/* Hardware decoder configuration description */ - -typedef struct VPUHwDecConfig { - RK_U32 maxDecPicWidth; /* Maximum video decoding width supported */ - RK_U32 maxPpOutPicWidth; /* Maximum output width of Post-Processor */ - RK_U32 h264Support; /* HW supports h.264 */ - RK_U32 jpegSupport; /* HW supports JPEG */ - RK_U32 mpeg4Support; /* HW supports MPEG-4 */ - RK_U32 customMpeg4Support; /* HW supports custom MPEG-4 features */ - RK_U32 vc1Support; /* HW supports VC-1 Simple */ - RK_U32 mpeg2Support; /* HW supports MPEG-2 */ - RK_U32 ppSupport; /* HW supports post-processor */ - RK_U32 ppConfig; /* HW post-processor functions bitmask */ - RK_U32 sorensonSparkSupport; /* HW supports Sorenson Spark */ - RK_U32 refBufSupport; /* HW supports reference picture buffering */ - RK_U32 vp6Support; /* HW supports VP6 */ - RK_U32 vp7Support; /* HW supports VP7 */ - RK_U32 vp8Support; /* HW supports VP8 */ - RK_U32 avsSupport; /* HW supports AVS */ - RK_U32 jpegESupport; /* HW supports JPEG extensions */ - RK_U32 rvSupport; /* HW supports REAL */ - RK_U32 mvcSupport; /* HW supports H264 MVC extension */ -} VPUHwDecConfig_t; - -/* Hardware encoder configuration description */ - -typedef struct VPUHwEndConfig { - RK_U32 maxEncodedWidth; /* Maximum supported width for video encoding (not JPEG) */ - RK_U32 h264Enabled; /* HW supports H.264 */ - RK_U32 jpegEnabled; /* HW supports JPEG */ - RK_U32 mpeg4Enabled; /* HW supports MPEG-4 */ - RK_U32 vsEnabled; /* HW supports video stabilization */ - RK_U32 rgbEnabled; /* HW supports RGB input */ - RK_U32 reg_size; /* HW bus type in use */ - RK_U32 reserv[2]; -} VPUHwEncConfig_t; - -typedef enum { - // common command - VPU_CMD_REGISTER, - VPU_CMD_REGISTER_ACK_OK, - VPU_CMD_REGISTER_ACK_FAIL, - VPU_CMD_UNREGISTER, - - VPU_SEND_CONFIG, - VPU_SEND_CONFIG_ACK_OK, - VPU_SEND_CONFIG_ACK_FAIL, - - VPU_GET_HW_INFO, - VPU_GET_HW_INFO_ACK_OK, - VPU_GET_HW_INFO_ACK_FAIL, - - VPU_CMD_BUTT, -} VPU_CMD_TYPE; - -int VPUClientInit(VPU_CLIENT_TYPE type); -RK_S32 VPUClientRelease(int socket); -RK_S32 VPUClientSendReg(int socket, RK_U32 *regs, RK_U32 nregs); -RK_S32 VPUClientSendReg2(RK_S32 socket, RK_S32 offset, RK_S32 size, void *param); -RK_S32 VPUClientWaitResult(int socket, RK_U32 *regs, RK_U32 nregs, VPU_CMD_TYPE *cmd, RK_S32 *len); -RK_S32 VPUClientGetHwCfg(int socket, RK_U32 *cfg, RK_U32 cfg_size); -RK_S32 VPUClientGetIOMMUStatus(void); -RK_U32 VPUCheckSupportWidth(void); - -#ifdef __cplusplus -} -#endif - -#endif /* __VPU_H__ */ \ No newline at end of file diff --git a/hardware/mpp/include/vpu_api.h b/hardware/mpp/include/vpu_api.h deleted file mode 100644 index cf0f76d80c33ffe801c4e1280b66e50ca793eaed..0000000000000000000000000000000000000000 --- a/hardware/mpp/include/vpu_api.h +++ /dev/null @@ -1,467 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#ifndef __VPU_API_H__ -#define __VPU_API_H__ - -#include "rk_type.h" - -/** - * @brief rockchip media process interface - */ - -#define VPU_API_NOPTS_VALUE (0x8000000000000000LL) - -/* - * bit definition of ColorType in structure VPU_FRAME - */ -#define VPU_OUTPUT_FORMAT_TYPE_MASK (0x0000ffff) -#define VPU_OUTPUT_FORMAT_ARGB8888 (0x00000000) -#define VPU_OUTPUT_FORMAT_ABGR8888 (0x00000001) -#define VPU_OUTPUT_FORMAT_RGB888 (0x00000002) -#define VPU_OUTPUT_FORMAT_RGB565 (0x00000003) -#define VPU_OUTPUT_FORMAT_RGB555 (0x00000004) -#define VPU_OUTPUT_FORMAT_YUV420_SEMIPLANAR (0x00000005) -#define VPU_OUTPUT_FORMAT_YUV420_PLANAR (0x00000006) -#define VPU_OUTPUT_FORMAT_YUV422 (0x00000007) -#define VPU_OUTPUT_FORMAT_YUV444 (0x00000008) -#define VPU_OUTPUT_FORMAT_YCH420 (0x00000009) -#define VPU_OUTPUT_FORMAT_BIT_MASK (0x000f0000) -#define VPU_OUTPUT_FORMAT_BIT_8 (0x00000000) -#define VPU_OUTPUT_FORMAT_BIT_10 (0x00010000) -#define VPU_OUTPUT_FORMAT_BIT_12 (0x00020000) -#define VPU_OUTPUT_FORMAT_BIT_14 (0x00030000) -#define VPU_OUTPUT_FORMAT_BIT_16 (0x00040000) -#define VPU_OUTPUT_FORMAT_COLORSPACE_MASK (0x00f00000) -#define VPU_OUTPUT_FORMAT_COLORSPACE_BT709 (0x00100000) -#define VPU_OUTPUT_FORMAT_COLORSPACE_BT2020 (0x00200000) -#define VPU_OUTPUT_FORMAT_DYNCRANGE_MASK (0x0f000000) -#define VPU_OUTPUT_FORMAT_DYNCRANGE_SDR (0x00000000) -#define VPU_OUTPUT_FORMAT_DYNCRANGE_HDR10 (0x01000000) -#define VPU_OUTPUT_FORMAT_DYNCRANGE_HDR_HLG (0x02000000) -#define VPU_OUTPUT_FORMAT_DYNCRANGE_HDR_DOLBY (0x03000000) - -/** - * @brief input picture type - */ -typedef enum { - ENC_INPUT_YUV420_PLANAR = 0, /**< YYYY... UUUU... VVVV */ - ENC_INPUT_YUV420_SEMIPLANAR = 1, /**< YYYY... UVUVUV... */ - ENC_INPUT_YUV422_INTERLEAVED_YUYV = 2, /**< YUYVYUYV... */ - ENC_INPUT_YUV422_INTERLEAVED_UYVY = 3, /**< UYVYUYVY... */ - ENC_INPUT_RGB565 = 4, /**< 16-bit RGB */ - ENC_INPUT_BGR565 = 5, /**< 16-bit RGB */ - ENC_INPUT_RGB555 = 6, /**< 15-bit RGB */ - ENC_INPUT_BGR555 = 7, /**< 15-bit RGB */ - ENC_INPUT_RGB444 = 8, /**< 12-bit RGB */ - ENC_INPUT_BGR444 = 9, /**< 12-bit RGB */ - ENC_INPUT_RGB888 = 10, /**< 24-bit RGB */ - ENC_INPUT_BGR888 = 11, /**< 24-bit RGB */ - ENC_INPUT_RGB101010 = 12, /**< 30-bit RGB */ - ENC_INPUT_BGR101010 = 13 /**< 30-bit RGB */ -} EncInputPictureType; - -typedef enum VPU_API_CMD { - VPU_API_ENC_SETCFG, - VPU_API_ENC_GETCFG, - VPU_API_ENC_SETFORMAT, - VPU_API_ENC_SETIDRFRAME, - - VPU_API_ENABLE_DEINTERLACE, - VPU_API_SET_VPUMEM_CONTEXT, - VPU_API_USE_PRESENT_TIME_ORDER, - VPU_API_SET_DEFAULT_WIDTH_HEIGH, - VPU_API_SET_INFO_CHANGE, - VPU_API_USE_FAST_MODE, - VPU_API_DEC_GET_STREAM_COUNT, - VPU_API_GET_VPUMEM_USED_COUNT, - VPU_API_GET_FRAME_INFO, - VPU_API_SET_OUTPUT_BLOCK, - VPU_API_GET_EOS_STATUS, - VPU_API_SET_OUTPUT_MODE, - - /* get sps/pps header */ - VPU_API_GET_EXTRA_INFO = 0x200, - - VPU_API_SET_IMMEDIATE_OUT = 0x1000, - VPU_API_SET_PARSER_SPLIT_MODE, /* NOTE: should control before init */ - - VPU_API_ENC_VEPU22_START = 0x2000, - VPU_API_ENC_SET_VEPU22_CFG, - VPU_API_ENC_GET_VEPU22_CFG, - VPU_API_ENC_SET_VEPU22_CTU_QP, - VPU_API_ENC_SET_VEPU22_ROI, - - /* mlvec dynamic configure */ - VPU_API_ENC_MLVEC_CFG = 0x4000, - VPU_API_ENC_SET_MAX_TID, - VPU_API_ENC_SET_MARK_LTR, - VPU_API_ENC_SET_USE_LTR, - VPU_API_ENC_SET_FRAME_QP, - VPU_API_ENC_SET_BASE_LAYER_PID, -} VPU_API_CMD; - -typedef struct { - RK_U32 TimeLow; - RK_U32 TimeHigh; -} TIME_STAMP; - -typedef struct { - RK_U32 CodecType; - RK_U32 ImgWidth; - RK_U32 ImgHeight; - RK_U32 ImgHorStride; - RK_U32 ImgVerStride; - RK_U32 BufSize; -} VPU_GENERIC; - -typedef struct VPUMem { - RK_U32 phy_addr; - RK_U32 *vir_addr; - RK_U32 size; - RK_U32 *offset; -} VPUMemLinear_t; - -typedef struct tVPU_FRAME { - RK_U32 FrameBusAddr[2]; // 0: Y address; 1: UV address; - RK_U32 FrameWidth; // buffer horizontal stride - RK_U32 FrameHeight; // buffer vertical stride - RK_U32 OutputWidth; // deprecated - RK_U32 OutputHeight; // deprecated - RK_U32 DisplayWidth; // valid width for display - RK_U32 DisplayHeight; // valid height for display - RK_U32 CodingType; - RK_U32 FrameType; // frame; top_field_first; bot_field_first - RK_U32 ColorType; - RK_U32 DecodeFrmNum; - TIME_STAMP ShowTime; - RK_U32 ErrorInfo; // error information - RK_U32 employ_cnt; - VPUMemLinear_t vpumem; - struct tVPU_FRAME *next_frame; - union { - struct { - RK_U32 Res0[2]; - struct { - RK_U32 ColorPrimaries : 8; - RK_U32 ColorTransfer : 8; - RK_U32 ColorCoeffs : 8; - RK_U32 ColorRange : 1; - RK_U32 Res1 : 7; - }; - - RK_U32 Res2; - }; - - RK_U32 Res[4]; - }; -} VPU_FRAME; - -typedef struct VideoPacket { - RK_S64 pts; /* with unit of us */ - RK_S64 dts; /* with unit of us */ - RK_U8 *data; - RK_S32 size; - RK_U32 capability; - RK_U32 nFlags; -} VideoPacket_t; - -typedef struct DecoderOut { - RK_U8 *data; - RK_U32 size; - RK_S64 timeUs; - RK_S32 nFlags; -} DecoderOut_t; - -typedef struct ParserOut { - RK_U8 *data; - RK_U32 size; - RK_S64 timeUs; - RK_U32 nFlags; - RK_U32 width; - RK_U32 height; -} ParserOut_t; - -typedef struct EncInputStream { - RK_U8 *buf; - RK_S32 size; - RK_U32 bufPhyAddr; - RK_S64 timeUs; - RK_U32 nFlags; -} EncInputStream_t; - -typedef struct EncoderOut { - RK_U8 *data; - RK_S32 size; - RK_S64 timeUs; - RK_S32 keyFrame; -} EncoderOut_t; - -/* - * @brief Enumeration used to define the possible video compression codings. - * @note This essentially refers to file extensions. If the coding is - * being used to specify the ENCODE type, then additional work - * must be done to configure the exact flavor of the compression - * to be used. For decode cases where the user application can - * not differentiate between MPEG-4 and H.264 bit streams, it is - * up to the codec to handle this. - * - * sync with the omx_video.h - */ -typedef enum OMX_RK_VIDEO_CODINGTYPE { - OMX_RK_VIDEO_CodingUnused, /**< Value when coding is N/A */ - OMX_RK_VIDEO_CodingAutoDetect, /**< Autodetection of coding type */ - OMX_RK_VIDEO_CodingMPEG2, /**< AKA: H.262 */ - OMX_RK_VIDEO_CodingH263, /**< H.263 */ - OMX_RK_VIDEO_CodingMPEG4, /**< MPEG-4 */ - OMX_RK_VIDEO_CodingWMV, /**< Windows Media Video (WMV1,WMV2,WMV3)*/ - OMX_RK_VIDEO_CodingRV, /**< all versions of Real Video */ - OMX_RK_VIDEO_CodingAVC, /**< H.264/AVC */ - OMX_RK_VIDEO_CodingMJPEG, /**< Motion JPEG */ - OMX_RK_VIDEO_CodingVP8, /**< VP8 */ - OMX_RK_VIDEO_CodingVP9, /**< VP9 */ - OMX_RK_VIDEO_CodingVC1 = 0x01000000, /**< Windows Media Video (WMV1,WMV2,WMV3)*/ - OMX_RK_VIDEO_CodingFLV1, /**< Sorenson H.263 */ - OMX_RK_VIDEO_CodingDIVX3, /**< DIVX3 */ - OMX_RK_VIDEO_CodingVP6, - OMX_RK_VIDEO_CodingHEVC, /**< H.265/HEVC */ - OMX_RK_VIDEO_CodingAVS, /**< AVS+ */ - OMX_RK_VIDEO_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_RK_VIDEO_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_RK_VIDEO_CodingMax = 0x7FFFFFFF -} OMX_RK_VIDEO_CODINGTYPE; - -typedef enum CODEC_TYPE { - CODEC_NONE, - CODEC_DECODER, - CODEC_ENCODER, - CODEC_BUTT, -} CODEC_TYPE; - -typedef enum VPU_API_ERR { - VPU_API_OK = 0, - VPU_API_ERR_UNKNOW = -1, - VPU_API_ERR_BASE = -1000, - VPU_API_ERR_LIST_STREAM = VPU_API_ERR_BASE - 1, - VPU_API_ERR_INIT = VPU_API_ERR_BASE - 2, - VPU_API_ERR_VPU_CODEC_INIT = VPU_API_ERR_BASE - 3, - VPU_API_ERR_STREAM = VPU_API_ERR_BASE - 4, - VPU_API_ERR_FATAL_THREAD = VPU_API_ERR_BASE - 5, - VPU_API_EOS_STREAM_REACHED = VPU_API_ERR_BASE - 11, - - VPU_API_ERR_BUTT, -} VPU_API_ERR; - -typedef enum VPU_FRAME_ERR { - VPU_FRAME_ERR_UNKNOW = 0x0001, - VPU_FRAME_ERR_UNSUPPORT = 0x0002, -} VPU_FRAME_ERR; - -typedef struct EncParameter { - RK_S32 width; - RK_S32 height; - RK_S32 rc_mode; /* 0 - CQP mode; 1 - CBR mode; 2 - FIXQP mode */ - RK_S32 bitRate; /* target bitrate */ - RK_S32 framerate; - RK_S32 qp; - RK_S32 enableCabac; - RK_S32 cabacInitIdc; - RK_S32 format; - RK_S32 intraPicRate; - RK_S32 framerateout; - RK_S32 profileIdc; - RK_S32 levelIdc; - RK_S32 reserved[3]; -} EncParameter_t; - -typedef struct EXtraCfg { - RK_S32 vc1extra_size; - RK_S32 vp6codeid; - RK_S32 tsformat; - RK_U32 ori_vpu; /* use origin vpu framework */ - /* below used in decode */ - RK_U32 mpp_mode; /* use mpp framework */ - RK_U32 bit_depth; /* 8 or 10 bit */ - RK_U32 yuv_format; /* 0:420 1:422 2:444 */ - RK_U32 reserved[16]; -} EXtraCfg_t; - -/** - * @brief vpu function interface - */ -typedef struct VpuCodecContext { - void* vpuApiObj; - - CODEC_TYPE codecType; - OMX_RK_VIDEO_CODINGTYPE videoCoding; - - RK_U32 width; - RK_U32 height; - void *extradata; - RK_S32 extradata_size; - - RK_U8 enableparsing; - - RK_S32 no_thread; - EXtraCfg_t extra_cfg; - - void* private_data; - - /* - ** 1: error state(not working) 0: working - */ - RK_S32 decoder_err; - - /** - * Allocate and initialize an VpuCodecContext. - * - * @param ctx The context of vpu api, allocated in this function. - * @param extraData The extra data of codec, some codecs need / can - * use extradata like Huffman tables, also live VC1 codec can - * use extradata to initialize itself. - * @param extra_size The size of extra data. - * - * @return 0 for init success, others for failure. - * @note check whether ctx has been allocated success after you do init. - */ - RK_S32 (*init)(struct VpuCodecContext *ctx, RK_U8 *extraData, RK_U32 extra_size); - /** - * @brief both send video stream packet to decoder and get video frame from - * decoder at the same time - * @param ctx The context of vpu codec - * @param pkt[in] Stream to be decoded - * @param aDecOut[out] Decoding frame - * @return 0 for decode success, others for failure. - */ - RK_S32 (*decode)(struct VpuCodecContext *ctx, VideoPacket_t *pkt, DecoderOut_t *aDecOut); - /** - * @brief both send video frame to encoder and get encoded video stream from - * encoder at the same time. - * @param ctx The context of vpu codec - * @param aEncInStrm[in] Frame to be encoded - * @param aEncOut[out] Encoding stream - * @return 0 for encode success, others for failure. - */ - RK_S32 (*encode)(struct VpuCodecContext *ctx, EncInputStream_t *aEncInStrm, EncoderOut_t *aEncOut); - /** - * @brief flush codec while do fast forward playing. - * @param ctx The context of vpu codec - * @return 0 for flush success, others for failure. - */ - RK_S32 (*flush)(struct VpuCodecContext *ctx); - RK_S32 (*control)(struct VpuCodecContext *ctx, VPU_API_CMD cmdType, void* param); - /** - * @brief send video stream packet to decoder only, async interface - * @param ctx The context of vpu codec - * @param pkt Stream to be decoded - * @return 0 for success, others for failure. - */ - RK_S32 (*decode_sendstream)(struct VpuCodecContext *ctx, VideoPacket_t *pkt); - /** - * @brief get video frame from decoder only, async interface - * @param ctx The context of vpu codec - * @param aDecOut Decoding frame - * @return 0 for success, others for failure. - */ - RK_S32 (*decode_getframe)(struct VpuCodecContext *ctx, DecoderOut_t *aDecOut); - /** - * @brief send video frame to encoder only, async interface - * @param ctx The context of vpu codec - * @param aEncInStrm Frame to be encoded - * @return 0 for success, others for failure. - */ - RK_S32 (*encoder_sendframe)(struct VpuCodecContext *ctx, EncInputStream_t *aEncInStrm); - /** - * @brief get encoded video packet from encoder only, async interface - * @param ctx The context of vpu codec - * @param aEncOut Encoding stream - * @return 0 for success, others for failure. - */ - RK_S32 (*encoder_getstream)(struct VpuCodecContext *ctx, EncoderOut_t *aEncOut); -} VpuCodecContext_t; - -/* allocated vpu codec context */ -#ifdef __cplusplus -extern "C" -{ -#endif - -/** - * @brief open context of vpu - * @param ctx pointer of vpu codec context - */ -RK_S32 vpu_open_context(struct VpuCodecContext **ctx); -/** - * @brief close context of vpu - * @param ctx pointer of vpu codec context - */ -RK_S32 vpu_close_context(struct VpuCodecContext **ctx); - -#ifdef __cplusplus -} -#endif - -/* - * vpu_mem api - */ -#define vpu_display_mem_pool_FIELDS \ - RK_S32 (*commit_hdl)(vpu_display_mem_pool *p, RK_S32 hdl, RK_S32 size); \ - void* (*get_free)(vpu_display_mem_pool *p); \ - RK_S32 (*inc_used)(vpu_display_mem_pool *p, void *hdl); \ - RK_S32 (*put_used)(vpu_display_mem_pool *p, void *hdl); \ - RK_S32 (*reset)(vpu_display_mem_pool *p); \ - RK_S32 (*get_unused_num)(vpu_display_mem_pool *p); \ - RK_S32 buff_size; \ - float version; \ - RK_S32 res[18]; - -typedef struct vpu_display_mem_pool vpu_display_mem_pool; - -struct vpu_display_mem_pool { - vpu_display_mem_pool_FIELDS -}; - -#ifdef __cplusplus -extern "C" -{ -#endif - -/* - * vpu memory handle interface - */ -RK_S32 VPUMemJudgeIommu(void); -RK_S32 VPUMallocLinear(VPUMemLinear_t *p, RK_U32 size); -RK_S32 VPUFreeLinear(VPUMemLinear_t *p); -RK_S32 VPUMemDuplicate(VPUMemLinear_t *dst, VPUMemLinear_t *src); -RK_S32 VPUMemLink(VPUMemLinear_t *p); -RK_S32 VPUMemFlush(VPUMemLinear_t *p); -RK_S32 VPUMemClean(VPUMemLinear_t *p); -RK_S32 VPUMemInvalidate(VPUMemLinear_t *p); -RK_S32 VPUMemGetFD(VPUMemLinear_t *p); -RK_S32 VPUMallocLinearFromRender(VPUMemLinear_t *p, RK_U32 size, void *ctx); - -/* - * vpu memory allocator and manager interface - */ -vpu_display_mem_pool* open_vpu_memory_pool(void); -void close_vpu_memory_pool(vpu_display_mem_pool *p); -int create_vpu_memory_pool_allocator(vpu_display_mem_pool **ipool, int num, int size); -void release_vpu_memory_pool_allocator(vpu_display_mem_pool *ipool); - -#ifdef __cplusplus -} -#endif - -#endif /* __VPU_API_H__ */ diff --git a/hardware/mpp/lib/librockchip_mpp.z.so b/hardware/mpp/lib/librockchip_mpp.z.so deleted file mode 100755 index d9a331ed071b9d12d3deedc6498d44e4295ab389..0000000000000000000000000000000000000000 Binary files a/hardware/mpp/lib/librockchip_mpp.z.so and /dev/null differ diff --git a/hardware/mpp/lib64/librockchip_mpp.so b/hardware/mpp/lib64/librockchip_mpp.so deleted file mode 100644 index 97ba171d4c725c36ce692077e8c93645ab3f592e..0000000000000000000000000000000000000000 Binary files a/hardware/mpp/lib64/librockchip_mpp.so and /dev/null differ diff --git a/hardware/mpp/src/mpi_enc_utils.c b/hardware/mpp/src/mpi_enc_utils.c deleted file mode 100644 index e8c4643e963558abae6779542cb32bef25de5c7d..0000000000000000000000000000000000000000 --- a/hardware/mpp/src/mpi_enc_utils.c +++ /dev/null @@ -1,900 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -#define MODULE_TAG "mpi_enc_utils" - -#include -#include "securec.h" -#include "mpp_mem.h" -#include "mpp_log.h" -#include "mpp_buffer.h" -#include "rk_mpi.h" -#include "mpp_common.h" -#include "mpi_enc_utils.h" - -static MPP_RET mpi_enc_gen_ref_cfg(MppEncRefCfg ref, RK_S32 gop_mode) -{ - MppEncRefLtFrmCfg lt_ref[4]; - MppEncRefStFrmCfg st_ref[16]; - RK_S32 lt_cnt = 0; - RK_S32 st_cnt = 0; - MPP_RET ret = 0; - - errno_t eok = memset_s(<_ref, sizeof(lt_ref), 0, sizeof(lt_ref)); - if (eok != EOK) { - mpp_err("memset_s failed\n"); - return MPP_NOK; - } - eok = memset_s(&st_ref, sizeof(st_ref), 0, sizeof(st_ref)); - if (eok != EOK) { - mpp_err("memset_s failed\n"); - return MPP_NOK; - } - - switch (gop_mode) { - case 3 : { - // tsvc4 - // /-> P1 /-> P3 /-> P5 /-> P7 - // / / / / - // //--------> P2 //--------> P6 - // // // - // ///---------------------> P4 - // /// - // P0 ------------------------------------------------> P8 - lt_cnt = 1; - - /* set 8 frame lt-ref gap */ - lt_ref[0].lt_idx = 0; - lt_ref[0].temporal_id = 0; - lt_ref[0].ref_mode = REF_TO_PREV_LT_REF; - lt_ref[0].lt_gap = 8; // 8:set 8 frame - lt_ref[0].lt_delay = 0; - - st_cnt = 9; - /* set tsvc4 st-ref struct */ - /* st 0 layer 0 - ref */ - st_ref[0].is_non_ref = 0; - st_ref[0].temporal_id = 0; - st_ref[0].ref_mode = REF_TO_TEMPORAL_LAYER; - st_ref[0].ref_arg = 0; - st_ref[0].repeat = 0; - /* st 1 layer 3 - non-ref */ - st_ref[1].is_non_ref = 1; - st_ref[1].temporal_id = 3; - st_ref[1].ref_mode = REF_TO_PREV_REF_FRM; - st_ref[1].ref_arg = 0; - st_ref[1].repeat = 0; - /* st 2 layer 2 - ref */ - st_ref[2].is_non_ref = 0; - st_ref[2].temporal_id = 2; - st_ref[2].ref_mode = REF_TO_PREV_REF_FRM; - st_ref[2].ref_arg = 0; - st_ref[2].repeat = 0; - /* st 3 layer 3 - non-ref */ - st_ref[3].is_non_ref = 1; - st_ref[3].temporal_id = 3; - st_ref[3].ref_mode = REF_TO_PREV_REF_FRM; - st_ref[3].ref_arg = 0; - st_ref[3].repeat = 0; - /* st 4 layer 1 - ref */ - st_ref[4].is_non_ref = 0; - st_ref[4].temporal_id = 1; - st_ref[4].ref_mode = REF_TO_PREV_LT_REF; - st_ref[4].ref_arg = 0; - st_ref[4].repeat = 0; - /* st 5 layer 3 - non-ref */ - st_ref[5].is_non_ref = 1; - st_ref[5].temporal_id = 3; - st_ref[5].ref_mode = REF_TO_PREV_REF_FRM; - st_ref[5].ref_arg = 0; - st_ref[5].repeat = 0; - /* st 6 layer 2 - ref */ - st_ref[6].is_non_ref = 0; - st_ref[6].temporal_id = 2; - st_ref[6].ref_mode = REF_TO_PREV_REF_FRM; - st_ref[6].ref_arg = 0; - st_ref[6].repeat = 0; - /* st 7 layer 3 - non-ref */ - st_ref[7].is_non_ref = 1; - st_ref[7].temporal_id = 3; - st_ref[7].ref_mode = REF_TO_PREV_REF_FRM; - st_ref[7].ref_arg = 0; - st_ref[7].repeat = 0; - /* st 8 layer 0 - ref */ - st_ref[8].is_non_ref = 0; - st_ref[8].temporal_id = 0; - st_ref[8].ref_mode = REF_TO_TEMPORAL_LAYER; - st_ref[8].ref_arg = 0; - st_ref[8].repeat = 0; - } - break; - case 2 : { - // tsvc3 - // /-> P1 /-> P3 - // / / - // //--------> P2 - // // - // P0/---------------------> P4 - lt_cnt = 0; - - st_cnt = 5; - /* set tsvc4 st-ref struct */ - /* st 0 layer 0 - ref */ - st_ref[0].is_non_ref = 0; - st_ref[0].temporal_id = 0; - st_ref[0].ref_mode = REF_TO_TEMPORAL_LAYER; - st_ref[0].ref_arg = 0; - st_ref[0].repeat = 0; - /* st 1 layer 2 - non-ref */ - st_ref[1].is_non_ref = 1; - st_ref[1].temporal_id = 2; - st_ref[1].ref_mode = REF_TO_PREV_REF_FRM; - st_ref[1].ref_arg = 0; - st_ref[1].repeat = 0; - /* st 2 layer 1 - ref */ - st_ref[2].is_non_ref = 0; - st_ref[2].temporal_id = 1; - st_ref[2].ref_mode = REF_TO_PREV_REF_FRM; - st_ref[2].ref_arg = 0; - st_ref[2].repeat = 0; - /* st 3 layer 2 - non-ref */ - st_ref[3].is_non_ref = 1; - st_ref[3].temporal_id = 2; - st_ref[3].ref_mode = REF_TO_PREV_REF_FRM; - st_ref[3].ref_arg = 0; - st_ref[3].repeat = 0; - /* st 4 layer 0 - ref */ - st_ref[4].is_non_ref = 0; - st_ref[4].temporal_id = 0; - st_ref[4].ref_mode = REF_TO_TEMPORAL_LAYER; - st_ref[4].ref_arg = 0; - st_ref[4].repeat = 0; - } - break; - case 1 : { - // tsvc2 - // /-> P1 - // / - // P0--------> P2 - lt_cnt = 0; - - st_cnt = 3; - /* set tsvc4 st-ref struct */ - /* st 0 layer 0 - ref */ - st_ref[0].is_non_ref = 0; - st_ref[0].temporal_id = 0; - st_ref[0].ref_mode = REF_TO_TEMPORAL_LAYER; - st_ref[0].ref_arg = 0; - st_ref[0].repeat = 0; - /* st 1 layer 2 - non-ref */ - st_ref[1].is_non_ref = 1; - st_ref[1].temporal_id = 1; - st_ref[1].ref_mode = REF_TO_PREV_REF_FRM; - st_ref[1].ref_arg = 0; - st_ref[1].repeat = 0; - /* st 2 layer 1 - ref */ - st_ref[2].is_non_ref = 0; - st_ref[2].temporal_id = 0; - st_ref[2].ref_mode = REF_TO_PREV_REF_FRM; - st_ref[2].ref_arg = 0; - st_ref[2].repeat = 0; - } - break; - default : { - mpp_err_f("unsupport gop mode %d\n", gop_mode); - } - break; - } - - if (lt_cnt || st_cnt) { - ret = mpp_enc_ref_cfg_set_cfg_cnt(ref, lt_cnt, st_cnt); - - if (lt_cnt) - ret = mpp_enc_ref_cfg_add_lt_cfg(ref, lt_cnt, lt_ref); - - if (st_cnt) - ret = mpp_enc_ref_cfg_add_st_cfg(ref, st_cnt, st_ref); - - /* check and get dpb size */ - ret = mpp_enc_ref_cfg_check(ref); - } - - return ret; -} - -static MPP_RET mpi_enc_gen_smart_gop_ref_cfg(MppEncRefCfg ref, RK_S32 gop_len, RK_S32 vi_len) -{ - MppEncRefLtFrmCfg lt_ref[4]; - MppEncRefStFrmCfg st_ref[16]; - RK_S32 lt_cnt = 1; - RK_S32 st_cnt = 8; - RK_S32 pos = 0; - MPP_RET ret = 0; - - errno_t eok = memset_s(<_ref, sizeof(lt_ref), 0, sizeof(lt_ref)); - if (eok != EOK) { - mpp_err("memset_s failed\n"); - return MPP_NOK; - } - eok = memset_s(&st_ref, sizeof(st_ref), 0, sizeof(st_ref)); - if (eok != EOK) { - mpp_err("memset_s failed\n"); - return MPP_NOK; - } - - ret = mpp_enc_ref_cfg_set_cfg_cnt(ref, lt_cnt, st_cnt); - - /* set 8 frame lt-ref gap */ - lt_ref[0].lt_idx = 0; - lt_ref[0].temporal_id = 0; - lt_ref[0].ref_mode = REF_TO_PREV_LT_REF; - lt_ref[0].lt_gap = gop_len; - lt_ref[0].lt_delay = 0; - - mpp_enc_ref_cfg_add_lt_cfg(ref, 1, lt_ref); - - /* st 0 layer 0 - ref */ - st_ref[pos].is_non_ref = 0; - st_ref[pos].temporal_id = 0; - st_ref[pos].ref_mode = REF_TO_PREV_INTRA; - st_ref[pos].ref_arg = 0; - st_ref[pos].repeat = 0; - pos++; - - /* st 1 layer 1 - non-ref */ - if (vi_len > 1) { - st_ref[pos].is_non_ref = 0; - st_ref[pos].temporal_id = 1; - st_ref[pos].ref_mode = REF_TO_PREV_REF_FRM; - st_ref[pos].ref_arg = 0; - st_ref[pos].repeat = vi_len - 2; - pos++; - } - - st_ref[pos].is_non_ref = 0; - st_ref[pos].temporal_id = 0; - st_ref[pos].ref_mode = REF_TO_PREV_INTRA; - st_ref[pos].ref_arg = 0; - st_ref[pos].repeat = 0; - pos++; - - mpp_enc_ref_cfg_add_st_cfg(ref, pos, st_ref); - - /* check and get dpb size */ - ret = mpp_enc_ref_cfg_check(ref); - - return ret; -} - -/* ���˱������õ�һЩ����������ߣ�����ͼ���ʽ����������ʽ�ȣ�����������֪��ֱ����0 - * test_mpp_enc_cfg_setup�������Զ�����Ĭ�ϵIJ�����bps�� gop�Ȳ��� - */ -static MPP_RET test_ctx_init(MpiEncTestData **data, MpiEncTestArgs *cmd) -{ - MpiEncTestData *p = NULL; - MPP_RET ret = 0; - - if (!data || !cmd) { - mpp_err_f("invalid input data %p cmd %p\n", data, cmd); - return MPP_ERR_NULL_PTR; - } - - p = mpp_calloc(MpiEncTestData, 1); - if (!p) { - mpp_err_f("create MpiEncTestData failed\n"); - ret = MPP_ERR_MALLOC; - *data = p; - return ret; - } - - // get paramter from cmd - p->width = cmd->width; - p->height = cmd->height; - p->hor_stride = MPP_ALIGN(cmd->width, 16); // 16:hor_stride - p->ver_stride = MPP_ALIGN(cmd->height, 16); // 16:ver_stride - p->fmt = cmd->format; - p->type = cmd->type; - - // update resource parameter - switch (p->fmt & MPP_FRAME_FMT_MASK) { - case MPP_FMT_YUV420SP: - case MPP_FMT_YUV420P: { - p->frame_size = MPP_ALIGN(p->hor_stride, 64) * MPP_ALIGN(p->ver_stride, 64) * 3 / 2; - } - break; - - case MPP_FMT_YUV422_YUYV : - case MPP_FMT_YUV422_YVYU : - case MPP_FMT_YUV422_UYVY : - case MPP_FMT_YUV422_VYUY : - case MPP_FMT_YUV422P : - case MPP_FMT_YUV422SP : - case MPP_FMT_RGB444 : - case MPP_FMT_BGR444 : - case MPP_FMT_RGB555 : - case MPP_FMT_BGR555 : - case MPP_FMT_RGB565 : - case MPP_FMT_BGR565 : { - p->frame_size = MPP_ALIGN(p->hor_stride, 64) * MPP_ALIGN(p->ver_stride, 64) * 2; - } - break; - default: { - p->frame_size = MPP_ALIGN(p->hor_stride, 64) * MPP_ALIGN(p->ver_stride, 64) * 4; - } - break; - } - *data = p; - return ret; -} - -static MPP_RET test_ctx_deinit(MpiEncTestData **data) -{ - MpiEncTestData *p = NULL; - - if (!data) { - mpp_err_f("invalid input data %p\n", data); - return MPP_ERR_NULL_PTR; - } - p = *data; - if (p) { - MPP_FREE(p); - *data = NULL; - } - return MPP_OK; -} - -static MPP_RET test_mpp_enc_cfg_setup(MpiEncTestData *p) -{ - MPP_RET ret; - MppApi *mpi; - MppCtx ctx; - MppEncCfg cfg; - - if (p == NULL) - return MPP_ERR_NULL_PTR; - - mpi = p->mpi; - ctx = p->ctx; - cfg = p->cfg; - - /* setup default parameter */ - if (p->fps_in_den == 0) - p->fps_in_den = 1; - if (p->fps_in_num == 0) - p->fps_in_num = 30; - if (p->fps_out_den == 0) - p->fps_out_den = 1; - if (p->fps_out_num == 0) - p->fps_out_num = 30; - - /* ����Ĭ��bps */ - if (!p->bps) - p->bps = p->width * p->height / 8 * (p->fps_out_num / p->fps_out_den); - - mpp_enc_cfg_set_s32(cfg, "prep:width", p->width); - mpp_enc_cfg_set_s32(cfg, "prep:height", p->height); - mpp_enc_cfg_set_s32(cfg, "prep:hor_stride", p->hor_stride); - mpp_enc_cfg_set_s32(cfg, "prep:ver_stride", p->ver_stride); - mpp_enc_cfg_set_s32(cfg, "prep:format", p->fmt); - - mpp_enc_cfg_set_s32(cfg, "rc:mode", p->rc_mode); - - /* fix input / output frame rate */ - mpp_enc_cfg_set_s32(cfg, "rc:fps_in_flex", p->fps_in_flex); - mpp_enc_cfg_set_s32(cfg, "rc:fps_in_num", p->fps_in_num); - mpp_enc_cfg_set_s32(cfg, "rc:fps_in_denorm", p->fps_in_den); - mpp_enc_cfg_set_s32(cfg, "rc:fps_out_flex", p->fps_out_flex); - mpp_enc_cfg_set_s32(cfg, "rc:fps_out_num", p->fps_out_num); - mpp_enc_cfg_set_s32(cfg, "rc:fps_out_denorm", p->fps_out_den); - mpp_enc_cfg_set_s32(cfg, "rc:gop", p->gop_len ? p->gop_len : p->fps_out_num * 2); - - /* drop frame or not when bitrate overflow */ - mpp_enc_cfg_set_u32(cfg, "rc:drop_mode", MPP_ENC_RC_DROP_FRM_DISABLED); - mpp_enc_cfg_set_u32(cfg, "rc:drop_thd", 20); /* 20% of max bps */ - mpp_enc_cfg_set_u32(cfg, "rc:drop_gap", 1); /* Do not continuous drop frame */ - - /* setup bitrate for different rc_mode */ - mpp_enc_cfg_set_s32(cfg, "rc:bps_target", p->bps); - switch (p->rc_mode) { - case MPP_ENC_RC_MODE_FIXQP : { - /* do not setup bitrate on FIXQP mode */ - } - break; - case MPP_ENC_RC_MODE_CBR : { - /* CBR mode has narrow bound */ - mpp_enc_cfg_set_s32(cfg, "rc:bps_max", p->bps_max ? p->bps_max : p->bps * 17 / 16); - mpp_enc_cfg_set_s32(cfg, "rc:bps_min", p->bps_min ? p->bps_min : p->bps * 15 / 16); - } - break; - case MPP_ENC_RC_MODE_VBR : - case MPP_ENC_RC_MODE_AVBR : { - /* VBR mode has wide bound */ - mpp_enc_cfg_set_s32(cfg, "rc:bps_max", p->bps_max ? p->bps_max : p->bps * 17 / 16); - mpp_enc_cfg_set_s32(cfg, "rc:bps_min", p->bps_min ? p->bps_min : p->bps * 1 / 16); - } - break; - default : { - /* default use CBR mode */ - mpp_enc_cfg_set_s32(cfg, "rc:bps_max", p->bps_max ? p->bps_max : p->bps * 17 / 16); - mpp_enc_cfg_set_s32(cfg, "rc:bps_min", p->bps_min ? p->bps_min : p->bps * 15 / 16); - } - break; - } - - /* setup qp for different codec and rc_mode */ - switch (p->type) { - case MPP_VIDEO_CodingAVC : - case MPP_VIDEO_CodingHEVC : { - switch (p->rc_mode) { - case MPP_ENC_RC_MODE_FIXQP : { - mpp_enc_cfg_set_s32(cfg, "rc:qp_init", 20); // 20:mpp cfg value - mpp_enc_cfg_set_s32(cfg, "rc:qp_max", 20); // 20:mpp cfg value - mpp_enc_cfg_set_s32(cfg, "rc:qp_min", 20); // 20:mpp cfg value - mpp_enc_cfg_set_s32(cfg, "rc:qp_max_i", 20); // 20:mpp cfg value - mpp_enc_cfg_set_s32(cfg, "rc:qp_min_i", 20); // 20:mpp cfg value - mpp_enc_cfg_set_s32(cfg, "rc:qp_ip", 2); - } - break; - case MPP_ENC_RC_MODE_CBR : - case MPP_ENC_RC_MODE_VBR : - case MPP_ENC_RC_MODE_AVBR : { - mpp_enc_cfg_set_s32(cfg, "rc:qp_init", 26); // 26:mpp cfg value - mpp_enc_cfg_set_s32(cfg, "rc:qp_max", 51); // 51:mpp cfg value - mpp_enc_cfg_set_s32(cfg, "rc:qp_min", 10); // 10:mpp cfg value - mpp_enc_cfg_set_s32(cfg, "rc:qp_max_i", 51); // 51:mpp cfg value - mpp_enc_cfg_set_s32(cfg, "rc:qp_min_i", 10); // 10:mpp cfg value - mpp_enc_cfg_set_s32(cfg, "rc:qp_ip", 2); - } - break; - default : { - mpp_err_f("unsupport encoder rc mode %d\n", p->rc_mode); - } - break; - } - } - break; - case MPP_VIDEO_CodingVP8 : { - /* vp8 only setup base qp range */ - mpp_enc_cfg_set_s32(cfg, "rc:qp_init", 40); // 40:mpp cfg value - mpp_enc_cfg_set_s32(cfg, "rc:qp_max", 127); // 127:mpp cfg value - mpp_enc_cfg_set_s32(cfg, "rc:qp_min", 0); - mpp_enc_cfg_set_s32(cfg, "rc:qp_max_i", 127); // 127:mpp cfg value - mpp_enc_cfg_set_s32(cfg, "rc:qp_min_i", 0); - mpp_enc_cfg_set_s32(cfg, "rc:qp_ip", 6); // 6:mpp cfg value - } - break; - case MPP_VIDEO_CodingMJPEG : { - /* jpeg use special codec config to control qtable */ - mpp_enc_cfg_set_s32(cfg, "jpeg:q_factor", 80); // 80:mpp cfg value - mpp_enc_cfg_set_s32(cfg, "jpeg:qf_max", 99); // 99:mpp cfg value - mpp_enc_cfg_set_s32(cfg, "jpeg:qf_min", 1); - } - break; - default : { - } - break; - } - - /* setup codec */ - mpp_enc_cfg_set_s32(cfg, "codec:type", p->type); - switch (p->type) { - case MPP_VIDEO_CodingAVC : { - /* - * H.264 profile_idc parameter - * 66 - Baseline profile - * 77 - Main profile - * 100 - High profile - */ - mpp_enc_cfg_set_s32(cfg, "h264:profile", 100); - /* - * H.264 level_idc parameter - * 10 / 11 / 12 / 13 - qcif@15fps / cif@7.5fps / cif@15fps / cif@30fps - * 20 / 21 / 22 - cif@30fps / half-D1@@25fps / D1@12.5fps - * 30 / 31 / 32 - D1@25fps / 720p@30fps / 720p@60fps - * 40 / 41 / 42 - 1080p@30fps / 1080p@30fps / 1080p@60fps - * 50 / 51 / 52 - 4K@30fps - */ - mpp_enc_cfg_set_s32(cfg, "h264:level", 40); - mpp_enc_cfg_set_s32(cfg, "h264:cabac_en", 1); - mpp_enc_cfg_set_s32(cfg, "h264:cabac_idc", 0); - mpp_enc_cfg_set_s32(cfg, "h264:trans8x8", 1); - } - break; - case MPP_VIDEO_CodingHEVC : - case MPP_VIDEO_CodingMJPEG : - case MPP_VIDEO_CodingVP8 : { - } - break; - default : { - mpp_err_f("unsupport encoder coding type %d\n", p->type); - } - break; - } - - p->split_mode = 0; - p->split_arg = 0; - - mpp_env_get_u32("split_mode", &p->split_mode, MPP_ENC_SPLIT_NONE); - mpp_env_get_u32("split_arg", &p->split_arg, 0); - - if (p->split_mode) { - mpp_log("%p split_mode %d split_arg %d\n", ctx, p->split_mode, p->split_arg); - mpp_enc_cfg_set_s32(cfg, "split:mode", p->split_mode); - mpp_enc_cfg_set_s32(cfg, "split:arg", p->split_arg); - } - - ret = mpi->control(ctx, MPP_ENC_SET_CFG, cfg); - if (ret) { - mpp_err("mpi control enc set cfg failed ret %d\n", ret); - return ret; - } - - /* optional */ - p->sei_mode = MPP_ENC_SEI_MODE_ONE_FRAME; - ret = mpi->control(ctx, MPP_ENC_SET_SEI_CFG, &p->sei_mode); - if (ret) { - mpp_err("mpi control enc set sei cfg failed ret %d\n", ret); - return ret; - } - - if (p->type == MPP_VIDEO_CodingAVC || p->type == MPP_VIDEO_CodingHEVC) { - p->header_mode = MPP_ENC_HEADER_MODE_EACH_IDR; - ret = mpi->control(ctx, MPP_ENC_SET_HEADER_MODE, &p->header_mode); - if (ret) { - mpp_err("mpi control enc set header mode failed ret %d\n", ret); - return ret; - } - } - - RK_U32 gop_mode = p->gop_mode; - - mpp_env_get_u32("gop_mode", &gop_mode, gop_mode); - if (gop_mode) { - MppEncRefCfg ref; - - mpp_enc_ref_cfg_init(&ref); - - if (p->gop_mode < 4) { - mpi_enc_gen_ref_cfg(ref, gop_mode); - } else { - mpi_enc_gen_smart_gop_ref_cfg(ref, p->gop_len, p->vi_len); - } - ret = mpi->control(ctx, MPP_ENC_SET_REF_CFG, ref); - if (ret) { - mpp_err("mpi control enc set ref cfg failed ret %d\n", ret); - return ret; - } - mpp_enc_ref_cfg_deinit(&ref); - } - return ret; -} - -static void test_mpp_frame_set_param(MppFrame frame, MpiEncTestData *p) -{ - mpp_frame_set_width(frame, p->width); - mpp_frame_set_height(frame, p->height); - mpp_frame_set_hor_stride(frame, p->hor_stride); - mpp_frame_set_ver_stride(frame, p->ver_stride); - mpp_frame_set_fmt(frame, p->fmt); - mpp_frame_set_eos(frame, p->frm_eos); -} - -static void test_mpp_ctx_cleanup(MpiEncTestData *p) -{ - if (!p) { - mpp_err("test_mpp_ctx_cleanup p == NULL\n"); - return; - } - - if (p->mpi->reset) { - p->mpi->reset(p->ctx); - } - - if (p->ctx) { - mpp_destroy(p->ctx); - p->ctx = NULL; - } - - if (p->cfg) { - mpp_enc_cfg_deinit(p->cfg); - p->cfg = NULL; - } - - if (p->pkt_buf) { - mpp_buffer_put(p->pkt_buf); - p->pkt_buf = NULL; - } - - if (p->buf_grp) { - mpp_buffer_group_put(p->buf_grp); - p->buf_grp = NULL; - } - - test_ctx_deinit(&p); -} - -int hal_mpp_get_sps(void *ctx, unsigned char *buf, size_t *buf_size) -{ - int ret; - MppApi *mpi; - MppCtx mpp_ctx; - MppPacket packet = NULL; - MpiEncTestData *p = (MpiEncTestData *)ctx; - errno_t eok; - - if (!p) { - mpp_err("mpi control enc get extra info failed\n"); - return MPP_NOK; - } - mpi = p->mpi; - mpp_ctx = p->ctx; - - /* - * Can use packet with normal malloc buffer as input not pkt_buf. - * Please refer to vpu_api_legacy.cpp for normal buffer case. - * Using pkt_buf buffer here is just for simplifing demo. - */ - - mpp_packet_init_with_buffer(&packet, p->pkt_buf); - /* NOTE: It is important to clear output packet length!! */ - mpp_packet_set_length(packet, 0); - - // ����һ��H264��H265ר�õ�һЩ���� - if (p->type == MPP_VIDEO_CodingAVC || p->type == MPP_VIDEO_CodingHEVC) { - ret = mpi->control(mpp_ctx, MPP_ENC_GET_HDR_SYNC, packet); - if (ret) { - mpp_err("mpi control enc get extra info failed\n"); - ret = MPP_NOK; - mpp_packet_deinit(&packet); - return ret; - } - } - - void *ptr = mpp_packet_get_pos(packet); - size_t len = mpp_packet_get_length(packet); - if (*buf_size < len) { - mpp_err("mpi buffer size too small\n"); - ret = MPP_NOK; - mpp_packet_deinit(&packet); - return ret; - } - - eok = memcpy_s(buf, len, ptr, len); - if (eok != EOK) { - mpp_err("memcpy_s failed\n"); - return MPP_NOK; - } - - *buf_size = len; - - ret = MPP_OK; - mpp_packet_deinit(&packet); - return ret; -} - -int hal_mpp_encode(void *ctx, int dma_fd, unsigned char *buf, size_t *buf_size) -{ - if (!ctx) { - mpp_err("memset_s failed\n"); - return MPP_NOK; - } - - MPP_RET ret = 0; - MppFrame frame = NULL; - MppMeta meta = NULL; - MppPacket packet = NULL; - MpiEncTestData *p = (MpiEncTestData *)ctx; - MppApi *mpi = p->mpi; - RK_U32 eoi = 1; - RK_U32 packet_num = 0; - MppBuffer cam_buf = NULL; - MppBufferInfo info; - - errno_t eok = memset_s(&info, sizeof(MppBufferInfo), 0, sizeof(MppBufferInfo)); - if (eok != EOK) { - mpp_err("memset_s failed\n"); - return MPP_NOK; - } - info.type = MPP_BUFFER_TYPE_EXT_DMA; - info.fd = dma_fd; - info.size = p->frame_size & 0x07ffffff; - info.index = (p->frame_size & 0xf8000000) >> 27; - - ret = mpp_buffer_import(&cam_buf, &info); - if (ret != MPP_SUCCESS) { - mpp_err_f("mpp_buffer_import failed\n"); - return MPP_NOK; - } - - ret = mpp_frame_init(&frame); - if (ret) { - mpp_err_f("mpp_frame_init failed\n"); - return MPP_NOK; - } - - /* set frame size info */ - test_mpp_frame_set_param(frame, p); - - /* set frame data include fd */ - mpp_frame_set_buffer(frame, cam_buf); - - /* packet init */ - mpp_packet_init_with_buffer(&packet, p->pkt_buf); - /* NOTE: It is important to clear output packet length!! */ - mpp_packet_set_length(packet, 0); - - meta = mpp_frame_get_meta(frame); - mpp_meta_set_packet(meta, KEY_OUTPUT_PACKET, packet); - - /* - * NOTE: in non-block mode the frame can be resent. - * The default input timeout mode is block. - * - * User should release the input frame to meet the requirements of - * resource creator must be the resource destroyer. - */ - ret = mpi->encode_put_frame(p->ctx, frame); - if (ret) { - mpp_err("mpp encode put frame failed\n"); - mpp_frame_deinit(&frame); - if (cam_buf) { - mpp_buffer_put(cam_buf); - } - mpp_packet_deinit(&packet); - return ret; - } - - mpp_frame_deinit(&frame); - - packet_num = 0; - - do { - ret = mpi->encode_get_packet(p->ctx, &packet); - if (ret) { - mpp_err("mpp encode get packet failed\n"); - if (cam_buf) { - mpp_buffer_put(cam_buf); - } - mpp_packet_deinit(&packet); - return ret; - } - - mpp_assert(packet); - - if (packet) { - /* for low delay partition encoding */ - if (mpp_packet_is_partition(packet)) { - eoi = mpp_packet_is_eoi(packet); - } - - p->frame_count += eoi; - packet_num++; - } - } while (!eoi); - - void *ptr = mpp_packet_get_pos(packet); - size_t len = mpp_packet_get_length(packet); - - if (packet_num != 1) { - mpp_err("packet_num %u != 1\n"); - ret = MPP_NOK; - if (cam_buf) { - mpp_buffer_put(cam_buf); - } - mpp_packet_deinit(&packet); - return ret; - } - - if (*buf_size < len) { - mpp_err("mpi buffer size too small\n"); - ret = MPP_NOK; - if (cam_buf) { - mpp_buffer_put(cam_buf); - } - mpp_packet_deinit(&packet); - return ret; - } - - eok = memcpy_s(buf, len, ptr, len); - if (eok != EOK) { - mpp_err("memcpy_s failed\n"); - return MPP_NOK; - } - - *buf_size = len; - - ret = MPP_OK; - if (cam_buf) - mpp_buffer_put(cam_buf); - - mpp_packet_deinit(&packet); - return ret; -} - -void *hal_mpp_ctx_create(MpiEncTestArgs *args) -{ - MPP_RET ret = 0; - MpiEncTestData *p = NULL; - MppPollType timeout = MPP_POLL_BLOCK; - - /* ��ʼ��һ�³��õIJ������ã�cmd�����ñȽ϶� */ - ret = test_ctx_init(&p, args); - if (ret) { - mpp_err_f("test data init failed ret %d\n", ret); - mpp_err("%p mpi_enc_test failed ret %d\n", p->ctx, ret); - return NULL; - } - - ret = mpp_buffer_group_get_internal(&p->buf_grp, MPP_BUFFER_TYPE_DRM); - if (ret) { - mpp_err_f("failed to get mpp buffer group ret %d\n", ret); - mpp_err("%p mpi_enc_test failed ret %d\n", p->ctx, ret); - return NULL; - } - - /* pkt_buf�����Ա���?���Ǹ�packetʹ�õ�buffer */ - ret = mpp_buffer_get(p->buf_grp, &p->pkt_buf, p->frame_size); - if (ret) { - mpp_err_f("failed to get buffer for output packet ret %d\n", ret); - mpp_err("%p mpi_enc_test failed ret %d\n", p->ctx, ret); - return NULL; - } - - // encoder demo - ret = mpp_create(&p->ctx, &p->mpi); - if (ret) { - mpp_err("mpp_create failed ret %d\n", ret); - mpp_err("%p mpi_enc_test failed ret %d\n", p->ctx, ret); - return NULL; - } - - mpp_log("%p mpi_enc_test encoder test start w %d h %d type %d\n", - p->ctx, p->width, p->height, p->type); - - ret = p->mpi->control(p->ctx, MPP_SET_OUTPUT_TIMEOUT, &timeout); - if (MPP_OK != ret) { - mpp_err("mpi control set output timeout %d ret %d\n", timeout, ret); - mpp_err("%p mpi_enc_test failed ret %d\n", p->ctx, ret); - return NULL; - } - - ret = mpp_init(p->ctx, MPP_CTX_ENC, p->type); - if (ret) { - mpp_err("mpp_init failed ret %d\n", ret); - mpp_err("%p mpi_enc_test failed ret %d\n", p->ctx, ret); - return NULL; - } - - ret = mpp_enc_cfg_init(&p->cfg); - if (ret) { - mpp_err_f("mpp_enc_cfg_init failed ret %d\n", ret); - mpp_err("%p mpi_enc_test failed ret %d\n", p->ctx, ret); - return NULL; - } - - ret = test_mpp_enc_cfg_setup(p); - if (ret) { - mpp_err_f("test mpp setup failed ret %d\n", ret); - mpp_err("%p mpi_enc_test failed ret %d\n", p->ctx, ret); - return NULL; - } - - return p; -} - -void hal_mpp_ctx_delete(void *ctx) -{ - test_mpp_ctx_cleanup(ctx); -} diff --git a/hardware/rga/BUILD.gn b/hardware/rga/BUILD.gn deleted file mode 100755 index 9a671167fe4b7d98f31e59953b303bda9e3e0827..0000000000000000000000000000000000000000 --- a/hardware/rga/BUILD.gn +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright (C) 2021 HiHope Open Source Organization . -# 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") - -ohos_prebuilt_shared_library("librga") { - if (target_cpu == "arm") { - source = "lib/librga.z.so" - } else if (target_cpu == "arm64") { - source = "lib64/librga.z.so" - } - install_images = [ chipset_base_dir ] - subsystem_name = "hdf" - part_name = "camera_device_driver" - install_enable = true -} diff --git a/hardware/rga/include/GrallocOps.h b/hardware/rga/include/GrallocOps.h deleted file mode 100755 index 4c5ca522b0f4d5233bce42af87566c800b66d259..0000000000000000000000000000000000000000 --- a/hardware/rga/include/GrallocOps.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (C) 2016 Rockchip Electronics Co., Ltd. - * Authors: - * Zhiqin Wei - * - * 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. - */ - -#ifndef _rk_graphic_buffer_h_ -#define _rk_graphic_buffer_h_ -#endif // _rk_graphic_buffer_h_ diff --git a/hardware/rga/include/RgaApi.h b/hardware/rga/include/RgaApi.h deleted file mode 100755 index 9acb9541a90883b2ef98a9ffefbc7b04cfb8d213..0000000000000000000000000000000000000000 --- a/hardware/rga/include/RgaApi.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (C) 2016 Rockchip Electronics Co., Ltd. - * Authors: - * Zhiqin Wei - * - * 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. - */ -#ifndef _rockchip_rga_c_h_ -#define _rockchip_rga_c_h_ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "drmrga.h" -#include "rga.h" - -#ifdef __cplusplus -extern "C"{ -#endif - -/* - * Compatible with the old version of C interface.The new - * version of the C interface no longer requires users to - * initialize rga, so RgaInit and RgaDeInit are just for - * compatibility with the old C interface, so please do - * not use ctx, because it is usually a NULL. - */ -#define RgaInit(ctx) ( { \ - int ret = 0; \ - ret = c_RkRgaInit(); \ - c_RkRgaGetContext(ctx); \ - ret; \ -}) -#define RgaDeInit(ctx) { \ - (void)(ctx); /* unused */ \ - c_RkRgaDeInit(); \ -} -#define RgaBlit(...) c_RkRgaBlit(__VA_ARGS__) -#define RgaCollorFill(...) c_RkRgaColorFill(__VA_ARGS__) -#define RgaFlush() c_RkRgaFlush() - -int c_RkRgaInit(void); -void c_RkRgaDeInit(void); -void c_RkRgaGetContext(void **ctx); -int c_RkRgaBlit(rga_info_t *src, rga_info_t *dst, rga_info_t *src1); -int c_RkRgaColorFill(rga_info_t *dst); -int c_RkRgaFlush(void); - -int c_RkRgaGetAllocBuffer(bo_t *bo_info, int width, int height, int bpp); -int c_RkRgaGetAllocBufferCache(bo_t *bo_info, int width, int height, int bpp); -int c_RkRgaGetMmap(bo_t *bo_info); -int c_RkRgaUnmap(bo_t *bo_info); -int c_RkRgaFree(bo_t *bo_info); -int c_RkRgaGetBufferFd(bo_t *bo_info, int *fd); - -#ifdef __cplusplus -} -#endif - -#endif /* #ifndef _rockchip_rga_c_h_ */ diff --git a/hardware/rga/include/RgaMutex.h b/hardware/rga/include/RgaMutex.h deleted file mode 100755 index 092ef94b52ac00f0585eaa86437a42f34a22448c..0000000000000000000000000000000000000000 --- a/hardware/rga/include/RgaMutex.h +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Copyright (C) 2020 Rockchip Electronics Co., Ltd. - * Authors: - * PutinLee - * - * 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. - */ - - -#ifndef _LIBS_RGA_MUTEX_H -#define _LIBS_RGA_MUTEX_H - -#include -#include -#include - -#include - - -// Enable thread safety attributes only with clang. -// The attributes can be safely erased when compiling with other compilers. -#if defined(__clang__) && (!defined(SWIG)) -#define THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x)) -#else -#define THREAD_ANNOTATION_ATTRIBUTE__(x) // no-op -#endif - -#define CAPABILITY(x) THREAD_ANNOTATION_ATTRIBUTE__(capability(x)) - -#define SCOPED_CAPABILITY THREAD_ANNOTATION_ATTRIBUTE__(scoped_lockable) - -#define GUARDED_BY(x) THREAD_ANNOTATION_ATTRIBUTE__(guarded_by(x)) - -#define PT_GUARDED_BY(x) THREAD_ANNOTATION_ATTRIBUTE__(pt_guarded_by(x)) - -#define ACQUIRED_BEFORE(...) THREAD_ANNOTATION_ATTRIBUTE__(acquired_before(__VA_ARGS__)) - -#define ACQUIRED_AFTER(...) THREAD_ANNOTATION_ATTRIBUTE__(acquired_after(__VA_ARGS__)) - -#define REQUIRES(...) THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(__VA_ARGS__)) - -#define REQUIRES_SHARED(...) THREAD_ANNOTATION_ATTRIBUTE__(requires_shared_capability(__VA_ARGS__)) - -#define ACQUIRE(...) THREAD_ANNOTATION_ATTRIBUTE__(acquire_capability(__VA_ARGS__)) - -#define ACQUIRE_SHARED(...) THREAD_ANNOTATION_ATTRIBUTE__(acquire_shared_capability(__VA_ARGS__)) - -#define RELEASE(...) THREAD_ANNOTATION_ATTRIBUTE__(release_capability(__VA_ARGS__)) - -#define RELEASE_SHARED(...) THREAD_ANNOTATION_ATTRIBUTE__(release_shared_capability(__VA_ARGS__)) - -#define TRY_ACQUIRE(...) THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_capability(__VA_ARGS__)) - -#define TRY_ACQUIRE_SHARED(...) \ - THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_shared_capability(__VA_ARGS__)) - -#define EXCLUDES(...) THREAD_ANNOTATION_ATTRIBUTE__(locks_excluded(__VA_ARGS__)) - -#define ASSERT_CAPABILITY(x) THREAD_ANNOTATION_ATTRIBUTE__(assert_capability(x)) - -#define ASSERT_SHARED_CAPABILITY(x) THREAD_ANNOTATION_ATTRIBUTE__(assert_shared_capability(x)) - -#define RETURN_CAPABILITY(x) THREAD_ANNOTATION_ATTRIBUTE__(lock_returned(x)) - -#define NO_THREAD_SAFETY_ANALYSIS THREAD_ANNOTATION_ATTRIBUTE__(no_thread_safety_analysis) - -class Condition; - -/* - * NOTE: This class is for code that builds on Win32. Its usage is - * deprecated for code which doesn't build for Win32. New code which - * doesn't build for Win32 should use std::mutex and std::lock_guard instead. - * - * Simple mutex class. The implementation is system-dependent. - * - * The mutex must be unlocked by the thread that locked it. They are not - * recursive, i.e. the same thread can't lock it multiple times. - */ -class CAPABILITY("mutex") Mutex { - public: - enum { - PRIVATE = 0, - SHARED = 1 - }; - - Mutex(); - explicit Mutex(const char* name); - explicit Mutex(int type, const char* name = nullptr); - ~Mutex(); - - // lock or unlock the mutex - int32_t lock() ACQUIRE(); - void unlock() RELEASE(); - - // lock if possible; returns 0 on success, error otherwise - int32_t tryLock() TRY_ACQUIRE(0); - - int32_t timedLock(int64_t timeoutNs) TRY_ACQUIRE(0); - - // Manages the mutex automatically. It'll be locked when Autolock is - // constructed and released when Autolock goes out of scope. - class SCOPED_CAPABILITY Autolock { - public: - inline explicit Autolock(Mutex& mutex) ACQUIRE(mutex) : mLock(mutex) { - mLock.lock(); - } - inline explicit Autolock(Mutex* mutex) ACQUIRE(mutex) : mLock(*mutex) { - mLock.lock(); - } - inline ~Autolock() RELEASE() { - mLock.unlock(); - } - - private: - Mutex& mLock; - // Cannot be copied or moved - declarations only - Autolock(const Autolock&); - Autolock& operator=(const Autolock&); - }; - - private: - friend class Condition; - - // A mutex cannot be copied - Mutex(const Mutex&); - Mutex& operator=(const Mutex&); - - pthread_mutex_t mMutex; -}; - -// --------------------------------------------------------------------------- -inline Mutex::Mutex() { - pthread_mutex_init(&mMutex, nullptr); -} -inline Mutex::Mutex(__attribute__((unused)) const char* name) { - pthread_mutex_init(&mMutex, nullptr); -} -inline Mutex::Mutex(int type, __attribute__((unused)) const char* name) { - if (type == SHARED) { - pthread_mutexattr_t attr; - pthread_mutexattr_init(&attr); - pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED); - pthread_mutex_init(&mMutex, &attr); - pthread_mutexattr_destroy(&attr); - } else { - pthread_mutex_init(&mMutex, nullptr); - } -} -inline Mutex::~Mutex() { - pthread_mutex_destroy(&mMutex); -} -inline int32_t Mutex::lock() { - return -pthread_mutex_lock(&mMutex); -} -inline void Mutex::unlock() { - pthread_mutex_unlock(&mMutex); -} -inline int32_t Mutex::tryLock() { - return -pthread_mutex_trylock(&mMutex); -} -inline int32_t Mutex::timedLock(int64_t timeoutNs) { - timespec now; - clock_gettime(CLOCK_REALTIME, &now); - timeoutNs += now.tv_sec * 1000000000 + now.tv_nsec; // 1000000000:unit conversion - const struct timespec ts = { - static_cast(timeoutNs / 1000000000), // 1000000000:unit conversion - static_cast(timeoutNs % 1000000000), // 1000000000:unit conversion - }; - return -pthread_mutex_timedlock(&mMutex, &ts); -} - -// --------------------------------------------------------------------------- - -/* - * Automatic mutex. Declare one of these at the top of a function. - * When the function returns, it will go out of scope, and release the - * mutex. - */ - -typedef Mutex::Autolock AutoMutex; -#endif // _LIBS_RGA_MUTEX_H \ No newline at end of file diff --git a/hardware/rga/include/RgaSingleton.h b/hardware/rga/include/RgaSingleton.h deleted file mode 100755 index ff371f1e9fe90483fc871c4ea0f16ea87e22c23d..0000000000000000000000000000000000000000 --- a/hardware/rga/include/RgaSingleton.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (C) 2016 Rockchip Electronics Co., Ltd. - * Authors: - * Zhiqin Wei - * - * 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. - */ - -#ifndef _LIBS_RGA_SINGLETON_H -#define _LIBS_RGA_SINGLETON_H - -#include "RgaMutex.h" - -#if defined(__clang__) -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wundefined-var-template" -#endif - -template -class Singleton { -public: - static TYPE& getInstance() - { - Mutex::Autolock _l(sLock); - TYPE* instance = sInstance; - if (instance == nullptr) { - instance = new TYPE(); - sInstance = instance; - } - return *instance; - } - static bool hasInstance() - { - Mutex::Autolock _l(sLock); - return sInstance != nullptr; - } - -protected: - ~Singleton() { } - Singleton() { } - -private: - Singleton(const Singleton&); - Singleton& operator = (const Singleton&); - static Mutex sLock; - static TYPE* sInstance; -}; - -#if defined(__clang__) -#pragma clang diagnostic pop -#endif - -#define RGA_SINGLETON_STATIC_INSTANCE(TYPE) \ - template<> ::Mutex \ - (::Singleton< TYPE >::sLock)(::Mutex::PRIVATE); \ - template<> TYPE* ::Singleton< TYPE >::sInstance(nullptr); /* NOLINT */ \ - template class ::Singleton< TYPE >; - -#endif //_LIBS_RGA_SINGLETON_H diff --git a/hardware/rga/include/RgaUtils.h b/hardware/rga/include/RgaUtils.h deleted file mode 100755 index 27f9394d8e0435a4dd852819e76f3237a850f0c4..0000000000000000000000000000000000000000 --- a/hardware/rga/include/RgaUtils.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (C) 2016 Rockchip Electronics Co., Ltd. - * Authors: - * Zhiqin Wei - * - * 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. - */ - -#ifndef _rga_utils_h_ -#define _rga_utils_h_ - -// ------------------------------------------------------------------------------- -float get_bpp_from_format(int format); -int get_buf_from_file(void *buf, int f, int sw, int sh, int index); -int output_buf_data_to_file(void *buf, int f, int sw, int sh, int index); -const char *translate_format_str(int format); -#endif - diff --git a/hardware/rga/include/RockchipRga.h b/hardware/rga/include/RockchipRga.h deleted file mode 100755 index f67e96ce41925e3087247f7e3cc12e9243507aa6..0000000000000000000000000000000000000000 --- a/hardware/rga/include/RockchipRga.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (C) 2016 Rockchip Electronics Co., Ltd. - * Authors: - * Zhiqin Wei - * - * 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. - */ - -#ifndef _rockchip_rga_h_ -#define _rockchip_rga_h_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "drmrga.h" -#include "GrallocOps.h" -#include "RgaUtils.h" -#include "rga.h" - -////////////////////////////////////////////////////////////////////////////////// -#include "RgaSingleton.h" - -class RockchipRga : public Singleton { -public: - - static inline RockchipRga& get() { - return getInstance(); - } - - int RkRgaInit(); - void RkRgaDeInit(); - void RkRgaGetContext(void **ctx); - int RkRgaAllocBuffer(int drm_fd /* input */, bo_t *bo_info, - int width, int height, int bpp, int flags); - int RkRgaFreeBuffer(int drm_fd /* input */, bo_t *bo_info); - int RkRgaGetAllocBuffer(bo_t *bo_info, int width, int height, int bpp); - int RkRgaGetAllocBufferExt(bo_t *bo_info, int width, int height, int bpp, int flags); - int RkRgaGetAllocBufferCache(bo_t *bo_info, int width, int height, int bpp); - int RkRgaGetMmap(bo_t *bo_info); - int RkRgaUnmap(bo_t *bo_info); - int RkRgaFree(bo_t *bo_info); - int RkRgaGetBufferFd(bo_t *bo_info, int *fd); - int RkRgaBlit(rga_info *src, rga_info *dst, rga_info *src1); - int RkRgaCollorFill(rga_info *dst); - int RkRgaCollorPalette(rga_info *src, rga_info *dst, rga_info *lut); - int RkRgaFlush(); - void RkRgaSetLogOnceFlag(int log) - { - mLogOnce = log; - } - void RkRgaSetAlwaysLogFlag(bool log) - { - mLogAlways = log; - } - void RkRgaLogOutRgaReq(struct rga_req rgaReg); - int RkRgaLogOutUserPara(rga_info *rgaInfo); - inline bool RkRgaIsReady() - { - return mSupportRga; - } - - RockchipRga(); - ~RockchipRga(); -private: - bool mSupportRga; - int mLogOnce; - int mLogAlways; - void *mContext; - - friend class Singleton; -}; -#endif diff --git a/hardware/rga/include/drmrga.h b/hardware/rga/include/drmrga.h deleted file mode 100755 index c23db2c5aabd1c4d763982fb67b5edaf4d382bf4..0000000000000000000000000000000000000000 --- a/hardware/rga/include/drmrga.h +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright (C) 2016 Rockchip Electronics Co., Ltd. - * Authors: - * Zhiqin Wei - * - * 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. - */ - -#ifndef _rk_drm_rga_ -#define _rk_drm_rga_ - -/* flip source image horizontally (around the vertical axis) */ -#define HAL_TRANSFORM_FLIP_H 0x01 -/* flip source image vertically (around the horizontal axis) */ -#define HAL_TRANSFORM_FLIP_V 0x02 -/* rotate source image 90 degrees clockwise */ -#define HAL_TRANSFORM_ROT_90 0x04 -/* rotate source image 180 degrees */ -#define HAL_TRANSFORM_ROT_180 0x03 -/* rotate source image 270 degrees clockwise */ -#define HAL_TRANSFORM_ROT_270 0x07 - -#define HAL_TRANSFORM_FLIP_H_V 0x08 - -/*****************************************************************************/ - -/* for compatibility */ - -#define DRM_RGA_TRANSFORM_ROT_MASK 0x0000000F -#define DRM_RGA_TRANSFORM_ROT_0 0x00000000 -#define DRM_RGA_TRANSFORM_ROT_90 HAL_TRANSFORM_ROT_90 -#define DRM_RGA_TRANSFORM_ROT_180 HAL_TRANSFORM_ROT_180 -#define DRM_RGA_TRANSFORM_ROT_270 HAL_TRANSFORM_ROT_270 - -#define DRM_RGA_TRANSFORM_FLIP_MASK 0x00000003 -#define DRM_RGA_TRANSFORM_FLIP_H HAL_TRANSFORM_FLIP_H -#define DRM_RGA_TRANSFORM_FLIP_V HAL_TRANSFORM_FLIP_V - -enum { - AWIDTH = 0, - AHEIGHT, - ASTRIDE, - AFORMAT, - ASIZE, - ATYPE, -}; -/*****************************************************************************/ - -/* memory type definitions. */ -enum drm_rockchip_gem_mem_type { - /* Physically Continuous memory and used as default. */ - ROCKCHIP_BO_CONTIG = 1 << 0, - /* cachable mapping. */ - ROCKCHIP_BO_CACHABLE = 1 << 1, - /* write-combine mapping. */ - ROCKCHIP_BO_WC = 1 << 2, - ROCKCHIP_BO_SECURE = 1 << 3, - ROCKCHIP_BO_MASK = ROCKCHIP_BO_CONTIG | ROCKCHIP_BO_CACHABLE | - ROCKCHIP_BO_WC | ROCKCHIP_BO_SECURE -}; - -typedef struct bo { - int fd; - void *ptr; - size_t size; - size_t offset; - size_t pitch; - unsigned handle; -} bo_t; - -/* - @value size: user not need care about.For avoid read/write out of memory - */ -typedef struct rga_rect { - int xoffset; - int yoffset; - int width; - int height; - int wstride; - int hstride; - int format; - int size; -} rga_rect_t; - -typedef struct rga_nn { - int nn_flag; - int scale_r; - int scale_g; - int scale_b; - int offset_r; - int offset_g; - int offset_b; -} rga_nn_t; - -typedef struct rga_dither { - int enable; - int mode; - int lut0_l; - int lut0_h; - int lut1_l; - int lut1_h; -} rga_dither_t; - -/* - @value fd: use fd to share memory, it can be ion shard fd,and dma fd. - @value virAddr:userspace address - @value phyAddr:use phy address - @value hnd: use buffer_handle_t - */ -typedef struct rga_info { - int fd; - void *virAddr; - void *phyAddr; - unsigned hnd; - int format; - rga_rect_t rect; - unsigned int blend; - int bufferSize; - int rotation; - int color; - int testLog; - int mmuFlag; - int colorkey_en; - int colorkey_mode; - int colorkey_max; - int colorkey_min; - int scale_mode; - int color_space_mode; - int sync_mode; - rga_nn_t nn; - rga_dither_t dither; - int rop_code; - int reserve[127]; -} rga_info_t; - - -typedef struct drm_rga { - rga_rect_t src; - rga_rect_t dst; -} drm_rga_t; - -/* - @fun rga_set_rect:For use to set the rects esayly - - @param rect:The rect user want to set,like setting the src rect: - drm_rga_t rects; - rga_set_rect(rects.src,0,0,1920,1080,1920,NV12); - mean to set the src rect to the value. - */ -static inline int rga_set_rect(rga_rect_t *rect, int x, int y, int w, int h, int sw, int sh, int f) -{ - if (!rect) { - return -EINVAL; - } - rect->xoffset = x; - rect->yoffset = y; - rect->width = w; - rect->height = h; - rect->wstride = sw; - rect->hstride = sh; - rect->format = f; - return 0; -} - -static inline void rga_set_rotation(rga_info_t *info, int angle) -{ - if (angle == 90) { // 90:HAL_TRANSFORM_ROT - info->rotation = HAL_TRANSFORM_ROT_90; - } else if (angle == 180) { // 180:HAL_TRANSFORM_ROT - info->rotation = HAL_TRANSFORM_ROT_180; - } else if (angle == 270) { // 270:HAL_TRANSFORM_ROT - info->rotation = HAL_TRANSFORM_ROT_270; - } -} -/*****************************************************************************/ - -#endif diff --git a/hardware/rga/include/im2d.h b/hardware/rga/include/im2d.h deleted file mode 100755 index 640d25770278fc398500a6fbefe6832d43220f40..0000000000000000000000000000000000000000 --- a/hardware/rga/include/im2d.h +++ /dev/null @@ -1,908 +0,0 @@ -/* - * Copyright (C) 2020 Rockchip Electronics Co., Ltd. - * Authors: - * PutinLee - * Cerf Yu - * - * 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. - */ - -#ifndef _im2d_h_ -#define _im2d_h_ - -#include "securec.h" -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef IM_API -#define IM_API /* define API export as needed */ -#endif - -typedef enum { - /* Rotation */ - IM_HAL_TRANSFORM_ROT_90 = 1 << 0, - IM_HAL_TRANSFORM_ROT_180 = 1 << 1, - IM_HAL_TRANSFORM_ROT_270 = 1 << 2, - IM_HAL_TRANSFORM_FLIP_H = 1 << 3, - IM_HAL_TRANSFORM_FLIP_V = 1 << 4, - IM_HAL_TRANSFORM_FLIP_H_V = 1 << 5, - IM_HAL_TRANSFORM_MASK = 0x3f, - - /* - * Blend - * Additional blend usage, can be used with both source and target configs. - * If none of the below is set, the default "SRC over DST" is applied. - */ - IM_ALPHA_BLEND_SRC_OVER = 1 << 6, /* Default, Porter-Duff "SRC over DST" */ - IM_ALPHA_BLEND_SRC = 1 << 7, /* Porter-Duff "SRC" */ - IM_ALPHA_BLEND_DST = 1 << 8, /* Porter-Duff "DST" */ - IM_ALPHA_BLEND_SRC_IN = 1 << 9, /* Porter-Duff "SRC in DST" */ - IM_ALPHA_BLEND_DST_IN = 1 << 10, /* Porter-Duff "DST in SRC" */ - IM_ALPHA_BLEND_SRC_OUT = 1 << 11, /* Porter-Duff "SRC out DST" */ - IM_ALPHA_BLEND_DST_OUT = 1 << 12, /* Porter-Duff "DST out SRC" */ - IM_ALPHA_BLEND_DST_OVER = 1 << 13, /* Porter-Duff "DST over SRC" */ - IM_ALPHA_BLEND_SRC_ATOP = 1 << 14, /* Porter-Duff "SRC ATOP" */ - IM_ALPHA_BLEND_DST_ATOP = 1 << 15, /* Porter-Duff "DST ATOP" */ - IM_ALPHA_BLEND_XOR = 1 << 16, /* Xor */ - IM_ALPHA_BLEND_MASK = 0x1ffc0, - - IM_ALPHA_COLORKEY_NORMAL = 1 << 17, - IM_ALPHA_COLORKEY_INVERTED = 1 << 18, - IM_ALPHA_COLORKEY_MASK = 0x60000, - - IM_SYNC = 1 << 19, - IM_ASYNC = 1 << 26, - IM_CROP = 1 << 20, /* Unused */ - IM_COLOR_FILL = 1 << 21, - IM_COLOR_PALETTE = 1 << 22, - IM_NN_QUANTIZE = 1 << 23, - IM_ROP = 1 << 24, - IM_ALPHA_BLEND_PRE_MUL = 1 << 25, -} IM_USAGE; - -typedef enum { - IM_ROP_AND = 0x88, - IM_ROP_OR = 0xee, - IM_ROP_NOT_DST = 0x55, - IM_ROP_NOT_SRC = 0x33, - IM_ROP_XOR = 0xf6, - IM_ROP_NOT_XOR = 0xf9, -} IM_ROP_CODE; - -typedef enum { - IM_RGA_SUPPORT_FORMAT_ERROR_INDEX = 0, - IM_RGA_SUPPORT_FORMAT_RGB_INDEX, - IM_RGA_SUPPORT_FORMAT_RGB_OTHER_INDEX, - IM_RGA_SUPPORT_FORMAT_BPP_INDEX, - IM_RGA_SUPPORT_FORMAT_YUV_8_INDEX, - IM_RGA_SUPPORT_FORMAT_YUV_10_INDEX, - IM_RGA_SUPPORT_FORMAT_YUYV_420_INDEX, - IM_RGA_SUPPORT_FORMAT_YUYV_422_INDEX, - IM_RGA_SUPPORT_FORMAT_YUV_400_INDEX, - IM_RGA_SUPPORT_FORMAT_Y4_INDEX, - IM_RGA_SUPPORT_FORMAT_MASK_INDEX, -} IM_RGA_SUPPORT_FORMAT_INDEX; - -typedef enum { - IM_RGA_SUPPORT_FORMAT_ERROR = 1 << IM_RGA_SUPPORT_FORMAT_ERROR_INDEX, - IM_RGA_SUPPORT_FORMAT_RGB = 1 << IM_RGA_SUPPORT_FORMAT_RGB_INDEX, - IM_RGA_SUPPORT_FORMAT_RGB_OTHER = 1 << IM_RGA_SUPPORT_FORMAT_RGB_OTHER_INDEX, - IM_RGA_SUPPORT_FORMAT_BPP = 1 << IM_RGA_SUPPORT_FORMAT_BPP_INDEX, - IM_RGA_SUPPORT_FORMAT_YUV_8 = 1 << IM_RGA_SUPPORT_FORMAT_YUV_8_INDEX, - IM_RGA_SUPPORT_FORMAT_YUV_10 = 1 << IM_RGA_SUPPORT_FORMAT_YUV_10_INDEX, - IM_RGA_SUPPORT_FORMAT_YUYV_420 = 1 << IM_RGA_SUPPORT_FORMAT_YUYV_420_INDEX, - IM_RGA_SUPPORT_FORMAT_YUYV_422 = 1 << IM_RGA_SUPPORT_FORMAT_YUYV_422_INDEX, - IM_RGA_SUPPORT_FORMAT_YUV_400 = 1 << IM_RGA_SUPPORT_FORMAT_YUV_400_INDEX, - IM_RGA_SUPPORT_FORMAT_Y4 = 1 << IM_RGA_SUPPORT_FORMAT_Y4_INDEX, - IM_RGA_SUPPORT_FORMAT_MASK = ~((~(unsigned int)0x0 << IM_RGA_SUPPORT_FORMAT_MASK_INDEX) | 1), -} IM_RGA_SUPPORT_FORMAT; - -typedef enum { - IM_RGA_SUPPORT_FEATURE_ERROR_INDEX = 0, - IM_RGA_SUPPORT_FEATURE_COLOR_FILL_INDEX, - IM_RGA_SUPPORT_FEATURE_COLOR_PALETTE_INDEX, - IM_RGA_SUPPORT_FEATURE_ROP_INDEX, - IM_RGA_SUPPORT_FEATURE_QUANTIZE_INDEX, - IM_RGA_SUPPORT_FEATURE_SRC1_R2Y_CSC_INDEX, - IM_RGA_SUPPORT_FEATURE_DST_FULL_CSC_INDEX, - IM_RGA_SUPPORT_FEATURE_MASK_INDEX, -} IM_RGA_SUPPORT_FEATURE_INDEX; - -typedef enum { - IM_RGA_SUPPORT_FEATURE_ERROR = 1 << IM_RGA_SUPPORT_FEATURE_ERROR_INDEX, - IM_RGA_SUPPORT_FEATURE_COLOR_FILL = 1 << IM_RGA_SUPPORT_FEATURE_COLOR_FILL_INDEX, - IM_RGA_SUPPORT_FEATURE_COLOR_PALETTE = 1 << IM_RGA_SUPPORT_FEATURE_COLOR_PALETTE_INDEX, - IM_RGA_SUPPORT_FEATURE_ROP = 1 << IM_RGA_SUPPORT_FEATURE_ROP_INDEX, - IM_RGA_SUPPORT_FEATURE_QUANTIZE = 1 << IM_RGA_SUPPORT_FEATURE_QUANTIZE_INDEX, - IM_RGA_SUPPORT_FEATURE_SRC1_R2Y_CSC = 1 << IM_RGA_SUPPORT_FEATURE_SRC1_R2Y_CSC_INDEX, - IM_RGA_SUPPORT_FEATURE_DST_FULL_CSC = 1 << IM_RGA_SUPPORT_FEATURE_DST_FULL_CSC_INDEX, - IM_RGA_SUPPORT_FEATURE_MASK = ~((~(unsigned int)0x0 << IM_RGA_SUPPORT_FEATURE_MASK_INDEX) | 1), -} IM_RGA_SUPPORT_FEATURE; - -/* Status codes, returned by any blit function */ -typedef enum { - IM_STATUS_NOERROR = 2, - IM_STATUS_SUCCESS = 1, - IM_STATUS_NOT_SUPPORTED = -1, - IM_STATUS_OUT_OF_MEMORY = -2, - IM_STATUS_INVALID_PARAM = -3, - IM_STATUS_ILLEGAL_PARAM = -4, - IM_STATUS_FAILED = 0, -} IM_STATUS; - -/* Status codes, returned by any blit function */ -typedef enum { - IM_YUV_TO_RGB_BT601_LIMIT = 1 << 0, - IM_YUV_TO_RGB_BT601_FULL = 2 << 0, - IM_YUV_TO_RGB_BT709_LIMIT = 3 << 0, - IM_YUV_TO_RGB_MASK = 3 << 0, - IM_RGB_TO_YUV_BT601_FULL = 1 << 2, - IM_RGB_TO_YUV_BT601_LIMIT = 2 << 2, - IM_RGB_TO_YUV_BT709_LIMIT = 3 << 2, - IM_RGB_TO_YUV_MASK = 3 << 2, - IM_RGB_TO_Y4 = 1 << 4, - IM_RGB_TO_Y4_DITHER = 2 << 4, - IM_RGB_TO_Y1_DITHER = 3 << 4, - IM_Y4_MASK = 3 << 4, - IM_RGB_FULL = 1 << 8, - IM_RGB_CLIP = 2 << 8, - IM_YUV_BT601_LIMIT_RANGE = 3 << 8, - IM_YUV_BT601_FULL_RANGE = 4 << 8, - IM_YUV_BT709_LIMIT_RANGE = 5 << 8, - IM_YUV_BT709_FULL_RANGE = 6 << 8, - IM_FULL_CSC_MASK = 0xf << 8, - IM_COLOR_SPACE_DEFAULT = 0, -} IM_COLOR_SPACE_MODE; - -typedef enum { - IM_UP_SCALE, - IM_DOWN_SCALE, -} IM_SCALE; - -typedef enum { - INTER_NEAREST, - INTER_LINEAR, - INTER_CUBIC, -} IM_SCALE_MODE; - -/* Get RGA basic information index */ -typedef enum { - RGA_VENDOR = 0, - RGA_VERSION, - RGA_MAX_INPUT, - RGA_MAX_OUTPUT, - RGA_SCALE_LIMIT, - RGA_INPUT_FORMAT, - RGA_OUTPUT_FORMAT, - RGA_FEATURE, - RGA_EXPECTED, - RGA_ALL, -} IM_INFORMATION; - -/*rga version index*/ -typedef enum { - RGA_V_ERR = 0x0, - RGA_1 = 0x1, - RGA_1_PLUS = 0x2, - RGA_2 = 0x3, - RGA_2_LITE0 = 0x4, - RGA_2_LITE1 = 0x5, - RGA_2_ENHANCE = 0x6, -} RGA_VERSION_NUM; - -typedef struct { - RGA_VERSION_NUM version; - unsigned int input_resolution; - unsigned int output_resolution; - unsigned int scale_limit; - unsigned int performance; - unsigned int input_format; - unsigned int output_format; - unsigned int feature; - char reserved[28]; -} rga_info_table_entry; - -/* Rectangle definition */ -typedef struct { - int x; /* upper-left x */ - int y; /* upper-left y */ - int width; /* width */ - int height; /* height */ -} im_rect; - -typedef struct { - int max; /* The Maximum value of the color key */ - int min; /* The minimum value of the color key */ -} im_colorkey_range; - - -typedef struct im_nn { - int scale_r; /* scaling factor on R channal */ - int scale_g; /* scaling factor on G channal */ - int scale_b; /* scaling factor on B channal */ - int offset_r; /* offset on R channal */ - int offset_g; /* offset on G channal */ - int offset_b; /* offset on B channal */ -} im_nn_t; - -/* im_info definition */ -typedef struct { - void* vir_addr; /* virtual address */ - void* phy_addr; /* physical address */ - int fd; /* shared fd */ - int width; /* width */ - int height; /* height */ - int wstride; /* wstride */ - int hstride; /* hstride */ - int format; /* format */ - int color_space_mode; /* color_space_mode */ - int color; /* color, used by color fill */ - int global_alpha; /* global_alpha */ - im_colorkey_range colorkey_range; /* range value of color key */ - im_nn_t nn; - int rop_code; -} rga_buffer_t; - -/* - * @return error message string - */ -#define imStrError(...) \ - ({ \ - const char* err; \ - int args[] = {__VA_ARGS__}; \ - int argc = sizeof(args)/sizeof(int); \ - if (argc == 0) { \ - err = imStrError_t(IM_STATUS_INVALID_PARAM); \ - } else if (argc == 1){ \ - err = imStrError_t((IM_STATUS)args[0]); \ - } else { \ - err = ("Fatal error, imStrError() too many parameters\n"); \ - printf("Fatal error, imStrError() too many parameters\n"); \ - } \ - err; \ - }) -IM_API const char* imStrError_t(IM_STATUS status); - -/* - * @return rga_buffer_t - */ -#define wrapbuffer_virtualaddr(vir_addr, width, height, format, ...) \ - ({ \ - rga_buffer_t buffer; \ - int args[] = {__VA_ARGS__}; \ - int argc = sizeof(args)/sizeof(int); \ - if (argc == 0) { \ - buffer = wrapbuffer_virtualaddr_t(vir_addr, width, height, width, height, format); \ - } else if (argc == 2){ \ - buffer = wrapbuffer_virtualaddr_t(vir_addr, width, height, args[0], args[1], format); \ - } else { \ - printf("invalid parameter\n"); \ - } \ - buffer; \ - }) - -#define wrapbuffer_physicaladdr(phy_addr, width, height, format, ...) \ - ({ \ - rga_buffer_t buffer; \ - int args[] = {__VA_ARGS__}; \ - int argc = sizeof(args)/sizeof(int); \ - if (argc == 0) { \ - buffer = wrapbuffer_physicaladdr_t(phy_addr, width, height, width, height, format); \ - } else if (argc == 2){ \ - buffer = wrapbuffer_physicaladdr_t(phy_addr, width, height, args[0], args[1], format); \ - } else { \ - printf("invalid parameter\n"); \ - } \ - buffer; \ - }) - -#define wrapbuffer_fd(fd, width, height, format, ...) \ - ({ \ - rga_buffer_t buffer; \ - int args[] = {__VA_ARGS__}; \ - int argc = sizeof(args)/sizeof(int); \ - if (argc == 0) { \ - buffer = wrapbuffer_fd_t(fd, width, height, width, height, format); \ - } else if (argc == 2){ \ - buffer = wrapbuffer_fd_t(fd, width, height, args[0], args[1], format); \ - } else { \ - printf("invalid parameter\n"); \ - } \ - buffer; \ - }) - -IM_API rga_buffer_t wrapbuffer_virtualaddr_t( - void* vir_addr, - int width, - int height, - int wstride, - int hstride, - int format); -IM_API rga_buffer_t wrapbuffer_physicaladdr_t(void* phy_addr, - int width, - int height, - int wstride, - int hstride, - int format); -IM_API rga_buffer_t wrapbuffer_fd_t(int fd, int width, int height, int wstride, int hstride, int format); - -/* - * Get RGA basic information, supported resolution, supported format, etc. - * - * @param name - * RGA_VENDOR - * RGA_VERSION - * RGA_MAX_INPUT - * RGA_MAX_OUTPUT - * RGA_INPUT_FORMAT - * RGA_OUTPUT_FORMAT - * RGA_EXPECTED - * RGA_ALL - * - * @returns a usage describing properties of RGA. - */ -IM_API IM_STATUS rga_get_info(rga_info_table_entry *return_table); - -/* - * Query RGA basic information, supported resolution, supported format, etc. - * - * @param name - * RGA_VENDOR - * RGA_VERSION - * RGA_MAX_INPUT - * RGA_MAX_OUTPUT - * RGA_INPUT_FORMAT - * RGA_OUTPUT_FORMAT - * RGA_EXPECTED - * RGA_ALL - * - * @returns a string describing properties of RGA. - */ -IM_API const char* querystring(int name); - -/* - * check RGA basic information, supported resolution, supported format, etc. - * - * @param src - * @param dst - * @param src_rect - * @param dst_rect - * @param mode_usage - * - * @returns no error or else negative error code. - */ -#define imcheck(src, dst, src_rect, dst_rect, ...) \ - ({ \ - IM_STATUS ret = IM_STATUS_NOERROR; \ - rga_buffer_t pat; \ - im_rect pat_rect; \ - errno_t eok = memset_s(&pat, sizeof(rga_buffer_t), 0, sizeof(rga_buffer_t)); \ - if (!eok) { \ - printf("memset_s failed!\n"); \ - } \ - eok = memset_s(&pat_rect, sizeof(im_rect), 0, sizeof(im_rect)); \ - if (!eok) { \ - printf("memset_s failed!\n"); \ - } \ - int args[] = {__VA_ARGS__}; \ - int argc = sizeof(args)/sizeof(int); \ - if (argc == 0) { \ - ret = imcheck_t(src, dst, pat, src_rect, dst_rect, pat_rect, 0); \ - } else if (argc == 1){ \ - ret = imcheck_t(src, dst, pat, src_rect, dst_rect, pat_rect, args[0]); \ - } else { \ - ret = IM_STATUS_FAILED; \ - printf("check failed\n"); \ - } \ - ret; \ - }) -#define imcheck_composite(src, dst, pat, src_rect, dst_rect, pat_rect, ...) \ - ({ \ - IM_STATUS ret = IM_STATUS_NOERROR; \ - int args[] = {__VA_ARGS__}; \ - int argc = sizeof(args)/sizeof(int); \ - if (argc == 0) { \ - ret = imcheck_t(src, dst, pat, src_rect, dst_rect, pat_rect, 0); \ - } else if (argc == 1){ \ - ret = imcheck_t(src, dst, pat, src_rect, dst_rect, pat_rect, args[0]); \ - } else { \ - ret = IM_STATUS_FAILED; \ - printf("check failed\n"); \ - } \ - ret; \ - }) -IM_API IM_STATUS imcheck_t(const rga_buffer_t src, const rga_buffer_t dst, const rga_buffer_t pat, - const im_rect src_rect, const im_rect dst_rect, const im_rect pat_rect, const int mdoe_usage); - -/* - * Resize - * - * @param src - * @param dst - * @param fx - * @param fy - * @param interpolation - * @param sync - * wait until operation complete - * - * @returns success or else negative error code. - */ -#define imresize(src, dst, ...) \ - ({ \ - IM_STATUS ret = IM_STATUS_SUCCESS; \ - double args[] = {__VA_ARGS__}; \ - int argc = sizeof(args)/sizeof(double); \ - if (argc == 0) { \ - ret = imresize_t(src, dst, 0, 0, INTER_LINEAR, 1); \ - } else if (argc == 2){ \ - ret = imresize_t(src, dst, args[0], args[1], INTER_LINEAR, 1); \ - } else if (argc == 3){ \ - ret = imresize_t(src, dst, args[0], args[1], (int)args[2], 1); \ - } else if (argc == 4){ \ - ret = imresize_t(src, dst, args[0], args[1], (int)args[2], (int)args[3]); \ - } else { \ - ret = IM_STATUS_INVALID_PARAM; \ - printf("invalid parameter\n"); \ - } \ - ret; \ - }) - -#define impyramid(src, dst, direction) \ - imresize_t(src, \ - dst, \ - (direction) == IM_UP_SCALE ? 0.5 : 2, \ - (direction) == IM_UP_SCALE ? 0.5 : 2, \ - INTER_LINEAR, 1) - -IM_API IM_STATUS imresize_t(const rga_buffer_t src, rga_buffer_t dst, double fx, double fy, int interpolation, int sync); - -/* - * Crop - * - * @param src - * @param dst - * @param rect - * @param sync - * wait until operation complete - * - * @returns success or else negative error code. - */ -#define imcrop(src, dst, rect, ...) \ - ({ \ - IM_STATUS ret = IM_STATUS_SUCCESS; \ - int args[] = {__VA_ARGS__}; \ - int argc = sizeof(args)/sizeof(int); \ - if (argc == 0) { \ - ret = imcrop_t(src, dst, rect, 1); \ - } else if (argc == 1){ \ - ret = imcrop_t(src, dst, rect, args[0]);; \ - } else { \ - ret = IM_STATUS_INVALID_PARAM; \ - printf("invalid parameter\n"); \ - } \ - ret; \ - }) - -IM_API IM_STATUS imcrop_t(const rga_buffer_t src, rga_buffer_t dst, im_rect rect, int sync); - -/* - * rotation - * - * @param src - * @param dst - * @param rotation - * IM_HAL_TRANSFORM_ROT_90 - * IM_HAL_TRANSFORM_ROT_180 - * IM_HAL_TRANSFORM_ROT_270 - * @param sync - * wait until operation complete - * - * @returns success or else negative error code. - */ -#define imrotate(src, dst, rotation, ...) \ - ({ \ - IM_STATUS ret = IM_STATUS_SUCCESS; \ - int args[] = {__VA_ARGS__}; \ - int argc = sizeof(args)/sizeof(int); \ - if (argc == 0) { \ - ret = imrotate_t(src, dst, rotation, 1); \ - } else if (argc == 1){ \ - ret = imrotate_t(src, dst, rotation, args[0]);; \ - } else { \ - ret = IM_STATUS_INVALID_PARAM; \ - printf("invalid parameter\n"); \ - } \ - ret; \ - }) - -IM_API IM_STATUS imrotate_t(const rga_buffer_t src, rga_buffer_t dst, int rotation, int sync); - -/* - * flip - * - * @param src - * @param dst - * @param mode - * IM_HAL_TRANSFORM_FLIP_H - * IM_HAL_TRANSFORM_FLIP_V - * @param sync - * wait until operation complete - * - * @returns success or else negative error code. - */ -#define imflip(src, dst, mode, ...) \ - ({ \ - IM_STATUS ret = IM_STATUS_SUCCESS; \ - int args[] = {__VA_ARGS__}; \ - int argc = sizeof(args)/sizeof(int); \ - if (argc == 0) { \ - ret = imflip_t(src, dst, mode, 1); \ - } else if (argc == 1){ \ - ret = imflip_t(src, dst, mode, args[0]);; \ - } else { \ - ret = IM_STATUS_INVALID_PARAM; \ - printf("invalid parameter\n"); \ - } \ - ret; \ - }) - -IM_API IM_STATUS imflip_t (const rga_buffer_t src, rga_buffer_t dst, int mode, int sync); - -/* - * fill/reset/draw - * - * @param src - * @param dst - * @param rect - * @param color - * @param sync - * wait until operation complete - * - * @returns success or else negative error code. - */ -#define imfill(buf, rect, color, ...) \ - ({ \ - IM_STATUS ret = IM_STATUS_SUCCESS; \ - int args[] = {__VA_ARGS__}; \ - int argc = sizeof(args)/sizeof(int); \ - if (argc == 0) { \ - ret = imfill_t(buf, rect, color, 1); \ - } else if (argc == 1){ \ - ret = imfill_t(buf, rect, color, args[0]);; \ - } else { \ - ret = IM_STATUS_INVALID_PARAM; \ - printf("invalid parameter\n"); \ - } \ - ret; \ - }) - -#define imreset(buf, rect, color, ...) \ - ({ \ - IM_STATUS ret = IM_STATUS_SUCCESS; \ - int args[] = {__VA_ARGS__}; \ - int argc = sizeof(args)/sizeof(int); \ - if (argc == 0) { \ - ret = imfill_t(buf, rect, color, 1); \ - } else if (argc == 1){ \ - ret = imfill_t(buf, rect, color, args[0]);; \ - } else { \ - ret = IM_STATUS_INVALID_PARAM; \ - printf("invalid parameter\n"); \ - } \ - ret; \ - }) - -#define imdraw(buf, rect, color, ...) \ - ({ \ - IM_STATUS ret = IM_STATUS_SUCCESS; \ - int args[] = {__VA_ARGS__}; \ - int argc = sizeof(args)/sizeof(int); \ - if (argc == 0) { \ - ret = imfill_t(buf, rect, color, 1); \ - } else if (argc == 1){ \ - ret = imfill_t(buf, rect, color, args[0]);; \ - } else { \ - ret = IM_STATUS_INVALID_PARAM; \ - printf("invalid parameter\n"); \ - } \ - ret; \ - }) -IM_API IM_STATUS imfill_t(rga_buffer_t dst, im_rect rect, int color, int sync); - -/* - * palette - * - * @param src - * @param dst - * @param lut - * @param sync - * wait until operation complete - * - * @returns success or else negative error code. - */ -#define impalette(src, dst, lut, ...) \ - ({ \ - IM_STATUS ret = IM_STATUS_SUCCESS; \ - int args[] = {__VA_ARGS__}; \ - int argc = sizeof(args)/sizeof(int); \ - if (argc == 0) { \ - ret = impalette_t(src, dst, lut, 1); \ - } else if (argc == 1){ \ - ret = impalette_t(src, dst, lut, args[0]);; \ - } else { \ - ret = IM_STATUS_INVALID_PARAM; \ - printf("invalid parameter\n"); \ - } \ - ret; \ - }) -IM_API IM_STATUS impalette_t(rga_buffer_t src, rga_buffer_t dst, rga_buffer_t lut, int sync); - -/* - * translate - * - * @param src - * @param dst - * @param x - * @param y - * @param sync - * wait until operation complete - * - * @returns success or else negative error code. - */ -#define imtranslate(src, dst, x, y, ...) \ - ({ \ - IM_STATUS ret = IM_STATUS_SUCCESS; \ - int args[] = {__VA_ARGS__}; \ - int argc = sizeof(args)/sizeof(int); \ - if (argc == 0) { \ - ret = imtranslate_t(src, dst, x, y, 1); \ - } else if (argc == 1){ \ - ret = imtranslate_t(src, dst, x, y, args[0]);; \ - } else { \ - ret = IM_STATUS_INVALID_PARAM; \ - printf("invalid parameter\n"); \ - } \ - ret; \ - }) -IM_API IM_STATUS imtranslate_t(const rga_buffer_t src, rga_buffer_t dst, int x, int y, int sync); - -/* - * copy - * - * @param src - * @param dst - * @param sync - * wait until operation complete - * - * @returns success or else negative error code. - */ -#define imcopy(src, dst, ...) \ - ({ \ - IM_STATUS ret = IM_STATUS_SUCCESS; \ - int args[] = {__VA_ARGS__}; \ - int argc = sizeof(args)/sizeof(int); \ - if (argc == 0) { \ - ret = imcopy_t(src, dst, 1); \ - } else if (argc == 1){ \ - ret = imcopy_t(src, dst, args[0]);; \ - } else { \ - ret = IM_STATUS_INVALID_PARAM; \ - printf("invalid parameter\n"); \ - } \ - ret; \ - }) - -IM_API IM_STATUS imcopy_t(const rga_buffer_t src, rga_buffer_t dst, int sync); - -/* - * blend (SRC + DST -> DST or SRCA + SRCB -> DST) - * - * @param srcA - * @param srcB can be NULL. - * @param dst - * @param mode - * IM_ALPHA_BLEND_MODE - * @param sync - * wait until operation complete - * - * @returns success or else negative error code. - */ -#define imblend(srcA, dst, ...) \ - ({ \ - IM_STATUS ret = IM_STATUS_SUCCESS; \ - rga_buffer_t srcB; \ - errno_t eok = memset_s(&srcB, sizeof(rga_buffer_t), 0x00, sizeof(rga_buffer_t)); \ - if (!eok) { \ - printf("memset_s failed!\n"); \ - } \ - int args[] = {__VA_ARGS__}; \ - int argc = sizeof(args)/sizeof(int); \ - if (argc == 0) { \ - ret = imblend_t(srcA, srcB, dst, IM_ALPHA_BLEND_SRC_OVER, 1); \ - } else if (argc == 1){ \ - ret = imblend_t(srcA, srcB, dst, args[0], 1); \ - } else if (argc == 2){ \ - ret = imblend_t(srcA, srcB, dst, args[0], args[1]); \ - } else { \ - ret = IM_STATUS_INVALID_PARAM; \ - printf("invalid parameter\n"); \ - } \ - ret; \ - }) -#define imcomposite(srcA, srcB, dst, ...) \ - ({ \ - IM_STATUS ret = IM_STATUS_SUCCESS; \ - int args[] = {__VA_ARGS__}; \ - int argc = sizeof(args)/sizeof(int); \ - if (argc == 0) { \ - ret = imblend_t(srcA, srcB, dst, IM_ALPHA_BLEND_SRC_OVER, 1); \ - } else if (argc == 1){ \ - ret = imblend_t(srcA, srcB, dst, args[0], 1); \ - } else if (argc == 2){ \ - ret = imblend_t(srcA, srcB, dst, args[0], args[1]); \ - } else { \ - ret = IM_STATUS_INVALID_PARAM; \ - printf("invalid parameter\n"); \ - } \ - ret; \ - }) -IM_API IM_STATUS imblend_t(const rga_buffer_t srcA, const rga_buffer_t srcB, rga_buffer_t dst, int mode, int sync); - -/* - * color key - * - * @param src - * @param dst - * @param colorkey_range - * max color - * min color - * @param sync - * wait until operation complete - * - * @returns success or else negative error code. - */ -#define imcolorkey(src, dst, range, ...) \ - ({ \ - IM_STATUS ret = IM_STATUS_SUCCESS; \ - int args[] = {__VA_ARGS__}; \ - int argc = sizeof(args)/sizeof(int); \ - if (argc == 0) { \ - ret = imcolorkey_t(src, dst, range, IM_ALPHA_COLORKEY_NORMAL, 1); \ - } else if (argc == 1){ \ - ret = imcolorkey_t(src, dst, range, args[0], 1); \ - } else if (argc == 2){ \ - ret = imcolorkey_t(src, dst, range, args[0], args[1]); \ - } else { \ - ret = IM_STATUS_INVALID_PARAM; \ - printf("invalid parameter\n"); \ - } \ - ret; \ - }) -IM_API IM_STATUS imcolorkey_t(const rga_buffer_t src, rga_buffer_t dst, im_colorkey_range range, int mode, int sync); - -/* - * format convert - * - * @param src - * @param dst - * @param sfmt - * @param dfmt - * @param mode - * color space mode: IM_COLOR_SPACE_MODE - * @param sync - * wait until operation complete - * - * @returns success or else negative error code. - */ -#define imcvtcolor(src, dst, sfmt, dfmt, ...) \ - ({ \ - IM_STATUS ret = IM_STATUS_SUCCESS; \ - int args[] = {__VA_ARGS__}; \ - int argc = sizeof(args)/sizeof(int); \ - if (argc == 0) { \ - ret = imcvtcolor_t(src, dst, sfmt, dfmt, IM_COLOR_SPACE_DEFAULT, 1); \ - } else if (argc == 1){ \ - ret = imcvtcolor_t(src, dst, sfmt, dfmt, args[0], 1); \ - } else if (argc == 2){ \ - ret = imcvtcolor_t(src, dst, sfmt, dfmt, args[0], args[1]); \ - } else { \ - ret = IM_STATUS_INVALID_PARAM; \ - printf("invalid parameter\n"); \ - } \ - ret; \ - }) - -IM_API IM_STATUS imcvtcolor_t(rga_buffer_t src, rga_buffer_t dst, int sfmt, int dfmt, int mode, int sync); - -/* - * nn quantize - * - * @param src - * @param dst - * @param nninfo - * @param sync - * wait until operation complete - * - * @returns success or else negative error code. - */ -#define imquantize(src, dst, nn_info, ...) \ - ({ \ - IM_STATUS ret = IM_STATUS_SUCCESS; \ - int args[] = {__VA_ARGS__}; \ - int argc = sizeof(args)/sizeof(int); \ - if (argc == 0) { \ - ret = imquantize_t(src, dst, nn_info, 1); \ - } else if (argc == 1){ \ - ret = imquantize_t(src, dst, nn_info, args[0]);; \ - } else { \ - ret = IM_STATUS_INVALID_PARAM; \ - printf("invalid parameter\n"); \ - } \ - ret; \ - }) - -IM_API IM_STATUS imquantize_t(const rga_buffer_t src, rga_buffer_t dst, im_nn_t nn_info, int sync); - -/* - * ROP - * - * @param src - * @param dst - * @param rop_code - * @param sync - * wait until operation complete - * - * @returns success or else negative error code. - */ -#define imrop(src, dst, rop_code, ...) \ - ({ \ - IM_STATUS ret = IM_STATUS_SUCCESS; \ - int args[] = {__VA_ARGS__}; \ - int argc = sizeof(args)/sizeof(int); \ - if (argc == 0) { \ - ret = imrop_t(src, dst, rop_code, 1); \ - } else if (argc == 1){ \ - ret = imrop_t(src, dst, rop_code, args[0]);; \ - } else { \ - ret = IM_STATUS_INVALID_PARAM; \ - printf("invalid parameter\n"); \ - } \ - ret; \ - }) -IM_API IM_STATUS imrop_t(const rga_buffer_t src, rga_buffer_t dst, int rop_code, int sync); - -/* - * process - * - * @param src - * @param dst - * @param usage - * @param ... - * wait until operation complete - * - * @returns success or else negative error code. - */ -IM_API IM_STATUS improcess(rga_buffer_t src, rga_buffer_t dst, rga_buffer_t pat, im_rect srect, im_rect drect, im_rect prect, int usage); - -/* - * block until all execution is complete - * - * @returns success or else negative error code. - */ -IM_API IM_STATUS imsync(void); - -#ifdef __cplusplus -} -#endif -#endif /* _im2d_h_ */ diff --git a/hardware/rga/include/platform_gralloc4.h b/hardware/rga/include/platform_gralloc4.h deleted file mode 100755 index 2f3ae79cde1b02f88761520d6a67d14f9755b78a..0000000000000000000000000000000000000000 --- a/hardware/rga/include/platform_gralloc4.h +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (c) 2021 Rockchip Electronics 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. - */ - -/* -------------------------------------------------------------------------------------------------------- - * File: platform_gralloc4.h - * - * Desc: 声明对 buffer_handle_t 实例的 get metadata, import_buffer/free_buffer, lock_buffer/unlock_buffer 等接口. - * 这些接口都将基于 IMapper 4.0 (gralloc 4.0) 实现. - * - * ----------------------------------------------------------------------------------- - * < 习语 和 缩略语 > : - * - * ----------------------------------------------------------------------------------- - * Usage: - * - * Note: - * - * Author: ChenZhen - * - * Log: - * init. - ----Fri Aug 28 10:10:14 2020 - * - * -------------------------------------------------------------------------------------------------------- - */ - - -#ifndef __PLATFORM_GRALLOC4_H__ -#define __PLATFORM_GRALLOC4_H__ - - -/* --------------------------------------------------------------------------------------------------------- - * Include Files - * --------------------------------------------------------------------------------------------------------- - */ -#include - -#include - -#include -#include - -#include - -/* --------------------------------------------------------------------------------------------------------- - * Macros Definition - * --------------------------------------------------------------------------------------------------------- - */ - - -namespace gralloc4 { -/* --------------------------------------------------------------------------------------------------------- - * Types and Structures Definition - * --------------------------------------------------------------------------------------------------------- - */ - - -/* --------------------------------------------------------------------------------------------------------- - * Global Functions' Prototype - * --------------------------------------------------------------------------------------------------------- - */ - -/* - * 获取 'handle' 引用的 graphic_buffer 的 internal_format. - */ -uint64_t get_internal_format(buffer_handle_t handle); - -int get_width(buffer_handle_t handle, uint64_t* width); - -int get_height(buffer_handle_t handle, uint64_t* height); - -int get_pixel_stride(buffer_handle_t handle, int* pixel_stride); - -int get_byte_stride(buffer_handle_t handle, int* byte_stride); - -int get_format_requested(buffer_handle_t handle, int* format_requested); - -int get_usage(buffer_handle_t handle, uint64_t* usage); - -int get_allocation_size(buffer_handle_t handle, uint64_t* usage); - -int get_share_fd(buffer_handle_t handle, int* share_fd); - -void unlock(buffer_handle_t bufferHandle); - -void freeBuffer(buffer_handle_t handle); - -/* --------------------------------------------------------------------------------------------------------- - * Inline Functions Implementation - * --------------------------------------------------------------------------------------------------------- - */ -} - -#endif /* __PLATFORM_GRALLOC4_H__ */ diff --git a/hardware/rga/include/rga.h b/hardware/rga/include/rga.h deleted file mode 100755 index 5a2172845724d3178a3ec3f3c365475bfc913474..0000000000000000000000000000000000000000 --- a/hardware/rga/include/rga.h +++ /dev/null @@ -1,654 +0,0 @@ -/* - * Copyright (C) 2016 Rockchip Electronics Co., Ltd. - * Authors: - * Zhiqin Wei - * - * 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. - */ - -#ifndef _RGA_DRIVER_H_ -#define _RGA_DRIVER_H_ -#include -#ifdef __cplusplus -extern "C" -{ -#endif - -#define RGA_BLIT_SYNC 0x5017 -#define RGA_BLIT_ASYNC 0x5018 -#define RGA_FLUSH 0x5019 -#define RGA_GET_RESULT 0x501a -#define RGA_GET_VERSION 0x501b - -#define RGA2_BLIT_SYNC 0x6017 -#define RGA2_BLIT_ASYNC 0x6018 -#define RGA2_FLUSH 0x6019 -#define RGA2_GET_RESULT 0x601a -#define RGA2_GET_VERSION 0x601b -#define RGA2_GET_VERSION 0x601b - -#define RGA_REG_CTRL_LEN 0x8 /* 8 */ -#define RGA_REG_CMD_LEN 0x1c /* 28 */ -#define RGA_CMD_BUF_SIZE 0x700 /* 16*28*4 */ - - - -#ifndef ENABLE -#define ENABLE 1 -#endif - - -#ifndef DISABLE -#define DISABLE 0 -#endif - - - -/* RGA process mode enum */ -enum { - bitblt_mode = 0x0, - color_palette_mode = 0x1, - color_fill_mode = 0x2, - line_point_drawing_mode = 0x3, - blur_sharp_filter_mode = 0x4, - pre_scaling_mode = 0x5, - update_palette_table_mode = 0x6, - update_patten_buff_mode = 0x7, -}; - - -enum { - rop_enable_mask = 0x2, - dither_enable_mask = 0x8, - fading_enable_mask = 0x10, - PD_enbale_mask = 0x20, -}; - -enum { - yuv2rgb_mode0 = 0x0, /* BT.601 MPEG */ - yuv2rgb_mode1 = 0x1, /* BT.601 JPEG */ - yuv2rgb_mode2 = 0x2, /* BT.709 */ - - rgb2yuv_601_full = 0x1 << 8, - rgb2yuv_709_full = 0x2 << 8, - yuv2yuv_601_limit_2_709_limit = 0x3 << 8, - yuv2yuv_601_limit_2_709_full = 0x4 << 8, - yuv2yuv_709_limit_2_601_limit = 0x5 << 8, - yuv2yuv_709_limit_2_601_full = 0x6 << 8, // not support - yuv2yuv_601_full_2_709_limit = 0x7 << 8, - yuv2yuv_601_full_2_709_full = 0x8 << 8, // not support - yuv2yuv_709_full_2_601_limit = 0x9 << 8, // not support - yuv2yuv_709_full_2_601_full = 0xa << 8, // not support - full_csc_mask = 0xf00, -}; - -/* RGA rotate mode */ -enum { - rotate_mode0 = 0x0, /* no rotate */ - rotate_mode1 = 0x1, /* rotate */ - rotate_mode2 = 0x2, /* x_mirror */ - rotate_mode3 = 0x3, /* y_mirror */ -}; - -enum { - color_palette_mode0 = 0x0, /* 1K */ - color_palette_mode1 = 0x1, /* 2K */ - color_palette_mode2 = 0x2, /* 4K */ - color_palette_mode3 = 0x3, /* 8K */ -}; - -enum { - BB_BYPASS = 0x0, /* no rotate */ - BB_ROTATE = 0x1, /* rotate */ - BB_X_MIRROR = 0x2, /* x_mirror */ - BB_Y_MIRROR = 0x3 /* y_mirror */ -}; - -enum { - nearby = 0x0, /* no rotate */ - bilinear = 0x1, /* rotate */ - bicubic = 0x2, /* x_mirror */ -}; - - - - - -/* -// Alpha Red Green Blue -{ 4, 32, {{32,24, 8, 0, 16, 8, 24,16 }}, GGL_RGBA }, // RK_FORMAT_RGBA_8888 -{ 4, 24, {{ 0, 0, 8, 0, 16, 8, 24,16 }}, GGL_RGB }, // RK_FORMAT_RGBX_8888 -{ 3, 24, {{ 0, 0, 8, 0, 16, 8, 24,16 }}, GGL_RGB }, // RK_FORMAT_RGB_888 -{ 4, 32, {{32,24, 24,16, 16, 8, 8, 0 }}, GGL_BGRA }, // RK_FORMAT_BGRA_8888 -{ 2, 16, {{ 0, 0, 16,11, 11, 5, 5, 0 }}, GGL_RGB }, // RK_FORMAT_RGB_565 -{ 2, 16, {{ 1, 0, 16,11, 11, 6, 6, 1 }}, GGL_RGBA }, // RK_FORMAT_RGBA_5551 -{ 2, 16, {{ 4, 0, 16,12, 12, 8, 8, 4 }}, GGL_RGBA }, // RK_FORMAT_RGBA_4444 -{ 3, 24, {{ 0, 0, 24,16, 16, 8, 8, 0 }}, GGL_BGR }, // RK_FORMAT_BGB_888 - -*/ -/* In order to be compatible with RK_FORMAT_XX and HAL_PIXEL_FORMAT_XX, - * RK_FORMAT_XX is shifted to the left by 8 bits to distinguish. */ -typedef enum _Rga_SURF_FORMAT { - RK_FORMAT_RGBA_8888 = 0x0 << 8, - RK_FORMAT_RGBX_8888 = 0x1 << 8, - RK_FORMAT_RGB_888 = 0x2 << 8, - RK_FORMAT_BGRA_8888 = 0x3 << 8, - RK_FORMAT_RGB_565 = 0x4 << 8, - RK_FORMAT_RGBA_5551 = 0x5 << 8, - RK_FORMAT_RGBA_4444 = 0x6 << 8, - RK_FORMAT_BGR_888 = 0x7 << 8, - - RK_FORMAT_YCbCr_422_SP = 0x8 << 8, - RK_FORMAT_YCbCr_422_P = 0x9 << 8, - RK_FORMAT_YCbCr_420_SP = 0xa << 8, - RK_FORMAT_YCbCr_420_P = 0xb << 8, - - RK_FORMAT_YCrCb_422_SP = 0xc << 8, - RK_FORMAT_YCrCb_422_P = 0xd << 8, - RK_FORMAT_YCrCb_420_SP = 0xe << 8, - RK_FORMAT_YCrCb_420_P = 0xf << 8, - - RK_FORMAT_BPP1 = 0x10 << 8, - RK_FORMAT_BPP2 = 0x11 << 8, - RK_FORMAT_BPP4 = 0x12 << 8, - RK_FORMAT_BPP8 = 0x13 << 8, - - RK_FORMAT_Y4 = 0x14 << 8, - RK_FORMAT_YCbCr_400 = 0x15 << 8, - - RK_FORMAT_BGRX_8888 = 0x16 << 8, - - RK_FORMAT_YVYU_422 = 0x18 << 8, - RK_FORMAT_YVYU_420 = 0x19 << 8, - RK_FORMAT_VYUY_422 = 0x1a << 8, - RK_FORMAT_VYUY_420 = 0x1b << 8, - RK_FORMAT_YUYV_422 = 0x1c << 8, - RK_FORMAT_YUYV_420 = 0x1d << 8, - RK_FORMAT_UYVY_422 = 0x1e << 8, - RK_FORMAT_UYVY_420 = 0x1f << 8, - - RK_FORMAT_YCbCr_420_SP_10B = 0x20 << 8, - RK_FORMAT_YCrCb_420_SP_10B = 0x21 << 8, - RK_FORMAT_YCbCr_422_10b_SP = 0x22 << 8, - RK_FORMAT_YCrCb_422_10b_SP = 0x23 << 8, - - RK_FORMAT_BGR_565 = 0x24 << 8, - RK_FORMAT_BGRA_5551 = 0x25 << 8, - RK_FORMAT_BGRA_4444 = 0x26 << 8, - RK_FORMAT_UNKNOWN = 0x100 << 8, -} RgaSURF_FORMAT; - - -typedef struct rga_img_info_t { -#if defined(__arm64__) || defined(__aarch64__) - unsigned long yrgb_addr; /* yrgb mem addr */ - unsigned long uv_addr; /* cb/cr mem addr */ - unsigned long v_addr; /* cr mem addr */ -#else - unsigned int yrgb_addr; /* yrgb mem addr */ - unsigned int uv_addr; /* cb/cr mem addr */ - unsigned int v_addr; /* cr mem addr */ -#endif - unsigned int format; // definition by RK_FORMAT - unsigned short act_w; - unsigned short act_h; - unsigned short x_offset; - unsigned short y_offset; - - unsigned short vir_w; - unsigned short vir_h; - - unsigned short endian_mode; // for BPP - unsigned short alpha_swap; -} -rga_img_info_t; - - -typedef struct mdp_img_act { - unsigned short w; // width - unsigned short h; // height - short x_off; // x offset for the vir - short y_off; // y offset for the vir -} -mdp_img_act; - - - -typedef struct RANGE { - unsigned short min; - unsigned short max; -} -RANGE; - -typedef struct POINT { - unsigned short x; - unsigned short y; -} -POINT; - -typedef struct RECT { - unsigned short xmin; - unsigned short xmax; // width - 1 - unsigned short ymin; - unsigned short ymax; // height - 1 -} RECT; - -typedef struct RGB { - unsigned char r; - unsigned char g; - unsigned char b; - unsigned char res; -}RGB; - - -typedef struct MMU { - unsigned char mmu_en; -#if defined(__arm64__) || defined(__aarch64__) - unsigned long base_addr; -#else - unsigned int base_addr; -#endif - unsigned int mmu_flag; /* [0] mmu enable [1] src_flush [2] dst_flush [3] CMD_flush [4~5] page size */ -} MMU; - - - - -typedef struct COLOR_FILL { - short gr_x_a; - short gr_y_a; - short gr_x_b; - short gr_y_b; - short gr_x_g; - short gr_y_g; - short gr_x_r; - short gr_y_r; -} -COLOR_FILL; - -typedef struct FADING { - unsigned char b; - unsigned char g; - unsigned char r; - unsigned char res; -} -FADING; - - -typedef struct line_draw_t { - POINT start_point; /* LineDraw_start_point */ - POINT end_point; /* LineDraw_end_point */ - unsigned int color; /* LineDraw_color */ - unsigned int flag; /* (enum) LineDrawing mode sel */ - unsigned int line_width; /* range 1~16 */ -} -line_draw_t; - -/* color space convert coefficient. */ -typedef struct csc_coe_t { - int16_t r_v; - int16_t g_y; - int16_t b_u; - int32_t off; -} csc_coe_t; - -typedef struct full_csc_t { - unsigned char flag; - csc_coe_t coe_y; - csc_coe_t coe_u; - csc_coe_t coe_v; -} full_csc_t; - -struct rga_req { - unsigned char render_mode; /* (enum) process mode sel */ - - rga_img_info_t src; /* src image info */ - rga_img_info_t dst; /* dst image info */ - rga_img_info_t pat; /* patten image info */ - -#if defined(__arm64__) || defined(__aarch64__) - unsigned long rop_mask_addr; /* rop4 mask addr */ - unsigned long LUT_addr; /* LUT addr */ -#else - unsigned int rop_mask_addr; /* rop4 mask addr */ - unsigned int LUT_addr; /* LUT addr */ -#endif - - RECT clip; /* dst clip window default value is dst_vir */ - /* value from [0, w-1] / [0, h-1] */ - - int sina; /* dst angle default value 0 16.16 scan from table */ - int cosa; /* dst angle default value 0 16.16 scan from table */ - - unsigned short alpha_rop_flag; /* alpha rop process flag */ - /* ([0] = 1 alpha_rop_enable) */ - /* ([1] = 1 rop enable) */ - /* ([2] = 1 fading_enable) */ - /* ([3] = 1 PD_enable) */ - /* ([4] = 1 alpha cal_mode_sel) */ - /* ([5] = 1 dither_enable) */ - /* ([6] = 1 gradient fill mode sel) */ - /* ([7] = 1 AA_enable) */ - /* ([8] = 1 nn_quantize) */ - /* ([9] = 1 Real color mode) */ - - unsigned char scale_mode; /* 0 nearst / 1 bilnear / 2 bicubic */ - - unsigned int color_key_max; /* color key max */ - unsigned int color_key_min; /* color key min */ - - unsigned int fg_color; /* foreground color */ - unsigned int bg_color; /* background color */ - - COLOR_FILL gr_color; /* color fill use gradient */ - - line_draw_t line_draw_info; - - FADING fading; - - unsigned char PD_mode; /* porter duff alpha mode sel */ - - unsigned char alpha_global_value; /* global alpha value */ - - unsigned short rop_code; /* rop2/3/4 code scan from rop code table */ - - unsigned char bsfilter_flag; /* [2] 0 blur 1 sharp / [1:0] filter_type */ - - unsigned char palette_mode; /* (enum) color palatte 0/1bpp, 1/2bpp 2/4bpp 3/8bpp */ - - unsigned char yuv2rgb_mode; /* (enum) BT.601 MPEG / BT.601 JPEG / BT.709 */ - - unsigned char endian_mode; /* 0/big endian 1/little endian */ - - unsigned char rotate_mode; /* (enum) rotate mode */ - /* 0x0, no rotate */ - /* 0x1, rotate */ - /* 0x2, x_mirror */ - /* 0x3, y_mirror */ - - unsigned char color_fill_mode; /* 0 solid color / 1 patten color */ - - MMU mmu_info; /* mmu information */ - - unsigned char alpha_rop_mode; /* ([0~1] alpha mode) */ - /* ([2~3] rop mode) */ - /* ([4] zero mode en) */ - /* ([5] dst alpha mode) (RGA1) */ - - unsigned char src_trans_mode; - - unsigned char dither_mode; - - full_csc_t full_csc; /* full color space convert */ - - unsigned char CMD_fin_int_enable; - - /* completion is reported through a callback */ - void (*complete)(int retval); -}; - -int RGA_set_src_act_info( - struct rga_req *req, - unsigned int width, /* act width */ - unsigned int height, /* act height */ - unsigned int x_off, /* x_off */ - unsigned int y_off /* y_off */ -); - -#if defined(__arm64__) || defined(__aarch64__) -int RGA_set_src_vir_info( - struct rga_req *req, - unsigned long yrgb_addr, /* yrgb_addr */ - unsigned long uv_addr, /* uv_addr */ - unsigned long v_addr, /* v_addr */ - unsigned int vir_w, /* vir width */ - unsigned int vir_h, /* vir height */ - unsigned char format, /* format */ - unsigned char a_swap_en /* only for 32bit RGB888 format */ -); -#else -int RGA_set_src_vir_info( - struct rga_req *req, - unsigned int yrgb_addr, /* yrgb_addr */ - unsigned int uv_addr, /* uv_addr */ - unsigned int v_addr, /* v_addr */ - unsigned int vir_w, /* vir width */ - unsigned int vir_h, /* vir height */ - unsigned char format, /* format */ - unsigned char a_swap_en /* only for 32bit RGB888 format */ -); -#endif - -int RGA_set_dst_act_info( - struct rga_req *req, - unsigned int width, /* act width */ - unsigned int height, /* act height */ - unsigned int x_off, /* x_off */ - unsigned int y_off /* y_off */ -); - -#if defined(__arm64__) || defined(__aarch64__) -int RGA_set_dst_vir_info( - struct rga_req *msg, - unsigned long yrgb_addr, /* yrgb_addr */ - unsigned long uv_addr, /* uv_addr */ - unsigned long v_addr, /* v_addr */ - unsigned int vir_w, /* vir width */ - unsigned int vir_h, /* vir height */ - RECT *clip, /* clip window */ - unsigned char format, /* format */ - unsigned char a_swap_en -); -#else -int RGA_set_dst_vir_info( - struct rga_req *msg, - unsigned int yrgb_addr, /* yrgb_addr */ - unsigned int uv_addr, /* uv_addr */ - unsigned int v_addr, /* v_addr */ - unsigned int vir_w, /* vir width */ - unsigned int vir_h, /* vir height */ - RECT *clip, /* clip window */ - unsigned char format, /* format */ - unsigned char a_swap_en -); -#endif - -int RGA_set_pat_info( - struct rga_req *msg, - unsigned int width, - unsigned int height, - unsigned int x_off, - unsigned int y_off, - unsigned int pat_format -); - -#if defined(__arm64__) || defined(__aarch64__) -int RGA_set_rop_mask_info( - struct rga_req *msg, - unsigned long rop_mask_addr, - unsigned int rop_mask_endian_mode -); -#else -int RGA_set_rop_mask_info( - struct rga_req *msg, - unsigned int rop_mask_addr, - unsigned int rop_mask_endian_mode -); -#endif - -int RGA_set_alpha_en_info( - struct rga_req *msg, - unsigned int alpha_cal_mode, /* 0:alpha' = alpha + (alpha>>7) | alpha' = alpha */ - unsigned int alpha_mode, /* 0 global alpha / 1 per pixel alpha / 2 mix mode */ - unsigned int global_a_value, - unsigned int PD_en, /* porter duff alpha mode en */ - unsigned int PD_mode, - unsigned int dst_alpha_en ); /* use dst alpha */ - -int RGA_set_rop_en_info( - struct rga_req *msg, - unsigned int ROP_mode, - unsigned int ROP_code, - unsigned int color_mode, - unsigned int solid_color -); - - -int RGA_set_fading_en_info( - struct rga_req *msg, - unsigned char r, - unsigned char g, - unsigned char b -); - -int RGA_set_src_trans_mode_info( - struct rga_req *msg, - unsigned char trans_mode, - unsigned char a_en, - unsigned char b_en, - unsigned char g_en, - unsigned char r_en, - unsigned char color_key_min, - unsigned char color_key_max, - unsigned char zero_mode_en -); - - -int RGA_set_bitblt_mode( - struct rga_req *msg, - unsigned char scale_mode, // 0/near 1/bilnear 2/bicubic - unsigned char rotate_mode, // 0/copy 1/rotate_scale 2/x_mirror 3/y_mirror - unsigned int angle, // rotate angle - unsigned int dither_en, // dither en flag - unsigned int AA_en, // AA flag - unsigned int yuv2rgb_mode -); - - -int RGA_set_color_palette_mode( - struct rga_req *msg, - unsigned char palette_mode, /* 1bpp/2bpp/4bpp/8bpp */ - unsigned char endian_mode, /* src endian mode sel */ - unsigned int bpp1_0_color, /* BPP1 = 0 */ - unsigned int bpp1_1_color /* BPP1 = 1 */ -); - - -int RGA_set_color_fill_mode( - struct rga_req *msg, - COLOR_FILL *gr_color, /* gradient color part */ - unsigned char gr_satur_mode, /* saturation mode */ - unsigned char cf_mode, /* patten fill or solid fill */ - unsigned int color, /* solid color */ - unsigned short pat_width, /* pattern width */ - unsigned short pat_height, /* pattern height */ - unsigned char pat_x_off, /* pattern x offset */ - unsigned char pat_y_off, /* pattern y offset */ - unsigned char aa_en /* alpha en */ -); - - -int RGA_set_line_point_drawing_mode( - struct rga_req *msg, - POINT sp, /* start point */ - POINT ep, /* end point */ - unsigned int color, /* line point drawing color */ - unsigned int line_width, /* line width */ - unsigned char AA_en, /* AA en */ - unsigned char last_point_en /* last point en */ -); - - -int RGA_set_blur_sharp_filter_mode( - struct rga_req *msg, - unsigned char filter_mode, /* blur/sharpness */ - unsigned char filter_type, /* filter intensity */ - unsigned char dither_en /* dither_en flag */ -); - -int RGA_set_pre_scaling_mode( - struct rga_req *msg, - unsigned char dither_en -); - -#if defined(__arm64__) || defined(__aarch64__) -int RGA_update_palette_table_mode( - struct rga_req *msg, - unsigned long LUT_addr, /* LUT table addr */ - unsigned int palette_mode /* 1bpp/2bpp/4bpp/8bpp */ -); -#else -int RGA_update_palette_table_mode( - struct rga_req *msg, - unsigned int LUT_addr, /* LUT table addr */ - unsigned int palette_mode /* 1bpp/2bpp/4bpp/8bpp */ -); -#endif - -int RGA_set_update_patten_buff_mode( - struct rga_req *msg, - unsigned int pat_addr, /* patten addr */ - unsigned int w, /* patten width */ - unsigned int h, /* patten height */ - unsigned int format /* patten format */ -); - -#if defined(__arm64__) || defined(__aarch64__) -int RGA_set_mmu_info( - struct rga_req *msg, - unsigned char mmu_en, - unsigned char src_flush, - unsigned char dst_flush, - unsigned char cmd_flush, - unsigned long base_addr, - unsigned char page_size -); -#else -int RGA_set_mmu_info( - struct rga_req *msg, - unsigned char mmu_en, - unsigned char src_flush, - unsigned char dst_flush, - unsigned char cmd_flush, - unsigned int base_addr, - unsigned char page_size -); -#endif - -void rga_set_fds_offsets( - struct rga_req *rga_request, - unsigned short src_fd, - unsigned short dst_fd, - unsigned int src_offset, - unsigned int dst_offset); - -int RGA_set_src_fence_flag( - struct rga_req *msg, - int acq_fence, - int src_flag -); - - -int RGA_set_dst_fence_flag( - struct rga_req *msg, - int dst_flag -); - -int RGA_get_dst_fence( - struct rga_req *msg -); -#ifdef __cplusplus -} -#endif - -#endif /*_RK29_IPP_DRIVER_H_*/ diff --git a/hardware/rga/lib/librga.z.so b/hardware/rga/lib/librga.z.so deleted file mode 100644 index 105dea363c24d100a0b45e00e782a5d0a6235675..0000000000000000000000000000000000000000 Binary files a/hardware/rga/lib/librga.z.so and /dev/null differ diff --git a/hardware/rga/lib64/librga.z.so b/hardware/rga/lib64/librga.z.so deleted file mode 100644 index aabdcca575804349c72e6ccb0b6b85fb52ca8825..0000000000000000000000000000000000000000 Binary files a/hardware/rga/lib64/librga.z.so and /dev/null differ diff --git a/hardware/wifi/BUILD.gn b/hardware/wifi/BUILD.gn deleted file mode 100755 index e7909706f60052ff77e626a17aba54b37f3af9a1..0000000000000000000000000000000000000000 --- a/hardware/wifi/BUILD.gn +++ /dev/null @@ -1,101 +0,0 @@ -# Copyright (C) 2021 HiHope Open Source Organization . -# 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") - -AP6XXX_ETC_DIR = "//device/hihope/hardware/wifi/ap6xxx" -DNS_CONFIG_DIR = "//device/hihope/hardware/wifi" -WIFI_LIB_DIR = "//device/hihope/hardware/wifi/lib" -WIFI_BIN_DIR = "//device/hihope/hardware/wifi/bin" - -ohos_prebuilt_etc("clm_bcm43752a2_ag.blob") { - source = "$AP6XXX_ETC_DIR/clm_bcm43752a2_ag.blob" - install_images = [ vendor_base_dir ] - relative_install_dir = "firmware" - part_name = "rockchip_products" - install_enable = true -} - -ohos_prebuilt_etc("fw_bcm43752a2_ag_apsta.bin") { - source = "$AP6XXX_ETC_DIR/fw_bcm43752a2_ag_apsta.bin" - install_images = [ vendor_base_dir ] - relative_install_dir = "firmware" - part_name = "rockchip_products" - install_enable = true -} - -ohos_prebuilt_etc("fw_bcm43752a2_ag.bin") { - source = "$AP6XXX_ETC_DIR/fw_bcm43752a2_ag.bin" - install_images = [ vendor_base_dir ] - relative_install_dir = "firmware" - part_name = "rockchip_products" - install_enable = true -} - -ohos_prebuilt_etc("nvram_ap6275s.txt") { - source = "$AP6XXX_ETC_DIR/nvram_ap6275s.txt" - install_images = [ vendor_base_dir ] - relative_install_dir = "firmware" - part_name = "rockchip_products" - install_enable = true -} - -ohos_prebuilt_etc("resolv.conf") { - source = "$DNS_CONFIG_DIR/etc/resolv.conf" - install_images = [ "system" ] - part_name = "rockchip_products" - install_enable = true -} - -ohos_prebuilt_executable("wpa_cli") { - install_enable = true - source = "$WIFI_BIN_DIR/wpa_cli" - module_install_dir = "bin" - install_images = [ "system" ] - part_name = "rockchip_products" -} - -ohos_prebuilt_executable("wpa_supplicant") { - install_enable = true - source = "$WIFI_BIN_DIR/wpa_supplicant" - module_install_dir = "bin" - install_images = [ "system" ] - part_name = "rockchip_products" -} - -ohos_prebuilt_shared_library("libwpa.z.so") { - source = "$WIFI_LIB_DIR/libwpa.z.so" - module_install_dir = "lib" - install_images = [ "system" ] - part_name = "rockchip_products" -} - -ohos_prebuilt_shared_library("libwpa_client.z.so") { - source = "$WIFI_LIB_DIR/libwpa_client.z.so" - module_install_dir = "lib" - install_images = [ "system" ] - part_name = "rockchip_products" -} - -group("ap6xxx") { - deps = [ - ":clm_bcm43752a2_ag.blob", - ":fw_bcm43752a2_ag.bin", - ":fw_bcm43752a2_ag_apsta.bin", - ":libwpa.z.so", - ":libwpa_client.z.so", - ":nvram_ap6275s.txt", - ":resolv.conf", - ":wpa_cli", - ":wpa_supplicant", - ] -} diff --git a/hardware/wifi/ap6xxx/clm_bcm43752a2_ag.blob b/hardware/wifi/ap6xxx/clm_bcm43752a2_ag.blob deleted file mode 100644 index 9fabd6346c5231ac9e2e76827d018defb9b37a3e..0000000000000000000000000000000000000000 Binary files a/hardware/wifi/ap6xxx/clm_bcm43752a2_ag.blob and /dev/null differ diff --git a/hardware/wifi/ap6xxx/fw_bcm43752a2_ag.bin b/hardware/wifi/ap6xxx/fw_bcm43752a2_ag.bin deleted file mode 100644 index 41fb330a5a93f6a842c53d55e220e895d7301811..0000000000000000000000000000000000000000 Binary files a/hardware/wifi/ap6xxx/fw_bcm43752a2_ag.bin and /dev/null differ diff --git a/hardware/wifi/ap6xxx/fw_bcm43752a2_ag_apsta.bin b/hardware/wifi/ap6xxx/fw_bcm43752a2_ag_apsta.bin deleted file mode 100644 index 41fb330a5a93f6a842c53d55e220e895d7301811..0000000000000000000000000000000000000000 Binary files a/hardware/wifi/ap6xxx/fw_bcm43752a2_ag_apsta.bin and /dev/null differ diff --git a/hardware/wifi/ap6xxx/nvram_ap6275s.txt b/hardware/wifi/ap6xxx/nvram_ap6275s.txt deleted file mode 100644 index 757b436bda59f2f2f797d16d0079d8a2df6be3d4..0000000000000000000000000000000000000000 --- a/hardware/wifi/ap6xxx/nvram_ap6275s.txt +++ /dev/null @@ -1,356 +0,0 @@ -# AP6275S_NVRAM_V1.4_20201116 -# AP6275S v00 WLBGA reference board, iPA version. - -# SSID generated using Alberto's boardssid.py script: -# ********************SUMMARY******************** -# Board Name: AP6275S_V00 -#SSID: 0x086d -#macmid: 0x02df -# Successfully made SSID entry in sromdefs.tcl. -# Successfully made macmid entry in sromdefs.tcl. -# Successfully made SSID entry in tblssid.py. -# ************************************************* -# $ Copyright Broadcom $ -# -# -# <> -NVRAMRev=$Rev: 844050 $ -sromrev=11 -boardrev=0x1213 -boardtype=0x08ed -boardflags=0x00400201 -boardflags2=0xc0800000 -boardflags3=0x40002180 -#boardnum=57410 -macaddr=00:90:4c:12:d0:01 -jtag_irw=38 - -#Regulatory specific -ccode=0 -regrev=0 - -# Board specific -vendid=0x14e4 -devid=0x449d -manfid=0x2d0 -antswitch=0 -pdgain5g=0 -pdgain2g=0 -aa2g=3 -aa5g=3 -agbg0=2 -agbg1=2 -aga0=2 -aga1=2 -extpagain2g=2 -extpagain5g=2 -rxgains2gelnagaina0=0 -rxgains2gtrisoa0=0 -rxgains2gtrelnabypa0=0 -rxgains5gelnagaina0=0 -rxgains5gtrisoa0=0 -rxgains5gtrelnabypa0=0 -rxgains5gmelnagaina0=0 -rxgains5gmtrisoa0=0 -rxgains5gmtrelnabypa0=0 -rxgains5ghelnagaina0=0 -rxgains5ghtrisoa0=0 -rxgains5ghtrelnabypa0=0 -rxgains2gelnagaina1=0 -rxgains2gtrisoa1=0 -rxgains2gtrelnabypa1=0 -rxgains5gelnagaina1=0 -rxgains5gtrisoa1=0 -rxgains5gtrelnabypa1=0 -rxgains5gmelnagaina1=0 -rxgains5gmtrisoa1=0 -rxgains5gmtrelnabypa1=0 -rxgains5ghelnagaina1=0 -rxgains5ghtrisoa1=0 -rxgains5ghtrelnabypa1=0 - -#RSSI related -# 2G -rssicorrnorm_c0=4,4 -rssicorrnorm_c1=4,4 -# 5G -rssicorrnorm5g_c0=5,5,5,5,5,5,5,5,5,5,5,5 -rssicorrnorm5g_c1=4,4,4,4,4,4,4,4,4,4,4,4 - - -#Two range TSSI -tworangetssi2g=0 -tworangetssi5g=0 -lowpowerrange2g=0 -lowpowerrange5g=0 -low_adc_rate_en=1 -# NOTE :================================================================================ -# To run TPC with Two Range TSSI ,set tworangetssi2g = 1 and lowpowerrange2g = 0 -# To run TPC with Single Range TSSI, set tworangetssi2g = 0 -# To run TPC please READ instructions near pa2ga0 and pa2ga1 as well -# To generate PA params for Low Range set tworangetssi2g = 0 and lowpowerrange2g to 1 -# To generate PA params for High Range set tworangetssi2g = 1 and lowpowerrange2g to 1 -# ====================================================================================== - -#Related to FW Download. Host may use this -nocrc=1 - -otpimagesize=502 - -xtalfreq=37400 - -txchain=3 -rxchain=3 - -cckdigfilttype=2 - -#bit mask for slice capability bit 0:2G bit 1:5G -bandcap=3 - -#TXBF Related -rpcal2g=0 -rpcal5gb0=0 -rpcal5gb1=0 -rpcal5gb2=0 -rpcal5gb3=0 - - -#FDSS Related -fdss_level_2g=4,4 -fdss_interp_en=1 -fdss_level_5g=4,4 -fdss_level_11ax_2g=3,3 -fdss_level_11ax_2g_ch1=3,3 -fdss_level_11ax_2g_ch11=3,3 -fdss_level_11ax_5g=3,3 - -#Tempsense Related -tempthresh=110 -tempoffset=40 -rawtempsense=0x1ff -phycal_tempdelta=15 -temps_period=15 -temps_hysteresis=15 - -#------------- TSSI Related ------------- - -tssipos2g=1 -tssipos5g=1 -AvVmid_c0=2,127,4,92,4,91,4,91,4,94 -AvVmid_c1=2,127,4,93,4,93,4,95,3,110 -# CCK in case of multi mode 2 -pa2gccka0=-71,9683,-1064 -pa2gccka1=-59,9596,-1046 -# OFDM in case of multi_mode 2 -pa2ga0=-131,6980,-771 -pa2ga1=-119,7130,-776 -pa5ga0=-150,6098,-730,-141,6312,-729,-127,6151,-723,-136,5935,-702 -#pa5ga0=-150,6098,-730,-141,6312,-729,-136,6050,-713,-179,5504,-688 -#pa5ga1=-143,5954,-705,-136,6243,-722,-100,6496,-727,-89,7190,-798 -pa5ga1=-148,6016,-719,-136,6243,-722,-123,6019,-711,-89,7190,-798 - -# Max power and offsets -maxp2ga0=86 -maxp2ga1=91 -maxp5ga0=75,76,68,68 -maxp5ga1=73,76,70,76 -subband5gver=0x4 -paparambwver=3 -cckpwroffset0=-5 -cckpwroffset1=-3 -pdoffset40ma0=0x4433 -pdoffset80ma0=0x3232 -pdoffset40ma1=0x2333 -pdoffset80ma1=0x1222 -cckbw202gpo=0x1111 -cckbw20ul2gpo=0x0000 -mcsbw202gpo=0x65544332 -mcsbw402gpo=0xEC444332 -dot11agofdmhrbw202gpo=0x4433 -ofdmlrbw202gpo=0x0022 -mcsbw205glpo=0x87544441 -mcsbw405glpo=0xB6443332 -mcsbw805glpo=0xCC553332 -mcsbw1605glpo=0 -mcsbw205gmpo=0x98544440 -mcsbw405gmpo=0xB6443332 -mcsbw805gmpo=0xBB553332 -mcsbw1605gmpo=0 -mcsbw205ghpo=0x98422230 -mcsbw405ghpo=0xB7554442 -mcsbw805ghpo=0xCC442221 -powoffs2gtna0=-3,-2,-2,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,0 -powoffs2gtna1=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0 -mcs1024qam2gpo=0xCCAA -mcs1024qam5glpo=0xFFFFCB -mcs1024qam5gmpo=0xFFEECB -mcs1024qam5ghpo=0xFFFFED -mcs1024qam5gx1po=0xEECCCC -mcs1024qam5gx2po=0xEECCCC -mcs8poexp=0 -mcs9poexp=0 -mcs10poexp=0 - -# 5G power offset per channel for band edge channel -powoffs5g20mtna0=0,0,0,0,0,0,0 -powoffs5g20mtna1=0,0,0,0,0,0,0 -powoffs5g40mtna0=0,0,0,0,0 -powoffs5g40mtna1=0,0,0,0,0 -powoffs5g80mtna0=0,0,0,0,0 -powoffs5g80mtna1=0,0,0,0,0 -mcs11poexp=0 - -#LTE Coex Related -ltecxmux=0 -ltecxpadnum=0x0504 -ltecxfnsel=0x44 -ltecxgcigpio=0x04 -#OOB params -#device_wake_opt=1 -host_wake_opt=0 - -# SWCTRL Related - -swctrlmap_2g=0x10101010,0x06030401,0x04011010,0x000000,0x3FF -swctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x000 -swctrlmap_5g=0x80408040,0x21240120,0x01208040,0x000000,0x3FF -swctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x000 -clb2gslice0core0=0x01b -clb2gslice1core0=0x000 -clb5gslice0core0=0x064 -clb5gslice1core0=0x000 -clb2gslice0core1=0x056 -clb2gslice1core1=0x000 -clb5gslice0core1=0x0a1 -clb5gslice1core1=0x000 -btc_prisel_ant_mask=0x2 -clb_swctrl_smask_ant0=0x27f -clb_swctrl_smask_ant1=0x2f7 - - -#BT Coex 1:TDM -btc_mode=1 - -# --- PAPD Cal related params ---- -txwbpapden=0 # 0:NBPAPD 1:WBPAPD -# NB PAPD Cal params -nb_eps_offset=470,470 -nb_bbmult=66,66 -nb_papdcalidx=6,6 -nb_txattn=2,2 -nb_rxattn=1,1 -nb_eps_stopidx=63 -epsilonoff_5g20_c0=0,1,1,-1 -epsilonoff_5g40_c0=0,1,1,1 -epsilonoff_5g80_c0=1,0,1,1 -epsilonoff_5g20_c1=1,0,0,-1 -epsilonoff_5g40_c1=0,0,0,0 -epsilonoff_5g80_c1=1,0,1,1 -epsilonoff_2g20_c0=0 -epsilonoff_2g20_c1=0 - -# energy detect threshold -ed_thresh2g=-67 -ed_thresh5g=-67 -# energy detect threshold for EU -eu_edthresh2g=-67 -eu_edthresh5g=-67 - -#rpcal coef for imptxbf -rpcal5gb0=238 -rpcal5gb1=228 -rpcal5gb2=222 -rpcal5gb3=229 -rpcal2g=15 -ocl=0 -bt_coex_chdep_div=1 - -# OLPC Related -disable_olpc=0 -olpc_thresh5g=32 -olpc_anchor5g=40 -olpc_thresh2g=32 -olpc_anchor2g=40 - -#PAPR related -paprdis=0 -paprrmcsgamma2g=500,550,550,-1,-1,-1,-1,-1,-1,-1,-1,-1 -paprrmcsgain2g=128,128,128,0,0,0,0,0,0,0,0,0 -paprrmcsgamma2g_ch13=500,550,550,-1,-1,-1,-1,-1,-1,-1,-1,-1 -paprrmcsgain2g_ch13=128,128,128,0,0,0,0,0,0,0,0,0 -paprrmcsgamma2g_ch1=500,550,550,-1,-1,-1,-1,-1,-1,-1,-1,-1 -paprrmcsgain2g_ch1=128,128,128,0,0,0,0,0,0,0,0,0 -paprrmcsgamma5g20=500,500,500,-1,-1,-1,-1,-1,-1,-1,-1,-1 -paprrmcsgain5g20=128,128,128,0,0,0,0,0,0,0,0,0 -paprrmcsgamma5g40=600,600,600,-1,-1,-1,-1,-1,-1,-1,-1,-1 -paprrmcsgain5g40=128,128,128,0,0,0,0,0,0,0,0,0 -paprrmcsgamma5g80=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 -paprrmcsgain5g80=0,0,0,0,0,0,0,0,0,0,0,0 - -# Enable papd for cck when target pwr ge 16dBm -cckpapd_pwrthresh=64 - -## ULOFDMA Board limit PPRs for 2G20 ## -ruppr2g20bpska0=0x8421 -ruppr2g20bpska1=0x8421 -ruppr2g20qpska0=0x8421 -ruppr2g20qpska1=0x8421 -ruppr2g20qam16a0=0x10842 -ruppr2g20qam16a1=0x10842 -ruppr2g20qam64a0=0x18C63 -ruppr2g20qam64a1=0x18C63 -ruppr2g20qam256a0=0x318C6 -ruppr2g20qam256a1=0x318C6 -ruppr2g20qam1024a0=0x5AD6B -ruppr2g20qam1024a1=0x5AD6B -## ULOFDMA Board limit PPRs for 5G20 ## -ruppr5g20bpska0=0x30421 -ruppr5g20bpska1=0x30421 -ruppr5g20qpska0=0x30421 -ruppr5g20qpska1=0x30421 -ruppr5g20qam16a0=0x30842 -ruppr5g20qam16a1=0x30842 -ruppr5g20qam64a0=0x314A5 -ruppr5g20qam64a1=0x314A5 -ruppr5g20qam256a0=0x4A529 -ruppr5g20qam256a1=0x4A529 -ruppr5g20qam1024a0=0x7294A -ruppr5g20qam1024a1=0x7294A -## ULOFDMA Board limit PPRs for 5G40 ## -ruppr5g40bpska0=0x508421 -ruppr5g40bpska1=0x508421 -ruppr5g40qpska0=0x508421 -ruppr5g40qpska1=0x508421 -ruppr5g40qam16a0=0x508421 -ruppr5g40qam16a1=0x508421 -ruppr5g40qam64a0=0x518C63 -ruppr5g40qam64a1=0x518C63 -ruppr5g40qam256a0=0xA42108 -ruppr5g40qam256a1=0xA42108 -ruppr5g40qam1024a0=0xE68421 -ruppr5g40qam1024a1=0xE68421 -## ULOFDMA Board limit PPRs for 5G80 ## -ruppr5g80bpska0=0xC108421 -ruppr5g80bpska1=0xC108421 -ruppr5g80qpska0=0xC108421 -ruppr5g80qpska1=0xC108421 -ruppr5g80qam16a0=0xC108421 -ruppr5g80qam16a1=0xC108421 -ruppr5g80qam64a0=0x14418C63 -ruppr5g80qam64a1=0x14418C63 -ruppr5g80qam256a0=0x2C94A529 -ruppr5g80qam256a1=0x2C94A529 -ruppr5g80qam1024a0=0x3CD60000 -ruppr5g80qam1024a1=0x3CD60000 - -muxenab=0x10 - -# ########### BTC Dynctl profile params ############ -# flags:bit0 - dynctl enabled, bit1 dynamic desense, bit2 dynamic mode, bit 3 TX power control -#btcdyn_flags=1 - -#btcdyn_default_btc_mode=5 -#btcdyn_msw_rows=0 -#btcdyn_dsns_rows=0 -#btc_params1007=100 -#btc_params1017=4 \ No newline at end of file diff --git a/hardware/wifi/bin/wpa_cli b/hardware/wifi/bin/wpa_cli deleted file mode 100644 index 30892371ed74f2227bb5c9d6a13e78d4562355a4..0000000000000000000000000000000000000000 Binary files a/hardware/wifi/bin/wpa_cli and /dev/null differ diff --git a/hardware/wifi/bin/wpa_supplicant b/hardware/wifi/bin/wpa_supplicant deleted file mode 100644 index f2d2c48ee5c0f9049725a35222d97d9fb615ac7b..0000000000000000000000000000000000000000 Binary files a/hardware/wifi/bin/wpa_supplicant and /dev/null differ diff --git a/hardware/wifi/etc/resolv.conf b/hardware/wifi/etc/resolv.conf deleted file mode 100644 index f5d24a1ad6f3cd7d1f4fbb8b705401518dedbf17..0000000000000000000000000000000000000000 --- a/hardware/wifi/etc/resolv.conf +++ /dev/null @@ -1,2 +0,0 @@ -nameserver 114.114.114.114 -nameserver 8.8.8.8 diff --git a/hardware/wifi/lib/libwpa.z.so b/hardware/wifi/lib/libwpa.z.so deleted file mode 100644 index 39e61829a77594dcb7b7c15eb79c0c5f1de7c04b..0000000000000000000000000000000000000000 Binary files a/hardware/wifi/lib/libwpa.z.so and /dev/null differ diff --git a/hardware/wifi/lib/libwpa_client.z.so b/hardware/wifi/lib/libwpa_client.z.so deleted file mode 100644 index 94f06e4c43acd705f790cb357415b2e2428866f4..0000000000000000000000000000000000000000 Binary files a/hardware/wifi/lib/libwpa_client.z.so and /dev/null differ diff --git a/hardware/wifi/proc/sys/net/ipv4/ping_group_range b/hardware/wifi/proc/sys/net/ipv4/ping_group_range deleted file mode 100644 index f4a3074921b639afe08ccd441bf506df7f65ac7f..0000000000000000000000000000000000000000 --- a/hardware/wifi/proc/sys/net/ipv4/ping_group_range +++ /dev/null @@ -1 +0,0 @@ -0 10 \ No newline at end of file diff --git a/rk3568/BUILD.gn b/rk3568/BUILD.gn index 3780a533fca3ff00ec791e51c0d64c5719a2ee94..7d96b65e202d4c2dd48cc1b00738c1620bf048f8 100755 --- a/rk3568/BUILD.gn +++ b/rk3568/BUILD.gn @@ -17,8 +17,9 @@ print("rk3568_group in") group("rk3568_group") { deps = [ "bootanimation:bootanimation", - "build/rootfs:init_configs", + "cfg:init_configs", "distributedhardware:distributedhardware", "kernel:kernel", + "//device/soc/rockchip/hardware:hardware_group", ] } diff --git a/rk3568/README.en.md b/rk3568/README.en.md index b3aa16517ff6ed48960a6f11d2b722b821404c30..509c8222631c0327edca0392614cec78230094ab 100644 --- a/rk3568/README.en.md +++ b/rk3568/README.en.md @@ -7,15 +7,14 @@ This repository stores scripts for compiling and packing kernel image,burn tools ## contents ``` -/device/hihope/rk3568 -├── build # Compilation and construction of key cfg files +/device/board/hihope/rk3568 +├── cfg # Compilation and construction of key cfg files ├── kernel # Compilation and packaging of the kernel image -├── loader # Pre-made image and instructions for use -└── tools # Burning tools and instructions +└── loader # Pre-made image and instructions for use ``` ## Repositories Involved -**device/hihope/rk3568** +**device/board/hihope/rk3568** diff --git a/rk3568/README_zh.md b/rk3568/README_zh.md index d3b750cd6d04c47103b6aa33e761decda9280084..4f655a15b65abaa3754cc0a9203e0492d08e769c 100644 --- a/rk3568/README_zh.md +++ b/rk3568/README_zh.md @@ -7,7 +7,7 @@ rk3568内核镜像编译打包,烧录工具等。 ## 目录 ``` -/device/hihope/rk3568 +/device/board/hihope/rk3568 ├── build # 关键cfg的编译构建 ├── kernel # kernel镜像的编译打包 └── loader # 预制镜像及使用说明 @@ -17,5 +17,5 @@ rk3568内核镜像编译打包,烧录工具等。 ## 对应仓库 -**device/hihope/rk3568** +**device/board/hihope/rk3568** diff --git a/rk3568/bootanimation/BUILD.gn b/rk3568/bootanimation/BUILD.gn index a7f7f80c567d07157861bfb592ea624c53207b7c..d92ec0b162a5ad194ad50323797b3f899d317caa 100755 --- a/rk3568/bootanimation/BUILD.gn +++ b/rk3568/bootanimation/BUILD.gn @@ -12,7 +12,7 @@ # limitations under the License. import("//build/ohos.gni") -BOOTANIMATION_DIR = "//device/hihope/rk3568/bootanimation" +BOOTANIMATION_DIR = "//device/board/hihope/rk3568/bootanimation" ohos_prebuilt_etc("bootanimation-720x1280") { source = "$BOOTANIMATION_DIR/bootanimation-720x1280.raw" @@ -28,9 +28,7 @@ ohos_prebuilt_etc("bootanimation-1920x1080") { group("bootanimation") { deps = [ - ":bootanimation-720x1280", ":bootanimation-1920x1080", + ":bootanimation-720x1280", ] } - - diff --git a/rk3568/camera/product.gni b/rk3568/camera/product.gni index 3316d2c43a0ea5d76d390ae14e87d3814ab0af60..57b1adf71ea7401804650ef6c2484cb4747eaf27 100755 --- a/rk3568/camera/product.gni +++ b/rk3568/camera/product.gni @@ -16,12 +16,14 @@ if (!defined(defines)) { } camera_product_name_path = "//vendor/${product_company}/${product_name}" -camera_device_name_path = "//device/${product_company}/${device_name}" +camera_device_name_path = "//device/board/${product_company}/${device_name}" is_support_v4l2 = true if (is_support_v4l2) { is_support_mpi = false defines += [ "SUPPORT_V4L2" ] chipset_build_deps = "$camera_device_name_path/camera/:chipset_build" - camera_device_manager_deps = "$camera_device_name_path/camera/src/device_manager:camera_device_manager" - camera_pipeline_core_deps = "$camera_device_name_path/camera/src/pipeline_core:camera_pipeline_core" + camera_device_manager_deps = + "$camera_device_name_path/camera/src/device_manager:camera_device_manager" + camera_pipeline_core_deps = + "$camera_device_name_path/camera/src/pipeline_core:camera_pipeline_core" } diff --git a/rk3568/camera/src/pipeline_core/BUILD.gn b/rk3568/camera/src/pipeline_core/BUILD.gn index 2dfb262a6f2366bce2fd54045c0db619f6044d91..cc906079c91ee2866eecbce8bd282a7f68a17a7d 100755 --- a/rk3568/camera/src/pipeline_core/BUILD.gn +++ b/rk3568/camera/src/pipeline_core/BUILD.gn @@ -71,7 +71,7 @@ ohos_shared_library("camera_pipeline_core") { "$camera_path/pipeline_core/pipeline_impl/src/strategy/stream_pipeline_strategy.cpp", "$camera_path/pipeline_core/pipeline_impl/src/stream_pipeline_core.cpp", "$camera_path/pipeline_core/src/pipeline_core.cpp", - "//device/hihope/hardware/mpp/src/mpi_enc_utils.c", + "//device/soc/rockchip/hardware/mpp/src/mpi_enc_utils.c", ] include_dirs = [ "//utils/native/base/include", @@ -116,8 +116,8 @@ ohos_shared_library("camera_pipeline_core") { "//utils/native/base/include", "//foundation/multimedia/camera_standard/frameworks/native/metadata/include", "$camera_device_name_path/camera/src/pipeline_core/node", - "//device/hihope/hardware/rga/include", - "//device/hihope/hardware/mpp/include", + "//device/soc/rockchip/hardware/rga/include", + "//device/soc/rockchip/hardware/mpp/include", "//third_party/libjpeg", # hcs parser @@ -132,8 +132,8 @@ ohos_shared_library("camera_pipeline_core") { deps = [ "$camera_path/buffer_manager:camera_buffer_manager", "$camera_path/device_manager:camera_device_manager", - "//device/hihope/hardware/mpp:libmpp", - "//device/hihope/hardware/rga:librga", + "//device/soc/rockchip/hardware/mpp:libmpp", + "//device/soc/rockchip/hardware/rga:librga", "//foundation/multimedia/camera_standard/frameworks/native/metadata:metadata", "//third_party/libjpeg:libjpeg_static", diff --git a/hardware/isp/BUILD.gn b/rk3568/cfg/BUILD.gn similarity index 47% rename from hardware/isp/BUILD.gn rename to rk3568/cfg/BUILD.gn index e63661d9b0a7c3542affd00c7e9cd4f4984ac4d2..0de09e36f61b31d770a962ed849577b8dff199f8 100755 --- a/hardware/isp/BUILD.gn +++ b/rk3568/cfg/BUILD.gn @@ -10,53 +10,65 @@ # 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") -ISP_DIR = "//device/hihope/hardware/isp" +import("//build/ohos.gni") -ohos_prebuilt_shared_library("librkaiq") { - if (target_cpu == "arm") { - source = "$ISP_DIR/lib/librkaiq.z.so" - } else { - source = "$ISP_DIR/lib64/librkaiq.z.so" - } +ohos_prebuilt_etc("init.rk3568.cfg") { + source = "init.rk3568.cfg" + part_name = "rockchip_products" install_images = [ chipset_base_dir ] - subsystem_name = "rockchip_products" install_enable = true } -ohos_prebuilt_etc("gc8034_RK-CMK-8M-2-v1_CK8401") { - source = "$ISP_DIR/etc/iqfiles/gc8034_RK-CMK-8M-2-v1_CK8401.json" - relative_install_dir = "iqfiles" +ohos_prebuilt_executable("weston.cfg") { + install_enable = true + source = "weston.cfg" + module_install_dir = "etc/init" install_images = [ chipset_base_dir ] part_name = "rockchip_products" - install_enable = true } -ohos_prebuilt_etc("iqfil") { - source = "$ISP_DIR/etc/iqfil.json" - relative_install_dir = "" - install_images = [ chipset_base_dir ] +ohos_prebuilt_etc("init.rk3568.usb.cfg") { + source = "init.rk3568.usb.cfg" part_name = "rockchip_products" + install_images = [ chipset_base_dir ] install_enable = true } -ohos_prebuilt_executable("ispserver") { - if (target_cpu == "arm") { - source = "$ISP_DIR/bin/ispserver" - } else { - source = "$ISP_DIR/bin64/ispserver" - } - install_images = [ chipset_base_dir ] +ohos_prebuilt_etc("fstab.rk3568") { + source = "fstab.rk3568" part_name = "rockchip_products" + install_images = [ vendor_base_dir ] install_enable = true } -group("isp") { +if (enable_ramdisk) { + ohos_copy("fstab.required") { + sources = [ "fstab.rk3568" ] + outputs = [ "$root_build_dir/fstab.required" ] + } + ohos_copy("ramdisk_resource_config.ini") { + sources = [ "ramdisk_resource_config.ini" ] + outputs = [ "$root_build_dir/../../build/ohos/images/mkimage/ramdisk_resource_config.ini" ] + } +} else { + ohos_prebuilt_etc("fstab.required") { + source = "fstab.required" + part_name = "rockchip_products" + install_images = [ "system" ] + install_enable = true + } +} + +group("init_configs") { deps = [ - ":gc8034_RK-CMK-8M-2-v1_CK8401", - ":iqfil", - ":ispserver", - ":librkaiq", + ":fstab.required", + ":fstab.rk3568", + ":init.rk3568.cfg", + ":init.rk3568.usb.cfg", + ":weston.cfg", ] + if (enable_ramdisk) { + deps += [ ":ramdisk_resource_config.ini" ] + } } diff --git a/rk3568/cfg/fstab.required b/rk3568/cfg/fstab.required new file mode 100755 index 0000000000000000000000000000000000000000..cc04577ffd9787c396ea231cf360ee1b3b347801 --- /dev/null +++ b/rk3568/cfg/fstab.required @@ -0,0 +1,5 @@ +# fstab file. +# +/dev/block/platform/fe310000.sdhci/by-name/system /usr ext4 ro,barrier=1 wait,required +/dev/block/platform/fe310000.sdhci/by-name/vendor /vendor ext4 ro,barrier=1 wait,required +/dev/block/platform/fe310000.sdhci/by-name/userdata /data ext4 nosuid,nodev,noatime,barrier=1,data=ordered,noauto_da_alloc wait,reservedsize=104857600 diff --git a/rk3568/cfg/fstab.rk3568 b/rk3568/cfg/fstab.rk3568 new file mode 100755 index 0000000000000000000000000000000000000000..cc04577ffd9787c396ea231cf360ee1b3b347801 --- /dev/null +++ b/rk3568/cfg/fstab.rk3568 @@ -0,0 +1,5 @@ +# fstab file. +# +/dev/block/platform/fe310000.sdhci/by-name/system /usr ext4 ro,barrier=1 wait,required +/dev/block/platform/fe310000.sdhci/by-name/vendor /vendor ext4 ro,barrier=1 wait,required +/dev/block/platform/fe310000.sdhci/by-name/userdata /data ext4 nosuid,nodev,noatime,barrier=1,data=ordered,noauto_da_alloc wait,reservedsize=104857600 diff --git a/rk3568/cfg/init.rk3568.cfg b/rk3568/cfg/init.rk3568.cfg new file mode 100755 index 0000000000000000000000000000000000000000..710ad9b19dad88dd756cc320a19074521cf0a763 --- /dev/null +++ b/rk3568/cfg/init.rk3568.cfg @@ -0,0 +1,49 @@ +{ + "import" : [ + "init.${ohos.boot.hardware}.usb.cfg" + ], + "jobs" : [{ + "name" : "pre-init", + "cmds" : [ + "write /proc/sys/vm/min_free_kbytes 10240" + ] + }, { + "name" : "init", + "cmds" : [ + "mount debugfs /sys/kernel/debug /sys/kernel/debug mode=755", + "write /sys/kernel/debug/hisi_inno_phy/role peripheral" + ] + }, { + "name" : "boot", + "cmds" : [ + "chmod 777 /dev/ttyAMA2", + "chmod 775 /sys/class/rfkill/rfkill0/state", + "chmod 777 /dev/rtkbt_dev", + "chmod 0440 /proc/interrupts", + "chmod 0440 /proc/stat", + "chmod 0640 /dev/xt_qtaguid", + "chmod 0660 /proc/net/xt_qtaguid/ctrl", + "chmod 0440 /proc/net/xt_qtaguid/stats", + "chmod 666 /dev/mali0", + "chown system graphics /dev/mali0", + "chown system graphics /dev/graphics/fb0", + "chmod 666 /dev/ion", + "chown system system /dev/ion", + "chmod 666 /dev/sched_rtg_ctrl", + "chown system system /dev/sched_rtg_ctrl", + "start ispserver" + ] + }, { + "name" : "post-fs-data", + "cmds" : [ + "restorecon" + ] + } + ], + "services" : [{ + "name" : "ispserver", + "path" : ["/vendor/bin/ispserver"], + "once" : 1 + } + ] +} diff --git a/rk3568/cfg/init.rk3568.usb.cfg b/rk3568/cfg/init.rk3568.usb.cfg new file mode 100755 index 0000000000000000000000000000000000000000..fa4a0dcdfdc5c819cb1c8212e5ab533e28001bb1 --- /dev/null +++ b/rk3568/cfg/init.rk3568.usb.cfg @@ -0,0 +1,51 @@ +{ + "jobs" : [{ + "name" : "boot", + "cmds" : [ + "mkdir /dev/usb-ffs 0770 shell shell", + "mkdir /dev/usb-ffs/hdc 0770 shell shell", + "mount configfs none /config", + "mkdir /config/usb_gadget/g1 0770 shell shell", + "write /config/usb_gadget/g1/idVendor 0x2207", + "write /config/usb_gadget/g1/idProduct 0x0018", + "write /config/usb_gadget/g1/os_desc/use 1", + "write /config/usb_gadget/g1/bcdDevice 0x0223", + "write /config/usb_gadget/g1/bcdUSB 0x0200", + "mkdir /config/usb_gadget/g1/strings/0x409 0770", + "copy /sys/block/mmcblk0/device/cid /config/usb_gadget/g1/strings/0x409/serialnumber", + "write /config/usb_gadget/g1/strings/0x409/manufacturer Rockchip", + "write /config/usb_gadget/g1/strings/0x409/product \"HDC Device\"", + "mkdir /config/usb_gadget/g1/functions/ffs.hdc", + "mkdir /config/usb_gadget/g1/configs/b.1 0770 shell shell", + "mkdir /config/usb_gadget/g1/configs/b.1/strings/0x409 0770 shell shell", + "write /config/usb_gadget/g1/os_desc/b_vendor_code 0x1", + "write /config/usb_gadget/g1/os_desc/qw_sign MSFT100", + "write /config/usb_gadget/g1/configs/b.1/MaxPower 500", + "symlink /config/usb_gadget/g1/configs/b.1 /config/usb_gadget/g1/os_desc/b.1", + "mount functionfs hdc /dev/usb-ffs/hdc uid=2000,gid=2000", + "setparam sys.usb.configfs 1", + "setparam sys.usb.controller fcc00000.dwc3" + ] + }, { + "name" : "param:sys.usb.config=none && param:sys.usb.configfs=1", + "condition" : "sys.usb.config=none && sys.usb.configfs=1", + "cmds" : [ + "write /config/usb_gadget/g1/os_desc/use 0", + "setparam sys.usb.ffs.ready 0" + ] + }, { + "name" : "param:init.svc.hdcd=stopped", + "condition" : "init.svc.hdcd=stopped", + "cmds" : [ + "setparam sys.usb.ffs.ready 0" + ] + }, { + "name" : "param:sys.usb.config=hdc && param:sys.usb.configfs=1", + "condition" : "sys.usb.config=hdc && sys.usb.configfs=1", + "cmds" : [ + "write /config/usb_gadget/g1/idProduct 0x5000", + "write /config/usb_gadget/g1/os_desc/use 1" + ] + } + ] +} diff --git a/rk3568/cfg/ramdisk_resource_config.ini b/rk3568/cfg/ramdisk_resource_config.ini new file mode 100755 index 0000000000000000000000000000000000000000..2db8917be34bd80901b89ed554742a18d3543bac --- /dev/null +++ b/rk3568/cfg/ramdisk_resource_config.ini @@ -0,0 +1,27 @@ +# current path: "out/ohos-arm-release/" +# Modification and deletion of section name is not allowed + +# fstab.required path config, The fstab is device related +[fstab_required_path] +source_path = ./fstab.required +target_path = ./packages/phone/ramdisk/etc/fstab.required + +# dtc_419 path config +[dtc_419_path] +source_path = ../../out/KERNEL_OBJ/kernel/src_tmp/linux-4.19/scripts/dtc/dtc +target_path = ../../third_party/e2fsprogs/prebuilt/host/bin/dtc + +# dtc_510 path config +[dtc_510_path] +source_path = ../../out/kernel/src_tmp/linux-5.10/scripts/dtc/dtc +target_path = ../../third_party/e2fsprogs/prebuilt/host/bin/dtc + +# mkimage path config +[mkimage_path] +source_path = ../../device/board/hisilicon/hispark_taurus/uboot/prebuilts/mkimage +target_path = ../../third_party/e2fsprogs/prebuilt/host/bin/mkimage + +[board] +boot_type = two_stages +source_path = ../../out/kernel/src_tmp/linux-5.10/make-boot.sh +target_path = ./packages/phone/make-boot.sh diff --git a/rk3568/cfg/weston.cfg b/rk3568/cfg/weston.cfg new file mode 100755 index 0000000000000000000000000000000000000000..c43758552790d095051939f455fbc1a7e343b1ee --- /dev/null +++ b/rk3568/cfg/weston.cfg @@ -0,0 +1,32 @@ +{ + "jobs" : [{ + "name" : "services:weston", + "cmds" : [ + "mkdir /data/weston", + ] + } + ], + "services" : [{ + "name" : "weston", + "path" : ["/system/bin/weston", "-c", "/system/etc/weston.ini", "-B", "drm-backend.so", "--tty=1"], + "disabled" : 1, + "jobs" : { + "on-start" : "services:weston" + } + }, { + "name" : "hdi_weston", + "path" : ["/system/bin/weston", "-c", "/system/etc/weston.ini", "-B", "hdi-backend.so"], + "disabled" : 1 + }, { + "name" : "mmi_uinput_service", + "path" : ["/system/bin/uinput_inject"], + "uid" : "root", + "gid" : ["system", "shell", "uhid"] + }, { + "name" : "udevd_service", + "path" : ["/system/bin/udevd"], + "uid" : "root", + "gid" : ["system"] + } + ] +} diff --git a/rk3568/kernel/BUILD.gn b/rk3568/kernel/BUILD.gn index d00c1973dc5e227f8cdde18849b6b395f3218cb9..15f312ca84875d58fbec861297ec8aec61774842 100755 --- a/rk3568/kernel/BUILD.gn +++ b/rk3568/kernel/BUILD.gn @@ -25,7 +25,7 @@ action("kernel") { args = [ rebase_path(kernel_build_script_dir, root_build_dir), rebase_path("$root_build_dir/packages/phone/images"), - rebase_path("//device/hihope/$device_name"), + rebase_path("//device/board/hihope/$device_name"), product_path, rebase_path("$root_build_dir/../.."), ] diff --git a/rk3568/kernel/build_kernel.sh b/rk3568/kernel/build_kernel.sh index 97ea929fd794c0aac3f377e33617cacdccad5992..1f3151a31c2a82e23ea657b026a1100d7d327644 100755 --- a/rk3568/kernel/build_kernel.sh +++ b/rk3568/kernel/build_kernel.sh @@ -56,7 +56,7 @@ if [ "enable_ramdisk" != "${6}" ]; then cp boot_linux.img ${2}/boot_linux.img fi cp resource.img ${2}/resource.img -cp ${3}/loader/parameter_5_10.txt ${2}/parameter.txt +cp ${3}/loader/parameter.txt ${2}/parameter.txt cp ${3}/loader/MiniLoaderAll.bin ${2}/MiniLoaderAll.bin -cp ${3}/loader/uboot_5_10.img ${2}/uboot.img +cp ${3}/loader/uboot.img ${2}/uboot.img popd diff --git a/rk3568/loader/boot_linux.img b/rk3568/loader/boot_linux.img deleted file mode 100644 index 267bf9ede10903f11ac9e984bab8ea4677cb4acc..0000000000000000000000000000000000000000 Binary files a/rk3568/loader/boot_linux.img and /dev/null differ diff --git a/rk3568/loader/parameter.txt b/rk3568/loader/parameter.txt index aead9ab181fc67681a4010e6a03812f7e16115b0..3fcba0fabec21afcd2251be5c7080497531fc201 100644 --- a/rk3568/loader/parameter.txt +++ b/rk3568/loader/parameter.txt @@ -8,6 +8,6 @@ MACHINE: rk3568_r CHECK_MASK: 0x80 PWR_HLD: 0,0,A,0,1 TYPE: GPT -CMDLINE:mtdparts=rk29xxnand:0x00002000@0x00002000(uboot),0x00002000@0x00004000(trust),0x00030000@0x00006000(boot_linux:bootable),0x00400000@0x00036000(system),0x00200000@0x00436000(vendor),-@0x00636000(userdata:grow) +CMDLINE:mtdparts=rk29xxnand:0x00002000@0x00002000(uboot),0x00002000@0x00004000(misc),0x00002000@0x00006000(resource),0x00030000@0x00008000(boot_linux:bootable),0x00400000@0x00038000(system),0x00200000@0x00438000(vendor),-@0x00638000(userdata:grow) uuid:system=614e0000-0000-4b53-8000-1d28000054a9 uuid:boot_linux=a2d37d82-51e0-420d-83f5-470db993dd35 diff --git a/rk3568/loader/parameter_5_10.txt b/rk3568/loader/parameter_5_10.txt deleted file mode 100755 index 3fcba0fabec21afcd2251be5c7080497531fc201..0000000000000000000000000000000000000000 --- a/rk3568/loader/parameter_5_10.txt +++ /dev/null @@ -1,13 +0,0 @@ -FIRMWARE_VER:11.0 -MACHINE_MODEL:rk3568_r -MACHINE_ID:007 -MANUFACTURER: rockchip -MAGIC: 0x5041524B -ATAG: 0x00200800 -MACHINE: rk3568_r -CHECK_MASK: 0x80 -PWR_HLD: 0,0,A,0,1 -TYPE: GPT -CMDLINE:mtdparts=rk29xxnand:0x00002000@0x00002000(uboot),0x00002000@0x00004000(misc),0x00002000@0x00006000(resource),0x00030000@0x00008000(boot_linux:bootable),0x00400000@0x00038000(system),0x00200000@0x00438000(vendor),-@0x00638000(userdata:grow) -uuid:system=614e0000-0000-4b53-8000-1d28000054a9 -uuid:boot_linux=a2d37d82-51e0-420d-83f5-470db993dd35 diff --git a/rk3568/loader/uboot.img b/rk3568/loader/uboot.img old mode 100644 new mode 100755 index 75fe19f8e2644921e2bc8710c7c1e4a2b64719b7..93cf6e03b0b246cf868a6a53b66b86abe54c6d0d Binary files a/rk3568/loader/uboot.img and b/rk3568/loader/uboot.img differ diff --git a/rk3568/loader/uboot_5_10.img b/rk3568/loader/uboot_5_10.img deleted file mode 100755 index 93cf6e03b0b246cf868a6a53b66b86abe54c6d0d..0000000000000000000000000000000000000000 Binary files a/rk3568/loader/uboot_5_10.img and /dev/null differ diff --git a/build/ohos.build b/rk3568/ohos.build similarity index 81% rename from build/ohos.build rename to rk3568/ohos.build index a547e5fbdf7c09378de0fe02d82555468d006c5d..b30ed238a91b12e5224aafd7bda2adc7f2a336a6 100755 --- a/build/ohos.build +++ b/rk3568/ohos.build @@ -3,7 +3,7 @@ "parts": { "rockchip_products": { "module_list": [ - "//device/hihope/build:products_group", + "//device/board/hihope/rk3568:rk3568_group", "//vendor/hihope/rk3568/bluetooth:libbt_vendor", "//vendor/hihope/rk3568/bluetooth:BCM4362A2.hcd" ] diff --git a/rk3568/wifi/bcmdhd_wifi6/Makefile b/rk3568/wifi/bcmdhd_wifi6/Makefile index d1a0d7b4f3310c7307f4f246d45934dc0dabc8fc..7244e2ac90f3c1e8d7d1bd3ec928e0c507db0879 100755 --- a/rk3568/wifi/bcmdhd_wifi6/Makefile +++ b/rk3568/wifi/bcmdhd_wifi6/Makefile @@ -5,7 +5,7 @@ # Execute Makefile in the kernel root directory #include drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/hdfwifi_bdh6.mk -include ../../../../device/hihope/drivers/rkwifi/bcmdhd_wifi6/hdfwifi_bdh6.mk +include ../../../../device/board/hihope/drivers/rkwifi/bcmdhd_wifi6/hdfwifi_bdh6.mk #$(info lijg: $(HDF_FRAMEWORKS_INC)) $(info lijg: srctree=$(srctree) src=$(src)) @@ -51,9 +51,9 @@ DHDCFLAGS = -Wall -Wstrict-prototypes -Dlinux -DBCMDRIVER \ -DWL_EXT_IAPSTA -DWL_ESCAN -DCCODE_LIST \ -DENABLE_INSMOD_NO_FW_LOAD \ $(HDF_BDH6_WIFI_CFLAGS) \ - -I../../../../device/hihope/drivers/rkwifi/bcmdhd_wifi6 \ - -I../../../../device/hihope/drivers/rkwifi/bcmdhd_wifi6/include \ - -I../../../../device/hihope/drivers/rkwifi/bcmdhd_wifi6/hdfadapt \ + -I../../../../device/board/hihope/drivers/rkwifi/bcmdhd_wifi6 \ + -I../../../../device/board/hihope/drivers/rkwifi/bcmdhd_wifi6/include \ + -I../../../../device/board/hihope/drivers/rkwifi/bcmdhd_wifi6/hdfadapt \ $(HDF_FRAMEWORKS_INC) \ $(HDF_WIFI_FRAMEWORKS_INC) \ $(HDF_WIFI_ADAPTER_INC) \