diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..370cced --- /dev/null +++ b/Makefile @@ -0,0 +1,152 @@ +## + # Copyright (C) 2020 Alibaba Group Holding Limited +## +VERBOSE=1 + +CONFIG_COMPILE_PLATFORM=RISCV + +CONFIG_ISP_BUILD_TYPE=DEBUG +#CONFIG_ISP_BUILD_TYPE=RELEASE +CONFIG_ISP_VERSION=ISP8000L_V2008 +CONFIG_ISP_LIB_BUILD_DIR=units/build +CONFIG_SENSOR_LIB_BUILD_DIR=build +CONFIG_ISP_RY_BUILD_TYPE=DEBUG +#CONFIG_ISP_RY_BUILD_TYPE=RELEASE +CONFIG_ISP_RY_VERSION=ISP8000_V2009 +CONFIG_ISP_RY_LIB_BUILD_DIR=units_ry/build + +CONFIG_DW200_CMODEL=off # on, off +CONFIG_DW200_V4L2=off # on, off +CONFIG_DW200_BUILD_DIR=dw200/build + +CONFIG_DEC400_BUILD_DIR=dec400/build +CONFIG_VI_MONITOR_BUILD_DIR=vi_monitor/build +CONFIG_VI_MONITOR_TRACE=MONITOR_TRACE_ON +#CONFIG_VI_MONITOR_TRACE=MONITOR_TRACE_OFF + +export CONFIG_HAL_PLATFORM=HAL_ALTERA +export COMPILE_PLATFORM=$(CONFIG_COMPILE_PLATFORM) + +CONFIG_CMAKE_SENSOR_LIB_CMD:= \ + cmake -DCMAKE_BUILD_TYPE=$(CONFIG_ISP_BUILD_TYPE) \ + -DISP_VERSION=$(CONFIG_ISP_VERSION) \ + -DSUBDEV_CHAR=1 -DHAL_PLATFORM=$(CONFIG_HAL_PLATFORM) \ + -DUSE_3AV2=1 \ + -DDUMMY_BUILD=0 \ + -DVVCAM_INC_PATH=$(VVCAM_INC_PATH) \ + -DCMAKE_VERBOSE_MAKEFILE=ON\ + -Wno-dev ../drivers/ + +DIR_ISP_TARGET_BASE=bsp/isp +DIR_ISP_TARGET_LIB =bsp/isp/lib +DIR_ISP_TARGET_KO =bsp/isp/ko +DIR_ISP_TARGET_TEST=bsp/isp/test +DIR_ISP_TARGET_SDK =bsp/isp/sdk + +DIR_ISP_RY_TARGET_BASE=bsp/isp_ry +DIR_ISP_RY_TARGET_LIB =bsp/isp_ry/lib +DIR_ISP_RY_TARGET_KO =bsp/isp_ry/ko +DIR_ISP_RY_TARGET_TEST=bsp/isp_ry/test +DIR_ISP_RY_TARGET_SDK =bsp/isp_ry/sdk + +DIR_DW200_TARGET_BASE=bsp/dw200 +DIR_DW200_TARGET_TEST=bsp/dw200/test +DIR_DW200_TARGET_DEMO=bsp/dw200/demo +DIR_DW200_TARGET_LIB=bsp/dw200/lib + +DIR_DEC400_TARGET_BASE=bsp/dec400 +DIR_DEC400_TARGET_TEST=bsp/dec400/test +DIR_DEC400_TARGET_LIB=bsp/dec400/lib + +DIR_VI_MONITOR_TARGET_BASE=bsp/vi_monitor +DIR_VI_MONITOR_TARGET_TEST=bsp/vi_monitor/test +DIR_VI_MONITOR_TARGET_LIB=bsp/vi_monitor/lib + +MODULE_NAME=ISP +BUILD_LOG_START="\033[47;30m>>> $(MODULE_NAME) $@ begin\033[0m" +BUILD_LOG_END ="\033[47;30m<<< $(MODULE_NAME) $@ end\033[0m" + +# +# Do a parallel build with multiple jobs, based on the number of CPUs online +# in this system: 'make -j8' on a 8-CPU system, etc. +# +# (To override it, run 'make JOBS=1' and similar.) +# +ifeq ($(JOBS),) + JOBS := $(shell grep -c ^processor /proc/cpuinfo 2>/dev/null) + ifeq ($(JOBS),) + JOBS := 1 + endif +endif + +all: info sensor_lib \ + install_local_output install_rootfs +.PHONY: info sensor_lib \ + install_local_output install_rootfs \ + clean_sensor_lib \ + clean_output clean + +info: + @echo $(BUILD_LOG_START) + @echo $(VVCAM_INC_PATH) + @echo " ====== Build Info from repo project ======" + @echo " BUILDROOT_DIR="$(BUILDROOT_DIR) + @echo " CROSS_COMPILE="$(CROSS_COMPILE) + @echo " LINUX_DIR="$(LINUX_DIR) + @echo " ARCH="$(ARCH) + @echo " BOARD_NAME="$(BOARD_NAME) + @echo " KERNEL_ID="$(KERNELVERSION) + @echo " KERNEL_DIR="$(LINUX_DIR) + @echo " INSTALL_DIR_ROOTFS="$(INSTALL_DIR_ROOTFS) + @echo " INSTALL_DIR_SDK="$(INSTALL_DIR_SDK) + @echo " DIR_MODULE_TOP="$(DIR_MODULE_TOP) + @echo " ====== Build configuration by settings ======" + @echo " COMPILE_PLATFORM="$(CONFIG_COMPILE_PLATFORM) + @echo " JOBS="$(JOBS) + @echo " ISP_BUILD_TYPE="$(CONFIG_ISP_BUILD_TYPE) + @echo " ISP_VERSION="$(CONFIG_ISP_VERSION) + @echo " ISP_LIB_BUILD_DIR="$(CONFIG_ISP_LIB_BUILD_DIR) + @echo " CMAKE_SENSOR_LIB_CMD=" $(CONFIG_CMAKE_SENSOR_LIB_CMD) + @echo " DW200_CMODEL="$(CONFIG_DW200_CMODEL) + @echo " DW200_V4L2="$(CONFIG_DW200_V4L2) + @echo " DW200_BUILD_DIR="$(CONFIG_DW200_BUILD_DIR) + @echo " DW200_CMAKE_CMD="$(CONFIG_DW200_CMAKE_CMD) + @echo " DEC400_BUILD_DIR="$(CONFIG_DEC400_BUILD_DIR) + @echo " DEC400_CMAKE_CMD="$(CONFIG_DEC400_CMAKE_CMD) + @echo " VI_MONITOR_BUILD_DIR="$(CONFIG_VI_MONITOR_BUILD_DIR) + @echo " VI_MONITOR_CMAKE_CMD="$(CONFIG_VI_MONITOR_CMAKE_CMD) + @echo " ISP_RY_BUILD_TYPE="$(CONFIG_ISP_RY_BUILD_TYPE) + @echo " ISP_RY_VERSION="$(CONFIG_ISP_RY_VERSION) + @echo " ISP_RY_LIB_BUILD_DIR="$(CONFIG_ISP_RY_LIB_BUILD_DIR) + @echo " CMAKE_ISP_RY_LIB_CMD=" $(CONFIG_CMAKE_ISP_RY_LIB_CMD) + @echo $(BUILD_LOG_END) + +sensor_lib: + mkdir -p $(CONFIG_SENSOR_LIB_BUILD_DIR); \ + cd $(CONFIG_SENSOR_LIB_BUILD_DIR); \ + $(CONFIG_CMAKE_SENSOR_LIB_CMD); \ + make -j$(JOBS); \ + +clean_sensor_lib: + @echo $(BUILD_LOG_START) + rm -rf $(CONFIG_SENSOR_LIB_BUILD_DIR) + @echo $(BUILD_LOG_END) + +install_local_output: sensor_lib + @echo $(BUILD_LOG_START) + @echo $(BUILD_LOG_END) + +install_rootfs: install_local_output + @echo $(BUILD_LOG_START) + @echo $(BUILD_LOG_END) + +clean_output: + @echo $(BUILD_LOG_START) + @echo $(BUILD_LOG_END) + +clean_proprietories_include: + @echo $(BUILD_LOG_START) + @echo $(BUILD_LOG_END) + +clean: clean_output clean_sensor_lib \ + clean_proprietories_include diff --git a/README.en.md b/README.en.md deleted file mode 100644 index 67c9d9e..0000000 --- a/README.en.md +++ /dev/null @@ -1,36 +0,0 @@ -# vi-sensor - -#### Description -camera sensor驱动 - -#### Software Architecture -Software architecture description - -#### Installation - -1. xxxx -2. xxxx -3. xxxx - -#### Instructions - -1. xxxx -2. xxxx -3. xxxx - -#### Contribution - -1. Fork the repository -2. Create Feat_xxx branch -3. Commit your code -4. Create Pull Request - - -#### Gitee Feature - -1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md -2. Gitee blog [blog.gitee.com](https://blog.gitee.com) -3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) -4. The most valuable open source project [GVP](https://gitee.com/gvp) -5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) -6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/README.md b/README.md index 3765eed..634c3bd 100644 --- a/README.md +++ b/README.md @@ -1,37 +1 @@ -# vi-sensor - -#### 介绍 -camera sensor驱动 - -#### 软件架构 -软件架构说明 - - -#### 安装教程 - -1. xxxx -2. xxxx -3. xxxx - -#### 使用说明 - -1. xxxx -2. xxxx -3. xxxx - -#### 参与贡献 - -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request - - -#### 特技 - -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 -5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) +This is where customers compile their camera sensor drivers \ No newline at end of file diff --git a/drivers/CMakeLists.txt b/drivers/CMakeLists.txt new file mode 100644 index 0000000..1108d64 --- /dev/null +++ b/drivers/CMakeLists.txt @@ -0,0 +1,84 @@ +cmake_minimum_required(VERSION 3.1.0) + +project(sensor_driver) + +aux_source_directory(. DIR_SRCS) + +include_directories(${PROJECT_SOURCE_DIR}/../../recipe-sysroot/usr/include/vvcam/common) +link_directories( + ${PROJECT_SOURCE_DIR}/../../recipe-sysroot/usr/lib/ +) + +if (NOT LIB_ROOT) + get_filename_component(LIB_ROOT ${PROJECT_BINARY_DIR} ABSOLUTE) +endif (NOT LIB_ROOT) +message ("LIB_ROOT is at: ${LIB_ROOT}") + +if(USE_3AV2) +add_definitions(-DUSE_3AV2) +endif() + +if (SUBDEV_CHAR) +add_definitions(-DSUBDEV_CHAR) +endif() + +add_definitions(-DHAL_ALTERA) +add_definitions(-DAPPMODE_NATIVE) +add_definitions(-DCAM_ENGINE_DRAW_DOM_ONLY) +add_definitions(-DISP8000L_BASE) +add_definitions(-DISP8000L_V2008) +add_definitions(-DISPVI_EXPAND_CHAN) +add_definitions(-DISP_2DNR) +add_definitions(-DISP_2DNR_V2) +add_definitions(-DISP_2DNR_V4) +add_definitions(-DISP_2DNR_V5) +add_definitions(-DISP_3DNR_V3) +add_definitions(-DISP_AEV2) +add_definitions(-DISP_AEV2_V2) +add_definitions(-DISP_AE_SHADOW) +add_definitions(-DISP_BLS) +add_definitions(-DISP_CA) +add_definitions(-DISP_COMPAND) +add_definitions(-DISP_CPROC_10BIT) +add_definitions(-DISP_CPROC_SHD) +add_definitions(-DISP_DEMOSAIC2) +add_definitions(-DISP_EE) +add_definitions(-DISP_FILTER) +add_definitions(-DISP_GREENEQUILIBRATE) +add_definitions(-DISP_HDR_STITCH) +add_definitions(-DISP_HIST256) +add_definitions(-DISP_HIST64) +add_definitions(-DISP_LSC_V2) +add_definitions(-DISP_MIV2) +add_definitions(-DISP_MI_BUF_DUMP) +add_definitions(-DISP_MI_HDR) +add_definitions(-DISP_MI_MCM_WR) +add_definitions(-DISP_MI_PP_WRITE) +add_definitions(-DISP_RGBGC) +add_definitions(-DISP_RGBIR) +add_definitions(-DISP_SP2) +add_definitions(-DISP_TPG) +add_definitions(-DISP_USE_AEV2) +add_definitions(-DISP_USE_AWBV2) +add_definitions(-DISP_VERSION=\"ISP8000L_V2008\") +add_definitions(-DISP_VSM) +add_definitions(-DISP_WDR_V4) +add_definitions(-DISP_WDR_V4_20BIT) +add_definitions(-DLINUX) +add_definitions(-DMARVIN_HW_ALTERA -DMIPI_USE_CAMERIC) +add_definitions(-DMRV_STITCHING_EXP_VERSION) +add_definitions(-DMRV_STITCHING_HIST_VERSION) +add_definitions(-DMRV_STITCHING_VERSION=2) + +add_compile_options(-Werror=implicit-function-declaration) + +add_subdirectory(IMX219) +add_subdirectory(SC2310) +add_subdirectory(SC132GS) +add_subdirectory(GC5035) +add_subdirectory(GC02M1B) +add_subdirectory(IMX334) + +link_libraries(${PROJECT_NAME} isi ) + +#target_link_libraries() diff --git a/drivers/GC02M1B/3aconfig_GC02M1B.json b/drivers/GC02M1B/3aconfig_GC02M1B.json new file mode 100644 index 0000000..4cdcec4 --- /dev/null +++ b/drivers/GC02M1B/3aconfig_GC02M1B.json @@ -0,0 +1,518 @@ +{ + "root" : [ + { + "classname" : "Aev1", + "enable" : false + }, + { + "classname" : "Aev2", + "enable" : false, + "motionThreshold" : 0.5, + "roiWeight" : 0.6, + "motionFilter" : 0.5, + "maxSensorAgain" : 10, + "maxSensorDgain" : 6, + "maxIspDgain" : 2.5, + "setPoint" : 50, + "roi_start" : 8, + "roi_end" : 24, + "roi_weight" : 0.5 + }, + { + "classname" : "Aehdr", + "enable" : false, + "motionThreshold" : 0.5, + "roi_start" : 8, + "roi_end" : 24, + "roi_weight" : 0.5, + "faceWeight" : 0.6, + "motionFilter" : 0.5, + "maxSensorAgain" : 10, + "maxSensorDgain" : 6, + "maxIspDgain" : 12, + "setPoint" : 30 + }, + { + "classname" : "AdaptiveAe", + "enable" : true, + "motionThreshold" : 0.7, + "roi_start" : 7, + "roi_end" : 20, + "roi_weight" : 1, + "faceWeight" : 0.6, + "motionFilter" : 0.5, + "targetFilter" : 0.5, + "wdrContrast.min" : 150, + "wdrContrast.max" : 150, + "lowlight" : { + "linear_repress" : [0.8, 0.7, 0.5, 0.5, 0.4], + "linear_gain" : [4, 8, 16, 32, 100], + "hdr_repress" : [1, 0.8, 0.8, 0.8, 0.8], + "hdr_gain" : [4, 8, 16, 32, 100] + }, + "maxSensorAgain" : 15.5, + "maxSensorDgain" : 1, + "maxIspDgain" : 1, + "setPoint" : 60 + }, + { + "classname" : "Awbv2", + "enable" : false, + "illuorder" : "A, D50, D65, D75, TL84, F12, CWF", + "indoor" : [1, 1, 1, 1, 1, 1, 1], + "outdoor" : [1, 1, 1, 1, 1, 1, 1], + "transition" : [1, 1, 1, 1, 1, 1, 1], + "avg" : 0 + }, + { + "classname" : "IspController", + "enable" : true + }, + { + "classname" : "AutoHdr", + "enable" : false + }, + { + "classname" : "DciHist", + "enable" : false, + "gaussMeanPos" : 64, + "gaussSigmaPos" : 128, + "gaussAmpPos" : 1, + "gaussMeanNeg" : 0, + "gaussSigmaNeg" : 128, + "gaussAmpNeg" : 1 + }, + { + "classname" : "SensorController", + "enable" : true + }, + { + "classname" : "AGamma64", + "forcecreate" : true, + "enable" : true, + "updateOnce" : false, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "curve" : [ + [93, 135, 176, 221, 267, 305, 343, 374, 398, 421, 444, 464, 484, 501, 521, 541, 558, 575, 591, 608, 624, 638, 650, 662, 675, 686, 697, 708, 719, 730, 741, 751, 761, 772, 782, 791, 801, 810, 819, 829, 837, 847, 856, 864, 873, 882, 890, 898, 907, 914, 923, 930, 939, 946, 954, 962, 969, 976, 985, 992, 999, 1006, 1014, 1023], + [93, 135, 176, 221, 267, 305, 343, 374, 398, 421, 444, 464, 484, 501, 521, 541, 558, 575, 591, 608, 624, 638, 650, 662, 675, 686, 697, 708, 719, 730, 741, 751, 761, 772, 782, 791, 801, 810, 819, 829, 837, 847, 856, 864, 873, 882, 890, 898, 907, 914, 923, 930, 939, 946, 954, 962, 969, 976, 985, 992, 999, 1006, 1014, 1023], + [93, 135, 176, 221, 267, 305, 343, 374, 398, 421, 444, 464, 484, 501, 521, 541, 558, 575, 591, 608, 624, 638, 650, 662, 675, 686, 697, 708, 719, 730, 741, 751, 761, 772, 782, 791, 801, 810, 819, 829, 837, 847, 856, 864, 873, 882, 890, 898, 907, 914, 923, 930, 939, 946, 954, 962, 969, 976, 985, 992, 999, 1006, 1014, 1023], + [93, 135, 176, 221, 267, 305, 343, 374, 398, 421, 444, 464, 484, 501, 521, 541, 558, 575, 591, 608, 624, 638, 650, 662, 675, 686, 697, 708, 719, 730, 741, 751, 761, 772, 782, 791, 801, 810, 819, 829, 837, 847, 856, 864, 873, 882, 890, 898, 907, 914, 923, 930, 939, 946, 954, 962, 969, 976, 985, 992, 999, 1006, 1014, 1023], + [93, 135, 176, 221, 267, 305, 343, 374, 398, 421, 444, 464, 484, 501, 521, 541, 558, 575, 591, 608, 624, 638, 650, 662, 675, 686, 697, 708, 719, 730, 741, 751, 761, 772, 782, 791, 801, 810, 819, 829, 837, 847, 856, 864, 873, 882, 890, 898, 907, 914, 923, 930, 939, 946, 954, 962, 969, 976, 985, 992, 999, 1006, 1014, 1023], + [18, 35, 53, 70, 86, 103, 120, 136, 153, 169, 186, 202, 219, 235, 251, 267, 283, 300, 316, 332, 348, 364, 380, 396, 412, 428, 444, 460, 476, 491, 507, 523, 539, 555, 571, 586, 602, 618, 634, 649, 665, 681, 696, 712, 728, 743, 759, 775, 790, 806, 821, 837, 853, 868, 884, 899, 914, 930, 945, 961, 977, 992, 1008, 1023] + ] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "curve" : [ + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [73, 113, 147, 176, 203, 228, 251, 273, 295, 315, 335, 354, 372, 390, 407, 425, 441, 457, 473, 489, 504, 519, 534, 549, 563, 577, 591, 605, 619, 632, 646, 659, 672, 685, 697, 710, 722, 735, 747, 759, 771, 783, 794, 806, 818, 829, 840, 852, 863, 874, 885, 896, 907, 918, 928, 939, 950, 960, 971, 981, 991, 1002, 1012, 1023], + [73, 113, 147, 176, 203, 228, 251, 273, 295, 315, 335, 354, 372, 390, 407, 425, 441, 457, 473, 489, 504, 519, 534, 549, 563, 577, 591, 605, 619, 632, 646, 659, 672, 685, 697, 710, 722, 735, 747, 759, 771, 783, 794, 806, 818, 829, 840, 852, 863, 874, 885, 896, 907, 918, 928, 939, 950, 960, 971, 981, 991, 1002, 1012, 1023] + ] + } + ] + }, + { + "classname" : "ACproc", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "contrast" : [1.2, 1.1, 1, 1, 1, 1], + "brightness" : [0, 0, 0, 0, 0, 0], + "saturation" : [1.2, 1.05, 0.92, 0.80, 0.75, 0.6], + "hue" : [0, 0, 0, 0, 0, 0], + "chromaout" : [2, 2, 2, 2, 2, 2], + "lumain" : [2, 2, 2, 2, 2, 2], + "lumaout" : [2, 2, 2, 2, 2, 2] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "contrast" : [1.0, 1.0, 1.3, 1.3, 1.5, 1.85], + "brightness" : [-12, -12, -24, -30, -16, 0], + "saturation" : [1.25, 1.0, 0.9, 0.8, 0.7, 0.6], + "hue" : [0, 0, 0, 0, 0, 0], + "chromaout" : [2, 2, 2, 2, 2, 2], + "lumain" : [2, 2, 2, 2, 2, 2], + "lumaout" : [2, 2, 2, 2, 2, 2] + } + ] + }, + { + "classname" : "Aee", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "strength" : [100, 100, 100, 100, 100, 100], + "srcStrength" : [1, 1, 1, 1, 1, 1], + "yup" : [1024, 1024, 1024, 1024, 1024, 1024], + "ydown" : [1024, 1024, 1024, 1024, 1024, 1024], + "uvgain" : [0, 0, 0, 0, 0, 0], + "edgegain" : [1000, 1000, 1000, 1000, 500, 200] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "strength" : [100, 100, 100, 100, 100, 100], + "srcStrength" : [1, 1, 1, 1, 1, 1], + "yup" : [5000, 5000, 5000, 5000, 5000, 5000], + "ydown" : [8000, 8000, 5000, 5000, 5000, 5000], + "uvgain" : [0, 0, 0, 0, 0, 0], + "edgegain" : [2000, 2000, 2000, 1500, 600, 200] + } + ] + }, + { + "classname" : "ACa", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enableCA" : [1, 1, 1, 1, 1, 1], + "enableDCI" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "curveCA" : [ + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024] + ], + "curveDCI" : [ + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1023, 1023], + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1028, 1023], + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1028, 1023], + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1028, 1023], + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1028, 1023], + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1028, 1023] + ] + }, + { + "hdr" : true, + "enableCA" : [0, 0, 1, 1, 1, 1], + "enableDCI" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "curveCA" : [ + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024] + ], + "curveDCI" : [ + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022], + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022], + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022], + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022], + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022], + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022] + ] + } + ] + }, + { + "classname" : "ADmsc2", + "forcecreate" : true, + "enable" : false, + "disable" : false, + "demoire_enable" : true, + "demoire_area_thr" : 16, + "demoire_sat_shrink" : 8, + "demoire_r2" : 256, + "demoire_r1" : 0, + "demoire_t2_shift" : 2, + "demoire_t1" : 180, + "demoire_edge_r2" : 256, + "demoire_edge_r1" : 20, + "demoire_edge_t2_shift" : 4, + "demoire_edge_t1" :20, + "depurple_enable" : true, + "depurple_red_sat" : true, + "depurple_blue_sat" : true, + "depurple_sat_shrink" : 8, + "depurple_thr" : 40, + "skin_enable" : false, + "cb_thr_max_2047" : 10, + "cb_thr_min_2047" : 8, + "cr_thr_max_2047" : 10, + "cr_thr_min_2047" : 8, + "y_thr_max_2047" : 10, + "y_thr_min_2047" : 8, + "tables" : [ + { + "hdr" : false, + "gains" : [1, 2, 4, 8, 16, 32], + "enableSharpen" : [1, 1, 1, 1, 1, 1], + "enableSharpenLine" : [0, 0, 0, 0, 0, 0], + "facblack" : [70, 60, 40, 20, 20, 0], + "facwhite" : [70, 60, 60, 40, 20, 0], + "maxblack" : [100, 100, 100, 100, 100, 100], + "maxwhite" : [100, 100, 100, 100, 100, 100], + "t1" : [0, 0, 0, 0, 0, 0], + "t2" : [0, 0, 0, 0, 0, 0], + "t3" : [0, 0, 0, 0, 0, 0], + "t4" : [0, 0, 0, 0, 0, 0], + "r1" : [0, 0, 0, 0, 0, 0], + "r2" : [128, 128, 128, 128, 128, 128], + "r3" : [256, 256, 256, 256, 256, 256], + "gdenoise" : [5, 5, 5, 5, 5, 5], + "gsharpen" : [8, 8, 8, 8, 8, 8], + "sharpen_line_shift2" : [6, 6, 6, 6, 6, 6], + "sharpen_line_shift1" : [5, 5, 5, 5, 5, 5], + "sharpen_line_t1" : [1000, 1000, 1000, 1000, 1000, 1000], + "sharpen_line_strength" : [100, 100, 100, 100, 100, 100], + "sharpen_line_r2" : [200, 200, 200, 200, 200, 200], + "sharpen_line_r1" : [5, 5, 5, 5, 5, 5] + }, + { + "hdr" : true, + "gains" : [1, 2, 4, 8, 16, 32], + "enableSharpen" : [0, 0, 0, 0, 0, 0], + "enableSharpenLine" : [0, 0, 0, 0, 0, 0], + "facblack" : [200, 200, 100, 50, 20, 20], + "facwhite" : [200, 200, 150, 80, 40, 20], + "maxblack" : [200, 200, 100, 100, 100, 100], + "maxwhite" : [200, 200, 200, 200, 200, 200], + "t1" : [0, 0, 0, 0, 0, 0], + "t2" : [0, 0, 0, 0, 0, 0], + "t3" : [0, 0, 0, 0, 0, 0], + "t4" : [0, 0, 0, 0, 0, 0], + "r1" : [0, 0, 0, 0, 0, 0], + "r2" : [128, 128, 128, 128, 128, 128], + "r3" : [256, 256, 256, 256, 256, 256], + "gdenoise" : [0, 0, 0, 0, 0, 0], + "gsharpen" : [16, 16, 16, 16, 16, 16], + "sharpen_line_shift2" : [6, 6, 6, 6, 6, 6], + "sharpen_line_shift1" : [5, 5, 5, 5, 5, 5], + "sharpen_line_t1" : [1000, 1000, 1000, 1000, 1000, 1000], + "sharpen_line_strength" : [100, 100, 100, 100, 100, 100], + "sharpen_line_r2" : [200, 200, 200, 200, 200, 200], + "sharpen_line_r1" : [5, 5, 5, 5, 5, 5] + } + ] + }, + { + "classname" : "AWdr4", + "forcecreate" : true, + "enable" : false, + "disable" : true, + "backlight" : true, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "backlight" : [0, 0.1, 0.2, 0.3, 0.4, 0.45], + "strength" : [128, 128, 128, 128, 128, 128], + "highStrength" : [20, 20, 20, 90, 90, 90], + "lowStrength" : [4, 8, 16, 24, 45, 64], + "globalStrength" : [0, 0, 0, 0, 0, 0], + "contrast" : [800, 800, 800, 800, 800, 800], + "flatStrength" : [0, 0, 0, 0, 0, 0], + "flatThreshold" : [0, 0, 0, 0, 0, 0] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 12, 16], + "backlight" : [0, 0.1, 0.2, 0.3, 0.4, 0.45], + "strength" : [128, 128, 128, 128, 128, 128], + "highStrength" : [24, 24, 24, 24, 12, 12], + "lowStrength" : [210, 180, 180, 180, 180, 180], + "globalStrength" : [0, 0, 0, 0, 0, 0], + "contrast" : [500, 500, 300, 300, 300, 300], + "flatStrength" : [0, 0, 0, 0, 0, 0], + "flatThreshold" : [0, 0, 0, 0, 0, 0] + } + ], + "entropy_slope" : 200, + "entropy_base" : 700, + "entropy" : [0, 0, 0, 2, 3, 6, 11, 22, 39, 67, 111, 177, 227, 266, 321, 355, 377, 355, 221, 0], + "gamma_down" : [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 9, 16, 36, 64, 136, 256, 576, 1023], + "gamma_up" : [0, 283121, 330313, 377512, 424723, 471961, 519250, 566650, 614235, 662241, 711077, 761540, 792420, 815280, 849436, 875575, 913530, 948975, 1002792, 1048575], + "?gamma_up" : [0, 1024, 34837, 56737, 82912, 116814, 162079, 223337, 306767, 420749, 576707, 735048, 745499, 755950, 776852, 797754, 839557, 881361, 964968, 1048575], + "gamma_pre" : [0, 31514, 36815, 42173, 47646, 53350, 59514, 66602, 75530, 88145, 108135, 142869, 175428, 207095, 269144, 330303, 442139, 571475, 810472, 1048575] + }, + { + "classname" : "A3dnrv3", + "forcecreate" : false, + "enable" : false, + "disable" : false, + "autonoiseLevel": true, + "tnr_en" : false, + "nlm_en" : true, + "tables" : [ + { + "hdr" : false, + "enable" : [0, 0, 0, 0, 0, 0, 0], + "gains" : [1, 2, 4, 8, 16, 32], + "filterLen" : [100, 150, 200, 300, 400, 500], + "filterLen2" : [10, 10, 10, 10, 10, 10], + "motionSlope" : [1, 1, 1, 1, 1, 1], + "noiseLevel" : [25, 40, 60, 80, 100, 120], + "sadweight" : [8, 8, 8, 8, 8, 8], + "motionInvFactor" : [20000, 20000, 20000, 20000, 20000, 20000], + "noisemodel_a" : [0.45071, 0.85596, 1.561850, 2.219000, 3.9409, 5.2362], + "noisemodel_b" : [0.000065, 9.7098, 140.351654, 219.965805, 284.8835, 344.9119], + "autoStrength" : [1.5, 1.5, 1.5, 1.5, 1.5, 1.5], + "motion_dilate_en" : [1, 1, 1, 1, 1, 1], + "motion_erode_en" : [1, 1, 1, 1, 1, 1], + "pregamma_en" : [1, 1, 1, 1, 1, 1], + "strength" : [120, 120, 120, 120, 120, 120], + "range_h" : [7, 7, 7, 7, 7, 7], + "range_v" : [3, 3, 3, 3, 3, 3], + "dialte_h" : [3, 3, 3, 3, 3, 3], + "preweight" : [8, 8, 8, 8, 8, 8], + "noise_thresh_factor" : [2, 2, 2, 2, 2, 2], + "moving_pixel_thresh" : [0.6, 0.6, 0.6, 0.6, 0.6, 0.6] + }, + { + "hdr" : true, + "enable" : [0, 0, 0, 0, 0, 0, 0], + "gains" : [1, 2, 4, 8, 16, 32], + "filterLen" : [100, 150, 200, 300, 400, 500], + "filterLen2" : [10, 10, 10, 10, 10, 10], + "motionSlope" : [1, 1, 1, 1, 1, 1], + "noiseLevel" : [25, 40, 60, 80, 100, 120], + "sadweight" : [8, 8, 8, 8, 8, 8], + "motionInvFactor" : [20000, 20000, 20000, 20000, 20000, 20000], + "noisemodel_a" : [0.45071, 0.85596, 1.561850, 2.219000, 3.9409, 5.2362], + "noisemodel_b" : [0.000065, 9.7098, 140.351654, 219.965805, 284.8835, 344.9119], + "autoStrength" : [1.5, 1.5, 1.5, 1.5, 1.5, 1.5], + "motion_dilate_en" : [1, 1, 1, 1, 1, 1], + "motion_erode_en" : [1, 1, 1, 1, 1, 1], + "pregamma_en" : [1, 1, 1, 1, 1, 1], + "strength" : [120, 120, 120, 120, 120, 120], + "range_h" : [7, 7, 7, 7, 7, 7], + "range_v" : [3, 3, 3, 3, 3, 3], + "dialte_h" : [3, 3, 3, 3, 3, 3], + "preweight" : [8, 8, 8, 8, 8, 8], + "noise_thresh_factor" : [2, 2, 2, 2, 2, 2], + "moving_pixel_thresh" : [0.6, 0.6, 0.6, 0.6, 0.6, 0.6] + } + ] + }, + { + "classname" : "A2dnrv5", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 12, 16, 20, 24, 32, 40], + "strength" : [2, 2, 2, 2, 2, 2, 2, 2, 2, 2], + "sigma" : [2, 2, 2, 5, 6, 6, 11, 11, 11, 14], + "blendstatic" : [100, 100, 100, 100, 100, 90, 90, 35, 35, 40], + "blendmotion" : [100, 100, 100, 100, 100, 90, 90, 100, 100, 100] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 12, 16, 20, 24, 32, 40], + "strength" : [1, 1, 1, 1, 1, 1, 2, 2, 2, 2], + "sigma" : [5, 5, 5, 8, 8, 8, 11, 11, 11, 14], + "blendstatic" : [100, 100, 100, 100, 100, 100, 100, 35, 35, 40], + "blendmotion" : [100, 100, 100, 100, 100, 100, 100, 100, 100, 100] + } + ] + }, + { + "classname" : "ADpf", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 12, 16, 20, 24, 32, 40], + "gradient" : [0.1, 0.2, 0.4, 0.7, 1, 1.5, 2, 2.5, 3, 3.5], + "offset" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "Min" : [1, 1, 1, 1, 1, 1, 1, 2, 4, 16], + "Div" : [64, 64, 64, 65, 65, 65, 65, 65, 65, 65], + "sigma_g" : [2, 2, 3, 3, 3, 3, 4, 4, 4, 4], + "sigma_rb" : [2, 2, 3, 3, 3, 3, 4, 4, 4, 4], + "curve" : [ + [4095, 4095, 3677, 3068, 2686, 2219, 1933, 1735, 1587, 1379, 1235, 1129, 979, 877, 801, 742, 695], + [4095, 4056, 2910, 2388, 2073, 1697, 1471, 1317, 1203, 1042, 933, 852, 738, 660, 603, 558, 523], + [3688, 2169, 1687, 1428, 1260, 1050, 918, 827, 758, 660, 592, 542, 470, 421, 385, 357, 335], + [2254, 1553, 1258, 1085, 968, 816, 718, 649, 597, 521, 469, 430, 374, 335, 307, 284, 267], + [1060, 883, 772, 695, 637, 555, 498, 455, 422, 373, 338, 311, 272, 245, 225, 209, 196], + [580, 524, 481, 448, 420, 378, 346, 321, 301, 270, 247, 229, 202, 183, 168, 157, 148], + [368, 346, 328, 312, 298, 276, 257, 242, 230, 209, 193, 181, 162, 147, 136, 127, 120], + [214, 206, 199, 192, 186, 175, 166, 159, 152, 141, 132, 124, 112, 103, 96, 91, 86], + [158, 152, 147, 142, 138, 130, 124, 118, 113, 105, 99, 93, 84, 78, 72, 68, 64], + [127, 124, 121, 118, 115, 110, 106, 103, 99, 93, 88, 84, 77, 72, 68, 64, 61] + ] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 12, 16, 20, 24, 32, 40], + "gradient" : [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], + "offset" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "Min" : [16, 16, 16, 16, 16, 16, 16, 16, 16, 16], + "Div" : [64, 64, 64, 64, 64, 64, 64, 64, 64, 64], + "sigma_g" : [4, 4, 4, 4, 4, 4, 4, 4, 4, 4], + "sigma_rb" : [4, 4, 4, 4, 4, 4, 4, 4, 4, 4], + "curve" : [ + [4095, 4095, 3677, 3068, 2686, 2219, 1933, 1735, 1587, 1379, 1235, 1129, 979, 877, 801, 742, 695], + [4095, 4056, 2910, 2388, 2073, 1697, 1471, 1317, 1203, 1042, 933, 852, 738, 660, 603, 558, 523], + [3688, 2169, 1687, 1428, 1260, 1050, 918, 827, 758, 660, 592, 542, 470, 421, 385, 357, 335], + [2254, 1553, 1258, 1085, 968, 816, 718, 649, 597, 521, 469, 430, 374, 335, 307, 284, 267], + [1060, 883, 772, 695, 637, 555, 498, 455, 422, 373, 338, 311, 272, 245, 225, 209, 196], + [580, 524, 481, 448, 420, 378, 346, 321, 301, 270, 247, 229, 202, 183, 168, 157, 148], + [368, 346, 328, 312, 298, 276, 257, 242, 230, 209, 193, 181, 162, 147, 136, 127, 120], + [214, 206, 199, 192, 186, 175, 166, 159, 152, 141, 132, 124, 112, 103, 96, 91, 86], + [158, 152, 147, 142, 138, 130, 124, 118, 113, 105, 99, 93, 84, 78, 72, 68, 64], + [127, 124, 121, 118, 115, 110, 106, 103, 99, 93, 88, 84, 77, 72, 68, 64, 61] + ] + } + ] + }, + { + "classname" : "ABlc", + "forcecreate" : true, + "enable" : true, + "tables" : [ + { + "hdr" : false, + "gains" : [1, 16], + "blc" : [64, 64] + }, + { + "hdr" : true, + "gains" : [1, 16], + "blc" : [64, 64] + } + ] + } + ] +} diff --git a/drivers/GC02M1B/CMakeLists.txt b/drivers/GC02M1B/CMakeLists.txt new file mode 100644 index 0000000..aed4fc8 --- /dev/null +++ b/drivers/GC02M1B/CMakeLists.txt @@ -0,0 +1,35 @@ +cmake_minimum_required(VERSION 3.1.0) + +# define module name & interface version +set (module gc02m1b) +string(TOUPPER ${module} SENSOR_NAME) + +# we want to compile all .c files as default +file(GLOB libsources ${SENSOR_NAME}.c ) + +# set public headers, these get installed +#file(GLOB pub_headers include/*.h) + +#include_directories() + +add_library(${module} SHARED ${libsources}) + +add_custom_target(${module}.drv + ALL + COMMAND ${CMAKE_COMMAND} -E copy lib${module}.so ${LIB_ROOT}/rootfs/usr/share/vi/tuningtool/bin/${module}.drv + COMMAND ${CMAKE_COMMAND} -E copy lib${module}.so ${LIB_ROOT}/rootfs/usr/lib/lib${module}.so + COMMAND ${CMAKE_COMMAND} -E make_directory ${LIB_ROOT}/rootfs/usr/share/vi/isp/test/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/*.xml ${LIB_ROOT}/rootfs/usr/share/vi/isp/test/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/${SENSOR_NAME}*.txt ${LIB_ROOT}/rootfs/usr/share/vi/isp/test/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/*.json ${LIB_ROOT}/rootfs/usr/share/vi/isp/test/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/*.xml ${LIB_ROOT}/rootfs/usr/share/vi/tuningtool/bin/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/${SENSOR_NAME}*.txt ${LIB_ROOT}/rootfs/usr/share/vi/tuningtool/bin/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/*.json ${LIB_ROOT}/rootfs/usr/share/vi/tuningtool/bin/ + DEPENDS ${module} + COMMENT "Copying ${module} driver module" + ) + +#install(FILES ${LIB_ROOT}/${CMAKE_BUILD_TYPE}/lib/lib${module}.so.${${module}_INTERFACE_CURRENT} +# DESTINATION ${CMAKE_INSTALL_PREFIX}/bin +# RENAME ${module}.drv +# ) \ No newline at end of file diff --git a/drivers/GC02M1B/GC02M1B.c b/drivers/GC02M1B/GC02M1B.c new file mode 100644 index 0000000..44c261c --- /dev/null +++ b/drivers/GC02M1B/GC02M1B.c @@ -0,0 +1,1791 @@ +/******************************************************************************\ |* Copyright (c) 2020 by VeriSilicon Holdings Co., Ltd. ("VeriSilicon") *| |* All Rights Reserved. *| |* *| |* The material in this file is confidential and contains trade secrets of *| |* of VeriSilicon. This is proprietary information owned or licensed by *| |* VeriSilicon. No part of this work may be disclosed, reproduced, copied, *| |* transmitted, or used in any way for any purpose, without the express *| |* written permission of VeriSilicon. *| |* *| +\******************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "GC02M1B_priv.h" +#include "gc02m1b.h" + +CREATE_TRACER( GC02M1B_INFO , "GC02M1B: ", INFO, 0); +CREATE_TRACER( GC02M1B_WARN , "GC02M1B: ", WARNING, 0); +CREATE_TRACER( GC02M1B_ERROR, "GC02M1B: ", ERROR, 1); +CREATE_TRACER( GC02M1B_DEBUG, "GC02M1B: ", INFO, 0); +CREATE_TRACER( GC02M1B_REG_INFO , "GC02M1B: ", INFO, 0); +CREATE_TRACER( GC02M1B_REG_DEBUG, "GC02M1B: ", INFO, 0); + +#ifdef SUBDEV_V4L2 +#include +#include +#include +#include +#include +#undef TRACE +#define TRACE(x, ...) +#endif + +#define GC02M1B_MIN_GAIN_STEP ( 1.0f/16.0f ) /**< min gain step size used by GUI (hardware min = 1/16; 1/16..32/16 depending on actual gain ) */ +#define GC02M1B_MAX_GAIN_AEC ( 32.0f ) /**< max. gain used by the AEC (arbitrarily chosen, hardware limit = 62.0, driver limit = 32.0 ) */ +#define GC02M1B_VS_MAX_INTEGRATION_TIME (0.0018) + +/***************************************************************************** + *Sensor Info +*****************************************************************************/ +static const char SensorName[16] = "GC02M1B"; + +static struct vvcam_mode_info pgc02m1b_mode_info[] = { + { + .index = 0, + .width = 1600, + .height = 1200, + .fps = 30, + .hdr_mode = SENSOR_MODE_LINEAR, + .bit_width = 10, + .bayer_pattern = BAYER_BGGR, + .mipi_phy_freq = 672, //mbps + .mipi_line_num = 1, + .preg_data = (void *)"gc02m1b sensor liner mode 1600*1200@30", + }, +}; + +static RESULT GC02M1B_IsiRegisterWriteIss(IsiSensorHandle_t handle, const uint32_t address, const uint32_t value); + +static RESULT GC02M1B_IsiSensorSetPowerIss(IsiSensorHandle_t handle, bool_t on) { + RESULT result = RET_SUCCESS; + + int ret = 0; + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + if (pGC02M1BCtx == NULL || pGC02M1BCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pGC02M1BCtx->IsiCtx.HalHandle; + + TRACE(GC02M1B_INFO, "%s (enter)\n", __func__); + + int32_t enable = on; + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_POWER, &enable); + if (ret != 0) { + // to do + //TRACE(GC02M1B_ERROR, "%s: sensor set power error!\n", __func__); + //return (RET_FAILURE); + } + + TRACE(GC02M1B_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT GC02M1B_IsiResetSensorIss(IsiSensorHandle_t handle) { + RESULT result = RET_SUCCESS; + int ret = 0; + + TRACE(GC02M1B_INFO, "%s (enter)\n", __func__); + + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + if (pGC02M1BCtx == NULL || pGC02M1BCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pGC02M1BCtx->IsiCtx.HalHandle; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_RESET, NULL); + if (ret != 0) { + TRACE(GC02M1B_ERROR, "%s: sensor reset error!\n", __func__); + return (RET_FAILURE); + } + + TRACE(GC02M1B_INFO, "%s (exit)\n", __func__); + return (result); +} + +#ifdef SUBDEV_CHAR +static RESULT GC02M1B_IsiSensorSetClkIss(IsiSensorHandle_t handle, uint32_t clk) { + RESULT result = RET_SUCCESS; + int32_t ret = 0; + + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + if (pGC02M1BCtx == NULL || pGC02M1BCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pGC02M1BCtx->IsiCtx.HalHandle; + + TRACE(GC02M1B_INFO, "%s (enter)\n", __func__); + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_CLK, &clk); + if (ret != 0) { + // to do + //TRACE(GC02M1B_ERROR, "%s: sensor set clk error!\n", __func__); + //return (RET_FAILURE); + } + + TRACE(GC02M1B_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT GC02M1B_IsiSensorGetClkIss + (IsiSensorHandle_t handle, uint32_t * pclk) { + RESULT result = RET_SUCCESS; + int ret = 0; + + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + if (pGC02M1BCtx == NULL || pGC02M1BCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pGC02M1BCtx->IsiCtx.HalHandle; + + TRACE(GC02M1B_INFO, "%s (enter)\n", __func__); + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_CLK, pclk); + if (ret != 0) { + // to do + //TRACE(GC02M1B_ERROR, "%s: sensor get clk error!\n", __func__); + //return (RET_FAILURE); + } + + TRACE(GC02M1B_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT GC02M1B_IsiConfigSensorSCCBIss(IsiSensorHandle_t handle) +{ + return RET_SUCCESS; +} +#endif + +static RESULT GC02M1B_IsiRegisterReadIss + (IsiSensorHandle_t handle, const uint32_t address, uint32_t * p_value) { + RESULT result = RET_SUCCESS; + int32_t ret = 0; + TRACE(GC02M1B_INFO, "%s (enter)\n", __func__); + + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + if (pGC02M1BCtx == NULL || pGC02M1BCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pGC02M1BCtx->IsiCtx.HalHandle; + + struct vvcam_sccb_data sccb_data; + sccb_data.addr = address; + sccb_data.data = 0; + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_READ_REG, &sccb_data); + if (ret != 0) { + TRACE(GC02M1B_ERROR, "%s: read sensor register error!\n", + __func__); + return (RET_FAILURE); + } + + *p_value = sccb_data.data; + + TRACE(GC02M1B_INFO, "%s (exit) result = %d\n", __func__, result); + return (result); +} + +static RESULT GC02M1B_IsiRegisterWriteIss + (IsiSensorHandle_t handle, const uint32_t address, const uint32_t value) { + RESULT result = RET_SUCCESS; + int ret = 0; + TRACE(GC02M1B_INFO, "%s (enter)\n", __func__); + + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + if (pGC02M1BCtx == NULL || pGC02M1BCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pGC02M1BCtx->IsiCtx.HalHandle; + + struct vvcam_sccb_data sccb_data; + sccb_data.addr = address; + sccb_data.data = value; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_WRITE_REG, &sccb_data); + if (ret != 0) { + TRACE(GC02M1B_ERROR, "%s: write sensor register error!\n", + __func__); + return (RET_FAILURE); + } + + TRACE(GC02M1B_INFO, "%s (exit) result = %d\n", __func__, result); + return (result); +} + +static RESULT GC02M1B_IsiQuerySensorSupportIss(HalHandle_t HalHandle, vvcam_mode_info_array_t *pSensorSupportInfo) +{ + TRACE(GC02M1B_DEBUG, "enter %s", __func__); + //int ret = 0; + struct vvcam_mode_info_array *psensor_mode_info_arry; + + HalContext_t *pHalCtx = HalHandle; + if ( pHalCtx == NULL ) { + return RET_NULL_POINTER; + } + + psensor_mode_info_arry = pSensorSupportInfo; +#if 0 + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_QUERY, psensor_mode_info_arry); + if (ret != 0) { + TRACE(GC02M1B_ERROR, "%s: sensor kernel query error! Use isi query\n",__func__); + psensor_mode_info_arry->count = sizeof(pgc02m1b_mode_info) / sizeof(struct vvcam_mode_info); + memcpy(psensor_mode_info_arry->modes, pgc02m1b_mode_info, sizeof(pgc02m1b_mode_info)); + } +#endif + psensor_mode_info_arry->count = sizeof(pgc02m1b_mode_info) / sizeof(struct vvcam_mode_info); + memcpy(psensor_mode_info_arry->modes, pgc02m1b_mode_info, sizeof(pgc02m1b_mode_info)); + + TRACE(GC02M1B_DEBUG, "%s-%s-%d: cnt=%d\n", __FILE__, __func__, __LINE__, psensor_mode_info_arry->count); + + return RET_SUCCESS; +} + +static RESULT GC02M1B_IsiQuerySensorIss(IsiSensorHandle_t handle, vvcam_mode_info_array_t *pSensorInfo) +{ + RESULT result = RET_SUCCESS; + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + if (pGC02M1BCtx == NULL || pGC02M1BCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pGC02M1BCtx->IsiCtx.HalHandle; + GC02M1B_IsiQuerySensorSupportIss(pHalCtx,pSensorInfo); + + return result; +} + +static RESULT GC02M1B_IsiGetSensorModeIss(IsiSensorHandle_t handle,void *mode) +{ + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + if (pGC02M1BCtx == NULL) { + return (RET_WRONG_HANDLE); + } + memcpy(mode,&(pGC02M1BCtx->SensorMode), sizeof(pGC02M1BCtx->SensorMode)); + + return ( RET_SUCCESS ); +} + +static RESULT GC02M1B_IsiCreateSensorIss(IsiSensorInstanceConfig_t * pConfig) { + RESULT result = RET_SUCCESS; + GC02M1B_Context_t *pGC02M1BCtx; + + TRACE(GC02M1B_INFO, "%s (enter)\n", __func__); + + if (!pConfig || !pConfig->pSensor) + return (RET_NULL_POINTER); + + pGC02M1BCtx = (GC02M1B_Context_t *) malloc(sizeof(GC02M1B_Context_t)); + if (!pGC02M1BCtx) { + TRACE(GC02M1B_ERROR, "%s: Can't allocate gc02m1b context\n", + __func__); + return (RET_OUTOFMEM); + } + + MEMSET(pGC02M1BCtx, 0, sizeof(GC02M1B_Context_t)); + + result = HalAddRef(pConfig->HalHandle); + if (result != RET_SUCCESS) { + free(pGC02M1BCtx); + return (result); + } + + pGC02M1BCtx->IsiCtx.HalHandle = pConfig->HalHandle; + pGC02M1BCtx->IsiCtx.pSensor = pConfig->pSensor; + pGC02M1BCtx->GroupHold = BOOL_FALSE; + pGC02M1BCtx->OldGain = 0; + pGC02M1BCtx->OldIntegrationTime = 0; + pGC02M1BCtx->Configured = BOOL_FALSE; + pGC02M1BCtx->Streaming = BOOL_FALSE; + pGC02M1BCtx->TestPattern = BOOL_FALSE; + pGC02M1BCtx->isAfpsRun = BOOL_FALSE; + pGC02M1BCtx->SensorMode.index = pConfig->SensorModeIndex; + pConfig->hSensor = (IsiSensorHandle_t) pGC02M1BCtx; +#ifdef SUBDEV_CHAR + struct vvcam_mode_info *SensorDefaultMode = NULL; + for (int i=0; i < sizeof(pgc02m1b_mode_info)/ sizeof(struct vvcam_mode_info); i++) + { + if (pgc02m1b_mode_info[i].index == pGC02M1BCtx->SensorMode.index) + { + SensorDefaultMode = &(pgc02m1b_mode_info[i]); + break; + } + } + + if (SensorDefaultMode != NULL) + { + strcpy(pGC02M1BCtx->SensorRegCfgFile, get_vi_config_path()); + switch(SensorDefaultMode->index) + { + case 0: + strcat(pGC02M1BCtx->SensorRegCfgFile, + "GC02M1B_mipi1lane_1600x1200@30_mayi.txt"); + break; + default: + break; + } + + if (access(pGC02M1BCtx->SensorRegCfgFile, F_OK) == 0) { + pGC02M1BCtx->KernelDriverFlag = 0; + memcpy(&(pGC02M1BCtx->SensorMode),SensorDefaultMode,sizeof(struct vvcam_mode_info)); + } else { + pGC02M1BCtx->KernelDriverFlag = 1; + } + }else + { + pGC02M1BCtx->KernelDriverFlag = 1; + } + + result = GC02M1B_IsiSensorSetPowerIss(pGC02M1BCtx, BOOL_TRUE); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + + uint32_t SensorClkIn = 0; + if (pGC02M1BCtx->KernelDriverFlag) { + result = GC02M1B_IsiSensorGetClkIss(pGC02M1BCtx, &SensorClkIn); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + } + + result = GC02M1B_IsiSensorSetClkIss(pGC02M1BCtx, SensorClkIn); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + + result = GC02M1B_IsiResetSensorIss(pGC02M1BCtx); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + + pGC02M1BCtx->pattern = ISI_BPAT_BGBGGRGR; + + if (!pGC02M1BCtx->KernelDriverFlag) { + result = GC02M1B_IsiConfigSensorSCCBIss(pGC02M1BCtx); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + } +#endif + + TRACE(GC02M1B_INFO, "%s (exit pConfig->hSensor = %p)\n", __func__, pConfig->hSensor); + return (result); +} + +static RESULT GC02M1B_IsiGetRegCfgIss(const char *registerFileName, + struct vvcam_sccb_array *arry) +{ + if (NULL == registerFileName) { + TRACE(GC02M1B_ERROR, "%s:registerFileName is NULL\n", __func__); + return (RET_NULL_POINTER); + } +#ifdef SUBDEV_CHAR + FILE *fp = NULL; + fp = fopen(registerFileName, "rb"); + if (!fp) { + TRACE(GC02M1B_ERROR, "%s:load register file %s error!\n", + __func__, registerFileName); + return (RET_FAILURE); + } + + char LineBuf[512]; + uint32_t FileTotalLine = 0; + while (!feof(fp)) { + fgets(LineBuf, 512, fp); + FileTotalLine++; + } + + arry->sccb_data = + malloc(FileTotalLine * sizeof(struct vvcam_sccb_data)); + if (arry->sccb_data == NULL) { + TRACE(GC02M1B_ERROR, "%s:malloc failed NULL Point!\n", __func__, + registerFileName); + return (RET_FAILURE); + } + rewind(fp); + + arry->count = 0; + while (!feof(fp)) { + memset(LineBuf, 0, sizeof(LineBuf)); + fgets(LineBuf, 512, fp); + + int result = + sscanf(LineBuf, "0x%x 0x%x", + &(arry->sccb_data[arry->count].addr), + &(arry->sccb_data[arry->count].data)); + if (result != 2) + continue; + arry->count++; + + } +#endif + + return 0; +} + +static RESULT GC02M1B_IsiInitSensorIss(IsiSensorHandle_t handle) { + RESULT result = RET_SUCCESS; + + int ret = 0; + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + + HalContext_t *pHalCtx = (HalContext_t *) pGC02M1BCtx->IsiCtx.HalHandle; + TRACE(GC02M1B_INFO, "%s (enter handle = %p)\n", __func__, handle); + + if (pGC02M1BCtx == NULL) { + return (RET_WRONG_HANDLE); + } + TRACE(GC02M1B_INFO, "%s (pGC02M1BCtx->KernelDriverFlag = %d)\n", __func__, pGC02M1BCtx->KernelDriverFlag); + if (pGC02M1BCtx->KernelDriverFlag) { + ; + } else { + TRACE(GC02M1B_INFO, "%s (001)\n", __func__); + struct vvcam_sccb_array arry; + result = GC02M1B_IsiGetRegCfgIss(pGC02M1BCtx->SensorRegCfgFile, &arry); + if (result != 0) { + TRACE(GC02M1B_ERROR, + "%s:GC02M1B_IsiGetRegCfgIss error!\n", __func__); + return (RET_FAILURE); + } + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_WRITE_ARRAY, &arry); + if (ret != 0) { + TRACE(GC02M1B_ERROR, "%s:Sensor Write Reg arry error!\n", + __func__); + return (RET_FAILURE); + } + TRACE(GC02M1B_INFO, "%s (pGC02M1BCtx->SensorMode.index = %d)\n", __func__, pGC02M1BCtx->SensorMode.index); + switch(pGC02M1BCtx->SensorMode.index) + { + case 0: + pGC02M1BCtx->one_line_exp_time = 0.00002609; // line_time = line_length / pclk =1460/87.6mhz = 0.0000167 + pGC02M1BCtx->FrameLengthLines = 0x4FE; //framelength=1278=0x4FE + pGC02M1BCtx->CurFrameLengthLines = pGC02M1BCtx->FrameLengthLines; + pGC02M1BCtx->MaxIntegrationLine = pGC02M1BCtx->CurFrameLengthLines - 16; + pGC02M1BCtx->MinIntegrationLine = 1; + pGC02M1BCtx->AecMaxGain = 16; + pGC02M1BCtx->AecMinGain = 1; + break; + default: + return (RET_FAILURE); + } + pGC02M1BCtx->AecIntegrationTimeIncrement = pGC02M1BCtx->one_line_exp_time; + pGC02M1BCtx->AecMinIntegrationTime = + pGC02M1BCtx->one_line_exp_time * pGC02M1BCtx->MinIntegrationLine; + pGC02M1BCtx->AecMaxIntegrationTime = + pGC02M1BCtx->one_line_exp_time * pGC02M1BCtx->MaxIntegrationLine; + + + pGC02M1BCtx->MaxFps = pGC02M1BCtx->SensorMode.fps; + pGC02M1BCtx->MinFps = 1; + pGC02M1BCtx->CurrFps = pGC02M1BCtx->MaxFps; + } + TRACE(GC02M1B_INFO, "%s (pGC02M1BCtx->one_line_exp_time = %f)\n", __func__, pGC02M1BCtx->one_line_exp_time); + TRACE(GC02M1B_INFO, "%s (pGC02M1BCtx->MinIntegrationLine = %d, pGC02M1BCtx->MaxIntegrationLine = %d)\n", __func__, pGC02M1BCtx->MinIntegrationLine, pGC02M1BCtx->MaxIntegrationLine); + return (result); +} + +static RESULT GC02M1B_IsiReleaseSensorIss(IsiSensorHandle_t handle) { + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(GC02M1B_INFO, "%s (enter)\n", __func__); + + if (pGC02M1BCtx == NULL) + return (RET_WRONG_HANDLE); + + (void)GC02M1B_IsiSensorSetStreamingIss(pGC02M1BCtx, BOOL_FALSE); + (void)GC02M1B_IsiSensorSetPowerIss(pGC02M1BCtx, BOOL_FALSE); + (void)HalDelRef(pGC02M1BCtx->IsiCtx.HalHandle); + + MEMSET(pGC02M1BCtx, 0, sizeof(GC02M1B_Context_t)); + free(pGC02M1BCtx); + TRACE(GC02M1B_INFO, "%s (exit)\n", __func__); + return (result); +} + +struct gc02m1b_fmt { + int width; + int height; + int fps; +}; + +static RESULT GC02M1B_IsiSetupSensorIss + (IsiSensorHandle_t handle, const IsiSensorConfig_t * pConfig) { + + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + HalContext_t *pHalCtx = (HalContext_t *) pGC02M1BCtx->IsiCtx.HalHandle; + + RESULT result = RET_SUCCESS; + + TRACE(GC02M1B_INFO, "%s: (enter)\n", __func__); + + if (!pGC02M1BCtx) { + TRACE(GC02M1B_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pConfig) { + TRACE(GC02M1B_ERROR, + "%s: Invalid configuration (NULL pointer detected)\n", + __func__); + return (RET_NULL_POINTER); + } + + if (pGC02M1BCtx->Streaming != BOOL_FALSE) { + return RET_WRONG_STATE; + } + + memcpy(&pGC02M1BCtx->Config, pConfig, sizeof(IsiSensorConfig_t)); + + /* 1.) SW reset of image sensor (via I2C register interface) be careful, bits 6..0 are reserved, reset bit is not sticky */ + TRACE(GC02M1B_DEBUG, "%s: GC02M1B System-Reset executed\n", __func__); + osSleep(100); + + //GC02M1B_AecSetModeParameters not defined yet as of 2021/8/9. + //result = GC02M1B_AecSetModeParameters(pGC02M1BCtx, pConfig); + //if (result != RET_SUCCESS) { + // TRACE(GC02M1B_ERROR, "%s: SetupOutputWindow failed.\n", + // __func__); + // return (result); + //} +#if 1 + struct gc02m1b_fmt fmt; + fmt.width = pConfig->Resolution.width; + fmt.height = pConfig->Resolution.height; + + ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_FPS, &fmt);//result = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_FPS, &fmt); +#endif + pGC02M1BCtx->Configured = BOOL_TRUE; + TRACE(GC02M1B_INFO, "%s: (exit) ret=0x%x \n", __func__, result); + return result; +} + +static RESULT GC02M1B_IsiChangeSensorResolutionIss(IsiSensorHandle_t handle, uint16_t width, uint16_t height) { + RESULT result = RET_SUCCESS; +#if 0 + struct gc02m1b_fmt fmt; + fmt.width = width; + fmt.height = height; + + int ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_FPS, &fmt); +#endif + TRACE(GC02M1B_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT GC02M1B_IsiSensorSetStreamingIss + (IsiSensorHandle_t handle, bool_t on) { + RESULT result = RET_SUCCESS; + int ret = 0; + TRACE(GC02M1B_INFO, "%s (enter)\n", __func__); + + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + if (pGC02M1BCtx == NULL || pGC02M1BCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pGC02M1BCtx->IsiCtx.HalHandle; + + if (pGC02M1BCtx->Configured != BOOL_TRUE) + return RET_WRONG_STATE; + + int32_t enable = (uint32_t) on; + ret = GC02M1B_IsiRegisterWriteIss(handle, 0xfe, 0x00); + if (ret != 0) { + return (RET_FAILURE); + } + + if (on == true) { + ret = GC02M1B_IsiRegisterWriteIss(handle, 0x3e, 0x90); + } else { + ret = GC02M1B_IsiRegisterWriteIss(handle, 0x3e, 0x00); + } + + if (ret != 0) { + return (RET_FAILURE); + } + + pGC02M1BCtx->Streaming = on; + + TRACE(GC02M1B_INFO, "%s (exit)\n", __func__); + return (result); +} + +static int32_t sensor_get_chip_id(IsiSensorHandle_t handle, uint32_t *chip_id) +{ + RESULT result = RET_SUCCESS; + int32_t ret = 0; + int32_t chip_id_high = 0; + int32_t chip_id_low = 0; + + ret = GC02M1B_IsiRegisterReadIss(handle, 0xf0, &chip_id_high); + if (ret != 0) { + TRACE(GC02M1B_ERROR, + "%s: Read Sensor correct ID Error! \n", __func__); + return (RET_FAILURE); + } + + ret = GC02M1B_IsiRegisterReadIss(handle, 0xf1, &chip_id_low); + if (ret != 0) { + TRACE(GC02M1B_ERROR, + "%s: Read Sensor correct ID Error! \n", __func__); + return (RET_FAILURE); + } + + *chip_id = ((chip_id_high & 0xff)<<8) | (chip_id_low & 0xff); + + return 0; +} + +static RESULT GC02M1B_IsiCheckSensorConnectionIss(IsiSensorHandle_t handle) { + RESULT result = RET_SUCCESS; + int ret = 0; + uint32_t correct_id = 0x02e0; + uint32_t sensor_id = 0; + + TRACE(GC02M1B_INFO, "%s (enter)\n", __func__); + + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + if (pGC02M1BCtx == NULL || pGC02M1BCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pGC02M1BCtx->IsiCtx.HalHandle; + + ret = sensor_get_chip_id(handle, &sensor_id); + if (ret != 0) { + TRACE(GC02M1B_ERROR, + "%s: Read Sensor chip ID Error! \n", __func__); + return (RET_FAILURE); + } + + if (correct_id != sensor_id) { + TRACE(GC02M1B_ERROR, "%s:ChipID =0x%x sensor_id=%x error! \n", + __func__, correct_id, sensor_id); + return (RET_FAILURE); + } + + printf("%s ChipID = 0x%08x, sensor_id = 0x%08x, success! \n", __func__, + correct_id, sensor_id); + TRACE(GC02M1B_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT GC02M1B_IsiGetSensorRevisionIss + (IsiSensorHandle_t handle, uint32_t * p_value) { + RESULT result = RET_SUCCESS; + TRACE(GC02M1B_INFO, "%s (enter)\n", __func__); + + *p_value = 0X5690; + TRACE(GC02M1B_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT GC02M1B_IsiGetGainLimitsIss + (IsiSensorHandle_t handle, float *pMinGain, float *pMaxGain) { + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + RESULT result = RET_SUCCESS; + + /*TODO*/ + + TRACE(GC02M1B_INFO, "%s: (enter)\n", __func__); + + if (pGC02M1BCtx == NULL) { + TRACE(GC02M1B_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if ((pMinGain == NULL) || (pMaxGain == NULL)) { + TRACE(GC02M1B_ERROR, "%s: NULL pointer received!!\n"); + return (RET_NULL_POINTER); + } + + *pMinGain = pGC02M1BCtx->AecMinGain; + *pMaxGain = pGC02M1BCtx->AecMaxGain; + + TRACE(GC02M1B_INFO, "%s: (exit)\n", __func__); + return (result); +} + +static RESULT GC02M1B_IsiGetIntegrationTimeLimitsIss + (IsiSensorHandle_t handle, + float *pMinIntegrationTime, float *pMaxIntegrationTime) { + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + RESULT result = RET_SUCCESS; + + /*TODO*/ + + TRACE(GC02M1B_INFO, "%s: (enter)\n", __func__); + if (pGC02M1BCtx == NULL) { + TRACE(GC02M1B_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if ((pMinIntegrationTime == NULL) || (pMaxIntegrationTime == NULL)) { + TRACE(GC02M1B_ERROR, "%s: NULL pointer received!!\n"); + return (RET_NULL_POINTER); + } + + *pMinIntegrationTime = pGC02M1BCtx->AecMinIntegrationTime; + *pMaxIntegrationTime = pGC02M1BCtx->AecMaxIntegrationTime; + + TRACE(GC02M1B_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT GC02M1B_IsiGetGainIss(IsiSensorHandle_t handle, float *pSetGain) { + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(GC02M1B_INFO, "%s: (enter)\n", __func__); + + if (pGC02M1BCtx == NULL) { + TRACE(GC02M1B_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (pSetGain == NULL) { + return (RET_NULL_POINTER); + } + + *pSetGain = pGC02M1BCtx->AecCurGain; + + TRACE(GC02M1B_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT GC02M1B_IsiGetLongGainIss(IsiSensorHandle_t handle, float *gain) +{ + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + + TRACE(GC02M1B_INFO, "%s: (enter)\n", __func__); + + if (pGC02M1BCtx == NULL) { + TRACE(GC02M1B_ERROR,"%s: Invalid sensor handle (NULL pointer detected)\n",__func__); + return (RET_WRONG_HANDLE); + } + + if (gain == NULL) { + return (RET_NULL_POINTER); + } + + *gain = pGC02M1BCtx->AecCurLongGain; + + TRACE(GC02M1B_INFO, "%s: (exit)\n", __func__); + + return (RET_SUCCESS); +} + +RESULT GC02M1B_IsiGetVSGainIss(IsiSensorHandle_t handle, float *pSetGain) { + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + RESULT result = RET_SUCCESS; + + TRACE(GC02M1B_INFO, "%s: (enter)\n", __func__); + + if (pGC02M1BCtx == NULL) { + TRACE(GC02M1B_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (pSetGain == NULL) { + return (RET_NULL_POINTER); + } + + *pSetGain = pGC02M1BCtx->AecCurVSGain; + + TRACE(GC02M1B_INFO, "%s: (exit)\n", __func__); + + return (result); +} + +RESULT GC02M1B_IsiGetGainIncrementIss(IsiSensorHandle_t handle, float *pIncr) { + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(GC02M1B_INFO, "%s: (enter)\n", __func__); + + if (pGC02M1BCtx == NULL) { + TRACE(GC02M1B_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (pIncr == NULL) + return (RET_NULL_POINTER); + + *pIncr = pGC02M1BCtx->AecGainIncrement; + + TRACE(GC02M1B_INFO, "%s: (exit)\n", __func__); + + return (result); +} + +uint32_t gainLevelTable[17] = { + 64, + 96, + 127, + 157, + 197, + 226, + 259, + 287, + 318, + 356, + 391, + 419, + 450, + 480, + 513, + 646, + 0xffffffff, +}; + +RESULT GC02M1B_IsiSetGainIss + (IsiSensorHandle_t handle, + float NewGain, float *pSetGain, float *hdr_ratio) { + + RESULT result = RET_SUCCESS; + int32_t ret = 0; + + + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + if (pGC02M1BCtx == NULL || pGC02M1BCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pGC02M1BCtx->IsiCtx.HalHandle; + //GC02M1B specific + int Analog_Index; + uint32_t tol_dig_gain = 0, SensorGain; + int total; + total = sizeof(gainLevelTable) / sizeof(uint32_t); + + SensorGain = NewGain * 64; + if (SensorGain < 64) { + SensorGain = 64; + } + + for(Analog_Index = 0; Analog_Index < total; Analog_Index++) + { + if((gainLevelTable[Analog_Index] <= SensorGain)&&(SensorGain < gainLevelTable[Analog_Index+1])) + break; + } + + tol_dig_gain = SensorGain*1024/gainLevelTable[Analog_Index]; + + ret = GC02M1B_IsiRegisterWriteIss(handle, 0xfe, 0x00); + if (ret != 0) { + return (RET_FAILURE); + } + ret = GC02M1B_IsiRegisterWriteIss(handle, 0xb6, Analog_Index); + if (ret != 0) { + return (RET_FAILURE); + } + + ret = GC02M1B_IsiRegisterWriteIss(handle, 0xb1,(tol_dig_gain>>8)); + if (ret != 0) { + return (RET_FAILURE); + } + ret = GC02M1B_IsiRegisterWriteIss(handle, 0xb2, (tol_dig_gain&0xff)); + if (ret != 0) { + return (RET_FAILURE); + } + + volatile int32_t reg; + TRACE(GC02M1B_DEBUG, "%s NewGain=%f SensorGain=%d Analog_Index=%d,gainLevelTable[Analog_Index]=%d,tol_dig_gain=%u b1=0x%x b2=0x%x\n",__func__, + NewGain, SensorGain, Analog_Index, gainLevelTable[Analog_Index], tol_dig_gain, (tol_dig_gain>>8), (tol_dig_gain&0xff)); + TRACE(GC02M1B_DEBUG, "%s 0xb6 write=0x%x,0xb1 write 0x%x,0xb2 write 0x%x\n",__func__, Analog_Index,(tol_dig_gain>>8), (tol_dig_gain&0xff)); + GC02M1B_IsiRegisterReadIss(handle, 0xb6, ®); + TRACE(GC02M1B_DEBUG, "%s 0xb6 read 0x0%x\n",__func__, reg); + GC02M1B_IsiRegisterReadIss(handle, 0xb1, ®); + TRACE(GC02M1B_DEBUG, "%s 0xb1 read 0x0%x\n",__func__, reg); + GC02M1B_IsiRegisterReadIss(handle, 0xb2, ®); + TRACE(GC02M1B_DEBUG, "%s 0xb2 read 0x0%x\n",__func__, reg); + + pGC02M1BCtx->AecCurGain = ((float)(NewGain)); + *pSetGain = pGC02M1BCtx->AecCurGain; + TRACE(GC02M1B_DEBUG, "%s: g=%f\n", __func__, *pSetGain); + return (result); +} + +RESULT GC02M1B_IsiSetLongGainIss(IsiSensorHandle_t handle, float gain) +{ + int ret = 0; + TRACE(GC02M1B_INFO, "%s: (enter)\n", __func__); + + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + + if (!pGC02M1BCtx || !pGC02M1BCtx->IsiCtx.HalHandle) + { + TRACE(GC02M1B_ERROR,"%s: Invalid sensor handle (NULL pointer detected)\n",__func__); + return (RET_WRONG_HANDLE); + } + + HalContext_t *pHalCtx = (HalContext_t *) pGC02M1BCtx->IsiCtx.HalHandle; + + uint32_t SensorGain = 0; + SensorGain = gain * pGC02M1BCtx->gain_accuracy; + if (pGC02M1BCtx->LastLongGain != SensorGain) + { + + /*TODO*/ +#if 0 + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_LONG_GAIN, &SensorGain); + if (ret != 0) + { + return (RET_FAILURE); + TRACE(GC02M1B_ERROR,"%s: set long gain failed\n"); + + } +#endif + pGC02M1BCtx->LastLongGain = SensorGain; + pGC02M1BCtx->AecCurLongGain = gain; + } + + TRACE(GC02M1B_INFO, "%s: (exit)\n", __func__); + return (RET_SUCCESS); +} + +RESULT GC02M1B_IsiSetVSGainIss + (IsiSensorHandle_t handle, + float NewIntegrationTime, + float NewGain, float *pSetGain, float *hdr_ratio) { + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + HalContext_t *pHalCtx = (HalContext_t *) pGC02M1BCtx->IsiCtx.HalHandle; + RESULT result = RET_SUCCESS; +#if 0 + float Gain = 0.0f; + + uint32_t ucGain = 0U; + uint32_t again = 0U; +#endif + + TRACE(GC02M1B_INFO, "%s: (enter)\n", __func__); + + if (!pGC02M1BCtx) { + TRACE(GC02M1B_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pSetGain || !hdr_ratio) + return (RET_NULL_POINTER); + + uint32_t SensorGain = 0; + SensorGain = NewGain * pGC02M1BCtx->gain_accuracy; + + /*TODO*/ + //ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_VSGAIN, &SensorGain); + + pGC02M1BCtx->AecCurVSGain = NewGain; + *pSetGain = pGC02M1BCtx->AecCurGain; + TRACE(GC02M1B_DEBUG, "%s: g=%f\n", __func__, *pSetGain); + TRACE(GC02M1B_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT GC02M1B_IsiSetBayerPattern(IsiSensorHandle_t handle, uint8_t pattern) +{ + + RESULT result = RET_SUCCESS; +#if 0 + uint8_t h_shift = 0, v_shift = 0; + uint32_t val_h = 0, val_l = 0; + uint16_t val = 0; + uint8_t Start_p = 0; + bool_t streaming_status; + TRACE(GC02M1B_INFO, "%s: (enter)\n", __func__); + + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + if (pGC02M1BCtx == NULL || pGC02M1BCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + // pattern 0:B 1:GB 2:GR 3:R + streaming_status = pGC02M1BCtx->Streaming; + result = GC02M1B_IsiSensorSetStreamingIss(handle, 0); + switch (pattern) { + case BAYER_BGGR: + Start_p = 0; + break; + case BAYER_GBRG: + Start_p = 1; + break; + case BAYER_GRBG: + Start_p = 2; + break; + case BAYER_RGGB: + Start_p = 3; + break; + } + + h_shift = Start_p % 2; + v_shift = Start_p / 2; + + GC02M1B_IsiRegisterReadIss(handle, 0x30a0, &val_h); + GC02M1B_IsiRegisterReadIss(handle, 0x30a1, &val_l); + val = (((val_h << 8) & 0xff00) | (val_l & 0x00ff)) + h_shift; + val_h = (val >> 8) & 0xff; + val_l = val & 0xff; + GC02M1B_IsiRegisterWriteIss(handle, 0x30a0, (uint8_t)val_h); + GC02M1B_IsiRegisterWriteIss(handle, 0x30a1, (uint8_t)val_l); + + GC02M1B_IsiRegisterReadIss(handle, 0x30a2, &val_h); + GC02M1B_IsiRegisterReadIss(handle, 0x30a3, &val_l); + val = (((val_h << 8) & 0xff00) | (val_l & 0x00ff)) + v_shift; + val_h = (val >> 8) & 0xff; + val_l = val & 0xff; + GC02M1B_IsiRegisterWriteIss(handle, 0x30a2, (uint8_t)val_h); + GC02M1B_IsiRegisterWriteIss(handle, 0x30a3, (uint8_t)val_l); + + GC02M1B_IsiRegisterReadIss(handle, 0x30a4, &val_h); + GC02M1B_IsiRegisterReadIss(handle, 0x30a5, &val_l); + val = (((val_h << 8) & 0xff00) | (val_l & 0x00ff)) + h_shift; + val_h = (val >> 8) & 0xff; + val_l = val & 0xff; + GC02M1B_IsiRegisterWriteIss(handle, 0x30a4, (uint8_t)val_h); + GC02M1B_IsiRegisterWriteIss(handle, 0x30a5, (uint8_t)val_l); + + GC02M1B_IsiRegisterReadIss(handle, 0x30a6, &val_h); + GC02M1B_IsiRegisterReadIss(handle, 0x30a7, &val_l); + val = (((val_h << 8) & 0xff00) | (val_l & 0x00ff)) + v_shift; + val_h = (val >> 8) & 0xff; + val_l = val & 0xff; + GC02M1B_IsiRegisterWriteIss(handle, 0x30a6, (uint8_t)val_h); + GC02M1B_IsiRegisterWriteIss(handle, 0x30a7, (uint8_t)val_l); + + pGC02M1BCtx->pattern = pattern; + result = GC02M1B_IsiSensorSetStreamingIss(handle, streaming_status); +#endif + + return (result); +} + +RESULT GC02M1B_IsiGetIntegrationTimeIss + (IsiSensorHandle_t handle, float *pSetIntegrationTime) +{ + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(GC02M1B_INFO, "%s: (enter)\n", __func__); + + if (!pGC02M1BCtx) { + TRACE(GC02M1B_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pSetIntegrationTime) + return (RET_NULL_POINTER); + *pSetIntegrationTime = pGC02M1BCtx->AecCurIntegrationTime; + TRACE(GC02M1B_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT GC02M1B_IsiGetLongIntegrationTimeIss(IsiSensorHandle_t handle, float *pIntegrationTime) +{ + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + TRACE(GC02M1B_INFO, "%s: (enter)\n", __func__); + + if (!pGC02M1BCtx) { + TRACE(GC02M1B_ERROR,"%s: Invalid sensor handle (NULL pointer detected)\n",__func__); + return (RET_WRONG_HANDLE); + } + if (!pIntegrationTime) + return (RET_NULL_POINTER); + + pGC02M1BCtx->AecCurLongIntegrationTime = pGC02M1BCtx->AecCurIntegrationTime; + + *pIntegrationTime = pGC02M1BCtx->AecCurLongIntegrationTime; + TRACE(GC02M1B_INFO, "%s: (exit)\n", __func__); + return (RET_SUCCESS); +} + +RESULT GC02M1B_IsiGetVSIntegrationTimeIss + (IsiSensorHandle_t handle, float *pSetIntegrationTime) +{ + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(GC02M1B_INFO, "%s: (enter)\n", __func__); + + if (!pGC02M1BCtx) { + TRACE(GC02M1B_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + if (!pSetIntegrationTime) + return (RET_NULL_POINTER); + + *pSetIntegrationTime = pGC02M1BCtx->AecCurVSIntegrationTime; + TRACE(GC02M1B_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT GC02M1B_IsiGetIntegrationTimeIncrementIss + (IsiSensorHandle_t handle, float *pIncr) +{ + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(GC02M1B_INFO, "%s: (enter)\n", __func__); + + if (!pGC02M1BCtx) { + TRACE(GC02M1B_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pIncr) + return (RET_NULL_POINTER); + + //_smallest_ increment the sensor/driver can handle (e.g. used for sliders in the application) + *pIncr = pGC02M1BCtx->AecIntegrationTimeIncrement; + TRACE(GC02M1B_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT GC02M1B_IsiSetIntegrationTimeIss + (IsiSensorHandle_t handle, + float NewIntegrationTime, + float *pSetIntegrationTime, + uint8_t * pNumberOfFramesToSkip, float *hdr_ratio) +{ + RESULT result = RET_SUCCESS; + + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + HalContext_t *pHalCtx = (HalContext_t *) pGC02M1BCtx->IsiCtx.HalHandle; + + uint32_t exp_line = 0; + uint32_t exp_line_old = 0; + int ret = 0; + + TRACE(GC02M1B_INFO, "%s: (enter handle = %p)\n", __func__, handle); + + if (!pGC02M1BCtx) { + TRACE(GC02M1B_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pSetIntegrationTime || !pNumberOfFramesToSkip) { + TRACE(GC02M1B_ERROR, + "%s: Invalid parameter (NULL pointer detected)\n", + __func__); + return (RET_NULL_POINTER); + } + exp_line = NewIntegrationTime / pGC02M1BCtx->one_line_exp_time; + exp_line_old = exp_line; + exp_line = + MIN(pGC02M1BCtx->MaxIntegrationLine, + MAX(pGC02M1BCtx->MinIntegrationLine, exp_line)); + + TRACE(GC02M1B_DEBUG, "%s: set AEC_PK_EXPO=0x%05x min_exp_line = %d, max_exp_line = %d\n", __func__, exp_line, pGC02M1BCtx->MinIntegrationLine, pGC02M1BCtx->MaxIntegrationLine); + + if (exp_line != pGC02M1BCtx->OldIntegrationTime) { + + /*TODO*/ + //ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_EXP, &exp_line); + pGC02M1BCtx->OldIntegrationTime = exp_line; // remember current integration time + pGC02M1BCtx->AecCurIntegrationTime = + exp_line * pGC02M1BCtx->one_line_exp_time; + + *pNumberOfFramesToSkip = 1U; //skip 1 frame + } else { + *pNumberOfFramesToSkip = 0U; //no frame skip + } + + if (NewIntegrationTime > pGC02M1BCtx->MaxIntegrationLine * pGC02M1BCtx->one_line_exp_time) + NewIntegrationTime = pGC02M1BCtx->MaxIntegrationLine * pGC02M1BCtx->one_line_exp_time; + + // GC02M1B specific + int vts = exp_line + 16; + + ret = GC02M1B_IsiRegisterWriteIss(handle, 0xfe, 0x00); + if (ret != 0) { + return (RET_FAILURE); + } + ret = GC02M1B_IsiRegisterWriteIss(handle, 0x41, (vts>>8)&0xff); + if (ret != 0) { + return (RET_FAILURE); + } + ret = GC02M1B_IsiRegisterWriteIss(handle, 0x42, (vts&0xff)); + if (ret != 0) { + return (RET_FAILURE); + } + ret = GC02M1B_IsiRegisterWriteIss(handle, 0x03, (exp_line>>8)); + if (ret != 0) { + return (RET_FAILURE); + } + ret = GC02M1B_IsiRegisterWriteIss(handle, 0x04, (exp_line&0xff)); + if (ret != 0) { + return (RET_FAILURE); + } + + volatile int32_t reg; + TRACE(GC02M1B_DEBUG, "%s exp_line = %fs / %fs = %d vts=%d\n",__func__, NewIntegrationTime, pGC02M1BCtx->one_line_exp_time, exp_line, vts); + //TRACE(GC02M1B_DEBUG, "%s cal_shutter=%d,Dgain_ratio=%u\n", __func__, cal_shutter, Dgain_ratio); + TRACE(GC02M1B_DEBUG, "%s 0x41 write 0x%x, 0x42 write 0x%x\n", __func__, (vts>>8)&0xff, (vts&0xff)); + TRACE(GC02M1B_DEBUG, "%s 0x03 write 0x%x, 0x04 write 0x%x\n", __func__, (exp_line>>8), (exp_line&0xff)); + GC02M1B_IsiRegisterReadIss(handle, 0x41, ®); + TRACE(GC02M1B_DEBUG, "%s 0x41 read 0x0%x\n",__func__, reg); + GC02M1B_IsiRegisterReadIss(handle, 0x42, ®); + TRACE(GC02M1B_DEBUG, "%s 0x42 read 0x0%x\n",__func__, reg); + GC02M1B_IsiRegisterReadIss(handle, 0x03, ®); + TRACE(GC02M1B_DEBUG, "%s 0x03 read 0x0%x\n",__func__, reg); + GC02M1B_IsiRegisterReadIss(handle, 0x04, ®); + TRACE(GC02M1B_DEBUG, "%s 0x04 read 0x0%x\n",__func__, reg); + + if (exp_line_old != exp_line) { + *pSetIntegrationTime = pGC02M1BCtx->AecCurIntegrationTime; + } else { + *pSetIntegrationTime = NewIntegrationTime; + } + + TRACE(GC02M1B_DEBUG, "%s: Ti=%f\n", __func__, *pSetIntegrationTime); + TRACE(GC02M1B_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT GC02M1B_IsiSetLongIntegrationTimeIss(IsiSensorHandle_t handle,float IntegrationTime) +{ + int ret; + TRACE(GC02M1B_INFO, "%s: (enter)\n", __func__); + + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + if (!handle || !pGC02M1BCtx->IsiCtx.HalHandle) + { + TRACE(GC02M1B_ERROR,"%s: Invalid sensor handle (NULL pointer detected)\n",__func__); + return (RET_WRONG_HANDLE); + } + HalContext_t *pHalCtx = (HalContext_t *) pGC02M1BCtx->IsiCtx.HalHandle; + + uint32_t exp_line = 0; + exp_line = IntegrationTime / pGC02M1BCtx->one_line_exp_time; + exp_line = MIN(pGC02M1BCtx->MaxIntegrationLine, MAX(pGC02M1BCtx->MinIntegrationLine, exp_line)); + + if (exp_line != pGC02M1BCtx->LastLongExpLine) + { + if (pGC02M1BCtx->KernelDriverFlag) + { + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_LONG_EXP, &exp_line); + if (ret != 0) + { + TRACE(GC02M1B_ERROR,"%s: set long gain failed\n"); + return RET_FAILURE; + } + } + + pGC02M1BCtx->LastLongExpLine = exp_line; + pGC02M1BCtx->AecCurLongIntegrationTime = pGC02M1BCtx->LastLongExpLine*pGC02M1BCtx->one_line_exp_time; + } + + + TRACE(GC02M1B_INFO, "%s: (exit)\n", __func__); + return (RET_SUCCESS); +} + +RESULT GC02M1B_IsiSetVSIntegrationTimeIss + (IsiSensorHandle_t handle, + float NewIntegrationTime, + float *pSetVSIntegrationTime, + uint8_t * pNumberOfFramesToSkip, float *hdr_ratio) +{ + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + RESULT result = RET_SUCCESS; + uint32_t exp_line = 0; + + TRACE(GC02M1B_INFO, "%s: (enter)\n", __func__); + + if (!pGC02M1BCtx) { + TRACE(GC02M1B_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pSetVSIntegrationTime || !pNumberOfFramesToSkip) { + TRACE(GC02M1B_ERROR, + "%s: Invalid parameter (NULL pointer detected)\n", + __func__); + return (RET_NULL_POINTER); + } + + TRACE(GC02M1B_INFO, + "%s: maxIntegrationTime-=%f minIntegrationTime = %f\n", __func__, + pGC02M1BCtx->AecMaxIntegrationTime, + pGC02M1BCtx->AecMinIntegrationTime); + + + exp_line = NewIntegrationTime / pGC02M1BCtx->one_line_exp_time; + exp_line = + MIN(pGC02M1BCtx->MaxIntegrationLine, + MAX(pGC02M1BCtx->MinIntegrationLine, exp_line)); + + if (exp_line != pGC02M1BCtx->OldVsIntegrationTime) { + /*TODO*/ + // ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_VSEXP, &exp_line); + } else if (1){ + + pGC02M1BCtx->OldVsIntegrationTime = exp_line; + pGC02M1BCtx->AecCurVSIntegrationTime = exp_line * pGC02M1BCtx->one_line_exp_time; //remember current integration time + *pNumberOfFramesToSkip = 1U; //skip 1 frame + } else { + *pNumberOfFramesToSkip = 0U; //no frame skip + } + + *pSetVSIntegrationTime = pGC02M1BCtx->AecCurVSIntegrationTime; + + TRACE(GC02M1B_DEBUG, "%s: NewIntegrationTime=%f\n", __func__, + NewIntegrationTime); + TRACE(GC02M1B_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT GC02M1B_IsiExposureControlIss + (IsiSensorHandle_t handle, + float NewGain, + float NewIntegrationTime, + uint8_t * pNumberOfFramesToSkip, + float *pSetGain, float *pSetIntegrationTime, float *hdr_ratio) +{ + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + RESULT result = RET_SUCCESS; + int TmpGain; + /*TODO*/ + + TRACE(GC02M1B_INFO, "%s: (enter)\n", __func__); + + if (pGC02M1BCtx == NULL) { + TRACE(GC02M1B_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if ((pNumberOfFramesToSkip == NULL) || (pSetGain == NULL) + || (pSetIntegrationTime == NULL)) { + TRACE(GC02M1B_ERROR, + "%s: Invalid parameter (NULL pointer detected)\n", + __func__); + return (RET_NULL_POINTER); + } + + TRACE(GC02M1B_ERROR, "%s: g=%f, Ti=%f\n", __func__, NewGain, + NewIntegrationTime); + + result = GC02M1B_IsiSetIntegrationTimeIss(handle, NewIntegrationTime, + pSetIntegrationTime, + pNumberOfFramesToSkip, hdr_ratio); + result = GC02M1B_IsiSetGainIss(handle, NewGain, pSetGain, hdr_ratio); + + pGC02M1BCtx->CurHdrRatio = *hdr_ratio; + + TRACE(GC02M1B_INFO, "%s: (exit)\n", __func__); + + return result; +} + +RESULT GC02M1B_IsiGetCurrentExposureIss + (IsiSensorHandle_t handle, float *pSetGain, float *pSetIntegrationTime, float *hdr_ratio) { + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + RESULT result = RET_SUCCESS; + + TRACE(GC02M1B_INFO, "%s: (enter)\n", __func__); + + if (pGC02M1BCtx == NULL) { + TRACE(GC02M1B_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if ((pSetGain == NULL) || (pSetIntegrationTime == NULL)) + return (RET_NULL_POINTER); + + *pSetGain = pGC02M1BCtx->AecCurGain; + *pSetIntegrationTime = pGC02M1BCtx->AecCurIntegrationTime; + *hdr_ratio = pGC02M1BCtx->CurHdrRatio; + + TRACE(GC02M1B_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT GC02M1B_IsiGetResolutionIss(IsiSensorHandle_t handle, uint16_t *pwidth, uint16_t *pheight) { + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + RESULT result = RET_SUCCESS; + + TRACE(GC02M1B_INFO, "%s: (enter)\n", __func__); + + if (pGC02M1BCtx == NULL) { + TRACE(GC02M1B_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + *pwidth = pGC02M1BCtx->SensorMode.width; + *pheight = pGC02M1BCtx->SensorMode.height; + + TRACE(GC02M1B_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT GC02M1B_IsiGetSensorFpsIss(IsiSensorHandle_t handle, uint32_t * pfps) +{ + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + RESULT result = RET_SUCCESS; + + + TRACE(GC02M1B_INFO, "%s: (enter)\n", __func__); + + if (pGC02M1BCtx == NULL) { + TRACE(GC02M1B_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + HalContext_t *pHalCtx = (HalContext_t *) pGC02M1BCtx->IsiCtx.HalHandle; + + if (pGC02M1BCtx->KernelDriverFlag) { + /*TODO*/ + ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_FPS, pfps); + pGC02M1BCtx->CurrFps = *pfps; + } + + *pfps = pGC02M1BCtx->CurrFps; + + TRACE(GC02M1B_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT GC02M1B_IsiSetSensorFpsIss(IsiSensorHandle_t handle, uint32_t fps) +{ + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + RESULT result = RET_SUCCESS; + int32_t ret = 0; + TRACE(GC02M1B_INFO, "%s: (enter)\n", __func__); + + if (pGC02M1BCtx == NULL) { + TRACE(GC02M1B_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + HalContext_t *pHalCtx = (HalContext_t *) pGC02M1BCtx->IsiCtx.HalHandle; + + if (fps > pGC02M1BCtx->MaxFps) { + TRACE(GC02M1B_ERROR, + "%s: set fps(%d) out of range, correct to %d (%d, %d)\n", + __func__, fps, pGC02M1BCtx->MaxFps, pGC02M1BCtx->MinFps, + pGC02M1BCtx->MaxFps); + fps = pGC02M1BCtx->MaxFps; + } + if (fps < pGC02M1BCtx->MinFps) { + TRACE(GC02M1B_ERROR, + "%s: set fps(%d) out of range, correct to %d (%d, %d)\n", + __func__, fps, pGC02M1BCtx->MinFps, pGC02M1BCtx->MinFps, + pGC02M1BCtx->MaxFps); + fps = pGC02M1BCtx->MinFps; + } + if (pGC02M1BCtx->KernelDriverFlag) { + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_FPS, &fps); + if (ret != 0) { + TRACE(GC02M1B_ERROR, "%s: set sensor fps=%d error\n", + __func__); + return (RET_FAILURE); + } + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_SENSOR_MODE, &(pGC02M1BCtx->SensorMode)); + { + pGC02M1BCtx->MaxIntegrationLine = pGC02M1BCtx->SensorMode.ae_info.max_integration_time; + pGC02M1BCtx->AecMaxIntegrationTime = pGC02M1BCtx->MaxIntegrationLine * pGC02M1BCtx->one_line_exp_time; + } +#ifdef SUBDEV_CHAR + struct vvcam_ae_info_s ae_info; + ret = + ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_AE_INFO, &ae_info); + if (ret != 0) { + TRACE(GC02M1B_ERROR, "%s:sensor get ae info error!\n", + __func__); + return (RET_FAILURE); + } + pGC02M1BCtx->one_line_exp_time = + (float)ae_info.one_line_exp_time_ns / 1000000000; + pGC02M1BCtx->MaxIntegrationLine = ae_info.max_integration_time; + pGC02M1BCtx->AecMaxIntegrationTime = + pGC02M1BCtx->MaxIntegrationLine * + pGC02M1BCtx->one_line_exp_time; +#endif + } + + TRACE(GC02M1B_INFO, "%s: set sensor fps = %d\n", __func__, + pGC02M1BCtx->CurrFps); + + TRACE(GC02M1B_INFO, "%s: (exit)\n", __func__); + return (result); +} + +static RESULT GC02M1B_IsiActivateTestPattern(IsiSensorHandle_t handle, + const bool_t enable) +{ + RESULT result = RET_SUCCESS; + + TRACE(GC02M1B_INFO, "%s: (enter)\n", __func__); + + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + if (pGC02M1BCtx == NULL || pGC02M1BCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + if (pGC02M1BCtx->Configured != BOOL_TRUE) + return RET_WRONG_STATE; + + if (BOOL_TRUE == enable) { + //result = GC02M1B_IsiRegisterWriteIss(handle, 0x3253, 0x80); + } else { + //result = GC02M1B_IsiRegisterWriteIss(handle, 0x3253, 0x00); + } + pGC02M1BCtx->TestPattern = enable; + + TRACE(GC02M1B_INFO, "%s: (exit)\n", __func__); + + return (result); +} + +static RESULT GC02M1B_IsiSensorSetBlcIss(IsiSensorHandle_t handle, sensor_blc_t * pblc) +{ + int32_t ret = 0; + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + if (pGC02M1BCtx == NULL || pGC02M1BCtx->IsiCtx.HalHandle == NULL) { + return RET_WRONG_HANDLE; + } + + if (pblc == NULL) + return RET_NULL_POINTER; + + HalContext_t *pHalCtx = (HalContext_t *) pGC02M1BCtx->IsiCtx.HalHandle; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_BLC, pblc); + if (ret != 0) + { + TRACE(GC02M1B_ERROR, "%s: set wb error\n", __func__); + } + + return RET_SUCCESS; +} + +static RESULT GC02M1B_IsiSensorSetWBIss(IsiSensorHandle_t handle, sensor_white_balance_t * pwb) +{ + int32_t ret = 0; + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + if (pGC02M1BCtx == NULL || pGC02M1BCtx->IsiCtx.HalHandle == NULL) { + return RET_WRONG_HANDLE; + } + HalContext_t *pHalCtx = (HalContext_t *) pGC02M1BCtx->IsiCtx.HalHandle; + + if (pwb == NULL) + return RET_NULL_POINTER; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_WB, pwb); + if (ret != 0) + { + TRACE(GC02M1B_ERROR, "%s: set wb error\n", __func__); + } + + return RET_SUCCESS; +} + +static RESULT GC02M1B_IsiGetSensorAWBModeIss(IsiSensorHandle_t handle, IsiSensorAwbMode_t *pawbmode) +{ + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + if (pGC02M1BCtx == NULL || pGC02M1BCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + if (pGC02M1BCtx->SensorMode.hdr_mode == SENSOR_MODE_HDR_NATIVE){ + *pawbmode = ISI_SENSOR_AWB_MODE_SENSOR; + }else{ + *pawbmode = ISI_SENSOR_AWB_MODE_NORMAL; + } + return RET_SUCCESS; +} + +static RESULT GC02M1B_IsiSensorGetExpandCurveIss(IsiSensorHandle_t handle, sensor_expand_curve_t * pexpand_curve) +{ + int32_t ret = 0; + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + if (pGC02M1BCtx == NULL || pGC02M1BCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pGC02M1BCtx->IsiCtx.HalHandle; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_EXPAND_CURVE, pexpand_curve); + if (ret != 0) + { + TRACE(GC02M1B_ERROR, "%s: get expand cure error\n", __func__); + return RET_FAILURE; + } + + return RET_SUCCESS; +} + +static RESULT GC02M1B_IsiGetCapsIss(IsiSensorHandle_t handle, + IsiSensorCaps_t * pIsiSensorCaps) +{ + GC02M1B_Context_t *pGC02M1BCtx = (GC02M1B_Context_t *) handle; + + RESULT result = RET_SUCCESS; + + TRACE(GC02M1B_INFO, "%s (enter)\n", __func__); + + if (pGC02M1BCtx == NULL) { + return (RET_WRONG_HANDLE); + } + + if (pIsiSensorCaps == NULL) { + return (RET_NULL_POINTER); + } + + pIsiSensorCaps->BusWidth = pGC02M1BCtx->SensorMode.bit_width; + pIsiSensorCaps->Mode = ISI_MODE_BAYER; + pIsiSensorCaps->FieldSelection = ISI_FIELDSEL_BOTH; + pIsiSensorCaps->YCSequence = ISI_YCSEQ_YCBYCR; + pIsiSensorCaps->Conv422 = ISI_CONV422_NOCOSITED; + pIsiSensorCaps->BPat = pGC02M1BCtx->SensorMode.bayer_pattern; + pIsiSensorCaps->HPol = ISI_HPOL_REFPOS; + pIsiSensorCaps->VPol = ISI_VPOL_NEG; + pIsiSensorCaps->Edge = ISI_EDGE_RISING; + pIsiSensorCaps->Resolution.width = pGC02M1BCtx->SensorMode.width; + pIsiSensorCaps->Resolution.height = pGC02M1BCtx->SensorMode.height; + pIsiSensorCaps->SmiaMode = ISI_SMIA_OFF; + pIsiSensorCaps->MipiLanes = ISI_MIPI_2LANES; + + if (pIsiSensorCaps->BusWidth == 10) { + pIsiSensorCaps->MipiMode = ISI_MIPI_MODE_RAW_10; + }else if (pIsiSensorCaps->BusWidth == 12){ + pIsiSensorCaps->MipiMode = ISI_MIPI_MODE_RAW_12; + }else{ + pIsiSensorCaps->MipiMode = ISI_MIPI_OFF; + } + + TRACE(GC02M1B_INFO, "%s (exit)\n", __func__); + return result; +} + +RESULT GC02M1B_IsiGetSensorIss(IsiSensor_t *pIsiSensor) +{ + RESULT result = RET_SUCCESS; + TRACE( GC02M1B_INFO, "%s (enter)\n", __func__); + + if ( pIsiSensor != NULL ) { + pIsiSensor->pszName = SensorName; + pIsiSensor->pIsiCreateSensorIss = GC02M1B_IsiCreateSensorIss; + + pIsiSensor->pIsiInitSensorIss = GC02M1B_IsiInitSensorIss; + pIsiSensor->pIsiGetSensorModeIss = GC02M1B_IsiGetSensorModeIss; + pIsiSensor->pIsiResetSensorIss = GC02M1B_IsiResetSensorIss; + pIsiSensor->pIsiReleaseSensorIss = GC02M1B_IsiReleaseSensorIss; + pIsiSensor->pIsiGetCapsIss = GC02M1B_IsiGetCapsIss; + pIsiSensor->pIsiSetupSensorIss = GC02M1B_IsiSetupSensorIss; + pIsiSensor->pIsiChangeSensorResolutionIss = GC02M1B_IsiChangeSensorResolutionIss; + pIsiSensor->pIsiSensorSetStreamingIss = GC02M1B_IsiSensorSetStreamingIss; + pIsiSensor->pIsiSensorSetPowerIss = GC02M1B_IsiSensorSetPowerIss; + pIsiSensor->pIsiCheckSensorConnectionIss = GC02M1B_IsiCheckSensorConnectionIss; + pIsiSensor->pIsiGetSensorRevisionIss = GC02M1B_IsiGetSensorRevisionIss; + pIsiSensor->pIsiRegisterReadIss = GC02M1B_IsiRegisterReadIss; + pIsiSensor->pIsiRegisterWriteIss = GC02M1B_IsiRegisterWriteIss; + + /* AEC functions */ + pIsiSensor->pIsiExposureControlIss = GC02M1B_IsiExposureControlIss; + pIsiSensor->pIsiGetGainLimitsIss = GC02M1B_IsiGetGainLimitsIss; + pIsiSensor->pIsiGetIntegrationTimeLimitsIss = GC02M1B_IsiGetIntegrationTimeLimitsIss; + pIsiSensor->pIsiGetCurrentExposureIss = GC02M1B_IsiGetCurrentExposureIss; + pIsiSensor->pIsiGetVSGainIss = GC02M1B_IsiGetVSGainIss; + pIsiSensor->pIsiGetGainIss = GC02M1B_IsiGetGainIss; + pIsiSensor->pIsiGetLongGainIss = GC02M1B_IsiGetLongGainIss; + pIsiSensor->pIsiGetGainIncrementIss = GC02M1B_IsiGetGainIncrementIss; + pIsiSensor->pIsiSetGainIss = GC02M1B_IsiSetGainIss; + pIsiSensor->pIsiGetIntegrationTimeIss = GC02M1B_IsiGetIntegrationTimeIss; + pIsiSensor->pIsiGetVSIntegrationTimeIss = GC02M1B_IsiGetVSIntegrationTimeIss; + pIsiSensor->pIsiGetLongIntegrationTimeIss = GC02M1B_IsiGetLongIntegrationTimeIss; + pIsiSensor->pIsiGetIntegrationTimeIncrementIss = GC02M1B_IsiGetIntegrationTimeIncrementIss; + pIsiSensor->pIsiSetIntegrationTimeIss = GC02M1B_IsiSetIntegrationTimeIss; + pIsiSensor->pIsiQuerySensorIss = GC02M1B_IsiQuerySensorIss; + pIsiSensor->pIsiGetResolutionIss = GC02M1B_IsiGetResolutionIss; + pIsiSensor->pIsiGetSensorFpsIss = GC02M1B_IsiGetSensorFpsIss; + pIsiSensor->pIsiSetSensorFpsIss = GC02M1B_IsiSetSensorFpsIss; + pIsiSensor->pIsiSensorGetExpandCurveIss = GC02M1B_IsiSensorGetExpandCurveIss; + + /* AWB specific functions */ + + /* Testpattern */ + pIsiSensor->pIsiActivateTestPattern = GC02M1B_IsiActivateTestPattern; + pIsiSensor->pIsiSetBayerPattern = GC02M1B_IsiSetBayerPattern; + + pIsiSensor->pIsiSensorSetBlcIss = GC02M1B_IsiSensorSetBlcIss; + pIsiSensor->pIsiSensorSetWBIss = GC02M1B_IsiSensorSetWBIss; + pIsiSensor->pIsiGetSensorAWBModeIss = GC02M1B_IsiGetSensorAWBModeIss; + + } else { + result = RET_NULL_POINTER; + } + + TRACE( GC02M1B_INFO, "%s (exit)\n", __func__); + return ( result ); +} + +/***************************************************************************** +* each sensor driver need declare this struct for isi load +*****************************************************************************/ +IsiCamDrvConfig_t GC02M1B_IsiCamDrvConfig = { + 0, + GC02M1B_IsiQuerySensorSupportIss, + GC02M1B_IsiGetSensorIss, + { + SensorName, /**< IsiSensor_t.pszName */ + 0, /**< IsiSensor_t.pIsiInitIss>*/ + 0, /**< IsiSensor_t.pIsiResetSensorIss>*/ + 0, /**< IsiSensor_t.pRegisterTable */ + 0, /**< IsiSensor_t.pIsiSensorCaps */ + 0, /**< IsiSensor_t.pIsiCreateSensorIss */ + 0, /**< IsiSensor_t.pIsiReleaseSensorIss */ + 0, /**< IsiSensor_t.pIsiGetCapsIss */ + 0, /**< IsiSensor_t.pIsiSetupSensorIss */ + 0, /**< IsiSensor_t.pIsiChangeSensorResolutionIss */ + 0, /**< IsiSensor_t.pIsiSensorSetStreamingIss */ + 0, /**< IsiSensor_t.pIsiSensorSetPowerIss */ + 0, /**< IsiSensor_t.pIsiCheckSensorConnectionIss */ + 0, /**< IsiSensor_t.pIsiGetSensorRevisionIss */ + 0, /**< IsiSensor_t.pIsiRegisterReadIss */ + 0, /**< IsiSensor_t.pIsiRegisterWriteIss */ + + 0, /**< IsiSensor_t.pIsiExposureControlIss */ + 0, /**< IsiSensor_t.pIsiGetGainLimitsIss */ + 0, /**< IsiSensor_t.pIsiGetIntegrationTimeLimitsIss */ + 0, /**< IsiSensor_t.pIsiGetCurrentExposureIss */ + 0, /**< IsiSensor_t.pIsiGetGainIss */ + 0, /**< IsiSensor_t.pIsiGetVSGainIss */ + 0, /**< IsiSensor_t.pIsiGetGainIncrementIss */ + 0, /**< IsiSensor_t.pIsiGetGainIncrementIss */ + 0, /**< IsiSensor_t.pIsiSetGainIss */ + 0, /**< IsiSensor_t.pIsiGetIntegrationTimeIss */ + 0, /**< IsiSensor_t.pIsiGetIntegrationTimeIncrementIss */ + 0, /**< IsiSensor_t.pIsiSetIntegrationTimeIss */ + 0, /**< IsiSensor_t.pIsiGetResolutionIss */ + 0, /**< IsiSensor_t.pIsiGetAfpsInfoIss */ + + 0, /**< IsiSensor_t.pIsiMdiInitMotoDriveMds */ + 0, /**< IsiSensor_t.pIsiMdiSetupMotoDrive */ + 0, /**< IsiSensor_t.pIsiMdiFocusSet */ + 0, /**< IsiSensor_t.pIsiMdiFocusGet */ + 0, /**< IsiSensor_t.pIsiMdiFocusCalibrate */ + 0, /**< IsiSensor_t.pIsiGetSensorMipiInfoIss */ + 0, /**< IsiSensor_t.pIsiActivateTestPattern */ + 0, /**< IsiSensor_t.pIsiSetBayerPattern */ + } +}; diff --git a/drivers/GC02M1B/GC02M1B_1600x1200.xml b/drivers/GC02M1B/GC02M1B_1600x1200.xml new file mode 100644 index 0000000..8a4e288 --- /dev/null +++ b/drivers/GC02M1B/GC02M1B_1600x1200.xml @@ -0,0 +1,1539 @@ + + +
+ + 24-Aug-2022 + + + hong + + + gc02 + + + 2MLens_0824 + + + v2.1.1 + + + + + 1600x1200 + + + 0x00000001 + + + [ 1600] + + + [ 1200] + + + + + FPS_15 + + + [ 14.9916] + + + + + FPS_10 + + + [ 9.9944] + + + + + FPS_05 + + + [ 4.9972] + + + + + +
+ + + + + + 1600x1200 + + + 1600x1200 + + + [0.312492 0.450819 0.23669] + + + [-0.7399 0.0709331 0.668967 0.345275 -0.81341 0.46813] + + + [-0.74481 -0.667276 -2.7153] + + + [0.930564 1.0265 1.12244 1.21838 1.31432 1.41026 1.5062 1.6195 1.65613 1.74979 1.87815 1.95299 2.08183 2.17777 2.27371 2.4696] + + + [0.0594494 0.0548923 0.0512294 0.0472492 0.0446306 0.0425199 0.0410322 0.177014 0.310302 0.340953 0.168608 0.113754 0.0466876 0.0503825 0.0544594 0.063584] + + + [0.930564 1.02079 1.10262 1.1934 1.33019 1.41902 1.48294 1.60213 1.71432 1.79667 1.89229 2.01745 2.11657 2.20776 2.29061 2.4696] + + + [0.0405506 0.0683495 0.0934971 0.130669 0.144892 0.140332 0.141432 0.158091 0.204458 0.210744 0.221824 0.246499 0.242726 0.189205 0.17663 0.036416] + + + [0.8 0.90731 1.01462 1.12193 1.22924 1.33655 1.53212 1.57122 1.61331 1.68792 1.78386 1.97841 2.04665 2.24005 2.39897 2.5096] + + + [0.11674 0.110633 0.105483 0.101224 0.096918 0.0940591 0.111862 0.222281 0.328691 0.417498 0.379934 0.138274 0.144405 0.12586 0.16665 0.11686] + + + [0.8 0.90731 1.05178 1.14174 1.24796 1.33411 1.43406 1.53184 1.68057 1.74397 1.85555 1.9593 2.07767 2.23092 2.39086 2.5096] + + + [0.0832596 0.0893669 0.142538 0.172086 0.210436 0.228354 0.232203 0.239668 0.269923 0.289884 0.283281 0.298762 0.307798 0.285477 0.206964 0.083142] + + + [ 0.93056] + + + [ 2.4696] + + + [ 2.5096] + + + [ 1.794] + + + D50 + + + [ 4.5676] + + + [0.75 1.28836 1.77672 2.164 2.6 3.0618] + + + [114 114 105 95 95 90] + + + [83 83 110 120 122 128] + + + [28 27 18 16 9 9] + + + [123 123 123 123 123 120] + + + [123 123 123 123 123 126] + + + [5 5 5 5 5 5] + + + [ 1] + + + [ 0.8] + + + [ 0.05] + + + + [ 0.05] + + + [ 0.05] + + + [ 0.4] + + + [ 0.5] + + + [ 0.9] + + + [ 0.5] + + + [ 50] + + + [ 1] + + + [ 0.5] + + + + + + + + A + + + Indoor + + + + [1207.95 1609.35 1609.35 4143.2801] + + + [ 247.3246] + + + [1 1] + + + [-0.0687979 -0.012008] + + + + + + 1600x1200 + + + 1600x1200_A_90 + + + + + [1.2679 1 1 2.4534] + + + [1.62147 -0.0445277 -0.546563 -0.261854 1.52127 -0.211003 0.0194952 -1.45836 2.4966] + + + [-124.39 -122.251 -145.4412] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + A_100 + + + + + + D50 + + + Indoor + + + + [330.699 34.5927 34.5927 1629.0054] + + + [ 116.6849] + + + [1 1] + + + [0.050113 -0.068793] + + + + + + 1600x1200 + + + 1600x1200_D50_90 + + + + + [2.01726 1 1 1.6274] + + + [1.5183 -0.341669 -0.150056 -0.23618 1.63938 -0.35403 -0.0308324 -0.524599 1.5759] + + + [-81.0317 -71.6168 -83.757] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D50_100 + + + + + + D65 + + + Indoor + + + + [333.92 -176.3 -176.3 1334.0628] + + + [ 102.4529] + + + [1 1] + + + [0.0955004 -0.020029] + + + + + + 1600x1200 + + + 1600x1200_D65_90 + + + + + [2.41759 1 1 1.4225] + + + [1.74788 -0.562271 -0.124172 -0.189096 1.66277 -0.416313 0.0171408 -0.552856 1.5549] + + + [-84.4486 -70.1682 -78.446] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D65_100 + + + + + + D75 + + + Outdoor + + + + [358.543 -250.477 -250.477 1258.5652] + + + [ 99.2022] + + + [1 1] + + + [0.152003 -0.013334] + + + + + + 1600x1200 + + + 1600x1200_D75_90 + + + + + [2.46127 1 1 1.3353] + + + [1.84441 -0.649995 -0.151423 -0.17172 1.61099 -0.39653 0.0218805 -0.506897 1.5048] + + + [-87.0209 -74.4697 -80.8341] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D75_100 + + + + + + F2 (CWF) + + + Indoor + + + + [518.32 -301.304 -301.304 1170.4769] + + + [ 114.3146] + + + [1 1] + + + [0.166784 -0.0016528] + + + + + + 1600x1200 + + + 1600x1200_F2_90 + + + + + [2.02785 1 1 2.1442] + + + [2.06572 -0.770765 -0.278229 -0.301217 1.49376 -0.146116 -0.0191357 -0.55147 1.6208] + + + [-68.4901 -66.8725 -80.6516] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F2_100 + + + + + + F11 (TL84) + + + Indoor + + + + [392.346 -49.1799 -49.1799 1178.8269] + + + [ 107.9546] + + + [1 1] + + + [-0.150097 0.01359] + + + + + + 1600x1200 + + + 1600x1200_F11_90 + + + + + [1.79738 1 1 2.0643] + + + [1.52028 -0.278563 -0.200712 -0.305258 1.64403 -0.267838 -0.00796981 -0.719295 1.7485] + + + [-73.4915 -72.5498 -86.9231] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F11_100 + + + + + + F12 + + + Indoor + + + + [548.609 299.864 299.864 1633.0404] + + + [ 142.8837] + + + [1 1] + + + [0.0327322 -0.045325] + + + + + + 1600x1200 + + + 1600x1200_F12_90 + + + + + [1.00205 1 1 3.0084] + + + [1.43944 0.0309125 -0.463539 -0.338943 1.6164 -0.231193 -0.0812989 -1.41021 2.5269] + + + [-27.8837 -30.4929 -71.3504] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F12_100 + + + + + + + + + 1600x1200_A_90 + + + 1600x1200 + + + A + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 1600x1200_D50_90 + + + 1600x1200 + + + D50 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 1600x1200_D65_90 + + + 1600x1200 + + + D65 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 1600x1200_D75_90 + + + 1600x1200 + + + D75 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 1600x1200_F11_90 + + + 1600x1200 + + + F11 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 1600x1200_F12_90 + + + 1600x1200 + + + F12 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 1600x1200_F2_90 + + + 1600x1200 + + + F2 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + + + A_100 + + + [ 100] + + + [1.62147 -0.0445277 -0.546563 -0.261854 1.52127 -0.211003 0.0194952 -1.45836 2.4966] + + + [-124.39 -122.251 -145.4412] + + + [1.2679 1 1 2.4534] + + + + + D50_100 + + + [ 100] + + + [1.5183 -0.341669 -0.150056 -0.23618 1.63938 -0.35403 -0.0308324 -0.524599 1.5759] + + + [-81.0317 -71.6168 -83.757] + + + [2.01726 1 1 1.6274] + + + + + D65_100 + + + [ 100] + + + [1.74788 -0.562271 -0.124172 -0.189096 1.66277 -0.416313 0.0171408 -0.552856 1.5549] + + + [-84.4486 -70.1682 -78.446] + + + [2.41759 1 1 1.4225] + + + + + D75_100 + + + [ 100] + + + [1.84441 -0.649995 -0.151423 -0.17172 1.61099 -0.39653 0.0218805 -0.506897 1.5048] + + + [-87.0209 -74.4697 -80.8341] + + + [2.46127 1 1 1.3353] + + + + + F11_100 + + + [ 100] + + + [1.52028 -0.278563 -0.200712 -0.305258 1.64403 -0.267838 -0.00796981 -0.719295 1.7485] + + + [-73.4915 -72.5498 -86.9231] + + + [1.79738 1 1 2.0643] + + + + + F12_100 + + + [ 100] + + + [1.43944 0.0309125 -0.463539 -0.338943 1.6164 -0.231193 -0.0812989 -1.41021 2.5269] + + + [-27.8837 -30.4929 -71.3504] + + + [1.00205 1 1 3.0084] + + + + + F2_100 + + + [ 100] + + + [2.06572 -0.770765 -0.278229 -0.301217 1.49376 -0.146116 -0.0191357 -0.55147 1.6208] + + + [-68.4901 -66.8725 -80.6516] + + + [2.02785 1 1 2.1442] + + + + + + [ -1] + + + + + [ 80] + + + [ 20] + + + [ 0.7] + + + [ 0.7] + + + [ 0.7] + + + [ 0.9] + + + + + 1600x1200_FPS_15 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 1600x1200_FPS_10 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 1600x1200_FPS_05 + + + + + fast + + + [ 1] + + + [ 1] + + + + + normal + + + [ 2] + + + [ 0.9] + + + + + slow + + + [ 4] + + + [ 0.9] + + + + + + + [ 8] + + + + + + 1600x1200 + + + 1600x1200 + + + [64 64 64 64] + + + + + + + linear + + + [256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4096] + + + [0 256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4095] + + + + + + [ -1] + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + + + 1600x1200 + + + 1600x1200 + + + [ 6] + + + [ 29] + + + [ 6] + + + [ 29] + + + [ 0] + + + [ 0] + + + [-0.625 1.5625 -1.625] + + + [-0.3125 -0.125 0.375] + + + + + + + 1600x1200 + + + 1600x1200 + + + [ 1] + + + [243 177 146 127 114 96 85 77 71 62 56 51 45 40 37 34 32] + + + [ 4] + + + [ 4] + + + [ 0.15] + + + [ 0] + + + [1 1 1 1] + + + + + + + 1600x1200 + + + 1600x1200 + + + + + ISP_DPCC_MODE + + + 0x0005 + + + + + ISP_DPCC_OUT_MODE + + + 0x0003 + + + + + ISP_DPCC_SET_USE + + + 0x0007 + + + + + ISP_DPCC_METHODS_SET1 + + + 0x1D1D + + + + + ISP_DPCC_METHODS_SET2 + + + 0x0707 + + + + + ISP_DPCC_METHODS_SET3 + + + 0x1F1F + + + + + ISP_DPCC_LINE_THRESH_1 + + + 0x0808 + + + + + ISP_DPCC_LINE_MAD_FAC_1 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_1 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_1 + + + 0x0A0A + + + + + ISP_DPCC_RG_FAC_1 + + + 0x2020 + + + + + ISP_DPCC_LINE_THRESH_2 + + + 0x100C + + + + + ISP_DPCC_LINE_MAD_FAC_2 + + + 0x1810 + + + + + ISP_DPCC_PG_FAC_2 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_2 + + + 0x0808 + + + + + ISP_DPCC_RG_FAC_2 + + + 0x0808 + + + + + ISP_DPCC_LINE_THRESH_3 + + + 0x2020 + + + + + ISP_DPCC_LINE_MAD_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_3 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_3 + + + 0x0806 + + + + + ISP_DPCC_RG_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_RO_LIMITS + + + 0x0A0A + + + + + ISP_DPCC_RND_OFFS + + + 0x0FFF + + + + + + + + + + on + + + +
diff --git a/drivers/GC02M1B/GC02M1B_mipi1lane_1600x1200@30_mayi.txt b/drivers/GC02M1B/GC02M1B_mipi1lane_1600x1200@30_mayi.txt new file mode 100644 index 0000000..c5876a3 --- /dev/null +++ b/drivers/GC02M1B/GC02M1B_mipi1lane_1600x1200@30_mayi.txt @@ -0,0 +1,200 @@ +0xfc 0x01 +0xf4 0x41 +0xf5 0xc0 +0xf6 0x44 +0xf8 0x38 +0xf9 0x82 +0xfa 0x00 +0xfd 0x80 +0xfc 0x81 +0xfe 0x03 +0x01 0x0b +0xf7 0x01 +0xfc 0x80 +0xfc 0x80 +0xfc 0x80 +0xfc 0x8e +0xfe 0x00 +0x87 0x09 +0xee 0x72 +0xfe 0x01 +0x8c 0x90 +0xfe 0x00 +0x90 0x00 +0x03 0x04 +0x04 0x7d +0x41 0x04 +0x42 0xf4 +0x05 0x04 +0x06 0x48 +0x07 0x00 +0x08 0x18 +0x9d 0x18 +0x09 0x00 +0x0a 0x02 +0x0d 0x04 +0x0e 0xbc +0x17 0x80 +0x19 0x04 +0x24 0x00 +0x56 0x20 +0x5b 0x00 +0x5e 0x01 +0x21 0x3c +0x44 0x20 +0xcc 0x01 +0x1a 0x04 +0x1f 0x11 +0x27 0x30 +0x2b 0x00 +0x33 0x00 +0x53 0x90 +0xe6 0x50 +0x39 0x07 +0x43 0x04 +0x46 0x2a +0x7c 0xa0 +0xd0 0xbe +0xd1 0x60 +0xd2 0x40 +0xd3 0xf3 +0xde 0x1d +0xcd 0x05 +0xce 0x6f +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xfe 0x00 +0xfe 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x04 +0xe0 0x01 +0xfe 0x00 +0xfe 0x01 +0x53 0x44 +0x87 0x53 +0x89 0x03 +0xfe 0x00 +0xb0 0x74 +0xb1 0x04 +0xb2 0x00 +0xb6 0x00 +0xfe 0x04 +0xd8 0x00 +0xc0 0x40 +0xc0 0x00 +0xc0 0x00 +0xc0 0x00 +0xc0 0x60 +0xc0 0x00 +0xc0 0xc0 +0xc0 0x2a +0xc0 0x80 +0xc0 0x00 +0xc0 0x00 +0xc0 0x40 +0xc0 0xa0 +0xc0 0x00 +0xc0 0x90 +0xc0 0x19 +0xc0 0xc0 +0xc0 0x00 +0xc0 0xD0 +0xc0 0x2F +0xc0 0xe0 +0xc0 0x00 +0xc0 0x90 +0xc0 0x39 +0xc0 0x00 +0xc0 0x01 +0xc0 0x20 +0xc0 0x04 +0xc0 0x20 +0xc0 0x01 +0xc0 0xe0 +0xc0 0x0f +0xc0 0x40 +0xc0 0x01 +0xc0 0xe0 +0xc0 0x1a +0xc0 0x60 +0xc0 0x01 +0xc0 0x20 +0xc0 0x25 +0xc0 0x80 +0xc0 0x01 +0xc0 0xa0 +0xc0 0x2c +0xc0 0xa0 +0xc0 0x01 +0xc0 0xe0 +0xc0 0x32 +0xc0 0xc0 +0xc0 0x01 +0xc0 0x20 +0xc0 0x38 +0xc0 0xe0 +0xc0 0x01 +0xc0 0x60 +0xc0 0x3c +0xc0 0x00 +0xc0 0x02 +0xc0 0xa0 +0xc0 0x40 +0xc0 0x80 +0xc0 0x02 +0xc0 0x18 +0xc0 0x5c +0xfe 0x00 +0x9f 0x10 +0xfe 0x00 +0x26 0x20 +0xfe 0x01 +0x40 0x22 +0x46 0x7f +0x49 0x0f +0x4a 0xf0 +0xfe 0x04 +0x14 0x80 +0x15 0x80 +0x16 0x80 +0x17 0x80 +0xfe 0x01 +0x41 0x20 +0x4c 0x00 +0x4d 0x0c +0x44 0x08 +0x48 0x03 +0xfe 0x01 +0x90 0x01 +0x91 0x00 +0x92 0x06 +0x93 0x00 +0x94 0x06 +0x95 0x04 +0x96 0xb0 +0x97 0x06 +0x98 0x40 +0xfe 0x03 +0x01 0x23 +0x03 0xce +0x04 0x48 +0x15 0x00 +0x21 0x10 +0x22 0x05 +0x23 0x20 +0x25 0x20 +0x26 0x08 +0x29 0x06 +0x2a 0x0a +0x2b 0x08 +0xfe 0x01 +0x8c 0x10 +0xfe 0x00 +0x3e 0x00 \ No newline at end of file diff --git a/drivers/GC02M1B/GC02M1B_priv.h b/drivers/GC02M1B/GC02M1B_priv.h new file mode 100644 index 0000000..46eae7d --- /dev/null +++ b/drivers/GC02M1B/GC02M1B_priv.h @@ -0,0 +1,241 @@ +/******************************************************************************\ +|* Copyright (c) 2020 by VeriSilicon Holdings Co., Ltd. ("VeriSilicon") *| +|* All Rights Reserved. *| +|* *| +|* The material in this file is confidential and contains trade secrets of *| +|* of VeriSilicon. This is proprietary information owned or licensed by *| +|* VeriSilicon. No part of this work may be disclosed, reproduced, copied, *| +|* transmitted, or used in any way for any purpose, without the express *| +|* written permission of VeriSilicon. *| +|* *| +\******************************************************************************/ +/** + * @file GC02M1B_priv.h + * + * @brief Interface description for image sensor specific implementation (iss). + * + *****************************************************************************/ +/** + * @page module_name_page Module Name + * Describe here what this module does. + * + * For a detailed list of functions and implementation detail refer to: + * - @ref module_name + * + * @defgroup GC02M1B_priv + * @{ + * + */ +#ifndef __GC02M1B_PRIV_H__ +#define __GC02M1B_PRIV_H__ + +#include +#include +#include +#include +#include "vvsensor.h" + + + +#ifdef __cplusplus +extern "C" +{ +#endif + + + +/***************************************************************************** + * SC control registers + *****************************************************************************/ +#define GC02M1B_PIDH (0x300A) //R - Product ID High Byte MSBs +#define GC02M1B_PIDL (0x300B) //R - Product ID Low Byte LSBs + +/***************************************************************************** + * Default values + *****************************************************************************/ + + // Make sure that these static settings are reflecting the capabilities defined +// in IsiGetCapsIss (further dynamic setup may alter these default settings but +// often does not if there is no choice available). + +/***************************************************************************** + * SC control registers + *****************************************************************************/ +#define GC02M1B_PIDH_DEFAULT (0x27) //read only +#define GC02M1B_PIDL_DEFAULT (0x70) //read only + +typedef struct GC02M1B_Context_s +{ + IsiSensorContext_t IsiCtx; /**< common context of ISI and ISI driver layer; @note: MUST BE FIRST IN DRIVER CONTEXT */ + + struct vvcam_mode_info SensorMode; + uint32_t KernelDriverFlag; + char SensorRegCfgFile[128]; + + uint32_t HdrMode; + uint32_t Resolution; + uint32_t MaxFps; + uint32_t MinFps; + uint32_t CurrFps; + //// modify below here //// + + IsiSensorConfig_t Config; /**< sensor configuration */ + bool_t Configured; /**< flags that config was applied to sensor */ + bool_t Streaming; /**< flags that csensor is streaming data */ + bool_t TestPattern; /**< flags that sensor is streaming test-pattern */ + + bool_t isAfpsRun; /**< if true, just do anything required for Afps parameter calculation, but DON'T access SensorHW! */ + + float one_line_exp_time; + uint16_t MaxIntegrationLine; + uint16_t MinIntegrationLine; + uint32_t gain_accuracy; + + uint16_t FrameLengthLines; /**< frame line length */ + uint16_t CurFrameLengthLines; + + float AecMinGain; + float AecMaxGain; + float AecMinIntegrationTime; + float AecMaxIntegrationTime; + + float AecIntegrationTimeIncrement; /**< _smallest_ increment the sensor/driver can handle (e.g. used for sliders in the application) */ + float AecGainIncrement; /**< _smallest_ increment the sensor/driver can handle (e.g. used for sliders in the application) */ + + float AecCurIntegrationTime; + float AecCurVSIntegrationTime; + float AecCurLongIntegrationTime; + float AecCurGain; + float AecCurVSGain; + float AecCurLongGain; + + uint32_t LastExpLine; + uint32_t LastVsExpLine; + uint32_t LastLongExpLine; + + uint32_t LastGain; + uint32_t LastVsGain; + uint32_t LastLongGain; + + bool GroupHold; + uint32_t OldGain; + uint32_t OldVsGain; + uint32_t OldIntegrationTime; + uint32_t OldVsIntegrationTime; + uint32_t OldGainHcg; + uint32_t OldAGainHcg; + uint32_t OldGainLcg; + uint32_t OldAGainLcg; + int subdev; + uint8_t pattern; + + float CurHdrRatio; +} GC02M1B_Context_t; + +static RESULT GC02M1B_IsiCreateSensorIss(IsiSensorInstanceConfig_t * + pConfig); + +static RESULT GC02M1B_IsiInitSensorIss(IsiSensorHandle_t handle); + +static RESULT GC02M1B_IsiReleaseSensorIss(IsiSensorHandle_t handle); + +static RESULT GC02M1B_IsiGetCapsIss(IsiSensorHandle_t handle, + IsiSensorCaps_t * pIsiSensorCaps); + +static RESULT GC02M1B_IsiSetupSensorIss(IsiSensorHandle_t handle, + const IsiSensorConfig_t * + pConfig); + +static RESULT GC02M1B_IsiSensorSetStreamingIss(IsiSensorHandle_t handle, + bool_t on); + +static RESULT GC02M1B_IsiSensorSetPowerIss(IsiSensorHandle_t handle, + bool_t on); + +static RESULT GC02M1B_IsiGetSensorRevisionIss(IsiSensorHandle_t handle, + uint32_t * p_value); + +static RESULT GC02M1B_IsiSetBayerPattern(IsiSensorHandle_t handle, + uint8_t pattern); + +static RESULT GC02M1B_IsiGetGainLimitsIss(IsiSensorHandle_t handle, + float *pMinGain, + float *pMaxGain); + +static RESULT GC02M1B_IsiGetIntegrationTimeLimitsIss(IsiSensorHandle_t + handle, + float + *pMinIntegrationTime, + float + *pMaxIntegrationTime); + +static RESULT GC02M1B_IsiExposureControlIss(IsiSensorHandle_t handle, + float NewGain, + float NewIntegrationTime, + uint8_t * + pNumberOfFramesToSkip, + float *pSetGain, + float *pSetIntegrationTime, + float *hdr_ratio); + +static RESULT GC02M1B_IsiGetGainIss(IsiSensorHandle_t handle, + float *pSetGain); + +static RESULT GC02M1B_IsiGetVSGainIss(IsiSensorHandle_t handle, + float *pSetGain); + +static RESULT GC02M1B_IsiGetGainIncrementIss(IsiSensorHandle_t handle, + float *pIncr); + +static RESULT GC02M1B_IsiSetGainIss(IsiSensorHandle_t handle, + float NewGain, float *pSetGain, + float *hdr_ratio); + +static RESULT GC02M1B_IsiSetVSGainIss(IsiSensorHandle_t handle, + float NewIntegrationTime, + float NewGain, float *pSetGain, + float *hdr_ratio); + +static RESULT GC02M1B_IsiGetIntegrationTimeIss(IsiSensorHandle_t handle, + float + *pSetIntegrationTime); + +static RESULT GC02M1B_IsiGetVSIntegrationTimeIss(IsiSensorHandle_t + handle, + float + *pSetIntegrationTime); + +static RESULT GC02M1B_IsiGetIntegrationTimeIncrementIss(IsiSensorHandle_t handle, + float *pIncr); + +static RESULT GC02M1B_IsiSetIntegrationTimeIss(IsiSensorHandle_t handle, + float NewIntegrationTime, + float + *pSetIntegrationTime, + uint8_t * + pNumberOfFramesToSkip, + float *hdr_ratio); + +static RESULT GC02M1B_IsiSetVSIntegrationTimeIss(IsiSensorHandle_t + handle, + float + NewIntegrationTime, + float + *pSetIntegrationTime, + uint8_t * + pNumberOfFramesToSkip, + float *hdr_ratio); + +RESULT GC02M1B_IsiGetResolutionIss(IsiSensorHandle_t handle, uint16_t *pwidth, uint16_t *pheight); + +static RESULT GC02M1B_IsiResetSensorIss(IsiSensorHandle_t handle); + + +#ifdef __cplusplus +} +#endif + +/* @} GC02M1Bpriv */ + +#endif /* __GC02M1BPRIV_H__ */ + diff --git a/drivers/GC02M1B/gc02m1b.h b/drivers/GC02M1B/gc02m1b.h new file mode 100644 index 0000000..2fd4fc5 --- /dev/null +++ b/drivers/GC02M1B/gc02m1b.h @@ -0,0 +1,1377 @@ +/* + * Support for OmniVision GC02M1B 5M camera sensor. + * + * Copyright (c) 2013 Intel Corporation. All Rights Reserved. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License version + * 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + * + */ + +#ifndef __GC02M1B_H__ +#define __GC02M1B_H__ + +#define GC02M1B_NAME "gc02m1b" + +#define GC02M1B_POWER_UP_RETRY_NUM 5 + +/* Defines for register writes and register array processing */ +#define I2C_MSG_LENGTH 0x2 +#define I2C_RETRY_COUNT 5 + +#define GC02M1B_FOCAL_LENGTH_NUM 334 /*3.34mm*/ +#define GC02M1B_FOCAL_LENGTH_DEM 100 +#define GC02M1B_F_NUMBER_DEFAULT_NUM 24 +#define GC02M1B_F_NUMBER_DEM 10 + +#define MAX_FMTS 1 + +/* sensor_mode_data read_mode adaptation */ +#define GC02M1B_READ_MODE_BINNING_ON 0x0400 +#define GC02M1B_READ_MODE_BINNING_OFF 0x00 +#define GC02M1B_INTEGRATION_TIME_MARGIN 8 + +#define GC02M1B_MAX_EXPOSURE_VALUE 0xFFF1 +#define GC02M1B_MAX_GAIN_VALUE 0xFF + +/* + * focal length bits definition: + * bits 31-16: numerator, bits 15-0: denominator + */ +#define GC02M1B_FOCAL_LENGTH_DEFAULT 0x1B70064 + +/* + * current f-number bits definition: + * bits 31-16: numerator, bits 15-0: denominator + */ +#define GC02M1B_F_NUMBER_DEFAULT 0x18000a + +/* + * f-number range bits definition: + * bits 31-24: max f-number numerator + * bits 23-16: max f-number denominator + * bits 15-8: min f-number numerator + * bits 7-0: min f-number denominator + */ +#define GC02M1B_F_NUMBER_RANGE 0x180a180a +#define GC02M1B_ID 0x5690 + +#define GC02M1B_FINE_INTG_TIME_MIN 0 +#define GC02M1B_FINE_INTG_TIME_MAX_MARGIN 0 +#define GC02M1B_COARSE_INTG_TIME_MIN 1 +#define GC02M1B_COARSE_INTG_TIME_MAX_MARGIN 6 + +#define GC02M1B_BIN_FACTOR_MAX 4 +/* + * GC02M1B System control registers + */ +#define GC02M1B_SW_SLEEP 0x0100 +#define GC02M1B_SW_RESET 0x0103 +#define GC02M1B_SW_STREAM 0x0100 + +#define GC02M1B_SC_CMMN_CHIP_ID_H 0x300A +#define GC02M1B_SC_CMMN_CHIP_ID_L 0x300B +#define GC02M1B_SC_CMMN_SCCB_ID 0x300C +#define GC02M1B_SC_CMMN_SUB_ID 0x302A /* process, version*/ +/*Bit[7:4] Group control, Bit[3:0] Group ID*/ +#define GC02M1B_GROUP_ACCESS 0x3208 +/* +*Bit[3:0] Bit[19:16] of exposure, +*remaining 16 bits lies in Reg0x3501&Reg0x3502 +*/ +#define GC02M1B_EXPOSURE_H 0x3500 +#define GC02M1B_EXPOSURE_M 0x3501 +#define GC02M1B_EXPOSURE_L 0x3502 +/*Bit[1:0] means Bit[9:8] of gain*/ +#define GC02M1B_AGC_H 0x350A +#define GC02M1B_AGC_L 0x350B /*Bit[7:0] of gain*/ + +#define GC02M1B_HORIZONTAL_START_H 0x3800 /*Bit[11:8]*/ +#define GC02M1B_HORIZONTAL_START_L 0x3801 /*Bit[7:0]*/ +#define GC02M1B_VERTICAL_START_H 0x3802 /*Bit[11:8]*/ +#define GC02M1B_VERTICAL_START_L 0x3803 /*Bit[7:0]*/ +#define GC02M1B_HORIZONTAL_END_H 0x3804 /*Bit[11:8]*/ +#define GC02M1B_HORIZONTAL_END_L 0x3805 /*Bit[7:0]*/ +#define GC02M1B_VERTICAL_END_H 0x3806 /*Bit[11:8]*/ +#define GC02M1B_VERTICAL_END_L 0x3807 /*Bit[7:0]*/ +#define GC02M1B_HORIZONTAL_OUTPUT_SIZE_H 0x3808 /*Bit[3:0]*/ +#define GC02M1B_HORIZONTAL_OUTPUT_SIZE_L 0x3809 /*Bit[7:0]*/ +#define GC02M1B_VERTICAL_OUTPUT_SIZE_H 0x380a /*Bit[3:0]*/ +#define GC02M1B_VERTICAL_OUTPUT_SIZE_L 0x380b /*Bit[7:0]*/ +/*High 8-bit, and low 8-bit HTS address is 0x380d*/ +#define GC02M1B_TIMING_HTS_H 0x380C +/*High 8-bit, and low 8-bit HTS address is 0x380d*/ +#define GC02M1B_TIMING_HTS_L 0x380D +/*High 8-bit, and low 8-bit HTS address is 0x380f*/ +#define GC02M1B_TIMING_VTS_H 0x380e +/*High 8-bit, and low 8-bit HTS address is 0x380f*/ +#define GC02M1B_TIMING_VTS_L 0x380f + +#define GC02M1B_MWB_RED_GAIN_H 0x3400 +#define GC02M1B_MWB_GREEN_GAIN_H 0x3402 +#define GC02M1B_MWB_BLUE_GAIN_H 0x3404 +#define GC02M1B_MWB_GAIN_MAX 0x0fff + +#define GC02M1B_START_STREAMING 0x01 +#define GC02M1B_STOP_STREAMING 0x00 + +#define VCM_ADDR 0x0c +#define VCM_CODE_MSB 0x04 + +#define GC02M1B_INVALID_CONFIG 0xffffffff + +#define GC02M1B_VCM_SLEW_STEP 0x30F0 +#define GC02M1B_VCM_SLEW_STEP_MAX 0x7 +#define GC02M1B_VCM_SLEW_STEP_MASK 0x7 +#define GC02M1B_VCM_CODE 0x30F2 +#define GC02M1B_VCM_SLEW_TIME 0x30F4 +#define GC02M1B_VCM_SLEW_TIME_MAX 0xffff +#define GC02M1B_VCM_ENABLE 0x8000 + +#define GC02M1B_VCM_MAX_FOCUS_NEG -1023 +#define GC02M1B_VCM_MAX_FOCUS_POS 1023 + +#define DLC_ENABLE 1 +#define DLC_DISABLE 0 +#define VCM_PROTECTION_OFF 0xeca3 +#define VCM_PROTECTION_ON 0xdc51 +#define VCM_DEFAULT_S 0x0 +#define vcm_step_s(a) (u8)(a & 0xf) +#define vcm_step_mclk(a) (u8)((a >> 4) & 0x3) +#define vcm_dlc_mclk(dlc, mclk) (u16)((dlc << 3) | mclk | 0xa104) +#define vcm_tsrc(tsrc) (u16)(tsrc << 3 | 0xf200) +#define vcm_val(data, s) (u16)(data << 4 | s) +#define DIRECT_VCM vcm_dlc_mclk(0, 0) + +/* Defines for OTP Data Registers */ +#define GC02M1B_FRAME_OFF_NUM 0x4202 +#define GC02M1B_OTP_BYTE_MAX 32 //change to 32 as needed by otpdata +#define GC02M1B_OTP_SHORT_MAX 16 +#define GC02M1B_OTP_START_ADDR 0x3D00 +#define GC02M1B_OTP_END_ADDR 0x3D0F +#define GC02M1B_OTP_DATA_SIZE 320 +#define GC02M1B_OTP_PROGRAM_REG 0x3D80 +#define GC02M1B_OTP_READ_REG 0x3D81 // 1:Enable 0:disable +#define GC02M1B_OTP_BANK_REG 0x3D84 //otp bank and mode +#define GC02M1B_OTP_READY_REG_DONE 1 +#define GC02M1B_OTP_BANK_MAX 28 +#define GC02M1B_OTP_BANK_SIZE 16 //16 bytes per bank +#define GC02M1B_OTP_READ_ONETIME 16 +#define GC02M1B_OTP_MODE_READ 1 + +typedef enum GC02M1B_EXPOSURE_SETTING_e { + GC02M1B_ANALOG_GAIN = 1 << 0, + GC02M1B_INTEGRATION_TIME = 1 << 1, + GC02M1B_DIGITAL_GAIN = 1 << 2, +}GC02M1B_EXPOSURE_SETTING_t; + +#if 0 +struct regval_list { + u16 reg_num; + u8 value; +}; + +struct gc02m1b_resolution { + u8 *desc; + const struct gc02m1b_reg *regs; + int res; + int width; + int height; + int fps; + int pix_clk_freq; + u16 pixels_per_line; + u16 lines_per_frame; + u8 bin_factor_x; + u8 bin_factor_y; + u8 bin_mode; + bool used; +}; + +struct gc02m1b_format { + u8 *desc; + u32 pixelformat; + struct gc02m1b_reg *regs; +}; + +enum vcm_type { + VCM_UNKNOWN, + VCM_AD5823, + VCM_DW9714, +}; + +/* + * gc02m1b device structure. + */ +struct gc02m1b_device { + struct v4l2_subdev sd; + struct media_pad pad; + struct v4l2_mbus_framefmt format; + struct mutex input_lock; + struct v4l2_ctrl_handler ctrl_handler; + + struct camera_sensor_platform_data *platform_data; + struct timespec timestamp_t_focus_abs; + int vt_pix_clk_freq_mhz; + int fmt_idx; + int run_mode; + int otp_size; + u8 *otp_data; + u32 focus; + s16 number_of_steps; + u8 res; + u8 type; + bool vcm_update; + enum vcm_type vcm; +}; + +enum gc02m1b_tok_type { + GC02M1B_8BIT = 0x0001, + GC02M1B_16BIT = 0x0002, + GC02M1B_32BIT = 0x0004, + GC02M1B_TOK_TERM = 0xf000, /* terminating token for reg list */ + GC02M1B_TOK_DELAY = 0xfe00, /* delay token for reg list */ + GC02M1B_TOK_MASK = 0xfff0 +}; + +/** + * struct gc02m1b_reg - MI sensor register format + * @type: type of the register + * @reg: 16-bit offset to register + * @val: 8/16/32-bit register value + * + * Define a structure for sensor register initialization values + */ +struct gc02m1b_reg { + enum gc02m1b_tok_type type; + u16 reg; + u32 val; /* @set value for read/mod/write, @mask */ +}; + +#define to_gc02m1b_sensor(x) container_of(x, struct gc02m1b_device, sd) + +#define GC02M1B_MAX_WRITE_BUF_SIZE 30 + +struct gc02m1b_write_buffer { + u16 addr; + u8 data[GC02M1B_MAX_WRITE_BUF_SIZE]; +}; + +struct gc02m1b_write_ctrl { + int index; + struct gc02m1b_write_buffer buffer; +}; + +static const struct i2c_device_id gc02m1b_id[] = { + {GC02M1B_NAME, 0}, + {} +}; + +static struct gc02m1b_reg const gc02m1b_global_setting[] = { + {GC02M1B_8BIT, 0x0103, 0x01}, + {GC02M1B_8BIT, 0x3001, 0x0a}, + {GC02M1B_8BIT, 0x3002, 0x80}, + {GC02M1B_8BIT, 0x3006, 0x00}, + {GC02M1B_8BIT, 0x3011, 0x21}, + {GC02M1B_8BIT, 0x3012, 0x09}, + {GC02M1B_8BIT, 0x3013, 0x10}, + {GC02M1B_8BIT, 0x3014, 0x00}, + {GC02M1B_8BIT, 0x3015, 0x08}, + {GC02M1B_8BIT, 0x3016, 0xf0}, + {GC02M1B_8BIT, 0x3017, 0xf0}, + {GC02M1B_8BIT, 0x3018, 0xf0}, + {GC02M1B_8BIT, 0x301b, 0xb4}, + {GC02M1B_8BIT, 0x301d, 0x02}, + {GC02M1B_8BIT, 0x3021, 0x00}, + {GC02M1B_8BIT, 0x3022, 0x01}, + {GC02M1B_8BIT, 0x3028, 0x44}, + {GC02M1B_8BIT, 0x3098, 0x02}, + {GC02M1B_8BIT, 0x3099, 0x19}, + {GC02M1B_8BIT, 0x309a, 0x02}, + {GC02M1B_8BIT, 0x309b, 0x01}, + {GC02M1B_8BIT, 0x309c, 0x00}, + {GC02M1B_8BIT, 0x30a0, 0xd2}, + {GC02M1B_8BIT, 0x30a2, 0x01}, + {GC02M1B_8BIT, 0x30b2, 0x00}, + {GC02M1B_8BIT, 0x30b3, 0x7d}, + {GC02M1B_8BIT, 0x30b4, 0x03}, + {GC02M1B_8BIT, 0x30b5, 0x04}, + {GC02M1B_8BIT, 0x30b6, 0x01}, + {GC02M1B_8BIT, 0x3104, 0x21}, + {GC02M1B_8BIT, 0x3106, 0x00}, + {GC02M1B_8BIT, 0x3400, 0x04}, + {GC02M1B_8BIT, 0x3401, 0x00}, + {GC02M1B_8BIT, 0x3402, 0x04}, + {GC02M1B_8BIT, 0x3403, 0x00}, + {GC02M1B_8BIT, 0x3404, 0x04}, + {GC02M1B_8BIT, 0x3405, 0x00}, + {GC02M1B_8BIT, 0x3406, 0x01}, + {GC02M1B_8BIT, 0x3500, 0x00}, + {GC02M1B_8BIT, 0x3503, 0x07}, + {GC02M1B_8BIT, 0x3504, 0x00}, + {GC02M1B_8BIT, 0x3505, 0x00}, + {GC02M1B_8BIT, 0x3506, 0x00}, + {GC02M1B_8BIT, 0x3507, 0x02}, + {GC02M1B_8BIT, 0x3508, 0x00}, + {GC02M1B_8BIT, 0x3509, 0x10}, + {GC02M1B_8BIT, 0x350a, 0x00}, + {GC02M1B_8BIT, 0x350b, 0x40}, + {GC02M1B_8BIT, 0x3601, 0x0a}, + {GC02M1B_8BIT, 0x3602, 0x38}, + {GC02M1B_8BIT, 0x3612, 0x80}, + {GC02M1B_8BIT, 0x3620, 0x54}, + {GC02M1B_8BIT, 0x3621, 0xc7}, + {GC02M1B_8BIT, 0x3622, 0x0f}, + {GC02M1B_8BIT, 0x3625, 0x10}, + {GC02M1B_8BIT, 0x3630, 0x55}, + {GC02M1B_8BIT, 0x3631, 0xf4}, + {GC02M1B_8BIT, 0x3632, 0x00}, + {GC02M1B_8BIT, 0x3633, 0x34}, + {GC02M1B_8BIT, 0x3634, 0x02}, + {GC02M1B_8BIT, 0x364d, 0x0d}, + {GC02M1B_8BIT, 0x364f, 0xdd}, + {GC02M1B_8BIT, 0x3660, 0x04}, + {GC02M1B_8BIT, 0x3662, 0x10}, + {GC02M1B_8BIT, 0x3663, 0xf1}, + {GC02M1B_8BIT, 0x3665, 0x00}, + {GC02M1B_8BIT, 0x3666, 0x20}, + {GC02M1B_8BIT, 0x3667, 0x00}, + {GC02M1B_8BIT, 0x366a, 0x80}, + {GC02M1B_8BIT, 0x3680, 0xe0}, + {GC02M1B_8BIT, 0x3681, 0x00}, + {GC02M1B_8BIT, 0x3700, 0x42}, + {GC02M1B_8BIT, 0x3701, 0x14}, + {GC02M1B_8BIT, 0x3702, 0xa0}, + {GC02M1B_8BIT, 0x3703, 0xd8}, + {GC02M1B_8BIT, 0x3704, 0x78}, + {GC02M1B_8BIT, 0x3705, 0x02}, + {GC02M1B_8BIT, 0x370a, 0x00}, + {GC02M1B_8BIT, 0x370b, 0x20}, + {GC02M1B_8BIT, 0x370c, 0x0c}, + {GC02M1B_8BIT, 0x370d, 0x11}, + {GC02M1B_8BIT, 0x370e, 0x00}, + {GC02M1B_8BIT, 0x370f, 0x40}, + {GC02M1B_8BIT, 0x3710, 0x00}, + {GC02M1B_8BIT, 0x371a, 0x1c}, + {GC02M1B_8BIT, 0x371b, 0x05}, + {GC02M1B_8BIT, 0x371c, 0x01}, + {GC02M1B_8BIT, 0x371e, 0xa1}, + {GC02M1B_8BIT, 0x371f, 0x0c}, + {GC02M1B_8BIT, 0x3721, 0x00}, + {GC02M1B_8BIT, 0x3724, 0x10}, + {GC02M1B_8BIT, 0x3726, 0x00}, + {GC02M1B_8BIT, 0x372a, 0x01}, + {GC02M1B_8BIT, 0x3730, 0x10}, + {GC02M1B_8BIT, 0x3738, 0x22}, + {GC02M1B_8BIT, 0x3739, 0xe5}, + {GC02M1B_8BIT, 0x373a, 0x50}, + {GC02M1B_8BIT, 0x373b, 0x02}, + {GC02M1B_8BIT, 0x373c, 0x41}, + {GC02M1B_8BIT, 0x373f, 0x02}, + {GC02M1B_8BIT, 0x3740, 0x42}, + {GC02M1B_8BIT, 0x3741, 0x02}, + {GC02M1B_8BIT, 0x3742, 0x18}, + {GC02M1B_8BIT, 0x3743, 0x01}, + {GC02M1B_8BIT, 0x3744, 0x02}, + {GC02M1B_8BIT, 0x3747, 0x10}, + {GC02M1B_8BIT, 0x374c, 0x04}, + {GC02M1B_8BIT, 0x3751, 0xf0}, + {GC02M1B_8BIT, 0x3752, 0x00}, + {GC02M1B_8BIT, 0x3753, 0x00}, + {GC02M1B_8BIT, 0x3754, 0xc0}, + {GC02M1B_8BIT, 0x3755, 0x00}, + {GC02M1B_8BIT, 0x3756, 0x1a}, + {GC02M1B_8BIT, 0x3758, 0x00}, + {GC02M1B_8BIT, 0x3759, 0x0f}, + {GC02M1B_8BIT, 0x376b, 0x44}, + {GC02M1B_8BIT, 0x375c, 0x04}, + {GC02M1B_8BIT, 0x3774, 0x10}, + {GC02M1B_8BIT, 0x3776, 0x00}, + {GC02M1B_8BIT, 0x377f, 0x08}, + {GC02M1B_8BIT, 0x3780, 0x22}, + {GC02M1B_8BIT, 0x3781, 0x0c}, + {GC02M1B_8BIT, 0x3784, 0x2c}, + {GC02M1B_8BIT, 0x3785, 0x1e}, + {GC02M1B_8BIT, 0x378f, 0xf5}, + {GC02M1B_8BIT, 0x3791, 0xb0}, + {GC02M1B_8BIT, 0x3795, 0x00}, + {GC02M1B_8BIT, 0x3796, 0x64}, + {GC02M1B_8BIT, 0x3797, 0x11}, + {GC02M1B_8BIT, 0x3798, 0x30}, + {GC02M1B_8BIT, 0x3799, 0x41}, + {GC02M1B_8BIT, 0x379a, 0x07}, + {GC02M1B_8BIT, 0x379b, 0xb0}, + {GC02M1B_8BIT, 0x379c, 0x0c}, + {GC02M1B_8BIT, 0x37c5, 0x00}, + {GC02M1B_8BIT, 0x37c6, 0x00}, + {GC02M1B_8BIT, 0x37c7, 0x00}, + {GC02M1B_8BIT, 0x37c9, 0x00}, + {GC02M1B_8BIT, 0x37ca, 0x00}, + {GC02M1B_8BIT, 0x37cb, 0x00}, + {GC02M1B_8BIT, 0x37de, 0x00}, + {GC02M1B_8BIT, 0x37df, 0x00}, + {GC02M1B_8BIT, 0x3800, 0x00}, + {GC02M1B_8BIT, 0x3801, 0x00}, + {GC02M1B_8BIT, 0x3802, 0x00}, + {GC02M1B_8BIT, 0x3804, 0x0a}, + {GC02M1B_8BIT, 0x3805, 0x3f}, + {GC02M1B_8BIT, 0x3810, 0x00}, + {GC02M1B_8BIT, 0x3812, 0x00}, + {GC02M1B_8BIT, 0x3823, 0x00}, + {GC02M1B_8BIT, 0x3824, 0x00}, + {GC02M1B_8BIT, 0x3825, 0x00}, + {GC02M1B_8BIT, 0x3826, 0x00}, + {GC02M1B_8BIT, 0x3827, 0x00}, + {GC02M1B_8BIT, 0x382a, 0x04}, + {GC02M1B_8BIT, 0x3a04, 0x06}, + {GC02M1B_8BIT, 0x3a05, 0x14}, + {GC02M1B_8BIT, 0x3a06, 0x00}, + {GC02M1B_8BIT, 0x3a07, 0xfe}, + {GC02M1B_8BIT, 0x3b00, 0x00}, + {GC02M1B_8BIT, 0x3b02, 0x00}, + {GC02M1B_8BIT, 0x3b03, 0x00}, + {GC02M1B_8BIT, 0x3b04, 0x00}, + {GC02M1B_8BIT, 0x3b05, 0x00}, + {GC02M1B_8BIT, 0x3e07, 0x20}, + {GC02M1B_8BIT, 0x4000, 0x08}, + {GC02M1B_8BIT, 0x4001, 0x04}, + {GC02M1B_8BIT, 0x4002, 0x45}, + {GC02M1B_8BIT, 0x4004, 0x08}, + {GC02M1B_8BIT, 0x4005, 0x18}, + {GC02M1B_8BIT, 0x4006, 0x20}, + {GC02M1B_8BIT, 0x4008, 0x24}, + {GC02M1B_8BIT, 0x4009, 0x10}, + {GC02M1B_8BIT, 0x400c, 0x00}, + {GC02M1B_8BIT, 0x400d, 0x00}, + {GC02M1B_8BIT, 0x4058, 0x00}, + {GC02M1B_8BIT, 0x404e, 0x37}, + {GC02M1B_8BIT, 0x404f, 0x8f}, + {GC02M1B_8BIT, 0x4058, 0x00}, + {GC02M1B_8BIT, 0x4101, 0xb2}, + {GC02M1B_8BIT, 0x4303, 0x00}, + {GC02M1B_8BIT, 0x4304, 0x08}, + {GC02M1B_8BIT, 0x4307, 0x31}, + {GC02M1B_8BIT, 0x4311, 0x04}, + {GC02M1B_8BIT, 0x4315, 0x01}, + {GC02M1B_8BIT, 0x4511, 0x05}, + {GC02M1B_8BIT, 0x4512, 0x01}, + {GC02M1B_8BIT, 0x4806, 0x00}, + {GC02M1B_8BIT, 0x4816, 0x52}, + {GC02M1B_8BIT, 0x481f, 0x30}, + {GC02M1B_8BIT, 0x4826, 0x2c}, + {GC02M1B_8BIT, 0x4831, 0x64}, + {GC02M1B_8BIT, 0x4d00, 0x04}, + {GC02M1B_8BIT, 0x4d01, 0x71}, + {GC02M1B_8BIT, 0x4d02, 0xfd}, + {GC02M1B_8BIT, 0x4d03, 0xf5}, + {GC02M1B_8BIT, 0x4d04, 0x0c}, + {GC02M1B_8BIT, 0x4d05, 0xcc}, + {GC02M1B_8BIT, 0x4837, 0x0a}, + {GC02M1B_8BIT, 0x5000, 0x06}, + {GC02M1B_8BIT, 0x5001, 0x01}, + {GC02M1B_8BIT, 0x5003, 0x20}, + {GC02M1B_8BIT, 0x5046, 0x0a}, + {GC02M1B_8BIT, 0x5013, 0x00}, + {GC02M1B_8BIT, 0x5046, 0x0a}, + {GC02M1B_8BIT, 0x5780, 0x1c}, + {GC02M1B_8BIT, 0x5786, 0x20}, + {GC02M1B_8BIT, 0x5787, 0x10}, + {GC02M1B_8BIT, 0x5788, 0x18}, + {GC02M1B_8BIT, 0x578a, 0x04}, + {GC02M1B_8BIT, 0x578b, 0x02}, + {GC02M1B_8BIT, 0x578c, 0x02}, + {GC02M1B_8BIT, 0x578e, 0x06}, + {GC02M1B_8BIT, 0x578f, 0x02}, + {GC02M1B_8BIT, 0x5790, 0x02}, + {GC02M1B_8BIT, 0x5791, 0xff}, + {GC02M1B_8BIT, 0x5842, 0x01}, + {GC02M1B_8BIT, 0x5843, 0x2b}, + {GC02M1B_8BIT, 0x5844, 0x01}, + {GC02M1B_8BIT, 0x5845, 0x92}, + {GC02M1B_8BIT, 0x5846, 0x01}, + {GC02M1B_8BIT, 0x5847, 0x8f}, + {GC02M1B_8BIT, 0x5848, 0x01}, + {GC02M1B_8BIT, 0x5849, 0x0c}, + {GC02M1B_8BIT, 0x5e00, 0x00}, + {GC02M1B_8BIT, 0x5e10, 0x0c}, + {GC02M1B_8BIT, 0x0100, 0x00}, + {GC02M1B_TOK_TERM, 0, 0} +}; + +/* + * 654x496 30fps 17ms VBlanking 2lane 10Bit (Scaling) + */ +static struct gc02m1b_reg const gc02m1b_654x496[] = { + {GC02M1B_8BIT, 0x3501, 0x3d}, + {GC02M1B_8BIT, 0x3502, 0x00}, + {GC02M1B_8BIT, 0x3708, 0xe6}, + {GC02M1B_8BIT, 0x3709, 0xc7}, + {GC02M1B_8BIT, 0x3803, 0x00}, + {GC02M1B_8BIT, 0x3806, 0x07}, + {GC02M1B_8BIT, 0x3807, 0xa3}, + {GC02M1B_8BIT, 0x3808, 0x02}, + {GC02M1B_8BIT, 0x3809, 0x90}, + {GC02M1B_8BIT, 0x380a, 0x01}, + {GC02M1B_8BIT, 0x380b, 0xf0}, + {GC02M1B_8BIT, 0x380c, 0x0a}, + {GC02M1B_8BIT, 0x380d, 0x80}, + {GC02M1B_8BIT, 0x380e, 0x07}, + {GC02M1B_8BIT, 0x380f, 0xc0}, + {GC02M1B_8BIT, 0x3811, 0x08}, + {GC02M1B_8BIT, 0x3813, 0x02}, + {GC02M1B_8BIT, 0x3814, 0x31}, + {GC02M1B_8BIT, 0x3815, 0x31}, + {GC02M1B_8BIT, 0x3820, 0x04}, + {GC02M1B_8BIT, 0x3821, 0x1f}, + {GC02M1B_8BIT, 0x5002, 0x80}, + {GC02M1B_8BIT, 0x0100, 0x01}, + {GC02M1B_TOK_TERM, 0, 0} +}; + +/* + * 1296x976 30fps 17ms VBlanking 2lane 10Bit (Scaling) +*DS from 2592x1952 +*/ +static struct gc02m1b_reg const gc02m1b_1296x976[] = { + {GC02M1B_8BIT, 0x3501, 0x7b}, + {GC02M1B_8BIT, 0x3502, 0x00}, + {GC02M1B_8BIT, 0x3708, 0xe2}, + {GC02M1B_8BIT, 0x3709, 0xc3}, + + {GC02M1B_8BIT, 0x3800, 0x00}, + {GC02M1B_8BIT, 0x3801, 0x00}, + {GC02M1B_8BIT, 0x3802, 0x00}, + {GC02M1B_8BIT, 0x3803, 0x00}, + + {GC02M1B_8BIT, 0x3804, 0x0a}, + {GC02M1B_8BIT, 0x3805, 0x3f}, + {GC02M1B_8BIT, 0x3806, 0x07}, + {GC02M1B_8BIT, 0x3807, 0xA3}, + + {GC02M1B_8BIT, 0x3808, 0x05}, + {GC02M1B_8BIT, 0x3809, 0x10}, + {GC02M1B_8BIT, 0x380a, 0x03}, + {GC02M1B_8BIT, 0x380b, 0xD0}, + + {GC02M1B_8BIT, 0x380c, 0x0a}, + {GC02M1B_8BIT, 0x380d, 0x80}, + {GC02M1B_8BIT, 0x380e, 0x07}, + {GC02M1B_8BIT, 0x380f, 0xc0}, + + {GC02M1B_8BIT, 0x3810, 0x00}, + {GC02M1B_8BIT, 0x3811, 0x10}, + {GC02M1B_8BIT, 0x3812, 0x00}, + {GC02M1B_8BIT, 0x3813, 0x02}, + + {GC02M1B_8BIT, 0x3814, 0x11}, /*X subsample control*/ + {GC02M1B_8BIT, 0x3815, 0x11}, /*Y subsample control*/ + {GC02M1B_8BIT, 0x3820, 0x00}, + {GC02M1B_8BIT, 0x3821, 0x1e}, + {GC02M1B_8BIT, 0x5002, 0x00}, + {GC02M1B_8BIT, 0x5041, 0x84}, /* scale is auto enabled */ + {GC02M1B_8BIT, 0x0100, 0x01}, + {GC02M1B_TOK_TERM, 0, 0} + +}; + + +/* + * 336x256 30fps 17ms VBlanking 2lane 10Bit (Scaling) + DS from 2564x1956 + */ +static struct gc02m1b_reg const gc02m1b_336x256[] = { + {GC02M1B_8BIT, 0x3501, 0x3d}, + {GC02M1B_8BIT, 0x3502, 0x00}, + {GC02M1B_8BIT, 0x3708, 0xe6}, + {GC02M1B_8BIT, 0x3709, 0xc7}, + {GC02M1B_8BIT, 0x3806, 0x07}, + {GC02M1B_8BIT, 0x3807, 0xa3}, + {GC02M1B_8BIT, 0x3808, 0x01}, + {GC02M1B_8BIT, 0x3809, 0x50}, + {GC02M1B_8BIT, 0x380a, 0x01}, + {GC02M1B_8BIT, 0x380b, 0x00}, + {GC02M1B_8BIT, 0x380c, 0x0a}, + {GC02M1B_8BIT, 0x380d, 0x80}, + {GC02M1B_8BIT, 0x380e, 0x07}, + {GC02M1B_8BIT, 0x380f, 0xc0}, + {GC02M1B_8BIT, 0x3811, 0x1E}, + {GC02M1B_8BIT, 0x3814, 0x31}, + {GC02M1B_8BIT, 0x3815, 0x31}, + {GC02M1B_8BIT, 0x3820, 0x04}, + {GC02M1B_8BIT, 0x3821, 0x1f}, + {GC02M1B_8BIT, 0x5002, 0x80}, + {GC02M1B_8BIT, 0x0100, 0x01}, + {GC02M1B_TOK_TERM, 0, 0} +}; + +/* + * 336x256 30fps 17ms VBlanking 2lane 10Bit (Scaling) + DS from 2368x1956 + */ +static struct gc02m1b_reg const gc02m1b_368x304[] = { + {GC02M1B_8BIT, 0x3501, 0x3d}, + {GC02M1B_8BIT, 0x3502, 0x00}, + {GC02M1B_8BIT, 0x3708, 0xe6}, + {GC02M1B_8BIT, 0x3709, 0xc7}, + {GC02M1B_8BIT, 0x3808, 0x01}, + {GC02M1B_8BIT, 0x3809, 0x70}, + {GC02M1B_8BIT, 0x380a, 0x01}, + {GC02M1B_8BIT, 0x380b, 0x30}, + {GC02M1B_8BIT, 0x380c, 0x0a}, + {GC02M1B_8BIT, 0x380d, 0x80}, + {GC02M1B_8BIT, 0x380e, 0x07}, + {GC02M1B_8BIT, 0x380f, 0xc0}, + {GC02M1B_8BIT, 0x3811, 0x80}, + {GC02M1B_8BIT, 0x3814, 0x31}, + {GC02M1B_8BIT, 0x3815, 0x31}, + {GC02M1B_8BIT, 0x3820, 0x04}, + {GC02M1B_8BIT, 0x3821, 0x1f}, + {GC02M1B_8BIT, 0x5002, 0x80}, + {GC02M1B_8BIT, 0x0100, 0x01}, + {GC02M1B_TOK_TERM, 0, 0} +}; + +/* + * gc02m1b_192x160 30fps 17ms VBlanking 2lane 10Bit (Scaling) + DS from 2460x1956 + */ +static struct gc02m1b_reg const gc02m1b_192x160[] = { + {GC02M1B_8BIT, 0x3501, 0x7b}, + {GC02M1B_8BIT, 0x3502, 0x80}, + {GC02M1B_8BIT, 0x3708, 0xe2}, + {GC02M1B_8BIT, 0x3709, 0xc3}, + {GC02M1B_8BIT, 0x3804, 0x0a}, + {GC02M1B_8BIT, 0x3805, 0x3f}, + {GC02M1B_8BIT, 0x3806, 0x07}, + {GC02M1B_8BIT, 0x3807, 0xA3}, + {GC02M1B_8BIT, 0x3808, 0x00}, + {GC02M1B_8BIT, 0x3809, 0xC0}, + {GC02M1B_8BIT, 0x380a, 0x00}, + {GC02M1B_8BIT, 0x380b, 0xA0}, + {GC02M1B_8BIT, 0x380c, 0x0a}, + {GC02M1B_8BIT, 0x380d, 0x80}, + {GC02M1B_8BIT, 0x380e, 0x07}, + {GC02M1B_8BIT, 0x380f, 0xc0}, + {GC02M1B_8BIT, 0x3811, 0x40}, + {GC02M1B_8BIT, 0x3813, 0x00}, + {GC02M1B_8BIT, 0x3814, 0x31}, + {GC02M1B_8BIT, 0x3815, 0x31}, + {GC02M1B_8BIT, 0x3820, 0x04}, + {GC02M1B_8BIT, 0x3821, 0x1f}, + {GC02M1B_8BIT, 0x5002, 0x80}, + {GC02M1B_8BIT, 0x0100, 0x01}, + {GC02M1B_TOK_TERM, 0, 0} +}; + + +static struct gc02m1b_reg const gc02m1b_736x496[] = { + {GC02M1B_8BIT, 0x3501, 0x3d}, + {GC02M1B_8BIT, 0x3502, 0x00}, + {GC02M1B_8BIT, 0x3708, 0xe6}, + {GC02M1B_8BIT, 0x3709, 0xc7}, + {GC02M1B_8BIT, 0x3803, 0x68}, + {GC02M1B_8BIT, 0x3806, 0x07}, + {GC02M1B_8BIT, 0x3807, 0x3b}, + {GC02M1B_8BIT, 0x3808, 0x02}, + {GC02M1B_8BIT, 0x3809, 0xe0}, + {GC02M1B_8BIT, 0x380a, 0x01}, + {GC02M1B_8BIT, 0x380b, 0xf0}, + {GC02M1B_8BIT, 0x380c, 0x0a}, /*hts*/ + {GC02M1B_8BIT, 0x380d, 0x80}, + {GC02M1B_8BIT, 0x380e, 0x07}, /*vts*/ + {GC02M1B_8BIT, 0x380f, 0xc0}, + {GC02M1B_8BIT, 0x3811, 0x08}, + {GC02M1B_8BIT, 0x3813, 0x02}, + {GC02M1B_8BIT, 0x3814, 0x31}, + {GC02M1B_8BIT, 0x3815, 0x31}, + {GC02M1B_8BIT, 0x3820, 0x04}, + {GC02M1B_8BIT, 0x3821, 0x1f}, + {GC02M1B_8BIT, 0x5002, 0x80}, + {GC02M1B_8BIT, 0x0100, 0x01}, + {GC02M1B_TOK_TERM, 0, 0} +}; + +/* +static struct gc02m1b_reg const gc02m1b_736x496[] = { + {GC02M1B_8BIT, 0x3501, 0x7b}, + {GC02M1B_8BIT, 0x3502, 0x00}, + {GC02M1B_8BIT, 0x3708, 0xe6}, + {GC02M1B_8BIT, 0x3709, 0xc3}, + {GC02M1B_8BIT, 0x3803, 0x00}, + {GC02M1B_8BIT, 0x3806, 0x07}, + {GC02M1B_8BIT, 0x3807, 0xa3}, + {GC02M1B_8BIT, 0x3808, 0x02}, + {GC02M1B_8BIT, 0x3809, 0xe0}, + {GC02M1B_8BIT, 0x380a, 0x01}, + {GC02M1B_8BIT, 0x380b, 0xf0}, + {GC02M1B_8BIT, 0x380c, 0x0d}, + {GC02M1B_8BIT, 0x380d, 0xb0}, + {GC02M1B_8BIT, 0x380e, 0x05}, + {GC02M1B_8BIT, 0x380f, 0xf2}, + {GC02M1B_8BIT, 0x3811, 0x08}, + {GC02M1B_8BIT, 0x3813, 0x02}, + {GC02M1B_8BIT, 0x3814, 0x31}, + {GC02M1B_8BIT, 0x3815, 0x31}, + {GC02M1B_8BIT, 0x3820, 0x01}, + {GC02M1B_8BIT, 0x3821, 0x1f}, + {GC02M1B_8BIT, 0x5002, 0x00}, + {GC02M1B_8BIT, 0x0100, 0x01}, + {GC02M1B_TOK_TERM, 0, 0} +}; +*/ +/* + * 976x556 30fps 8.8ms VBlanking 2lane 10Bit (Scaling) + */ +static struct gc02m1b_reg const gc02m1b_976x556[] = { + {GC02M1B_8BIT, 0x3501, 0x7b}, + {GC02M1B_8BIT, 0x3502, 0x00}, + {GC02M1B_8BIT, 0x3708, 0xe2}, + {GC02M1B_8BIT, 0x3709, 0xc3}, + {GC02M1B_8BIT, 0x3803, 0xf0}, + {GC02M1B_8BIT, 0x3806, 0x06}, + {GC02M1B_8BIT, 0x3807, 0xa7}, + {GC02M1B_8BIT, 0x3808, 0x03}, + {GC02M1B_8BIT, 0x3809, 0xd0}, + {GC02M1B_8BIT, 0x380a, 0x02}, + {GC02M1B_8BIT, 0x380b, 0x2C}, + {GC02M1B_8BIT, 0x380c, 0x0a}, + {GC02M1B_8BIT, 0x380d, 0x80}, + {GC02M1B_8BIT, 0x380e, 0x07}, + {GC02M1B_8BIT, 0x380f, 0xc0}, + {GC02M1B_8BIT, 0x3811, 0x10}, + {GC02M1B_8BIT, 0x3813, 0x02}, + {GC02M1B_8BIT, 0x3814, 0x11}, + {GC02M1B_8BIT, 0x3815, 0x11}, + {GC02M1B_8BIT, 0x3820, 0x00}, + {GC02M1B_8BIT, 0x3821, 0x1e}, + {GC02M1B_8BIT, 0x5002, 0x80}, + {GC02M1B_8BIT, 0x0100, 0x01}, + {GC02M1B_TOK_TERM, 0, 0} +}; + +/*DS from 2624x1492*/ +static struct gc02m1b_reg const gc02m1b_1296x736[] = { + {GC02M1B_8BIT, 0x3501, 0x7b}, + {GC02M1B_8BIT, 0x3502, 0x00}, + {GC02M1B_8BIT, 0x3708, 0xe2}, + {GC02M1B_8BIT, 0x3709, 0xc3}, + + {GC02M1B_8BIT, 0x3800, 0x00}, + {GC02M1B_8BIT, 0x3801, 0x00}, + {GC02M1B_8BIT, 0x3802, 0x00}, + {GC02M1B_8BIT, 0x3803, 0x00}, + + {GC02M1B_8BIT, 0x3804, 0x0a}, + {GC02M1B_8BIT, 0x3805, 0x3f}, + {GC02M1B_8BIT, 0x3806, 0x07}, + {GC02M1B_8BIT, 0x3807, 0xA3}, + + {GC02M1B_8BIT, 0x3808, 0x05}, + {GC02M1B_8BIT, 0x3809, 0x10}, + {GC02M1B_8BIT, 0x380a, 0x02}, + {GC02M1B_8BIT, 0x380b, 0xe0}, + + {GC02M1B_8BIT, 0x380c, 0x0a}, + {GC02M1B_8BIT, 0x380d, 0x80}, + {GC02M1B_8BIT, 0x380e, 0x07}, + {GC02M1B_8BIT, 0x380f, 0xc0}, + + {GC02M1B_8BIT, 0x3813, 0xE8}, + + {GC02M1B_8BIT, 0x3814, 0x11}, /*X subsample control*/ + {GC02M1B_8BIT, 0x3815, 0x11}, /*Y subsample control*/ + {GC02M1B_8BIT, 0x3820, 0x00}, + {GC02M1B_8BIT, 0x3821, 0x1e}, + {GC02M1B_8BIT, 0x5002, 0x00}, + {GC02M1B_8BIT, 0x5041, 0x84}, /* scale is auto enabled */ + {GC02M1B_8BIT, 0x0100, 0x01}, + {GC02M1B_TOK_TERM, 0, 0} +}; + +static struct gc02m1b_reg const gc02m1b_1636p_30fps[] = { + {GC02M1B_8BIT, 0x3501, 0x7b}, + {GC02M1B_8BIT, 0x3502, 0x00}, + {GC02M1B_8BIT, 0x3708, 0xe2}, + {GC02M1B_8BIT, 0x3709, 0xc3}, + {GC02M1B_8BIT, 0x3803, 0xf0}, + {GC02M1B_8BIT, 0x3806, 0x06}, + {GC02M1B_8BIT, 0x3807, 0xa7}, + {GC02M1B_8BIT, 0x3808, 0x06}, + {GC02M1B_8BIT, 0x3809, 0x64}, + {GC02M1B_8BIT, 0x380a, 0x04}, + {GC02M1B_8BIT, 0x380b, 0x48}, + {GC02M1B_8BIT, 0x380c, 0x0a}, /*hts*/ + {GC02M1B_8BIT, 0x380d, 0x80}, + {GC02M1B_8BIT, 0x380e, 0x07}, /*vts*/ + {GC02M1B_8BIT, 0x380f, 0xc0}, + {GC02M1B_8BIT, 0x3811, 0x02}, + {GC02M1B_8BIT, 0x3813, 0x02}, + {GC02M1B_8BIT, 0x3814, 0x11}, + {GC02M1B_8BIT, 0x3815, 0x11}, + {GC02M1B_8BIT, 0x3820, 0x00}, + {GC02M1B_8BIT, 0x3821, 0x1e}, + {GC02M1B_8BIT, 0x5002, 0x80}, + {GC02M1B_8BIT, 0x0100, 0x01}, + {GC02M1B_TOK_TERM, 0, 0} +}; + +static struct gc02m1b_reg const gc02m1b_1616x1216_30fps[] = { + {GC02M1B_8BIT, 0x3501, 0x7b}, + {GC02M1B_8BIT, 0x3502, 0x80}, + {GC02M1B_8BIT, 0x3708, 0xe2}, + {GC02M1B_8BIT, 0x3709, 0xc3}, + {GC02M1B_8BIT, 0x3800, 0x00}, /*{3800,3801} Array X start*/ + {GC02M1B_8BIT, 0x3801, 0x08}, /* 04 //{3800,3801} Array X start*/ + {GC02M1B_8BIT, 0x3802, 0x00}, /*{3802,3803} Array Y start*/ + {GC02M1B_8BIT, 0x3803, 0x04}, /* 00 //{3802,3803} Array Y start*/ + {GC02M1B_8BIT, 0x3804, 0x0a}, /*{3804,3805} Array X end*/ + {GC02M1B_8BIT, 0x3805, 0x37}, /* 3b //{3804,3805} Array X end*/ + {GC02M1B_8BIT, 0x3806, 0x07}, /*{3806,3807} Array Y end*/ + {GC02M1B_8BIT, 0x3807, 0x9f}, /* a3 //{3806,3807} Array Y end*/ + {GC02M1B_8BIT, 0x3808, 0x06}, /*{3808,3809} Final output H size*/ + {GC02M1B_8BIT, 0x3809, 0x50}, /*{3808,3809} Final output H size*/ + {GC02M1B_8BIT, 0x380a, 0x04}, /*{380a,380b} Final output V size*/ + {GC02M1B_8BIT, 0x380b, 0xc0}, /*{380a,380b} Final output V size*/ + {GC02M1B_8BIT, 0x380c, 0x0a}, /*{380c,380d} HTS*/ + {GC02M1B_8BIT, 0x380d, 0x80}, /*{380c,380d} HTS*/ + {GC02M1B_8BIT, 0x380e, 0x07}, /*{380e,380f} VTS*/ + {GC02M1B_8BIT, 0x380f, 0xc0}, /* bc //{380e,380f} VTS*/ + {GC02M1B_8BIT, 0x3810, 0x00}, /*{3810,3811} windowing X offset*/ + {GC02M1B_8BIT, 0x3811, 0x10}, /*{3810,3811} windowing X offset*/ + {GC02M1B_8BIT, 0x3812, 0x00}, /*{3812,3813} windowing Y offset*/ + {GC02M1B_8BIT, 0x3813, 0x06}, /*{3812,3813} windowing Y offset*/ + {GC02M1B_8BIT, 0x3814, 0x11}, /*X subsample control*/ + {GC02M1B_8BIT, 0x3815, 0x11}, /*Y subsample control*/ + {GC02M1B_8BIT, 0x3820, 0x00}, /*FLIP/Binnning control*/ + {GC02M1B_8BIT, 0x3821, 0x1e}, /*MIRROR control*/ + {GC02M1B_8BIT, 0x5002, 0x00}, + {GC02M1B_8BIT, 0x5041, 0x84}, + {GC02M1B_8BIT, 0x0100, 0x01}, + {GC02M1B_TOK_TERM, 0, 0} +}; + + +/* + * 1940x1096 30fps 8.8ms VBlanking 2lane 10bit (Scaling) + */ +static struct gc02m1b_reg const gc02m1b_1940x1096[] = { + {GC02M1B_8BIT, 0x3501, 0x7b}, + {GC02M1B_8BIT, 0x3502, 0x00}, + {GC02M1B_8BIT, 0x3708, 0xe2}, + {GC02M1B_8BIT, 0x3709, 0xc3}, + {GC02M1B_8BIT, 0x3803, 0xf0}, + {GC02M1B_8BIT, 0x3806, 0x06}, + {GC02M1B_8BIT, 0x3807, 0xa7}, + {GC02M1B_8BIT, 0x3808, 0x07}, + {GC02M1B_8BIT, 0x3809, 0x94}, + {GC02M1B_8BIT, 0x380a, 0x04}, + {GC02M1B_8BIT, 0x380b, 0x48}, + {GC02M1B_8BIT, 0x380c, 0x0a}, + {GC02M1B_8BIT, 0x380d, 0x80}, + {GC02M1B_8BIT, 0x380e, 0x07}, + {GC02M1B_8BIT, 0x380f, 0xc0}, + {GC02M1B_8BIT, 0x3811, 0x02}, + {GC02M1B_8BIT, 0x3813, 0x02}, + {GC02M1B_8BIT, 0x3814, 0x11}, + {GC02M1B_8BIT, 0x3815, 0x11}, + {GC02M1B_8BIT, 0x3820, 0x00}, + {GC02M1B_8BIT, 0x3821, 0x1e}, + {GC02M1B_8BIT, 0x5002, 0x80}, + {GC02M1B_8BIT, 0x0100, 0x01}, + {GC02M1B_TOK_TERM, 0, 0} +}; + +static struct gc02m1b_reg const gc02m1b_2592x1456_30fps[] = { + {GC02M1B_8BIT, 0x3501, 0x7b}, + {GC02M1B_8BIT, 0x3502, 0x00}, + {GC02M1B_8BIT, 0x3708, 0xe2}, + {GC02M1B_8BIT, 0x3709, 0xc3}, + {GC02M1B_8BIT, 0x3800, 0x00}, + {GC02M1B_8BIT, 0x3801, 0x00}, + {GC02M1B_8BIT, 0x3802, 0x00}, + {GC02M1B_8BIT, 0x3803, 0xf0}, + {GC02M1B_8BIT, 0x3804, 0x0a}, + {GC02M1B_8BIT, 0x3805, 0x3f}, + {GC02M1B_8BIT, 0x3806, 0x06}, + {GC02M1B_8BIT, 0x3807, 0xa4}, + {GC02M1B_8BIT, 0x3808, 0x0a}, + {GC02M1B_8BIT, 0x3809, 0x20}, + {GC02M1B_8BIT, 0x380a, 0x05}, + {GC02M1B_8BIT, 0x380b, 0xb0}, + {GC02M1B_8BIT, 0x380c, 0x0a}, + {GC02M1B_8BIT, 0x380d, 0x80}, + {GC02M1B_8BIT, 0x380e, 0x07}, + {GC02M1B_8BIT, 0x380f, 0xc0}, + {GC02M1B_8BIT, 0x3811, 0x10}, + {GC02M1B_8BIT, 0x3813, 0x00}, + {GC02M1B_8BIT, 0x3814, 0x11}, + {GC02M1B_8BIT, 0x3815, 0x11}, + {GC02M1B_8BIT, 0x3820, 0x00}, + {GC02M1B_8BIT, 0x3821, 0x1e}, + {GC02M1B_8BIT, 0x5002, 0x00}, + {GC02M1B_TOK_TERM, 0, 0} +}; + +static struct gc02m1b_reg const gc02m1b_2576x1456_30fps[] = { + {GC02M1B_8BIT, 0x3501, 0x7b}, + {GC02M1B_8BIT, 0x3502, 0x00}, + {GC02M1B_8BIT, 0x3708, 0xe2}, + {GC02M1B_8BIT, 0x3709, 0xc3}, + {GC02M1B_8BIT, 0x3800, 0x00}, + {GC02M1B_8BIT, 0x3801, 0x00}, + {GC02M1B_8BIT, 0x3802, 0x00}, + {GC02M1B_8BIT, 0x3803, 0xf0}, + {GC02M1B_8BIT, 0x3804, 0x0a}, + {GC02M1B_8BIT, 0x3805, 0x3f}, + {GC02M1B_8BIT, 0x3806, 0x06}, + {GC02M1B_8BIT, 0x3807, 0xa4}, + {GC02M1B_8BIT, 0x3808, 0x0a}, + {GC02M1B_8BIT, 0x3809, 0x10}, + {GC02M1B_8BIT, 0x380a, 0x05}, + {GC02M1B_8BIT, 0x380b, 0xb0}, + {GC02M1B_8BIT, 0x380c, 0x0a}, + {GC02M1B_8BIT, 0x380d, 0x80}, + {GC02M1B_8BIT, 0x380e, 0x07}, + {GC02M1B_8BIT, 0x380f, 0xc0}, + {GC02M1B_8BIT, 0x3811, 0x18}, + {GC02M1B_8BIT, 0x3813, 0x00}, + {GC02M1B_8BIT, 0x3814, 0x11}, + {GC02M1B_8BIT, 0x3815, 0x11}, + {GC02M1B_8BIT, 0x3820, 0x00}, + {GC02M1B_8BIT, 0x3821, 0x1e}, + {GC02M1B_8BIT, 0x5002, 0x00}, + {GC02M1B_TOK_TERM, 0, 0} +}; + +/* + * 2592x1944 30fps 0.6ms VBlanking 2lane 10Bit + */ +static struct gc02m1b_reg const gc02m1b_2592x1944_30fps[] = { + {GC02M1B_8BIT, 0x3501, 0x7b}, + {GC02M1B_8BIT, 0x3502, 0x00}, + {GC02M1B_8BIT, 0x3708, 0xe2}, + {GC02M1B_8BIT, 0x3709, 0xc3}, + {GC02M1B_8BIT, 0x3803, 0x00}, + {GC02M1B_8BIT, 0x3806, 0x07}, + {GC02M1B_8BIT, 0x3807, 0xa3}, + {GC02M1B_8BIT, 0x3808, 0x0a}, + {GC02M1B_8BIT, 0x3809, 0x20}, + {GC02M1B_8BIT, 0x380a, 0x07}, + {GC02M1B_8BIT, 0x380b, 0x98}, + {GC02M1B_8BIT, 0x380c, 0x0a}, + {GC02M1B_8BIT, 0x380d, 0x80}, + {GC02M1B_8BIT, 0x380e, 0x07}, + {GC02M1B_8BIT, 0x380f, 0xc0}, + {GC02M1B_8BIT, 0x3811, 0x10}, + {GC02M1B_8BIT, 0x3813, 0x00}, + {GC02M1B_8BIT, 0x3814, 0x11}, + {GC02M1B_8BIT, 0x3815, 0x11}, + {GC02M1B_8BIT, 0x3820, 0x00}, + {GC02M1B_8BIT, 0x3821, 0x1e}, + {GC02M1B_8BIT, 0x5002, 0x00}, + {GC02M1B_8BIT, 0x0100, 0x01}, + {GC02M1B_TOK_TERM, 0, 0} +}; + +/* + * 11:9 Full FOV Output, expected FOV Res: 2346x1920 + * ISP Effect Res: 1408x1152 + * Sensor out: 1424x1168, DS From: 2380x1952 + * + * WA: Left Offset: 8, Hor scal: 64 + */ +static struct gc02m1b_reg const gc02m1b_1424x1168_30fps[] = { + {GC02M1B_8BIT, 0x3501, 0x3b}, /* long exposure[15:8] */ + {GC02M1B_8BIT, 0x3502, 0x80}, /* long exposure[7:0] */ + {GC02M1B_8BIT, 0x3708, 0xe2}, + {GC02M1B_8BIT, 0x3709, 0xc3}, + {GC02M1B_8BIT, 0x3800, 0x00}, /* TIMING_X_ADDR_START */ + {GC02M1B_8BIT, 0x3801, 0x50}, /* 80 */ + {GC02M1B_8BIT, 0x3802, 0x00}, /* TIMING_Y_ADDR_START */ + {GC02M1B_8BIT, 0x3803, 0x02}, /* 2 */ + {GC02M1B_8BIT, 0x3804, 0x09}, /* TIMING_X_ADDR_END */ + {GC02M1B_8BIT, 0x3805, 0xdd}, /* 2525 */ + {GC02M1B_8BIT, 0x3806, 0x07}, /* TIMING_Y_ADDR_END */ + {GC02M1B_8BIT, 0x3807, 0xa1}, /* 1953 */ + {GC02M1B_8BIT, 0x3808, 0x05}, /* TIMING_X_OUTPUT_SIZE */ + {GC02M1B_8BIT, 0x3809, 0x90}, /* 1424 */ + {GC02M1B_8BIT, 0x380a, 0x04}, /* TIMING_Y_OUTPUT_SIZE */ + {GC02M1B_8BIT, 0x380b, 0x90}, /* 1168 */ + {GC02M1B_8BIT, 0x380c, 0x0a}, /* TIMING_HTS */ + {GC02M1B_8BIT, 0x380d, 0x80}, + {GC02M1B_8BIT, 0x380e, 0x07}, /* TIMING_VTS */ + {GC02M1B_8BIT, 0x380f, 0xc0}, + {GC02M1B_8BIT, 0x3810, 0x00}, /* TIMING_ISP_X_WIN */ + {GC02M1B_8BIT, 0x3811, 0x02}, /* 2 */ + {GC02M1B_8BIT, 0x3812, 0x00}, /* TIMING_ISP_Y_WIN */ + {GC02M1B_8BIT, 0x3813, 0x00}, /* 0 */ + {GC02M1B_8BIT, 0x3814, 0x11}, /* TIME_X_INC */ + {GC02M1B_8BIT, 0x3815, 0x11}, /* TIME_Y_INC */ + {GC02M1B_8BIT, 0x3820, 0x00}, + {GC02M1B_8BIT, 0x3821, 0x1e}, + {GC02M1B_8BIT, 0x5002, 0x00}, + {GC02M1B_8BIT, 0x5041, 0x84}, /* scale is auto enabled */ + {GC02M1B_8BIT, 0x0100, 0x01}, + {GC02M1B_TOK_TERM, 0, 0} +}; + +/* + * 3:2 Full FOV Output, expected FOV Res: 2560x1706 + * ISP Effect Res: 720x480 + * Sensor out: 736x496, DS From 2616x1764 + */ +static struct gc02m1b_reg const gc02m1b_736x496_30fps[] = { + {GC02M1B_8BIT, 0x3501, 0x3b}, /* long exposure[15:8] */ + {GC02M1B_8BIT, 0x3502, 0x80}, /* long exposure[7:0] */ + {GC02M1B_8BIT, 0x3708, 0xe2}, + {GC02M1B_8BIT, 0x3709, 0xc3}, + {GC02M1B_8BIT, 0x3800, 0x00}, /* TIMING_X_ADDR_START */ + {GC02M1B_8BIT, 0x3801, 0x02}, /* 2 */ + {GC02M1B_8BIT, 0x3802, 0x00}, /* TIMING_Y_ADDR_START */ + {GC02M1B_8BIT, 0x3803, 0x62}, /* 98 */ + {GC02M1B_8BIT, 0x3804, 0x0a}, /* TIMING_X_ADDR_END */ + {GC02M1B_8BIT, 0x3805, 0x3b}, /* 2619 */ + {GC02M1B_8BIT, 0x3806, 0x07}, /* TIMING_Y_ADDR_END */ + {GC02M1B_8BIT, 0x3807, 0x43}, /* 1859 */ + {GC02M1B_8BIT, 0x3808, 0x02}, /* TIMING_X_OUTPUT_SIZE */ + {GC02M1B_8BIT, 0x3809, 0xe0}, /* 736 */ + {GC02M1B_8BIT, 0x380a, 0x01}, /* TIMING_Y_OUTPUT_SIZE */ + {GC02M1B_8BIT, 0x380b, 0xf0}, /* 496 */ + {GC02M1B_8BIT, 0x380c, 0x0a}, /* TIMING_HTS */ + {GC02M1B_8BIT, 0x380d, 0x80}, + {GC02M1B_8BIT, 0x380e, 0x07}, /* TIMING_VTS */ + {GC02M1B_8BIT, 0x380f, 0xc0}, + {GC02M1B_8BIT, 0x3810, 0x00}, /* TIMING_ISP_X_WIN */ + {GC02M1B_8BIT, 0x3811, 0x02}, /* 2 */ + {GC02M1B_8BIT, 0x3812, 0x00}, /* TIMING_ISP_Y_WIN */ + {GC02M1B_8BIT, 0x3813, 0x00}, /* 0 */ + {GC02M1B_8BIT, 0x3814, 0x11}, /* TIME_X_INC */ + {GC02M1B_8BIT, 0x3815, 0x11}, /* TIME_Y_INC */ + {GC02M1B_8BIT, 0x3820, 0x00}, + {GC02M1B_8BIT, 0x3821, 0x1e}, + {GC02M1B_8BIT, 0x5002, 0x00}, + {GC02M1B_8BIT, 0x5041, 0x84}, /* scale is auto enabled */ + {GC02M1B_8BIT, 0x0100, 0x01}, + {GC02M1B_TOK_TERM, 0, 0} +}; + +static struct gc02m1b_reg const gc02m1b_2576x1936_30fps[] = { + {GC02M1B_8BIT, 0x3501, 0x7b}, + {GC02M1B_8BIT, 0x3502, 0x00}, + {GC02M1B_8BIT, 0x3708, 0xe2}, + {GC02M1B_8BIT, 0x3709, 0xc3}, + {GC02M1B_8BIT, 0x3803, 0x00}, + {GC02M1B_8BIT, 0x3806, 0x07}, + {GC02M1B_8BIT, 0x3807, 0xa3}, + {GC02M1B_8BIT, 0x3808, 0x0a}, + {GC02M1B_8BIT, 0x3809, 0x10}, + {GC02M1B_8BIT, 0x380a, 0x07}, + {GC02M1B_8BIT, 0x380b, 0x90}, + {GC02M1B_8BIT, 0x380c, 0x0a}, + {GC02M1B_8BIT, 0x380d, 0x80}, + {GC02M1B_8BIT, 0x380e, 0x07}, + {GC02M1B_8BIT, 0x380f, 0xc0}, + {GC02M1B_8BIT, 0x3811, 0x18}, + {GC02M1B_8BIT, 0x3813, 0x00}, + {GC02M1B_8BIT, 0x3814, 0x11}, + {GC02M1B_8BIT, 0x3815, 0x11}, + {GC02M1B_8BIT, 0x3820, 0x00}, + {GC02M1B_8BIT, 0x3821, 0x1e}, + {GC02M1B_8BIT, 0x5002, 0x00}, + {GC02M1B_8BIT, 0x0100, 0x01}, + {GC02M1B_TOK_TERM, 0, 0} +}; + +struct gc02m1b_resolution gc02m1b_res_preview[] = { + { + .desc = "gc02m1b_736x496_30fps", + .width = 736, + .height = 496, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc02m1b_736x496_30fps, + }, + { + .desc = "gc02m1b_1616x1216_30fps", + .width = 1616, + .height = 1216, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc02m1b_1616x1216_30fps, + }, + { + .desc = "gc02m1b_5M_30fps", + .width = 2576, + .height = 1456, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc02m1b_2576x1456_30fps, + }, + { + .desc = "gc02m1b_5M_30fps", + .width = 2576, + .height = 1936, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc02m1b_2576x1936_30fps, + }, +}; +#define N_RES_PREVIEW (ARRAY_SIZE(gc02m1b_res_preview)) + +struct gc02m1b_resolution gc02m1b_res_still[] = { + { + .desc = "gc02m1b_736x496_30fps", + .width = 736, + .height = 496, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc02m1b_736x496_30fps, + }, + { + .desc = "gc02m1b_1424x1168_30fps", + .width = 1424, + .height = 1168, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc02m1b_1424x1168_30fps, + }, + { + .desc = "gc02m1b_1616x1216_30fps", + .width = 1616, + .height = 1216, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc02m1b_1616x1216_30fps, + }, + { + .desc = "gc02m1b_5M_30fps", + .width = 2592, + .height = 1456, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc02m1b_2592x1456_30fps, + }, + { + .desc = "gc02m1b_5M_30fps", + .width = 2592, + .height = 1944, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc02m1b_2592x1944_30fps, + }, +}; +#define N_RES_STILL (ARRAY_SIZE(gc02m1b_res_still)) + +struct gc02m1b_resolution gc02m1b_res_video[] = { + { + .desc = "gc02m1b_736x496_30fps", + .width = 736, + .height = 496, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 1, + .regs = gc02m1b_736x496, + }, + { + .desc = "gc02m1b_336x256_30fps", + .width = 336, + .height = 256, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 1, + .regs = gc02m1b_336x256, + }, + { + .desc = "gc02m1b_368x304_30fps", + .width = 368, + .height = 304, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 1, + .regs = gc02m1b_368x304, + }, + { + .desc = "gc02m1b_192x160_30fps", + .width = 192, + .height = 160, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 1, + .regs = gc02m1b_192x160, + }, + { + .desc = "gc02m1b_1296x736_30fps", + .width = 1296, + .height = 736, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 0, + .regs = gc02m1b_1296x736, + }, + { + .desc = "gc02m1b_1296x976_30fps", + .width = 1296, + .height = 976, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 0, + .regs = gc02m1b_1296x976, + }, + { + .desc = "gc02m1b_1636P_30fps", + .width = 1636, + .height = 1096, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc02m1b_1636p_30fps, + }, + { + .desc = "gc02m1b_1080P_30fps", + .width = 1940, + .height = 1096, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc02m1b_1940x1096, + }, + { + .desc = "gc02m1b_5M_30fps", + .width = 2592, + .height = 1456, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc02m1b_2592x1456_30fps, + }, + { + .desc = "gc02m1b_5M_30fps", + .width = 2592, + .height = 1944, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc02m1b_2592x1944_30fps, + }, +}; + +#define N_RES_VIDEO (ARRAY_SIZE(gc02m1b_res_video)) + +static struct gc02m1b_resolution *gc02m1b_res = gc02m1b_res_preview; +static unsigned long N_RES = N_RES_PREVIEW; +#endif +#endif diff --git a/drivers/GC5035/3aconfig_GC5035.json b/drivers/GC5035/3aconfig_GC5035.json new file mode 100644 index 0000000..a3a141d --- /dev/null +++ b/drivers/GC5035/3aconfig_GC5035.json @@ -0,0 +1,517 @@ +{ + "root" : [ + { + "classname" : "Aev1", + "enable" : false + }, + { + "classname" : "Aev2", + "enable" : true, + "motionThreshold" : 0.5, + "roiWeight" : 0.6, + "motionFilter" : 0.5, + "maxSensorAgain" : 15.5, + "maxSensorDgain" : 1, + "maxIspDgain" : 2.5, + "setPoint" : 50, + "roi_start" : 8, + "roi_end" : 24, + "roi_weight" : 0.5 + }, + { + "classname" : "Aehdr", + "enable" : false, + "motionThreshold" : 0.5, + "roi_start" : 8, + "roi_end" : 24, + "roi_weight" : 0.5, + "faceWeight" : 0.6, + "motionFilter" : 0.5, + "maxSensorAgain" : 15.5, + "maxSensorDgain" : 1, + "maxIspDgain" : 12, + "setPoint" : 30 + }, + { + "classname" : "AdaptiveAe", + "enable" : false, + "motionThreshold" : 0.7, + "roi_start" : 8, + "roi_end" : 24, + "roi_weight" : 0.5, + "faceWeight" : 0.6, + "motionFilter" : 0.5, + "targetFilter" : 0.5, + "wdrContrast.min" : 10, + "wdrContrast.max" : 110, + "lowlight" : { + "linear_repress" : [1, 0.8, 0.6, 0.4, 0.4], + "linear_gain" : [4, 8, 16, 32, 100], + "hdr_repress" : [1, 0.8, 0.8, 0.8, 0.8], + "hdr_gain" : [4, 8, 16, 32, 100] + }, + "maxSensorAgain" : 15.5, + "maxSensorDgain" : 1, + "maxIspDgain" : 12, + "setPoint" : 50 + }, + { + "classname" : "Awbv2", + "enable" : true, + "illuorder" : "A, D50, D65, D75, TL84, F12, CWF", + "indoor" : [1, 1, 1, 1, 1, 1, 1], + "outdoor" : [1, 1, 1, 1, 1, 1, 1], + "transition" : [1, 1, 1, 1, 1, 1, 1], + "avg" : 0 + }, + { + "classname" : "IspController", + "enable" : true + }, + { + "classname" : "AutoHdr", + "enable" : false + }, + { + "classname" : "DciHist", + "enable" : false, + "gaussMeanPos" : 64, + "gaussSigmaPos" : 128, + "gaussAmpPos" : 1, + "gaussMeanNeg" : 0, + "gaussSigmaNeg" : 128, + "gaussAmpNeg" : 1 + }, + { + "classname" : "SensorController", + "enable" : true + }, + { + "classname" : "AGamma64", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "curve" : [ + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [73, 113, 147, 176, 203, 228, 251, 273, 295, 315, 335, 354, 372, 390, 407, 425, 441, 457, 473, 489, 504, 519, 534, 549, 563, 577, 591, 605, 619, 632, 646, 659, 672, 685, 697, 710, 722, 735, 747, 759, 771, 783, 794, 806, 818, 829, 840, 852, 863, 874, 885, 896, 907, 918, 928, 939, 950, 960, 971, 981, 991, 1002, 1012, 1023], + [18, 35, 53, 70, 86, 103, 120, 136, 153, 169, 186, 202, 219, 235, 251, 267, 283, 300, 316, 332, 348, 364, 380, 396, 412, 428, 444, 460, 476, 491, 507, 523, 539, 555, 571, 586, 602, 618, 634, 649, 665, 681, 696, 712, 728, 743, 759, 775, 790, 806, 821, 837, 853, 868, 884, 899, 915, 930, 946, 961, 977, 992, 1008, 1023] + ] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "curve" : [ + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [73, 113, 147, 176, 203, 228, 251, 273, 295, 315, 335, 354, 372, 390, 407, 425, 441, 457, 473, 489, 504, 519, 534, 549, 563, 577, 591, 605, 619, 632, 646, 659, 672, 685, 697, 710, 722, 735, 747, 759, 771, 783, 794, 806, 818, 829, 840, 852, 863, 874, 885, 896, 907, 918, 928, 939, 950, 960, 971, 981, 991, 1002, 1012, 1023], + [73, 113, 147, 176, 203, 228, 251, 273, 295, 315, 335, 354, 372, 390, 407, 425, 441, 457, 473, 489, 504, 519, 534, 549, 563, 577, 591, 605, 619, 632, 646, 659, 672, 685, 697, 710, 722, 735, 747, 759, 771, 783, 794, 806, 818, 829, 840, 852, 863, 874, 885, 896, 907, 918, 928, 939, 950, 960, 971, 981, 991, 1002, 1012, 1023] + ] + } + ] + }, + { + "classname" : "ACproc", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "contrast" : [1, 1, 1, 1, 1, 1], + "brightness" : [0, 0, 0, 0, 0], + "saturation" : [1, 1, 1, 1, 1, 1], + "hue" : [0, 0, 0, 0, 0, 0], + "chromaout" : [2, 2, 2, 2, 2, 2], + "lumain" : [2, 2, 2, 2, 2, 2], + "lumaout" : [2, 2, 2, 2, 2, 2] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "contrast" : [1, 1, 1, 1, 1, 1], + "brightness" : [0, 0, 0, 0, 0], + "saturation" : [1, 1, 1, 1, 1, 1], + "hue" : [0, 0, 0, 0, 0, 0], + "chromaout" : [2, 2, 2, 2, 2, 2], + "lumain" : [2, 2, 2, 2, 2, 2], + "lumaout" : [2, 2, 2, 2, 2, 2] + } + ] + }, + { + "classname" : "Aee", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "strength" : [100, 100, 100, 100, 100, 100], + "srcStrength" : [1, 1, 1, 1, 1, 1], + "yup" : [5000, 5000, 5000, 5000, 5000, 5000], + "ydown" : [5000, 5000, 5000, 5000, 5000, 5000], + "uvgain" : [0, 0, 0, 0, 0, 0], + "edgegain" : [2000, 2000, 2000, 1000, 500, 200] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "strength" : [100, 100, 100, 100, 100, 100], + "srcStrength" : [1, 1, 1, 1, 1, 1], + "yup" : [5000, 5000, 5000, 5000, 5000, 5000], + "ydown" : [8000, 8000, 5000, 5000, 5000, 5000], + "uvgain" : [0, 0, 0, 0, 0, 0], + "edgegain" : [2000, 2000, 2000, 1500, 600, 200] + } + ] + }, + { + "classname" : "ACa", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enableCA" : [0, 0, 0, 0, 0, 0], + "enableDCI" : [1, 1, 1, 1, 0, 0], + "gains" : [1, 2, 4, 8, 16, 32], + "curveCA" : [ + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024] + ], + "curveDCI" : [ + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1023, 1023], + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1028, 1023], + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1028, 1023], + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1028, 1023], + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1028, 1023], + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1028, 1023] + ] + }, + { + "hdr" : true, + "enableCA" : [0, 0, 1, 1, 1, 1], + "enableDCI" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "curveCA" : [ + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024] + ], + "curveDCI" : [ + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022], + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022], + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022], + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022], + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022], + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022] + ] + } + ] + }, + { + "classname" : "ADmsc2", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "demoire_enable" : true, + "demoire_area_thr" : 3, + "demoire_sat_shrink" : 5, + "demoire_r2" : 256, + "demoire_r1" : 0, + "demoire_t2_shift" : 2, + "demoire_t1" : 180, + "demoire_edge_r2" : 256, + "demoire_edge_r1" : 20, + "demoire_edge_t2_shift" : 4, + "demoire_edge_t1" :20, + "depurple_enable" : true, + "depurple_red_sat" : true, + "depurple_blue_sat" : true, + "depurple_sat_shrink" : 8, + "depurple_thr" : 8, + "skin_enable" : false, + "cb_thr_max_2047" : 10, + "cb_thr_min_2047" : 8, + "cr_thr_max_2047" : 10, + "cr_thr_min_2047" : 8, + "y_thr_max_2047" : 10, + "y_thr_min_2047" : 8, + "tables" : [ + { + "hdr" : false, + "gains" : [1, 2, 4, 8, 16, 32], + "enableSharpen" : [1, 1, 1, 1, 1, 1], + "enableSharpenLine" : [0, 0, 0, 0, 0, 0], + "facblack" : [10, 10, 10, 10, 10, 10], + "facwhite" : [10, 10, 10, 10, 10, 10], + "maxblack" : [20, 20, 20, 20, 20, 20], + "maxwhite" : [20, 20, 20, 20, 20, 20], + "t1" : [0, 0, 0, 0, 0, 0], + "t2" : [0, 0, 0, 0, 0, 0], + "t3" : [0, 0, 0, 0, 0, 0], + "t4" : [0, 0, 0, 0, 0, 0], + "r1" : [0, 0, 0, 0, 0, 0], + "r2" : [128, 128, 128, 128, 128, 128], + "r3" : [256, 256, 256, 256, 256, 256], + "gdenoise" : [0, 0, 0, 0, 0, 0], + "gsharpen" : [16, 16, 16, 16, 16, 16], + "sharpen_line_shift2" : [6, 6, 6, 6, 6, 6], + "sharpen_line_shift1" : [5, 5, 5, 5, 5, 5], + "sharpen_line_t1" : [1000, 1000, 1000, 1000, 1000, 1000], + "sharpen_line_strength" : [100, 100, 100, 100, 100, 100], + "sharpen_line_r2" : [200, 200, 200, 200, 200, 200], + "sharpen_line_r1" : [5, 5, 5, 5, 5, 5] + }, + { + "hdr" : true, + "gains" : [1, 2, 4, 8, 16, 32], + "enableSharpen" : [0, 0, 0, 0, 0, 0], + "enableSharpenLine" : [0, 0, 0, 0, 0, 0], + "facblack" : [200, 200, 100, 50, 20, 20], + "facwhite" : [200, 200, 150, 80, 40, 20], + "maxblack" : [200, 200, 100, 100, 100, 100], + "maxwhite" : [200, 200, 200, 200, 200, 200], + "t1" : [0, 0, 0, 0, 0, 0], + "t2" : [0, 0, 0, 0, 0, 0], + "t3" : [0, 0, 0, 0, 0, 0], + "t4" : [0, 0, 0, 0, 0, 0], + "r1" : [0, 0, 0, 0, 0, 0], + "r2" : [128, 128, 128, 128, 128, 128], + "r3" : [256, 256, 256, 256, 256, 256], + "gdenoise" : [0, 0, 0, 0, 0, 0], + "gsharpen" : [16, 16, 16, 16, 16, 16], + "sharpen_line_shift2" : [6, 6, 6, 6, 6, 6], + "sharpen_line_shift1" : [5, 5, 5, 5, 5, 5], + "sharpen_line_t1" : [1000, 1000, 1000, 1000, 1000, 1000], + "sharpen_line_strength" : [100, 100, 100, 100, 100, 100], + "sharpen_line_r2" : [200, 200, 200, 200, 200, 200], + "sharpen_line_r1" : [5, 5, 5, 5, 5, 5] + } + ] + }, + { + "classname" : "AWdr4", + "forcecreate" : true, + "enable" : false, + "disable" : true, + "backlight" : true, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "backlight" : [0, 0.1, 0.2, 0.3, 0.4, 0.45], + "strength" : [128, 128, 128, 128, 128, 128], + "highStrength" : [20, 20, 20, 90, 90, 90], + "lowStrength" : [4, 8, 16, 24, 45, 64], + "globalStrength" : [0, 0, 0, 0, 0, 0], + "contrast" : [800, 800, 800, 800, 800, 800], + "flatStrength" : [0, 0, 0, 0, 0, 0], + "flatThreshold" : [0, 0, 0, 0, 0, 0] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "backlight" : [0, 0.1, 0.2, 0.3, 0.4, 0.45], + "strength" : [128, 128, 128, 128, 128, 128], + "highStrength" : [20, 20, 20, 90, 90, 90], + "lowStrength" : [4, 8, 16, 24, 45, 64], + "globalStrength" : [0, 0, 0, 0, 0, 0], + "contrast" : [800, 800, 800, 800, 800, 800], + "flatStrength" : [0, 0, 0, 0, 0, 0], + "flatThreshold" : [0, 0, 0, 0, 0, 0] + } + ], + "entropy_slope" : 200, + "entropy_base" : 700, + "entropy" : [0, 0, 0, 2, 3, 6, 11, 22, 39, 67, 111, 177, 227, 266, 321, 355, 377, 355, 221, 0], + "gamma_down" : [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 9, 16, 36, 64, 136, 256, 576, 1023], + "gamma_up" : [0, 283121, 330313, 377512, 424723, 471961, 519250, 566650, 614235, 662241, 711077, 761540, 792420, 815280, 849436, 875575, 913530, 948975, 1002792, 1048575], + "?gamma_up" : [0, 1024, 34837, 56737, 82912, 116814, 162079, 223337, 306767, 420749, 576707, 735048, 745499, 755950, 776852, 797754, 839557, 881361, 964968, 1048575], + "gamma_pre" : [0, 31514, 36815, 42173, 47646, 53350, 59514, 66602, 75530, 88145, 108135, 142869, 175428, 207095, 269144, 330303, 442139, 571475, 810472, 1048575] + }, + { + "classname" : "A3dnrv3", + "forcecreate" : false, + "enable" : false, + "disable" : false, + "autonoiseLevel": true, + "tnr_en" : false, + "nlm_en" : true, + "tables" : [ + { + "hdr" : false, + "enable" : [0, 0, 0, 0, 0, 0, 0], + "gains" : [1, 2, 4, 8, 16, 32], + "filterLen" : [100, 150, 200, 300, 400, 500], + "filterLen2" : [10, 10, 10, 10, 10, 10], + "motionSlope" : [1, 1, 1, 1, 1, 1], + "noiseLevel" : [25, 40, 60, 80, 100, 120], + "sadweight" : [8, 8, 8, 8, 8, 8], + "motionInvFactor" : [20000, 20000, 20000, 20000, 20000, 20000], + "noisemodel_a" : [0.45071, 0.85596, 1.561850, 2.219000, 3.9409, 5.2362], + "noisemodel_b" : [0.000065, 9.7098, 140.351654, 219.965805, 284.8835, 344.9119], + "autoStrength" : [1.5, 1.5, 1.5, 1.5, 1.5, 1.5], + "motion_dilate_en" : [1, 1, 1, 1, 1, 1], + "motion_erode_en" : [1, 1, 1, 1, 1, 1], + "pregamma_en" : [1, 1, 1, 1, 1, 1], + "strength" : [120, 120, 120, 120, 120, 120], + "range_h" : [7, 7, 7, 7, 7, 7], + "range_v" : [3, 3, 3, 3, 3, 3], + "dialte_h" : [3, 3, 3, 3, 3, 3], + "preweight" : [8, 8, 8, 8, 8, 8], + "noise_thresh_factor" : [2, 2, 2, 2, 2, 2], + "moving_pixel_thresh" : [0.6, 0.6, 0.6, 0.6, 0.6, 0.6] + }, + { + "hdr" : true, + "enable" : [0, 0, 0, 0, 0, 0, 0], + "gains" : [1, 2, 4, 8, 16, 32], + "filterLen" : [100, 150, 200, 300, 400, 500], + "filterLen2" : [10, 10, 10, 10, 10, 10], + "motionSlope" : [1, 1, 1, 1, 1, 1], + "noiseLevel" : [25, 40, 60, 80, 100, 120], + "sadweight" : [8, 8, 8, 8, 8, 8], + "motionInvFactor" : [20000, 20000, 20000, 20000, 20000, 20000], + "noisemodel_a" : [0.45071, 0.85596, 1.561850, 2.219000, 3.9409, 5.2362], + "noisemodel_b" : [0.000065, 9.7098, 140.351654, 219.965805, 284.8835, 344.9119], + "autoStrength" : [1.5, 1.5, 1.5, 1.5, 1.5, 1.5], + "motion_dilate_en" : [1, 1, 1, 1, 1, 1], + "motion_erode_en" : [1, 1, 1, 1, 1, 1], + "pregamma_en" : [1, 1, 1, 1, 1, 1], + "strength" : [120, 120, 120, 120, 120, 120], + "range_h" : [7, 7, 7, 7, 7, 7], + "range_v" : [3, 3, 3, 3, 3, 3], + "dialte_h" : [3, 3, 3, 3, 3, 3], + "preweight" : [8, 8, 8, 8, 8, 8], + "noise_thresh_factor" : [2, 2, 2, 2, 2, 2], + "moving_pixel_thresh" : [0.6, 0.6, 0.6, 0.6, 0.6, 0.6] + } + ] + }, + { + "classname" : "A2dnrv5", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 12, 16, 20, 24, 32, 40], + "strength" : [1, 1, 1, 1, 1, 1, 2, 2, 2, 2], + "sigma" : [5, 5, 5, 8, 8, 8, 11, 11, 11, 14], + "blendstatic" : [90, 90, 90, 90, 90, 90, 90, 35, 35, 40], + "blendmotion" : [100, 100, 100, 100, 100, 100, 100, 100, 100, 100] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 12, 16, 20, 24, 32, 40], + "strength" : [1, 1, 1, 1, 1, 1, 2, 2, 2, 2], + "sigma" : [5, 5, 5, 8, 8, 8, 11, 11, 11, 14], + "blendstatic" : [90, 90, 90, 90, 90, 90, 90, 35, 35, 40], + "blendmotion" : [100, 100, 100, 100, 100, 100, 100, 100, 100, 100] + } + ] + }, + { + "classname" : "ADpf", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 12, 16, 20, 24, 32, 40], + "gradient" : [0.1, 0.2, 0.4, 0.7, 1, 1.5, 2, 2.5, 3, 3.5], + "offset" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "Min" : [1, 1, 1, 1, 1, 1, 1, 2, 4, 16], + "Div" : [64, 64, 64, 65, 65, 65, 65, 65, 65, 65], + "sigma_g" : [1, 1, 2, 2, 3, 3, 4, 4, 4, 4], + "sigma_rb" : [1, 1, 2, 2, 3, 3, 4, 4, 4, 4], + "curve" : [ + [4095, 4095, 3677, 3068, 2686, 2219, 1933, 1735, 1587, 1379, 1235, 1129, 979, 877, 801, 742, 695], + [4095, 4056, 2910, 2388, 2073, 1697, 1471, 1317, 1203, 1042, 933, 852, 738, 660, 603, 558, 523], + [3688, 2169, 1687, 1428, 1260, 1050, 918, 827, 758, 660, 592, 542, 470, 421, 385, 357, 335], + [2254, 1553, 1258, 1085, 968, 816, 718, 649, 597, 521, 469, 430, 374, 335, 307, 284, 267], + [1060, 883, 772, 695, 637, 555, 498, 455, 422, 373, 338, 311, 272, 245, 225, 209, 196], + [580, 524, 481, 448, 420, 378, 346, 321, 301, 270, 247, 229, 202, 183, 168, 157, 148], + [368, 346, 328, 312, 298, 276, 257, 242, 230, 209, 193, 181, 162, 147, 136, 127, 120], + [214, 206, 199, 192, 186, 175, 166, 159, 152, 141, 132, 124, 112, 103, 96, 91, 86], + [158, 152, 147, 142, 138, 130, 124, 118, 113, 105, 99, 93, 84, 78, 72, 68, 64], + [127, 124, 121, 118, 115, 110, 106, 103, 99, 93, 88, 84, 77, 72, 68, 64, 61] + ] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 12, 16, 20, 24, 32, 40], + "gradient" : [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], + "offset" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "Min" : [16, 16, 16, 16, 16, 16, 16, 16, 16, 16], + "Div" : [65, 65, 65, 65, 65, 65, 65, 65, 65, 65], + "sigma_g" : [4, 4, 4, 4, 4, 4, 4, 4, 4, 4], + "sigma_rb" : [4, 4, 4, 4, 4, 4, 4, 4, 4, 4], + "curve" : [ + [4095, 4095, 3677, 3068, 2686, 2219, 1933, 1735, 1587, 1379, 1235, 1129, 979, 877, 801, 742, 695], + [4095, 4056, 2910, 2388, 2073, 1697, 1471, 1317, 1203, 1042, 933, 852, 738, 660, 603, 558, 523], + [3688, 2169, 1687, 1428, 1260, 1050, 918, 827, 758, 660, 592, 542, 470, 421, 385, 357, 335], + [2254, 1553, 1258, 1085, 968, 816, 718, 649, 597, 521, 469, 430, 374, 335, 307, 284, 267], + [1060, 883, 772, 695, 637, 555, 498, 455, 422, 373, 338, 311, 272, 245, 225, 209, 196], + [580, 524, 481, 448, 420, 378, 346, 321, 301, 270, 247, 229, 202, 183, 168, 157, 148], + [368, 346, 328, 312, 298, 276, 257, 242, 230, 209, 193, 181, 162, 147, 136, 127, 120], + [214, 206, 199, 192, 186, 175, 166, 159, 152, 141, 132, 124, 112, 103, 96, 91, 86], + [158, 152, 147, 142, 138, 130, 124, 118, 113, 105, 99, 93, 84, 78, 72, 68, 64], + [127, 124, 121, 118, 115, 110, 106, 103, 99, 93, 88, 84, 77, 72, 68, 64, 61] + ] + } + ] + }, + { + "classname" : "ABlc", + "forcecreate" : true, + "enable" : true, + "tables" : [ + { + "hdr" : false, + "gains" : [1, 16], + "blc" : [64, 64] + }, + { + "hdr" : true, + "gains" : [1, 16], + "blc" : [64, 64] + } + ] + } + ] +} diff --git a/drivers/GC5035/CMakeLists.txt b/drivers/GC5035/CMakeLists.txt new file mode 100644 index 0000000..8e7b707 --- /dev/null +++ b/drivers/GC5035/CMakeLists.txt @@ -0,0 +1,35 @@ +cmake_minimum_required(VERSION 3.1.0) + +# define module name & interface version +set (module gc5035) +string(TOUPPER ${module} SENSOR_NAME) + +# we want to compile all .c files as default +file(GLOB libsources ${SENSOR_NAME}.c ) + +# set public headers, these get installed +#file(GLOB pub_headers include/*.h) + +#include_directories() + +add_library(${module} SHARED ${libsources}) + +add_custom_target(${module}.drv + ALL + COMMAND ${CMAKE_COMMAND} -E copy lib${module}.so ${LIB_ROOT}/rootfs/usr/share/vi/tuningtool/bin/${module}.drv + COMMAND ${CMAKE_COMMAND} -E copy lib${module}.so ${LIB_ROOT}/rootfs/usr/lib/lib${module}.so + COMMAND ${CMAKE_COMMAND} -E make_directory ${LIB_ROOT}/rootfs/usr/share/vi/isp/test/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/*.xml ${LIB_ROOT}/rootfs/usr/share/vi/isp/test/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/${SENSOR_NAME}*.txt ${LIB_ROOT}/rootfs/usr/share/vi/isp/test/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/*.json ${LIB_ROOT}/rootfs/usr/share/vi/isp/test/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/*.xml ${LIB_ROOT}/rootfs/usr/share/vi/tuningtool/bin/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/${SENSOR_NAME}*.txt ${LIB_ROOT}/rootfs/usr/share/vi/tuningtool/bin/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/*.json ${LIB_ROOT}/rootfs/usr/share/vi/tuningtool/bin/ + DEPENDS ${module} + COMMENT "Copying ${module} driver module" + ) + +#install(FILES ${LIB_ROOT}/${CMAKE_BUILD_TYPE}/lib/lib${module}.so.${${module}_INTERFACE_CURRENT} +# DESTINATION ${CMAKE_INSTALL_PREFIX}/bin +# RENAME ${module}.drv +# ) \ No newline at end of file diff --git a/drivers/GC5035/GC5035.c b/drivers/GC5035/GC5035.c new file mode 100644 index 0000000..bf40fdf --- /dev/null +++ b/drivers/GC5035/GC5035.c @@ -0,0 +1,1902 @@ +/******************************************************************************\ |* Copyright (c) 2020 by VeriSilicon Holdings Co., Ltd. ("VeriSilicon") *| |* All Rights Reserved. *| |* *| |* The material in this file is confidential and contains trade secrets of *| |* of VeriSilicon. This is proprietary information owned or licensed by *| |* VeriSilicon. No part of this work may be disclosed, reproduced, copied, *| |* transmitted, or used in any way for any purpose, without the express *| |* written permission of VeriSilicon. *| |* *| +\******************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "GC5035_priv.h" +#include "gc5035.h" + +CREATE_TRACER( GC5035_INFO , "GC5035: ", INFO, 0); +CREATE_TRACER( GC5035_WARN , "GC5035: ", WARNING, 0); +CREATE_TRACER( GC5035_ERROR, "GC5035: ", ERROR, 0); +CREATE_TRACER( GC5035_DEBUG, "GC5035: ", INFO, 0); +CREATE_TRACER( GC5035_REG_INFO , "GC5035: ", INFO, 0); +CREATE_TRACER( GC5035_REG_DEBUG, "GC5035: ", INFO, 0); + +#ifdef SUBDEV_V4L2 +#include +#include +#include +#include +#include +#undef TRACE +#define TRACE(x, ...) +#endif + +#define GC5035_MIN_GAIN_STEP ( 1.0f/16.0f ) /**< min gain step size used by GUI (hardware min = 1/16; 1/16..32/16 depending on actual gain ) */ +#define GC5035_MAX_GAIN_AEC ( 32.0f ) /**< max. gain used by the AEC (arbitrarily chosen, hardware limit = 62.0, driver limit = 32.0 ) */ +#define GC5035_VS_MAX_INTEGRATION_TIME (0.0018) + +/***************************************************************************** + *Sensor Info +*****************************************************************************/ +static const char SensorName[16] = "GC5035"; + +static struct vvcam_mode_info pgc5035_mode_info[] = { + { + .index = 0, + .width = 640, + .height = 480, + .fps = 30, + .hdr_mode = SENSOR_MODE_LINEAR, // SENSOR_MODE_LINEAR + .bit_width = 10, + .bayer_pattern = BAYER_GRBG, + .mipi_phy_freq = 438, //mbps + .mipi_line_num = 2, + .preg_data = (void *)"gc5035 sensor liner mode 640*480@30", + }, + { + .index = 1, + .width = 1920, + .height = 1080, + .fps = 30, + .hdr_mode = SENSOR_MODE_LINEAR, + .bit_width = 10, + .bayer_pattern = BAYER_RGGB, + .mipi_phy_freq = 876, //mbps + .mipi_line_num = 2, + .preg_data = (void *)"gc5035 sensor liner mode 1920*1080@30", + }, + { + .index = 2, + .width = 2592, + .height = 1944, + .fps = 30, + .hdr_mode = SENSOR_MODE_LINEAR, + .bit_width = 10, + .bayer_pattern = BAYER_RGGB, + .mipi_phy_freq = 876, //mbps + .mipi_line_num = 2, + .preg_data = (void *)"gc5035 sensor liner mode 2592*1944@30", + }, + { + .index = 3, + .width = 1296, + .height = 972, + .fps = 30, + .hdr_mode = SENSOR_MODE_LINEAR, + .bit_width = 10, + .bayer_pattern = BAYER_RGGB, + .mipi_phy_freq = 438, + .mipi_line_num = 2, + .preg_data = (void *)"gc5035 sensor liner mode 1296*972@30", + }, + { + .index = 4, + .width = 1280, + .height = 720, + .fps = 30, + .hdr_mode = SENSOR_MODE_LINEAR, + .bit_width = 10, + .bayer_pattern = BAYER_RGGB, + .mipi_phy_freq = 438, //COULD BE WRONG + .mipi_line_num = 2, + .preg_data = (void *)"gc5035 sensor liner mode 1280*720@30", + }, +#if 0 + { + .index = 5, + .width = 1280, + .height = 720, + .fps = 60, + .hdr_mode = SENSOR_MODE_LINEAR, + .bit_width = 10, + .bayer_pattern = BAYER_RGGB, + .mipi_phy_freq = 438, //COULD BE WRONG + .mipi_line_num = 2, + .preg_data = (void *)"gc5035 sensor liner mode 1280*720@60", + } +#endif +}; + +static RESULT GC5035_IsiRegisterWriteIss(IsiSensorHandle_t handle, const uint32_t address, const uint32_t value); + +static RESULT GC5035_IsiSensorSetPowerIss(IsiSensorHandle_t handle, bool_t on) { + RESULT result = RET_SUCCESS; + + int ret = 0; + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + if (pGC5035Ctx == NULL || pGC5035Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pGC5035Ctx->IsiCtx.HalHandle; + + TRACE(GC5035_INFO, "%s (enter)\n", __func__); + + int32_t enable = on; + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_POWER, &enable); + if (ret != 0) { + // to do + //TRACE(GC5035_ERROR, "%s: sensor set power error!\n", __func__); + //return (RET_FAILURE); + } + + TRACE(GC5035_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT GC5035_IsiResetSensorIss(IsiSensorHandle_t handle) { + RESULT result = RET_SUCCESS; + int ret = 0; + + TRACE(GC5035_INFO, "%s (enter)\n", __func__); + + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + if (pGC5035Ctx == NULL || pGC5035Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pGC5035Ctx->IsiCtx.HalHandle; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_RESET, NULL); + if (ret != 0) { + TRACE(GC5035_ERROR, "%s: sensor reset error!\n", __func__); + return (RET_FAILURE); + } + + TRACE(GC5035_INFO, "%s (exit)\n", __func__); + return (result); +} + +#ifdef SUBDEV_CHAR +static RESULT GC5035_IsiSensorSetClkIss(IsiSensorHandle_t handle, uint32_t clk) { + RESULT result = RET_SUCCESS; + int32_t ret = 0; + + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + if (pGC5035Ctx == NULL || pGC5035Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pGC5035Ctx->IsiCtx.HalHandle; + + TRACE(GC5035_INFO, "%s (enter)\n", __func__); + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_CLK, &clk); + if (ret != 0) { + // to do + //TRACE(GC5035_ERROR, "%s: sensor set clk error!\n", __func__); + //return (RET_FAILURE); + } + + TRACE(GC5035_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT GC5035_IsiSensorGetClkIss + (IsiSensorHandle_t handle, uint32_t * pclk) { + RESULT result = RET_SUCCESS; + int ret = 0; + + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + if (pGC5035Ctx == NULL || pGC5035Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pGC5035Ctx->IsiCtx.HalHandle; + + TRACE(GC5035_INFO, "%s (enter)\n", __func__); + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_CLK, pclk); + if (ret != 0) { + // to do + //TRACE(GC5035_ERROR, "%s: sensor get clk error!\n", __func__); + //return (RET_FAILURE); + } + + TRACE(GC5035_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT GC5035_IsiConfigSensorSCCBIss(IsiSensorHandle_t handle) +{ + return RET_SUCCESS; +} +#endif + +static RESULT GC5035_IsiRegisterReadIss + (IsiSensorHandle_t handle, const uint32_t address, uint32_t * p_value) { + RESULT result = RET_SUCCESS; + int32_t ret = 0; + TRACE(GC5035_INFO, "%s (enter)\n", __func__); + + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + if (pGC5035Ctx == NULL || pGC5035Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pGC5035Ctx->IsiCtx.HalHandle; + + struct vvcam_sccb_data sccb_data; + sccb_data.addr = address; + sccb_data.data = 0; + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_READ_REG, &sccb_data); + if (ret != 0) { + TRACE(GC5035_ERROR, "%s: read sensor register error!\n", + __func__); + return (RET_FAILURE); + } + + *p_value = sccb_data.data; + + TRACE(GC5035_INFO, "%s (exit) result = %d\n", __func__, result); + return (result); +} + +static RESULT GC5035_IsiRegisterWriteIss + (IsiSensorHandle_t handle, const uint32_t address, const uint32_t value) { + RESULT result = RET_SUCCESS; + int ret = 0; + TRACE(GC5035_INFO, "%s (enter)\n", __func__); + + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + if (pGC5035Ctx == NULL || pGC5035Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pGC5035Ctx->IsiCtx.HalHandle; + + struct vvcam_sccb_data sccb_data; + sccb_data.addr = address; + sccb_data.data = value; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_WRITE_REG, &sccb_data); + if (ret != 0) { + TRACE(GC5035_ERROR, "%s: write sensor register error!\n", + __func__); + return (RET_FAILURE); + } + + TRACE(GC5035_INFO, "%s (exit) result = %d\n", __func__, result); + return (result); +} + +static RESULT GC5035_IsiQuerySensorSupportIss(HalHandle_t HalHandle, vvcam_mode_info_array_t *pSensorSupportInfo) +{ + TRACE(GC5035_DEBUG, "enter %s", __func__); + //int ret = 0; + struct vvcam_mode_info_array *psensor_mode_info_arry; + + HalContext_t *pHalCtx = HalHandle; + if ( pHalCtx == NULL ) { + return RET_NULL_POINTER; + } + + psensor_mode_info_arry = pSensorSupportInfo; +#if 0 + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_QUERY, psensor_mode_info_arry); + if (ret != 0) { + TRACE(GC5035_ERROR, "%s: sensor kernel query error! Use isi query\n",__func__); + psensor_mode_info_arry->count = sizeof(pgc5035_mode_info) / sizeof(struct vvcam_mode_info); + memcpy(psensor_mode_info_arry->modes, pgc5035_mode_info, sizeof(pgc5035_mode_info)); + } +#endif + psensor_mode_info_arry->count = sizeof(pgc5035_mode_info) / sizeof(struct vvcam_mode_info); + memcpy(psensor_mode_info_arry->modes, pgc5035_mode_info, sizeof(pgc5035_mode_info)); + + TRACE(GC5035_DEBUG, "%s-%s-%d: cnt=%d\n", __FILE__, __func__, __LINE__, psensor_mode_info_arry->count); + + return RET_SUCCESS; +} + +static RESULT GC5035_IsiQuerySensorIss(IsiSensorHandle_t handle, vvcam_mode_info_array_t *pSensorInfo) +{ + RESULT result = RET_SUCCESS; + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + if (pGC5035Ctx == NULL || pGC5035Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pGC5035Ctx->IsiCtx.HalHandle; + GC5035_IsiQuerySensorSupportIss(pHalCtx,pSensorInfo); + + return result; +} + +static RESULT GC5035_IsiGetSensorModeIss(IsiSensorHandle_t handle,void *mode) +{ + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + if (pGC5035Ctx == NULL) { + return (RET_WRONG_HANDLE); + } + memcpy(mode,&(pGC5035Ctx->SensorMode), sizeof(pGC5035Ctx->SensorMode)); + + return ( RET_SUCCESS ); +} + +static RESULT GC5035_IsiCreateSensorIss(IsiSensorInstanceConfig_t * pConfig) { + RESULT result = RET_SUCCESS; + GC5035_Context_t *pGC5035Ctx; + + TRACE(GC5035_INFO, "%s (enter)\n", __func__); + + if (!pConfig || !pConfig->pSensor) + return (RET_NULL_POINTER); + + pGC5035Ctx = (GC5035_Context_t *) malloc(sizeof(GC5035_Context_t)); + if (!pGC5035Ctx) { + TRACE(GC5035_ERROR, "%s: Can't allocate gc5035 context\n", + __func__); + return (RET_OUTOFMEM); + } + + MEMSET(pGC5035Ctx, 0, sizeof(GC5035_Context_t)); + + result = HalAddRef(pConfig->HalHandle); + if (result != RET_SUCCESS) { + free(pGC5035Ctx); + return (result); + } + + pGC5035Ctx->IsiCtx.HalHandle = pConfig->HalHandle; + pGC5035Ctx->IsiCtx.pSensor = pConfig->pSensor; + pGC5035Ctx->GroupHold = BOOL_FALSE; + pGC5035Ctx->OldGain = 0; + pGC5035Ctx->OldIntegrationTime = 0; + pGC5035Ctx->Configured = BOOL_FALSE; + pGC5035Ctx->Streaming = BOOL_FALSE; + pGC5035Ctx->TestPattern = BOOL_FALSE; + pGC5035Ctx->isAfpsRun = BOOL_FALSE; + pGC5035Ctx->SensorMode.index = pConfig->SensorModeIndex; + pConfig->hSensor = (IsiSensorHandle_t) pGC5035Ctx; +#ifdef SUBDEV_CHAR + struct vvcam_mode_info *SensorDefaultMode = NULL; + for (int i=0; i < sizeof(pgc5035_mode_info)/ sizeof(struct vvcam_mode_info); i++) + { + if (pgc5035_mode_info[i].index == pGC5035Ctx->SensorMode.index) + { + SensorDefaultMode = &(pgc5035_mode_info[i]); + break; + } + } + + if (SensorDefaultMode != NULL) + { + strcpy(pGC5035Ctx->SensorRegCfgFile, get_vi_config_path()); + switch(SensorDefaultMode->index) + { + case 0: + strcat(pGC5035Ctx->SensorRegCfgFile, + "GC5035_mipi2lane_640x480@30_gc.txt"); + break; + case 1: + strcat(pGC5035Ctx->SensorRegCfgFile, + "GC5035_mipi2lane_1920x1080@30_gc.txt"); + break; + case 2: + strcat(pGC5035Ctx->SensorRegCfgFile, + "GC5035_mipi2lane_2592x1944@30_gc.txt"); + break; + case 3: + strcat(pGC5035Ctx->SensorRegCfgFile, + "GC5035_mipi2lane_1296x972@30_mayi.txt"); + break; + case 4: //720p@30fps + strcat(pGC5035Ctx->SensorRegCfgFile, + "GC5035_mipi2lane_1280x720@30_gc.txt"); + break; + case 5: //720p@60fps + strcat(pGC5035Ctx->SensorRegCfgFile, + "GC5035_mipi2lane_1280x720@60_mayi.txt"); + break; + default: + break; + } + + if (access(pGC5035Ctx->SensorRegCfgFile, F_OK) == 0) { + pGC5035Ctx->KernelDriverFlag = 0; + memcpy(&(pGC5035Ctx->SensorMode),SensorDefaultMode,sizeof(struct vvcam_mode_info)); + } else { + pGC5035Ctx->KernelDriverFlag = 1; + } + }else + { + pGC5035Ctx->KernelDriverFlag = 1; + } + + result = GC5035_IsiSensorSetPowerIss(pGC5035Ctx, BOOL_TRUE); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + + uint32_t SensorClkIn = 0; + if (pGC5035Ctx->KernelDriverFlag) { + result = GC5035_IsiSensorGetClkIss(pGC5035Ctx, &SensorClkIn); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + } + + result = GC5035_IsiSensorSetClkIss(pGC5035Ctx, SensorClkIn); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + + result = GC5035_IsiResetSensorIss(pGC5035Ctx); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + + pGC5035Ctx->pattern = ISI_BPAT_BGBGGRGR; + + if (!pGC5035Ctx->KernelDriverFlag) { + result = GC5035_IsiConfigSensorSCCBIss(pGC5035Ctx); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + } +#endif + + TRACE(GC5035_INFO, "%s (exit pConfig->hSensor = %p)\n", __func__, pConfig->hSensor); + return (result); +} + +static RESULT GC5035_IsiGetRegCfgIss(const char *registerFileName, + struct vvcam_sccb_array *arry) +{ + if (NULL == registerFileName) { + TRACE(GC5035_ERROR, "%s:registerFileName is NULL\n", __func__); + return (RET_NULL_POINTER); + } +#ifdef SUBDEV_CHAR + FILE *fp = NULL; + fp = fopen(registerFileName, "rb"); + if (!fp) { + TRACE(GC5035_ERROR, "%s:load register file %s error!\n", + __func__, registerFileName); + return (RET_FAILURE); + } + + char LineBuf[512]; + uint32_t FileTotalLine = 0; + while (!feof(fp)) { + fgets(LineBuf, 512, fp); + FileTotalLine++; + } + + arry->sccb_data = + malloc(FileTotalLine * sizeof(struct vvcam_sccb_data)); + if (arry->sccb_data == NULL) { + TRACE(GC5035_ERROR, "%s:malloc failed NULL Point!\n", __func__, + registerFileName); + return (RET_FAILURE); + } + rewind(fp); + + arry->count = 0; + while (!feof(fp)) { + memset(LineBuf, 0, sizeof(LineBuf)); + fgets(LineBuf, 512, fp); + + int result = + sscanf(LineBuf, "0x%x 0x%x", + &(arry->sccb_data[arry->count].addr), + &(arry->sccb_data[arry->count].data)); + if (result != 2) + continue; + arry->count++; + + } +#endif + + return 0; +} + +static RESULT GC5035_IsiInitSensorIss(IsiSensorHandle_t handle) { + RESULT result = RET_SUCCESS; + + int ret = 0; + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + + HalContext_t *pHalCtx = (HalContext_t *) pGC5035Ctx->IsiCtx.HalHandle; + TRACE(GC5035_INFO, "%s (enter handle = %p)\n", __func__, handle); + + if (pGC5035Ctx == NULL) { + return (RET_WRONG_HANDLE); + } + TRACE(GC5035_INFO, "%s (pGC5035Ctx->KernelDriverFlag = %d)\n", __func__, pGC5035Ctx->KernelDriverFlag); + if (pGC5035Ctx->KernelDriverFlag) { + ; + } else { + TRACE(GC5035_INFO, "%s (001)\n", __func__); + struct vvcam_sccb_array arry; + result = GC5035_IsiGetRegCfgIss(pGC5035Ctx->SensorRegCfgFile, &arry); + if (result != 0) { + TRACE(GC5035_ERROR, + "%s:GC5035_IsiGetRegCfgIss error!\n", __func__); + return (RET_FAILURE); + } + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_WRITE_ARRAY, &arry); + if (ret != 0) { + TRACE(GC5035_ERROR, "%s:Sensor Write Reg arry error!\n", + __func__); + return (RET_FAILURE); + } + TRACE(GC5035_INFO, "%s (pGC5035Ctx->SensorMode.index = %d)\n", __func__, pGC5035Ctx->SensorMode.index); + switch(pGC5035Ctx->SensorMode.index) + { + case 0: // 480p + pGC5035Ctx->one_line_exp_time = 0.0000167; // line_time = line_length / pclk =1460/87.6mhz = 0.0000167 + pGC5035Ctx->FrameLengthLines = 0x7cc; //framelength=1996=0x7cc + pGC5035Ctx->CurFrameLengthLines = pGC5035Ctx->FrameLengthLines; + pGC5035Ctx->MaxIntegrationLine = pGC5035Ctx->CurFrameLengthLines - 8; + pGC5035Ctx->MinIntegrationLine = 1; + pGC5035Ctx->AecMaxGain = 16; + pGC5035Ctx->AecMinGain = 1; + break; + case 1: // 1080p + pGC5035Ctx->one_line_exp_time = 0.0000167; // line_time = line_length / pclk =2920/175.2mhz = 0.00001667 + pGC5035Ctx->FrameLengthLines = 0x7D8; //framelength=2008=0x7D8 + pGC5035Ctx->CurFrameLengthLines = pGC5035Ctx->FrameLengthLines; + pGC5035Ctx->MaxIntegrationLine = pGC5035Ctx->CurFrameLengthLines - 8; + pGC5035Ctx->MinIntegrationLine = 1; + pGC5035Ctx->AecMaxGain = 16; + pGC5035Ctx->AecMinGain = 1; + break; + case 2: // full size + pGC5035Ctx->one_line_exp_time = 0.0000167; // line_time = line_length / pclk =2920/175.2mhz = 0.00001667 + pGC5035Ctx->FrameLengthLines = 0x7D8; //framelength=2008=0x7D8 + pGC5035Ctx->CurFrameLengthLines = pGC5035Ctx->FrameLengthLines; + pGC5035Ctx->MaxIntegrationLine = pGC5035Ctx->CurFrameLengthLines - 8; + pGC5035Ctx->MinIntegrationLine = 1; + pGC5035Ctx->AecMaxGain = 16; + pGC5035Ctx->AecMinGain = 1; + break; + case 3: // 1296x972 + pGC5035Ctx->one_line_exp_time = 0.0000167; // line_time = line_length / pclk =2920/175.2mhz = 0.00001667 + pGC5035Ctx->FrameLengthLines = 0x7D8; //framelength=2008=0x7D8 + pGC5035Ctx->CurFrameLengthLines = pGC5035Ctx->FrameLengthLines; + pGC5035Ctx->MaxIntegrationLine = pGC5035Ctx->CurFrameLengthLines - 8; + pGC5035Ctx->MinIntegrationLine = 1; + pGC5035Ctx->AecMaxGain = 16; + pGC5035Ctx->AecMinGain = 1; + break; + case 4: // 720p@30fps + case 5: // 720p@60fps + pGC5035Ctx->one_line_exp_time = 0.0000167; // line_time = line_length / pclk =2920/175.2mhz = 0.00001667 + pGC5035Ctx->FrameLengthLines = 0x7D8; //framelength=2008=0x7D8 + pGC5035Ctx->CurFrameLengthLines = pGC5035Ctx->FrameLengthLines; + pGC5035Ctx->MaxIntegrationLine = pGC5035Ctx->CurFrameLengthLines - 8; + pGC5035Ctx->MinIntegrationLine = 1; + pGC5035Ctx->AecMaxGain = 16; + pGC5035Ctx->AecMinGain = 1; + break; + default: + return (RET_FAILURE); + } + pGC5035Ctx->AecIntegrationTimeIncrement = pGC5035Ctx->one_line_exp_time; + pGC5035Ctx->AecMinIntegrationTime = + pGC5035Ctx->one_line_exp_time * pGC5035Ctx->MinIntegrationLine; + pGC5035Ctx->AecMaxIntegrationTime = + pGC5035Ctx->one_line_exp_time * pGC5035Ctx->MaxIntegrationLine; + + + pGC5035Ctx->MaxFps = pGC5035Ctx->SensorMode.fps; + pGC5035Ctx->MinFps = 1; + pGC5035Ctx->CurrFps = pGC5035Ctx->MaxFps; + } + TRACE(GC5035_INFO, "%s (pGC5035Ctx->one_line_exp_time = %f)\n", __func__, pGC5035Ctx->one_line_exp_time); + TRACE(GC5035_INFO, "%s (pGC5035Ctx->MinIntegrationLine = %d, pGC5035Ctx->MaxIntegrationLine = %d)\n", __func__, pGC5035Ctx->MinIntegrationLine, pGC5035Ctx->MaxIntegrationLine); + return (result); +} + +static RESULT GC5035_IsiReleaseSensorIss(IsiSensorHandle_t handle) { + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(GC5035_INFO, "%s (enter)\n", __func__); + + if (pGC5035Ctx == NULL) + return (RET_WRONG_HANDLE); + + (void)GC5035_IsiSensorSetStreamingIss(pGC5035Ctx, BOOL_FALSE); + (void)GC5035_IsiSensorSetPowerIss(pGC5035Ctx, BOOL_FALSE); + (void)HalDelRef(pGC5035Ctx->IsiCtx.HalHandle); + + MEMSET(pGC5035Ctx, 0, sizeof(GC5035_Context_t)); + free(pGC5035Ctx); + TRACE(GC5035_INFO, "%s (exit)\n", __func__); + return (result); +} + +struct gc5035_fmt { + int width; + int height; + int fps; +}; + +static RESULT GC5035_IsiSetupSensorIss + (IsiSensorHandle_t handle, const IsiSensorConfig_t * pConfig) { + + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + HalContext_t *pHalCtx = (HalContext_t *) pGC5035Ctx->IsiCtx.HalHandle; + + RESULT result = RET_SUCCESS; + + TRACE(GC5035_INFO, "%s: (enter)\n", __func__); + + if (!pGC5035Ctx) { + TRACE(GC5035_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pConfig) { + TRACE(GC5035_ERROR, + "%s: Invalid configuration (NULL pointer detected)\n", + __func__); + return (RET_NULL_POINTER); + } + + if (pGC5035Ctx->Streaming != BOOL_FALSE) { + return RET_WRONG_STATE; + } + + memcpy(&pGC5035Ctx->Config, pConfig, sizeof(IsiSensorConfig_t)); + + /* 1.) SW reset of image sensor (via I2C register interface) be careful, bits 6..0 are reserved, reset bit is not sticky */ + TRACE(GC5035_DEBUG, "%s: GC5035 System-Reset executed\n", __func__); + osSleep(100); + + //GC5035_AecSetModeParameters not defined yet as of 2021/8/9. + //result = GC5035_AecSetModeParameters(pGC5035Ctx, pConfig); + //if (result != RET_SUCCESS) { + // TRACE(GC5035_ERROR, "%s: SetupOutputWindow failed.\n", + // __func__); + // return (result); + //} +#if 1 + struct gc5035_fmt fmt; + fmt.width = pConfig->Resolution.width; + fmt.height = pConfig->Resolution.height; + + ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_FPS, &fmt);//result = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_FPS, &fmt); +#endif + pGC5035Ctx->Configured = BOOL_TRUE; + TRACE(GC5035_INFO, "%s: (exit) ret=0x%x \n", __func__, result); + return result; +} + +static RESULT GC5035_IsiChangeSensorResolutionIss(IsiSensorHandle_t handle, uint16_t width, uint16_t height) { + RESULT result = RET_SUCCESS; +#if 0 + struct gc5035_fmt fmt; + fmt.width = width; + fmt.height = height; + + int ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_FPS, &fmt); +#endif + TRACE(GC5035_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT GC5035_IsiSensorSetStreamingIss + (IsiSensorHandle_t handle, bool_t on) { + RESULT result = RET_SUCCESS; + int ret = 0; + TRACE(GC5035_INFO, "%s (enter)\n", __func__); + + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + if (pGC5035Ctx == NULL || pGC5035Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pGC5035Ctx->IsiCtx.HalHandle; + + if (pGC5035Ctx->Configured != BOOL_TRUE) + return RET_WRONG_STATE; + + int32_t enable = (uint32_t) on; + ret = GC5035_IsiRegisterWriteIss(handle, 0xfe, 0x00); + if (ret != 0) { + return (RET_FAILURE); + } + + if (on == true) { + ret = GC5035_IsiRegisterWriteIss(handle, 0x3e, 0x91); + } else { + ret = GC5035_IsiRegisterWriteIss(handle, 0x3e, 0x01); + } + + if (ret != 0) { + return (RET_FAILURE); + } + + pGC5035Ctx->Streaming = on; + + TRACE(GC5035_INFO, "%s (exit)\n", __func__); + return (result); +} + +static int32_t sensor_get_chip_id(IsiSensorHandle_t handle, uint32_t *chip_id) +{ + RESULT result = RET_SUCCESS; + int32_t ret = 0; + int32_t chip_id_high = 0; + int32_t chip_id_low = 0; + + ret = GC5035_IsiRegisterReadIss(handle, 0xf0, &chip_id_high); + if (ret != 0) { + TRACE(GC5035_ERROR, + "%s: Read Sensor correct ID Error! \n", __func__); + return (RET_FAILURE); + } + + ret = GC5035_IsiRegisterReadIss(handle, 0xf1, &chip_id_low); + if (ret != 0) { + TRACE(GC5035_ERROR, + "%s: Read Sensor correct ID Error! \n", __func__); + return (RET_FAILURE); + } + + *chip_id = ((chip_id_high & 0xff)<<8) | (chip_id_low & 0xff); + + return 0; +} + +static RESULT GC5035_IsiCheckSensorConnectionIss(IsiSensorHandle_t handle) { + RESULT result = RET_SUCCESS; + int ret = 0; + uint32_t correct_id = 0x5035; + uint32_t sensor_id = 0; + + TRACE(GC5035_INFO, "%s (enter)\n", __func__); + + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + if (pGC5035Ctx == NULL || pGC5035Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pGC5035Ctx->IsiCtx.HalHandle; + + ret = sensor_get_chip_id(handle, &sensor_id); + if (ret != 0) { + TRACE(GC5035_ERROR, + "%s: Read Sensor chip ID Error! \n", __func__); + return (RET_FAILURE); + } + + if (correct_id != sensor_id) { + TRACE(GC5035_ERROR, "%s:ChipID =0x%x sensor_id=%x error! \n", + __func__, correct_id, sensor_id); + return (RET_FAILURE); + } + + TRACE(GC5035_INFO, + "%s ChipID = 0x%08x, sensor_id = 0x%08x, success! \n", __func__, + correct_id, sensor_id); + TRACE(GC5035_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT GC5035_IsiGetSensorRevisionIss + (IsiSensorHandle_t handle, uint32_t * p_value) { + RESULT result = RET_SUCCESS; + TRACE(GC5035_INFO, "%s (enter)\n", __func__); + + *p_value = 0X5690; + TRACE(GC5035_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT GC5035_IsiGetGainLimitsIss + (IsiSensorHandle_t handle, float *pMinGain, float *pMaxGain) { + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + RESULT result = RET_SUCCESS; + + /*TODO*/ + + TRACE(GC5035_INFO, "%s: (enter)\n", __func__); + + if (pGC5035Ctx == NULL) { + TRACE(GC5035_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if ((pMinGain == NULL) || (pMaxGain == NULL)) { + TRACE(GC5035_ERROR, "%s: NULL pointer received!!\n"); + return (RET_NULL_POINTER); + } + + *pMinGain = pGC5035Ctx->AecMinGain; + *pMaxGain = pGC5035Ctx->AecMaxGain; + + TRACE(GC5035_INFO, "%s: (exit)\n", __func__); + return (result); +} + +static RESULT GC5035_IsiGetIntegrationTimeLimitsIss + (IsiSensorHandle_t handle, + float *pMinIntegrationTime, float *pMaxIntegrationTime) { + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + RESULT result = RET_SUCCESS; + + /*TODO*/ + + TRACE(GC5035_INFO, "%s: (enter)\n", __func__); + if (pGC5035Ctx == NULL) { + TRACE(GC5035_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if ((pMinIntegrationTime == NULL) || (pMaxIntegrationTime == NULL)) { + TRACE(GC5035_ERROR, "%s: NULL pointer received!!\n"); + return (RET_NULL_POINTER); + } + + *pMinIntegrationTime = pGC5035Ctx->AecMinIntegrationTime; + *pMaxIntegrationTime = pGC5035Ctx->AecMaxIntegrationTime; + + TRACE(GC5035_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT GC5035_IsiGetGainIss(IsiSensorHandle_t handle, float *pSetGain) { + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(GC5035_INFO, "%s: (enter)\n", __func__); + + if (pGC5035Ctx == NULL) { + TRACE(GC5035_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (pSetGain == NULL) { + return (RET_NULL_POINTER); + } + + *pSetGain = pGC5035Ctx->AecCurGain; + + TRACE(GC5035_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT GC5035_IsiGetLongGainIss(IsiSensorHandle_t handle, float *gain) +{ + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + + TRACE(GC5035_INFO, "%s: (enter)\n", __func__); + + if (pGC5035Ctx == NULL) { + TRACE(GC5035_ERROR,"%s: Invalid sensor handle (NULL pointer detected)\n",__func__); + return (RET_WRONG_HANDLE); + } + + if (gain == NULL) { + return (RET_NULL_POINTER); + } + + *gain = pGC5035Ctx->AecCurLongGain; + + TRACE(GC5035_INFO, "%s: (exit)\n", __func__); + + return (RET_SUCCESS); +} + +RESULT GC5035_IsiGetVSGainIss(IsiSensorHandle_t handle, float *pSetGain) { + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + RESULT result = RET_SUCCESS; + + TRACE(GC5035_INFO, "%s: (enter)\n", __func__); + + if (pGC5035Ctx == NULL) { + TRACE(GC5035_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (pSetGain == NULL) { + return (RET_NULL_POINTER); + } + + *pSetGain = pGC5035Ctx->AecCurVSGain; + + TRACE(GC5035_INFO, "%s: (exit)\n", __func__); + + return (result); +} + +RESULT GC5035_IsiGetGainIncrementIss(IsiSensorHandle_t handle, float *pIncr) { + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(GC5035_INFO, "%s: (enter)\n", __func__); + + if (pGC5035Ctx == NULL) { + TRACE(GC5035_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (pIncr == NULL) + return (RET_NULL_POINTER); + + *pIncr = pGC5035Ctx->AecGainIncrement; + + TRACE(GC5035_INFO, "%s: (exit)\n", __func__); + + return (result); +} + +uint16_t GC5035_AGC_Param[17][2] = { + { 256, 0 }, + { 302, 1 }, + { 358, 2 }, + { 425, 3 }, + { 502, 8 }, + { 599, 9 }, + { 717, 10 }, + { 845, 11 }, + { 998, 12 }, + { 1203, 13 }, + { 1434, 14 }, + { 1710, 15 }, + { 1997, 16 }, + { 2355, 17 }, + { 2816, 18 }, + { 3318, 19 }, + { 3994, 20 }, +}; +static uint32_t Dgain_ratio = 256; + +RESULT GC5035_IsiSetGainIss + (IsiSensorHandle_t handle, + float NewGain, float *pSetGain, float *hdr_ratio) { + + RESULT result = RET_SUCCESS; + int32_t ret = 0; + uint32_t temp_gain; + uint16_t gain_index; + + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + if (pGC5035Ctx == NULL || pGC5035Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + if (NewGain >= 16) { // More than 16 will not take effect + NewGain = 16; + } + + HalContext_t *pHalCtx = (HalContext_t *) pGC5035Ctx->IsiCtx.HalHandle; + //GC5035 specific + uint32_t SensorGain = 0; + SensorGain = NewGain * 256; // pGC5035Ctx->gain_accuracy; + if (SensorGain < 256) { //min gain=1x + SensorGain = 256; + NewGain = 1; + } else if (SensorGain > 16*256) { //max gain=16x + SensorGain = 16*256; + NewGain = 16; + } + for (gain_index = 16; gain_index >= 0; gain_index--) { + if (SensorGain >= GC5035_AGC_Param[gain_index][0]) + break; + } + ret = GC5035_IsiRegisterWriteIss(handle, 0xfe, 0x00); + if (ret != 0) { + return (RET_FAILURE); + } + ret = GC5035_IsiRegisterWriteIss(handle, 0xb6, GC5035_AGC_Param[gain_index][1]); + if (ret != 0) { + return (RET_FAILURE); + } + temp_gain = SensorGain*Dgain_ratio / GC5035_AGC_Param[gain_index][0]; + ret = GC5035_IsiRegisterWriteIss(handle, 0xb1, (temp_gain >> 8) & 0x0f); + if (ret != 0) { + return (RET_FAILURE); + } + ret = GC5035_IsiRegisterWriteIss(handle, 0xb2, temp_gain & 0xfc); + if (ret != 0) { + return (RET_FAILURE); + } + + volatile int32_t reg; + TRACE(GC5035_DEBUG, "%s gain_index=%d,[gain_index][0]=%d,Dgain_ratio=%u\n",__func__, gain_index, GC5035_AGC_Param[gain_index][0], Dgain_ratio); + TRACE(GC5035_DEBUG, "%s temp_gain=0x%x,0xb1 write 0x%x,0xb2 write 0x%x\n",__func__, temp_gain, (temp_gain >> 8) & 0x0f, temp_gain & 0xfc); + GC5035_IsiRegisterReadIss(handle, 0xb6, ®); + TRACE(GC5035_DEBUG, "%s 0xb6 read 0x0%x\n",__func__, reg); + GC5035_IsiRegisterReadIss(handle, 0xb1, ®); + TRACE(GC5035_DEBUG, "%s 0xb1 read 0x0%x\n",__func__, reg); + GC5035_IsiRegisterReadIss(handle, 0xb2, ®); + TRACE(GC5035_DEBUG, "%s 0xb2 read 0x0%x\n",__func__, reg); + + pGC5035Ctx->AecCurGain = ((float)(NewGain)); + *pSetGain = pGC5035Ctx->AecCurGain; + TRACE(GC5035_DEBUG, "%s: g=%f\n", __func__, *pSetGain); + return (result); +} + +RESULT GC5035_IsiSetLongGainIss(IsiSensorHandle_t handle, float gain) +{ + int ret = 0; + TRACE(GC5035_INFO, "%s: (enter)\n", __func__); + + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + + if (!pGC5035Ctx || !pGC5035Ctx->IsiCtx.HalHandle) + { + TRACE(GC5035_ERROR,"%s: Invalid sensor handle (NULL pointer detected)\n",__func__); + return (RET_WRONG_HANDLE); + } + + HalContext_t *pHalCtx = (HalContext_t *) pGC5035Ctx->IsiCtx.HalHandle; + + uint32_t SensorGain = 0; + SensorGain = gain * pGC5035Ctx->gain_accuracy; + if (pGC5035Ctx->LastLongGain != SensorGain) + { + + /*TODO*/ +#if 0 + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_LONG_GAIN, &SensorGain); + if (ret != 0) + { + return (RET_FAILURE); + TRACE(GC5035_ERROR,"%s: set long gain failed\n"); + + } +#endif + pGC5035Ctx->LastLongGain = SensorGain; + pGC5035Ctx->AecCurLongGain = gain; + } + + TRACE(GC5035_INFO, "%s: (exit)\n", __func__); + return (RET_SUCCESS); +} + +RESULT GC5035_IsiSetVSGainIss + (IsiSensorHandle_t handle, + float NewIntegrationTime, + float NewGain, float *pSetGain, float *hdr_ratio) { + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + HalContext_t *pHalCtx = (HalContext_t *) pGC5035Ctx->IsiCtx.HalHandle; + RESULT result = RET_SUCCESS; +#if 0 + float Gain = 0.0f; + + uint32_t ucGain = 0U; + uint32_t again = 0U; +#endif + + TRACE(GC5035_INFO, "%s: (enter)\n", __func__); + + if (!pGC5035Ctx) { + TRACE(GC5035_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pSetGain || !hdr_ratio) + return (RET_NULL_POINTER); + + uint32_t SensorGain = 0; + SensorGain = NewGain * pGC5035Ctx->gain_accuracy; + + /*TODO*/ + //ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_VSGAIN, &SensorGain); + + pGC5035Ctx->AecCurVSGain = NewGain; + *pSetGain = pGC5035Ctx->AecCurGain; + TRACE(GC5035_DEBUG, "%s: g=%f\n", __func__, *pSetGain); + TRACE(GC5035_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT GC5035_IsiSetBayerPattern(IsiSensorHandle_t handle, uint8_t pattern) +{ + + RESULT result = RET_SUCCESS; +#if 0 + uint8_t h_shift = 0, v_shift = 0; + uint32_t val_h = 0, val_l = 0; + uint16_t val = 0; + uint8_t Start_p = 0; + bool_t streaming_status; + TRACE(GC5035_INFO, "%s: (enter)\n", __func__); + + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + if (pGC5035Ctx == NULL || pGC5035Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + // pattern 0:B 1:GB 2:GR 3:R + streaming_status = pGC5035Ctx->Streaming; + result = GC5035_IsiSensorSetStreamingIss(handle, 0); + switch (pattern) { + case BAYER_BGGR: + Start_p = 0; + break; + case BAYER_GBRG: + Start_p = 1; + break; + case BAYER_GRBG: + Start_p = 2; + break; + case BAYER_RGGB: + Start_p = 3; + break; + } + + h_shift = Start_p % 2; + v_shift = Start_p / 2; + + GC5035_IsiRegisterReadIss(handle, 0x30a0, &val_h); + GC5035_IsiRegisterReadIss(handle, 0x30a1, &val_l); + val = (((val_h << 8) & 0xff00) | (val_l & 0x00ff)) + h_shift; + val_h = (val >> 8) & 0xff; + val_l = val & 0xff; + GC5035_IsiRegisterWriteIss(handle, 0x30a0, (uint8_t)val_h); + GC5035_IsiRegisterWriteIss(handle, 0x30a1, (uint8_t)val_l); + + GC5035_IsiRegisterReadIss(handle, 0x30a2, &val_h); + GC5035_IsiRegisterReadIss(handle, 0x30a3, &val_l); + val = (((val_h << 8) & 0xff00) | (val_l & 0x00ff)) + v_shift; + val_h = (val >> 8) & 0xff; + val_l = val & 0xff; + GC5035_IsiRegisterWriteIss(handle, 0x30a2, (uint8_t)val_h); + GC5035_IsiRegisterWriteIss(handle, 0x30a3, (uint8_t)val_l); + + GC5035_IsiRegisterReadIss(handle, 0x30a4, &val_h); + GC5035_IsiRegisterReadIss(handle, 0x30a5, &val_l); + val = (((val_h << 8) & 0xff00) | (val_l & 0x00ff)) + h_shift; + val_h = (val >> 8) & 0xff; + val_l = val & 0xff; + GC5035_IsiRegisterWriteIss(handle, 0x30a4, (uint8_t)val_h); + GC5035_IsiRegisterWriteIss(handle, 0x30a5, (uint8_t)val_l); + + GC5035_IsiRegisterReadIss(handle, 0x30a6, &val_h); + GC5035_IsiRegisterReadIss(handle, 0x30a7, &val_l); + val = (((val_h << 8) & 0xff00) | (val_l & 0x00ff)) + v_shift; + val_h = (val >> 8) & 0xff; + val_l = val & 0xff; + GC5035_IsiRegisterWriteIss(handle, 0x30a6, (uint8_t)val_h); + GC5035_IsiRegisterWriteIss(handle, 0x30a7, (uint8_t)val_l); + + pGC5035Ctx->pattern = pattern; + result = GC5035_IsiSensorSetStreamingIss(handle, streaming_status); +#endif + + return (result); +} + +RESULT GC5035_IsiGetIntegrationTimeIss + (IsiSensorHandle_t handle, float *pSetIntegrationTime) +{ + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(GC5035_INFO, "%s: (enter)\n", __func__); + + if (!pGC5035Ctx) { + TRACE(GC5035_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pSetIntegrationTime) + return (RET_NULL_POINTER); + *pSetIntegrationTime = pGC5035Ctx->AecCurIntegrationTime; + TRACE(GC5035_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT GC5035_IsiGetLongIntegrationTimeIss(IsiSensorHandle_t handle, float *pIntegrationTime) +{ + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + TRACE(GC5035_INFO, "%s: (enter)\n", __func__); + + if (!pGC5035Ctx) { + TRACE(GC5035_ERROR,"%s: Invalid sensor handle (NULL pointer detected)\n",__func__); + return (RET_WRONG_HANDLE); + } + if (!pIntegrationTime) + return (RET_NULL_POINTER); + + pGC5035Ctx->AecCurLongIntegrationTime = pGC5035Ctx->AecCurIntegrationTime; + + *pIntegrationTime = pGC5035Ctx->AecCurLongIntegrationTime; + TRACE(GC5035_INFO, "%s: (exit)\n", __func__); + return (RET_SUCCESS); +} + +RESULT GC5035_IsiGetVSIntegrationTimeIss + (IsiSensorHandle_t handle, float *pSetIntegrationTime) +{ + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(GC5035_INFO, "%s: (enter)\n", __func__); + + if (!pGC5035Ctx) { + TRACE(GC5035_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + if (!pSetIntegrationTime) + return (RET_NULL_POINTER); + + *pSetIntegrationTime = pGC5035Ctx->AecCurVSIntegrationTime; + TRACE(GC5035_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT GC5035_IsiGetIntegrationTimeIncrementIss + (IsiSensorHandle_t handle, float *pIncr) +{ + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(GC5035_INFO, "%s: (enter)\n", __func__); + + if (!pGC5035Ctx) { + TRACE(GC5035_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pIncr) + return (RET_NULL_POINTER); + + //_smallest_ increment the sensor/driver can handle (e.g. used for sliders in the application) + *pIncr = pGC5035Ctx->AecIntegrationTimeIncrement; + TRACE(GC5035_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT GC5035_IsiSetIntegrationTimeIss + (IsiSensorHandle_t handle, + float NewIntegrationTime, + float *pSetIntegrationTime, + uint8_t * pNumberOfFramesToSkip, float *hdr_ratio) +{ + RESULT result = RET_SUCCESS; + + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + HalContext_t *pHalCtx = (HalContext_t *) pGC5035Ctx->IsiCtx.HalHandle; + + uint32_t exp_line = 0; + uint32_t cal_shutter = 0; + uint32_t exp_line_old = 0; + int ret = 0; + + TRACE(GC5035_INFO, "%s: (enter handle = %p)\n", __func__, handle); + + if (!pGC5035Ctx) { + TRACE(GC5035_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pSetIntegrationTime || !pNumberOfFramesToSkip) { + TRACE(GC5035_ERROR, + "%s: Invalid parameter (NULL pointer detected)\n", + __func__); + return (RET_NULL_POINTER); + } + exp_line = NewIntegrationTime / pGC5035Ctx->one_line_exp_time; + exp_line_old = exp_line; + exp_line = + MIN(pGC5035Ctx->MaxIntegrationLine, + MAX(pGC5035Ctx->MinIntegrationLine, exp_line)); + + TRACE(GC5035_DEBUG, "%s: set AEC_PK_EXPO=0x%05x min_exp_line = %d, max_exp_line = %d\n", __func__, exp_line, pGC5035Ctx->MinIntegrationLine, pGC5035Ctx->MaxIntegrationLine); + + if (exp_line != pGC5035Ctx->OldIntegrationTime) { + + /*TODO*/ + //ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_EXP, &exp_line); + pGC5035Ctx->OldIntegrationTime = exp_line; // remember current integration time + pGC5035Ctx->AecCurIntegrationTime = + exp_line * pGC5035Ctx->one_line_exp_time; + + *pNumberOfFramesToSkip = 1U; //skip 1 frame + } else { + *pNumberOfFramesToSkip = 0U; //no frame skip + } + + if (NewIntegrationTime > pGC5035Ctx->MaxIntegrationLine * pGC5035Ctx->one_line_exp_time) + NewIntegrationTime = pGC5035Ctx->MaxIntegrationLine * pGC5035Ctx->one_line_exp_time; + + // GC5035 specific + cal_shutter = exp_line >> 2; + cal_shutter = cal_shutter << 2;//保证为4的整数倍 + if (cal_shutter != 0) { + Dgain_ratio = 256 * exp_line / cal_shutter; + } + ret = GC5035_IsiRegisterWriteIss(handle, 0xfe, 0x00); + if (ret != 0) { + return (RET_FAILURE); + } + ret = GC5035_IsiRegisterWriteIss(handle, 0x03, (cal_shutter >> 8) & 0x3F); + if (ret != 0) { + return (RET_FAILURE); + } + ret = GC5035_IsiRegisterWriteIss(handle, 0x04, cal_shutter & 0xFF); + if (ret != 0) { + return (RET_FAILURE); + } + + volatile int32_t reg; + TRACE(GC5035_DEBUG, "%s exp_line = %fs / %fs = %d\n",__func__, NewIntegrationTime, pGC5035Ctx->one_line_exp_time, exp_line); + TRACE(GC5035_DEBUG, "%s cal_shutter=%d,Dgain_ratio=%u\n", __func__, cal_shutter, Dgain_ratio); + TRACE(GC5035_DEBUG, "%s 0x03 write 0x%x, 0x04 write 0x%x\n", __func__, (cal_shutter >> 8) & 0x3F, cal_shutter & 0xFF); + GC5035_IsiRegisterReadIss(handle, 0x03, ®); + TRACE(GC5035_DEBUG, "%s 0x03 read 0x0%x\n",__func__, reg); + GC5035_IsiRegisterReadIss(handle, 0x04, ®); + TRACE(GC5035_DEBUG, "%s 0x04 read 0x0%x\n",__func__, reg); + + if (exp_line_old != exp_line) { + *pSetIntegrationTime = pGC5035Ctx->AecCurIntegrationTime; + } else { + *pSetIntegrationTime = NewIntegrationTime; + } + + TRACE(GC5035_DEBUG, "%s: Ti=%f\n", __func__, *pSetIntegrationTime); + TRACE(GC5035_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT GC5035_IsiSetLongIntegrationTimeIss(IsiSensorHandle_t handle,float IntegrationTime) +{ + int ret; + TRACE(GC5035_INFO, "%s: (enter)\n", __func__); + + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + if (!handle || !pGC5035Ctx->IsiCtx.HalHandle) + { + TRACE(GC5035_ERROR,"%s: Invalid sensor handle (NULL pointer detected)\n",__func__); + return (RET_WRONG_HANDLE); + } + HalContext_t *pHalCtx = (HalContext_t *) pGC5035Ctx->IsiCtx.HalHandle; + + uint32_t exp_line = 0; + exp_line = IntegrationTime / pGC5035Ctx->one_line_exp_time; + exp_line = MIN(pGC5035Ctx->MaxIntegrationLine, MAX(pGC5035Ctx->MinIntegrationLine, exp_line)); + + if (exp_line != pGC5035Ctx->LastLongExpLine) + { + if (pGC5035Ctx->KernelDriverFlag) + { + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_LONG_EXP, &exp_line); + if (ret != 0) + { + TRACE(GC5035_ERROR,"%s: set long gain failed\n"); + return RET_FAILURE; + } + } + + pGC5035Ctx->LastLongExpLine = exp_line; + pGC5035Ctx->AecCurLongIntegrationTime = pGC5035Ctx->LastLongExpLine*pGC5035Ctx->one_line_exp_time; + } + + + TRACE(GC5035_INFO, "%s: (exit)\n", __func__); + return (RET_SUCCESS); +} + +RESULT GC5035_IsiSetVSIntegrationTimeIss + (IsiSensorHandle_t handle, + float NewIntegrationTime, + float *pSetVSIntegrationTime, + uint8_t * pNumberOfFramesToSkip, float *hdr_ratio) +{ + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + RESULT result = RET_SUCCESS; + uint32_t exp_line = 0; + + TRACE(GC5035_INFO, "%s: (enter)\n", __func__); + + if (!pGC5035Ctx) { + TRACE(GC5035_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pSetVSIntegrationTime || !pNumberOfFramesToSkip) { + TRACE(GC5035_ERROR, + "%s: Invalid parameter (NULL pointer detected)\n", + __func__); + return (RET_NULL_POINTER); + } + + TRACE(GC5035_INFO, + "%s: maxIntegrationTime-=%f minIntegrationTime = %f\n", __func__, + pGC5035Ctx->AecMaxIntegrationTime, + pGC5035Ctx->AecMinIntegrationTime); + + + exp_line = NewIntegrationTime / pGC5035Ctx->one_line_exp_time; + exp_line = + MIN(pGC5035Ctx->MaxIntegrationLine, + MAX(pGC5035Ctx->MinIntegrationLine, exp_line)); + + if (exp_line != pGC5035Ctx->OldVsIntegrationTime) { + /*TODO*/ + // ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_VSEXP, &exp_line); + } else if (1){ + + pGC5035Ctx->OldVsIntegrationTime = exp_line; + pGC5035Ctx->AecCurVSIntegrationTime = exp_line * pGC5035Ctx->one_line_exp_time; //remember current integration time + *pNumberOfFramesToSkip = 1U; //skip 1 frame + } else { + *pNumberOfFramesToSkip = 0U; //no frame skip + } + + *pSetVSIntegrationTime = pGC5035Ctx->AecCurVSIntegrationTime; + + TRACE(GC5035_DEBUG, "%s: NewIntegrationTime=%f\n", __func__, + NewIntegrationTime); + TRACE(GC5035_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT GC5035_IsiExposureControlIss + (IsiSensorHandle_t handle, + float NewGain, + float NewIntegrationTime, + uint8_t * pNumberOfFramesToSkip, + float *pSetGain, float *pSetIntegrationTime, float *hdr_ratio) +{ + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + RESULT result = RET_SUCCESS; + int TmpGain; + /*TODO*/ + + TRACE(GC5035_INFO, "%s: (enter)\n", __func__); + + if (pGC5035Ctx == NULL) { + TRACE(GC5035_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if ((pNumberOfFramesToSkip == NULL) || (pSetGain == NULL) + || (pSetIntegrationTime == NULL)) { + TRACE(GC5035_ERROR, + "%s: Invalid parameter (NULL pointer detected)\n", + __func__); + return (RET_NULL_POINTER); + } + + TRACE(GC5035_ERROR, "%s: g=%f, Ti=%f\n", __func__, NewGain, + NewIntegrationTime); + + result = GC5035_IsiSetIntegrationTimeIss(handle, NewIntegrationTime, + pSetIntegrationTime, + pNumberOfFramesToSkip, hdr_ratio); + result = GC5035_IsiSetGainIss(handle, NewGain, pSetGain, hdr_ratio); + + pGC5035Ctx->CurHdrRatio = *hdr_ratio; + + TRACE(GC5035_INFO, "%s: (exit)\n", __func__); + + return result; +} + +RESULT GC5035_IsiGetCurrentExposureIss + (IsiSensorHandle_t handle, float *pSetGain, float *pSetIntegrationTime, float *hdr_ratio) { + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + RESULT result = RET_SUCCESS; + + TRACE(GC5035_INFO, "%s: (enter)\n", __func__); + + if (pGC5035Ctx == NULL) { + TRACE(GC5035_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if ((pSetGain == NULL) || (pSetIntegrationTime == NULL)) + return (RET_NULL_POINTER); + + *pSetGain = pGC5035Ctx->AecCurGain; + *pSetIntegrationTime = pGC5035Ctx->AecCurIntegrationTime; + *hdr_ratio = pGC5035Ctx->CurHdrRatio; + + TRACE(GC5035_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT GC5035_IsiGetResolutionIss(IsiSensorHandle_t handle, uint16_t *pwidth, uint16_t *pheight) { + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + RESULT result = RET_SUCCESS; + + TRACE(GC5035_INFO, "%s: (enter)\n", __func__); + + if (pGC5035Ctx == NULL) { + TRACE(GC5035_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + *pwidth = pGC5035Ctx->SensorMode.width; + *pheight = pGC5035Ctx->SensorMode.height; + + TRACE(GC5035_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT GC5035_IsiGetSensorFpsIss(IsiSensorHandle_t handle, uint32_t * pfps) +{ + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + RESULT result = RET_SUCCESS; + + + TRACE(GC5035_INFO, "%s: (enter)\n", __func__); + + if (pGC5035Ctx == NULL) { + TRACE(GC5035_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + HalContext_t *pHalCtx = (HalContext_t *) pGC5035Ctx->IsiCtx.HalHandle; + + if (pGC5035Ctx->KernelDriverFlag) { + /*TODO*/ + ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_FPS, pfps); + pGC5035Ctx->CurrFps = *pfps; + } + + *pfps = pGC5035Ctx->CurrFps; + + TRACE(GC5035_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT GC5035_IsiSetSensorFpsIss(IsiSensorHandle_t handle, uint32_t fps) +{ + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + RESULT result = RET_SUCCESS; + int32_t ret = 0; + TRACE(GC5035_INFO, "%s: (enter)\n", __func__); + + if (pGC5035Ctx == NULL) { + TRACE(GC5035_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + HalContext_t *pHalCtx = (HalContext_t *) pGC5035Ctx->IsiCtx.HalHandle; + + if (fps > pGC5035Ctx->MaxFps) { + TRACE(GC5035_ERROR, + "%s: set fps(%d) out of range, correct to %d (%d, %d)\n", + __func__, fps, pGC5035Ctx->MaxFps, pGC5035Ctx->MinFps, + pGC5035Ctx->MaxFps); + fps = pGC5035Ctx->MaxFps; + } + if (fps < pGC5035Ctx->MinFps) { + TRACE(GC5035_ERROR, + "%s: set fps(%d) out of range, correct to %d (%d, %d)\n", + __func__, fps, pGC5035Ctx->MinFps, pGC5035Ctx->MinFps, + pGC5035Ctx->MaxFps); + fps = pGC5035Ctx->MinFps; + } + if (pGC5035Ctx->KernelDriverFlag) { + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_FPS, &fps); + if (ret != 0) { + TRACE(GC5035_ERROR, "%s: set sensor fps=%d error\n", + __func__); + return (RET_FAILURE); + } + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_SENSOR_MODE, &(pGC5035Ctx->SensorMode)); + { + pGC5035Ctx->MaxIntegrationLine = pGC5035Ctx->SensorMode.ae_info.max_integration_time; + pGC5035Ctx->AecMaxIntegrationTime = pGC5035Ctx->MaxIntegrationLine * pGC5035Ctx->one_line_exp_time; + } +#ifdef SUBDEV_CHAR + struct vvcam_ae_info_s ae_info; + ret = + ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_AE_INFO, &ae_info); + if (ret != 0) { + TRACE(GC5035_ERROR, "%s:sensor get ae info error!\n", + __func__); + return (RET_FAILURE); + } + pGC5035Ctx->one_line_exp_time = + (float)ae_info.one_line_exp_time_ns / 1000000000; + pGC5035Ctx->MaxIntegrationLine = ae_info.max_integration_time; + pGC5035Ctx->AecMaxIntegrationTime = + pGC5035Ctx->MaxIntegrationLine * + pGC5035Ctx->one_line_exp_time; +#endif + } + + TRACE(GC5035_INFO, "%s: set sensor fps = %d\n", __func__, + pGC5035Ctx->CurrFps); + + TRACE(GC5035_INFO, "%s: (exit)\n", __func__); + return (result); +} + +static RESULT GC5035_IsiActivateTestPattern(IsiSensorHandle_t handle, + const bool_t enable) +{ + RESULT result = RET_SUCCESS; + + TRACE(GC5035_INFO, "%s: (enter)\n", __func__); + + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + if (pGC5035Ctx == NULL || pGC5035Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + if (pGC5035Ctx->Configured != BOOL_TRUE) + return RET_WRONG_STATE; + + if (BOOL_TRUE == enable) { + //result = GC5035_IsiRegisterWriteIss(handle, 0x3253, 0x80); + } else { + //result = GC5035_IsiRegisterWriteIss(handle, 0x3253, 0x00); + } + pGC5035Ctx->TestPattern = enable; + + TRACE(GC5035_INFO, "%s: (exit)\n", __func__); + + return (result); +} + +static RESULT GC5035_IsiSensorSetBlcIss(IsiSensorHandle_t handle, sensor_blc_t * pblc) +{ + int32_t ret = 0; + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + if (pGC5035Ctx == NULL || pGC5035Ctx->IsiCtx.HalHandle == NULL) { + return RET_WRONG_HANDLE; + } + + if (pblc == NULL) + return RET_NULL_POINTER; + + HalContext_t *pHalCtx = (HalContext_t *) pGC5035Ctx->IsiCtx.HalHandle; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_BLC, pblc); + if (ret != 0) + { + TRACE(GC5035_ERROR, "%s: set wb error\n", __func__); + } + + return RET_SUCCESS; +} + +static RESULT GC5035_IsiSensorSetWBIss(IsiSensorHandle_t handle, sensor_white_balance_t * pwb) +{ + int32_t ret = 0; + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + if (pGC5035Ctx == NULL || pGC5035Ctx->IsiCtx.HalHandle == NULL) { + return RET_WRONG_HANDLE; + } + HalContext_t *pHalCtx = (HalContext_t *) pGC5035Ctx->IsiCtx.HalHandle; + + if (pwb == NULL) + return RET_NULL_POINTER; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_WB, pwb); + if (ret != 0) + { + TRACE(GC5035_ERROR, "%s: set wb error\n", __func__); + } + + return RET_SUCCESS; +} + +static RESULT GC5035_IsiGetSensorAWBModeIss(IsiSensorHandle_t handle, IsiSensorAwbMode_t *pawbmode) +{ + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + if (pGC5035Ctx == NULL || pGC5035Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + if (pGC5035Ctx->SensorMode.hdr_mode == SENSOR_MODE_HDR_NATIVE){ + *pawbmode = ISI_SENSOR_AWB_MODE_SENSOR; + }else{ + *pawbmode = ISI_SENSOR_AWB_MODE_NORMAL; + } + return RET_SUCCESS; +} + +static RESULT GC5035_IsiSensorGetExpandCurveIss(IsiSensorHandle_t handle, sensor_expand_curve_t * pexpand_curve) +{ + int32_t ret = 0; + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + if (pGC5035Ctx == NULL || pGC5035Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pGC5035Ctx->IsiCtx.HalHandle; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_EXPAND_CURVE, pexpand_curve); + if (ret != 0) + { + TRACE(GC5035_ERROR, "%s: get expand cure error\n", __func__); + return RET_FAILURE; + } + + return RET_SUCCESS; +} + +static RESULT GC5035_IsiGetCapsIss(IsiSensorHandle_t handle, + IsiSensorCaps_t * pIsiSensorCaps) +{ + GC5035_Context_t *pGC5035Ctx = (GC5035_Context_t *) handle; + + RESULT result = RET_SUCCESS; + + TRACE(GC5035_INFO, "%s (enter)\n", __func__); + + if (pGC5035Ctx == NULL) { + return (RET_WRONG_HANDLE); + } + + if (pIsiSensorCaps == NULL) { + return (RET_NULL_POINTER); + } + + pIsiSensorCaps->BusWidth = pGC5035Ctx->SensorMode.bit_width; + pIsiSensorCaps->Mode = ISI_MODE_BAYER; + pIsiSensorCaps->FieldSelection = ISI_FIELDSEL_BOTH; + pIsiSensorCaps->YCSequence = ISI_YCSEQ_YCBYCR; + pIsiSensorCaps->Conv422 = ISI_CONV422_NOCOSITED; + pIsiSensorCaps->BPat = pGC5035Ctx->SensorMode.bayer_pattern; + pIsiSensorCaps->HPol = ISI_HPOL_REFPOS; + pIsiSensorCaps->VPol = ISI_VPOL_NEG; + pIsiSensorCaps->Edge = ISI_EDGE_RISING; + pIsiSensorCaps->Resolution.width = pGC5035Ctx->SensorMode.width; + pIsiSensorCaps->Resolution.height = pGC5035Ctx->SensorMode.height; + pIsiSensorCaps->SmiaMode = ISI_SMIA_OFF; + pIsiSensorCaps->MipiLanes = ISI_MIPI_2LANES; + + if (pIsiSensorCaps->BusWidth == 10) { + pIsiSensorCaps->MipiMode = ISI_MIPI_MODE_RAW_10; + }else if (pIsiSensorCaps->BusWidth == 12){ + pIsiSensorCaps->MipiMode = ISI_MIPI_MODE_RAW_12; + }else{ + pIsiSensorCaps->MipiMode = ISI_MIPI_OFF; + } + + TRACE(GC5035_INFO, "%s (exit)\n", __func__); + return result; +} + +RESULT GC5035_IsiGetSensorIss(IsiSensor_t *pIsiSensor) +{ + RESULT result = RET_SUCCESS; + TRACE( GC5035_INFO, "%s (enter)\n", __func__); + + if ( pIsiSensor != NULL ) { + pIsiSensor->pszName = SensorName; + pIsiSensor->pIsiCreateSensorIss = GC5035_IsiCreateSensorIss; + + pIsiSensor->pIsiInitSensorIss = GC5035_IsiInitSensorIss; + pIsiSensor->pIsiGetSensorModeIss = GC5035_IsiGetSensorModeIss; + pIsiSensor->pIsiResetSensorIss = GC5035_IsiResetSensorIss; + pIsiSensor->pIsiReleaseSensorIss = GC5035_IsiReleaseSensorIss; + pIsiSensor->pIsiGetCapsIss = GC5035_IsiGetCapsIss; + pIsiSensor->pIsiSetupSensorIss = GC5035_IsiSetupSensorIss; + pIsiSensor->pIsiChangeSensorResolutionIss = GC5035_IsiChangeSensorResolutionIss; + pIsiSensor->pIsiSensorSetStreamingIss = GC5035_IsiSensorSetStreamingIss; + pIsiSensor->pIsiSensorSetPowerIss = GC5035_IsiSensorSetPowerIss; + pIsiSensor->pIsiCheckSensorConnectionIss = GC5035_IsiCheckSensorConnectionIss; + pIsiSensor->pIsiGetSensorRevisionIss = GC5035_IsiGetSensorRevisionIss; + pIsiSensor->pIsiRegisterReadIss = GC5035_IsiRegisterReadIss; + pIsiSensor->pIsiRegisterWriteIss = GC5035_IsiRegisterWriteIss; + + /* AEC functions */ + pIsiSensor->pIsiExposureControlIss = GC5035_IsiExposureControlIss; + pIsiSensor->pIsiGetGainLimitsIss = GC5035_IsiGetGainLimitsIss; + pIsiSensor->pIsiGetIntegrationTimeLimitsIss = GC5035_IsiGetIntegrationTimeLimitsIss; + pIsiSensor->pIsiGetCurrentExposureIss = GC5035_IsiGetCurrentExposureIss; + pIsiSensor->pIsiGetVSGainIss = GC5035_IsiGetVSGainIss; + pIsiSensor->pIsiGetGainIss = GC5035_IsiGetGainIss; + pIsiSensor->pIsiGetLongGainIss = GC5035_IsiGetLongGainIss; + pIsiSensor->pIsiGetGainIncrementIss = GC5035_IsiGetGainIncrementIss; + pIsiSensor->pIsiSetGainIss = GC5035_IsiSetGainIss; + pIsiSensor->pIsiGetIntegrationTimeIss = GC5035_IsiGetIntegrationTimeIss; + pIsiSensor->pIsiGetVSIntegrationTimeIss = GC5035_IsiGetVSIntegrationTimeIss; + pIsiSensor->pIsiGetLongIntegrationTimeIss = GC5035_IsiGetLongIntegrationTimeIss; + pIsiSensor->pIsiGetIntegrationTimeIncrementIss = GC5035_IsiGetIntegrationTimeIncrementIss; + pIsiSensor->pIsiSetIntegrationTimeIss = GC5035_IsiSetIntegrationTimeIss; + pIsiSensor->pIsiQuerySensorIss = GC5035_IsiQuerySensorIss; + pIsiSensor->pIsiGetResolutionIss = GC5035_IsiGetResolutionIss; + pIsiSensor->pIsiGetSensorFpsIss = GC5035_IsiGetSensorFpsIss; + pIsiSensor->pIsiSetSensorFpsIss = GC5035_IsiSetSensorFpsIss; + pIsiSensor->pIsiSensorGetExpandCurveIss = GC5035_IsiSensorGetExpandCurveIss; + + /* AWB specific functions */ + + /* Testpattern */ + pIsiSensor->pIsiActivateTestPattern = GC5035_IsiActivateTestPattern; + pIsiSensor->pIsiSetBayerPattern = GC5035_IsiSetBayerPattern; + + pIsiSensor->pIsiSensorSetBlcIss = GC5035_IsiSensorSetBlcIss; + pIsiSensor->pIsiSensorSetWBIss = GC5035_IsiSensorSetWBIss; + pIsiSensor->pIsiGetSensorAWBModeIss = GC5035_IsiGetSensorAWBModeIss; + + } else { + result = RET_NULL_POINTER; + } + + TRACE( GC5035_INFO, "%s (exit)\n", __func__); + return ( result ); +} + +/***************************************************************************** +* each sensor driver need declare this struct for isi load +*****************************************************************************/ +IsiCamDrvConfig_t GC5035_IsiCamDrvConfig = { + 0, + GC5035_IsiQuerySensorSupportIss, + GC5035_IsiGetSensorIss, + { + SensorName, /**< IsiSensor_t.pszName */ + 0, /**< IsiSensor_t.pIsiInitIss>*/ + 0, /**< IsiSensor_t.pIsiResetSensorIss>*/ + 0, /**< IsiSensor_t.pRegisterTable */ + 0, /**< IsiSensor_t.pIsiSensorCaps */ + 0, /**< IsiSensor_t.pIsiCreateSensorIss */ + 0, /**< IsiSensor_t.pIsiReleaseSensorIss */ + 0, /**< IsiSensor_t.pIsiGetCapsIss */ + 0, /**< IsiSensor_t.pIsiSetupSensorIss */ + 0, /**< IsiSensor_t.pIsiChangeSensorResolutionIss */ + 0, /**< IsiSensor_t.pIsiSensorSetStreamingIss */ + 0, /**< IsiSensor_t.pIsiSensorSetPowerIss */ + 0, /**< IsiSensor_t.pIsiCheckSensorConnectionIss */ + 0, /**< IsiSensor_t.pIsiGetSensorRevisionIss */ + 0, /**< IsiSensor_t.pIsiRegisterReadIss */ + 0, /**< IsiSensor_t.pIsiRegisterWriteIss */ + + 0, /**< IsiSensor_t.pIsiExposureControlIss */ + 0, /**< IsiSensor_t.pIsiGetGainLimitsIss */ + 0, /**< IsiSensor_t.pIsiGetIntegrationTimeLimitsIss */ + 0, /**< IsiSensor_t.pIsiGetCurrentExposureIss */ + 0, /**< IsiSensor_t.pIsiGetGainIss */ + 0, /**< IsiSensor_t.pIsiGetVSGainIss */ + 0, /**< IsiSensor_t.pIsiGetGainIncrementIss */ + 0, /**< IsiSensor_t.pIsiGetGainIncrementIss */ + 0, /**< IsiSensor_t.pIsiSetGainIss */ + 0, /**< IsiSensor_t.pIsiGetIntegrationTimeIss */ + 0, /**< IsiSensor_t.pIsiGetIntegrationTimeIncrementIss */ + 0, /**< IsiSensor_t.pIsiSetIntegrationTimeIss */ + 0, /**< IsiSensor_t.pIsiGetResolutionIss */ + 0, /**< IsiSensor_t.pIsiGetAfpsInfoIss */ + + 0, /**< IsiSensor_t.pIsiMdiInitMotoDriveMds */ + 0, /**< IsiSensor_t.pIsiMdiSetupMotoDrive */ + 0, /**< IsiSensor_t.pIsiMdiFocusSet */ + 0, /**< IsiSensor_t.pIsiMdiFocusGet */ + 0, /**< IsiSensor_t.pIsiMdiFocusCalibrate */ + 0, /**< IsiSensor_t.pIsiGetSensorMipiInfoIss */ + 0, /**< IsiSensor_t.pIsiActivateTestPattern */ + 0, /**< IsiSensor_t.pIsiSetBayerPattern */ + } +}; diff --git a/drivers/GC5035/GC5035.xml b/drivers/GC5035/GC5035.xml new file mode 100644 index 0000000..d12b5e3 --- /dev/null +++ b/drivers/GC5035/GC5035.xml @@ -0,0 +1,1287 @@ + + +
+ + 08-Feb-2022 + + + Mcf + + + gc5035 + + + 5Mlens_480p + + + v2.1.1 + + + + + 640x480 + + + 0x00000001 + + + [ 640] + + + [ 480] + + + + + FPS_15 + + + [ 14.9916] + + + + + FPS_10 + + + [ 9.9944] + + + + + FPS_05 + + + [ 4.9972] + + + + + +
+ + + + + + 640x480 + + + 640x480 + + + [0.316211 0.450278 0.23351] + + + [-0.747965 0.0904144 0.657551 0.327436 -0.811475 0.48404] + + + [-0.800277 -0.59963 -2.3607] + + + [1.03557 1.08428 1.13299 1.18171 1.23042 1.27913 1.32326 1.36926 1.42527 1.48345 1.53323 1.58745 1.63332 1.67663 1.72844 1.8246] + + + [-0.00414674 0.0285734 0.0458083 0.0590686 0.0684166 0.0745711 0.103537 0.171416 0.0766262 0.0287319 0.0187589 -0.00721015 0.00860515 0.00149051 0.00465507 0.02029] + + + [1.03557 1.09863 1.139 1.17938 1.22525 1.28052 1.32736 1.3712 1.41647 1.4737 1.50747 1.58012 1.62599 1.68328 1.73065 1.8204] + + + [0.104147 0.08587 0.0736434 0.0614168 0.0456015 0.0519858 0.0426176 0.0399399 0.0599487 0.0792273 0.116206 0.144303 0.128488 0.121734 0.102574 0.058049] + + + [0.828809 0.890615 0.957978 1.01338 1.0697 1.12955 1.1988 1.26015 1.33667 1.40375 1.49365 1.54193 1.61013 1.68533 1.74067 1.8553] + + + [-0.0307749 -0.0139859 0.0324236 0.0781028 0.0913031 0.120986 0.12847 0.161498 0.228047 0.227677 0.120452 0.107133 0.0950322 0.089865 0.109512 0.12302] + + + [0.845777 0.891118 0.939466 1.01166 1.0779 1.13324 1.19655 1.26633 1.34355 1.39837 1.46455 1.53792 1.60233 1.67208 1.74842 1.8597] + + + [0.208678 0.202655 0.189942 0.2018 0.201007 0.181359 0.161225 0.143949 0.135979 0.126124 0.151362 0.184872 0.224283 0.209637 0.166558 0.091439] + + + [ 1.0356] + + + [ 1.82] + + + [ 1.85] + + + [ 1.474] + + + D50 + + + [ 4.5676] + + + [0.75 1.28836 1.77672 2.164 2.6 3.0618] + + + [114 114 105 95 95 90] + + + [83 83 110 120 122 128] + + + [28 27 18 16 9 9] + + + [123 123 123 123 123 120] + + + [123 123 123 123 123 126] + + + [5 5 5 5 5 5] + + + [ 1] + + + [ 0.8] + + + [ 0.05] + + + + [ 0.05] + + + [ 0.05] + + + [ 0.4] + + + [ 0.5] + + + [ 0.9] + + + [ 0.5] + + + [ 50] + + + [ 1] + + + [ 0.5] + + + + + + + + A + + + Indoor + + + + [1132.49 1537.15 1537.15 4218.7397] + + + [ 247.3246] + + + [1 1] + + + [-0.0885832 0.012733] + + + + + + 640x480 + + + 640x480_A_100 + + + + + [1.11716 1 1 2.3808] + + + [1.99853 -0.905653 -0.0821708 -0.460996 1.77912 -0.258076 -0.151399 -1.53815 2.713] + + + [-29.8061 -52.306 -95.824] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + A_100 + + + + + + D50 + + + Outdoor + + + + [329.787 3.43476 3.43476 1629.9174] + + + [ 116.6849] + + + [1 1] + + + [0.0586363 0.0057683] + + + + + + 640x480 + + + 640x480_D50_100 + + + + + [1.64416 1 1 1.6405] + + + [2.097 -1.12811 0.0410741 -0.327961 1.77429 -0.380266 -0.0366512 -0.804392 1.8682] + + + [-40.7723 -43.9103 -61.7554] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D50_100 + + + + + + D65 + + + Outdoor + + + + [342.947 -200.069 -200.069 1325.0367] + + + [ 102.4529] + + + [1 1] + + + [0.115106 0.012733] + + + + + + 640x480 + + + 640x480_D65_100 + + + + + [1.92224 1 1 1.428] + + + [2.14135 -1.15688 0.0270315 -0.332497 1.83306 -0.43858 -0.0348043 -0.657467 1.7185] + + + [-47.0355 -42.0548 -56.246] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D65_100 + + + + + + F2 (CWF) + + + Indoor + + + + [533.138 -316.589 -316.589 1155.6585] + + + [ 114.3146] + + + [1 1] + + + [0.00647981 -0.026117] + + + + + + 640x480 + + + 640x480_F2_100 + + + + + [1.55891 1 1 2.0968] + + + [2.56944 -1.54023 0.0045255 -0.421136 1.74591 -0.223588 -0.101719 -0.718139 1.8415] + + + [-55.5346 -60.5148 -88.6402] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F2_100 + + + + + + F11 (TL84) + + + Indoor + + + + [395.155 -67.974 -67.974 1176.0173] + + + [ 107.9546] + + + [1 1] + + + [0.00547574 -0.011106] + + + + + + 640x480 + + + 640x480_F11_100 + + + + + [1.49049 1 1 1.9841] + + + [1.91878 -0.849702 -0.0555984 -0.407686 1.7518 -0.292535 -0.10781 -0.692012 1.8706] + + + [-55.1752 -65.3873 -90.5846] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F11_100 + + + + + + + + + 640x480_A_100 + + + 640x480 + + + A + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [34 37 38 38 42 42 46 43] + + + [28 29 31 30 31 30 31 30] + + + [ 100] + + + [1267 1245 1224 1199 1181 1167 1164 1159 1168 1179 1196 1222 1255 1289 1331 1373 1416 1244 1222 1193 1172 1156 1140 1137 1132 1141 1152 1173 1196 1231 1262 1303 1349 1389 1222 1194 1167 1150 1128 1122 1110 1112 1111 1132 1149 1170 1206 1236 1279 1318 1359 1196 1174 1145 1124 1110 1092 1089 1087 1093 1108 1122 1151 1183 1214 1255 1297 1342 1183 1153 1129 1109 1091 1077 1073 1073 1076 1086 1110 1128 1162 1196 1232 1279 1316 1164 1139 1110 1092 1078 1061 1057 1052 1061 1069 1090 1112 1146 1177 1216 1259 1303 1152 1125 1099 1080 1062 1051 1045 1044 1045 1061 1075 1100 1131 1165 1198 1247 1290 1145 1115 1092 1070 1055 1042 1038 1036 1041 1049 1070 1093 1123 1156 1194 1238 1279 1137 1111 1085 1067 1052 1040 1032 1031 1033 1045 1064 1088 1114 1150 1185 1231 1267 1133 1105 1082 1066 1047 1036 1031 1024 1032 1041 1057 1081 1114 1147 1180 1225 1269 1130 1109 1082 1063 1047 1034 1030 1026 1034 1040 1059 1084 1110 1146 1184 1227 1276 1135 1109 1085 1064 1052 1039 1029 1032 1033 1046 1063 1081 1116 1146 1183 1227 1268 1139 1111 1091 1069 1056 1043 1038 1036 1039 1049 1064 1090 1119 1155 1191 1234 1277 1146 1123 1094 1081 1062 1051 1046 1043 1050 1059 1077 1099 1130 1160 1203 1242 1287 1157 1135 1107 1088 1077 1062 1057 1057 1058 1070 1089 1113 1143 1179 1214 1259 1301 1174 1145 1124 1103 1087 1076 1069 1067 1072 1085 1101 1126 1163 1192 1230 1271 1319 1184 1157 1137 1116 1098 1090 1083 1079 1091 1099 1119 1142 1173 1208 1248 1287 1334] + + + [1249 1229 1202 1183 1165 1150 1147 1139 1139 1150 1165 1180 1211 1231 1265 1298 1334 1227 1210 1181 1165 1144 1131 1121 1116 1118 1128 1141 1164 1188 1206 1242 1278 1300 1214 1183 1161 1139 1125 1108 1105 1097 1098 1107 1123 1141 1164 1189 1224 1254 1287 1179 1166 1139 1122 1103 1094 1080 1078 1077 1088 1100 1121 1138 1172 1201 1235 1267 1175 1150 1125 1105 1088 1073 1063 1061 1065 1072 1082 1107 1125 1153 1182 1216 1252 1162 1137 1111 1091 1076 1061 1052 1046 1050 1052 1072 1088 1116 1141 1172 1203 1238 1152 1123 1099 1082 1064 1054 1043 1035 1040 1046 1059 1079 1104 1133 1156 1193 1225 1144 1117 1098 1075 1062 1043 1040 1030 1032 1037 1055 1069 1097 1117 1150 1188 1214 1135 1117 1094 1072 1054 1041 1034 1028 1029 1036 1048 1066 1090 1119 1143 1184 1211 1136 1115 1089 1070 1054 1041 1030 1024 1029 1033 1047 1066 1090 1115 1140 1175 1210 1134 1112 1090 1073 1052 1040 1032 1025 1032 1034 1048 1065 1088 1112 1148 1177 1211 1142 1116 1097 1075 1057 1047 1037 1035 1030 1041 1054 1069 1094 1118 1150 1177 1217 1142 1118 1098 1079 1064 1050 1041 1038 1036 1044 1056 1075 1098 1127 1154 1190 1221 1154 1131 1109 1087 1072 1059 1051 1046 1050 1050 1068 1085 1110 1132 1164 1195 1230 1162 1139 1121 1099 1085 1067 1062 1060 1058 1068 1080 1095 1125 1150 1176 1212 1241 1177 1152 1131 1113 1100 1079 1079 1071 1071 1082 1087 1109 1134 1161 1192 1221 1262 1187 1160 1144 1122 1110 1099 1088 1086 1085 1098 1109 1127 1150 1175 1210 1237 1264] + + + [1235 1221 1194 1178 1157 1152 1140 1137 1137 1148 1169 1188 1220 1245 1279 1312 1351 1225 1198 1174 1157 1141 1128 1119 1117 1119 1132 1149 1170 1196 1224 1255 1295 1328 1202 1176 1154 1140 1121 1107 1103 1096 1099 1114 1125 1148 1174 1203 1237 1270 1303 1178 1163 1136 1116 1105 1085 1083 1076 1080 1089 1105 1124 1151 1182 1216 1253 1287 1168 1142 1123 1102 1084 1072 1065 1061 1065 1076 1091 1113 1138 1165 1201 1232 1275 1153 1130 1105 1086 1073 1062 1051 1047 1051 1059 1077 1096 1126 1150 1184 1221 1260 1139 1121 1092 1081 1064 1051 1042 1040 1041 1050 1064 1090 1117 1140 1171 1205 1248 1136 1114 1090 1072 1057 1043 1038 1033 1035 1047 1058 1078 1108 1138 1164 1205 1237 1130 1109 1087 1067 1054 1039 1031 1031 1035 1039 1055 1078 1103 1128 1163 1196 1234 1129 1108 1086 1068 1053 1039 1034 1024 1033 1036 1055 1073 1101 1128 1157 1194 1231 1131 1112 1085 1068 1051 1040 1033 1027 1033 1041 1055 1075 1102 1131 1160 1200 1233 1132 1108 1090 1070 1058 1041 1038 1032 1032 1046 1057 1077 1103 1134 1162 1202 1231 1141 1117 1095 1077 1062 1048 1043 1040 1042 1049 1065 1088 1112 1143 1171 1206 1244 1144 1124 1104 1087 1069 1057 1050 1047 1052 1061 1071 1095 1122 1147 1180 1217 1251 1158 1133 1115 1094 1080 1069 1064 1063 1062 1068 1092 1106 1137 1163 1195 1232 1261 1166 1146 1132 1104 1094 1081 1077 1072 1074 1088 1096 1122 1151 1176 1214 1242 1285 1183 1158 1136 1124 1109 1091 1083 1087 1089 1101 1116 1134 1163 1194 1223 1258 1296] + + + [1208 1197 1181 1166 1152 1150 1133 1142 1146 1161 1168 1188 1224 1236 1275 1299 1333 1201 1174 1161 1143 1128 1120 1121 1119 1127 1135 1156 1170 1199 1227 1251 1290 1320 1170 1162 1140 1125 1111 1106 1098 1099 1097 1117 1131 1150 1174 1208 1244 1269 1312 1156 1142 1121 1102 1096 1082 1080 1083 1088 1101 1112 1136 1156 1184 1218 1250 1280 1142 1123 1105 1093 1079 1071 1067 1068 1076 1085 1102 1120 1144 1173 1200 1233 1275 1140 1110 1094 1081 1065 1059 1053 1057 1060 1075 1087 1107 1130 1153 1191 1227 1249 1118 1105 1080 1067 1058 1044 1054 1040 1055 1059 1082 1100 1123 1152 1178 1208 1248 1115 1092 1076 1063 1050 1043 1038 1043 1038 1058 1070 1088 1112 1142 1166 1206 1245 1111 1093 1070 1052 1050 1041 1034 1028 1039 1049 1063 1090 1106 1136 1164 1195 1228 1107 1083 1066 1054 1039 1030 1036 1035 1038 1047 1057 1076 1105 1130 1161 1195 1230 1101 1091 1071 1051 1043 1034 1036 1024 1036 1047 1062 1079 1099 1132 1160 1193 1226 1110 1090 1071 1054 1047 1034 1031 1033 1035 1045 1061 1079 1107 1135 1166 1192 1240 1116 1087 1073 1062 1044 1038 1034 1035 1040 1049 1067 1081 1113 1135 1166 1198 1230 1125 1102 1079 1061 1054 1047 1041 1042 1046 1050 1073 1084 1114 1144 1173 1202 1239 1135 1103 1092 1070 1059 1054 1046 1046 1051 1061 1080 1092 1128 1148 1183 1213 1247 1140 1119 1103 1082 1069 1060 1056 1060 1056 1072 1086 1107 1133 1154 1193 1229 1256 1156 1135 1107 1104 1083 1074 1070 1062 1069 1083 1106 1116 1149 1169 1203 1235 1265] + + + + + 640x480_D50_100 + + + 640x480 + + + D50 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [32 39 38 40 40 44 45 42] + + + [28 29 30 31 30 32 30 30] + + + [ 100] + + + [1259 1230 1211 1184 1171 1160 1154 1153 1162 1174 1192 1220 1252 1279 1318 1363 1405 1232 1206 1176 1161 1146 1130 1132 1129 1135 1152 1166 1193 1219 1257 1294 1335 1372 1206 1180 1158 1137 1125 1115 1106 1107 1111 1130 1144 1170 1202 1231 1272 1312 1352 1185 1164 1133 1117 1104 1090 1091 1086 1092 1104 1124 1151 1172 1211 1248 1288 1319 1169 1148 1117 1096 1084 1074 1069 1068 1080 1088 1106 1125 1157 1190 1226 1270 1310 1154 1123 1100 1086 1069 1059 1054 1054 1061 1068 1090 1114 1141 1177 1213 1254 1295 1135 1116 1092 1072 1058 1046 1045 1043 1051 1059 1075 1107 1126 1163 1196 1239 1282 1131 1105 1082 1062 1049 1041 1036 1039 1041 1053 1072 1092 1118 1154 1190 1235 1272 1122 1103 1078 1056 1047 1038 1031 1027 1038 1046 1064 1091 1114 1145 1184 1226 1265 1117 1098 1073 1055 1039 1030 1029 1027 1034 1045 1061 1085 1108 1144 1175 1222 1259 1124 1094 1069 1058 1040 1031 1028 1024 1035 1044 1058 1083 1110 1141 1178 1220 1260 1118 1099 1076 1054 1044 1035 1029 1035 1031 1048 1061 1085 1112 1143 1179 1221 1262 1127 1098 1080 1058 1047 1036 1034 1031 1040 1047 1064 1087 1116 1147 1187 1226 1266 1135 1107 1082 1066 1051 1043 1040 1042 1044 1057 1072 1094 1122 1156 1196 1234 1270 1134 1119 1097 1075 1059 1052 1050 1050 1056 1067 1083 1108 1134 1168 1205 1249 1288 1155 1130 1108 1091 1077 1065 1060 1064 1063 1079 1095 1118 1150 1185 1218 1264 1295 1165 1143 1119 1102 1086 1078 1073 1074 1078 1091 1110 1133 1158 1194 1232 1270 1316] + + + [1242 1215 1200 1169 1154 1144 1137 1131 1134 1139 1152 1177 1200 1222 1252 1290 1313 1223 1193 1171 1155 1136 1121 1115 1108 1109 1122 1130 1153 1174 1200 1231 1269 1292 1200 1178 1151 1132 1117 1106 1096 1090 1092 1101 1114 1130 1153 1181 1213 1246 1275 1179 1160 1130 1113 1100 1086 1076 1071 1077 1081 1093 1115 1134 1163 1193 1222 1259 1168 1143 1120 1101 1083 1071 1059 1061 1061 1066 1078 1098 1119 1147 1176 1211 1246 1152 1130 1105 1090 1070 1058 1050 1044 1046 1056 1063 1083 1108 1132 1166 1200 1229 1135 1121 1097 1080 1062 1048 1040 1038 1036 1043 1057 1076 1097 1125 1149 1187 1224 1140 1114 1092 1072 1058 1046 1038 1027 1028 1034 1051 1070 1089 1111 1144 1180 1209 1132 1115 1088 1068 1053 1039 1029 1029 1030 1034 1046 1062 1086 1113 1141 1175 1206 1132 1106 1085 1068 1049 1039 1030 1024 1028 1034 1046 1065 1085 1111 1137 1173 1202 1131 1111 1086 1068 1053 1036 1030 1025 1028 1033 1046 1060 1085 1109 1138 1173 1200 1136 1111 1089 1069 1054 1045 1033 1031 1027 1038 1050 1069 1090 1115 1143 1175 1212 1135 1116 1093 1074 1059 1045 1040 1032 1036 1042 1056 1073 1093 1120 1148 1181 1210 1148 1124 1101 1082 1069 1057 1045 1044 1046 1051 1062 1082 1105 1128 1157 1194 1224 1153 1133 1111 1094 1077 1064 1057 1057 1056 1063 1076 1093 1115 1140 1170 1207 1228 1165 1143 1122 1107 1091 1076 1067 1068 1066 1077 1085 1105 1128 1153 1184 1222 1247 1174 1159 1140 1115 1102 1089 1081 1078 1083 1090 1100 1122 1139 1166 1202 1227 1253] + + + [1218 1206 1185 1167 1153 1136 1132 1127 1137 1141 1155 1179 1205 1227 1256 1302 1320 1207 1185 1163 1145 1127 1118 1111 1110 1109 1121 1136 1157 1183 1213 1240 1272 1305 1185 1165 1141 1127 1110 1098 1094 1087 1091 1104 1114 1135 1161 1186 1218 1257 1278 1165 1148 1125 1108 1094 1081 1077 1072 1075 1085 1099 1120 1138 1172 1203 1238 1270 1154 1131 1113 1092 1079 1063 1058 1057 1061 1067 1081 1102 1126 1155 1184 1218 1255 1138 1120 1094 1080 1064 1055 1047 1043 1047 1053 1070 1089 1112 1140 1175 1207 1241 1129 1110 1087 1070 1056 1044 1040 1037 1038 1045 1059 1080 1105 1134 1159 1196 1235 1124 1107 1082 1066 1050 1042 1033 1027 1029 1040 1052 1071 1097 1124 1153 1188 1225 1118 1102 1081 1061 1049 1033 1030 1025 1033 1036 1053 1071 1093 1124 1150 1186 1218 1124 1100 1078 1063 1044 1039 1029 1024 1028 1038 1052 1067 1093 1120 1146 1185 1217 1124 1100 1079 1062 1045 1034 1031 1024 1028 1037 1051 1069 1094 1118 1150 1191 1214 1125 1103 1082 1064 1053 1038 1032 1031 1034 1042 1056 1073 1100 1126 1153 1194 1222 1131 1105 1089 1069 1058 1044 1041 1038 1037 1044 1064 1081 1102 1132 1162 1199 1226 1133 1115 1097 1081 1067 1055 1047 1046 1051 1057 1069 1090 1118 1143 1168 1208 1240 1147 1124 1107 1086 1076 1064 1060 1056 1058 1068 1086 1101 1128 1147 1184 1221 1248 1156 1143 1119 1100 1089 1074 1074 1069 1074 1083 1095 1117 1139 1165 1200 1234 1266 1172 1150 1128 1115 1100 1095 1084 1080 1090 1092 1110 1125 1157 1183 1212 1248 1280] + + + [1189 1186 1161 1140 1137 1125 1119 1123 1120 1137 1140 1161 1176 1204 1231 1268 1300 1179 1165 1141 1129 1111 1107 1100 1100 1105 1115 1124 1140 1167 1185 1220 1239 1270 1170 1141 1127 1113 1097 1088 1085 1081 1084 1093 1107 1126 1145 1166 1200 1230 1258 1150 1136 1109 1095 1086 1072 1067 1069 1071 1082 1092 1113 1130 1153 1181 1212 1237 1134 1115 1096 1079 1072 1057 1057 1054 1058 1069 1080 1093 1114 1139 1167 1205 1229 1120 1104 1086 1071 1060 1049 1044 1046 1048 1058 1065 1085 1109 1130 1159 1184 1213 1116 1101 1079 1063 1054 1043 1040 1033 1041 1044 1061 1077 1095 1124 1146 1180 1209 1111 1090 1074 1056 1045 1039 1030 1035 1036 1043 1050 1069 1092 1114 1139 1174 1194 1106 1089 1069 1053 1046 1036 1028 1025 1033 1040 1053 1068 1087 1108 1136 1170 1198 1105 1089 1073 1054 1040 1032 1028 1028 1029 1037 1046 1060 1088 1109 1137 1170 1195 1101 1091 1067 1055 1044 1031 1029 1024 1029 1034 1048 1067 1087 1108 1137 1166 1195 1102 1090 1070 1057 1040 1035 1030 1030 1029 1041 1051 1068 1088 1112 1142 1171 1202 1114 1090 1078 1060 1048 1037 1032 1036 1037 1039 1056 1073 1090 1118 1140 1182 1204 1121 1099 1085 1067 1055 1050 1039 1038 1044 1050 1063 1078 1100 1126 1155 1187 1209 1130 1105 1090 1075 1063 1055 1050 1051 1049 1062 1070 1087 1111 1132 1162 1189 1222 1135 1120 1104 1088 1074 1064 1057 1058 1061 1065 1082 1095 1119 1142 1175 1206 1231 1147 1135 1113 1103 1080 1078 1069 1071 1067 1087 1098 1111 1130 1158 1188 1207 1247] + + + + + 640x480_D65_100 + + + 640x480 + + + D65 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [34 38 41 41 41 41 44 40] + + + [28 28 29 29 32 30 33 31] + + + [ 100] + + + [1245 1230 1202 1182 1170 1168 1155 1163 1160 1176 1197 1220 1248 1270 1323 1364 1395 1227 1204 1180 1159 1143 1136 1133 1131 1142 1153 1172 1192 1223 1258 1297 1334 1368 1211 1174 1158 1141 1121 1117 1112 1114 1114 1135 1149 1170 1200 1232 1270 1314 1350 1186 1165 1134 1116 1101 1098 1094 1092 1101 1111 1128 1153 1181 1217 1250 1293 1331 1163 1141 1120 1100 1094 1073 1079 1078 1086 1092 1110 1133 1161 1195 1235 1274 1303 1153 1127 1100 1090 1072 1066 1058 1062 1068 1080 1096 1118 1147 1175 1215 1253 1298 1135 1117 1092 1070 1062 1050 1053 1046 1056 1064 1083 1106 1132 1162 1203 1241 1280 1131 1106 1077 1062 1049 1044 1041 1041 1045 1061 1076 1097 1126 1154 1189 1241 1261 1124 1094 1079 1057 1046 1042 1030 1034 1042 1055 1066 1089 1111 1152 1188 1220 1264 1115 1097 1070 1053 1038 1036 1033 1035 1038 1047 1065 1090 1112 1141 1181 1226 1269 1114 1095 1070 1053 1045 1032 1024 1029 1039 1048 1064 1085 1110 1144 1186 1218 1259 1121 1095 1073 1052 1043 1034 1035 1029 1037 1051 1067 1083 1114 1141 1183 1223 1261 1123 1096 1080 1059 1044 1042 1033 1042 1043 1056 1070 1090 1116 1153 1186 1225 1270 1136 1108 1081 1066 1053 1047 1042 1044 1048 1059 1074 1094 1126 1156 1192 1238 1271 1141 1113 1096 1076 1061 1050 1051 1051 1060 1072 1085 1109 1131 1169 1212 1246 1282 1149 1129 1103 1083 1074 1066 1063 1066 1067 1079 1097 1119 1149 1177 1217 1256 1302 1168 1134 1122 1098 1084 1080 1068 1079 1080 1090 1110 1131 1151 1190 1232 1268 1313] + + + [1237 1219 1196 1170 1151 1142 1147 1135 1135 1141 1157 1171 1195 1222 1250 1299 1311 1223 1195 1175 1153 1139 1121 1120 1110 1114 1120 1135 1150 1179 1196 1235 1266 1300 1202 1179 1154 1137 1117 1107 1100 1096 1093 1103 1116 1135 1155 1184 1212 1250 1278 1183 1165 1137 1116 1107 1086 1083 1076 1078 1084 1097 1113 1138 1164 1200 1227 1265 1173 1149 1128 1103 1091 1070 1065 1066 1065 1070 1084 1102 1120 1151 1175 1216 1249 1167 1134 1108 1092 1070 1065 1050 1049 1053 1059 1068 1083 1111 1133 1168 1205 1237 1144 1121 1098 1080 1067 1049 1047 1039 1046 1049 1058 1077 1097 1128 1156 1191 1226 1144 1114 1096 1076 1059 1046 1038 1034 1030 1040 1055 1071 1086 1119 1146 1182 1215 1136 1112 1091 1072 1053 1044 1033 1033 1033 1040 1047 1068 1086 1112 1144 1181 1215 1137 1110 1089 1071 1053 1043 1033 1024 1031 1036 1046 1063 1088 1111 1141 1172 1212 1136 1113 1089 1069 1054 1040 1034 1033 1031 1041 1051 1064 1083 1114 1145 1178 1214 1142 1115 1093 1074 1058 1043 1039 1035 1035 1034 1052 1069 1091 1118 1147 1183 1208 1142 1116 1095 1078 1061 1052 1041 1036 1040 1048 1056 1077 1095 1124 1153 1185 1222 1150 1132 1105 1087 1072 1053 1054 1045 1050 1053 1067 1083 1104 1132 1165 1196 1224 1157 1132 1114 1095 1078 1069 1063 1057 1056 1064 1078 1091 1118 1137 1173 1206 1237 1170 1145 1126 1107 1091 1075 1068 1070 1067 1076 1087 1110 1126 1155 1183 1220 1253 1176 1156 1134 1122 1100 1095 1084 1082 1084 1090 1101 1115 1140 1164 1204 1234 1263] + + + [1217 1208 1175 1156 1145 1140 1131 1129 1130 1136 1157 1171 1199 1219 1258 1292 1312 1200 1179 1159 1145 1125 1116 1113 1106 1113 1123 1131 1155 1175 1206 1236 1269 1302 1185 1160 1137 1125 1106 1098 1094 1086 1089 1103 1117 1134 1159 1180 1220 1249 1274 1163 1149 1122 1104 1088 1081 1076 1073 1073 1085 1096 1116 1136 1169 1201 1235 1270 1150 1132 1108 1092 1077 1066 1059 1060 1063 1070 1080 1100 1123 1151 1183 1219 1252 1134 1120 1096 1076 1064 1053 1044 1044 1051 1053 1066 1088 1108 1139 1171 1201 1244 1123 1111 1086 1071 1055 1047 1040 1036 1038 1044 1059 1079 1098 1127 1159 1193 1228 1124 1101 1077 1064 1047 1040 1034 1031 1032 1043 1051 1070 1094 1122 1150 1189 1216 1117 1098 1077 1060 1043 1033 1029 1027 1030 1036 1051 1069 1090 1117 1149 1183 1219 1122 1096 1073 1060 1042 1036 1026 1024 1030 1040 1050 1066 1088 1118 1143 1182 1220 1116 1098 1071 1059 1045 1035 1029 1026 1032 1034 1051 1066 1092 1114 1148 1183 1218 1123 1100 1079 1062 1049 1039 1033 1034 1031 1042 1054 1069 1095 1121 1152 1186 1220 1127 1106 1085 1065 1056 1048 1040 1036 1042 1051 1063 1080 1101 1132 1162 1196 1225 1134 1116 1095 1079 1059 1051 1052 1047 1050 1054 1070 1090 1114 1137 1169 1202 1238 1145 1129 1101 1084 1076 1062 1059 1058 1059 1071 1084 1101 1125 1153 1185 1216 1248 1153 1137 1117 1100 1082 1081 1068 1072 1075 1081 1094 1114 1138 1166 1196 1227 1262 1166 1145 1130 1111 1102 1087 1089 1080 1089 1101 1107 1129 1158 1171 1213 1244 1273] + + + [1191 1181 1159 1136 1129 1118 1115 1108 1114 1124 1135 1140 1177 1195 1223 1242 1284 1175 1157 1141 1124 1111 1105 1094 1095 1104 1101 1115 1134 1151 1173 1212 1239 1255 1168 1142 1125 1103 1094 1084 1077 1082 1075 1090 1097 1115 1134 1162 1189 1218 1248 1145 1124 1108 1094 1083 1066 1069 1067 1066 1077 1084 1100 1120 1143 1176 1204 1227 1134 1118 1094 1079 1070 1060 1054 1054 1055 1062 1075 1089 1109 1132 1158 1195 1221 1121 1107 1080 1074 1059 1045 1042 1043 1043 1057 1060 1076 1095 1122 1152 1180 1201 1113 1098 1078 1060 1048 1043 1037 1034 1038 1039 1056 1072 1093 1111 1143 1171 1210 1109 1089 1071 1057 1045 1034 1032 1029 1031 1037 1050 1062 1081 1106 1136 1161 1200 1106 1090 1070 1052 1045 1032 1024 1027 1030 1033 1045 1062 1079 1104 1125 1162 1183 1104 1091 1065 1052 1042 1031 1028 1024 1026 1036 1042 1057 1075 1100 1131 1157 1188 1103 1088 1069 1053 1042 1027 1030 1026 1028 1033 1046 1059 1077 1100 1129 1162 1191 1106 1093 1070 1058 1042 1034 1031 1027 1032 1038 1049 1068 1084 1103 1136 1171 1194 1121 1090 1075 1063 1050 1041 1031 1033 1033 1043 1058 1064 1090 1114 1138 1168 1193 1112 1101 1087 1068 1054 1048 1044 1041 1048 1049 1057 1077 1094 1116 1149 1176 1206 1131 1110 1091 1076 1063 1053 1047 1056 1048 1060 1069 1083 1105 1129 1159 1186 1214 1138 1123 1105 1086 1073 1061 1063 1058 1060 1067 1080 1091 1115 1141 1169 1198 1220 1147 1135 1111 1101 1083 1081 1073 1068 1073 1083 1088 1109 1134 1148 1176 1211 1239] + + + + + 640x480_F11_100 + + + 640x480 + + + F11 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [35 38 39 41 42 41 42 42] + + + [27 28 31 32 30 30 32 30] + + + [ 100] + + + [1234 1210 1188 1170 1156 1139 1136 1138 1145 1154 1168 1188 1222 1245 1288 1317 1357 1215 1193 1165 1144 1135 1120 1120 1125 1124 1135 1151 1171 1195 1226 1264 1297 1336 1194 1166 1149 1129 1111 1103 1100 1099 1103 1109 1128 1151 1177 1207 1243 1277 1313 1170 1153 1126 1107 1092 1082 1082 1077 1088 1093 1106 1127 1155 1187 1221 1261 1294 1152 1134 1108 1095 1078 1067 1062 1062 1067 1080 1094 1113 1138 1167 1203 1242 1274 1144 1115 1094 1080 1065 1058 1054 1050 1058 1064 1082 1099 1130 1158 1192 1228 1273 1134 1109 1087 1070 1057 1044 1042 1047 1045 1055 1069 1087 1118 1147 1179 1217 1249 1122 1100 1078 1063 1044 1041 1037 1031 1042 1049 1064 1080 1112 1137 1171 1208 1242 1112 1095 1076 1057 1043 1037 1030 1033 1039 1049 1058 1077 1100 1138 1163 1200 1241 1110 1095 1071 1052 1042 1027 1024 1031 1032 1043 1059 1078 1098 1129 1159 1196 1231 1118 1087 1069 1052 1040 1031 1029 1026 1033 1041 1056 1074 1108 1125 1167 1198 1236 1116 1094 1073 1056 1040 1034 1030 1032 1035 1042 1063 1078 1098 1136 1165 1198 1236 1127 1092 1075 1060 1045 1036 1038 1033 1041 1054 1062 1081 1109 1138 1169 1208 1250 1126 1102 1086 1066 1055 1045 1042 1041 1051 1056 1072 1091 1116 1148 1177 1212 1248 1137 1112 1095 1076 1062 1056 1047 1054 1054 1070 1083 1103 1131 1156 1192 1227 1262 1143 1126 1103 1090 1072 1065 1063 1060 1069 1077 1094 1111 1137 1167 1201 1241 1278 1158 1141 1113 1096 1084 1081 1070 1073 1081 1089 1106 1129 1151 1182 1217 1243 1283] + + + [1221 1207 1183 1171 1153 1135 1135 1127 1127 1142 1149 1162 1188 1208 1238 1279 1302 1211 1190 1163 1148 1128 1119 1113 1101 1110 1113 1126 1148 1168 1189 1219 1254 1271 1184 1172 1151 1126 1115 1099 1093 1092 1088 1100 1107 1125 1152 1172 1203 1233 1268 1171 1152 1125 1109 1095 1086 1078 1072 1071 1086 1091 1108 1124 1158 1181 1213 1243 1153 1137 1116 1095 1080 1069 1058 1056 1061 1065 1073 1093 1113 1139 1169 1196 1237 1144 1123 1102 1085 1067 1060 1048 1045 1051 1050 1065 1078 1099 1124 1155 1186 1209 1134 1112 1096 1075 1062 1050 1040 1035 1040 1045 1050 1069 1091 1118 1147 1175 1207 1131 1109 1089 1070 1055 1042 1036 1028 1029 1036 1051 1062 1083 1109 1137 1167 1197 1123 1108 1085 1067 1050 1038 1031 1028 1032 1038 1041 1064 1082 1107 1127 1167 1191 1129 1101 1082 1069 1048 1035 1032 1024 1028 1033 1046 1059 1081 1106 1126 1157 1191 1124 1107 1084 1069 1054 1041 1031 1029 1028 1036 1042 1063 1080 1106 1133 1159 1192 1130 1106 1087 1069 1057 1043 1037 1031 1029 1039 1050 1066 1087 1111 1138 1164 1200 1138 1110 1096 1074 1059 1051 1037 1039 1037 1046 1055 1074 1091 1117 1141 1175 1200 1137 1120 1100 1082 1073 1055 1054 1045 1051 1051 1067 1080 1103 1126 1151 1185 1214 1153 1131 1107 1093 1082 1066 1061 1060 1058 1068 1075 1092 1114 1134 1163 1193 1224 1156 1141 1122 1107 1090 1079 1074 1068 1072 1078 1086 1107 1126 1152 1178 1205 1241 1174 1148 1135 1117 1102 1094 1090 1078 1085 1086 1109 1105 1140 1161 1188 1218 1251] + + + [1216 1198 1180 1160 1144 1131 1126 1123 1125 1133 1146 1166 1195 1215 1249 1286 1317 1202 1173 1155 1136 1123 1113 1107 1109 1106 1119 1130 1147 1173 1204 1232 1260 1296 1182 1160 1137 1124 1106 1097 1090 1089 1082 1103 1112 1126 1151 1178 1209 1244 1278 1161 1144 1120 1106 1088 1077 1077 1068 1067 1079 1091 1111 1128 1163 1189 1230 1257 1146 1131 1107 1086 1076 1062 1054 1057 1059 1062 1077 1093 1119 1145 1180 1206 1248 1135 1117 1094 1079 1064 1050 1045 1042 1045 1049 1064 1080 1104 1132 1161 1197 1231 1133 1107 1087 1070 1053 1046 1037 1037 1039 1044 1056 1069 1100 1124 1154 1184 1223 1128 1101 1078 1065 1048 1037 1034 1027 1028 1038 1049 1067 1092 1120 1140 1186 1206 1115 1102 1078 1059 1046 1036 1027 1024 1028 1034 1049 1066 1084 1111 1145 1175 1211 1117 1093 1081 1064 1047 1033 1028 1024 1030 1034 1049 1063 1086 1115 1138 1171 1206 1117 1104 1078 1062 1043 1037 1029 1029 1026 1038 1049 1068 1088 1113 1146 1180 1215 1121 1103 1078 1065 1056 1040 1038 1031 1032 1038 1055 1071 1090 1123 1144 1184 1214 1126 1110 1088 1074 1054 1046 1042 1038 1041 1050 1060 1077 1102 1128 1158 1187 1221 1137 1118 1094 1078 1069 1054 1053 1050 1051 1057 1069 1088 1109 1139 1159 1200 1233 1145 1126 1108 1089 1077 1066 1060 1057 1059 1068 1083 1099 1125 1147 1180 1210 1245 1155 1134 1119 1102 1087 1080 1076 1068 1075 1083 1095 1109 1137 1158 1194 1230 1253 1167 1152 1126 1115 1099 1088 1083 1090 1086 1094 1107 1122 1145 1176 1203 1231 1277] + + + [1196 1187 1165 1148 1134 1119 1120 1125 1127 1138 1145 1166 1185 1209 1240 1276 1295 1180 1167 1151 1130 1112 1122 1111 1108 1109 1120 1131 1142 1175 1194 1221 1245 1282 1167 1146 1128 1117 1094 1096 1089 1087 1095 1106 1111 1131 1151 1175 1206 1230 1271 1156 1129 1110 1091 1087 1078 1072 1076 1070 1091 1094 1117 1137 1160 1187 1220 1241 1127 1122 1100 1084 1070 1066 1057 1063 1065 1072 1084 1096 1121 1144 1174 1201 1236 1127 1102 1084 1076 1062 1058 1049 1047 1051 1059 1075 1088 1108 1131 1165 1191 1219 1112 1103 1080 1066 1050 1050 1040 1039 1047 1055 1061 1084 1101 1128 1152 1179 1214 1117 1086 1070 1059 1046 1038 1038 1038 1037 1048 1062 1073 1096 1117 1147 1167 1221 1105 1089 1066 1056 1045 1037 1030 1029 1039 1042 1055 1069 1092 1117 1141 1171 1201 1102 1087 1073 1049 1047 1031 1033 1024 1032 1039 1057 1067 1089 1113 1142 1175 1202 1097 1088 1062 1052 1042 1037 1033 1030 1031 1042 1053 1067 1091 1115 1138 1173 1203 1111 1083 1064 1062 1042 1036 1029 1031 1034 1042 1052 1075 1098 1114 1144 1172 1205 1105 1091 1071 1061 1044 1040 1038 1037 1040 1046 1061 1069 1094 1124 1148 1179 1207 1117 1089 1082 1062 1052 1046 1041 1041 1043 1052 1061 1084 1106 1123 1158 1178 1219 1122 1107 1086 1078 1061 1052 1051 1052 1051 1061 1074 1084 1118 1140 1161 1192 1231 1131 1120 1100 1078 1073 1061 1058 1061 1058 1068 1085 1097 1116 1147 1176 1208 1235 1139 1130 1116 1087 1079 1066 1073 1059 1074 1072 1091 1115 1137 1152 1186 1207 1247] + + + + + 640x480_F2_100 + + + 640x480 + + + F2 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [35 38 37 40 44 40 43 43] + + + [29 28 29 29 32 30 32 31] + + + [ 100] + + + [1238 1214 1199 1171 1160 1148 1139 1146 1144 1160 1172 1188 1223 1254 1287 1320 1364 1214 1192 1163 1146 1134 1124 1124 1113 1123 1136 1152 1169 1201 1228 1258 1299 1338 1197 1167 1147 1134 1109 1105 1099 1096 1104 1117 1130 1155 1176 1211 1244 1276 1313 1173 1150 1124 1115 1098 1085 1087 1077 1089 1098 1111 1131 1158 1190 1225 1257 1297 1160 1136 1116 1092 1082 1074 1062 1068 1072 1083 1097 1116 1146 1179 1202 1239 1284 1150 1118 1097 1078 1066 1055 1055 1049 1056 1062 1085 1101 1128 1160 1191 1227 1263 1130 1112 1081 1073 1058 1047 1045 1042 1048 1053 1072 1093 1117 1150 1181 1215 1252 1128 1096 1079 1064 1050 1040 1037 1033 1042 1049 1071 1080 1110 1140 1162 1204 1244 1115 1094 1073 1055 1043 1035 1031 1031 1033 1048 1059 1082 1101 1136 1170 1196 1239 1111 1093 1072 1053 1039 1033 1027 1024 1035 1047 1058 1073 1103 1129 1156 1196 1238 1118 1093 1067 1054 1043 1032 1028 1026 1032 1038 1060 1077 1100 1129 1165 1205 1226 1122 1090 1069 1056 1041 1035 1031 1029 1030 1046 1061 1071 1105 1134 1162 1198 1244 1118 1096 1079 1056 1046 1039 1035 1034 1038 1046 1063 1083 1106 1135 1171 1204 1242 1124 1104 1083 1066 1048 1048 1041 1045 1047 1059 1073 1089 1116 1145 1171 1219 1247 1139 1113 1088 1077 1064 1053 1053 1050 1052 1064 1080 1097 1129 1154 1184 1222 1259 1144 1125 1106 1086 1070 1063 1060 1055 1062 1076 1091 1107 1141 1169 1197 1234 1276 1159 1140 1115 1100 1085 1075 1074 1072 1074 1089 1105 1131 1144 1176 1214 1252 1291] + + + [1239 1213 1191 1168 1148 1140 1142 1126 1128 1140 1150 1166 1198 1217 1254 1286 1310 1212 1194 1165 1154 1134 1120 1107 1108 1108 1120 1130 1148 1174 1195 1228 1254 1291 1199 1172 1153 1127 1113 1102 1099 1089 1092 1101 1114 1127 1150 1177 1203 1240 1271 1174 1159 1130 1113 1101 1085 1078 1071 1073 1079 1095 1111 1131 1164 1188 1220 1254 1163 1140 1117 1100 1079 1068 1058 1060 1060 1067 1078 1098 1117 1146 1172 1205 1239 1149 1125 1106 1089 1071 1060 1047 1047 1044 1053 1064 1079 1105 1133 1158 1192 1223 1136 1116 1098 1080 1064 1048 1043 1035 1041 1042 1056 1071 1097 1123 1147 1181 1216 1135 1110 1091 1072 1059 1041 1037 1025 1033 1037 1052 1064 1090 1113 1140 1173 1199 1134 1109 1085 1070 1051 1043 1028 1027 1031 1035 1046 1064 1084 1105 1139 1169 1202 1122 1108 1082 1067 1049 1038 1033 1024 1027 1037 1046 1058 1082 1110 1127 1163 1202 1125 1110 1082 1068 1052 1036 1034 1026 1030 1032 1047 1060 1082 1105 1138 1165 1202 1132 1110 1085 1070 1058 1042 1039 1033 1028 1039 1050 1065 1087 1113 1136 1168 1203 1126 1110 1091 1074 1061 1050 1040 1036 1040 1044 1056 1070 1096 1119 1143 1181 1207 1147 1118 1098 1084 1070 1053 1049 1044 1045 1053 1063 1080 1104 1127 1154 1184 1220 1148 1127 1111 1089 1077 1068 1061 1052 1054 1062 1074 1090 1114 1137 1164 1201 1233 1158 1142 1124 1103 1091 1073 1069 1068 1072 1075 1085 1106 1123 1152 1182 1209 1241 1184 1146 1134 1113 1103 1088 1087 1078 1079 1089 1103 1115 1142 1165 1192 1223 1260] + + + [1235 1205 1182 1158 1144 1137 1131 1129 1129 1140 1155 1174 1206 1225 1256 1290 1322 1201 1185 1161 1144 1131 1114 1112 1102 1112 1120 1133 1150 1175 1210 1233 1267 1304 1193 1162 1141 1128 1105 1102 1091 1085 1094 1102 1112 1132 1156 1181 1218 1251 1282 1163 1152 1123 1109 1095 1079 1078 1072 1068 1083 1097 1114 1145 1168 1197 1232 1265 1158 1131 1111 1095 1076 1066 1061 1057 1062 1069 1082 1098 1122 1156 1182 1214 1254 1137 1122 1097 1082 1067 1053 1045 1043 1042 1052 1068 1087 1111 1137 1170 1203 1238 1137 1108 1088 1073 1058 1048 1040 1038 1042 1047 1060 1078 1105 1131 1158 1194 1226 1128 1107 1085 1065 1053 1042 1037 1032 1029 1043 1052 1067 1094 1123 1146 1182 1216 1119 1101 1081 1064 1051 1035 1030 1024 1032 1036 1051 1070 1089 1117 1146 1184 1207 1125 1105 1080 1064 1047 1037 1027 1027 1029 1039 1046 1066 1091 1119 1144 1174 1214 1121 1102 1077 1063 1051 1039 1029 1027 1028 1038 1051 1068 1094 1117 1144 1184 1214 1128 1105 1084 1069 1054 1037 1036 1038 1032 1042 1054 1073 1093 1127 1155 1185 1219 1131 1111 1089 1073 1057 1048 1042 1037 1039 1050 1061 1078 1104 1130 1156 1195 1225 1140 1116 1098 1080 1065 1054 1047 1050 1051 1056 1074 1088 1111 1140 1167 1202 1233 1144 1124 1107 1089 1079 1064 1065 1054 1060 1070 1085 1097 1126 1146 1177 1218 1248 1159 1137 1119 1103 1088 1077 1074 1072 1074 1079 1095 1111 1140 1165 1201 1231 1260 1165 1151 1133 1118 1102 1090 1086 1077 1088 1095 1113 1123 1152 1176 1209 1238 1280] + + + [1206 1181 1163 1143 1125 1124 1115 1125 1120 1143 1149 1165 1189 1212 1239 1278 1296 1178 1165 1143 1134 1114 1110 1104 1102 1107 1115 1131 1142 1172 1190 1221 1254 1270 1168 1149 1129 1116 1094 1094 1090 1084 1094 1104 1118 1128 1153 1185 1208 1231 1275 1143 1135 1103 1100 1085 1076 1072 1078 1072 1089 1097 1121 1136 1164 1187 1228 1231 1135 1120 1098 1082 1075 1063 1062 1061 1069 1080 1094 1101 1130 1145 1173 1205 1244 1124 1103 1089 1071 1060 1053 1048 1047 1056 1063 1071 1088 1114 1140 1164 1191 1226 1110 1096 1072 1069 1052 1046 1048 1041 1049 1045 1070 1082 1103 1129 1159 1184 1214 1105 1081 1071 1057 1047 1033 1035 1037 1040 1050 1061 1073 1103 1119 1143 1174 1204 1106 1084 1068 1052 1049 1036 1030 1027 1040 1044 1061 1073 1092 1125 1138 1174 1195 1104 1084 1064 1053 1046 1036 1032 1024 1029 1040 1050 1069 1087 1117 1140 1176 1205 1103 1087 1069 1052 1043 1033 1035 1028 1035 1040 1051 1068 1090 1116 1145 1166 1199 1105 1086 1068 1051 1046 1035 1030 1039 1031 1044 1054 1076 1092 1125 1136 1183 1202 1114 1087 1079 1058 1042 1035 1034 1035 1037 1046 1062 1073 1097 1124 1145 1179 1206 1114 1100 1074 1066 1050 1047 1037 1045 1046 1055 1067 1078 1099 1132 1154 1187 1216 1127 1096 1086 1076 1057 1051 1050 1049 1047 1059 1073 1091 1110 1131 1164 1196 1220 1135 1118 1097 1084 1071 1054 1052 1052 1066 1071 1084 1091 1127 1148 1170 1201 1235 1153 1127 1116 1086 1080 1076 1061 1078 1070 1087 1095 1108 1124 1161 1187 1226 1241] + + + + + + + A_100 + + + [ 100] + + + [1.99853 -0.905653 -0.0821708 -0.460996 1.77912 -0.258076 -0.151399 -1.53815 2.713] + + + [-29.8061 -52.306 -95.824] + + + [1.11716 1 1 2.3808] + + + + + D50_100 + + + [ 100] + + + [2.097 -1.12811 0.0410741 -0.327961 1.77429 -0.380266 -0.0366512 -0.804392 1.8682] + + + [-40.7723 -43.9103 -61.7554] + + + [1.64416 1 1 1.6405] + + + + + D65_100 + + + [ 100] + + + [2.14135 -1.15688 0.0270315 -0.332497 1.83306 -0.43858 -0.0348043 -0.657467 1.7185] + + + [-47.0355 -42.0548 -56.246] + + + [1.92224 1 1 1.428] + + + + + F11_100 + + + [ 100] + + + [1.91878 -0.849702 -0.0555984 -0.407686 1.7518 -0.292535 -0.10781 -0.692012 1.8706] + + + [-55.1752 -65.3873 -90.5846] + + + [1.49049 1 1 1.9841] + + + + + F2_100 + + + [ 100] + + + [2.56944 -1.54023 0.0045255 -0.421136 1.74591 -0.223588 -0.101719 -0.718139 1.8415] + + + [-55.5346 -60.5148 -88.6402] + + + [1.55891 1 1 2.0968] + + + + + + [ -1] + + + + + [ 80] + + + [ 20] + + + [ 0.7] + + + [ 0.7] + + + [ 0.7] + + + [ 0.9] + + + + + 640x480_FPS_15 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 640x480_FPS_10 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 640x480_FPS_05 + + + + + fast + + + [ 1] + + + [ 1] + + + + + normal + + + [ 2] + + + [ 0.9] + + + + + slow + + + [ 4] + + + [ 0.9] + + + + + + + [ 8] + + + + + + 1280x720 + + + 1280x720 + + + [256 256 256 256] + + + + + + + linear + + + [256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4096] + + + [0 256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4095] + + + + + + [ -1] + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + + + 1280x720 + + + 1280x720 + + + [ 5] + + + [ 22] + + + [ 5] + + + [ 22] + + + [ 0] + + + [ 0] + + + [-0.125 -0.4375 0.6875] + + + [1.0625 -2.875 1.6875] + + + + + + + 640x480 + + + 640x480 + + + [ 1] + + + [1023 841 652 551 486 405 354 319 292 254 228 209 181 162 148 137 129] + + + [ 4] + + + [ 4] + + + [ 0.15] + + + [ 0] + + + [1 1 1 1] + + + + + + + 640x480 + + + 640x480 + + + + + ISP_DPCC_MODE + + + 0x0004 + + + + + ISP_DPCC_OUT_MODE + + + 0x0003 + + + + + ISP_DPCC_SET_USE + + + 0x0007 + + + + + ISP_DPCC_METHODS_SET1 + + + 0x1D1D + + + + + ISP_DPCC_METHODS_SET2 + + + 0x0707 + + + + + ISP_DPCC_METHODS_SET3 + + + 0x1F1F + + + + + ISP_DPCC_LINE_THRESH_1 + + + 0x0808 + + + + + ISP_DPCC_LINE_MAD_FAC_1 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_1 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_1 + + + 0x0A0A + + + + + ISP_DPCC_RG_FAC_1 + + + 0x2020 + + + + + ISP_DPCC_LINE_THRESH_2 + + + 0x100C + + + + + ISP_DPCC_LINE_MAD_FAC_2 + + + 0x1810 + + + + + ISP_DPCC_PG_FAC_2 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_2 + + + 0x0808 + + + + + ISP_DPCC_RG_FAC_2 + + + 0x0808 + + + + + ISP_DPCC_LINE_THRESH_3 + + + 0x2020 + + + + + ISP_DPCC_LINE_MAD_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_3 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_3 + + + 0x0806 + + + + + ISP_DPCC_RG_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_RO_LIMITS + + + 0x0A0A + + + + + ISP_DPCC_RND_OFFS + + + 0x0FFF + + + + + + + + + + on + + + +
diff --git a/drivers/GC5035/GC5035_1280x720.xml b/drivers/GC5035/GC5035_1280x720.xml new file mode 100644 index 0000000..084c522 --- /dev/null +++ b/drivers/GC5035/GC5035_1280x720.xml @@ -0,0 +1,1287 @@ + + +
+ + 08-Feb-2022 + + + Mcf + + + gc5035 + + + 5Mlens_720p + + + v2.1.1 + + + + + 1280x720 + + + 0x00000001 + + + [ 1280] + + + [ 720] + + + + + FPS_15 + + + [ 14.9916] + + + + + FPS_10 + + + [ 9.9944] + + + + + FPS_05 + + + [ 4.9972] + + + + + +
+ + + + + + 1280x720 + + + 1280x720 + + + [0.316211 0.450278 0.23351] + + + [-0.747965 0.0904144 0.657551 0.327436 -0.811475 0.48404] + + + [-0.800277 -0.59963 -2.3607] + + + [1.03557 1.08428 1.13299 1.18171 1.23042 1.27913 1.32326 1.36926 1.42527 1.48345 1.53323 1.58745 1.63332 1.67663 1.72844 1.8246] + + + [-0.00414674 0.0285734 0.0458083 0.0590686 0.0684166 0.0745711 0.103537 0.171416 0.0766262 0.0287319 0.0187589 -0.00721015 0.00860515 0.00149051 0.00465507 0.02029] + + + [1.03557 1.09863 1.139 1.17938 1.22525 1.28052 1.32736 1.3712 1.41647 1.4737 1.50747 1.58012 1.62599 1.68328 1.73065 1.8204] + + + [0.104147 0.08587 0.0736434 0.0614168 0.0456015 0.0519858 0.0426176 0.0399399 0.0599487 0.0792273 0.116206 0.144303 0.128488 0.121734 0.102574 0.058049] + + + [0.828809 0.890615 0.957978 1.01338 1.0697 1.12955 1.1988 1.26015 1.33667 1.40375 1.49365 1.54193 1.61013 1.68533 1.74067 1.8553] + + + [-0.0307749 -0.0139859 0.0324236 0.0781028 0.0913031 0.120986 0.12847 0.161498 0.228047 0.227677 0.120452 0.107133 0.0950322 0.089865 0.109512 0.12302] + + + [0.845777 0.891118 0.939466 1.01166 1.0779 1.13324 1.19655 1.26633 1.34355 1.39837 1.46455 1.53792 1.60233 1.67208 1.74842 1.8597] + + + [0.208678 0.202655 0.189942 0.2018 0.201007 0.181359 0.161225 0.143949 0.135979 0.126124 0.151362 0.184872 0.224283 0.209637 0.166558 0.091439] + + + [ 1.0356] + + + [ 1.82] + + + [ 1.85] + + + [ 1.474] + + + D50 + + + [ 4.5676] + + + [0.75 1.28836 1.77672 2.164 2.6 3.0618] + + + [114 114 105 95 95 90] + + + [83 83 110 120 122 128] + + + [28 27 18 16 9 9] + + + [123 123 123 123 123 120] + + + [123 123 123 123 123 126] + + + [5 5 5 5 5 5] + + + [ 1] + + + [ 0.8] + + + [ 0.05] + + + + [ 0.05] + + + [ 0.05] + + + [ 0.4] + + + [ 0.5] + + + [ 0.9] + + + [ 0.5] + + + [ 50] + + + [ 1] + + + [ 0.5] + + + + + + + + A + + + Indoor + + + + [1132.49 1537.15 1537.15 4218.7397] + + + [ 247.3246] + + + [1 1] + + + [-0.0885832 0.012733] + + + + + + 1280x720 + + + 1280x720_A_100 + + + + + [1.11716 1 1 2.3808] + + + [1.99853 -0.905653 -0.0821708 -0.460996 1.77912 -0.258076 -0.151399 -1.53815 2.713] + + + [-29.8061 -52.306 -95.824] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + A_100 + + + + + + D50 + + + Outdoor + + + + [329.787 3.43476 3.43476 1629.9174] + + + [ 116.6849] + + + [1 1] + + + [0.0586363 0.0057683] + + + + + + 1280x720 + + + 1280x720_D50_100 + + + + + [1.64416 1 1 1.6405] + + + [2.097 -1.12811 0.0410741 -0.327961 1.77429 -0.380266 -0.0366512 -0.804392 1.8682] + + + [-40.7723 -43.9103 -61.7554] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D50_100 + + + + + + D65 + + + Outdoor + + + + [342.947 -200.069 -200.069 1325.0367] + + + [ 102.4529] + + + [1 1] + + + [0.115106 0.012733] + + + + + + 1280x720 + + + 1280x720_D65_100 + + + + + [1.92224 1 1 1.428] + + + [2.14135 -1.15688 0.0270315 -0.332497 1.83306 -0.43858 -0.0348043 -0.657467 1.7185] + + + [-47.0355 -42.0548 -56.246] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D65_100 + + + + + + F2 (CWF) + + + Indoor + + + + [533.138 -316.589 -316.589 1155.6585] + + + [ 114.3146] + + + [1 1] + + + [0.00647981 -0.026117] + + + + + + 1280x720 + + + 1280x720_F2_100 + + + + + [1.55891 1 1 2.0968] + + + [2.56944 -1.54023 0.0045255 -0.421136 1.74591 -0.223588 -0.101719 -0.718139 1.8415] + + + [-55.5346 -60.5148 -88.6402] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F2_100 + + + + + + F11 (TL84) + + + Indoor + + + + [395.155 -67.974 -67.974 1176.0173] + + + [ 107.9546] + + + [1 1] + + + [0.00547574 -0.011106] + + + + + + 1280x720 + + + 1280x720_F11_100 + + + + + [1.49049 1 1 1.9841] + + + [1.91878 -0.849702 -0.0555984 -0.407686 1.7518 -0.292535 -0.10781 -0.692012 1.8706] + + + [-55.1752 -65.3873 -90.5846] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F11_100 + + + + + + + + + 1280x720_A_100 + + + 1280x720 + + + A + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [54 63 70 77 83 91 99 103] + + + [39 41 45 44 46 48 49 48] + + + [ 100] + + + [1860 1748 1669 1574 1482 1388 1324 1300 1304 1349 1422 1528 1639 1775 1923 2095 2259 1807 1690 1616 1527 1426 1330 1275 1247 1248 1293 1372 1472 1589 1719 1864 2028 2179 1758 1651 1543 1454 1360 1277 1225 1195 1199 1241 1320 1419 1538 1669 1814 1965 2101 1711 1603 1501 1401 1310 1235 1177 1147 1149 1190 1268 1369 1489 1620 1759 1901 2054 1660 1568 1463 1364 1271 1195 1139 1109 1111 1152 1227 1328 1450 1580 1714 1864 1992 1634 1529 1429 1327 1238 1160 1106 1077 1081 1118 1194 1294 1413 1543 1686 1819 1962 1609 1497 1405 1297 1213 1135 1082 1051 1055 1090 1163 1264 1384 1519 1654 1794 1921 1589 1480 1378 1284 1195 1116 1061 1037 1034 1076 1145 1243 1366 1493 1638 1772 1905 1576 1468 1368 1270 1180 1106 1054 1026 1029 1064 1133 1233 1351 1486 1629 1763 1884 1569 1465 1367 1266 1176 1104 1050 1024 1026 1060 1133 1230 1348 1482 1623 1754 1875 1572 1474 1367 1268 1181 1107 1055 1029 1029 1063 1136 1233 1353 1482 1627 1756 1890 1578 1474 1376 1274 1190 1117 1066 1038 1042 1075 1148 1245 1367 1495 1636 1770 1899 1595 1494 1394 1294 1208 1135 1083 1055 1058 1094 1170 1267 1385 1511 1658 1794 1914 1613 1514 1418 1319 1228 1155 1108 1078 1081 1119 1192 1292 1410 1542 1679 1817 1944 1644 1543 1449 1347 1261 1187 1134 1105 1111 1153 1226 1324 1444 1578 1714 1850 1973 1683 1577 1480 1385 1295 1220 1168 1140 1146 1185 1262 1362 1482 1613 1748 1889 2005 1717 1614 1521 1419 1335 1255 1204 1175 1182 1226 1298 1403 1526 1654 1788 1930 2061] + + + [1678 1625 1568 1498 1430 1345 1294 1263 1261 1294 1345 1428 1508 1601 1704 1822 1918 1657 1574 1527 1461 1381 1299 1246 1218 1216 1246 1308 1384 1469 1563 1661 1778 1865 1611 1545 1470 1402 1326 1257 1206 1176 1170 1203 1263 1342 1428 1522 1620 1722 1811 1572 1511 1432 1354 1280 1219 1166 1134 1128 1161 1217 1296 1391 1487 1578 1677 1765 1540 1475 1403 1325 1247 1185 1132 1103 1096 1125 1185 1263 1356 1447 1551 1645 1734 1509 1449 1370 1297 1219 1155 1105 1071 1068 1098 1156 1234 1325 1426 1518 1620 1692 1489 1426 1350 1269 1200 1134 1081 1050 1045 1072 1134 1210 1302 1400 1502 1592 1679 1479 1411 1333 1256 1186 1117 1069 1037 1030 1060 1116 1192 1288 1384 1485 1583 1663 1470 1397 1324 1249 1176 1113 1061 1029 1025 1051 1107 1186 1279 1376 1478 1571 1639 1458 1400 1325 1246 1173 1111 1060 1029 1024 1049 1105 1183 1274 1375 1476 1566 1636 1466 1400 1326 1249 1178 1115 1065 1036 1029 1056 1112 1187 1281 1375 1480 1571 1645 1466 1413 1333 1259 1187 1125 1077 1045 1043 1067 1126 1201 1290 1386 1488 1585 1656 1483 1420 1353 1272 1202 1142 1091 1066 1058 1087 1144 1222 1310 1404 1506 1600 1676 1501 1443 1366 1292 1220 1162 1117 1082 1084 1110 1168 1243 1331 1430 1525 1617 1694 1520 1463 1394 1318 1247 1191 1141 1114 1109 1140 1192 1271 1356 1460 1551 1642 1720 1552 1490 1421 1350 1281 1216 1172 1143 1146 1169 1227 1302 1394 1486 1581 1674 1755 1575 1517 1447 1375 1310 1246 1200 1175 1175 1200 1262 1337 1429 1517 1616 1706 1779] + + + [1683 1609 1554 1481 1405 1331 1276 1252 1257 1292 1352 1432 1525 1622 1734 1854 1958 1645 1568 1508 1446 1365 1285 1235 1213 1208 1246 1312 1391 1484 1584 1689 1810 1905 1613 1537 1457 1390 1311 1245 1196 1169 1170 1203 1266 1354 1445 1543 1649 1760 1848 1567 1509 1424 1346 1273 1208 1160 1131 1127 1162 1224 1309 1404 1506 1617 1716 1816 1543 1474 1393 1317 1240 1176 1128 1096 1096 1129 1194 1275 1372 1476 1582 1688 1765 1508 1451 1367 1290 1212 1149 1099 1070 1067 1100 1162 1247 1343 1452 1552 1654 1744 1493 1425 1345 1262 1194 1127 1076 1048 1044 1078 1140 1223 1322 1429 1538 1641 1720 1483 1412 1328 1250 1181 1111 1064 1037 1029 1064 1125 1206 1310 1412 1522 1624 1706 1473 1401 1322 1244 1170 1107 1057 1027 1028 1055 1118 1199 1300 1405 1521 1615 1688 1466 1400 1326 1240 1166 1108 1055 1027 1024 1056 1115 1199 1296 1407 1516 1614 1690 1475 1403 1327 1244 1173 1108 1061 1032 1031 1058 1124 1204 1304 1410 1521 1620 1700 1473 1417 1337 1252 1182 1119 1072 1044 1042 1074 1136 1217 1317 1421 1530 1638 1705 1493 1425 1351 1268 1199 1134 1088 1061 1059 1094 1152 1242 1330 1439 1549 1655 1729 1507 1447 1368 1290 1216 1155 1109 1081 1084 1114 1179 1261 1359 1470 1572 1674 1756 1539 1468 1394 1316 1240 1181 1137 1108 1112 1145 1207 1288 1386 1498 1599 1698 1775 1553 1499 1420 1347 1274 1211 1163 1139 1144 1175 1236 1324 1425 1529 1632 1734 1805 1594 1530 1450 1375 1302 1241 1190 1169 1173 1208 1270 1359 1458 1556 1660 1766 1839] + + + [1623 1548 1518 1441 1378 1298 1261 1240 1247 1283 1338 1422 1491 1587 1675 1798 1863 1601 1517 1472 1409 1333 1253 1220 1199 1203 1240 1302 1374 1458 1551 1644 1752 1807 1551 1488 1416 1355 1278 1218 1179 1164 1168 1201 1262 1339 1423 1516 1605 1704 1752 1522 1460 1383 1304 1238 1183 1146 1125 1126 1166 1224 1301 1397 1478 1570 1668 1724 1493 1427 1357 1282 1204 1156 1112 1096 1100 1131 1195 1275 1361 1455 1547 1636 1694 1470 1404 1332 1248 1184 1126 1088 1072 1074 1111 1168 1246 1333 1437 1526 1604 1662 1451 1380 1309 1232 1164 1104 1065 1049 1054 1085 1145 1223 1317 1411 1507 1589 1639 1435 1368 1295 1220 1149 1094 1053 1035 1042 1073 1131 1210 1302 1395 1489 1576 1630 1433 1353 1288 1213 1142 1082 1043 1028 1033 1064 1122 1197 1293 1387 1488 1574 1615 1423 1362 1291 1208 1133 1083 1041 1024 1025 1059 1117 1197 1288 1383 1488 1566 1611 1438 1366 1289 1213 1140 1082 1044 1026 1032 1060 1122 1198 1290 1383 1477 1568 1616 1435 1373 1303 1222 1149 1093 1050 1031 1036 1066 1127 1203 1300 1389 1491 1579 1621 1448 1384 1319 1238 1166 1103 1064 1045 1047 1082 1142 1223 1307 1409 1498 1594 1641 1464 1404 1335 1259 1183 1123 1082 1060 1067 1095 1160 1237 1328 1431 1522 1606 1650 1481 1430 1361 1285 1213 1151 1110 1082 1085 1124 1182 1260 1351 1451 1544 1624 1679 1506 1457 1392 1319 1245 1180 1134 1110 1117 1148 1209 1291 1387 1480 1571 1652 1713 1534 1479 1419 1346 1273 1214 1161 1140 1143 1184 1237 1329 1410 1501 1586 1688 1716] + + + + + 1280x720_D50_100 + + + 1280x720 + + + D50 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [57 65 67 77 84 91 98 101] + + + [39 43 42 44 48 48 49 47] + + + [ 100] + + + [1813 1699 1630 1541 1454 1368 1311 1287 1294 1338 1403 1504 1610 1729 1853 2021 2168 1763 1650 1580 1498 1402 1310 1260 1239 1244 1284 1363 1449 1559 1681 1803 1953 2086 1714 1609 1506 1428 1336 1261 1215 1189 1193 1234 1305 1402 1511 1628 1752 1892 2030 1672 1566 1470 1378 1293 1223 1169 1146 1152 1190 1265 1353 1469 1585 1709 1843 1965 1622 1534 1431 1345 1254 1183 1136 1110 1117 1155 1224 1319 1428 1552 1674 1798 1923 1593 1504 1399 1310 1224 1152 1102 1080 1083 1122 1190 1285 1396 1515 1641 1766 1889 1574 1468 1371 1281 1198 1124 1079 1054 1060 1096 1166 1257 1369 1493 1609 1740 1864 1552 1451 1349 1264 1180 1109 1059 1039 1043 1080 1144 1238 1349 1471 1595 1720 1835 1544 1436 1343 1252 1169 1097 1051 1029 1035 1071 1136 1227 1339 1460 1587 1712 1824 1535 1434 1340 1246 1163 1096 1049 1024 1032 1065 1131 1224 1332 1456 1580 1701 1824 1540 1443 1340 1249 1163 1097 1049 1030 1035 1069 1135 1225 1337 1458 1586 1705 1820 1548 1451 1349 1260 1177 1105 1060 1037 1043 1077 1146 1236 1348 1466 1593 1716 1831 1566 1460 1365 1275 1193 1123 1077 1053 1058 1096 1163 1257 1365 1487 1611 1741 1842 1585 1481 1394 1296 1213 1143 1098 1073 1080 1112 1184 1278 1389 1514 1634 1759 1878 1609 1514 1416 1328 1239 1169 1123 1097 1104 1143 1213 1305 1418 1545 1664 1790 1902 1648 1543 1453 1359 1276 1204 1153 1129 1139 1176 1243 1340 1456 1580 1696 1826 1944 1680 1583 1485 1396 1310 1237 1189 1162 1173 1207 1283 1379 1498 1611 1734 1856 1979] + + + [1646 1585 1537 1466 1409 1325 1270 1247 1246 1278 1324 1400 1482 1576 1664 1777 1889 1621 1542 1495 1438 1355 1279 1229 1204 1200 1230 1288 1360 1445 1533 1626 1738 1824 1581 1513 1439 1376 1308 1237 1192 1160 1159 1185 1246 1321 1407 1492 1583 1687 1784 1547 1485 1408 1337 1268 1205 1155 1127 1121 1150 1206 1281 1371 1463 1553 1647 1738 1520 1450 1381 1309 1234 1173 1125 1094 1090 1118 1173 1251 1340 1433 1524 1622 1702 1482 1428 1353 1284 1207 1148 1097 1067 1063 1091 1145 1221 1313 1407 1496 1589 1671 1467 1406 1329 1257 1189 1123 1078 1046 1042 1067 1123 1203 1290 1386 1482 1569 1652 1457 1388 1315 1248 1175 1112 1064 1036 1027 1056 1109 1185 1277 1369 1466 1563 1638 1445 1380 1308 1235 1166 1106 1059 1026 1024 1048 1102 1176 1269 1362 1459 1550 1618 1448 1380 1308 1233 1164 1104 1058 1027 1024 1047 1100 1175 1265 1361 1456 1549 1619 1446 1385 1308 1238 1169 1109 1060 1033 1027 1052 1105 1178 1268 1364 1463 1553 1624 1453 1388 1313 1245 1177 1116 1071 1040 1039 1065 1116 1192 1281 1374 1465 1565 1635 1460 1402 1330 1259 1192 1133 1086 1060 1055 1081 1137 1210 1297 1392 1483 1581 1652 1480 1417 1346 1275 1207 1153 1107 1080 1078 1103 1158 1233 1320 1417 1504 1600 1669 1504 1434 1371 1299 1231 1173 1130 1102 1101 1128 1181 1254 1338 1439 1527 1619 1695 1520 1466 1394 1330 1263 1201 1158 1133 1132 1157 1214 1286 1378 1468 1555 1648 1720 1549 1491 1422 1352 1293 1229 1186 1161 1160 1187 1244 1317 1411 1496 1582 1677 1749] + + + [1642 1574 1522 1454 1385 1311 1263 1240 1244 1275 1331 1407 1489 1584 1675 1793 1896 1616 1532 1478 1421 1346 1268 1220 1200 1199 1230 1292 1365 1452 1540 1645 1753 1849 1577 1501 1428 1366 1289 1226 1183 1156 1159 1189 1248 1329 1411 1505 1595 1705 1796 1536 1478 1393 1322 1254 1194 1146 1123 1121 1152 1211 1286 1383 1473 1567 1665 1755 1511 1442 1365 1298 1223 1163 1119 1092 1090 1120 1179 1257 1345 1443 1539 1637 1727 1481 1420 1339 1268 1197 1134 1089 1063 1062 1092 1148 1227 1324 1419 1510 1608 1689 1465 1399 1324 1246 1177 1115 1068 1045 1042 1071 1128 1205 1298 1400 1498 1590 1676 1454 1385 1305 1232 1162 1101 1058 1034 1027 1057 1113 1189 1287 1385 1479 1585 1655 1444 1373 1301 1223 1158 1094 1051 1025 1025 1051 1107 1185 1277 1378 1477 1572 1651 1440 1378 1295 1222 1154 1096 1050 1024 1024 1051 1106 1182 1277 1378 1474 1571 1645 1441 1382 1302 1228 1160 1098 1056 1032 1029 1057 1111 1192 1278 1381 1482 1576 1653 1451 1386 1309 1235 1169 1109 1068 1041 1043 1070 1128 1201 1298 1391 1489 1593 1665 1464 1404 1326 1251 1184 1127 1084 1060 1060 1091 1145 1224 1312 1413 1511 1608 1682 1484 1421 1347 1270 1206 1146 1106 1080 1082 1111 1168 1247 1336 1438 1529 1629 1700 1502 1442 1368 1295 1227 1169 1129 1104 1109 1137 1194 1272 1365 1464 1557 1653 1732 1532 1472 1394 1324 1259 1199 1155 1137 1140 1169 1226 1306 1400 1500 1584 1683 1758 1554 1495 1423 1356 1286 1233 1185 1166 1168 1200 1257 1338 1433 1521 1614 1715 1789] + + + [1562 1501 1460 1410 1347 1271 1231 1216 1214 1245 1294 1361 1431 1503 1597 1701 1763 1534 1460 1427 1373 1307 1235 1198 1178 1179 1209 1264 1323 1400 1479 1557 1652 1722 1504 1441 1372 1322 1256 1198 1161 1140 1144 1169 1217 1291 1364 1447 1524 1609 1678 1471 1418 1347 1289 1221 1169 1131 1110 1112 1139 1191 1256 1339 1417 1491 1579 1638 1450 1390 1325 1262 1197 1146 1104 1082 1084 1111 1166 1232 1313 1395 1470 1557 1612 1421 1365 1302 1237 1171 1117 1079 1061 1062 1088 1137 1210 1290 1372 1453 1528 1582 1407 1353 1284 1216 1158 1102 1062 1044 1045 1069 1120 1190 1274 1352 1437 1518 1569 1400 1339 1271 1208 1145 1088 1052 1031 1031 1057 1108 1174 1257 1347 1422 1508 1550 1391 1328 1267 1201 1138 1084 1045 1024 1028 1053 1101 1167 1255 1336 1420 1503 1546 1386 1330 1267 1197 1134 1083 1044 1024 1025 1051 1099 1168 1249 1337 1416 1497 1539 1397 1335 1267 1202 1141 1085 1047 1030 1027 1054 1106 1177 1252 1338 1421 1499 1546 1396 1345 1277 1212 1149 1093 1058 1036 1037 1064 1115 1182 1265 1349 1431 1511 1558 1410 1356 1293 1228 1165 1110 1071 1051 1053 1077 1129 1197 1278 1364 1444 1529 1574 1425 1370 1313 1242 1181 1128 1089 1066 1070 1095 1147 1220 1296 1383 1460 1543 1592 1436 1391 1331 1269 1203 1153 1109 1088 1089 1117 1171 1240 1315 1409 1487 1563 1608 1464 1412 1356 1295 1235 1179 1138 1116 1120 1145 1194 1265 1351 1432 1507 1583 1643 1484 1439 1385 1323 1257 1205 1161 1144 1148 1172 1224 1301 1377 1453 1529 1618 1662] + + + + + 1280x720_D65_100 + + + 1280x720 + + + D65 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [56 63 69 78 85 91 98 100] + + + [40 41 43 44 48 46 49 49] + + + [ 100] + + + [1798 1687 1623 1529 1449 1359 1304 1286 1293 1332 1410 1492 1600 1716 1840 1989 2123 1741 1630 1570 1491 1390 1304 1253 1233 1241 1281 1353 1443 1549 1663 1798 1929 2066 1693 1590 1500 1416 1334 1253 1208 1188 1191 1234 1304 1394 1507 1615 1739 1866 1999 1657 1554 1459 1375 1284 1215 1166 1143 1151 1189 1259 1349 1464 1577 1700 1829 1947 1617 1519 1432 1337 1248 1183 1134 1109 1119 1157 1224 1316 1427 1547 1665 1793 1898 1589 1490 1397 1302 1221 1147 1100 1081 1089 1129 1194 1288 1391 1518 1634 1749 1868 1561 1467 1373 1277 1193 1126 1077 1058 1063 1101 1169 1259 1371 1490 1611 1731 1842 1549 1437 1347 1254 1177 1101 1058 1040 1045 1082 1148 1238 1352 1469 1587 1708 1814 1519 1432 1331 1246 1159 1091 1047 1027 1036 1071 1134 1222 1335 1451 1585 1686 1800 1532 1418 1338 1236 1152 1089 1042 1024 1034 1065 1129 1218 1328 1451 1575 1688 1785 1525 1434 1337 1242 1160 1093 1049 1029 1037 1069 1135 1223 1337 1454 1577 1694 1802 1531 1443 1349 1250 1169 1103 1056 1038 1042 1078 1146 1235 1347 1461 1590 1714 1803 1546 1458 1368 1271 1186 1120 1071 1052 1061 1097 1165 1252 1365 1488 1611 1731 1826 1580 1475 1387 1288 1204 1136 1092 1070 1078 1110 1183 1272 1386 1503 1626 1738 1849 1593 1504 1409 1318 1229 1163 1113 1092 1101 1141 1204 1295 1408 1536 1653 1772 1869 1628 1530 1441 1350 1264 1189 1144 1122 1131 1169 1233 1329 1439 1565 1677 1800 1898 1657 1573 1481 1386 1298 1231 1173 1158 1162 1202 1277 1369 1484 1601 1727 1845 1938] + + + [1661 1588 1543 1469 1407 1325 1275 1248 1252 1277 1329 1403 1492 1578 1669 1787 1891 1622 1542 1500 1439 1361 1281 1230 1207 1200 1230 1287 1362 1443 1540 1629 1739 1826 1584 1512 1440 1381 1306 1240 1195 1163 1160 1188 1245 1321 1409 1493 1594 1689 1784 1542 1489 1414 1342 1271 1208 1157 1131 1124 1153 1208 1283 1375 1470 1559 1656 1740 1525 1456 1385 1317 1242 1177 1128 1099 1095 1124 1178 1255 1343 1439 1532 1627 1710 1491 1438 1362 1294 1217 1154 1103 1073 1071 1095 1153 1229 1321 1419 1506 1607 1674 1481 1418 1341 1268 1199 1132 1081 1053 1049 1074 1131 1207 1300 1393 1493 1585 1659 1466 1395 1323 1252 1181 1116 1069 1039 1032 1058 1114 1190 1283 1376 1478 1569 1640 1444 1382 1315 1238 1170 1108 1058 1029 1028 1048 1102 1178 1272 1366 1466 1555 1628 1452 1382 1312 1237 1168 1106 1060 1031 1024 1050 1101 1178 1268 1368 1463 1554 1622 1451 1391 1316 1245 1175 1114 1063 1035 1031 1057 1111 1185 1275 1375 1472 1556 1638 1457 1402 1327 1250 1184 1122 1077 1048 1045 1069 1124 1198 1289 1382 1482 1571 1652 1466 1410 1341 1268 1199 1139 1092 1066 1059 1088 1143 1217 1305 1403 1501 1591 1660 1488 1424 1354 1281 1214 1155 1111 1081 1083 1106 1161 1237 1325 1425 1513 1608 1681 1498 1445 1374 1302 1236 1176 1131 1106 1102 1129 1184 1258 1345 1445 1540 1626 1696 1521 1468 1401 1327 1263 1201 1158 1130 1134 1157 1210 1288 1376 1472 1561 1648 1725 1560 1494 1420 1354 1294 1227 1191 1159 1160 1187 1247 1320 1410 1500 1592 1682 1758] + + + [1638 1579 1524 1456 1387 1311 1265 1242 1245 1279 1331 1406 1489 1583 1681 1787 1901 1613 1530 1479 1421 1342 1263 1222 1198 1200 1231 1290 1363 1445 1542 1638 1746 1834 1560 1504 1424 1366 1290 1225 1182 1157 1159 1191 1247 1327 1409 1500 1597 1705 1785 1537 1477 1394 1323 1253 1194 1150 1123 1123 1153 1211 1282 1381 1473 1569 1659 1755 1511 1444 1373 1298 1225 1163 1116 1095 1090 1124 1183 1257 1347 1446 1539 1640 1718 1478 1427 1345 1276 1200 1137 1093 1067 1067 1098 1155 1233 1326 1423 1518 1611 1696 1468 1407 1325 1252 1183 1117 1071 1049 1045 1074 1132 1208 1301 1401 1499 1594 1675 1456 1383 1311 1235 1162 1103 1057 1034 1030 1058 1117 1191 1288 1383 1483 1582 1655 1437 1374 1296 1223 1153 1094 1048 1024 1025 1051 1105 1185 1275 1377 1478 1568 1636 1435 1371 1303 1221 1150 1093 1050 1025 1024 1052 1106 1183 1274 1373 1475 1568 1639 1444 1379 1304 1231 1162 1101 1056 1036 1031 1061 1116 1193 1284 1384 1485 1578 1649 1455 1395 1318 1240 1174 1113 1072 1046 1049 1073 1132 1206 1299 1397 1498 1591 1662 1466 1405 1329 1257 1187 1129 1086 1064 1063 1093 1151 1228 1317 1415 1516 1609 1682 1486 1422 1351 1272 1207 1149 1108 1084 1089 1115 1172 1250 1338 1439 1533 1631 1701 1499 1438 1373 1298 1228 1171 1132 1106 1110 1138 1197 1273 1361 1466 1560 1646 1723 1526 1471 1393 1327 1258 1200 1158 1136 1143 1167 1225 1305 1397 1489 1587 1674 1750 1555 1496 1423 1357 1287 1229 1187 1169 1172 1203 1260 1341 1430 1525 1614 1713 1777] + + + [1551 1496 1456 1398 1344 1271 1229 1216 1214 1237 1290 1352 1424 1494 1584 1680 1745 1527 1449 1422 1374 1301 1231 1193 1172 1173 1203 1250 1315 1385 1463 1543 1639 1704 1494 1431 1369 1314 1257 1198 1156 1142 1139 1165 1216 1284 1356 1437 1508 1595 1667 1458 1412 1345 1286 1222 1167 1130 1109 1109 1133 1189 1247 1335 1405 1480 1569 1619 1445 1387 1326 1262 1200 1149 1107 1085 1087 1112 1160 1229 1308 1388 1469 1545 1595 1415 1369 1309 1241 1178 1123 1084 1064 1064 1090 1139 1208 1286 1371 1445 1522 1577 1403 1353 1289 1222 1163 1106 1068 1047 1049 1071 1118 1189 1267 1354 1435 1508 1561 1396 1338 1273 1211 1148 1091 1054 1035 1034 1057 1107 1170 1254 1338 1413 1497 1536 1393 1327 1264 1203 1136 1086 1045 1024 1026 1049 1099 1163 1247 1326 1413 1488 1531 1383 1327 1267 1201 1136 1086 1048 1024 1029 1050 1096 1163 1242 1327 1411 1488 1529 1390 1334 1270 1203 1146 1091 1054 1033 1031 1055 1104 1173 1252 1335 1411 1490 1541 1393 1349 1281 1219 1155 1102 1064 1045 1044 1067 1117 1182 1263 1343 1429 1508 1550 1408 1356 1299 1233 1169 1116 1080 1056 1058 1081 1131 1202 1279 1365 1443 1525 1564 1423 1370 1314 1250 1190 1135 1093 1076 1073 1102 1149 1216 1295 1377 1460 1534 1584 1439 1384 1329 1273 1202 1154 1116 1091 1096 1121 1168 1235 1315 1404 1475 1551 1598 1449 1406 1355 1291 1235 1180 1138 1118 1121 1147 1192 1263 1343 1423 1496 1573 1632 1485 1433 1381 1324 1260 1209 1168 1147 1144 1175 1225 1297 1371 1451 1523 1599 1636] + + + + + 1280x720_F11_100 + + + 1280x720 + + + F11 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [58 65 69 77 84 92 96 99] + + + [40 42 44 45 47 47 47 48] + + + [ 100] + + + [1718 1619 1575 1489 1419 1329 1275 1255 1265 1298 1358 1444 1532 1634 1740 1866 1987 1669 1578 1520 1455 1366 1278 1231 1213 1216 1249 1311 1400 1491 1599 1694 1822 1942 1632 1543 1462 1389 1307 1235 1186 1167 1172 1206 1271 1358 1448 1548 1654 1761 1885 1589 1513 1426 1342 1262 1198 1150 1126 1136 1166 1229 1309 1409 1514 1622 1721 1832 1559 1478 1389 1307 1233 1162 1116 1095 1100 1133 1194 1277 1375 1482 1581 1692 1803 1528 1444 1362 1277 1203 1134 1086 1067 1071 1102 1163 1247 1347 1452 1561 1661 1759 1507 1424 1337 1253 1177 1113 1069 1049 1051 1080 1144 1227 1324 1431 1534 1637 1753 1488 1408 1318 1240 1163 1097 1051 1035 1042 1070 1126 1212 1306 1411 1520 1630 1716 1490 1393 1310 1225 1151 1092 1045 1025 1030 1060 1120 1196 1297 1402 1513 1616 1708 1478 1391 1308 1225 1149 1087 1041 1024 1025 1062 1115 1195 1292 1401 1508 1614 1708 1482 1391 1309 1225 1152 1090 1045 1027 1035 1063 1121 1202 1293 1404 1512 1614 1718 1483 1401 1318 1231 1161 1097 1055 1033 1043 1072 1131 1212 1308 1410 1521 1627 1727 1498 1418 1328 1247 1175 1110 1071 1051 1054 1087 1148 1230 1325 1428 1547 1639 1737 1519 1430 1359 1266 1195 1135 1089 1068 1079 1106 1170 1250 1344 1456 1558 1663 1766 1534 1460 1373 1294 1221 1154 1115 1094 1102 1133 1192 1279 1372 1484 1588 1688 1796 1575 1490 1406 1323 1246 1191 1139 1126 1130 1160 1226 1307 1405 1518 1613 1716 1814 1599 1523 1441 1355 1285 1218 1181 1153 1164 1192 1256 1345 1447 1542 1643 1749 1860] + + + [1646 1582 1531 1458 1394 1315 1260 1237 1242 1267 1313 1387 1472 1550 1657 1771 1887 1620 1533 1483 1427 1349 1270 1222 1199 1191 1223 1276 1349 1428 1519 1612 1722 1819 1567 1504 1432 1369 1294 1227 1183 1156 1155 1183 1232 1308 1392 1475 1568 1670 1774 1539 1474 1392 1322 1256 1197 1149 1120 1119 1146 1194 1269 1354 1446 1534 1626 1719 1500 1437 1368 1293 1224 1162 1116 1094 1086 1110 1165 1232 1320 1411 1498 1598 1688 1474 1416 1339 1266 1198 1141 1093 1065 1061 1087 1135 1205 1292 1385 1482 1566 1656 1457 1390 1319 1244 1176 1116 1075 1046 1043 1062 1116 1188 1270 1363 1460 1554 1624 1446 1377 1301 1232 1163 1105 1063 1035 1031 1053 1103 1169 1258 1351 1443 1541 1622 1431 1370 1294 1220 1156 1102 1056 1028 1028 1048 1095 1164 1245 1339 1438 1531 1600 1432 1360 1291 1218 1156 1100 1056 1030 1024 1047 1095 1161 1242 1343 1435 1524 1598 1431 1372 1292 1226 1160 1104 1060 1036 1029 1052 1104 1166 1249 1338 1440 1527 1605 1429 1376 1301 1228 1169 1111 1073 1045 1041 1066 1114 1181 1262 1352 1449 1538 1619 1450 1384 1318 1240 1185 1127 1088 1063 1060 1084 1130 1198 1279 1367 1466 1556 1634 1463 1407 1329 1261 1197 1148 1105 1082 1081 1102 1152 1221 1298 1395 1487 1573 1652 1484 1423 1354 1285 1220 1169 1127 1106 1103 1129 1177 1243 1327 1421 1510 1601 1684 1508 1453 1382 1315 1252 1196 1158 1132 1132 1156 1204 1272 1362 1449 1536 1629 1708 1543 1477 1411 1338 1277 1221 1182 1161 1161 1186 1240 1305 1394 1472 1570 1666 1737] + + + [1639 1567 1506 1443 1381 1297 1250 1232 1227 1262 1313 1395 1483 1571 1669 1804 1908 1609 1527 1471 1413 1334 1256 1212 1186 1190 1217 1281 1354 1436 1534 1632 1743 1848 1569 1497 1420 1354 1283 1217 1175 1151 1151 1179 1236 1316 1405 1491 1591 1696 1800 1530 1470 1388 1317 1244 1186 1142 1115 1118 1144 1201 1272 1364 1460 1555 1660 1753 1498 1431 1355 1285 1215 1155 1113 1089 1084 1114 1168 1243 1335 1430 1525 1626 1715 1476 1408 1331 1259 1189 1132 1085 1061 1060 1084 1140 1216 1306 1407 1503 1596 1685 1462 1388 1311 1234 1170 1112 1066 1041 1039 1065 1119 1194 1282 1386 1481 1580 1667 1441 1375 1296 1225 1158 1099 1056 1032 1028 1052 1108 1178 1274 1366 1472 1570 1653 1438 1363 1289 1212 1152 1093 1052 1024 1024 1050 1099 1175 1261 1364 1460 1562 1639 1432 1362 1289 1212 1149 1093 1053 1027 1024 1052 1102 1171 1264 1362 1463 1560 1633 1431 1367 1290 1220 1155 1099 1057 1032 1030 1056 1109 1182 1267 1367 1465 1566 1638 1439 1373 1300 1225 1163 1108 1068 1045 1046 1069 1122 1194 1282 1380 1477 1577 1658 1452 1392 1313 1240 1179 1128 1084 1065 1060 1087 1141 1213 1298 1395 1496 1595 1674 1469 1409 1331 1262 1195 1143 1105 1078 1084 1111 1162 1238 1323 1429 1514 1623 1698 1495 1429 1355 1284 1219 1163 1128 1103 1109 1134 1187 1263 1350 1453 1547 1645 1730 1517 1460 1385 1316 1246 1195 1152 1136 1133 1164 1214 1294 1387 1483 1573 1673 1752 1549 1488 1412 1342 1275 1220 1182 1158 1167 1192 1249 1331 1422 1513 1604 1707 1789] + + + [1551 1494 1465 1402 1344 1273 1230 1219 1216 1247 1293 1357 1433 1503 1578 1684 1752 1525 1458 1424 1378 1299 1233 1196 1176 1176 1211 1261 1332 1397 1471 1548 1643 1717 1495 1435 1373 1317 1254 1196 1160 1142 1150 1170 1223 1288 1373 1446 1516 1604 1662 1461 1413 1348 1280 1220 1166 1128 1108 1113 1143 1192 1261 1337 1416 1482 1564 1632 1435 1388 1321 1256 1193 1138 1099 1086 1086 1118 1166 1234 1311 1392 1462 1548 1590 1418 1361 1298 1230 1167 1113 1076 1061 1065 1090 1140 1207 1291 1375 1450 1522 1570 1409 1352 1278 1210 1148 1095 1062 1042 1049 1071 1121 1189 1270 1352 1433 1502 1551 1402 1335 1268 1200 1139 1084 1045 1032 1033 1059 1108 1174 1259 1340 1426 1492 1546 1387 1328 1262 1188 1130 1079 1043 1025 1031 1056 1102 1169 1253 1332 1418 1494 1520 1390 1322 1258 1184 1127 1077 1039 1024 1029 1051 1101 1167 1243 1332 1411 1490 1523 1384 1333 1263 1192 1131 1076 1043 1028 1026 1059 1102 1170 1251 1334 1412 1488 1533 1391 1335 1272 1199 1139 1083 1051 1032 1035 1062 1107 1181 1255 1339 1427 1498 1538 1405 1351 1279 1217 1154 1099 1069 1043 1052 1075 1127 1190 1275 1358 1435 1511 1549 1413 1368 1304 1235 1172 1115 1078 1063 1065 1088 1142 1212 1291 1374 1446 1529 1574 1423 1387 1320 1262 1193 1145 1101 1081 1084 1114 1166 1231 1306 1405 1476 1542 1599 1452 1416 1352 1293 1222 1169 1130 1110 1117 1138 1186 1261 1343 1423 1501 1569 1619 1485 1438 1381 1315 1248 1199 1155 1136 1138 1166 1221 1288 1367 1452 1510 1602 1642] + + + + + 1280x720_F2_100 + + + 1280x720 + + + F2 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [58 62 72 78 84 91 95 100] + + + [40 42 44 45 47 47 47 48] + + + [ 100] + + + [1708 1621 1560 1484 1413 1332 1283 1260 1263 1299 1354 1439 1528 1629 1745 1865 2003 1663 1570 1523 1453 1361 1279 1232 1216 1217 1251 1317 1395 1484 1588 1696 1826 1920 1631 1536 1457 1384 1303 1238 1192 1168 1173 1207 1268 1356 1443 1546 1656 1764 1881 1583 1512 1427 1344 1267 1198 1153 1130 1133 1169 1232 1307 1409 1505 1619 1724 1838 1558 1473 1397 1310 1232 1167 1117 1099 1100 1135 1196 1277 1372 1481 1578 1687 1793 1530 1448 1365 1280 1198 1134 1092 1067 1075 1107 1164 1248 1342 1447 1557 1658 1760 1518 1424 1342 1258 1180 1112 1069 1050 1052 1083 1144 1223 1324 1427 1540 1635 1745 1496 1405 1325 1240 1163 1098 1056 1035 1039 1070 1128 1206 1302 1416 1524 1627 1715 1484 1396 1321 1227 1155 1089 1047 1027 1032 1062 1117 1196 1298 1402 1516 1618 1708 1486 1388 1313 1222 1148 1088 1044 1024 1029 1060 1113 1197 1292 1399 1513 1618 1706 1484 1396 1315 1232 1148 1089 1044 1031 1033 1059 1120 1196 1295 1402 1516 1616 1702 1488 1401 1323 1234 1161 1095 1054 1034 1041 1067 1127 1206 1307 1408 1526 1626 1719 1494 1418 1334 1254 1175 1113 1068 1048 1054 1088 1143 1227 1324 1424 1546 1640 1734 1521 1432 1359 1269 1194 1133 1088 1069 1075 1105 1163 1246 1342 1451 1562 1656 1760 1541 1457 1382 1292 1221 1155 1114 1090 1099 1132 1194 1271 1371 1474 1588 1686 1776 1565 1491 1410 1329 1250 1186 1144 1122 1128 1160 1219 1304 1399 1507 1614 1714 1818 1602 1516 1443 1356 1290 1217 1169 1153 1159 1197 1258 1341 1441 1546 1646 1754 1841] + + + [1652 1578 1533 1469 1397 1323 1270 1247 1247 1275 1321 1392 1474 1560 1654 1764 1843 1607 1531 1492 1430 1353 1275 1228 1203 1202 1228 1284 1352 1434 1517 1611 1725 1812 1572 1503 1434 1374 1301 1236 1186 1162 1157 1187 1240 1315 1397 1482 1576 1668 1762 1535 1475 1404 1328 1261 1200 1153 1123 1121 1146 1202 1273 1363 1448 1541 1626 1722 1500 1442 1376 1305 1229 1169 1120 1094 1089 1117 1168 1241 1325 1417 1509 1600 1680 1475 1421 1348 1273 1202 1143 1092 1068 1062 1088 1139 1213 1302 1397 1484 1568 1648 1456 1399 1325 1250 1185 1118 1075 1046 1043 1067 1120 1195 1279 1370 1469 1556 1635 1443 1381 1310 1243 1170 1108 1062 1037 1028 1054 1105 1177 1266 1359 1454 1540 1619 1438 1372 1304 1225 1161 1103 1056 1027 1025 1048 1098 1169 1257 1350 1450 1530 1597 1436 1369 1304 1227 1158 1101 1054 1029 1024 1050 1097 1169 1256 1347 1448 1528 1597 1434 1377 1302 1229 1165 1105 1057 1034 1029 1050 1103 1170 1258 1352 1451 1534 1607 1436 1378 1311 1236 1172 1112 1071 1041 1040 1065 1112 1185 1270 1358 1461 1547 1615 1441 1391 1322 1251 1184 1129 1081 1062 1057 1082 1134 1206 1283 1381 1472 1563 1628 1464 1410 1339 1268 1200 1149 1108 1080 1079 1103 1156 1226 1310 1399 1492 1580 1649 1492 1426 1363 1292 1228 1172 1129 1102 1102 1131 1178 1253 1333 1428 1519 1602 1675 1510 1456 1389 1323 1256 1198 1157 1136 1134 1158 1211 1281 1369 1457 1548 1632 1702 1546 1481 1410 1349 1283 1228 1184 1161 1163 1190 1243 1310 1401 1479 1582 1662 1737] + + + [1643 1575 1517 1455 1391 1308 1260 1242 1241 1272 1328 1396 1481 1575 1678 1783 1896 1609 1527 1481 1417 1343 1268 1220 1198 1198 1229 1292 1359 1444 1537 1633 1746 1834 1574 1503 1432 1365 1291 1226 1184 1156 1159 1190 1241 1325 1409 1496 1594 1690 1783 1531 1473 1397 1326 1256 1195 1145 1121 1122 1151 1210 1279 1374 1467 1567 1654 1755 1503 1447 1372 1298 1223 1165 1116 1093 1090 1118 1176 1249 1341 1436 1532 1630 1711 1480 1420 1346 1268 1201 1137 1090 1062 1063 1093 1146 1225 1315 1414 1511 1598 1682 1464 1401 1326 1248 1175 1113 1070 1045 1041 1070 1127 1200 1296 1394 1494 1590 1659 1455 1385 1310 1236 1163 1105 1059 1034 1032 1057 1111 1186 1280 1380 1483 1574 1649 1438 1380 1304 1225 1156 1099 1051 1026 1026 1053 1105 1182 1274 1369 1477 1566 1630 1439 1370 1305 1221 1155 1098 1053 1028 1024 1055 1104 1179 1271 1371 1475 1564 1639 1446 1381 1306 1228 1159 1101 1056 1035 1031 1058 1113 1188 1276 1380 1478 1570 1650 1446 1390 1313 1235 1169 1109 1072 1045 1045 1070 1125 1198 1291 1384 1487 1585 1654 1466 1400 1330 1251 1185 1128 1082 1062 1059 1093 1144 1220 1307 1407 1507 1602 1674 1478 1419 1349 1270 1204 1146 1104 1084 1082 1110 1167 1242 1331 1434 1534 1617 1708 1504 1440 1371 1297 1225 1176 1131 1107 1111 1140 1193 1274 1357 1466 1553 1644 1726 1525 1470 1400 1324 1263 1200 1156 1137 1142 1172 1223 1302 1395 1489 1586 1680 1755 1564 1495 1429 1354 1282 1235 1185 1168 1172 1202 1258 1337 1428 1521 1609 1707 1780] + + + [1540 1500 1464 1404 1349 1273 1229 1214 1221 1252 1288 1368 1422 1494 1559 1673 1729 1519 1445 1429 1374 1299 1232 1194 1175 1182 1211 1262 1324 1394 1463 1539 1635 1686 1480 1441 1378 1314 1258 1194 1161 1141 1144 1175 1220 1296 1367 1437 1507 1584 1653 1467 1408 1353 1282 1220 1164 1128 1107 1113 1144 1194 1259 1339 1417 1479 1554 1617 1439 1383 1323 1262 1187 1138 1101 1083 1084 1116 1163 1230 1312 1394 1467 1531 1576 1418 1364 1304 1232 1167 1114 1077 1062 1064 1094 1138 1208 1287 1369 1447 1511 1559 1408 1347 1286 1211 1151 1094 1061 1044 1047 1070 1122 1191 1270 1349 1426 1505 1539 1398 1335 1277 1199 1134 1082 1047 1034 1035 1063 1109 1180 1257 1342 1425 1489 1535 1391 1324 1263 1192 1132 1073 1044 1024 1031 1055 1103 1167 1246 1332 1418 1486 1516 1397 1326 1265 1188 1121 1077 1038 1026 1026 1053 1101 1167 1249 1334 1412 1484 1514 1383 1326 1268 1193 1129 1077 1042 1025 1029 1056 1101 1168 1250 1335 1416 1484 1527 1392 1341 1277 1201 1139 1086 1050 1032 1034 1063 1113 1181 1258 1341 1427 1492 1517 1399 1348 1289 1221 1153 1095 1062 1045 1048 1075 1127 1191 1269 1360 1438 1503 1546 1416 1371 1305 1239 1170 1118 1079 1065 1061 1092 1139 1212 1285 1376 1456 1519 1560 1435 1383 1329 1261 1192 1140 1100 1078 1089 1111 1162 1232 1311 1397 1471 1534 1578 1443 1409 1355 1293 1226 1168 1131 1111 1113 1141 1186 1259 1336 1422 1495 1558 1603 1476 1438 1383 1313 1255 1199 1153 1136 1140 1165 1216 1294 1374 1448 1509 1590 1626] + + + + + + + A_100 + + + [ 100] + + + [1.99853 -0.905653 -0.0821708 -0.460996 1.77912 -0.258076 -0.151399 -1.53815 2.713] + + + [-29.8061 -52.306 -95.824] + + + [1.11716 1 1 2.3808] + + + + + D50_100 + + + [ 100] + + + [2.097 -1.12811 0.0410741 -0.327961 1.77429 -0.380266 -0.0366512 -0.804392 1.8682] + + + [-40.7723 -43.9103 -61.7554] + + + [1.64416 1 1 1.6405] + + + + + D65_100 + + + [ 100] + + + [2.14135 -1.15688 0.0270315 -0.332497 1.83306 -0.43858 -0.0348043 -0.657467 1.7185] + + + [-47.0355 -42.0548 -56.246] + + + [1.92224 1 1 1.428] + + + + + F11_100 + + + [ 100] + + + [1.91878 -0.849702 -0.0555984 -0.407686 1.7518 -0.292535 -0.10781 -0.692012 1.8706] + + + [-55.1752 -65.3873 -90.5846] + + + [1.49049 1 1 1.9841] + + + + + F2_100 + + + [ 100] + + + [2.56944 -1.54023 0.0045255 -0.421136 1.74591 -0.223588 -0.101719 -0.718139 1.8415] + + + [-55.5346 -60.5148 -88.6402] + + + [1.55891 1 1 2.0968] + + + + + + [ -1] + + + + + [ 80] + + + [ 20] + + + [ 0.7] + + + [ 0.7] + + + [ 0.7] + + + [ 0.9] + + + + + 1280x720_FPS_15 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 1280x720_FPS_10 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 1280x720_FPS_05 + + + + + fast + + + [ 1] + + + [ 1] + + + + + normal + + + [ 2] + + + [ 0.9] + + + + + slow + + + [ 4] + + + [ 0.9] + + + + + + + [ 8] + + + + + + 1280x720 + + + 1280x720 + + + [256 256 256 256] + + + + + + + linear + + + [256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4096] + + + [0 256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4095] + + + + + + [ -1] + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + + + 1280x720 + + + 1280x720 + + + [ 5] + + + [ 22] + + + [ 5] + + + [ 22] + + + [ 0] + + + [ 0] + + + [-0.125 -0.4375 0.6875] + + + [1.0625 -2.875 1.6875] + + + + + + + 1280x720 + + + 1280x720 + + + [ 1] + + + [1023 841 652 551 486 405 354 319 292 254 228 209 181 162 148 137 129] + + + [ 4] + + + [ 4] + + + [ 0.15] + + + [ 0] + + + [1 1 1 1] + + + + + + + 1280x720 + + + 1280x720 + + + + + ISP_DPCC_MODE + + + 0x0005 + + + + + ISP_DPCC_OUT_MODE + + + 0x0003 + + + + + ISP_DPCC_SET_USE + + + 0x000F + + + + + ISP_DPCC_METHODS_SET1 + + + 0x1D1D + + + + + ISP_DPCC_METHODS_SET2 + + + 0x0707 + + + + + ISP_DPCC_METHODS_SET3 + + + 0x1F1F + + + + + ISP_DPCC_LINE_THRESH_1 + + + 0x0808 + + + + + ISP_DPCC_LINE_MAD_FAC_1 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_1 + + + 0x0404 + + + + + ISP_DPCC_RND_THRESH_1 + + + 0x0804 + + + + + ISP_DPCC_RG_FAC_1 + + + 0x0802 + + + + + ISP_DPCC_LINE_THRESH_2 + + + 0x100C + + + + + ISP_DPCC_LINE_MAD_FAC_2 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_2 + + + 0x0404 + + + + + ISP_DPCC_RND_THRESH_2 + + + 0x0808 + + + + + ISP_DPCC_RG_FAC_2 + + + 0x0808 + + + + + ISP_DPCC_LINE_THRESH_3 + + + 0x0000 + + + + + ISP_DPCC_LINE_MAD_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_RND_THRESH_3 + + + 0x0804 + + + + + ISP_DPCC_RG_FAC_3 + + + 0x0400 + + + + + ISP_DPCC_RO_LIMITS + + + 0x0FFF + + + + + ISP_DPCC_RND_OFFS + + + 0x0FFF + + + + + + + + + + on + + + +
diff --git a/drivers/GC5035/GC5035_1296x972.xml b/drivers/GC5035/GC5035_1296x972.xml new file mode 100644 index 0000000..2bfe782 --- /dev/null +++ b/drivers/GC5035/GC5035_1296x972.xml @@ -0,0 +1,1287 @@ + + +
+ + 08-Feb-2022 + + + Mcf + + + gc5035 + + + 5Mlens_2M + + + v2.1.1 + + + + + 1296x972 + + + 0x00000001 + + + [ 1296] + + + [ 972] + + + + + FPS_15 + + + [ 14.9916] + + + + + FPS_10 + + + [ 9.9944] + + + + + FPS_05 + + + [ 4.9972] + + + + + +
+ + + + + + 1296x972 + + + 1296x972 + + + [0.316211 0.450278 0.23351] + + + [-0.747965 0.0904144 0.657551 0.327436 -0.811475 0.48404] + + + [-0.800277 -0.59963 -2.3607] + + + [1.03557 1.08428 1.13299 1.18171 1.23042 1.27913 1.32326 1.36926 1.42527 1.48345 1.53323 1.58745 1.63332 1.67663 1.72844 1.8246] + + + [-0.00414674 0.0285734 0.0458083 0.0590686 0.0684166 0.0745711 0.103537 0.171416 0.0766262 0.0287319 0.0187589 -0.00721015 0.00860515 0.00149051 0.00465507 0.02029] + + + [1.03557 1.09863 1.139 1.17938 1.22525 1.28052 1.32736 1.3712 1.41647 1.4737 1.50747 1.58012 1.62599 1.68328 1.73065 1.8204] + + + [0.104147 0.08587 0.0736434 0.0614168 0.0456015 0.0519858 0.0426176 0.0399399 0.0599487 0.0792273 0.116206 0.144303 0.128488 0.121734 0.102574 0.058049] + + + [0.828809 0.890615 0.957978 1.01338 1.0697 1.12955 1.1988 1.26015 1.33667 1.40375 1.49365 1.54193 1.61013 1.68533 1.74067 1.8553] + + + [-0.0307749 -0.0139859 0.0324236 0.0781028 0.0913031 0.120986 0.12847 0.161498 0.228047 0.227677 0.120452 0.107133 0.0950322 0.089865 0.109512 0.12302] + + + [0.845777 0.891118 0.939466 1.01166 1.0779 1.13324 1.19655 1.26633 1.34355 1.39837 1.46455 1.53792 1.60233 1.67208 1.74842 1.8597] + + + [0.208678 0.202655 0.189942 0.2018 0.201007 0.181359 0.161225 0.143949 0.135979 0.126124 0.151362 0.184872 0.224283 0.209637 0.166558 0.091439] + + + [ 1.0356] + + + [ 1.82] + + + [ 1.85] + + + [ 1.474] + + + D50 + + + [ 4.5676] + + + [0.75 1.28836 1.77672 2.164 2.6 3.0618] + + + [114 114 105 95 95 90] + + + [83 83 110 120 122 128] + + + [28 27 18 16 9 9] + + + [123 123 123 123 123 120] + + + [123 123 123 123 123 126] + + + [5 5 5 5 5 5] + + + [ 1] + + + [ 0.8] + + + [ 0.05] + + + + [ 0.05] + + + [ 0.05] + + + [ 0.4] + + + [ 0.5] + + + [ 0.9] + + + [ 0.5] + + + [ 50] + + + [ 1] + + + [ 0.5] + + + + + + + + A + + + Indoor + + + + [1132.49 1537.15 1537.15 4218.7397] + + + [ 247.3246] + + + [1 1] + + + [-0.0885832 0.012733] + + + + + + 1296x972 + + + 1296x972_A_100 + + + + + [1.11716 1 1 2.3808] + + + [1.99853 -0.905653 -0.0821708 -0.460996 1.77912 -0.258076 -0.151399 -1.53815 2.713] + + + [-29.8061 -52.306 -95.824] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + A_100 + + + + + + D50 + + + Outdoor + + + + [329.787 3.43476 3.43476 1629.9174] + + + [ 116.6849] + + + [1 1] + + + [0.0586363 0.0057683] + + + + + + 1296x972 + + + 1296x972_D50_100 + + + + + [1.64416 1 1 1.6405] + + + [2.097 -1.12811 0.0410741 -0.327961 1.77429 -0.380266 -0.0366512 -0.804392 1.8682] + + + [-40.7723 -43.9103 -61.7554] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D50_100 + + + + + + D65 + + + Outdoor + + + + [342.947 -200.069 -200.069 1325.0367] + + + [ 102.4529] + + + [1 1] + + + [0.115106 0.012733] + + + + + + 1296x972 + + + 1296x972_D65_100 + + + + + [1.92224 1 1 1.428] + + + [2.14135 -1.15688 0.0270315 -0.332497 1.83306 -0.43858 -0.0348043 -0.657467 1.7185] + + + [-47.0355 -42.0548 -56.246] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D65_100 + + + + + + F2 (CWF) + + + Indoor + + + + [533.138 -316.589 -316.589 1155.6585] + + + [ 114.3146] + + + [1 1] + + + [0.00647981 -0.026117] + + + + + + 1296x972 + + + 1296x972_F2_100 + + + + + [1.55891 1 1 2.0968] + + + [2.56944 -1.54023 0.0045255 -0.421136 1.74591 -0.223588 -0.101719 -0.718139 1.8415] + + + [-55.5346 -60.5148 -88.6402] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F2_100 + + + + + + F11 (TL84) + + + Indoor + + + + [395.155 -67.974 -67.974 1176.0173] + + + [ 107.9546] + + + [1 1] + + + [0.00547574 -0.011106] + + + + + + 1296x972 + + + 1296x972_F11_100 + + + + + [1.49049 1 1 1.9841] + + + [1.91878 -0.849702 -0.0555984 -0.407686 1.7518 -0.292535 -0.10781 -0.692012 1.8706] + + + [-55.1752 -65.3873 -90.5846] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F11_100 + + + + + + + + + 1296x972_A_100 + + + 1296x972 + + + A + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [81 81 81 81 81 81 81 81] + + + [61 61 60 61 61 61 60 61] + + + [ 100] + + + [1475 1417 1359 1299 1254 1220 1201 1185 1193 1225 1264 1314 1388 1469 1555 1641 1721 1446 1382 1323 1266 1224 1186 1161 1156 1160 1191 1230 1288 1354 1433 1518 1607 1694 1412 1351 1288 1235 1193 1154 1135 1124 1130 1155 1197 1251 1320 1398 1485 1571 1663 1386 1327 1260 1211 1162 1129 1105 1098 1106 1131 1170 1223 1296 1372 1458 1547 1627 1352 1304 1237 1187 1140 1105 1084 1077 1081 1107 1145 1201 1267 1346 1431 1525 1610 1339 1276 1225 1166 1121 1086 1066 1057 1066 1087 1127 1181 1248 1329 1406 1506 1586 1320 1265 1209 1149 1108 1073 1050 1045 1050 1071 1112 1164 1231 1312 1396 1485 1571 1307 1253 1192 1140 1096 1061 1042 1033 1041 1060 1100 1147 1219 1296 1383 1469 1557 1305 1247 1183 1133 1091 1055 1035 1028 1032 1055 1091 1142 1213 1288 1375 1460 1553 1297 1239 1182 1129 1087 1051 1032 1024 1032 1050 1090 1140 1209 1285 1367 1460 1541 1304 1236 1179 1129 1088 1055 1033 1026 1030 1053 1084 1143 1210 1286 1370 1460 1553 1299 1245 1183 1132 1092 1058 1037 1030 1037 1052 1093 1144 1212 1289 1371 1461 1546 1314 1244 1191 1139 1095 1065 1045 1039 1041 1063 1102 1154 1219 1300 1383 1472 1560 1318 1256 1202 1151 1106 1074 1054 1049 1055 1074 1113 1167 1234 1311 1397 1480 1566 1331 1276 1214 1164 1122 1087 1066 1063 1068 1088 1131 1180 1252 1327 1409 1502 1590 1353 1289 1230 1181 1143 1105 1087 1079 1088 1108 1150 1200 1270 1345 1429 1523 1607 1371 1314 1253 1203 1159 1130 1106 1098 1108 1130 1172 1224 1291 1374 1449 1553 1628] + + + [1416 1365 1313 1265 1230 1195 1176 1157 1166 1181 1214 1258 1312 1369 1438 1495 1553 1379 1338 1291 1238 1208 1168 1146 1138 1132 1150 1189 1225 1282 1344 1404 1467 1530 1361 1312 1256 1217 1179 1145 1119 1104 1113 1124 1161 1199 1254 1313 1371 1443 1505 1340 1287 1238 1192 1153 1119 1098 1083 1086 1104 1133 1177 1235 1288 1358 1418 1480 1318 1268 1219 1171 1135 1100 1074 1066 1067 972 1115 1155 1207 1273 1329 1395 1468 1294 1251 1203 1159 1117 1085 1061 1048 1051 1065 1094 1141 1194 1252 1314 1390 1449 1286 1241 1195 1143 1106 1071 1048 1039 1037 1052 1087 1125 1178 1242 1303 1371 1433 1273 1232 1181 1135 1096 1066 1044 1026 1028 1045 1075 1118 1168 1227 1294 1364 1424 1270 1223 1176 1132 1095 1061 1035 1024 1028 1038 1071 1108 1162 1222 1290 1354 1413 1264 1221 1172 1131 1088 1056 1037 1024 1024 1036 1069 1108 1162 1219 1286 1351 1422 1273 1220 1172 1132 1093 1061 1036 1025 1024 1041 1067 1110 1162 1223 1287 1351 1421 1267 1227 1175 1136 1093 1062 1042 1032 1030 1046 1073 1116 1167 1228 1290 1358 1416 1283 1232 1185 1137 1105 1071 1050 1037 1036 1056 1084 1120 1176 1232 1299 1362 1428 1289 1235 1195 1152 1115 1081 1059 1050 1051 1064 1096 1137 1189 1247 1311 1373 1437 1302 1252 1207 1164 1127 1095 1073 1065 1063 1081 1112 1149 1205 1261 1326 1393 1447 1317 1264 1220 1179 1145 1111 1090 1079 1084 1098 1128 1170 1223 1282 1341 1408 1474 1333 1284 1239 1197 1164 1130 1108 1103 1101 1122 1146 1189 1243 1298 1357 1429 1494] + + + [1414 1357 1311 1260 1223 1191 1175 1159 1166 1187 1225 1266 1329 1389 1453 1521 1584 1378 1330 1281 1233 1199 1165 1143 1134 1138 1159 1193 1237 1296 1356 1431 1499 1560 1355 1306 1251 1213 1168 1143 1116 1107 1113 1129 1168 1212 1270 1331 1401 1471 1540 1333 1287 1232 1189 1149 1116 1096 1086 1089 1109 1142 1189 1249 1307 1381 1445 1516 1314 1263 1217 1167 1130 1099 1075 1068 1071 1088 1122 1169 1222 1295 1354 1435 1504 1288 1247 1199 1151 1113 1081 1062 1050 1055 1073 1106 1153 1210 1276 1344 1419 1486 1283 1235 1190 1143 1099 1071 1048 1038 1042 1057 1095 1138 1194 1263 1332 1403 1471 1269 1230 1177 1136 1091 1062 1041 1031 1031 1053 1083 1130 1188 1250 1321 1392 1461 1267 1225 1173 1127 1091 1057 1039 1025 1030 1047 972 1123 1182 1246 1320 1388 1452 1268 1213 1168 1128 1086 1058 1037 1024 1029 1044 972 1122 1177 1244 1316 1386 1457 1270 1219 1171 1128 1092 1059 1039 1025 1030 1046 1078 1125 1181 1247 1314 1387 1465 1275 1226 1176 1130 1092 1057 1042 1032 1035 1054 1082 1131 1184 1252 1320 1392 1463 1278 1229 1182 1137 1099 1069 1051 1039 1043 1058 1095 1139 1195 1259 1331 1401 1468 1286 1237 1191 1150 1111 1077 1060 1054 1055 1074 1106 1148 1209 1274 1342 1412 1474 1303 1253 1202 1162 1124 1093 1074 1066 1071 1085 1123 1164 1227 1290 1352 1430 1500 1311 1267 1220 1175 1137 1111 1089 1079 1087 1106 1139 1183 1243 1308 1374 1453 1514 1343 1278 1234 1195 1160 1129 1107 1106 1106 1127 1160 1207 1261 1327 1396 1470 1538] + + + [1363 1322 1278 1222 1197 1182 1159 1156 1160 1184 1221 1259 1317 1366 1425 1483 1554 1343 1295 1247 1208 1182 1146 1136 1133 1139 1156 1195 1235 1288 1345 1408 1474 1521 1315 1268 1220 1181 1156 1120 1112 1112 1117 1134 1172 1211 1264 1326 1381 1451 1502 1298 1253 1196 1166 1128 1110 1088 1083 1096 1114 1151 1195 1244 1305 1367 1429 1497 1272 1222 1186 1143 1111 1085 1069 1074 1077 1097 1130 1171 1222 1290 1346 1411 1476 1274 1210 1177 1130 1097 1074 1056 1058 1065 1084 1112 1159 1211 1270 1336 1399 1458 1242 1209 1157 1119 1082 1062 1048 1046 1051 1071 1105 1145 1194 1262 1319 1389 1442 1241 1197 1152 1107 1077 1053 1037 1034 1043 1060 1096 1136 1187 1246 1312 1376 1436 1239 1191 1146 1107 1074 1046 1034 1028 1032 1058 1088 1130 1180 1245 1315 1370 1434 1230 1188 1139 1097 1070 1045 1029 1024 1034 1050 1082 1126 1177 1241 1299 1367 1421 1240 1191 1142 1101 1067 1042 1029 1026 1033 1053 1082 1122 1184 1232 1299 1371 1437 1245 1186 1144 1102 1071 1050 1031 1026 1032 1056 1083 1128 1182 1245 1300 1361 1428 1245 1195 1146 1111 1075 1052 1034 1032 1037 1052 1089 1132 1189 1241 1309 1371 1430 1263 1209 1165 1118 1084 1055 1041 1038 1042 1069 1095 1145 1189 1254 1316 1378 1442 1260 1221 1170 1133 1095 1072 1051 1052 1056 1074 1108 1149 1207 1266 1328 1395 1455 1286 1242 1187 1148 1112 1083 1066 1066 1068 1098 1118 1167 1221 1275 1344 1411 1459 1310 1256 1211 1155 1129 1099 1083 972 1087 1102 1134 1177 1230 1305 1353 1425 1487] + + + + + 1296x972_D50_100 + + + 1296x972 + + + D50 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [81 81 81 81 81 81 81 81] + + + [61 61 60 61 61 61 60 61] + + + [ 100] + + + [1451 1396 1338 1283 1245 1209 1189 1184 1189 1219 1261 1310 1378 1449 1527 1604 1703 1426 1359 1307 1246 1213 1178 1162 1155 1158 1188 1224 1281 1343 1415 1497 1576 1651 1382 1334 1273 1225 1183 1150 1131 1126 1134 1158 1201 1251 1313 1392 1462 1552 1630 1367 1300 1244 1195 1156 1126 1108 1095 1110 1134 1169 1223 1288 1360 1442 1523 1611 1339 1284 1224 1178 1133 1102 1084 1081 1083 1114 1149 1201 1265 1339 1415 1494 1581 1313 1265 1205 1158 1115 972 1066 1064 1071 1092 1130 1180 1245 1320 1395 1480 1565 1301 1254 1192 1143 1098 1068 1055 1047 1053 1074 1114 1166 1223 1298 1376 1462 1544 1288 1239 1178 1129 1086 1060 1041 1038 1043 1067 1106 1152 1215 1287 1368 1452 1534 1286 1231 1174 1122 1081 1054 1036 1029 1040 1061 1095 1144 1207 1281 1360 1436 1524 1280 1225 1165 1118 1081 1050 1032 1027 1038 1055 1094 1142 1202 1277 1358 1439 1518 1282 1223 1167 1119 1077 1047 1036 1024 1036 1056 1092 1140 1205 1276 1353 1438 1529 1280 1224 1165 1121 1083 1055 1034 1030 1037 1059 1093 1145 1204 1281 1361 1436 1530 1295 1230 1178 1128 1087 1060 1040 1038 1043 1066 1103 1151 1211 1288 1368 1450 1530 1293 1243 1187 1133 1100 1066 1051 1049 1052 1076 1110 1166 1224 1296 1376 1456 1537 1318 1256 1199 1154 1112 972 1066 1057 1066 1092 1128 1179 1241 1313 1390 1474 1566 1336 1265 1218 1164 1126 1097 1076 1071 1084 1106 1142 1194 1262 1331 1410 1495 1566 1344 1297 1228 1187 1144 1116 1098 1096 1101 1124 1162 1218 1275 1347 1428 1513 1606] + + + [1400 1356 1304 1258 1214 1191 1168 1155 1155 1179 1206 1248 1297 1361 1418 1473 1538 1367 1325 1279 1232 1198 1161 1142 1129 1131 1148 1175 1220 1270 1333 1393 1455 1514 1349 1301 1248 1214 1171 1141 1116 1105 1106 1121 1159 1192 1245 1303 1366 1429 1491 1337 1278 1234 1184 1150 1114 1096 1084 1082 1106 1127 1174 1225 1281 1347 1408 1466 1308 1263 1213 1171 1128 1102 1073 1067 1066 972 1110 1151 1202 1265 1325 1394 1454 1293 1246 1198 1152 1117 1081 1063 1048 1052 1066 1094 1137 1188 1250 1311 1377 1439 1278 1236 1185 1140 1101 1073 1051 1037 1040 1050 1083 1126 1173 1237 1297 1363 1424 1268 1228 1178 1133 1098 1064 1042 1028 1030 1044 1077 1115 1166 1224 1288 1353 1415 1264 1215 1173 1129 1091 1062 1039 1025 1027 1043 1067 1109 1163 1220 1286 1350 1404 1264 1217 1165 1129 1086 1058 1034 1024 1025 1039 1069 1109 1155 1214 1279 1344 1414 1269 1212 1171 1127 1091 1060 1038 1027 1025 1045 1067 1110 1158 1217 1280 1345 1414 1270 1219 1172 1131 1093 1063 1043 1032 1031 1046 1075 1114 1163 1220 1287 1350 1416 1273 1221 1181 1136 1102 1070 1049 1038 1038 1056 1082 1118 1174 1229 1292 1359 1417 1281 1232 1187 1145 1111 1076 1059 1050 1052 1067 1094 1136 1184 1244 1302 1368 1425 1293 1242 1197 1158 1124 1096 1073 1063 1062 1081 1107 1147 1201 1258 1318 1384 1446 1302 1254 1215 1173 1135 1107 1086 1076 1081 1095 1125 1164 1215 1273 1334 1400 1463 1325 1271 1225 1192 1155 1125 1106 1094 1099 1113 1141 1186 1232 1293 1346 1420 1480] + + + [1391 1338 1292 1250 1212 1183 1164 1153 1161 1183 1212 1257 1309 1368 1432 1488 1557 1361 1309 1267 1217 1184 1157 1139 1128 1131 1153 1186 1227 1284 1341 1407 1466 1536 1335 1293 1240 1200 1163 1134 1111 1105 1112 1126 1162 1203 1252 1318 1379 1450 1500 1315 1269 1221 1175 1138 1111 1094 1083 1084 1107 1138 1177 1235 1291 1355 1426 1488 1300 1249 1203 1159 1121 1094 1071 1067 1067 1086 1116 1160 1212 1277 1340 1407 1472 1280 1232 1187 1144 1107 1075 1059 1045 1053 1068 1101 1143 1199 1260 1321 1393 1457 1266 1223 1175 1132 1094 1067 1048 1038 1039 1057 1091 1128 1183 1243 1313 1378 1448 1254 1219 1165 1122 1086 1059 1038 1032 1033 1050 1077 1125 1173 1235 1303 1370 1436 1255 1206 1161 1119 1085 1052 1035 1024 1030 1042 1078 1117 1171 1232 1295 1367 1428 1251 1203 1160 1118 1083 1051 1034 1024 1027 1049 1072 1117 1166 1228 1297 1362 1433 1248 1208 1159 1120 1084 1054 1037 1026 1032 1045 1078 1119 1172 1233 1299 1364 1439 1259 1210 1166 1123 1087 1058 1042 1034 1035 1054 1079 1125 1178 1237 1301 1371 1431 1263 1217 1170 1128 1095 1068 1049 1041 1046 1061 1094 1133 1187 1248 1314 1376 1447 1277 1224 1182 1142 1103 1079 1062 1052 1055 1074 1104 1144 1196 1262 1319 1390 1453 1290 1243 1195 1155 1119 1090 1072 1068 1071 1087 1119 1159 1217 1276 1334 1405 1465 1302 1253 1206 1169 1137 1108 1087 1081 1087 1104 1135 1181 1232 1293 1356 1427 1487 1323 1273 1225 1186 1152 1124 1107 1103 1107 1124 1159 1201 1252 1312 1372 1446 1519] + + + [1343 1303 1259 1217 1191 1162 1149 1142 1138 1163 1193 1234 1275 1331 1379 1434 1494 1320 1276 1233 1199 1163 1142 1126 1123 1123 1137 1170 1205 1252 1305 1358 1416 1466 1299 1259 1214 1176 1146 1120 1100 1095 1102 1117 1145 1183 1231 1280 1341 1395 1441 1281 1240 1196 1160 1127 1101 1083 1081 1081 1102 1127 1167 1210 1266 1320 1379 1432 1268 1218 1176 1142 1108 1085 1070 1065 1067 1086 1112 1148 1201 1254 1307 1361 1420 1252 1205 1166 1128 1092 1075 1057 1046 1054 1072 1098 1135 1182 1236 1288 1353 1406 1235 1198 1160 1119 1086 1062 1045 1040 1044 1060 1087 1122 1171 1225 1283 1340 1398 1229 1194 1148 1103 972 1049 1038 1035 1032 1056 1075 1117 1161 1216 1271 1335 1390 1230 1184 1145 1111 1072 1053 1035 1030 1032 1046 1075 1114 1156 1213 1274 1328 1381 1224 1188 1143 1100 1074 1049 1033 1024 1026 1049 1072 1111 1157 1210 1270 1323 1381 1229 1183 1141 1108 1070 1048 1036 1029 1033 1044 1075 1110 1157 1213 1264 1325 1382 1228 1187 1149 1107 1078 1054 1038 1035 1033 1053 1076 1114 1166 1214 1272 1331 1382 1244 1192 1156 1115 1084 1062 1041 1042 1038 1057 1084 1122 1169 1222 1274 1332 1390 1242 1207 1161 1127 1090 1066 1053 1043 1050 1067 1093 1130 1180 1229 1285 1346 1400 1263 1218 1173 1137 1104 1087 1062 1061 1057 1081 1101 1148 1191 1245 1300 1357 1418 1272 1229 1190 1146 1122 1087 1075 1069 1073 1090 1119 1153 1207 1258 1314 1369 1427 1297 1250 1209 1166 1130 1111 1088 1092 1092 1104 1133 1176 1216 1278 1326 1397 1444] + + + + + 1296x972_D65_100 + + + 1296x972 + + + D65 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [81 81 81 81 81 81 81 81] + + + [61 61 60 61 61 61 60 61] + + + [ 100] + + + [1437 1373 1325 1267 1238 1201 1188 1180 1183 1210 1251 1304 1374 1433 1516 1597 1670 1406 1349 1294 1239 1202 1172 1154 1156 1158 1184 1228 1271 1335 1418 1485 1558 1634 1383 1316 1262 1213 1177 1141 1128 1123 1128 1154 1195 1250 1303 1380 1453 1533 1617 1358 1292 1236 1194 1149 1118 1099 1098 1102 1133 1167 1217 1287 1351 1435 1505 1591 1332 1268 1214 1168 1125 1098 1077 1071 1088 1109 1149 1198 1255 1332 1406 1484 1558 1311 1252 1192 1148 1104 1079 1063 1064 1063 1092 1129 1179 1242 1311 1386 1468 1554 1282 1233 1184 1128 1095 1066 1050 1043 1056 1076 1118 1162 1222 1296 1369 1450 1531 1274 1225 1168 1115 1085 1051 1042 1032 1039 1069 1102 1153 1211 1283 1361 1439 1520 1270 1215 1160 1116 1075 1048 1036 1028 1036 1056 1097 1143 1206 1273 1353 1437 1512 1263 1210 1148 1110 1075 1044 1026 1027 1037 1051 1094 1138 1197 1280 1347 1425 1510 1276 1208 1158 1107 1072 1044 1024 1024 1033 1053 1091 1138 1204 1267 1339 1424 1526 1263 1211 1154 1114 1074 1046 1030 1025 1034 1056 1092 1141 1205 1270 1346 1424 1509 1277 1216 1164 1118 972 1056 1036 1033 1039 1060 1098 1147 1208 1278 1356 1438 1514 1284 1227 1174 1127 1084 1061 1044 1041 1051 1071 1109 1159 1221 1289 1366 1441 1528 1303 1238 1188 1140 1103 1073 1052 1055 1057 1088 1119 1177 1234 1305 1379 1460 1535 1318 1255 1205 1157 1113 1089 1070 1065 1078 1097 1138 1188 1247 1324 1396 1478 1564 1330 1284 1223 1179 1136 1105 1086 1087 1092 1119 1150 1207 1271 1340 1411 1498 1573] + + + [1400 1350 1299 1259 1223 1190 1165 1153 1158 1179 1200 1254 1294 1363 1413 1477 1525 1371 1321 1282 1234 1198 1165 1143 1130 1128 1146 1182 1221 1267 1328 1395 1456 1519 1341 1302 1247 1213 1172 1138 1115 1104 1107 1123 1156 1196 1247 1303 1362 1430 1480 1329 1279 1236 1185 1152 1116 1097 1083 1087 1107 1128 1170 1226 1282 1349 1407 1476 1309 1264 1214 1172 1133 1099 1078 1068 1069 1083 1113 1155 1201 1263 1323 1391 1454 1290 1244 1199 1152 1117 1084 1063 1050 1052 1064 1092 1142 1191 1252 1311 1380 1440 1278 1232 1188 1139 1103 1073 1049 1039 1041 1056 1087 1124 1174 1240 1298 1364 1424 1271 1228 1178 1137 1096 1067 1045 1029 1033 1050 1076 1117 1169 1224 1291 1354 1418 1268 1221 1169 1130 1097 1062 1038 1027 1034 1041 1074 1112 1163 1220 1290 1347 1407 1262 1213 1166 1134 1088 1064 1036 1029 1026 1042 1070 1107 1160 1218 1278 1345 1416 1260 1218 1171 1128 1092 1059 1042 1024 1030 1042 1071 1112 1162 1222 1281 1346 1415 1268 1219 1174 1131 1093 1067 1041 1036 1028 1051 1074 1117 1166 1221 1287 1350 1416 1272 1222 1180 1137 1102 1071 1050 1039 1041 1052 1087 1121 1174 1233 1292 1355 1416 1279 1234 1187 1145 1112 1082 1062 1049 1055 1066 1094 1136 1184 1241 1307 1368 1431 1291 1241 1201 1164 1124 1093 1070 1059 1062 972 1112 1149 1199 1261 1313 1380 1449 1297 1256 1211 1170 1135 1114 1085 1082 1081 1095 1124 1167 1213 1274 1331 1397 1465 1323 1269 1233 1192 1153 1120 1109 1095 1100 1113 1143 1187 1231 1291 1345 1416 1479] + + + [1380 1333 1285 1245 1210 1179 1163 1151 1156 1179 1211 1250 1304 1373 1419 1483 1543 1365 1307 1264 1215 1186 1155 1134 1129 1128 1148 1185 1226 1278 1335 1402 1460 1530 1329 1290 1235 1198 1156 1135 1110 1103 1109 1125 1162 1199 1254 1315 1373 1440 1503 1310 1267 1216 1176 1140 1111 1092 1083 1087 1108 1130 1180 1230 1284 1356 1416 1481 1296 1245 1201 1151 1118 1093 1071 1063 1067 1084 1117 1155 1215 1272 1328 1400 1470 1275 1229 1180 1143 1105 1073 1057 1046 1052 1068 1098 1143 1194 1256 1317 1390 1450 1267 1218 1175 1128 1090 1067 1048 1035 1043 1053 1092 1130 1182 1242 1309 1369 1442 1255 1208 1159 1121 1085 1058 1039 1030 1033 1050 1078 1124 1171 1234 1298 1369 1423 1249 1204 1159 1115 1081 1052 1037 1024 1032 1046 1075 1116 1167 1227 1295 1360 1421 1254 1199 1153 1119 1082 1054 1035 1025 1032 1046 1072 1118 1168 1228 1292 1358 1425 1254 1198 1157 1116 1085 1053 1036 1027 1030 1045 1079 1116 1171 1232 1292 1359 1427 1250 1210 1163 1122 1084 1059 1042 1036 1037 1053 1082 1123 1175 1237 1295 1370 1430 1261 1210 1171 1126 1092 1067 1050 1040 1046 1062 1093 1129 1185 1242 1307 1371 1439 1272 1224 1178 1141 1102 1077 1060 1058 1055 1072 1106 1146 1195 1256 1323 1381 1455 1281 1236 1191 1155 1120 1092 1074 1068 1071 1088 1119 1165 1214 1278 1331 1403 1457 1298 1249 1206 1164 1132 1111 1088 1082 1090 1102 1138 1175 1231 1289 1352 1424 1478 1316 1268 1221 1182 1155 1130 1106 1103 1105 1123 1152 1199 1253 1310 1370 1436 1522] + + + [1345 1293 1260 1208 1185 1166 1143 1141 1140 1160 1179 1228 1267 1316 1374 1413 1476 1314 1279 1234 1197 1167 1135 1124 1114 1120 1134 1166 1196 1253 1292 1347 1401 1456 1296 1252 1212 1178 1146 1115 1102 1095 1100 1111 1141 1180 1222 1273 1336 1384 1425 1282 1234 1191 1159 1127 1103 1084 1076 1079 1096 1121 1160 1208 1263 1312 1369 1420 1267 1217 1177 1140 1109 1079 1067 1065 1064 1081 1106 1143 1189 1240 1296 1355 1405 1255 1205 1165 1130 1097 1074 1052 1049 1051 1067 1093 1130 1180 1229 1283 1343 1401 1237 1196 1157 1119 1082 1064 1047 1041 1041 1057 972 1120 1163 1218 1274 1334 1382 1229 1197 1147 1109 1085 1053 1038 1034 1034 1051 1075 1111 1158 1210 1270 1324 1374 1228 1186 1147 1110 1074 1053 1038 1026 1034 1047 1073 1111 1148 1202 1263 1325 1374 1227 1183 1141 1105 1077 1050 1039 1024 1030 1046 1070 1105 1154 1204 1267 1319 1366 1228 1186 1142 1106 1082 1051 1035 1032 1033 1044 1071 1109 1153 1205 1258 1319 1376 1235 1186 1152 1111 972 1059 1040 1033 1037 1049 1075 1117 1158 1208 1260 1319 1383 1241 1193 1153 1123 1086 1063 1044 1038 1041 1057 1083 1118 1168 1219 1272 1323 1377 1246 1210 1162 1129 1094 1073 1056 1050 1051 1064 1092 1131 1178 1229 1280 1340 1388 1262 1217 1175 1141 1105 1084 1065 1060 1061 972 1106 1143 1189 1243 1294 1355 1401 1273 1230 1188 1151 1123 1094 1077 1072 1079 1091 1118 1160 1199 1253 1304 1365 1416 1290 1244 1211 1168 1136 1115 1094 1091 1092 1104 1137 1170 1226 1277 1322 1385 1439] + + + + + 1296x972_F11_100 + + + 1296x972 + + + F11 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [81 81 81 81 81 81 81 81] + + + [61 61 60 61 61 61 60 61] + + + [ 100] + + + [1401 1359 1298 1252 1208 1188 1170 1162 1168 1189 1228 1272 1326 1391 1462 1518 1594 1382 1323 1276 1228 1184 1160 1138 1133 1142 1166 1198 1246 1296 1367 1427 1505 1573 1343 1295 1247 1199 1161 1131 1113 1111 1118 1136 1174 1216 1275 1330 1406 1472 1534 1332 1273 1225 1175 1135 1114 1092 1087 1093 1114 1146 1197 1247 1309 1379 1454 1527 1308 1255 1203 1159 1118 1088 1072 1065 1073 1094 1125 1172 1228 1292 1364 1430 1501 1287 1238 1186 1146 1097 1078 1061 1051 1063 1076 1111 1156 1215 1275 1341 1415 1485 1271 1231 1174 1124 1089 1063 1045 1039 1043 1065 1100 1146 1200 1261 1327 1404 1472 1267 1214 1161 1115 972 1055 1036 1037 1037 1058 1090 1136 1186 1249 1322 1390 1469 1259 1203 1157 1106 1076 1046 1033 1025 1037 1052 1085 1132 1182 1242 1318 1388 1451 1252 1202 1150 1111 1072 1047 1028 1024 1026 1050 1084 1131 1179 1240 1312 1380 1454 1261 1202 1155 1110 1074 1042 1030 1024 1035 1053 1084 1126 1178 1245 1311 1385 1461 1252 1200 1157 1108 1076 1048 1032 1027 1038 1052 1093 1129 1186 1245 1313 1382 1455 1268 1210 1161 1118 1081 1056 1041 1037 1044 1063 1094 1142 1184 1253 1325 1384 1478 1265 1218 1175 1125 1089 1064 1048 1046 1053 1073 1111 1148 1202 1264 1327 1408 1472 1283 1235 1178 1137 1102 1078 1061 1058 1062 1088 1116 1165 1213 1279 1344 1414 1494 1298 1246 1198 1147 1120 1087 1075 1067 1084 1098 1131 1176 1229 1292 1366 1437 1508 1302 1272 1211 1169 1135 1109 1090 1087 1100 1116 1155 1198 1256 1314 1378 1458 1520] + + + [1390 1338 1288 1247 1206 1182 1163 1145 1153 1166 1195 1240 1287 1339 1397 1464 1511 1366 1304 1267 1219 1188 1157 1138 1125 1127 1143 1174 1208 1262 1310 1379 1437 1489 1326 1289 1235 1200 1157 1135 1108 1102 1099 1118 1150 1185 1231 1284 1350 1411 1474 1317 1266 1221 1174 1140 1114 1090 1081 1084 1094 1122 1161 1212 1266 1325 1391 1436 1295 1251 1201 1156 1122 1092 1074 1061 1062 1077 1107 1143 1187 1246 1308 1371 1435 1275 1234 1183 1145 1106 1077 1057 1044 1047 1062 1087 1132 1176 1226 1295 1358 1419 1266 1218 1174 1129 1096 1070 1047 1036 1037 1049 1081 1119 1161 1216 1277 1346 1403 1246 1215 1163 1123 1087 1067 1039 1029 1027 1041 1070 1107 1149 1207 1269 1335 1387 1244 1203 1160 1118 1088 1055 1036 1025 1024 1038 1066 1105 1147 1200 1265 1331 1390 1249 1200 1156 1119 1085 1057 1033 1025 1026 1036 1068 1100 1147 1200 1261 1324 1384 1247 1199 1160 1121 1085 1055 1038 1029 1026 1040 1066 1108 1148 1198 1262 1320 1402 1251 1209 1162 1124 1087 1065 1040 1030 1032 1047 1073 1114 1153 1205 1264 1328 1394 1256 1208 1169 1130 1095 1073 1053 1038 1041 1051 1084 1116 1161 1218 1273 1341 1390 1266 1218 1177 1136 1106 1079 1064 1053 1052 1065 1095 1132 1174 1226 1282 1348 1410 1277 1230 1186 1153 1119 1093 1076 1063 1064 1083 1109 1144 1194 1242 1299 1363 1426 1287 1246 1201 1165 1135 1110 1087 1079 1082 1093 1123 1162 1204 1257 1319 1383 1443 1309 1257 1217 1180 1144 1123 1105 1096 1094 1117 1139 1179 1226 1273 1334 1396 1461] + + + [1386 1328 1287 1239 1201 1179 1158 1147 1160 1174 1202 1251 1298 1365 1423 1483 1538 1351 1307 1260 1215 1182 1151 1132 1123 1130 1145 1180 1219 1266 1329 1393 1463 1525 1336 1287 1234 1194 1154 1132 1111 1099 1105 1124 1153 1194 1248 1303 1368 1434 1497 1313 1261 1215 1173 1139 1109 1090 1083 1081 1100 1131 1172 1227 1279 1348 1411 1479 1289 1245 1195 1154 1117 1091 1069 1065 1064 1079 1115 1154 1206 1264 1327 1397 1461 1274 1228 1183 1138 1102 1078 1058 1046 1049 1066 1092 1144 1189 1248 1312 1381 1450 1262 1214 1173 1127 1092 1068 1047 1038 1039 1054 1088 1125 1175 1235 1296 1367 1440 1257 1209 1160 1119 1089 1058 1043 1032 1034 1046 1078 1120 1168 1220 1295 1362 1421 1246 1203 1159 1114 1081 1055 1039 1024 1032 1044 1074 1114 1162 1221 1285 1355 1425 1241 1200 1151 1123 1081 1056 1037 1026 1030 1044 1073 1116 1159 1217 1283 1353 1413 1249 1202 1157 1114 1086 1058 1036 1031 1031 1047 1078 1118 1168 1222 1284 1354 1421 1245 1212 1162 1125 1086 1064 1043 1036 1038 1053 1083 1126 1170 1231 1291 1358 1425 1262 1209 1172 1130 1095 1070 1055 1043 1047 1061 1092 1134 1182 1234 1300 1365 1433 1262 1221 1176 1139 1108 1084 1061 1058 1057 1077 1105 1148 1192 1252 1317 1379 1447 1277 1234 1190 1149 1121 1098 1077 1065 1071 1086 1119 1160 1209 1266 1326 1397 1464 1290 1247 1207 1162 1135 1109 1090 1081 1093 1106 1135 1176 1225 1278 1348 1419 1483 1321 1262 1217 1180 1149 1125 1107 1102 1101 1119 1154 1193 1246 1303 1362 1441 1500] + + + [1326 1291 1256 1209 1172 1159 1141 1139 1140 1156 1191 1227 1271 1315 1370 1429 1471 1310 1273 1224 1186 1158 1134 1121 1115 1125 1142 1164 1204 1252 1297 1364 1402 1462 1298 1249 1209 1164 1140 1105 1100 1093 1098 1113 1145 1182 1225 1275 1326 1395 1423 1275 1235 1184 1151 1115 1097 1078 1074 1082 1095 1125 1166 1210 1252 1323 1367 1435 1253 1205 1176 1126 1104 1074 1064 1059 1069 1083 1113 1142 1188 1245 1298 1356 1414 1245 1196 1153 1118 1084 1071 1050 1051 1052 1071 1093 1138 1183 1230 1283 1347 1387 1240 1183 1148 1108 1079 1056 1041 1038 1039 1057 1087 1117 1168 1214 1276 1335 1390 1215 1183 1143 1099 1070 1050 1034 1032 1031 1054 972 1120 1159 1214 1264 1327 1375 1221 1172 1134 1091 1065 1051 1031 1026 1032 1046 1073 1110 1150 1203 1263 1328 1367 1212 1174 1131 1095 1064 1044 1028 1025 1024 1046 1071 1110 1152 1201 1257 1317 1375 1214 1170 1132 1093 1070 1041 1028 1030 1030 1047 1076 1104 1159 1207 1264 1318 1371 1220 1171 1131 1097 1065 1050 1026 1027 1030 1051 1069 1114 1154 1202 1260 1317 1375 1223 1181 1137 1103 1075 1051 1038 1035 1042 1050 972 1118 1165 1214 1267 1328 1373 1230 1193 1145 1115 1085 1055 1043 1043 1045 1063 1085 1130 1168 1221 1279 1336 1385 1250 1206 1166 1121 1096 1072 1053 1053 1054 1072 1098 1138 1185 1237 1287 1345 1408 1263 1220 1171 1137 1107 1081 1068 1063 1068 1085 1115 1152 1194 1242 1306 1365 1411 1261 1244 1177 1148 1117 1102 1082 1079 1085 1098 1128 1159 1211 1263 1316 1373 1432] + + + + + 1296x972_F2_100 + + + 1296x972 + + + F2 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [81 81 81 81 81 81 81 81] + + + [61 61 60 61 61 61 60 61] + + + [ 100] + + + [1412 1353 1311 1245 1219 1186 1174 1155 1175 1187 1237 1271 1327 1388 1474 1529 1593 1377 1322 1269 1234 1185 1159 1145 1138 1141 1169 1200 1247 1293 1364 1430 1502 1576 1358 1306 1251 1199 1166 1133 1113 1113 1119 1138 1174 1219 1273 1329 1404 1473 1545 1337 1278 1225 1180 1136 1117 1095 1086 1091 1120 1156 1196 1254 1310 1387 1453 1516 1317 1260 1202 1154 1120 1085 1075 1071 1075 1103 1126 1179 1222 1296 1362 1436 1507 1293 1240 1187 1141 1104 1076 1062 1051 1065 1078 1113 1158 1218 1267 1349 1421 1496 1280 1223 1178 1125 1086 1063 1045 1040 1046 1068 1102 1142 1197 1262 1323 1400 1471 1264 1216 1163 1111 1083 1050 1038 1032 1037 1057 1091 1134 1184 1248 1320 1394 1469 1261 1204 1154 1115 1069 1050 1033 1028 1034 1052 1081 1126 1181 1236 1316 1390 1452 1251 1204 1149 1105 1073 1042 1029 1025 1035 1050 1084 1124 1176 1237 1314 1380 1459 1253 1199 1153 1110 1069 1049 1032 1024 1033 1048 1083 1122 1177 1239 1306 1381 1455 1264 1206 1155 1108 1077 1044 1033 1025 1034 1052 1084 1130 1178 1242 1316 1382 1463 1262 1207 1159 1115 972 1052 1038 1037 1038 1061 1089 1134 1186 1252 1317 1391 1468 1275 1214 1171 1126 1087 1064 1047 1046 1047 1069 1098 1144 1201 1260 1335 1396 1473 1289 1231 1191 1133 1102 1071 1060 1054 1059 1086 1117 1155 1217 1274 1346 1418 1492 1301 1242 1194 1155 1118 1085 1070 1066 1076 1095 1129 1174 1224 1290 1358 1430 1502 1313 1264 1215 1163 1131 1110 1087 1081 1096 1111 1147 1186 1239 1313 1373 1455 1513] + + + [1392 1349 1293 1247 1216 1189 1162 1154 1159 1176 1205 1247 1287 1347 1407 1459 1527 1361 1318 1273 1232 1189 1157 1139 1124 1128 1143 1179 1215 1267 1325 1383 1446 1494 1335 1297 1246 1209 1164 1143 1115 1106 1105 1125 1152 1191 1241 1298 1358 1419 1480 1327 1274 1228 1180 1148 1114 1097 1081 1084 1102 1127 1166 1218 1271 1337 1401 1454 1299 1261 1210 1163 1128 1098 1072 1066 1066 972 1112 1150 1197 1256 1317 1379 1445 1295 1235 1194 1149 1113 1079 1064 1046 1055 1061 1094 1135 1184 1237 1301 1366 1428 1273 1233 1182 1133 1099 1074 1047 1039 1038 1054 1081 1121 1167 1230 1287 1350 1409 1259 1218 1168 1130 1092 1062 1041 1030 1029 1043 1072 1111 1159 1213 1282 1342 1399 1256 1213 1168 1125 1088 1060 1036 1026 1031 1036 1071 1109 1155 1212 1272 1332 1397 1251 1207 1163 1118 1088 1056 1040 1024 1027 1040 1067 1103 1150 1208 1270 1331 1402 1255 1206 1166 1123 1086 1059 1033 1028 1028 1040 1069 1105 1154 1209 1269 1334 1401 1260 1214 1166 1126 1090 1061 1043 1033 1031 1045 1073 1114 1158 1215 1275 1335 1395 1261 1215 1173 1136 1094 1073 1051 1037 1039 1057 1084 1117 1168 1221 1282 1346 1406 1275 1222 1181 1142 1107 1078 1058 1053 1050 1065 1093 1133 1180 1233 1297 1356 1416 1283 1241 1198 1153 1123 1095 1075 1063 1062 1081 1110 1149 1197 1249 1305 1372 1428 1288 1251 1204 1168 1135 1108 1087 1078 1081 1096 1122 1163 1211 1269 1322 1389 1445 1320 1260 1225 1182 1150 1120 1107 1098 1100 1118 1144 1187 1221 1281 1342 1406 1472] + + + [1386 1333 1287 1250 1206 1181 1161 1154 1159 1176 1213 1252 1306 1360 1421 1483 1542 1365 1313 1267 1218 1182 1156 1133 1121 1132 1149 1183 1228 1269 1333 1399 1458 1523 1331 1294 1241 1199 1161 1132 1110 1106 1105 1127 1156 1202 1250 1302 1372 1442 1500 1324 1263 1222 1180 1140 1115 1091 1082 1085 1099 1133 1178 1227 1288 1353 1411 1479 1295 1252 1203 1154 1125 1089 1071 1067 1066 1085 1112 1159 1208 1268 1334 1400 1466 1287 1230 1190 1138 1103 1078 1059 1046 1054 1066 1102 1139 1196 1250 1315 1385 1448 1270 1225 1178 1128 1097 1067 1047 1037 1041 1055 1088 1130 1174 1242 1307 1373 1429 1253 1219 1164 1125 1086 1059 1040 1033 1027 1048 1079 1120 1173 1229 1298 1365 1426 1251 1208 1162 1117 1085 1052 1037 1024 1033 1048 1074 1115 1164 1223 1290 1362 1419 1254 1201 1158 1117 1081 1057 1036 1024 1030 1044 1074 1114 1160 1221 1290 1350 1426 1247 1205 1159 1116 1082 1059 1038 1026 1029 1049 1076 1115 1166 1227 1287 1362 1427 1260 1209 1164 1124 1082 1057 1041 1034 1035 1050 1083 1123 1172 1228 1296 1357 1425 1258 1217 1170 1129 1095 1072 1050 1041 1047 1060 1092 1131 1182 1242 1303 1373 1431 1270 1222 1181 1138 1104 972 1060 1055 1054 1070 1108 1140 1192 1251 1318 1382 1452 1292 1238 1196 1151 1125 1091 1076 1067 1067 1089 1116 1163 1206 1274 1330 1401 1464 1297 1249 1209 1165 1131 1111 1089 1082 1088 1105 1130 1176 1227 1284 1346 1418 1483 1317 1266 1216 1183 1151 1124 1108 1097 1103 1123 1158 1195 1246 1306 1369 1436 1496] + + + [1337 1296 1266 1208 1185 1160 1152 1144 1145 1168 1196 1226 1281 1324 1382 1412 1491 1318 1279 1227 1197 1159 1141 1121 1123 1126 1147 1175 1210 1257 1303 1357 1425 1443 1310 1253 1208 1174 1140 1112 1109 1095 1110 1118 1152 1193 1232 1290 1348 1392 1438 1286 1236 1194 1151 1126 1099 1084 1081 1082 1104 1134 1170 1223 1268 1323 1377 1423 1272 1220 1176 1137 1102 1083 1068 1065 1072 1089 1113 1152 1195 1254 1306 1360 1425 1243 1205 1164 1120 1093 1068 1053 1050 1062 1077 1101 1135 1187 1237 1295 1355 1396 1229 1197 1150 1112 1081 1063 1047 1041 1046 1066 1087 1125 1174 1220 1282 1340 1398 1238 1180 1139 1104 1069 1052 1036 1037 1037 1052 1088 1121 1161 1217 1275 1337 1372 1214 1179 1137 1099 1067 1050 1036 1026 1037 1054 1075 1114 1158 1211 1274 1330 1384 1228 1172 1133 1099 1069 1044 1031 1025 1030 1044 972 1108 1159 1205 1271 1318 1388 1215 1178 1133 1096 1066 1041 1033 1024 1037 1046 1078 1112 1157 1209 1260 1324 1381 1221 1179 1138 1103 1067 1050 1034 1031 1031 1049 1077 1117 1161 1211 1273 1319 1381 1233 1190 1140 1106 1072 1052 1040 1036 1039 1057 1082 1120 1163 1216 1269 1338 1382 1238 1201 1154 1114 1085 1060 1049 1038 1051 1066 1090 1132 1174 1228 1292 1332 1387 1258 1210 1170 1123 1099 1075 1059 1046 1060 1075 1112 1136 1192 1244 1287 1349 1407 1272 1219 1180 1132 1112 1078 1073 1066 1062 1090 1114 1153 1198 1253 1306 1368 1417 1273 1242 1192 1155 1128 1099 1084 1075 1089 1101 1125 1162 1222 1269 1320 1384 1442] + + + + + + + A_100 + + + [ 100] + + + [1.99853 -0.905653 -0.0821708 -0.460996 1.77912 -0.258076 -0.151399 -1.53815 2.713] + + + [-29.8061 -52.306 -95.824] + + + [1.11716 1 1 2.3808] + + + + + D50_100 + + + [ 100] + + + [2.097 -1.12811 0.0410741 -0.327961 1.77429 -0.380266 -0.0366512 -0.804392 1.8682] + + + [-40.7723 -43.9103 -61.7554] + + + [1.64416 1 1 1.6405] + + + + + D65_100 + + + [ 100] + + + [2.14135 -1.15688 0.0270315 -0.332497 1.83306 -0.43858 -0.0348043 -0.657467 1.7185] + + + [-47.0355 -42.0548 -56.246] + + + [1.92224 1 1 1.428] + + + + + F11_100 + + + [ 100] + + + [1.91878 -0.849702 -0.0555984 -0.407686 1.7518 -0.292535 -0.10781 -0.692012 1.8706] + + + [-55.1752 -65.3873 -90.5846] + + + [1.49049 1 1 1.9841] + + + + + F2_100 + + + [ 100] + + + [2.56944 -1.54023 0.0045255 -0.421136 1.74591 -0.223588 -0.101719 -0.718139 1.8415] + + + [-55.5346 -60.5148 -88.6402] + + + [1.55891 1 1 2.0968] + + + + + + [ -1] + + + + + [ 80] + + + [ 20] + + + [ 0.7] + + + [ 0.7] + + + [ 0.7] + + + [ 0.9] + + + + + 1296x972_FPS_15 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 1296x972_FPS_10 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 1296x972_FPS_05 + + + + + fast + + + [ 1] + + + [ 1] + + + + + normal + + + [ 2] + + + [ 0.9] + + + + + slow + + + [ 4] + + + [ 0.9] + + + + + + + [ 8] + + + + + + 1296x972 + + + 1296x972 + + + [256 256 256 256] + + + + + + + linear + + + [256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4096] + + + [0 256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4095] + + + + + + [ -1] + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + + + 1296x972 + + + 1296x972 + + + [ 5] + + + [ 22] + + + [ 5] + + + [ 22] + + + [ 0] + + + [ 0] + + + [-0.125 -0.4375 0.6875] + + + [1.0625 -2.875 1.6875] + + + + + + + 1296x972 + + + 1296x972 + + + [ 1] + + + [1023 841 652 551 486 405 354 319 292 254 228 209 181 162 148 137 129] + + + [ 4] + + + [ 4] + + + [ 0.15] + + + [ 0] + + + [1 1 1 1] + + + + + + + 1296x972 + + + 1296x972 + + + + + ISP_DPCC_MODE + + + 0x0005 + + + + + ISP_DPCC_OUT_MODE + + + 0x0003 + + + + + ISP_DPCC_SET_USE + + + 0x000F + + + + + ISP_DPCC_METHODS_SET1 + + + 0x1D1D + + + + + ISP_DPCC_METHODS_SET2 + + + 0x0707 + + + + + ISP_DPCC_METHODS_SET3 + + + 0x1F1F + + + + + ISP_DPCC_LINE_THRESH_1 + + + 0x0808 + + + + + ISP_DPCC_LINE_MAD_FAC_1 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_1 + + + 0x0404 + + + + + ISP_DPCC_RND_THRESH_1 + + + 0x0804 + + + + + ISP_DPCC_RG_FAC_1 + + + 0x0802 + + + + + ISP_DPCC_LINE_THRESH_2 + + + 0x100C + + + + + ISP_DPCC_LINE_MAD_FAC_2 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_2 + + + 0x0404 + + + + + ISP_DPCC_RND_THRESH_2 + + + 0x0808 + + + + + ISP_DPCC_RG_FAC_2 + + + 0x0808 + + + + + ISP_DPCC_LINE_THRESH_3 + + + 0x0000 + + + + + ISP_DPCC_LINE_MAD_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_RND_THRESH_3 + + + 0x0804 + + + + + ISP_DPCC_RG_FAC_3 + + + 0x0400 + + + + + ISP_DPCC_RO_LIMITS + + + 0x0FFF + + + + + ISP_DPCC_RND_OFFS + + + 0x0FFF + + + + + + + + + + on + + + +
diff --git a/drivers/GC5035/GC5035_1920x1080.xml b/drivers/GC5035/GC5035_1920x1080.xml new file mode 100644 index 0000000..171f67c --- /dev/null +++ b/drivers/GC5035/GC5035_1920x1080.xml @@ -0,0 +1,1287 @@ + + +
+ + 08-Feb-2022 + + + Mcf + + + gc5035 + + + 5Mlens_1080p + + + v2.1.1 + + + + + 1920x1080 + + + 0x00000001 + + + [ 1920] + + + [ 1080] + + + + + FPS_15 + + + [ 14.9916] + + + + + FPS_10 + + + [ 9.9944] + + + + + FPS_05 + + + [ 4.9972] + + + + + +
+ + + + + + 1920x1080 + + + 1920x1080 + + + [0.316211 0.450278 0.23351] + + + [-0.747965 0.0904144 0.657551 0.327436 -0.811475 0.48404] + + + [-0.800277 -0.59963 -2.3607] + + + [1.03557 1.08428 1.13299 1.18171 1.23042 1.27913 1.32326 1.36926 1.42527 1.48345 1.53323 1.58745 1.63332 1.67663 1.72844 1.8246] + + + [-0.00414674 0.0285734 0.0458083 0.0590686 0.0684166 0.0745711 0.103537 0.171416 0.0766262 0.0287319 0.0187589 -0.00721015 0.00860515 0.00149051 0.00465507 0.02029] + + + [1.03557 1.09863 1.139 1.17938 1.22525 1.28052 1.32736 1.3712 1.41647 1.4737 1.50747 1.58012 1.62599 1.68328 1.73065 1.8204] + + + [0.104147 0.08587 0.0736434 0.0614168 0.0456015 0.0519858 0.0426176 0.0399399 0.0599487 0.0792273 0.116206 0.144303 0.128488 0.121734 0.102574 0.058049] + + + [0.828809 0.890615 0.957978 1.01338 1.0697 1.12955 1.1988 1.26015 1.33667 1.40375 1.49365 1.54193 1.61013 1.68533 1.74067 1.8553] + + + [-0.0307749 -0.0139859 0.0324236 0.0781028 0.0913031 0.120986 0.12847 0.161498 0.228047 0.227677 0.120452 0.107133 0.0950322 0.089865 0.109512 0.12302] + + + [0.845777 0.891118 0.939466 1.01166 1.0779 1.13324 1.19655 1.26633 1.34355 1.39837 1.46455 1.53792 1.60233 1.67208 1.74842 1.8597] + + + [0.208678 0.202655 0.189942 0.2018 0.201007 0.181359 0.161225 0.143949 0.135979 0.126124 0.151362 0.184872 0.224283 0.209637 0.166558 0.091439] + + + [ 1.0356] + + + [ 1.82] + + + [ 1.85] + + + [ 1.474] + + + D50 + + + [ 4.5676] + + + [0.75 1.28836 1.77672 2.164 2.6 3.0618] + + + [114 114 105 95 95 90] + + + [83 83 110 120 122 128] + + + [28 27 18 16 9 9] + + + [123 123 123 123 123 120] + + + [123 123 123 123 123 126] + + + [5 5 5 5 5 5] + + + [ 1] + + + [ 0.8] + + + [ 0.05] + + + + [ 0.05] + + + [ 0.05] + + + [ 0.4] + + + [ 0.5] + + + [ 0.9] + + + [ 0.5] + + + [ 50] + + + [ 1] + + + [ 0.5] + + + + + + + + A + + + Indoor + + + + [1132.49 1537.15 1537.15 4218.7397] + + + [ 247.3246] + + + [1 1] + + + [-0.0885832 0.012733] + + + + + + 1920x1080 + + + 1920x1080_A_100 + + + + + [1.11716 1 1 2.3808] + + + [1.99853 -0.905653 -0.0821708 -0.460996 1.77912 -0.258076 -0.151399 -1.53815 2.713] + + + [-29.8061 -52.306 -95.824] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + A_100 + + + + + + D50 + + + Outdoor + + + + [329.787 3.43476 3.43476 1629.9174] + + + [ 116.6849] + + + [1 1] + + + [0.0586363 0.0057683] + + + + + + 1920x1080 + + + 1920x1080_D50_100 + + + + + [1.64416 1 1 1.6405] + + + [2.097 -1.12811 0.0410741 -0.327961 1.77429 -0.380266 -0.0366512 -0.804392 1.8682] + + + [-40.7723 -43.9103 -61.7554] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D50_100 + + + + + + D65 + + + Outdoor + + + + [342.947 -200.069 -200.069 1325.0367] + + + [ 102.4529] + + + [1 1] + + + [0.115106 0.012733] + + + + + + 1920x1080 + + + 1920x1080_D65_100 + + + + + [1.92224 1 1 1.428] + + + [2.14135 -1.15688 0.0270315 -0.332497 1.83306 -0.43858 -0.0348043 -0.657467 1.7185] + + + [-47.0355 -42.0548 -56.246] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D65_100 + + + + + + F2 (CWF) + + + Indoor + + + + [533.138 -316.589 -316.589 1155.6585] + + + [ 114.3146] + + + [1 1] + + + [0.00647981 -0.026117] + + + + + + 1920x1080 + + + 1920x1080_F2_100 + + + + + [1.55891 1 1 2.0968] + + + [2.56944 -1.54023 0.0045255 -0.421136 1.74591 -0.223588 -0.101719 -0.718139 1.8415] + + + [-55.5346 -60.5148 -88.6402] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F2_100 + + + + + + F11 (TL84) + + + Indoor + + + + [395.155 -67.974 -67.974 1176.0173] + + + [ 107.9546] + + + [1 1] + + + [0.00547574 -0.011106] + + + + + + 1920x1080 + + + 1920x1080_F11_100 + + + + + [1.49049 1 1 1.9841] + + + [1.91878 -0.849702 -0.0555984 -0.407686 1.7518 -0.292535 -0.10781 -0.692012 1.8706] + + + [-55.1752 -65.3873 -90.5846] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F11_100 + + + + + + + + + 1920x1080_A_100 + + + 1920x1080 + + + A + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [96 104 110 119 129 128 137 137] + + + [65 66 66 67 67 69 71 69] + + + [ 100] + + + [1475 1417 1359 1299 1254 1220 1201 1185 1193 1225 1264 1314 1388 1469 1555 1641 1721 1446 1382 1323 1266 1224 1186 1161 1156 1160 1191 1230 1288 1354 1433 1518 1607 1694 1412 1351 1288 1235 1193 1154 1135 1124 1130 1155 1197 1251 1320 1398 1485 1571 1663 1386 1327 1260 1211 1162 1129 1105 1098 1106 1131 1170 1223 1296 1372 1458 1547 1627 1352 1304 1237 1187 1140 1105 1084 1077 1081 1107 1145 1201 1267 1346 1431 1525 1610 1339 1276 1225 1166 1121 1086 1066 1057 1066 1087 1127 1181 1248 1329 1406 1506 1586 1320 1265 1209 1149 1108 1073 1050 1045 1050 1071 1112 1164 1231 1312 1396 1485 1571 1307 1253 1192 1140 1096 1061 1042 1033 1041 1060 1100 1147 1219 1296 1383 1469 1557 1305 1247 1183 1133 1091 1055 1035 1028 1032 1055 1091 1142 1213 1288 1375 1460 1553 1297 1239 1182 1129 1087 1051 1032 1024 1032 1050 1090 1140 1209 1285 1367 1460 1541 1304 1236 1179 1129 1088 1055 1033 1026 1030 1053 1084 1143 1210 1286 1370 1460 1553 1299 1245 1183 1132 1092 1058 1037 1030 1037 1052 1093 1144 1212 1289 1371 1461 1546 1314 1244 1191 1139 1095 1065 1045 1039 1041 1063 1102 1154 1219 1300 1383 1472 1560 1318 1256 1202 1151 1106 1074 1054 1049 1055 1074 1113 1167 1234 1311 1397 1480 1566 1331 1276 1214 1164 1122 1087 1066 1063 1068 1088 1131 1180 1252 1327 1409 1502 1590 1353 1289 1230 1181 1143 1105 1087 1079 1088 1108 1150 1200 1270 1345 1429 1523 1607 1371 1314 1253 1203 1159 1130 1106 1098 1108 1130 1172 1224 1291 1374 1449 1553 1628] + + + [1416 1365 1313 1265 1230 1195 1176 1157 1166 1181 1214 1258 1312 1369 1438 1495 1553 1379 1338 1291 1238 1208 1168 1146 1138 1132 1150 1189 1225 1282 1344 1404 1467 1530 1361 1312 1256 1217 1179 1145 1119 1104 1113 1124 1161 1199 1254 1313 1371 1443 1505 1340 1287 1238 1192 1153 1119 1098 1083 1086 1104 1133 1177 1235 1288 1358 1418 1480 1318 1268 1219 1171 1135 1100 1074 1066 1067 1080 1115 1155 1207 1273 1329 1395 1468 1294 1251 1203 1159 1117 1085 1061 1048 1051 1065 1094 1141 1194 1252 1314 1390 1449 1286 1241 1195 1143 1106 1071 1048 1039 1037 1052 1087 1125 1178 1242 1303 1371 1433 1273 1232 1181 1135 1096 1066 1044 1026 1028 1045 1075 1118 1168 1227 1294 1364 1424 1270 1223 1176 1132 1095 1061 1035 1024 1028 1038 1071 1108 1162 1222 1290 1354 1413 1264 1221 1172 1131 1088 1056 1037 1024 1024 1036 1069 1108 1162 1219 1286 1351 1422 1273 1220 1172 1132 1093 1061 1036 1025 1024 1041 1067 1110 1162 1223 1287 1351 1421 1267 1227 1175 1136 1093 1062 1042 1032 1030 1046 1073 1116 1167 1228 1290 1358 1416 1283 1232 1185 1137 1105 1071 1050 1037 1036 1056 1084 1120 1176 1232 1299 1362 1428 1289 1235 1195 1152 1115 1081 1059 1050 1051 1064 1096 1137 1189 1247 1311 1373 1437 1302 1252 1207 1164 1127 1095 1073 1065 1063 1081 1112 1149 1205 1261 1326 1393 1447 1317 1264 1220 1179 1145 1111 1090 1079 1084 1098 1128 1170 1223 1282 1341 1408 1474 1333 1284 1239 1197 1164 1130 1108 1103 1101 1122 1146 1189 1243 1298 1357 1429 1494] + + + [1414 1357 1311 1260 1223 1191 1175 1159 1166 1187 1225 1266 1329 1389 1453 1521 1584 1378 1330 1281 1233 1199 1165 1143 1134 1138 1159 1193 1237 1296 1356 1431 1499 1560 1355 1306 1251 1213 1168 1143 1116 1107 1113 1129 1168 1212 1270 1331 1401 1471 1540 1333 1287 1232 1189 1149 1116 1096 1086 1089 1109 1142 1189 1249 1307 1381 1445 1516 1314 1263 1217 1167 1130 1099 1075 1068 1071 1088 1122 1169 1222 1295 1354 1435 1504 1288 1247 1199 1151 1113 1081 1062 1050 1055 1073 1106 1153 1210 1276 1344 1419 1486 1283 1235 1190 1143 1099 1071 1048 1038 1042 1057 1095 1138 1194 1263 1332 1403 1471 1269 1230 1177 1136 1091 1062 1041 1031 1031 1053 1083 1130 1188 1250 1321 1392 1461 1267 1225 1173 1127 1091 1057 1039 1025 1030 1047 1080 1123 1182 1246 1320 1388 1452 1268 1213 1168 1128 1086 1058 1037 1024 1029 1044 1080 1122 1177 1244 1316 1386 1457 1270 1219 1171 1128 1092 1059 1039 1025 1030 1046 1078 1125 1181 1247 1314 1387 1465 1275 1226 1176 1130 1092 1057 1042 1032 1035 1054 1082 1131 1184 1252 1320 1392 1463 1278 1229 1182 1137 1099 1069 1051 1039 1043 1058 1095 1139 1195 1259 1331 1401 1468 1286 1237 1191 1150 1111 1077 1060 1054 1055 1074 1106 1148 1209 1274 1342 1412 1474 1303 1253 1202 1162 1124 1093 1074 1066 1071 1085 1123 1164 1227 1290 1352 1430 1500 1311 1267 1220 1175 1137 1111 1089 1079 1087 1106 1139 1183 1243 1308 1374 1453 1514 1343 1278 1234 1195 1160 1129 1107 1106 1106 1127 1160 1207 1261 1327 1396 1470 1538] + + + [1363 1322 1278 1222 1197 1182 1159 1156 1160 1184 1221 1259 1317 1366 1425 1483 1554 1343 1295 1247 1208 1182 1146 1136 1133 1139 1156 1195 1235 1288 1345 1408 1474 1521 1315 1268 1220 1181 1156 1120 1112 1112 1117 1134 1172 1211 1264 1326 1381 1451 1502 1298 1253 1196 1166 1128 1110 1088 1083 1096 1114 1151 1195 1244 1305 1367 1429 1497 1272 1222 1186 1143 1111 1085 1069 1074 1077 1097 1130 1171 1222 1290 1346 1411 1476 1274 1210 1177 1130 1097 1074 1056 1058 1065 1084 1112 1159 1211 1270 1336 1399 1458 1242 1209 1157 1119 1082 1062 1048 1046 1051 1071 1105 1145 1194 1262 1319 1389 1442 1241 1197 1152 1107 1077 1053 1037 1034 1043 1060 1096 1136 1187 1246 1312 1376 1436 1239 1191 1146 1107 1074 1046 1034 1028 1032 1058 1088 1130 1180 1245 1315 1370 1434 1230 1188 1139 1097 1070 1045 1029 1024 1034 1050 1082 1126 1177 1241 1299 1367 1421 1240 1191 1142 1101 1067 1042 1029 1026 1033 1053 1082 1122 1184 1232 1299 1371 1437 1245 1186 1144 1102 1071 1050 1031 1026 1032 1056 1083 1128 1182 1245 1300 1361 1428 1245 1195 1146 1111 1075 1052 1034 1032 1037 1052 1089 1132 1189 1241 1309 1371 1430 1263 1209 1165 1118 1084 1055 1041 1038 1042 1069 1095 1145 1189 1254 1316 1378 1442 1260 1221 1170 1133 1095 1072 1051 1052 1056 1074 1108 1149 1207 1266 1328 1395 1455 1286 1242 1187 1148 1112 1083 1066 1066 1068 1098 1118 1167 1221 1275 1344 1411 1459 1310 1256 1211 1155 1129 1099 1083 1080 1087 1102 1134 1177 1230 1305 1353 1425 1487] + + + + + 1920x1080_D50_100 + + + 1920x1080 + + + D50 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [97 105 111 119 126 130 135 137] + + + [63 65 67 67 69 70 71 68] + + + [ 100] + + + [1451 1396 1338 1283 1245 1209 1189 1184 1189 1219 1261 1310 1378 1449 1527 1604 1703 1426 1359 1307 1246 1213 1178 1162 1155 1158 1188 1224 1281 1343 1415 1497 1576 1651 1382 1334 1273 1225 1183 1150 1131 1126 1134 1158 1201 1251 1313 1392 1462 1552 1630 1367 1300 1244 1195 1156 1126 1108 1095 1110 1134 1169 1223 1288 1360 1442 1523 1611 1339 1284 1224 1178 1133 1102 1084 1081 1083 1114 1149 1201 1265 1339 1415 1494 1581 1313 1265 1205 1158 1115 1080 1066 1064 1071 1092 1130 1180 1245 1320 1395 1480 1565 1301 1254 1192 1143 1098 1068 1055 1047 1053 1074 1114 1166 1223 1298 1376 1462 1544 1288 1239 1178 1129 1086 1060 1041 1038 1043 1067 1106 1152 1215 1287 1368 1452 1534 1286 1231 1174 1122 1081 1054 1036 1029 1040 1061 1095 1144 1207 1281 1360 1436 1524 1280 1225 1165 1118 1081 1050 1032 1027 1038 1055 1094 1142 1202 1277 1358 1439 1518 1282 1223 1167 1119 1077 1047 1036 1024 1036 1056 1092 1140 1205 1276 1353 1438 1529 1280 1224 1165 1121 1083 1055 1034 1030 1037 1059 1093 1145 1204 1281 1361 1436 1530 1295 1230 1178 1128 1087 1060 1040 1038 1043 1066 1103 1151 1211 1288 1368 1450 1530 1293 1243 1187 1133 1100 1066 1051 1049 1052 1076 1110 1166 1224 1296 1376 1456 1537 1318 1256 1199 1154 1112 1080 1066 1057 1066 1092 1128 1179 1241 1313 1390 1474 1566 1336 1265 1218 1164 1126 1097 1076 1071 1084 1106 1142 1194 1262 1331 1410 1495 1566 1344 1297 1228 1187 1144 1116 1098 1096 1101 1124 1162 1218 1275 1347 1428 1513 1606] + + + [1400 1356 1304 1258 1214 1191 1168 1155 1155 1179 1206 1248 1297 1361 1418 1473 1538 1367 1325 1279 1232 1198 1161 1142 1129 1131 1148 1175 1220 1270 1333 1393 1455 1514 1349 1301 1248 1214 1171 1141 1116 1105 1106 1121 1159 1192 1245 1303 1366 1429 1491 1337 1278 1234 1184 1150 1114 1096 1084 1082 1106 1127 1174 1225 1281 1347 1408 1466 1308 1263 1213 1171 1128 1102 1073 1067 1066 1080 1110 1151 1202 1265 1325 1394 1454 1293 1246 1198 1152 1117 1081 1063 1048 1052 1066 1094 1137 1188 1250 1311 1377 1439 1278 1236 1185 1140 1101 1073 1051 1037 1040 1050 1083 1126 1173 1237 1297 1363 1424 1268 1228 1178 1133 1098 1064 1042 1028 1030 1044 1077 1115 1166 1224 1288 1353 1415 1264 1215 1173 1129 1091 1062 1039 1025 1027 1043 1067 1109 1163 1220 1286 1350 1404 1264 1217 1165 1129 1086 1058 1034 1024 1025 1039 1069 1109 1155 1214 1279 1344 1414 1269 1212 1171 1127 1091 1060 1038 1027 1025 1045 1067 1110 1158 1217 1280 1345 1414 1270 1219 1172 1131 1093 1063 1043 1032 1031 1046 1075 1114 1163 1220 1287 1350 1416 1273 1221 1181 1136 1102 1070 1049 1038 1038 1056 1082 1118 1174 1229 1292 1359 1417 1281 1232 1187 1145 1111 1076 1059 1050 1052 1067 1094 1136 1184 1244 1302 1368 1425 1293 1242 1197 1158 1124 1096 1073 1063 1062 1081 1107 1147 1201 1258 1318 1384 1446 1302 1254 1215 1173 1135 1107 1086 1076 1081 1095 1125 1164 1215 1273 1334 1400 1463 1325 1271 1225 1192 1155 1125 1106 1094 1099 1113 1141 1186 1232 1293 1346 1420 1480] + + + [1391 1338 1292 1250 1212 1183 1164 1153 1161 1183 1212 1257 1309 1368 1432 1488 1557 1361 1309 1267 1217 1184 1157 1139 1128 1131 1153 1186 1227 1284 1341 1407 1466 1536 1335 1293 1240 1200 1163 1134 1111 1105 1112 1126 1162 1203 1252 1318 1379 1450 1500 1315 1269 1221 1175 1138 1111 1094 1083 1084 1107 1138 1177 1235 1291 1355 1426 1488 1300 1249 1203 1159 1121 1094 1071 1067 1067 1086 1116 1160 1212 1277 1340 1407 1472 1280 1232 1187 1144 1107 1075 1059 1045 1053 1068 1101 1143 1199 1260 1321 1393 1457 1266 1223 1175 1132 1094 1067 1048 1038 1039 1057 1091 1128 1183 1243 1313 1378 1448 1254 1219 1165 1122 1086 1059 1038 1032 1033 1050 1077 1125 1173 1235 1303 1370 1436 1255 1206 1161 1119 1085 1052 1035 1024 1030 1042 1078 1117 1171 1232 1295 1367 1428 1251 1203 1160 1118 1083 1051 1034 1024 1027 1049 1072 1117 1166 1228 1297 1362 1433 1248 1208 1159 1120 1084 1054 1037 1026 1032 1045 1078 1119 1172 1233 1299 1364 1439 1259 1210 1166 1123 1087 1058 1042 1034 1035 1054 1079 1125 1178 1237 1301 1371 1431 1263 1217 1170 1128 1095 1068 1049 1041 1046 1061 1094 1133 1187 1248 1314 1376 1447 1277 1224 1182 1142 1103 1079 1062 1052 1055 1074 1104 1144 1196 1262 1319 1390 1453 1290 1243 1195 1155 1119 1090 1072 1068 1071 1087 1119 1159 1217 1276 1334 1405 1465 1302 1253 1206 1169 1137 1108 1087 1081 1087 1104 1135 1181 1232 1293 1356 1427 1487 1323 1273 1225 1186 1152 1124 1107 1103 1107 1124 1159 1201 1252 1312 1372 1446 1519] + + + [1343 1303 1259 1217 1191 1162 1149 1142 1138 1163 1193 1234 1275 1331 1379 1434 1494 1320 1276 1233 1199 1163 1142 1126 1123 1123 1137 1170 1205 1252 1305 1358 1416 1466 1299 1259 1214 1176 1146 1120 1100 1095 1102 1117 1145 1183 1231 1280 1341 1395 1441 1281 1240 1196 1160 1127 1101 1083 1081 1081 1102 1127 1167 1210 1266 1320 1379 1432 1268 1218 1176 1142 1108 1085 1070 1065 1067 1086 1112 1148 1201 1254 1307 1361 1420 1252 1205 1166 1128 1092 1075 1057 1046 1054 1072 1098 1135 1182 1236 1288 1353 1406 1235 1198 1160 1119 1086 1062 1045 1040 1044 1060 1087 1122 1171 1225 1283 1340 1398 1229 1194 1148 1103 1080 1049 1038 1035 1032 1056 1075 1117 1161 1216 1271 1335 1390 1230 1184 1145 1111 1072 1053 1035 1030 1032 1046 1075 1114 1156 1213 1274 1328 1381 1224 1188 1143 1100 1074 1049 1033 1024 1026 1049 1072 1111 1157 1210 1270 1323 1381 1229 1183 1141 1108 1070 1048 1036 1029 1033 1044 1075 1110 1157 1213 1264 1325 1382 1228 1187 1149 1107 1078 1054 1038 1035 1033 1053 1076 1114 1166 1214 1272 1331 1382 1244 1192 1156 1115 1084 1062 1041 1042 1038 1057 1084 1122 1169 1222 1274 1332 1390 1242 1207 1161 1127 1090 1066 1053 1043 1050 1067 1093 1130 1180 1229 1285 1346 1400 1263 1218 1173 1137 1104 1087 1062 1061 1057 1081 1101 1148 1191 1245 1300 1357 1418 1272 1229 1190 1146 1122 1087 1075 1069 1073 1090 1119 1153 1207 1258 1314 1369 1427 1297 1250 1209 1166 1130 1111 1088 1092 1092 1104 1133 1176 1216 1278 1326 1397 1444] + + + + + 1920x1080_D65_100 + + + 1920x1080 + + + D65 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [99 104 109 119 125 132 136 136] + + + [63 65 67 68 68 70 69 70] + + + [ 100] + + + [1437 1373 1325 1267 1238 1201 1188 1180 1183 1210 1251 1304 1374 1433 1516 1597 1670 1406 1349 1294 1239 1202 1172 1154 1156 1158 1184 1228 1271 1335 1418 1485 1558 1634 1383 1316 1262 1213 1177 1141 1128 1123 1128 1154 1195 1250 1303 1380 1453 1533 1617 1358 1292 1236 1194 1149 1118 1099 1098 1102 1133 1167 1217 1287 1351 1435 1505 1591 1332 1268 1214 1168 1125 1098 1077 1071 1088 1109 1149 1198 1255 1332 1406 1484 1558 1311 1252 1192 1148 1104 1079 1063 1064 1063 1092 1129 1179 1242 1311 1386 1468 1554 1282 1233 1184 1128 1095 1066 1050 1043 1056 1076 1118 1162 1222 1296 1369 1450 1531 1274 1225 1168 1115 1085 1051 1042 1032 1039 1069 1102 1153 1211 1283 1361 1439 1520 1270 1215 1160 1116 1075 1048 1036 1028 1036 1056 1097 1143 1206 1273 1353 1437 1512 1263 1210 1148 1110 1075 1044 1026 1027 1037 1051 1094 1138 1197 1280 1347 1425 1510 1276 1208 1158 1107 1072 1044 1024 1024 1033 1053 1091 1138 1204 1267 1339 1424 1526 1263 1211 1154 1114 1074 1046 1030 1025 1034 1056 1092 1141 1205 1270 1346 1424 1509 1277 1216 1164 1118 1080 1056 1036 1033 1039 1060 1098 1147 1208 1278 1356 1438 1514 1284 1227 1174 1127 1084 1061 1044 1041 1051 1071 1109 1159 1221 1289 1366 1441 1528 1303 1238 1188 1140 1103 1073 1052 1055 1057 1088 1119 1177 1234 1305 1379 1460 1535 1318 1255 1205 1157 1113 1089 1070 1065 1078 1097 1138 1188 1247 1324 1396 1478 1564 1330 1284 1223 1179 1136 1105 1086 1087 1092 1119 1150 1207 1271 1340 1411 1498 1573] + + + [1400 1350 1299 1259 1223 1190 1165 1153 1158 1179 1200 1254 1294 1363 1413 1477 1525 1371 1321 1282 1234 1198 1165 1143 1130 1128 1146 1182 1221 1267 1328 1395 1456 1519 1341 1302 1247 1213 1172 1138 1115 1104 1107 1123 1156 1196 1247 1303 1362 1430 1480 1329 1279 1236 1185 1152 1116 1097 1083 1087 1107 1128 1170 1226 1282 1349 1407 1476 1309 1264 1214 1172 1133 1099 1078 1068 1069 1083 1113 1155 1201 1263 1323 1391 1454 1290 1244 1199 1152 1117 1084 1063 1050 1052 1064 1092 1142 1191 1252 1311 1380 1440 1278 1232 1188 1139 1103 1073 1049 1039 1041 1056 1087 1124 1174 1240 1298 1364 1424 1271 1228 1178 1137 1096 1067 1045 1029 1033 1050 1076 1117 1169 1224 1291 1354 1418 1268 1221 1169 1130 1097 1062 1038 1027 1034 1041 1074 1112 1163 1220 1290 1347 1407 1262 1213 1166 1134 1088 1064 1036 1029 1026 1042 1070 1107 1160 1218 1278 1345 1416 1260 1218 1171 1128 1092 1059 1042 1024 1030 1042 1071 1112 1162 1222 1281 1346 1415 1268 1219 1174 1131 1093 1067 1041 1036 1028 1051 1074 1117 1166 1221 1287 1350 1416 1272 1222 1180 1137 1102 1071 1050 1039 1041 1052 1087 1121 1174 1233 1292 1355 1416 1279 1234 1187 1145 1112 1082 1062 1049 1055 1066 1094 1136 1184 1241 1307 1368 1431 1291 1241 1201 1164 1124 1093 1070 1059 1062 1080 1112 1149 1199 1261 1313 1380 1449 1297 1256 1211 1170 1135 1114 1085 1082 1081 1095 1124 1167 1213 1274 1331 1397 1465 1323 1269 1233 1192 1153 1120 1109 1095 1100 1113 1143 1187 1231 1291 1345 1416 1479] + + + [1380 1333 1285 1245 1210 1179 1163 1151 1156 1179 1211 1250 1304 1373 1419 1483 1543 1365 1307 1264 1215 1186 1155 1134 1129 1128 1148 1185 1226 1278 1335 1402 1460 1530 1329 1290 1235 1198 1156 1135 1110 1103 1109 1125 1162 1199 1254 1315 1373 1440 1503 1310 1267 1216 1176 1140 1111 1092 1083 1087 1108 1130 1180 1230 1284 1356 1416 1481 1296 1245 1201 1151 1118 1093 1071 1063 1067 1084 1117 1155 1215 1272 1328 1400 1470 1275 1229 1180 1143 1105 1073 1057 1046 1052 1068 1098 1143 1194 1256 1317 1390 1450 1267 1218 1175 1128 1090 1067 1048 1035 1043 1053 1092 1130 1182 1242 1309 1369 1442 1255 1208 1159 1121 1085 1058 1039 1030 1033 1050 1078 1124 1171 1234 1298 1369 1423 1249 1204 1159 1115 1081 1052 1037 1024 1032 1046 1075 1116 1167 1227 1295 1360 1421 1254 1199 1153 1119 1082 1054 1035 1025 1032 1046 1072 1118 1168 1228 1292 1358 1425 1254 1198 1157 1116 1085 1053 1036 1027 1030 1045 1079 1116 1171 1232 1292 1359 1427 1250 1210 1163 1122 1084 1059 1042 1036 1037 1053 1082 1123 1175 1237 1295 1370 1430 1261 1210 1171 1126 1092 1067 1050 1040 1046 1062 1093 1129 1185 1242 1307 1371 1439 1272 1224 1178 1141 1102 1077 1060 1058 1055 1072 1106 1146 1195 1256 1323 1381 1455 1281 1236 1191 1155 1120 1092 1074 1068 1071 1088 1119 1165 1214 1278 1331 1403 1457 1298 1249 1206 1164 1132 1111 1088 1082 1090 1102 1138 1175 1231 1289 1352 1424 1478 1316 1268 1221 1182 1155 1130 1106 1103 1105 1123 1152 1199 1253 1310 1370 1436 1522] + + + [1345 1293 1260 1208 1185 1166 1143 1141 1140 1160 1179 1228 1267 1316 1374 1413 1476 1314 1279 1234 1197 1167 1135 1124 1114 1120 1134 1166 1196 1253 1292 1347 1401 1456 1296 1252 1212 1178 1146 1115 1102 1095 1100 1111 1141 1180 1222 1273 1336 1384 1425 1282 1234 1191 1159 1127 1103 1084 1076 1079 1096 1121 1160 1208 1263 1312 1369 1420 1267 1217 1177 1140 1109 1079 1067 1065 1064 1081 1106 1143 1189 1240 1296 1355 1405 1255 1205 1165 1130 1097 1074 1052 1049 1051 1067 1093 1130 1180 1229 1283 1343 1401 1237 1196 1157 1119 1082 1064 1047 1041 1041 1057 1080 1120 1163 1218 1274 1334 1382 1229 1197 1147 1109 1085 1053 1038 1034 1034 1051 1075 1111 1158 1210 1270 1324 1374 1228 1186 1147 1110 1074 1053 1038 1026 1034 1047 1073 1111 1148 1202 1263 1325 1374 1227 1183 1141 1105 1077 1050 1039 1024 1030 1046 1070 1105 1154 1204 1267 1319 1366 1228 1186 1142 1106 1082 1051 1035 1032 1033 1044 1071 1109 1153 1205 1258 1319 1376 1235 1186 1152 1111 1080 1059 1040 1033 1037 1049 1075 1117 1158 1208 1260 1319 1383 1241 1193 1153 1123 1086 1063 1044 1038 1041 1057 1083 1118 1168 1219 1272 1323 1377 1246 1210 1162 1129 1094 1073 1056 1050 1051 1064 1092 1131 1178 1229 1280 1340 1388 1262 1217 1175 1141 1105 1084 1065 1060 1061 1080 1106 1143 1189 1243 1294 1355 1401 1273 1230 1188 1151 1123 1094 1077 1072 1079 1091 1118 1160 1199 1253 1304 1365 1416 1290 1244 1211 1168 1136 1115 1094 1091 1092 1104 1137 1170 1226 1277 1322 1385 1439] + + + + + 1920x1080_F11_100 + + + 1920x1080 + + + F11 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [98 105 115 117 121 130 134 140] + + + [62 65 67 69 67 70 70 70] + + + [ 100] + + + [1401 1359 1298 1252 1208 1188 1170 1162 1168 1189 1228 1272 1326 1391 1462 1518 1594 1382 1323 1276 1228 1184 1160 1138 1133 1142 1166 1198 1246 1296 1367 1427 1505 1573 1343 1295 1247 1199 1161 1131 1113 1111 1118 1136 1174 1216 1275 1330 1406 1472 1534 1332 1273 1225 1175 1135 1114 1092 1087 1093 1114 1146 1197 1247 1309 1379 1454 1527 1308 1255 1203 1159 1118 1088 1072 1065 1073 1094 1125 1172 1228 1292 1364 1430 1501 1287 1238 1186 1146 1097 1078 1061 1051 1063 1076 1111 1156 1215 1275 1341 1415 1485 1271 1231 1174 1124 1089 1063 1045 1039 1043 1065 1100 1146 1200 1261 1327 1404 1472 1267 1214 1161 1115 1080 1055 1036 1037 1037 1058 1090 1136 1186 1249 1322 1390 1469 1259 1203 1157 1106 1076 1046 1033 1025 1037 1052 1085 1132 1182 1242 1318 1388 1451 1252 1202 1150 1111 1072 1047 1028 1024 1026 1050 1084 1131 1179 1240 1312 1380 1454 1261 1202 1155 1110 1074 1042 1030 1024 1035 1053 1084 1126 1178 1245 1311 1385 1461 1252 1200 1157 1108 1076 1048 1032 1027 1038 1052 1093 1129 1186 1245 1313 1382 1455 1268 1210 1161 1118 1081 1056 1041 1037 1044 1063 1094 1142 1184 1253 1325 1384 1478 1265 1218 1175 1125 1089 1064 1048 1046 1053 1073 1111 1148 1202 1264 1327 1408 1472 1283 1235 1178 1137 1102 1078 1061 1058 1062 1088 1116 1165 1213 1279 1344 1414 1494 1298 1246 1198 1147 1120 1087 1075 1067 1084 1098 1131 1176 1229 1292 1366 1437 1508 1302 1272 1211 1169 1135 1109 1090 1087 1100 1116 1155 1198 1256 1314 1378 1458 1520] + + + [1390 1338 1288 1247 1206 1182 1163 1145 1153 1166 1195 1240 1287 1339 1397 1464 1511 1366 1304 1267 1219 1188 1157 1138 1125 1127 1143 1174 1208 1262 1310 1379 1437 1489 1326 1289 1235 1200 1157 1135 1108 1102 1099 1118 1150 1185 1231 1284 1350 1411 1474 1317 1266 1221 1174 1140 1114 1090 1081 1084 1094 1122 1161 1212 1266 1325 1391 1436 1295 1251 1201 1156 1122 1092 1074 1061 1062 1077 1107 1143 1187 1246 1308 1371 1435 1275 1234 1183 1145 1106 1077 1057 1044 1047 1062 1087 1132 1176 1226 1295 1358 1419 1266 1218 1174 1129 1096 1070 1047 1036 1037 1049 1081 1119 1161 1216 1277 1346 1403 1246 1215 1163 1123 1087 1067 1039 1029 1027 1041 1070 1107 1149 1207 1269 1335 1387 1244 1203 1160 1118 1088 1055 1036 1025 1024 1038 1066 1105 1147 1200 1265 1331 1390 1249 1200 1156 1119 1085 1057 1033 1025 1026 1036 1068 1100 1147 1200 1261 1324 1384 1247 1199 1160 1121 1085 1055 1038 1029 1026 1040 1066 1108 1148 1198 1262 1320 1402 1251 1209 1162 1124 1087 1065 1040 1030 1032 1047 1073 1114 1153 1205 1264 1328 1394 1256 1208 1169 1130 1095 1073 1053 1038 1041 1051 1084 1116 1161 1218 1273 1341 1390 1266 1218 1177 1136 1106 1079 1064 1053 1052 1065 1095 1132 1174 1226 1282 1348 1410 1277 1230 1186 1153 1119 1093 1076 1063 1064 1083 1109 1144 1194 1242 1299 1363 1426 1287 1246 1201 1165 1135 1110 1087 1079 1082 1093 1123 1162 1204 1257 1319 1383 1443 1309 1257 1217 1180 1144 1123 1105 1096 1094 1117 1139 1179 1226 1273 1334 1396 1461] + + + [1386 1328 1287 1239 1201 1179 1158 1147 1160 1174 1202 1251 1298 1365 1423 1483 1538 1351 1307 1260 1215 1182 1151 1132 1123 1130 1145 1180 1219 1266 1329 1393 1463 1525 1336 1287 1234 1194 1154 1132 1111 1099 1105 1124 1153 1194 1248 1303 1368 1434 1497 1313 1261 1215 1173 1139 1109 1090 1083 1081 1100 1131 1172 1227 1279 1348 1411 1479 1289 1245 1195 1154 1117 1091 1069 1065 1064 1079 1115 1154 1206 1264 1327 1397 1461 1274 1228 1183 1138 1102 1078 1058 1046 1049 1066 1092 1144 1189 1248 1312 1381 1450 1262 1214 1173 1127 1092 1068 1047 1038 1039 1054 1088 1125 1175 1235 1296 1367 1440 1257 1209 1160 1119 1089 1058 1043 1032 1034 1046 1078 1120 1168 1220 1295 1362 1421 1246 1203 1159 1114 1081 1055 1039 1024 1032 1044 1074 1114 1162 1221 1285 1355 1425 1241 1200 1151 1123 1081 1056 1037 1026 1030 1044 1073 1116 1159 1217 1283 1353 1413 1249 1202 1157 1114 1086 1058 1036 1031 1031 1047 1078 1118 1168 1222 1284 1354 1421 1245 1212 1162 1125 1086 1064 1043 1036 1038 1053 1083 1126 1170 1231 1291 1358 1425 1262 1209 1172 1130 1095 1070 1055 1043 1047 1061 1092 1134 1182 1234 1300 1365 1433 1262 1221 1176 1139 1108 1084 1061 1058 1057 1077 1105 1148 1192 1252 1317 1379 1447 1277 1234 1190 1149 1121 1098 1077 1065 1071 1086 1119 1160 1209 1266 1326 1397 1464 1290 1247 1207 1162 1135 1109 1090 1081 1093 1106 1135 1176 1225 1278 1348 1419 1483 1321 1262 1217 1180 1149 1125 1107 1102 1101 1119 1154 1193 1246 1303 1362 1441 1500] + + + [1326 1291 1256 1209 1172 1159 1141 1139 1140 1156 1191 1227 1271 1315 1370 1429 1471 1310 1273 1224 1186 1158 1134 1121 1115 1125 1142 1164 1204 1252 1297 1364 1402 1462 1298 1249 1209 1164 1140 1105 1100 1093 1098 1113 1145 1182 1225 1275 1326 1395 1423 1275 1235 1184 1151 1115 1097 1078 1074 1082 1095 1125 1166 1210 1252 1323 1367 1435 1253 1205 1176 1126 1104 1074 1064 1059 1069 1083 1113 1142 1188 1245 1298 1356 1414 1245 1196 1153 1118 1084 1071 1050 1051 1052 1071 1093 1138 1183 1230 1283 1347 1387 1240 1183 1148 1108 1079 1056 1041 1038 1039 1057 1087 1117 1168 1214 1276 1335 1390 1215 1183 1143 1099 1070 1050 1034 1032 1031 1054 1080 1120 1159 1214 1264 1327 1375 1221 1172 1134 1091 1065 1051 1031 1026 1032 1046 1073 1110 1150 1203 1263 1328 1367 1212 1174 1131 1095 1064 1044 1028 1025 1024 1046 1071 1110 1152 1201 1257 1317 1375 1214 1170 1132 1093 1070 1041 1028 1030 1030 1047 1076 1104 1159 1207 1264 1318 1371 1220 1171 1131 1097 1065 1050 1026 1027 1030 1051 1069 1114 1154 1202 1260 1317 1375 1223 1181 1137 1103 1075 1051 1038 1035 1042 1050 1080 1118 1165 1214 1267 1328 1373 1230 1193 1145 1115 1085 1055 1043 1043 1045 1063 1085 1130 1168 1221 1279 1336 1385 1250 1206 1166 1121 1096 1072 1053 1053 1054 1072 1098 1138 1185 1237 1287 1345 1408 1263 1220 1171 1137 1107 1081 1068 1063 1068 1085 1115 1152 1194 1242 1306 1365 1411 1261 1244 1177 1148 1117 1102 1082 1079 1085 1098 1128 1159 1211 1263 1316 1373 1432] + + + + + 1920x1080_F2_100 + + + 1920x1080 + + + F2 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [100 104 115 118 122 129 134 138] + + + [63 63 67 67 69 70 71 70] + + + [ 100] + + + [1412 1353 1311 1245 1219 1186 1174 1155 1175 1187 1237 1271 1327 1388 1474 1529 1593 1377 1322 1269 1234 1185 1159 1145 1138 1141 1169 1200 1247 1293 1364 1430 1502 1576 1358 1306 1251 1199 1166 1133 1113 1113 1119 1138 1174 1219 1273 1329 1404 1473 1545 1337 1278 1225 1180 1136 1117 1095 1086 1091 1120 1156 1196 1254 1310 1387 1453 1516 1317 1260 1202 1154 1120 1085 1075 1071 1075 1103 1126 1179 1222 1296 1362 1436 1507 1293 1240 1187 1141 1104 1076 1062 1051 1065 1078 1113 1158 1218 1267 1349 1421 1496 1280 1223 1178 1125 1086 1063 1045 1040 1046 1068 1102 1142 1197 1262 1323 1400 1471 1264 1216 1163 1111 1083 1050 1038 1032 1037 1057 1091 1134 1184 1248 1320 1394 1469 1261 1204 1154 1115 1069 1050 1033 1028 1034 1052 1081 1126 1181 1236 1316 1390 1452 1251 1204 1149 1105 1073 1042 1029 1025 1035 1050 1084 1124 1176 1237 1314 1380 1459 1253 1199 1153 1110 1069 1049 1032 1024 1033 1048 1083 1122 1177 1239 1306 1381 1455 1264 1206 1155 1108 1077 1044 1033 1025 1034 1052 1084 1130 1178 1242 1316 1382 1463 1262 1207 1159 1115 1080 1052 1038 1037 1038 1061 1089 1134 1186 1252 1317 1391 1468 1275 1214 1171 1126 1087 1064 1047 1046 1047 1069 1098 1144 1201 1260 1335 1396 1473 1289 1231 1191 1133 1102 1071 1060 1054 1059 1086 1117 1155 1217 1274 1346 1418 1492 1301 1242 1194 1155 1118 1085 1070 1066 1076 1095 1129 1174 1224 1290 1358 1430 1502 1313 1264 1215 1163 1131 1110 1087 1081 1096 1111 1147 1186 1239 1313 1373 1455 1513] + + + [1392 1349 1293 1247 1216 1189 1162 1154 1159 1176 1205 1247 1287 1347 1407 1459 1527 1361 1318 1273 1232 1189 1157 1139 1124 1128 1143 1179 1215 1267 1325 1383 1446 1494 1335 1297 1246 1209 1164 1143 1115 1106 1105 1125 1152 1191 1241 1298 1358 1419 1480 1327 1274 1228 1180 1148 1114 1097 1081 1084 1102 1127 1166 1218 1271 1337 1401 1454 1299 1261 1210 1163 1128 1098 1072 1066 1066 1080 1112 1150 1197 1256 1317 1379 1445 1295 1235 1194 1149 1113 1079 1064 1046 1055 1061 1094 1135 1184 1237 1301 1366 1428 1273 1233 1182 1133 1099 1074 1047 1039 1038 1054 1081 1121 1167 1230 1287 1350 1409 1259 1218 1168 1130 1092 1062 1041 1030 1029 1043 1072 1111 1159 1213 1282 1342 1399 1256 1213 1168 1125 1088 1060 1036 1026 1031 1036 1071 1109 1155 1212 1272 1332 1397 1251 1207 1163 1118 1088 1056 1040 1024 1027 1040 1067 1103 1150 1208 1270 1331 1402 1255 1206 1166 1123 1086 1059 1033 1028 1028 1040 1069 1105 1154 1209 1269 1334 1401 1260 1214 1166 1126 1090 1061 1043 1033 1031 1045 1073 1114 1158 1215 1275 1335 1395 1261 1215 1173 1136 1094 1073 1051 1037 1039 1057 1084 1117 1168 1221 1282 1346 1406 1275 1222 1181 1142 1107 1078 1058 1053 1050 1065 1093 1133 1180 1233 1297 1356 1416 1283 1241 1198 1153 1123 1095 1075 1063 1062 1081 1110 1149 1197 1249 1305 1372 1428 1288 1251 1204 1168 1135 1108 1087 1078 1081 1096 1122 1163 1211 1269 1322 1389 1445 1320 1260 1225 1182 1150 1120 1107 1098 1100 1118 1144 1187 1221 1281 1342 1406 1472] + + + [1386 1333 1287 1250 1206 1181 1161 1154 1159 1176 1213 1252 1306 1360 1421 1483 1542 1365 1313 1267 1218 1182 1156 1133 1121 1132 1149 1183 1228 1269 1333 1399 1458 1523 1331 1294 1241 1199 1161 1132 1110 1106 1105 1127 1156 1202 1250 1302 1372 1442 1500 1324 1263 1222 1180 1140 1115 1091 1082 1085 1099 1133 1178 1227 1288 1353 1411 1479 1295 1252 1203 1154 1125 1089 1071 1067 1066 1085 1112 1159 1208 1268 1334 1400 1466 1287 1230 1190 1138 1103 1078 1059 1046 1054 1066 1102 1139 1196 1250 1315 1385 1448 1270 1225 1178 1128 1097 1067 1047 1037 1041 1055 1088 1130 1174 1242 1307 1373 1429 1253 1219 1164 1125 1086 1059 1040 1033 1027 1048 1079 1120 1173 1229 1298 1365 1426 1251 1208 1162 1117 1085 1052 1037 1024 1033 1048 1074 1115 1164 1223 1290 1362 1419 1254 1201 1158 1117 1081 1057 1036 1024 1030 1044 1074 1114 1160 1221 1290 1350 1426 1247 1205 1159 1116 1082 1059 1038 1026 1029 1049 1076 1115 1166 1227 1287 1362 1427 1260 1209 1164 1124 1082 1057 1041 1034 1035 1050 1083 1123 1172 1228 1296 1357 1425 1258 1217 1170 1129 1095 1072 1050 1041 1047 1060 1092 1131 1182 1242 1303 1373 1431 1270 1222 1181 1138 1104 1080 1060 1055 1054 1070 1108 1140 1192 1251 1318 1382 1452 1292 1238 1196 1151 1125 1091 1076 1067 1067 1089 1116 1163 1206 1274 1330 1401 1464 1297 1249 1209 1165 1131 1111 1089 1082 1088 1105 1130 1176 1227 1284 1346 1418 1483 1317 1266 1216 1183 1151 1124 1108 1097 1103 1123 1158 1195 1246 1306 1369 1436 1496] + + + [1337 1296 1266 1208 1185 1160 1152 1144 1145 1168 1196 1226 1281 1324 1382 1412 1491 1318 1279 1227 1197 1159 1141 1121 1123 1126 1147 1175 1210 1257 1303 1357 1425 1443 1310 1253 1208 1174 1140 1112 1109 1095 1110 1118 1152 1193 1232 1290 1348 1392 1438 1286 1236 1194 1151 1126 1099 1084 1081 1082 1104 1134 1170 1223 1268 1323 1377 1423 1272 1220 1176 1137 1102 1083 1068 1065 1072 1089 1113 1152 1195 1254 1306 1360 1425 1243 1205 1164 1120 1093 1068 1053 1050 1062 1077 1101 1135 1187 1237 1295 1355 1396 1229 1197 1150 1112 1081 1063 1047 1041 1046 1066 1087 1125 1174 1220 1282 1340 1398 1238 1180 1139 1104 1069 1052 1036 1037 1037 1052 1088 1121 1161 1217 1275 1337 1372 1214 1179 1137 1099 1067 1050 1036 1026 1037 1054 1075 1114 1158 1211 1274 1330 1384 1228 1172 1133 1099 1069 1044 1031 1025 1030 1044 1080 1108 1159 1205 1271 1318 1388 1215 1178 1133 1096 1066 1041 1033 1024 1037 1046 1078 1112 1157 1209 1260 1324 1381 1221 1179 1138 1103 1067 1050 1034 1031 1031 1049 1077 1117 1161 1211 1273 1319 1381 1233 1190 1140 1106 1072 1052 1040 1036 1039 1057 1082 1120 1163 1216 1269 1338 1382 1238 1201 1154 1114 1085 1060 1049 1038 1051 1066 1090 1132 1174 1228 1292 1332 1387 1258 1210 1170 1123 1099 1075 1059 1046 1060 1075 1112 1136 1192 1244 1287 1349 1407 1272 1219 1180 1132 1112 1078 1073 1066 1062 1090 1114 1153 1198 1253 1306 1368 1417 1273 1242 1192 1155 1128 1099 1084 1075 1089 1101 1125 1162 1222 1269 1320 1384 1442] + + + + + + + A_100 + + + [ 100] + + + [1.99853 -0.905653 -0.0821708 -0.460996 1.77912 -0.258076 -0.151399 -1.53815 2.713] + + + [-29.8061 -52.306 -95.824] + + + [1.11716 1 1 2.3808] + + + + + D50_100 + + + [ 100] + + + [2.097 -1.12811 0.0410741 -0.327961 1.77429 -0.380266 -0.0366512 -0.804392 1.8682] + + + [-40.7723 -43.9103 -61.7554] + + + [1.64416 1 1 1.6405] + + + + + D65_100 + + + [ 100] + + + [2.14135 -1.15688 0.0270315 -0.332497 1.83306 -0.43858 -0.0348043 -0.657467 1.7185] + + + [-47.0355 -42.0548 -56.246] + + + [1.92224 1 1 1.428] + + + + + F11_100 + + + [ 100] + + + [1.91878 -0.849702 -0.0555984 -0.407686 1.7518 -0.292535 -0.10781 -0.692012 1.8706] + + + [-55.1752 -65.3873 -90.5846] + + + [1.49049 1 1 1.9841] + + + + + F2_100 + + + [ 100] + + + [2.56944 -1.54023 0.0045255 -0.421136 1.74591 -0.223588 -0.101719 -0.718139 1.8415] + + + [-55.5346 -60.5148 -88.6402] + + + [1.55891 1 1 2.0968] + + + + + + [ -1] + + + + + [ 80] + + + [ 20] + + + [ 0.7] + + + [ 0.7] + + + [ 0.7] + + + [ 0.9] + + + + + 1920x1080_FPS_15 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 1920x1080_FPS_10 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 1920x1080_FPS_05 + + + + + fast + + + [ 1] + + + [ 1] + + + + + normal + + + [ 2] + + + [ 0.9] + + + + + slow + + + [ 4] + + + [ 0.9] + + + + + + + [ 8] + + + + + + 1920x1080 + + + 1920x1080 + + + [256 256 256 256] + + + + + + + linear + + + [256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4096] + + + [0 256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4095] + + + + + + [ -1] + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + + + 1920x1080 + + + 1920x1080 + + + [ 5] + + + [ 22] + + + [ 5] + + + [ 22] + + + [ 0] + + + [ 0] + + + [-0.125 -0.4375 0.6875] + + + [1.0625 -2.875 1.6875] + + + + + + + 1920x1080 + + + 1920x1080 + + + [ 1] + + + [1023 841 652 551 486 405 354 319 292 254 228 209 181 162 148 137 129] + + + [ 4] + + + [ 4] + + + [ 0.15] + + + [ 0] + + + [1 1 1 1] + + + + + + + 1920x1080 + + + 1920x1080 + + + + + ISP_DPCC_MODE + + + 0x0005 + + + + + ISP_DPCC_OUT_MODE + + + 0x0003 + + + + + ISP_DPCC_SET_USE + + + 0x000F + + + + + ISP_DPCC_METHODS_SET1 + + + 0x1D1D + + + + + ISP_DPCC_METHODS_SET2 + + + 0x0707 + + + + + ISP_DPCC_METHODS_SET3 + + + 0x1F1F + + + + + ISP_DPCC_LINE_THRESH_1 + + + 0x0808 + + + + + ISP_DPCC_LINE_MAD_FAC_1 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_1 + + + 0x0404 + + + + + ISP_DPCC_RND_THRESH_1 + + + 0x0804 + + + + + ISP_DPCC_RG_FAC_1 + + + 0x0802 + + + + + ISP_DPCC_LINE_THRESH_2 + + + 0x100C + + + + + ISP_DPCC_LINE_MAD_FAC_2 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_2 + + + 0x0404 + + + + + ISP_DPCC_RND_THRESH_2 + + + 0x0808 + + + + + ISP_DPCC_RG_FAC_2 + + + 0x0808 + + + + + ISP_DPCC_LINE_THRESH_3 + + + 0x0000 + + + + + ISP_DPCC_LINE_MAD_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_RND_THRESH_3 + + + 0x0804 + + + + + ISP_DPCC_RG_FAC_3 + + + 0x0400 + + + + + ISP_DPCC_RO_LIMITS + + + 0x0FFF + + + + + ISP_DPCC_RND_OFFS + + + 0x0FFF + + + + + + + + + + on + + + +
diff --git a/drivers/GC5035/GC5035_2592x1944.xml b/drivers/GC5035/GC5035_2592x1944.xml new file mode 100644 index 0000000..0f49fd6 --- /dev/null +++ b/drivers/GC5035/GC5035_2592x1944.xml @@ -0,0 +1,1376 @@ + + +
+ + 29-Jun-2021 + + + xrh + + + OV5648_VGA + + + LensA_03_ant_5648 + + + v2.0.19 + + + + + 2592x1944 + + + 0x00000001 + + + [ 2592] + + + [ 1944] + + + + + FPS_15 + + + [ 14.9916] + + + + + FPS_10 + + + [ 9.9944] + + + + + FPS_05 + + + [ 4.9972] + + + + + +
+ + + + + + 2592x1944 + + + 2592x1944 + + + [0.316211 0.450278 0.23351] + + + [0.810766 -0.489012 -0.321754 0.0965665 0.653861 -0.75043] + + + [-0.677389 -0.735625 -2.2245] + + + [0.9 1.06472 1.12932 1.19392 1.25851 1.32311 1.38771 1.45231 1.5169 1.5815 1.6461 1.7107 1.7753 1.83989 1.90449 1.9691] + + + [0.0477825 0.0318575 0.0177747 0.0053393 -0.00526232 -0.0138163 -0.0200636 -0.0237368 -0.0247103 -0.0226834 -0.0172902 -0.00823107 0.00452079 0.0218954 0.0434027 0.076164] + + + [0.9 1.06472 1.12932 1.19392 1.25851 1.32311 1.38771 1.45231 1.5169 1.5815 1.6461 1.7107 1.7753 1.83989 1.90449 1.9691] + + + [-0.0377825 -0.0218575 -0.00777468 0.0046607 0.0152623 0.0238163 0.0300636 0.0337368 0.0347103 0.0326834 0.0272902 0.0182311 0.00547921 -0.0118954 -0.0334027 -0.066164] + + + [0.8 0.880606 0.961212 1.04182 1.12242 1.20303 1.28364 1.36424 1.44485 1.52545 1.60606 1.68667 1.76727 1.84788 1.92848 2.2] + + + [0.200744 0.175747 0.153106 0.132329 0.114272 0.0986159 0.0860366 0.0769741 0.0715332 0.0703707 0.0739714 0.082977 0.0977554 0.119343 0.147614 0.19041] + + + [0.8 0.880606 0.961212 1.04182 1.12242 1.20303 1.28364 1.36424 1.44485 1.52545 1.60606 1.68667 1.76727 1.84788 1.92848 2.2] + + + [-0.000744293 0.0242529 0.0468937 0.0676709 0.0857277 0.101384 0.113963 0.123026 0.128467 0.129629 0.126029 0.117023 0.102245 0.0806574 0.0523865 0.0095864] + + + [ 0.9] + + + [ 1.9691] + + + [ 2.2] + + + [ 1.5815] + + + D50 + + + [ 3.1754] + + + [0.75 1.28836 1.77672 2.164 2.6 3.0618] + + + [114 114 105 95 95 90] + + + [83 83 110 120 122 128] + + + [28 27 18 16 9 9] + + + [123 123 123 123 123 120] + + + [123 123 123 123 123 126] + + + [5 5 5 5 5 5] + + + [ 1] + + + [ 0.8] + + + [ 0.05] + + + + [ 0.05] + + + [ 0.05] + + + [ 0.4] + + + [ 0.5] + + + [ 0.9] + + + [ 0.5] + + + [ 50] + + + [ 1] + + + [ 0.5] + + + + + + + + A + + + Outdoor + + + + [581.701 -599.641 -599.641 4769.5325] + + + [ 247.3246] + + + [1 1] + + + [-0.121897 -0.14612] + + + + + + 2592x1944 + + + 2592x1944_A_90 2592x1944_A_80 + + + + + [1.2213 1 1 1.9842] + + + [2.06242 -0.371307 -0.663126 -0.544726 2.0142 -0.418246 -0.231985 -1.5015 2.7321] + + + [18.6851 19.911 5.6011] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + A_100 + + + + + + D50 + + + Outdoor + + + + [660.396 -566.167 -566.167 1299.308] + + + [ 116.6849] + + + [1 1] + + + [-0.0332151 -0.050803] + + + + + + 2592x1944 + + + 2592x1944_D50_90 + + + + + [1.7235 1 1 1.4796] + + + [2.15715 -0.811382 -0.352482 -0.40827 2.03502 -0.610777 -0.107697 -0.997128 2.105] + + + [27.4831 35.8149 24.214] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D50_100 + + + + + + D65 + + + Outdoor + + + + [769.711 -526.328 -526.328 898.2725] + + + [ 102.4529] + + + [1 1] + + + [0.0119213 -0.020824] + + + + + + 2592x1944 + + + 2592x1944_D65_90 + + + + + [1.93689 1 1 1.2873] + + + [2.41044 -1.18465 -0.231436 -0.331637 1.88932 -0.539832 -0.0998097 -0.787651 1.8939] + + + [23.0711 34.8913 27.0426] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D65_100 + + + + + + F2 (CWF) + + + Indoor + + + + [969.419 -426.006 -426.006 719.3782] + + + [ 114.3146] + + + [1 1] + + + [-0.0519455 -0.090868] + + + + + + 2592x1944 + + + 2592x1944_F2_90 + + + + + [1.4659 1 1 1.4979] + + + [2.04873 -0.864931 -0.17386 -0.516298 2.10785 -0.552634 -0.101268 -0.93087 2.0287] + + + [17.1462 22.1597 14.0667] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F2_100 + + + + + + F11 (TL84) + + + Indoor + + + + [654.898 -374.136 -374.136 916.2745] + + + [ 107.9546] + + + [1 1] + + + [-0.0628424 -0.079301] + + + + + + 2592x1944 + + + 2592x1944_F11_90 + + + + + [1.53834 1 1 1.5979] + + + [1.93371 -0.741394 -0.174673 -0.437678 2.0616 -0.578537 -0.0965241 -1.07416 2.1677] + + + [17.0109 22.4961 12.1673] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F11_100 + + + + + + + + + 2592x1944_A_90 + + + 2592x1944 + + + A + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [22 45 73 94 132 169 207 218] + + + [42 53 62 69 75 69 85 85] + + + [ 90] + + + [5847 5067 3857 2767 2047 1755 1484 1334 1335 1388 1588 1863 2179 2862 3757 5117 5647 5091 4430 3450 2564 1966 1690 1425 1279 1278 1342 1525 1797 2099 2551 3660 4151 5089 4321 3824 3070 2359 1897 1612 1362 1214 1221 1277 1457 1718 2002 2387 2909 3876 4153 3725 3359 2775 2203 1837 1540 1297 1152 1176 1216 1393 1635 1918 2169 2761 3249 3653 3316 3031 2525 2096 1774 1471 1233 1137 1114 1174 1327 1569 1848 2088 2469 2964 3211 3044 2790 2362 2024 1720 1395 1204 1106 1075 1131 1282 1490 1741 1958 2289 2678 2919 2884 2659 2266 1986 1694 1356 1211 1082 1050 1105 1252 1438 1682 1845 1967 2695 2507 2747 2547 2202 1950 1693 1409 1195 1066 1029 1084 1218 1371 1666 1795 2009 2207 2447 2714 2506 2186 1933 1682 1416 1184 1064 1024 1082 1219 1385 1668 1833 2048 2267 2446 2753 2548 2197 1956 1689 1424 1195 1072 1032 1088 1225 1401 1662 1833 2051 2361 2581 2872 2657 2274 1983 1730 1449 1218 1098 1062 1107 1248 1428 1711 1914 2142 2511 2720 3042 2816 2372 2039 1781 1420 1224 1142 1093 1137 1279 1473 1745 1950 2252 2669 2905 3358 3056 2557 2106 1835 1458 1263 1168 1130 1180 1304 1533 1811 2055 2453 2948 3197 3782 3410 2811 2226 1912 1525 1318 1227 1156 1221 1366 1599 1889 2156 2738 3263 3654 4455 3921 3152 2417 1998 1602 1371 1291 1180 1277 1430 1682 1955 2344 2981 3805 4217 5244 4595 3544 2653 2093 1681 1422 1340 1273 1323 1501 1765 2044 2566 3469 4346 5020 6096 5337 4002 2910 2210 1753 1482 1382 1337 1385 1574 1846 2159 2830 3823 5103 5814] + + + [4937 4249 3253 2340 1727 1524 1324 1227 1253 1288 1435 1634 1842 2405 3142 4233 4756 4247 3735 2904 2175 1673 1473 1283 1190 1212 1259 1389 1581 1798 2144 3070 3475 4217 3629 3222 2602 1999 1626 1416 1236 1143 1171 1215 1347 1525 1728 2017 2460 3257 3448 3133 2834 2343 1871 1587 1359 1191 1098 1142 1171 1298 1469 1670 1849 2335 2748 3076 2794 2564 2139 1796 1542 1314 1141 1099 1091 1139 1254 1420 1624 1793 2090 2504 2692 2573 2363 2005 1742 1502 1251 1127 1077 1065 1109 1222 1363 1536 1689 1939 2260 2481 2437 2245 1923 1713 1490 1222 1142 1061 1042 1090 1201 1324 1491 1591 1661 2283 2089 2321 2142 1870 1680 1492 1279 1133 1049 1026 1075 1171 1267 1483 1555 1709 1843 2043 2286 2114 1858 1671 1484 1287 1127 1049 1024 1070 1176 1281 1488 1587 1745 1904 2040 2316 2144 1868 1686 1488 1290 1135 1056 1027 1079 1180 1298 1482 1585 1745 1977 2169 2424 2239 1918 1707 1516 1309 1150 1078 1056 1091 1200 1316 1518 1658 1819 2103 2281 2560 2376 2007 1743 1559 1272 1148 1115 1080 1116 1219 1349 1542 1680 1902 2248 2433 2805 2564 2156 1791 1597 1297 1171 1133 1107 1151 1235 1390 1591 1760 2075 2482 2685 3207 2860 2384 1888 1654 1347 1212 1177 1122 1181 1281 1437 1648 1834 2317 2753 3047 3731 3296 2654 2049 1719 1408 1246 1225 1136 1219 1326 1499 1690 1988 2529 3186 3524 4409 3852 2988 2254 1789 1465 1283 1256 1211 1256 1379 1562 1758 2166 2928 3627 4197 5100 4458 3375 2452 1886 1514 1323 1280 1262 1295 1431 1619 1835 2388 3218 4206 4856] + + + [4942 4247 3263 2342 1735 1522 1327 1224 1255 1293 1440 1642 1858 2429 3182 4305 4918 4280 3744 2922 2184 1674 1476 1284 1190 1210 1261 1393 1589 1806 2170 3107 3516 4240 3632 3233 2607 2007 1627 1417 1239 1145 1171 1218 1351 1539 1737 2034 2488 3293 3509 3152 2839 2351 1874 1590 1362 1193 1099 1142 1173 1304 1477 1682 1862 2358 2770 3082 2806 2563 2146 1799 1545 1317 1142 1099 1093 1143 1258 1429 1636 1803 2108 2528 2726 2569 2366 2004 1745 1502 1253 1128 1081 1067 1113 1227 1372 1550 1702 1961 2274 2493 2440 2250 1920 1719 1491 1225 1144 1062 1044 1091 1207 1332 1500 1602 1673 2324 2104 2331 2147 1876 1684 1494 1278 1136 1052 1027 1079 1177 1275 1495 1563 1723 1845 2062 2295 2111 1858 1675 1485 1291 1130 1051 1024 1075 1182 1290 1494 1600 1752 1924 2056 2329 2144 1873 1685 1491 1291 1136 1058 1030 1082 1185 1304 1493 1594 1757 1984 2176 2410 2233 1921 1706 1520 1312 1153 1079 1055 1095 1203 1323 1528 1669 1830 2123 2300 2564 2375 2003 1745 1558 1276 1149 1116 1081 1116 1224 1356 1552 1688 1909 2264 2441 2805 2560 2155 1791 1600 1294 1173 1132 1109 1153 1239 1395 1596 1768 2085 2493 2712 3179 2852 2376 1885 1652 1349 1210 1176 1124 1179 1285 1443 1654 1846 2325 2758 3069 3704 3283 2640 2045 1715 1402 1248 1221 1133 1218 1327 1502 1696 1990 2538 3194 3524 4340 3814 2976 2242 1788 1463 1278 1253 1208 1253 1377 1565 1763 2177 2929 3626 4179 5092 4397 3343 2448 1877 1508 1319 1276 1255 1294 1432 1620 1835 2391 3208 4233 4775] + + + [4204 3707 2933 2164 1634 1452 1279 1205 1235 1263 1389 1562 1743 2219 2858 3702 4137 3752 3298 2654 2024 1591 1406 1244 1170 1198 1242 1359 1518 1706 2008 2760 3088 3611 3198 2903 2405 1890 1550 1362 1213 1135 1167 1212 1324 1483 1657 1896 2280 2917 3079 2827 2604 2169 1782 1518 1321 1176 1099 1140 1173 1291 1437 1609 1762 2164 2510 2747 2552 2351 2006 1714 1479 1281 1134 1101 1095 1144 1250 1398 1566 1713 1946 2286 2454 2353 2193 1880 1670 1447 1226 1123 1081 1068 1113 1222 1346 1497 1620 1823 2072 2243 2235 2087 1811 1643 1440 1199 1143 1065 1047 1096 1201 1311 1449 1527 1565 2110 1916 2128 1991 1772 1615 1445 1261 1134 1052 1028 1080 1175 1253 1449 1494 1619 1700 1871 2110 1964 1756 1603 1434 1270 1128 1051 1024 1075 1178 1273 1453 1526 1648 1759 1878 2139 1982 1764 1613 1441 1267 1136 1056 1029 1079 1182 1281 1445 1517 1650 1822 1965 2216 2065 1805 1634 1459 1288 1148 1079 1053 1093 1192 1298 1476 1588 1713 1943 2092 2345 2164 1873 1663 1499 1243 1142 1118 1080 1113 1215 1326 1491 1608 1777 2063 2206 2524 2332 2000 1700 1529 1262 1161 1133 1107 1151 1228 1359 1532 1675 1923 2260 2380 2860 2577 2178 1781 1580 1299 1195 1173 1118 1175 1269 1401 1579 1734 2119 2477 2722 3234 2918 2417 1903 1625 1349 1221 1208 1121 1208 1296 1447 1608 1850 2304 2809 3046 3758 3308 2682 2064 1676 1390 1236 1232 1182 1228 1335 1491 1654 1988 2601 3138 3533 4210 3787 2981 2226 1741 1428 1262 1241 1223 1260 1366 1531 1709 2168 2821 3562 4021] + + + + + 2592x1944_A_80 + + + 2592x1944 + + + A + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [21 43 70 93 130 170 210 223] + + + [41 52 62 68 76 70 85 86] + + + [ 80] + + + [4095 4095 3677 2664 1947 1686 1438 1300 1307 1356 1543 1795 2075 2737 3582 4095 4095 4095 4095 3288 2459 1879 1630 1389 1254 1255 1317 1490 1734 2002 2443 3487 3944 4095 4092 3631 2925 2264 1819 1561 1334 1192 1204 1260 1429 1670 1915 2289 2771 3678 3925 3508 3178 2642 2109 1767 1498 1275 1135 1165 1204 1368 1595 1841 2075 2626 3070 3436 3129 2862 2406 2004 1718 1436 1215 1124 1109 1163 1311 1535 1783 1991 2350 2800 3020 2858 2636 2247 1936 1669 1366 1187 1100 1071 1126 1267 1460 1682 1877 2175 2522 2742 2710 2510 2154 1905 1648 1331 1200 1077 1047 1101 1241 1407 1631 1749 1872 2548 2336 2577 2406 2093 1871 1644 1385 1184 1063 1028 1084 1203 1350 1611 1715 1900 2071 2290 2548 2365 2076 1856 1634 1394 1176 1060 1024 1080 1207 1364 1613 1754 1936 2132 2287 2585 2406 2087 1878 1640 1401 1185 1070 1031 1088 1210 1380 1605 1760 1938 2226 2417 2695 2509 2160 1903 1677 1424 1207 1094 1060 1103 1236 1402 1660 1826 2030 2367 2548 2855 2660 2261 1949 1726 1395 1201 1137 1088 1132 1263 1443 1688 1861 2138 2517 2726 3167 2891 2439 2014 1775 1426 1240 1160 1122 1170 1285 1500 1745 1960 2337 2787 3003 3571 3228 2679 2131 1842 1488 1288 1212 1143 1208 1343 1556 1813 2060 2604 3082 3443 4095 3735 3007 2321 1917 1559 1337 1271 1165 1258 1400 1632 1869 2248 2838 3611 3988 4095 4095 3390 2543 2007 1628 1380 1314 1250 1299 1462 1705 1950 2462 3308 4095 4095 4095 4095 3823 2790 2116 1690 1433 1348 1309 1353 1528 1774 2058 2704 3651 4095 4095] + + + [4095 3971 3054 2223 1636 1457 1281 1195 1225 1257 1392 1561 1744 2283 2953 3951 4095 3958 3494 2736 2072 1588 1414 1246 1163 1190 1232 1352 1517 1701 2039 2883 3245 3923 3380 3010 2453 1904 1549 1366 1206 1121 1153 1197 1314 1475 1641 1915 2324 3038 3206 2913 2648 2208 1778 1519 1316 1166 1081 1130 1157 1273 1424 1593 1753 2200 2564 2856 2602 2399 2024 1703 1486 1276 1123 1084 1085 1130 1233 1382 1557 1697 1973 2341 2503 2394 2209 1893 1655 1450 1220 1109 1070 1062 1102 1205 1328 1477 1608 1830 2108 2306 2266 2101 1815 1631 1443 1192 1126 1055 1040 1085 1187 1290 1435 1501 1570 2137 1930 2159 2006 1764 1603 1441 1251 1121 1047 1025 1074 1155 1243 1427 1476 1606 1718 1896 2127 1979 1753 1596 1432 1263 1115 1047 1024 1070 1162 1258 1431 1512 1639 1775 1894 2153 2008 1761 1609 1438 1264 1123 1053 1027 1078 1165 1273 1422 1512 1640 1850 2014 2254 2095 1809 1625 1462 1281 1136 1074 1054 1086 1184 1286 1463 1571 1713 1966 2118 2379 2223 1896 1655 1501 1245 1123 1110 1075 1111 1200 1319 1480 1593 1794 2099 2258 2615 2397 2041 1699 1535 1265 1146 1124 1100 1141 1214 1351 1526 1669 1961 2321 2498 2980 2673 2250 1795 1583 1309 1182 1162 1109 1165 1255 1392 1570 1741 2185 2565 2830 3486 3089 2501 1955 1635 1364 1210 1205 1119 1199 1293 1448 1601 1894 2380 2979 3275 4095 3607 2818 2144 1701 1414 1240 1230 1190 1228 1340 1498 1666 2059 2753 3389 3908 4095 4095 3176 2328 1793 1454 1275 1244 1234 1263 1384 1544 1737 2266 3018 3925 4095] + + + [4095 3963 3072 2226 1642 1455 1283 1193 1226 1259 1393 1569 1757 2305 2989 4023 4095 3985 3502 2749 2079 1589 1416 1247 1163 1188 1236 1355 1527 1709 2061 2919 3290 3943 3382 3026 2458 1913 1548 1367 1208 1122 1153 1200 1318 1483 1649 1935 2345 3077 3267 2932 2652 2214 1781 1522 1319 1170 1081 1130 1159 1277 1430 1604 1764 2225 2582 2865 2611 2398 2028 1707 1488 1279 1124 1084 1087 1133 1238 1392 1568 1709 1990 2367 2535 2387 2213 1893 1658 1454 1221 1109 1073 1062 1107 1210 1338 1490 1620 1851 2122 2320 2270 2104 1813 1634 1443 1194 1129 1057 1043 1088 1191 1299 1446 1511 1585 2173 1945 2168 2011 1769 1607 1443 1251 1124 1049 1027 1078 1160 1251 1437 1484 1617 1722 1913 2136 1977 1751 1597 1435 1265 1118 1047 1024 1075 1167 1265 1436 1525 1646 1794 1909 2166 2009 1764 1607 1439 1265 1126 1054 1030 1080 1170 1280 1432 1521 1649 1857 2022 2241 2088 1812 1624 1466 1285 1137 1074 1053 1090 1187 1293 1473 1582 1725 1983 2136 2381 2222 1889 1659 1500 1247 1125 1110 1076 1112 1205 1325 1489 1601 1800 2117 2266 2617 2393 2037 1698 1538 1264 1147 1121 1101 1141 1219 1356 1530 1676 1969 2331 2519 2957 2665 2240 1792 1580 1310 1179 1161 1109 1165 1257 1399 1578 1750 2189 2572 2851 3456 3072 2490 1946 1634 1360 1210 1200 1117 1197 1294 1450 1608 1896 2391 2986 3273 4046 3571 2803 2133 1697 1409 1235 1227 1185 1226 1337 1503 1669 2068 2755 3386 3889 4095 4095 3142 2324 1783 1446 1270 1241 1227 1261 1384 1548 1738 2265 3013 3950 4095] + + + [4095 3652 2856 2101 1567 1394 1237 1175 1211 1237 1354 1506 1672 2155 2773 3642 4093 3689 3224 2572 1965 1523 1359 1212 1146 1179 1222 1325 1472 1635 1942 2681 3004 3527 3104 2813 2329 1828 1492 1319 1186 1115 1153 1195 1301 1441 1595 1831 2193 2826 2979 2714 2510 2091 1715 1469 1283 1156 1081 1130 1161 1270 1402 1550 1693 2086 2413 2632 2454 2256 1933 1649 1437 1249 1116 1088 1090 1136 1233 1367 1515 1643 1865 2191 2348 2242 2099 1806 1603 1409 1198 1106 1074 1065 1109 1209 1319 1449 1560 1748 1973 2134 2129 1995 1733 1582 1405 1173 1127 1061 1045 1092 1192 1284 1408 1451 1496 2016 1801 2024 1899 1691 1558 1405 1237 1124 1049 1027 1079 1162 1235 1405 1431 1536 1604 1766 2005 1873 1681 1547 1396 1247 1118 1049 1024 1074 1166 1253 1410 1465 1566 1665 1771 2033 1890 1688 1555 1401 1246 1125 1053 1028 1079 1168 1262 1399 1460 1569 1729 1858 2109 1972 1726 1574 1420 1263 1134 1076 1052 1090 1183 1271 1435 1522 1633 1848 1983 2237 2067 1797 1596 1455 1222 1118 1114 1077 1110 1198 1302 1444 1541 1698 1966 2098 2422 2236 1926 1633 1483 1236 1140 1125 1101 1142 1211 1327 1482 1606 1846 2164 2268 2759 2479 2100 1717 1524 1269 1167 1161 1107 1161 1250 1363 1522 1664 2036 2373 2607 3145 2832 2336 1843 1567 1309 1188 1191 1106 1192 1269 1407 1541 1785 2220 2718 2944 3691 3238 2604 2004 1609 1349 1199 1207 1165 1204 1305 1438 1583 1922 2518 3047 3447 4095 3730 2911 2154 1678 1376 1222 1212 1199 1233 1333 1476 1637 2095 2735 3486 3962] + + + + + 2592x1944_D50_90 + + + 2592x1944 + + + D50 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [22 45 75 103 136 171 197 211] + + + [45 55 62 69 75 67 83 84] + + + [ 90] + + + [5099 4379 3289 2397 1841 1569 1357 1253 1305 1352 1516 1760 2001 2628 3469 4640 5207 4379 3854 2955 2207 1776 1500 1306 1212 1247 1305 1460 1694 1943 2333 3332 3774 4576 3833 3367 2668 2026 1720 1438 1249 1183 1190 1251 1395 1620 1868 2203 2679 3537 3774 3334 3028 2444 1913 1667 1386 1214 1162 1141 1196 1338 1545 1806 2026 2558 3006 3369 3023 2740 2282 1852 1606 1366 1181 1127 1095 1148 1285 1485 1735 1956 2269 2735 2947 2763 2564 2151 1821 1555 1331 1150 1098 1064 1111 1243 1444 1658 1844 2133 2521 2729 2625 2433 2079 1800 1525 1298 1141 1079 1037 1089 1215 1411 1631 1857 2024 2643 2479 2526 2332 2027 1786 1512 1270 1143 1059 1027 1071 1200 1385 1605 1832 2040 2215 2426 2484 2310 2014 1791 1510 1242 1152 1054 1024 1070 1195 1384 1593 1825 2018 2150 2340 2530 2330 2038 1811 1531 1243 1154 1062 1034 1079 1206 1387 1590 1826 2010 2265 2495 2625 2448 2101 1847 1597 1320 1166 1100 1050 1100 1234 1385 1592 1848 2049 2381 2567 2788 2572 2184 1893 1638 1352 1189 1141 1077 1125 1268 1389 1625 1888 2118 2507 2737 3032 2794 2357 1951 1702 1395 1228 1157 1119 1166 1307 1439 1683 1949 2283 2733 2962 3435 3085 2581 2050 1769 1451 1265 1200 1165 1216 1344 1518 1748 2031 2548 3036 3379 3990 3560 2865 2214 1838 1512 1274 1258 1203 1266 1395 1601 1815 2182 2781 3513 3819 4681 4156 3261 2434 1915 1577 1319 1312 1223 1302 1458 1670 1905 2362 3197 3976 4610 5529 4860 3706 2687 2022 1657 1392 1342 1320 1343 1525 1744 1999 2640 3511 4657 5241] + + + [4461 3834 2864 2085 1602 1380 1228 1164 1232 1271 1399 1578 1752 2287 3021 4080 4637 3912 3353 2580 1909 1555 1335 1191 1138 1195 1242 1357 1531 1717 2037 2926 3315 3980 3339 2945 2326 1762 1509 1284 1149 1127 1153 1203 1310 1478 1660 1920 2358 3114 3326 2935 2638 2142 1660 1469 1245 1125 1120 1116 1163 1269 1421 1615 1783 2248 2642 2947 2635 2394 1989 1616 1421 1237 1107 1099 1080 1127 1231 1376 1564 1730 1996 2393 2590 2417 2226 1876 1597 1382 1210 1088 1078 1054 1096 1199 1344 1499 1638 1874 2208 2379 2292 2112 1811 1582 1358 1184 1085 1064 1035 1079 1179 1321 1478 1655 1776 2331 2164 2202 2024 1765 1572 1346 1162 1094 1045 1025 1063 1168 1305 1461 1638 1799 1922 2115 2159 2000 1754 1576 1346 1135 1104 1043 1024 1063 1166 1306 1453 1628 1779 1864 2028 2204 2032 1769 1592 1365 1135 1105 1048 1029 1072 1175 1304 1451 1627 1768 1972 2162 2287 2125 1823 1623 1424 1203 1113 1082 1047 1086 1200 1299 1442 1644 1799 2071 2233 2438 2239 1901 1657 1457 1227 1126 1119 1067 1111 1223 1294 1467 1671 1858 2182 2378 2660 2434 2047 1711 1511 1261 1153 1128 1102 1146 1256 1332 1512 1718 1991 2385 2588 3014 2715 2261 1790 1567 1308 1177 1165 1143 1186 1283 1396 1563 1793 2241 2668 2958 3513 3138 2531 1939 1623 1355 1178 1207 1169 1229 1324 1467 1618 1916 2454 3082 3371 4190 3685 2864 2143 1686 1409 1209 1250 1179 1252 1372 1518 1685 2074 2827 3495 4018 4988 4322 3256 2363 1776 1468 1267 1257 1259 1278 1414 1576 1760 2308 3080 4050 4676] + + + [4496 3825 2884 2081 1606 1379 1231 1169 1231 1275 1404 1582 1762 2299 3036 4130 4661 3886 3360 2574 1916 1554 1336 1191 1137 1198 1242 1360 1535 1720 2055 2942 3338 4056 3348 2948 2321 1760 1510 1284 1151 1128 1154 1204 1315 1487 1669 1935 2368 3137 3323 2923 2627 2142 1662 1470 1247 1127 1121 1118 1166 1273 1425 1622 1793 2264 2658 2967 2632 2393 1985 1615 1424 1238 1108 1100 1081 1128 1234 1383 1570 1738 2010 2403 2596 2411 2226 1876 1595 1382 1211 1089 1080 1055 1098 1203 1348 1508 1644 1877 2220 2398 2292 2113 1812 1580 1359 1184 1087 1065 1035 1081 1183 1327 1484 1660 1785 2347 2174 2202 2024 1768 1573 1346 1164 1096 1047 1026 1066 1170 1310 1469 1643 1808 1931 2119 2153 1993 1757 1575 1348 1137 1107 1043 1024 1065 1169 1309 1461 1637 1784 1877 2028 2205 2028 1768 1593 1364 1134 1107 1049 1030 1073 1178 1310 1454 1631 1780 1974 2179 2290 2120 1822 1624 1424 1204 1113 1082 1046 1089 1202 1303 1449 1650 1801 2075 2236 2412 2233 1893 1657 1457 1227 1128 1119 1069 1111 1226 1298 1472 1676 1860 2193 2381 2657 2430 2040 1705 1511 1260 1155 1127 1102 1146 1258 1335 1519 1721 1991 2387 2598 2992 2694 2251 1786 1563 1307 1177 1162 1143 1184 1285 1396 1568 1792 2245 2668 2956 3492 3103 2507 1932 1620 1354 1178 1205 1168 1230 1323 1471 1618 1923 2447 3068 3380 4138 3650 2848 2123 1686 1407 1205 1247 1174 1250 1370 1517 1689 2068 2821 3482 4012 4927 4275 3222 2348 1766 1463 1265 1258 1255 1275 1412 1579 1759 2306 3084 4036 4669] + + + [4004 3468 2622 1933 1498 1300 1174 1140 1216 1252 1363 1513 1664 2137 2781 3680 4111 3495 3039 2374 1774 1457 1259 1146 1116 1184 1227 1331 1477 1633 1911 2705 3044 3584 3052 2702 2147 1646 1421 1224 1117 1116 1147 1202 1294 1438 1591 1821 2196 2850 3036 2701 2445 1983 1567 1389 1194 1103 1114 1116 1165 1262 1390 1559 1706 2101 2450 2725 2439 2210 1855 1523 1347 1194 1089 1097 1083 1128 1228 1356 1511 1658 1876 2215 2376 2231 2060 1760 1508 1314 1173 1077 1076 1058 1102 1199 1330 1457 1570 1766 2048 2205 2118 1959 1701 1497 1296 1150 1077 1062 1035 1084 1180 1310 1442 1587 1684 2182 1991 2029 1874 1660 1492 1284 1136 1084 1046 1028 1068 1169 1298 1429 1579 1707 1787 1964 1999 1850 1654 1492 1286 1108 1098 1039 1024 1066 1168 1298 1424 1570 1693 1748 1858 2027 1873 1658 1510 1304 1107 1099 1046 1029 1074 1174 1295 1418 1568 1684 1835 1994 2101 1961 1711 1539 1356 1172 1105 1081 1045 1089 1197 1288 1401 1581 1704 1921 2061 2224 2067 1767 1569 1392 1191 1117 1116 1067 1110 1220 1281 1422 1606 1743 2022 2173 2440 2240 1899 1612 1431 1220 1140 1125 1101 1143 1251 1310 1460 1644 1862 2194 2370 2730 2481 2084 1680 1482 1258 1156 1158 1138 1180 1276 1366 1502 1703 2070 2445 2694 3162 2832 2323 1804 1527 1290 1149 1193 1159 1219 1303 1422 1550 1798 2264 2794 3044 3705 3300 2614 1965 1584 1329 1161 1225 1155 1233 1335 1457 1602 1919 2574 3138 3601 4348 3798 2937 2160 1641 1376 1207 1226 1229 1245 1368 1507 1649 2117 2800 3613 4067] + + + + + 2592x1944_D65_90 + + + 2592x1944 + + + D65 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [21 42 71 101 136 170 200 219] + + + [42 55 60 71 78 67 83 84] + + + [ 90] + + + [5187 4589 3551 2556 1878 1597 1359 1244 1290 1347 1518 1760 2015 2667 3470 4618 5173 4535 4011 3188 2381 1813 1541 1304 1212 1241 1297 1461 1695 1949 2379 3359 3763 4490 3857 3474 2824 2196 1763 1481 1246 1188 1185 1246 1394 1627 1863 2228 2713 3521 3759 3402 3077 2569 2045 1737 1427 1210 1162 1136 1191 1341 1560 1807 2047 2582 3019 3340 3020 2782 2355 1950 1693 1383 1189 1125 1092 1144 1288 1494 1739 1932 2279 2682 2892 2792 2577 2189 1894 1644 1347 1155 1097 1061 1108 1246 1446 1682 1889 2125 2477 2656 2636 2461 2121 1859 1615 1328 1139 1083 1036 1088 1222 1423 1638 1853 2031 2645 2466 2564 2367 2060 1834 1594 1318 1124 1070 1028 1073 1203 1401 1618 1835 2035 2236 2514 2506 2337 2056 1833 1592 1310 1120 1071 1024 1075 1203 1404 1601 1825 2021 2283 2447 2572 2375 2083 1851 1606 1338 1125 1079 1036 1087 1214 1414 1592 1821 2035 2293 2475 2667 2503 2148 1897 1646 1386 1158 1107 1060 1110 1241 1445 1571 1836 2082 2390 2577 2831 2639 2247 1941 1691 1421 1189 1142 1090 1140 1266 1488 1559 1887 2162 2526 2703 3100 2872 2447 2011 1758 1485 1240 1171 1136 1183 1313 1527 1646 1950 2349 2747 2978 3530 3208 2689 2142 1829 1565 1290 1216 1188 1235 1368 1583 1754 2041 2606 3052 3396 4109 3707 3017 2331 1905 1634 1338 1265 1215 1287 1423 1640 1846 2212 2813 3528 3873 4838 4357 3441 2581 1998 1711 1403 1305 1281 1315 1488 1717 1929 2430 3256 4018 4594 5667 4982 3886 2827 2120 1785 1473 1347 1336 1388 1555 1784 2045 2697 3617 4659 5322] + + + [4737 4116 3169 2271 1644 1419 1228 1158 1226 1269 1403 1592 1783 2354 3090 4117 4636 4078 3606 2839 2103 1599 1374 1190 1142 1192 1240 1360 1542 1737 2113 3004 3367 4051 3476 3097 2516 1938 1569 1328 1147 1134 1150 1200 1318 1492 1671 1975 2425 3152 3340 3020 2733 2281 1810 1547 1286 1125 1122 1115 1161 1274 1438 1630 1825 2301 2689 2982 2694 2460 2073 1724 1512 1256 1113 1100 1078 1124 1235 1392 1577 1730 2032 2383 2572 2458 2271 1935 1680 1476 1230 1092 1079 1055 1095 1204 1354 1531 1697 1890 2195 2364 2340 2162 1864 1649 1451 1213 1081 1068 1035 1078 1185 1338 1492 1673 1806 2367 2186 2249 2073 1812 1629 1433 1210 1071 1057 1027 1067 1174 1322 1481 1652 1821 1983 2206 2215 2056 1808 1624 1432 1203 1070 1060 1024 1071 1174 1327 1466 1644 1806 2018 2165 2255 2090 1832 1645 1441 1229 1074 1067 1035 1081 1183 1337 1455 1643 1813 2023 2178 2369 2193 1889 1674 1477 1266 1102 1091 1055 1102 1206 1363 1424 1650 1850 2114 2270 2507 2325 1978 1718 1512 1298 1124 1121 1083 1127 1227 1392 1415 1692 1929 2226 2404 2766 2545 2151 1778 1573 1351 1167 1141 1123 1167 1266 1423 1485 1744 2091 2449 2642 3195 2866 2403 1895 1636 1420 1202 1180 1169 1210 1311 1467 1582 1818 2332 2730 3019 3722 3322 2694 2073 1700 1482 1242 1217 1191 1255 1355 1519 1666 1973 2535 3172 3484 4454 3929 3087 2307 1781 1549 1296 1241 1245 1272 1413 1574 1730 2176 2934 3613 4129 5253 4557 3497 2540 1878 1604 1346 1272 1279 1330 1453 1627 1812 2412 3255 4182 4768] + + + [4711 4123 3157 2255 1644 1416 1227 1156 1223 1271 1404 1594 1780 2369 3110 4131 4666 4087 3573 2831 2102 1597 1372 1191 1140 1192 1238 1363 1544 1739 2118 3013 3385 4070 3440 3077 2509 1930 1565 1326 1147 1132 1149 1201 1318 1495 1673 1982 2422 3168 3356 3011 2721 2269 1806 1545 1286 1124 1121 1114 1161 1277 1437 1634 1828 2310 2696 2994 2680 2446 2069 1721 1509 1253 1112 1098 1078 1125 1237 1395 1580 1734 2036 2395 2580 2447 2265 1930 1677 1473 1228 1090 1079 1054 1096 1205 1357 1534 1701 1894 2194 2370 2329 2148 1857 1646 1450 1212 1080 1069 1034 1078 1185 1341 1494 1674 1808 2374 2186 2236 2067 1810 1626 1429 1208 1071 1056 1025 1068 1176 1324 1482 1654 1823 1982 2213 2197 2043 1802 1622 1428 1203 1071 1059 1024 1070 1175 1327 1469 1645 1808 2023 2160 2245 2082 1822 1640 1439 1224 1072 1066 1033 1080 1184 1339 1457 1645 1814 2022 2175 2348 2175 1883 1671 1471 1265 1100 1089 1055 1101 1205 1364 1427 1651 1850 2114 2272 2485 2304 1966 1714 1505 1296 1122 1120 1079 1126 1225 1392 1414 1691 1925 2221 2396 2744 2512 2139 1771 1569 1348 1164 1139 1120 1164 1265 1425 1484 1745 2084 2439 2635 3141 2841 2377 1884 1630 1414 1199 1176 1167 1206 1310 1465 1576 1815 2321 2726 2999 3677 3268 2664 2053 1690 1475 1238 1212 1187 1253 1354 1517 1662 1965 2527 3149 3473 4388 3883 3057 2281 1772 1542 1289 1238 1240 1268 1406 1572 1725 2166 2915 3576 4082 5176 4497 3448 2513 1859 1595 1338 1267 1275 1323 1450 1624 1804 2398 3212 4152 4739] + + + [4262 3716 2925 2094 1543 1325 1175 1125 1205 1253 1364 1530 1695 2198 2879 3728 4185 3727 3276 2612 1953 1497 1292 1142 1119 1180 1225 1335 1488 1654 1984 2781 3099 3683 3167 2850 2332 1808 1475 1258 1113 1120 1144 1195 1301 1448 1609 1866 2270 2902 3078 2797 2527 2118 1703 1458 1226 1097 1113 1112 1162 1268 1407 1573 1745 2148 2505 2757 2489 2288 1927 1632 1426 1205 1092 1094 1080 1126 1232 1368 1525 1661 1911 2214 2381 2281 2100 1813 1586 1404 1185 1076 1076 1055 1099 1203 1339 1491 1630 1790 2040 2196 2154 2009 1744 1561 1380 1175 1067 1066 1035 1083 1183 1325 1455 1608 1708 2223 2016 2082 1922 1704 1538 1368 1177 1059 1054 1027 1073 1174 1314 1449 1591 1729 1847 2065 2044 1901 1698 1538 1368 1169 1062 1055 1024 1073 1174 1320 1434 1582 1722 1894 2013 2083 1934 1710 1554 1374 1194 1063 1062 1034 1083 1184 1324 1422 1580 1722 1887 2021 2173 2027 1768 1584 1404 1230 1091 1087 1054 1101 1202 1347 1387 1581 1759 1966 2114 2299 2134 1840 1619 1437 1256 1110 1119 1079 1128 1222 1371 1372 1616 1814 2070 2222 2535 2337 1992 1676 1486 1301 1148 1136 1120 1163 1259 1401 1434 1666 1957 2254 2426 2886 2629 2213 1771 1548 1360 1176 1169 1164 1204 1302 1437 1516 1725 2158 2524 2756 3354 3019 2474 1922 1599 1408 1206 1201 1179 1246 1336 1475 1595 1842 2352 2893 3163 3967 3530 2817 2115 1665 1462 1246 1217 1224 1253 1380 1515 1643 2014 2678 3253 3675 4644 4059 3171 2324 1740 1507 1279 1235 1252 1301 1408 1559 1707 2216 2950 3718 4245] + + + + + 2592x1944_D75_90 + + + 2592x1944 + + + D75 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [19 40 72 103 136 172 198 220] + + + [43 54 62 71 76 66 83 85] + + + [ 90] + + + [4740 4181 3268 2362 1765 1527 1334 1268 1289 1348 1511 1754 1985 2646 3449 4562 4966 4075 3673 2899 2163 1697 1470 1289 1249 1232 1297 1449 1687 1923 2359 3329 3717 4384 3582 3214 2604 1996 1648 1405 1260 1209 1177 1245 1396 1614 1852 2202 2704 3468 3690 3143 2881 2391 1865 1615 1376 1228 1169 1134 1193 1337 1550 1795 2028 2550 2949 3253 2819 2616 2213 1791 1565 1351 1186 1129 1089 1149 1288 1488 1718 1901 2257 2653 2846 2617 2429 2094 1758 1518 1306 1165 1096 1058 1111 1247 1445 1665 1829 2126 2487 2635 2461 2332 2009 1748 1494 1281 1161 1078 1036 1091 1221 1416 1634 1847 2023 2577 2406 2392 2234 1959 1737 1477 1253 1152 1058 1026 1074 1205 1393 1616 1815 2013 2157 2330 2330 2209 1951 1743 1468 1218 1162 1055 1024 1074 1202 1395 1601 1809 1973 2142 2339 2400 2243 1964 1762 1499 1239 1157 1067 1033 1085 1211 1399 1605 1799 1984 2253 2421 2477 2345 2041 1793 1555 1302 1176 1095 1056 1105 1240 1411 1614 1822 2021 2325 2479 2644 2469 2125 1838 1596 1334 1192 1131 1081 1133 1267 1416 1643 1856 2106 2445 2614 2871 2686 2313 1898 1668 1397 1226 1161 1120 1170 1313 1447 1693 1922 2271 2706 2905 3239 2992 2531 2015 1729 1477 1244 1211 1167 1218 1353 1534 1754 2024 2557 2965 3242 3797 3458 2828 2188 1801 1530 1272 1262 1199 1269 1404 1600 1806 2182 2760 3436 3728 4403 4043 3237 2411 1873 1580 1334 1291 1257 1311 1463 1663 1889 2367 3175 3893 4411 5222 4600 3646 2656 1993 1649 1388 1335 1306 1362 1527 1738 1988 2632 3505 4530 5044] + + + [4393 3836 2929 2113 1569 1369 1221 1195 1231 1279 1408 1602 1780 2380 3173 4194 4644 3785 3346 2631 1944 1516 1326 1190 1185 1193 1246 1366 1550 1744 2129 3049 3415 4034 3273 2922 2358 1781 1478 1277 1168 1164 1149 1207 1322 1498 1684 1994 2469 3193 3366 2841 2602 2153 1662 1455 1254 1152 1133 1115 1168 1281 1442 1646 1832 2336 2699 2972 2561 2354 1987 1603 1412 1234 1122 1107 1078 1129 1242 1397 1575 1730 2042 2410 2580 2339 2176 1868 1579 1372 1198 1110 1081 1053 1099 1208 1359 1535 1660 1934 2247 2381 2227 2071 1795 1569 1349 1179 1110 1063 1033 1082 1189 1340 1508 1686 1830 2354 2158 2139 1991 1747 1559 1339 1155 1107 1047 1026 1068 1176 1322 1491 1661 1826 1918 2089 2098 1961 1735 1563 1328 1121 1115 1045 1024 1069 1175 1323 1480 1651 1785 1920 2090 2137 2000 1752 1581 1357 1139 1111 1054 1029 1078 1185 1327 1480 1639 1792 2020 2160 2236 2091 1816 1607 1407 1195 1121 1080 1051 1095 1208 1333 1480 1661 1824 2080 2224 2371 2216 1903 1645 1441 1222 1136 1111 1074 1119 1232 1332 1511 1685 1898 2203 2351 2605 2411 2065 1700 1503 1280 1156 1136 1107 1155 1270 1353 1551 1743 2059 2451 2643 2989 2717 2294 1806 1571 1351 1169 1177 1151 1198 1304 1432 1602 1838 2342 2708 2952 3520 3171 2585 1983 1628 1397 1189 1220 1178 1242 1347 1490 1648 1982 2540 3155 3399 4160 3726 2959 2190 1698 1441 1239 1242 1226 1277 1394 1545 1717 2159 2927 3582 4056 4912 4360 3361 2416 1790 1491 1279 1267 1260 1312 1437 1599 1798 2398 3225 4179 4713] + + + [4352 3827 2934 2107 1570 1370 1222 1194 1234 1282 1415 1606 1792 2395 3184 4227 4672 3795 3333 2623 1943 1516 1328 1191 1187 1192 1249 1371 1556 1745 2142 3070 3439 4072 3263 2915 2352 1779 1477 1277 1170 1165 1151 1209 1326 1504 1691 2000 2483 3210 3381 2847 2596 2144 1662 1457 1255 1154 1136 1116 1169 1286 1447 1648 1842 2343 2712 2986 2544 2347 1985 1599 1413 1236 1123 1108 1080 1132 1246 1401 1582 1737 2048 2422 2596 2334 2173 1866 1578 1372 1200 1111 1082 1054 1100 1212 1363 1540 1664 1942 2244 2398 2227 2067 1795 1568 1349 1179 1111 1065 1033 1084 1192 1345 1513 1688 1840 2363 2166 2126 1987 1743 1559 1339 1156 1107 1049 1026 1070 1180 1326 1497 1665 1830 1923 2093 2095 1956 1731 1561 1329 1123 1118 1045 1024 1069 1177 1328 1484 1658 1790 1922 2100 2133 1989 1750 1579 1353 1139 1112 1055 1031 1080 1186 1331 1484 1644 1799 2018 2172 2222 2085 1814 1604 1405 1196 1123 1079 1051 1096 1209 1336 1487 1660 1826 2089 2231 2346 2207 1892 1644 1441 1220 1136 1111 1073 1119 1233 1335 1515 1688 1903 2200 2354 2591 2404 2054 1696 1498 1278 1157 1135 1107 1155 1271 1356 1553 1744 2058 2451 2642 2954 2698 2277 1798 1567 1348 1168 1177 1150 1197 1306 1432 1602 1841 2329 2704 2939 3468 3117 2561 1967 1624 1394 1188 1218 1176 1241 1346 1488 1650 1977 2535 3139 3399 4113 3672 2930 2174 1696 1438 1235 1242 1223 1274 1395 1542 1719 2155 2917 3559 4047 4857 4284 3323 2394 1779 1484 1276 1263 1260 1309 1435 1598 1794 2387 3203 4147 4659] + + + [3969 3466 2719 1968 1474 1292 1171 1174 1219 1265 1385 1546 1704 2241 2965 3822 4189 3457 3073 2434 1806 1427 1252 1147 1169 1184 1239 1346 1505 1671 2009 2844 3168 3716 2994 2704 2189 1670 1396 1216 1140 1157 1149 1207 1314 1463 1628 1892 2323 2960 3102 2644 2420 2003 1567 1379 1203 1130 1133 1115 1171 1278 1419 1594 1760 2192 2526 2757 2387 2186 1857 1516 1338 1192 1108 1105 1082 1136 1244 1378 1535 1661 1928 2249 2418 2169 2024 1755 1497 1304 1162 1100 1082 1057 1103 1212 1349 1498 1599 1835 2096 2231 2068 1931 1690 1486 1289 1146 1102 1063 1038 1088 1192 1334 1476 1626 1743 2212 2009 1986 1853 1645 1480 1279 1127 1099 1046 1028 1075 1180 1317 1464 1604 1743 1809 1949 1942 1825 1634 1482 1268 1095 1112 1043 1024 1074 1178 1318 1455 1597 1710 1796 1941 1984 1852 1652 1499 1298 1110 1106 1051 1032 1082 1185 1320 1453 1583 1710 1890 2018 2060 1944 1706 1524 1342 1165 1115 1079 1049 1098 1206 1322 1447 1599 1727 1942 2068 2198 2049 1774 1558 1373 1187 1127 1111 1074 1120 1231 1318 1470 1623 1792 2052 2181 2392 2227 1918 1607 1428 1237 1145 1133 1108 1154 1268 1334 1501 1674 1928 2264 2451 2736 2508 2120 1695 1489 1299 1150 1171 1148 1194 1299 1404 1547 1753 2175 2514 2710 3168 2878 2383 1845 1540 1331 1159 1209 1168 1237 1331 1449 1589 1858 2363 2887 3108 3749 3367 2709 2024 1594 1363 1195 1222 1211 1261 1367 1494 1638 2012 2688 3246 3654 4383 3887 3044 2220 1667 1397 1221 1237 1236 1288 1397 1531 1696 2206 2948 3736 4183] + + + + + 2592x1944_F11_90 + + + 2592x1944 + + + F11 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [20 41 70 102 133 164 203 227] + + + [40 54 62 71 76 67 83 87] + + + [ 90] + + + [5188 4629 3514 2565 1923 1678 1435 1335 1275 1315 1489 1718 1955 2633 3436 4601 5179 4543 4013 3163 2369 1839 1631 1391 1298 1221 1267 1427 1656 1891 2344 3350 3761 4515 3848 3432 2803 2158 1767 1565 1351 1247 1166 1207 1357 1590 1811 2183 2666 3506 3714 3332 3023 2533 1971 1713 1509 1320 1195 1121 1152 1295 1491 1751 1980 2528 2944 3286 2950 2733 2317 1823 1673 1464 1288 1151 1078 1105 1239 1402 1687 1891 2232 2657 2851 2720 2521 2137 1748 1640 1439 1259 1115 1049 1068 1199 1355 1602 1768 2046 2376 2545 2570 2412 2014 1721 1609 1425 1240 1099 1029 1048 1172 1327 1566 1773 1924 2426 2198 2489 2314 1946 1708 1572 1416 1228 1083 1024 1031 1154 1303 1529 1761 1879 2007 2280 2474 2294 1960 1697 1554 1423 1229 1084 1025 1033 1152 1296 1516 1748 1880 2096 2262 2528 2355 1994 1714 1551 1442 1243 1094 1033 1048 1158 1326 1559 1757 1900 2162 2334 2652 2475 2103 1775 1566 1477 1271 1123 1051 1068 1194 1309 1593 1781 1980 2241 2400 2809 2612 2218 1850 1585 1503 1303 1167 1075 1099 1211 1401 1626 1813 2065 2389 2540 3055 2837 2415 1949 1646 1527 1347 1192 1117 1142 1259 1457 1675 1874 2241 2625 2810 3524 3190 2673 2103 1744 1556 1404 1234 1166 1191 1318 1524 1715 1988 2502 2959 3283 4124 3679 2993 2313 1837 1614 1457 1287 1216 1245 1383 1592 1771 2164 2741 3437 3795 4902 4334 3404 2554 1934 1693 1514 1342 1265 1303 1453 1655 1853 2357 3201 3942 4521 5652 4991 3843 2786 2051 1763 1572 1396 1316 1354 1521 1715 1945 2614 3526 4582 5275] + + + [4840 4260 3298 2394 1790 1577 1359 1289 1241 1274 1424 1622 1813 2434 3195 4251 4760 4202 3736 2950 2212 1723 1535 1326 1262 1197 1234 1372 1569 1766 2171 3099 3471 4156 3578 3200 2625 2011 1655 1479 1294 1222 1150 1183 1313 1509 1703 2029 2483 3242 3439 3081 2811 2359 1839 1613 1427 1273 1176 1113 1135 1258 1418 1653 1846 2356 2731 3040 2755 2540 2153 1706 1576 1388 1247 1139 1073 1092 1206 1333 1595 1770 2082 2464 2651 2521 2346 1980 1637 1545 1369 1227 1110 1047 1060 1173 1295 1518 1660 1901 2199 2341 2396 2234 1866 1611 1518 1357 1212 1094 1028 1042 1150 1269 1478 1669 1782 2256 2022 2297 2140 1799 1601 1488 1352 1204 1080 1024 1027 1135 1250 1445 1659 1750 1841 2095 2289 2122 1811 1589 1469 1358 1205 1081 1026 1027 1135 1245 1431 1648 1748 1938 2074 2342 2174 1843 1604 1469 1376 1218 1091 1033 1043 1141 1277 1482 1651 1766 1990 2146 2448 2285 1935 1653 1483 1407 1245 1118 1052 1061 1174 1251 1510 1669 1841 2071 2213 2594 2421 2050 1719 1499 1431 1271 1162 1074 1093 1189 1349 1542 1698 1920 2205 2352 2851 2634 2240 1810 1550 1455 1308 1183 1112 1134 1232 1400 1585 1752 2083 2429 2590 3281 2958 2498 1954 1638 1481 1357 1223 1161 1178 1290 1458 1615 1856 2331 2751 3027 3817 3425 2788 2158 1719 1534 1407 1267 1207 1232 1347 1521 1670 2020 2555 3188 3472 4542 4026 3173 2389 1813 1602 1454 1317 1254 1281 1412 1575 1735 2196 2978 3652 4152 5232 4658 3554 2606 1913 1661 1498 1359 1291 1326 1465 1624 1812 2424 3233 4245 4748] + + + [4862 4287 3297 2400 1805 1581 1357 1291 1240 1278 1431 1629 1832 2456 3227 4342 4793 4235 3745 2968 2219 1723 1536 1329 1264 1198 1237 1378 1579 1777 2199 3135 3514 4210 3589 3210 2628 2016 1659 1481 1297 1221 1152 1186 1318 1522 1711 2047 2510 3283 3482 3096 2811 2366 1843 1616 1430 1274 1178 1112 1137 1262 1426 1664 1859 2376 2757 3063 2755 2545 2154 1707 1581 1391 1249 1141 1074 1095 1211 1340 1605 1783 2099 2488 2675 2529 2349 1986 1640 1548 1370 1230 1111 1048 1063 1178 1302 1529 1669 1919 2210 2370 2400 2234 1872 1614 1520 1360 1214 1096 1030 1044 1155 1277 1488 1680 1796 2288 2026 2303 2145 1801 1603 1492 1353 1206 1082 1024 1028 1140 1256 1454 1668 1760 1851 2113 2280 2122 1814 1593 1473 1359 1209 1082 1026 1032 1138 1251 1439 1660 1757 1953 2085 2347 2181 1842 1606 1472 1380 1220 1090 1034 1044 1145 1284 1492 1664 1778 2010 2161 2438 2284 1936 1655 1483 1410 1246 1119 1051 1064 1179 1256 1517 1681 1851 2080 2225 2606 2420 2047 1721 1502 1433 1273 1160 1074 1093 1192 1354 1550 1708 1928 2218 2347 2846 2619 2236 1807 1552 1454 1310 1181 1112 1134 1234 1404 1591 1762 2094 2433 2614 3250 2943 2487 1948 1633 1483 1356 1221 1158 1178 1291 1461 1624 1862 2340 2748 3035 3809 3401 2777 2147 1718 1530 1403 1265 1202 1230 1347 1524 1674 2023 2564 3197 3475 4519 3982 3159 2373 1808 1599 1451 1313 1249 1279 1411 1578 1737 2204 2984 3658 4183 5212 4602 3547 2596 1905 1656 1494 1353 1287 1320 1466 1626 1817 2421 3254 4214 4765] + + + [4363 3854 3039 2247 1701 1494 1306 1265 1224 1254 1386 1563 1731 2275 2955 3825 4265 3819 3389 2730 2078 1642 1459 1283 1241 1186 1216 1341 1516 1694 2042 2855 3173 3729 3281 2957 2445 1905 1591 1416 1269 1212 1145 1178 1294 1473 1644 1921 2326 2969 3140 2853 2607 2214 1762 1555 1378 1254 1175 1110 1131 1245 1385 1593 1770 2199 2536 2771 2570 2369 2022 1658 1521 1346 1235 1139 1077 1092 1199 1308 1545 1705 1960 2288 2452 2336 2193 1882 1599 1491 1336 1222 1111 1049 1059 1169 1274 1477 1597 1803 2028 2170 2243 2088 1786 1575 1469 1331 1208 1095 1031 1043 1144 1254 1440 1609 1692 2119 1873 2137 2005 1729 1564 1446 1331 1203 1083 1024 1026 1131 1237 1406 1604 1661 1710 1928 2145 1987 1733 1555 1438 1334 1208 1081 1025 1027 1131 1230 1396 1592 1669 1808 1927 2179 2033 1760 1567 1443 1350 1219 1091 1035 1041 1133 1260 1449 1595 1684 1863 1988 2275 2124 1824 1607 1455 1377 1242 1118 1048 1058 1166 1225 1469 1612 1741 1922 2041 2399 2248 1921 1653 1473 1397 1266 1159 1072 1090 1177 1322 1499 1632 1808 2036 2149 2624 2422 2091 1725 1512 1419 1296 1181 1109 1126 1218 1373 1537 1678 1940 2232 2366 2981 2720 2308 1845 1577 1449 1334 1216 1155 1169 1271 1426 1556 1763 2159 2523 2723 3443 3109 2567 2015 1640 1488 1372 1255 1193 1216 1320 1475 1601 1889 2355 2878 3125 4043 3569 2894 2198 1709 1531 1406 1288 1231 1257 1372 1512 1642 2029 2705 3260 3677 4561 4126 3199 2394 1779 1574 1439 1321 1260 1287 1415 1548 1700 2225 2907 3702 4143] + + + + + 2592x1944_F2_90 + + + 2592x1944 + + + F2 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [17 37 68 102 132 172 206 226] + + + [40 53 61 70 78 67 84 87] + + + [ 90] + + + [5182 4590 3655 2625 1955 1686 1419 1284 1286 1339 1500 1722 1973 2725 3573 4783 5123 4461 4029 3231 2433 1872 1632 1370 1237 1242 1291 1448 1668 1904 2413 3447 3847 4520 3805 3479 2863 2211 1798 1569 1312 1198 1184 1237 1389 1606 1822 2236 2760 3575 3713 3278 3047 2576 2034 1746 1514 1260 1173 1138 1189 1329 1538 1764 2025 2593 3001 3290 2924 2738 2348 1900 1689 1464 1220 1142 1091 1141 1279 1480 1699 1913 2320 2709 2873 2676 2523 2170 1824 1642 1422 1195 1111 1057 1102 1244 1400 1612 1764 2016 2382 2535 2530 2399 2058 1787 1607 1397 1182 1093 1033 1081 1215 1384 1598 1677 1946 2494 2262 2442 2300 1972 1749 1585 1377 1175 1077 1024 1063 1196 1362 1560 1688 1926 2103 2302 2402 2268 1939 1736 1576 1373 1175 1071 1024 1064 1188 1362 1534 1724 1894 2114 2234 2435 2307 1946 1735 1586 1385 1186 1091 1029 1076 1191 1363 1570 1728 1877 2165 2298 2546 2414 2027 1731 1617 1410 1215 1108 1053 1095 1224 1386 1601 1743 1985 2273 2407 2709 2534 2172 1730 1642 1442 1242 1139 1081 1124 1246 1415 1633 1816 2092 2429 2566 2981 2771 2388 1807 1658 1488 1284 1163 1126 1163 1284 1460 1692 1903 2324 2708 2886 3428 3125 2654 2011 1666 1548 1337 1213 1160 1213 1337 1519 1750 2031 2585 3017 3276 3995 3633 2967 2265 1714 1601 1389 1263 1175 1256 1388 1592 1785 2243 2854 3543 3813 4711 4257 3393 2530 1824 1648 1453 1294 1264 1310 1447 1666 1859 2443 3348 4082 4553 5513 4918 3872 2761 1976 1698 1515 1346 1302 1361 1508 1730 1979 2678 3718 4736 5222] + + + [4772 4263 3368 2434 1801 1564 1334 1231 1247 1290 1425 1606 1817 2495 3308 4359 4744 4156 3737 2995 2248 1729 1526 1296 1196 1212 1256 1382 1566 1760 2226 3188 3543 4188 3517 3212 2653 2039 1671 1471 1248 1166 1167 1211 1336 1517 1692 2062 2568 3285 3419 3044 2809 2382 1876 1622 1423 1204 1151 1125 1169 1289 1458 1646 1873 2403 2762 3032 2715 2519 2167 1755 1575 1377 1173 1129 1086 1129 1246 1408 1594 1774 2147 2502 2647 2462 2317 1996 1689 1530 1343 1155 1103 1057 1094 1218 1339 1514 1637 1859 2183 2341 2333 2201 1892 1649 1502 1320 1148 1087 1034 1077 1192 1328 1502 1558 1790 2295 2062 2242 2111 1809 1622 1480 1306 1142 1072 1025 1060 1175 1310 1467 1571 1779 1922 2104 2202 2076 1776 1608 1473 1301 1145 1067 1024 1059 1170 1312 1446 1602 1752 1936 2038 2236 2114 1786 1608 1478 1308 1155 1085 1029 1073 1172 1313 1479 1611 1730 1971 2104 2339 2207 1864 1600 1507 1331 1178 1103 1055 1088 1202 1329 1509 1615 1830 2080 2196 2479 2332 1990 1600 1528 1356 1201 1129 1079 1115 1221 1357 1532 1685 1931 2226 2356 2755 2552 2195 1669 1544 1399 1238 1151 1118 1155 1255 1391 1586 1768 2145 2495 2647 3142 2888 2453 1856 1555 1454 1282 1191 1153 1200 1302 1441 1635 1881 2405 2786 3030 3687 3351 2754 2094 1597 1500 1329 1236 1163 1240 1343 1508 1663 2081 2664 3273 3525 4366 3947 3143 2343 1695 1547 1383 1263 1245 1289 1396 1574 1732 2270 3117 3766 4242 5145 4586 3549 2573 1821 1580 1432 1299 1269 1325 1445 1629 1822 2486 3413 4393 4841] + + + [4769 4286 3357 2429 1800 1568 1333 1229 1245 1290 1425 1615 1826 2510 3332 4382 4785 4154 3732 3010 2238 1729 1521 1295 1192 1210 1253 1385 1566 1764 2237 3208 3569 4228 3518 3206 2648 2038 1669 1471 1245 1164 1165 1210 1337 1520 1696 2073 2580 3314 3452 3042 2803 2376 1873 1620 1422 1204 1147 1123 1169 1289 1461 1651 1877 2416 2778 3051 2706 2514 2161 1755 1574 1375 1172 1127 1084 1128 1246 1411 1598 1782 2156 2506 2660 2463 2317 1993 1685 1528 1342 1153 1101 1054 1094 1219 1341 1519 1642 1868 2185 2351 2328 2193 1889 1650 1502 1318 1147 1086 1033 1075 1193 1329 1507 1560 1799 2311 2080 2226 2105 1809 1621 1476 1303 1143 1069 1024 1060 1177 1312 1469 1575 1782 1927 2107 2196 2070 1775 1607 1471 1299 1143 1067 1024 1059 1171 1314 1450 1605 1754 1940 2049 2235 2101 1781 1606 1477 1306 1153 1083 1028 1073 1171 1316 1480 1612 1733 1975 2115 2324 2200 1855 1600 1502 1329 1176 1100 1051 1086 1202 1331 1510 1620 1832 2082 2196 2465 2324 1980 1599 1527 1353 1199 1127 1076 1113 1221 1357 1536 1682 1934 2217 2362 2724 2530 2182 1665 1542 1395 1234 1147 1114 1152 1253 1392 1588 1770 2146 2495 2653 3118 2873 2433 1845 1550 1448 1277 1187 1149 1196 1299 1441 1635 1879 2394 2784 3016 3671 3318 2722 2081 1591 1496 1323 1231 1156 1235 1341 1506 1664 2079 2655 3262 3527 4318 3906 3115 2318 1688 1539 1377 1256 1238 1282 1390 1571 1726 2265 3109 3754 4206 5067 4507 3526 2545 1807 1572 1425 1291 1263 1319 1437 1624 1823 2470 3421 4345 4842] + + + [4254 3866 3096 2266 1710 1486 1284 1206 1234 1272 1385 1547 1729 2326 3027 3896 4224 3750 3396 2772 2101 1644 1448 1251 1174 1201 1243 1358 1505 1682 2087 2927 3228 3737 3235 2957 2477 1923 1594 1409 1217 1156 1162 1209 1324 1473 1631 1944 2393 2999 3148 2817 2611 2227 1784 1553 1371 1184 1147 1124 1170 1283 1426 1589 1788 2239 2553 2781 2518 2351 2035 1688 1509 1333 1158 1128 1087 1130 1245 1383 1545 1704 2013 2314 2458 2304 2161 1891 1630 1471 1308 1145 1104 1057 1096 1217 1325 1468 1573 1748 2011 2156 2183 2062 1800 1597 1446 1290 1143 1088 1036 1080 1191 1315 1465 1492 1681 2144 1909 2096 1978 1732 1573 1425 1280 1141 1072 1024 1063 1176 1301 1434 1507 1681 1786 1944 2070 1941 1711 1559 1419 1276 1143 1067 1024 1061 1170 1303 1415 1537 1662 1810 1895 2096 1980 1716 1564 1424 1281 1153 1082 1028 1073 1169 1299 1444 1548 1635 1832 1937 2190 2063 1780 1562 1451 1298 1173 1102 1050 1087 1199 1313 1470 1549 1721 1924 2028 2290 2167 1877 1569 1470 1318 1194 1131 1078 1112 1217 1334 1487 1615 1807 2053 2147 2549 2361 2050 1628 1494 1351 1223 1151 1115 1151 1249 1362 1534 1689 1994 2284 2427 2879 2652 2268 1771 1512 1395 1262 1186 1145 1195 1291 1407 1574 1780 2211 2552 2752 3320 3039 2536 1961 1550 1434 1296 1223 1147 1228 1321 1459 1597 1940 2455 2948 3148 3895 3519 2854 2162 1620 1465 1334 1237 1222 1269 1358 1510 1634 2095 2813 3337 3729 4458 4020 3199 2362 1713 1493 1367 1262 1241 1291 1397 1548 1717 2268 3076 3827 4207] + + + + + + + A_100 + + + [ 100] + + + [2.06242 -0.371307 -0.663126 -0.544726 2.0142 -0.418246 -0.231985 -1.5015 2.7321] + + + [18.6851 19.911 5.6011] + + + [1.2213 1 1 1.9842] + + + + + D50_100 + + + [ 100] + + + [2.15715 -0.811382 -0.352482 -0.40827 2.03502 -0.610777 -0.107697 -0.997128 2.105] + + + [27.4831 35.8149 24.214] + + + [1.7235 1 1 1.4796] + + + + + D65_100 + + + [ 100] + + + [2.41044 -1.18465 -0.231436 -0.331637 1.88932 -0.539832 -0.0998097 -0.787651 1.8939] + + + [23.0711 34.8913 27.0426] + + + [1.93689 1 1 1.2873] + + + + + F11_100 + + + [ 100] + + + [1.93371 -0.741394 -0.174673 -0.437678 2.0616 -0.578537 -0.0965241 -1.07416 2.1677] + + + [17.0109 22.4961 12.1673] + + + [1.53834 1 1 1.5979] + + + + + F2_100 + + + [ 100] + + + [2.04873 -0.864931 -0.17386 -0.516298 2.10785 -0.552634 -0.101268 -0.93087 2.0287] + + + [17.1462 22.1597 14.0667] + + + [1.4659 1 1 1.4979] + + + + + + [ -1] + + + + + [ 80] + + + [ 20] + + + [ 0.7] + + + [ 0.7] + + + [ 0.7] + + + [ 0.9] + + + + + 2592x1944_FPS_15 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 2592x1944_FPS_10 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 2592x1944_FPS_05 + + + + + fast + + + [ 1] + + + [ 1] + + + + + normal + + + [ 2] + + + [ 0.9] + + + + + slow + + + [ 4] + + + [ 0.9] + + + + + + + [ 8] + + + + + + 2592x1944 + + + 2592x1944 + + + [256 256 256 256] + + + + + + + linear + + + [256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4096] + + + [0 256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4095] + + + + + + [ -1] + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + + + 2592x1944 + + + 2592x1944 + + + [ 6] + + + [ 29] + + + [ 6] + + + [ 29] + + + [ 0] + + + [ 0] + + + [0.125 -0.4375 0.4375] + + + [-3.5 4.375 -1.875] + + + + + + + 2592x1944 + + + 2592x1944 + + + [ 1] + + + [1023 1023 906 756 662 547 476 427 391 340 304 278 241 216 197 183 171] + + + [ 4] + + + [ 4] + + + [ 0.15] + + + [ 0] + + + [1 1 1 1] + + + + + + + 2592x1944 + + + 2592x1944 + + + + + ISP_DPCC_MODE + + + 0x0005 + + + + + ISP_DPCC_OUT_MODE + + + 0x0003 + + + + + ISP_DPCC_SET_USE + + + 0x000F + + + + + ISP_DPCC_METHODS_SET1 + + + 0x1D1D + + + + + ISP_DPCC_METHODS_SET2 + + + 0x0707 + + + + + ISP_DPCC_METHODS_SET3 + + + 0x1F1F + + + + + ISP_DPCC_LINE_THRESH_1 + + + 0x0808 + + + + + ISP_DPCC_LINE_MAD_FAC_1 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_1 + + + 0x0404 + + + + + ISP_DPCC_RND_THRESH_1 + + + 0x0804 + + + + + ISP_DPCC_RG_FAC_1 + + + 0x0802 + + + + + ISP_DPCC_LINE_THRESH_2 + + + 0x100C + + + + + ISP_DPCC_LINE_MAD_FAC_2 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_2 + + + 0x0404 + + + + + ISP_DPCC_RND_THRESH_2 + + + 0x0808 + + + + + ISP_DPCC_RG_FAC_2 + + + 0x0808 + + + + + ISP_DPCC_LINE_THRESH_3 + + + 0x0000 + + + + + ISP_DPCC_LINE_MAD_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_RND_THRESH_3 + + + 0x0804 + + + + + ISP_DPCC_RG_FAC_3 + + + 0x0400 + + + + + ISP_DPCC_RO_LIMITS + + + 0x0FFF + + + + + ISP_DPCC_RND_OFFS + + + 0x0FFF + + + + + + + + + + on + + + +
+ diff --git a/drivers/GC5035/GC5035_640x480.xml b/drivers/GC5035/GC5035_640x480.xml new file mode 100644 index 0000000..b9899b4 --- /dev/null +++ b/drivers/GC5035/GC5035_640x480.xml @@ -0,0 +1,1287 @@ + + +
+ + 08-Feb-2022 + + + Mcf + + + gc5035 + + + 5Mlens_480p + + + v2.1.1 + + + + + 640x480 + + + 0x00000001 + + + [ 640] + + + [ 480] + + + + + FPS_15 + + + [ 14.9916] + + + + + FPS_10 + + + [ 9.9944] + + + + + FPS_05 + + + [ 4.9972] + + + + + +
+ + + + + + 640x480 + + + 640x480 + + + [0.316211 0.450278 0.23351] + + + [-0.747965 0.0904144 0.657551 0.327436 -0.811475 0.48404] + + + [-0.800277 -0.59963 -2.3607] + + + [1.03557 1.08428 1.13299 1.18171 1.23042 1.27913 1.32326 1.36926 1.42527 1.48345 1.53323 1.58745 1.63332 1.67663 1.72844 1.8246] + + + [-0.00414674 0.0285734 0.0458083 0.0590686 0.0684166 0.0745711 0.103537 0.171416 0.0766262 0.0287319 0.0187589 -0.00721015 0.00860515 0.00149051 0.00465507 0.02029] + + + [1.03557 1.09863 1.139 1.17938 1.22525 1.28052 1.32736 1.3712 1.41647 1.4737 1.50747 1.58012 1.62599 1.68328 1.73065 1.8204] + + + [0.104147 0.08587 0.0736434 0.0614168 0.0456015 0.0519858 0.0426176 0.0399399 0.0599487 0.0792273 0.116206 0.144303 0.128488 0.121734 0.102574 0.058049] + + + [0.828809 0.890615 0.957978 1.01338 1.0697 1.12955 1.1988 1.26015 1.33667 1.40375 1.49365 1.54193 1.61013 1.68533 1.74067 1.8553] + + + [-0.0307749 -0.0139859 0.0324236 0.0781028 0.0913031 0.120986 0.12847 0.161498 0.228047 0.227677 0.120452 0.107133 0.0950322 0.089865 0.109512 0.12302] + + + [0.845777 0.891118 0.939466 1.01166 1.0779 1.13324 1.19655 1.26633 1.34355 1.39837 1.46455 1.53792 1.60233 1.67208 1.74842 1.8597] + + + [0.208678 0.202655 0.189942 0.2018 0.201007 0.181359 0.161225 0.143949 0.135979 0.126124 0.151362 0.184872 0.224283 0.209637 0.166558 0.091439] + + + [ 1.0356] + + + [ 1.82] + + + [ 1.85] + + + [ 1.474] + + + D50 + + + [ 4.5676] + + + [0.75 1.28836 1.77672 2.164 2.6 3.0618] + + + [114 114 105 95 95 90] + + + [83 83 110 120 122 128] + + + [28 27 18 16 9 9] + + + [123 123 123 123 123 120] + + + [123 123 123 123 123 126] + + + [5 5 5 5 5 5] + + + [ 1] + + + [ 0.8] + + + [ 0.05] + + + + [ 0.05] + + + [ 0.05] + + + [ 0.4] + + + [ 0.5] + + + [ 0.9] + + + [ 0.5] + + + [ 50] + + + [ 1] + + + [ 0.5] + + + + + + + + A + + + Indoor + + + + [1132.49 1537.15 1537.15 4218.7397] + + + [ 247.3246] + + + [1 1] + + + [-0.0885832 0.012733] + + + + + + 640x480 + + + 640x480_A_100 + + + + + [1.11716 1 1 2.3808] + + + [1.99853 -0.905653 -0.0821708 -0.460996 1.77912 -0.258076 -0.151399 -1.53815 2.713] + + + [-29.8061 -52.306 -95.824] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + A_100 + + + + + + D50 + + + Outdoor + + + + [329.787 3.43476 3.43476 1629.9174] + + + [ 116.6849] + + + [1 1] + + + [0.0586363 0.0057683] + + + + + + 640x480 + + + 640x480_D50_100 + + + + + [1.64416 1 1 1.6405] + + + [2.097 -1.12811 0.0410741 -0.327961 1.77429 -0.380266 -0.0366512 -0.804392 1.8682] + + + [-40.7723 -43.9103 -61.7554] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D50_100 + + + + + + D65 + + + Outdoor + + + + [342.947 -200.069 -200.069 1325.0367] + + + [ 102.4529] + + + [1 1] + + + [0.115106 0.012733] + + + + + + 640x480 + + + 640x480_D65_100 + + + + + [1.92224 1 1 1.428] + + + [2.14135 -1.15688 0.0270315 -0.332497 1.83306 -0.43858 -0.0348043 -0.657467 1.7185] + + + [-47.0355 -42.0548 -56.246] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D65_100 + + + + + + F2 (CWF) + + + Indoor + + + + [533.138 -316.589 -316.589 1155.6585] + + + [ 114.3146] + + + [1 1] + + + [0.00647981 -0.026117] + + + + + + 640x480 + + + 640x480_F2_100 + + + + + [1.55891 1 1 2.0968] + + + [2.56944 -1.54023 0.0045255 -0.421136 1.74591 -0.223588 -0.101719 -0.718139 1.8415] + + + [-55.5346 -60.5148 -88.6402] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F2_100 + + + + + + F11 (TL84) + + + Indoor + + + + [395.155 -67.974 -67.974 1176.0173] + + + [ 107.9546] + + + [1 1] + + + [0.00547574 -0.011106] + + + + + + 640x480 + + + 640x480_F11_100 + + + + + [1.49049 1 1 1.9841] + + + [1.91878 -0.849702 -0.0555984 -0.407686 1.7518 -0.292535 -0.10781 -0.692012 1.8706] + + + [-55.1752 -65.3873 -90.5846] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F11_100 + + + + + + + + + 640x480_A_100 + + + 640x480 + + + A + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [34 37 38 38 42 42 46 43] + + + [28 29 31 30 31 30 31 30] + + + [ 100] + + + [1267 1245 1224 1199 1181 1167 1164 1159 1168 1179 1196 1222 1255 1289 1331 1373 1416 1244 1222 1193 1172 1156 1140 1137 1132 1141 1152 1173 1196 1231 1262 1303 1349 1389 1222 1194 1167 1150 1128 1122 1110 1112 1111 1132 1149 1170 1206 1236 1279 1318 1359 1196 1174 1145 1124 1110 1092 1089 1087 1093 1108 1122 1151 1183 1214 1255 1297 1342 1183 1153 1129 1109 1091 1077 1073 1073 1076 1086 1110 1128 1162 1196 1232 1279 1316 1164 1139 1110 1092 1078 1061 1057 1052 1061 1069 1090 1112 1146 1177 1216 1259 1303 1152 1125 1099 1080 1062 1051 1045 1044 1045 1061 1075 1100 1131 1165 1198 1247 1290 1145 1115 1092 1070 1055 1042 1038 1036 1041 1049 1070 1093 1123 1156 1194 1238 1279 1137 1111 1085 1067 1052 1040 1032 1031 1033 1045 1064 1088 1114 1150 1185 1231 1267 1133 1105 1082 1066 1047 1036 1031 1024 1032 1041 1057 1081 1114 1147 1180 1225 1269 1130 1109 1082 1063 1047 1034 1030 1026 1034 1040 1059 1084 1110 1146 1184 1227 1276 1135 1109 1085 1064 1052 1039 1029 1032 1033 1046 1063 1081 1116 1146 1183 1227 1268 1139 1111 1091 1069 1056 1043 1038 1036 1039 1049 1064 1090 1119 1155 1191 1234 1277 1146 1123 1094 1081 1062 1051 1046 1043 1050 1059 1077 1099 1130 1160 1203 1242 1287 1157 1135 1107 1088 1077 1062 1057 1057 1058 1070 1089 1113 1143 1179 1214 1259 1301 1174 1145 1124 1103 1087 1076 1069 1067 1072 1085 1101 1126 1163 1192 1230 1271 1319 1184 1157 1137 1116 1098 1090 1083 1079 1091 1099 1119 1142 1173 1208 1248 1287 1334] + + + [1249 1229 1202 1183 1165 1150 1147 1139 1139 1150 1165 1180 1211 1231 1265 1298 1334 1227 1210 1181 1165 1144 1131 1121 1116 1118 1128 1141 1164 1188 1206 1242 1278 1300 1214 1183 1161 1139 1125 1108 1105 1097 1098 1107 1123 1141 1164 1189 1224 1254 1287 1179 1166 1139 1122 1103 1094 1080 1078 1077 1088 1100 1121 1138 1172 1201 1235 1267 1175 1150 1125 1105 1088 1073 1063 1061 1065 1072 1082 1107 1125 1153 1182 1216 1252 1162 1137 1111 1091 1076 1061 1052 1046 1050 1052 1072 1088 1116 1141 1172 1203 1238 1152 1123 1099 1082 1064 1054 1043 1035 1040 1046 1059 1079 1104 1133 1156 1193 1225 1144 1117 1098 1075 1062 1043 1040 1030 1032 1037 1055 1069 1097 1117 1150 1188 1214 1135 1117 1094 1072 1054 1041 1034 1028 1029 1036 1048 1066 1090 1119 1143 1184 1211 1136 1115 1089 1070 1054 1041 1030 1024 1029 1033 1047 1066 1090 1115 1140 1175 1210 1134 1112 1090 1073 1052 1040 1032 1025 1032 1034 1048 1065 1088 1112 1148 1177 1211 1142 1116 1097 1075 1057 1047 1037 1035 1030 1041 1054 1069 1094 1118 1150 1177 1217 1142 1118 1098 1079 1064 1050 1041 1038 1036 1044 1056 1075 1098 1127 1154 1190 1221 1154 1131 1109 1087 1072 1059 1051 1046 1050 1050 1068 1085 1110 1132 1164 1195 1230 1162 1139 1121 1099 1085 1067 1062 1060 1058 1068 1080 1095 1125 1150 1176 1212 1241 1177 1152 1131 1113 1100 1079 1079 1071 1071 1082 1087 1109 1134 1161 1192 1221 1262 1187 1160 1144 1122 1110 1099 1088 1086 1085 1098 1109 1127 1150 1175 1210 1237 1264] + + + [1235 1221 1194 1178 1157 1152 1140 1137 1137 1148 1169 1188 1220 1245 1279 1312 1351 1225 1198 1174 1157 1141 1128 1119 1117 1119 1132 1149 1170 1196 1224 1255 1295 1328 1202 1176 1154 1140 1121 1107 1103 1096 1099 1114 1125 1148 1174 1203 1237 1270 1303 1178 1163 1136 1116 1105 1085 1083 1076 1080 1089 1105 1124 1151 1182 1216 1253 1287 1168 1142 1123 1102 1084 1072 1065 1061 1065 1076 1091 1113 1138 1165 1201 1232 1275 1153 1130 1105 1086 1073 1062 1051 1047 1051 1059 1077 1096 1126 1150 1184 1221 1260 1139 1121 1092 1081 1064 1051 1042 1040 1041 1050 1064 1090 1117 1140 1171 1205 1248 1136 1114 1090 1072 1057 1043 1038 1033 1035 1047 1058 1078 1108 1138 1164 1205 1237 1130 1109 1087 1067 1054 1039 1031 1031 1035 1039 1055 1078 1103 1128 1163 1196 1234 1129 1108 1086 1068 1053 1039 1034 1024 1033 1036 1055 1073 1101 1128 1157 1194 1231 1131 1112 1085 1068 1051 1040 1033 1027 1033 1041 1055 1075 1102 1131 1160 1200 1233 1132 1108 1090 1070 1058 1041 1038 1032 1032 1046 1057 1077 1103 1134 1162 1202 1231 1141 1117 1095 1077 1062 1048 1043 1040 1042 1049 1065 1088 1112 1143 1171 1206 1244 1144 1124 1104 1087 1069 1057 1050 1047 1052 1061 1071 1095 1122 1147 1180 1217 1251 1158 1133 1115 1094 1080 1069 1064 1063 1062 1068 1092 1106 1137 1163 1195 1232 1261 1166 1146 1132 1104 1094 1081 1077 1072 1074 1088 1096 1122 1151 1176 1214 1242 1285 1183 1158 1136 1124 1109 1091 1083 1087 1089 1101 1116 1134 1163 1194 1223 1258 1296] + + + [1208 1197 1181 1166 1152 1150 1133 1142 1146 1161 1168 1188 1224 1236 1275 1299 1333 1201 1174 1161 1143 1128 1120 1121 1119 1127 1135 1156 1170 1199 1227 1251 1290 1320 1170 1162 1140 1125 1111 1106 1098 1099 1097 1117 1131 1150 1174 1208 1244 1269 1312 1156 1142 1121 1102 1096 1082 1080 1083 1088 1101 1112 1136 1156 1184 1218 1250 1280 1142 1123 1105 1093 1079 1071 1067 1068 1076 1085 1102 1120 1144 1173 1200 1233 1275 1140 1110 1094 1081 1065 1059 1053 1057 1060 1075 1087 1107 1130 1153 1191 1227 1249 1118 1105 1080 1067 1058 1044 1054 1040 1055 1059 1082 1100 1123 1152 1178 1208 1248 1115 1092 1076 1063 1050 1043 1038 1043 1038 1058 1070 1088 1112 1142 1166 1206 1245 1111 1093 1070 1052 1050 1041 1034 1028 1039 1049 1063 1090 1106 1136 1164 1195 1228 1107 1083 1066 1054 1039 1030 1036 1035 1038 1047 1057 1076 1105 1130 1161 1195 1230 1101 1091 1071 1051 1043 1034 1036 1024 1036 1047 1062 1079 1099 1132 1160 1193 1226 1110 1090 1071 1054 1047 1034 1031 1033 1035 1045 1061 1079 1107 1135 1166 1192 1240 1116 1087 1073 1062 1044 1038 1034 1035 1040 1049 1067 1081 1113 1135 1166 1198 1230 1125 1102 1079 1061 1054 1047 1041 1042 1046 1050 1073 1084 1114 1144 1173 1202 1239 1135 1103 1092 1070 1059 1054 1046 1046 1051 1061 1080 1092 1128 1148 1183 1213 1247 1140 1119 1103 1082 1069 1060 1056 1060 1056 1072 1086 1107 1133 1154 1193 1229 1256 1156 1135 1107 1104 1083 1074 1070 1062 1069 1083 1106 1116 1149 1169 1203 1235 1265] + + + + + 640x480_D50_100 + + + 640x480 + + + D50 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [32 39 38 40 40 44 45 42] + + + [28 29 30 31 30 32 30 30] + + + [ 100] + + + [1259 1230 1211 1184 1171 1160 1154 1153 1162 1174 1192 1220 1252 1279 1318 1363 1405 1232 1206 1176 1161 1146 1130 1132 1129 1135 1152 1166 1193 1219 1257 1294 1335 1372 1206 1180 1158 1137 1125 1115 1106 1107 1111 1130 1144 1170 1202 1231 1272 1312 1352 1185 1164 1133 1117 1104 1090 1091 1086 1092 1104 1124 1151 1172 1211 1248 1288 1319 1169 1148 1117 1096 1084 1074 1069 1068 1080 1088 1106 1125 1157 1190 1226 1270 1310 1154 1123 1100 1086 1069 1059 1054 1054 1061 1068 1090 1114 1141 1177 1213 1254 1295 1135 1116 1092 1072 1058 1046 1045 1043 1051 1059 1075 1107 1126 1163 1196 1239 1282 1131 1105 1082 1062 1049 1041 1036 1039 1041 1053 1072 1092 1118 1154 1190 1235 1272 1122 1103 1078 1056 1047 1038 1031 1027 1038 1046 1064 1091 1114 1145 1184 1226 1265 1117 1098 1073 1055 1039 1030 1029 1027 1034 1045 1061 1085 1108 1144 1175 1222 1259 1124 1094 1069 1058 1040 1031 1028 1024 1035 1044 1058 1083 1110 1141 1178 1220 1260 1118 1099 1076 1054 1044 1035 1029 1035 1031 1048 1061 1085 1112 1143 1179 1221 1262 1127 1098 1080 1058 1047 1036 1034 1031 1040 1047 1064 1087 1116 1147 1187 1226 1266 1135 1107 1082 1066 1051 1043 1040 1042 1044 1057 1072 1094 1122 1156 1196 1234 1270 1134 1119 1097 1075 1059 1052 1050 1050 1056 1067 1083 1108 1134 1168 1205 1249 1288 1155 1130 1108 1091 1077 1065 1060 1064 1063 1079 1095 1118 1150 1185 1218 1264 1295 1165 1143 1119 1102 1086 1078 1073 1074 1078 1091 1110 1133 1158 1194 1232 1270 1316] + + + [1242 1215 1200 1169 1154 1144 1137 1131 1134 1139 1152 1177 1200 1222 1252 1290 1313 1223 1193 1171 1155 1136 1121 1115 1108 1109 1122 1130 1153 1174 1200 1231 1269 1292 1200 1178 1151 1132 1117 1106 1096 1090 1092 1101 1114 1130 1153 1181 1213 1246 1275 1179 1160 1130 1113 1100 1086 1076 1071 1077 1081 1093 1115 1134 1163 1193 1222 1259 1168 1143 1120 1101 1083 1071 1059 1061 1061 1066 1078 1098 1119 1147 1176 1211 1246 1152 1130 1105 1090 1070 1058 1050 1044 1046 1056 1063 1083 1108 1132 1166 1200 1229 1135 1121 1097 1080 1062 1048 1040 1038 1036 1043 1057 1076 1097 1125 1149 1187 1224 1140 1114 1092 1072 1058 1046 1038 1027 1028 1034 1051 1070 1089 1111 1144 1180 1209 1132 1115 1088 1068 1053 1039 1029 1029 1030 1034 1046 1062 1086 1113 1141 1175 1206 1132 1106 1085 1068 1049 1039 1030 1024 1028 1034 1046 1065 1085 1111 1137 1173 1202 1131 1111 1086 1068 1053 1036 1030 1025 1028 1033 1046 1060 1085 1109 1138 1173 1200 1136 1111 1089 1069 1054 1045 1033 1031 1027 1038 1050 1069 1090 1115 1143 1175 1212 1135 1116 1093 1074 1059 1045 1040 1032 1036 1042 1056 1073 1093 1120 1148 1181 1210 1148 1124 1101 1082 1069 1057 1045 1044 1046 1051 1062 1082 1105 1128 1157 1194 1224 1153 1133 1111 1094 1077 1064 1057 1057 1056 1063 1076 1093 1115 1140 1170 1207 1228 1165 1143 1122 1107 1091 1076 1067 1068 1066 1077 1085 1105 1128 1153 1184 1222 1247 1174 1159 1140 1115 1102 1089 1081 1078 1083 1090 1100 1122 1139 1166 1202 1227 1253] + + + [1218 1206 1185 1167 1153 1136 1132 1127 1137 1141 1155 1179 1205 1227 1256 1302 1320 1207 1185 1163 1145 1127 1118 1111 1110 1109 1121 1136 1157 1183 1213 1240 1272 1305 1185 1165 1141 1127 1110 1098 1094 1087 1091 1104 1114 1135 1161 1186 1218 1257 1278 1165 1148 1125 1108 1094 1081 1077 1072 1075 1085 1099 1120 1138 1172 1203 1238 1270 1154 1131 1113 1092 1079 1063 1058 1057 1061 1067 1081 1102 1126 1155 1184 1218 1255 1138 1120 1094 1080 1064 1055 1047 1043 1047 1053 1070 1089 1112 1140 1175 1207 1241 1129 1110 1087 1070 1056 1044 1040 1037 1038 1045 1059 1080 1105 1134 1159 1196 1235 1124 1107 1082 1066 1050 1042 1033 1027 1029 1040 1052 1071 1097 1124 1153 1188 1225 1118 1102 1081 1061 1049 1033 1030 1025 1033 1036 1053 1071 1093 1124 1150 1186 1218 1124 1100 1078 1063 1044 1039 1029 1024 1028 1038 1052 1067 1093 1120 1146 1185 1217 1124 1100 1079 1062 1045 1034 1031 1024 1028 1037 1051 1069 1094 1118 1150 1191 1214 1125 1103 1082 1064 1053 1038 1032 1031 1034 1042 1056 1073 1100 1126 1153 1194 1222 1131 1105 1089 1069 1058 1044 1041 1038 1037 1044 1064 1081 1102 1132 1162 1199 1226 1133 1115 1097 1081 1067 1055 1047 1046 1051 1057 1069 1090 1118 1143 1168 1208 1240 1147 1124 1107 1086 1076 1064 1060 1056 1058 1068 1086 1101 1128 1147 1184 1221 1248 1156 1143 1119 1100 1089 1074 1074 1069 1074 1083 1095 1117 1139 1165 1200 1234 1266 1172 1150 1128 1115 1100 1095 1084 1080 1090 1092 1110 1125 1157 1183 1212 1248 1280] + + + [1189 1186 1161 1140 1137 1125 1119 1123 1120 1137 1140 1161 1176 1204 1231 1268 1300 1179 1165 1141 1129 1111 1107 1100 1100 1105 1115 1124 1140 1167 1185 1220 1239 1270 1170 1141 1127 1113 1097 1088 1085 1081 1084 1093 1107 1126 1145 1166 1200 1230 1258 1150 1136 1109 1095 1086 1072 1067 1069 1071 1082 1092 1113 1130 1153 1181 1212 1237 1134 1115 1096 1079 1072 1057 1057 1054 1058 1069 1080 1093 1114 1139 1167 1205 1229 1120 1104 1086 1071 1060 1049 1044 1046 1048 1058 1065 1085 1109 1130 1159 1184 1213 1116 1101 1079 1063 1054 1043 1040 1033 1041 1044 1061 1077 1095 1124 1146 1180 1209 1111 1090 1074 1056 1045 1039 1030 1035 1036 1043 1050 1069 1092 1114 1139 1174 1194 1106 1089 1069 1053 1046 1036 1028 1025 1033 1040 1053 1068 1087 1108 1136 1170 1198 1105 1089 1073 1054 1040 1032 1028 1028 1029 1037 1046 1060 1088 1109 1137 1170 1195 1101 1091 1067 1055 1044 1031 1029 1024 1029 1034 1048 1067 1087 1108 1137 1166 1195 1102 1090 1070 1057 1040 1035 1030 1030 1029 1041 1051 1068 1088 1112 1142 1171 1202 1114 1090 1078 1060 1048 1037 1032 1036 1037 1039 1056 1073 1090 1118 1140 1182 1204 1121 1099 1085 1067 1055 1050 1039 1038 1044 1050 1063 1078 1100 1126 1155 1187 1209 1130 1105 1090 1075 1063 1055 1050 1051 1049 1062 1070 1087 1111 1132 1162 1189 1222 1135 1120 1104 1088 1074 1064 1057 1058 1061 1065 1082 1095 1119 1142 1175 1206 1231 1147 1135 1113 1103 1080 1078 1069 1071 1067 1087 1098 1111 1130 1158 1188 1207 1247] + + + + + 640x480_D65_100 + + + 640x480 + + + D65 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [34 38 41 41 41 41 44 40] + + + [28 28 29 29 32 30 33 31] + + + [ 100] + + + [1245 1230 1202 1182 1170 1168 1155 1163 1160 1176 1197 1220 1248 1270 1323 1364 1395 1227 1204 1180 1159 1143 1136 1133 1131 1142 1153 1172 1192 1223 1258 1297 1334 1368 1211 1174 1158 1141 1121 1117 1112 1114 1114 1135 1149 1170 1200 1232 1270 1314 1350 1186 1165 1134 1116 1101 1098 1094 1092 1101 1111 1128 1153 1181 1217 1250 1293 1331 1163 1141 1120 1100 1094 1073 1079 1078 1086 1092 1110 1133 1161 1195 1235 1274 1303 1153 1127 1100 1090 1072 1066 1058 1062 1068 1080 1096 1118 1147 1175 1215 1253 1298 1135 1117 1092 1070 1062 1050 1053 1046 1056 1064 1083 1106 1132 1162 1203 1241 1280 1131 1106 1077 1062 1049 1044 1041 1041 1045 1061 1076 1097 1126 1154 1189 1241 1261 1124 1094 1079 1057 1046 1042 1030 1034 1042 1055 1066 1089 1111 1152 1188 1220 1264 1115 1097 1070 1053 1038 1036 1033 1035 1038 1047 1065 1090 1112 1141 1181 1226 1269 1114 1095 1070 1053 1045 1032 1024 1029 1039 1048 1064 1085 1110 1144 1186 1218 1259 1121 1095 1073 1052 1043 1034 1035 1029 1037 1051 1067 1083 1114 1141 1183 1223 1261 1123 1096 1080 1059 1044 1042 1033 1042 1043 1056 1070 1090 1116 1153 1186 1225 1270 1136 1108 1081 1066 1053 1047 1042 1044 1048 1059 1074 1094 1126 1156 1192 1238 1271 1141 1113 1096 1076 1061 1050 1051 1051 1060 1072 1085 1109 1131 1169 1212 1246 1282 1149 1129 1103 1083 1074 1066 1063 1066 1067 1079 1097 1119 1149 1177 1217 1256 1302 1168 1134 1122 1098 1084 1080 1068 1079 1080 1090 1110 1131 1151 1190 1232 1268 1313] + + + [1237 1219 1196 1170 1151 1142 1147 1135 1135 1141 1157 1171 1195 1222 1250 1299 1311 1223 1195 1175 1153 1139 1121 1120 1110 1114 1120 1135 1150 1179 1196 1235 1266 1300 1202 1179 1154 1137 1117 1107 1100 1096 1093 1103 1116 1135 1155 1184 1212 1250 1278 1183 1165 1137 1116 1107 1086 1083 1076 1078 1084 1097 1113 1138 1164 1200 1227 1265 1173 1149 1128 1103 1091 1070 1065 1066 1065 1070 1084 1102 1120 1151 1175 1216 1249 1167 1134 1108 1092 1070 1065 1050 1049 1053 1059 1068 1083 1111 1133 1168 1205 1237 1144 1121 1098 1080 1067 1049 1047 1039 1046 1049 1058 1077 1097 1128 1156 1191 1226 1144 1114 1096 1076 1059 1046 1038 1034 1030 1040 1055 1071 1086 1119 1146 1182 1215 1136 1112 1091 1072 1053 1044 1033 1033 1033 1040 1047 1068 1086 1112 1144 1181 1215 1137 1110 1089 1071 1053 1043 1033 1024 1031 1036 1046 1063 1088 1111 1141 1172 1212 1136 1113 1089 1069 1054 1040 1034 1033 1031 1041 1051 1064 1083 1114 1145 1178 1214 1142 1115 1093 1074 1058 1043 1039 1035 1035 1034 1052 1069 1091 1118 1147 1183 1208 1142 1116 1095 1078 1061 1052 1041 1036 1040 1048 1056 1077 1095 1124 1153 1185 1222 1150 1132 1105 1087 1072 1053 1054 1045 1050 1053 1067 1083 1104 1132 1165 1196 1224 1157 1132 1114 1095 1078 1069 1063 1057 1056 1064 1078 1091 1118 1137 1173 1206 1237 1170 1145 1126 1107 1091 1075 1068 1070 1067 1076 1087 1110 1126 1155 1183 1220 1253 1176 1156 1134 1122 1100 1095 1084 1082 1084 1090 1101 1115 1140 1164 1204 1234 1263] + + + [1217 1208 1175 1156 1145 1140 1131 1129 1130 1136 1157 1171 1199 1219 1258 1292 1312 1200 1179 1159 1145 1125 1116 1113 1106 1113 1123 1131 1155 1175 1206 1236 1269 1302 1185 1160 1137 1125 1106 1098 1094 1086 1089 1103 1117 1134 1159 1180 1220 1249 1274 1163 1149 1122 1104 1088 1081 1076 1073 1073 1085 1096 1116 1136 1169 1201 1235 1270 1150 1132 1108 1092 1077 1066 1059 1060 1063 1070 1080 1100 1123 1151 1183 1219 1252 1134 1120 1096 1076 1064 1053 1044 1044 1051 1053 1066 1088 1108 1139 1171 1201 1244 1123 1111 1086 1071 1055 1047 1040 1036 1038 1044 1059 1079 1098 1127 1159 1193 1228 1124 1101 1077 1064 1047 1040 1034 1031 1032 1043 1051 1070 1094 1122 1150 1189 1216 1117 1098 1077 1060 1043 1033 1029 1027 1030 1036 1051 1069 1090 1117 1149 1183 1219 1122 1096 1073 1060 1042 1036 1026 1024 1030 1040 1050 1066 1088 1118 1143 1182 1220 1116 1098 1071 1059 1045 1035 1029 1026 1032 1034 1051 1066 1092 1114 1148 1183 1218 1123 1100 1079 1062 1049 1039 1033 1034 1031 1042 1054 1069 1095 1121 1152 1186 1220 1127 1106 1085 1065 1056 1048 1040 1036 1042 1051 1063 1080 1101 1132 1162 1196 1225 1134 1116 1095 1079 1059 1051 1052 1047 1050 1054 1070 1090 1114 1137 1169 1202 1238 1145 1129 1101 1084 1076 1062 1059 1058 1059 1071 1084 1101 1125 1153 1185 1216 1248 1153 1137 1117 1100 1082 1081 1068 1072 1075 1081 1094 1114 1138 1166 1196 1227 1262 1166 1145 1130 1111 1102 1087 1089 1080 1089 1101 1107 1129 1158 1171 1213 1244 1273] + + + [1191 1181 1159 1136 1129 1118 1115 1108 1114 1124 1135 1140 1177 1195 1223 1242 1284 1175 1157 1141 1124 1111 1105 1094 1095 1104 1101 1115 1134 1151 1173 1212 1239 1255 1168 1142 1125 1103 1094 1084 1077 1082 1075 1090 1097 1115 1134 1162 1189 1218 1248 1145 1124 1108 1094 1083 1066 1069 1067 1066 1077 1084 1100 1120 1143 1176 1204 1227 1134 1118 1094 1079 1070 1060 1054 1054 1055 1062 1075 1089 1109 1132 1158 1195 1221 1121 1107 1080 1074 1059 1045 1042 1043 1043 1057 1060 1076 1095 1122 1152 1180 1201 1113 1098 1078 1060 1048 1043 1037 1034 1038 1039 1056 1072 1093 1111 1143 1171 1210 1109 1089 1071 1057 1045 1034 1032 1029 1031 1037 1050 1062 1081 1106 1136 1161 1200 1106 1090 1070 1052 1045 1032 1024 1027 1030 1033 1045 1062 1079 1104 1125 1162 1183 1104 1091 1065 1052 1042 1031 1028 1024 1026 1036 1042 1057 1075 1100 1131 1157 1188 1103 1088 1069 1053 1042 1027 1030 1026 1028 1033 1046 1059 1077 1100 1129 1162 1191 1106 1093 1070 1058 1042 1034 1031 1027 1032 1038 1049 1068 1084 1103 1136 1171 1194 1121 1090 1075 1063 1050 1041 1031 1033 1033 1043 1058 1064 1090 1114 1138 1168 1193 1112 1101 1087 1068 1054 1048 1044 1041 1048 1049 1057 1077 1094 1116 1149 1176 1206 1131 1110 1091 1076 1063 1053 1047 1056 1048 1060 1069 1083 1105 1129 1159 1186 1214 1138 1123 1105 1086 1073 1061 1063 1058 1060 1067 1080 1091 1115 1141 1169 1198 1220 1147 1135 1111 1101 1083 1081 1073 1068 1073 1083 1088 1109 1134 1148 1176 1211 1239] + + + + + 640x480_F11_100 + + + 640x480 + + + F11 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [35 38 39 41 42 41 42 42] + + + [27 28 31 32 30 30 32 30] + + + [ 100] + + + [1234 1210 1188 1170 1156 1139 1136 1138 1145 1154 1168 1188 1222 1245 1288 1317 1357 1215 1193 1165 1144 1135 1120 1120 1125 1124 1135 1151 1171 1195 1226 1264 1297 1336 1194 1166 1149 1129 1111 1103 1100 1099 1103 1109 1128 1151 1177 1207 1243 1277 1313 1170 1153 1126 1107 1092 1082 1082 1077 1088 1093 1106 1127 1155 1187 1221 1261 1294 1152 1134 1108 1095 1078 1067 1062 1062 1067 1080 1094 1113 1138 1167 1203 1242 1274 1144 1115 1094 1080 1065 1058 1054 1050 1058 1064 1082 1099 1130 1158 1192 1228 1273 1134 1109 1087 1070 1057 1044 1042 1047 1045 1055 1069 1087 1118 1147 1179 1217 1249 1122 1100 1078 1063 1044 1041 1037 1031 1042 1049 1064 1080 1112 1137 1171 1208 1242 1112 1095 1076 1057 1043 1037 1030 1033 1039 1049 1058 1077 1100 1138 1163 1200 1241 1110 1095 1071 1052 1042 1027 1024 1031 1032 1043 1059 1078 1098 1129 1159 1196 1231 1118 1087 1069 1052 1040 1031 1029 1026 1033 1041 1056 1074 1108 1125 1167 1198 1236 1116 1094 1073 1056 1040 1034 1030 1032 1035 1042 1063 1078 1098 1136 1165 1198 1236 1127 1092 1075 1060 1045 1036 1038 1033 1041 1054 1062 1081 1109 1138 1169 1208 1250 1126 1102 1086 1066 1055 1045 1042 1041 1051 1056 1072 1091 1116 1148 1177 1212 1248 1137 1112 1095 1076 1062 1056 1047 1054 1054 1070 1083 1103 1131 1156 1192 1227 1262 1143 1126 1103 1090 1072 1065 1063 1060 1069 1077 1094 1111 1137 1167 1201 1241 1278 1158 1141 1113 1096 1084 1081 1070 1073 1081 1089 1106 1129 1151 1182 1217 1243 1283] + + + [1221 1207 1183 1171 1153 1135 1135 1127 1127 1142 1149 1162 1188 1208 1238 1279 1302 1211 1190 1163 1148 1128 1119 1113 1101 1110 1113 1126 1148 1168 1189 1219 1254 1271 1184 1172 1151 1126 1115 1099 1093 1092 1088 1100 1107 1125 1152 1172 1203 1233 1268 1171 1152 1125 1109 1095 1086 1078 1072 1071 1086 1091 1108 1124 1158 1181 1213 1243 1153 1137 1116 1095 1080 1069 1058 1056 1061 1065 1073 1093 1113 1139 1169 1196 1237 1144 1123 1102 1085 1067 1060 1048 1045 1051 1050 1065 1078 1099 1124 1155 1186 1209 1134 1112 1096 1075 1062 1050 1040 1035 1040 1045 1050 1069 1091 1118 1147 1175 1207 1131 1109 1089 1070 1055 1042 1036 1028 1029 1036 1051 1062 1083 1109 1137 1167 1197 1123 1108 1085 1067 1050 1038 1031 1028 1032 1038 1041 1064 1082 1107 1127 1167 1191 1129 1101 1082 1069 1048 1035 1032 1024 1028 1033 1046 1059 1081 1106 1126 1157 1191 1124 1107 1084 1069 1054 1041 1031 1029 1028 1036 1042 1063 1080 1106 1133 1159 1192 1130 1106 1087 1069 1057 1043 1037 1031 1029 1039 1050 1066 1087 1111 1138 1164 1200 1138 1110 1096 1074 1059 1051 1037 1039 1037 1046 1055 1074 1091 1117 1141 1175 1200 1137 1120 1100 1082 1073 1055 1054 1045 1051 1051 1067 1080 1103 1126 1151 1185 1214 1153 1131 1107 1093 1082 1066 1061 1060 1058 1068 1075 1092 1114 1134 1163 1193 1224 1156 1141 1122 1107 1090 1079 1074 1068 1072 1078 1086 1107 1126 1152 1178 1205 1241 1174 1148 1135 1117 1102 1094 1090 1078 1085 1086 1109 1105 1140 1161 1188 1218 1251] + + + [1216 1198 1180 1160 1144 1131 1126 1123 1125 1133 1146 1166 1195 1215 1249 1286 1317 1202 1173 1155 1136 1123 1113 1107 1109 1106 1119 1130 1147 1173 1204 1232 1260 1296 1182 1160 1137 1124 1106 1097 1090 1089 1082 1103 1112 1126 1151 1178 1209 1244 1278 1161 1144 1120 1106 1088 1077 1077 1068 1067 1079 1091 1111 1128 1163 1189 1230 1257 1146 1131 1107 1086 1076 1062 1054 1057 1059 1062 1077 1093 1119 1145 1180 1206 1248 1135 1117 1094 1079 1064 1050 1045 1042 1045 1049 1064 1080 1104 1132 1161 1197 1231 1133 1107 1087 1070 1053 1046 1037 1037 1039 1044 1056 1069 1100 1124 1154 1184 1223 1128 1101 1078 1065 1048 1037 1034 1027 1028 1038 1049 1067 1092 1120 1140 1186 1206 1115 1102 1078 1059 1046 1036 1027 1024 1028 1034 1049 1066 1084 1111 1145 1175 1211 1117 1093 1081 1064 1047 1033 1028 1024 1030 1034 1049 1063 1086 1115 1138 1171 1206 1117 1104 1078 1062 1043 1037 1029 1029 1026 1038 1049 1068 1088 1113 1146 1180 1215 1121 1103 1078 1065 1056 1040 1038 1031 1032 1038 1055 1071 1090 1123 1144 1184 1214 1126 1110 1088 1074 1054 1046 1042 1038 1041 1050 1060 1077 1102 1128 1158 1187 1221 1137 1118 1094 1078 1069 1054 1053 1050 1051 1057 1069 1088 1109 1139 1159 1200 1233 1145 1126 1108 1089 1077 1066 1060 1057 1059 1068 1083 1099 1125 1147 1180 1210 1245 1155 1134 1119 1102 1087 1080 1076 1068 1075 1083 1095 1109 1137 1158 1194 1230 1253 1167 1152 1126 1115 1099 1088 1083 1090 1086 1094 1107 1122 1145 1176 1203 1231 1277] + + + [1196 1187 1165 1148 1134 1119 1120 1125 1127 1138 1145 1166 1185 1209 1240 1276 1295 1180 1167 1151 1130 1112 1122 1111 1108 1109 1120 1131 1142 1175 1194 1221 1245 1282 1167 1146 1128 1117 1094 1096 1089 1087 1095 1106 1111 1131 1151 1175 1206 1230 1271 1156 1129 1110 1091 1087 1078 1072 1076 1070 1091 1094 1117 1137 1160 1187 1220 1241 1127 1122 1100 1084 1070 1066 1057 1063 1065 1072 1084 1096 1121 1144 1174 1201 1236 1127 1102 1084 1076 1062 1058 1049 1047 1051 1059 1075 1088 1108 1131 1165 1191 1219 1112 1103 1080 1066 1050 1050 1040 1039 1047 1055 1061 1084 1101 1128 1152 1179 1214 1117 1086 1070 1059 1046 1038 1038 1038 1037 1048 1062 1073 1096 1117 1147 1167 1221 1105 1089 1066 1056 1045 1037 1030 1029 1039 1042 1055 1069 1092 1117 1141 1171 1201 1102 1087 1073 1049 1047 1031 1033 1024 1032 1039 1057 1067 1089 1113 1142 1175 1202 1097 1088 1062 1052 1042 1037 1033 1030 1031 1042 1053 1067 1091 1115 1138 1173 1203 1111 1083 1064 1062 1042 1036 1029 1031 1034 1042 1052 1075 1098 1114 1144 1172 1205 1105 1091 1071 1061 1044 1040 1038 1037 1040 1046 1061 1069 1094 1124 1148 1179 1207 1117 1089 1082 1062 1052 1046 1041 1041 1043 1052 1061 1084 1106 1123 1158 1178 1219 1122 1107 1086 1078 1061 1052 1051 1052 1051 1061 1074 1084 1118 1140 1161 1192 1231 1131 1120 1100 1078 1073 1061 1058 1061 1058 1068 1085 1097 1116 1147 1176 1208 1235 1139 1130 1116 1087 1079 1066 1073 1059 1074 1072 1091 1115 1137 1152 1186 1207 1247] + + + + + 640x480_F2_100 + + + 640x480 + + + F2 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [35 38 37 40 44 40 43 43] + + + [29 28 29 29 32 30 32 31] + + + [ 100] + + + [1238 1214 1199 1171 1160 1148 1139 1146 1144 1160 1172 1188 1223 1254 1287 1320 1364 1214 1192 1163 1146 1134 1124 1124 1113 1123 1136 1152 1169 1201 1228 1258 1299 1338 1197 1167 1147 1134 1109 1105 1099 1096 1104 1117 1130 1155 1176 1211 1244 1276 1313 1173 1150 1124 1115 1098 1085 1087 1077 1089 1098 1111 1131 1158 1190 1225 1257 1297 1160 1136 1116 1092 1082 1074 1062 1068 1072 1083 1097 1116 1146 1179 1202 1239 1284 1150 1118 1097 1078 1066 1055 1055 1049 1056 1062 1085 1101 1128 1160 1191 1227 1263 1130 1112 1081 1073 1058 1047 1045 1042 1048 1053 1072 1093 1117 1150 1181 1215 1252 1128 1096 1079 1064 1050 1040 1037 1033 1042 1049 1071 1080 1110 1140 1162 1204 1244 1115 1094 1073 1055 1043 1035 1031 1031 1033 1048 1059 1082 1101 1136 1170 1196 1239 1111 1093 1072 1053 1039 1033 1027 1024 1035 1047 1058 1073 1103 1129 1156 1196 1238 1118 1093 1067 1054 1043 1032 1028 1026 1032 1038 1060 1077 1100 1129 1165 1205 1226 1122 1090 1069 1056 1041 1035 1031 1029 1030 1046 1061 1071 1105 1134 1162 1198 1244 1118 1096 1079 1056 1046 1039 1035 1034 1038 1046 1063 1083 1106 1135 1171 1204 1242 1124 1104 1083 1066 1048 1048 1041 1045 1047 1059 1073 1089 1116 1145 1171 1219 1247 1139 1113 1088 1077 1064 1053 1053 1050 1052 1064 1080 1097 1129 1154 1184 1222 1259 1144 1125 1106 1086 1070 1063 1060 1055 1062 1076 1091 1107 1141 1169 1197 1234 1276 1159 1140 1115 1100 1085 1075 1074 1072 1074 1089 1105 1131 1144 1176 1214 1252 1291] + + + [1239 1213 1191 1168 1148 1140 1142 1126 1128 1140 1150 1166 1198 1217 1254 1286 1310 1212 1194 1165 1154 1134 1120 1107 1108 1108 1120 1130 1148 1174 1195 1228 1254 1291 1199 1172 1153 1127 1113 1102 1099 1089 1092 1101 1114 1127 1150 1177 1203 1240 1271 1174 1159 1130 1113 1101 1085 1078 1071 1073 1079 1095 1111 1131 1164 1188 1220 1254 1163 1140 1117 1100 1079 1068 1058 1060 1060 1067 1078 1098 1117 1146 1172 1205 1239 1149 1125 1106 1089 1071 1060 1047 1047 1044 1053 1064 1079 1105 1133 1158 1192 1223 1136 1116 1098 1080 1064 1048 1043 1035 1041 1042 1056 1071 1097 1123 1147 1181 1216 1135 1110 1091 1072 1059 1041 1037 1025 1033 1037 1052 1064 1090 1113 1140 1173 1199 1134 1109 1085 1070 1051 1043 1028 1027 1031 1035 1046 1064 1084 1105 1139 1169 1202 1122 1108 1082 1067 1049 1038 1033 1024 1027 1037 1046 1058 1082 1110 1127 1163 1202 1125 1110 1082 1068 1052 1036 1034 1026 1030 1032 1047 1060 1082 1105 1138 1165 1202 1132 1110 1085 1070 1058 1042 1039 1033 1028 1039 1050 1065 1087 1113 1136 1168 1203 1126 1110 1091 1074 1061 1050 1040 1036 1040 1044 1056 1070 1096 1119 1143 1181 1207 1147 1118 1098 1084 1070 1053 1049 1044 1045 1053 1063 1080 1104 1127 1154 1184 1220 1148 1127 1111 1089 1077 1068 1061 1052 1054 1062 1074 1090 1114 1137 1164 1201 1233 1158 1142 1124 1103 1091 1073 1069 1068 1072 1075 1085 1106 1123 1152 1182 1209 1241 1184 1146 1134 1113 1103 1088 1087 1078 1079 1089 1103 1115 1142 1165 1192 1223 1260] + + + [1235 1205 1182 1158 1144 1137 1131 1129 1129 1140 1155 1174 1206 1225 1256 1290 1322 1201 1185 1161 1144 1131 1114 1112 1102 1112 1120 1133 1150 1175 1210 1233 1267 1304 1193 1162 1141 1128 1105 1102 1091 1085 1094 1102 1112 1132 1156 1181 1218 1251 1282 1163 1152 1123 1109 1095 1079 1078 1072 1068 1083 1097 1114 1145 1168 1197 1232 1265 1158 1131 1111 1095 1076 1066 1061 1057 1062 1069 1082 1098 1122 1156 1182 1214 1254 1137 1122 1097 1082 1067 1053 1045 1043 1042 1052 1068 1087 1111 1137 1170 1203 1238 1137 1108 1088 1073 1058 1048 1040 1038 1042 1047 1060 1078 1105 1131 1158 1194 1226 1128 1107 1085 1065 1053 1042 1037 1032 1029 1043 1052 1067 1094 1123 1146 1182 1216 1119 1101 1081 1064 1051 1035 1030 1024 1032 1036 1051 1070 1089 1117 1146 1184 1207 1125 1105 1080 1064 1047 1037 1027 1027 1029 1039 1046 1066 1091 1119 1144 1174 1214 1121 1102 1077 1063 1051 1039 1029 1027 1028 1038 1051 1068 1094 1117 1144 1184 1214 1128 1105 1084 1069 1054 1037 1036 1038 1032 1042 1054 1073 1093 1127 1155 1185 1219 1131 1111 1089 1073 1057 1048 1042 1037 1039 1050 1061 1078 1104 1130 1156 1195 1225 1140 1116 1098 1080 1065 1054 1047 1050 1051 1056 1074 1088 1111 1140 1167 1202 1233 1144 1124 1107 1089 1079 1064 1065 1054 1060 1070 1085 1097 1126 1146 1177 1218 1248 1159 1137 1119 1103 1088 1077 1074 1072 1074 1079 1095 1111 1140 1165 1201 1231 1260 1165 1151 1133 1118 1102 1090 1086 1077 1088 1095 1113 1123 1152 1176 1209 1238 1280] + + + [1206 1181 1163 1143 1125 1124 1115 1125 1120 1143 1149 1165 1189 1212 1239 1278 1296 1178 1165 1143 1134 1114 1110 1104 1102 1107 1115 1131 1142 1172 1190 1221 1254 1270 1168 1149 1129 1116 1094 1094 1090 1084 1094 1104 1118 1128 1153 1185 1208 1231 1275 1143 1135 1103 1100 1085 1076 1072 1078 1072 1089 1097 1121 1136 1164 1187 1228 1231 1135 1120 1098 1082 1075 1063 1062 1061 1069 1080 1094 1101 1130 1145 1173 1205 1244 1124 1103 1089 1071 1060 1053 1048 1047 1056 1063 1071 1088 1114 1140 1164 1191 1226 1110 1096 1072 1069 1052 1046 1048 1041 1049 1045 1070 1082 1103 1129 1159 1184 1214 1105 1081 1071 1057 1047 1033 1035 1037 1040 1050 1061 1073 1103 1119 1143 1174 1204 1106 1084 1068 1052 1049 1036 1030 1027 1040 1044 1061 1073 1092 1125 1138 1174 1195 1104 1084 1064 1053 1046 1036 1032 1024 1029 1040 1050 1069 1087 1117 1140 1176 1205 1103 1087 1069 1052 1043 1033 1035 1028 1035 1040 1051 1068 1090 1116 1145 1166 1199 1105 1086 1068 1051 1046 1035 1030 1039 1031 1044 1054 1076 1092 1125 1136 1183 1202 1114 1087 1079 1058 1042 1035 1034 1035 1037 1046 1062 1073 1097 1124 1145 1179 1206 1114 1100 1074 1066 1050 1047 1037 1045 1046 1055 1067 1078 1099 1132 1154 1187 1216 1127 1096 1086 1076 1057 1051 1050 1049 1047 1059 1073 1091 1110 1131 1164 1196 1220 1135 1118 1097 1084 1071 1054 1052 1052 1066 1071 1084 1091 1127 1148 1170 1201 1235 1153 1127 1116 1086 1080 1076 1061 1078 1070 1087 1095 1108 1124 1161 1187 1226 1241] + + + + + + + A_100 + + + [ 100] + + + [1.99853 -0.905653 -0.0821708 -0.460996 1.77912 -0.258076 -0.151399 -1.53815 2.713] + + + [-29.8061 -52.306 -95.824] + + + [1.11716 1 1 2.3808] + + + + + D50_100 + + + [ 100] + + + [2.097 -1.12811 0.0410741 -0.327961 1.77429 -0.380266 -0.0366512 -0.804392 1.8682] + + + [-40.7723 -43.9103 -61.7554] + + + [1.64416 1 1 1.6405] + + + + + D65_100 + + + [ 100] + + + [2.14135 -1.15688 0.0270315 -0.332497 1.83306 -0.43858 -0.0348043 -0.657467 1.7185] + + + [-47.0355 -42.0548 -56.246] + + + [1.92224 1 1 1.428] + + + + + F11_100 + + + [ 100] + + + [1.91878 -0.849702 -0.0555984 -0.407686 1.7518 -0.292535 -0.10781 -0.692012 1.8706] + + + [-55.1752 -65.3873 -90.5846] + + + [1.49049 1 1 1.9841] + + + + + F2_100 + + + [ 100] + + + [2.56944 -1.54023 0.0045255 -0.421136 1.74591 -0.223588 -0.101719 -0.718139 1.8415] + + + [-55.5346 -60.5148 -88.6402] + + + [1.55891 1 1 2.0968] + + + + + + [ -1] + + + + + [ 80] + + + [ 20] + + + [ 0.7] + + + [ 0.7] + + + [ 0.7] + + + [ 0.9] + + + + + 640x480_FPS_15 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 640x480_FPS_10 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 640x480_FPS_05 + + + + + fast + + + [ 1] + + + [ 1] + + + + + normal + + + [ 2] + + + [ 0.9] + + + + + slow + + + [ 4] + + + [ 0.9] + + + + + + + [ 8] + + + + + + 6400x480 + + + 640x480 + + + [256 256 256 256] + + + + + + + linear + + + [256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4096] + + + [0 256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4095] + + + + + + [ -1] + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + + + 640x480 + + + 640x480 + + + [ 5] + + + [ 22] + + + [ 5] + + + [ 22] + + + [ 0] + + + [ 0] + + + [-0.125 -0.4375 0.6875] + + + [1.0625 -2.875 1.6875] + + + + + + + 640x480 + + + 640x480 + + + [ 1] + + + [1023 841 652 551 486 405 354 319 292 254 228 209 181 162 148 137 129] + + + [ 4] + + + [ 4] + + + [ 0.15] + + + [ 0] + + + [1 1 1 1] + + + + + + + 640x480 + + + 640x480 + + + + + ISP_DPCC_MODE + + + 0x0005 + + + + + ISP_DPCC_OUT_MODE + + + 0x0003 + + + + + ISP_DPCC_SET_USE + + + 0x000F + + + + + ISP_DPCC_METHODS_SET1 + + + 0x1D1D + + + + + ISP_DPCC_METHODS_SET2 + + + 0x0707 + + + + + ISP_DPCC_METHODS_SET3 + + + 0x1F1F + + + + + ISP_DPCC_LINE_THRESH_1 + + + 0x0808 + + + + + ISP_DPCC_LINE_MAD_FAC_1 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_1 + + + 0x0404 + + + + + ISP_DPCC_RND_THRESH_1 + + + 0x0804 + + + + + ISP_DPCC_RG_FAC_1 + + + 0x0802 + + + + + ISP_DPCC_LINE_THRESH_2 + + + 0x100C + + + + + ISP_DPCC_LINE_MAD_FAC_2 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_2 + + + 0x0404 + + + + + ISP_DPCC_RND_THRESH_2 + + + 0x0808 + + + + + ISP_DPCC_RG_FAC_2 + + + 0x0808 + + + + + ISP_DPCC_LINE_THRESH_3 + + + 0x0000 + + + + + ISP_DPCC_LINE_MAD_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_RND_THRESH_3 + + + 0x0804 + + + + + ISP_DPCC_RG_FAC_3 + + + 0x0400 + + + + + ISP_DPCC_RO_LIMITS + + + 0x0FFF + + + + + ISP_DPCC_RND_OFFS + + + 0x0FFF + + + + + + + + + + on + + + +
diff --git a/drivers/GC5035/GC5035_mipi2lane_1280x720@30_gc.txt b/drivers/GC5035/GC5035_mipi2lane_1280x720@30_gc.txt new file mode 100644 index 0000000..5d7be41 --- /dev/null +++ b/drivers/GC5035/GC5035_mipi2lane_1280x720@30_gc.txt @@ -0,0 +1,163 @@ +0xfc 0x01 +0xf4 0x40 +0xf5 0xe4 +0xf6 0x14 +0xf8 0x49 +0xf9 0x12 +0xfa 0x01 +0xfc 0x81 +0xfe 0x00 +0x36 0x01 +0xd3 0x87 +0x36 0x00 +0x33 0x20 +0xfe 0x03 +0x01 0x87 +0xf7 0x11 +0xfc 0x8f +0xfc 0x8f +0xfc 0x8e +0xfe 0x00 +0xee 0x30 +0x87 0x18 +0xfe 0x01 +0x8c 0x90 +0xfe 0x00 +0x03 0x02 +0x04 0x58 +0x41 0x07 +0x42 0xcc +0x05 0x02 +0x06 0xda +0x9d 0x0c +0x09 0x00 +0x0a 0x04 +0x0b 0x00 +0x0c 0x03 +0x0d 0x07 +0x0e 0xa8 +0x0f 0x0a +0x10 0x30 +0x11 0x02 +0x17 0x80 +0x19 0x05 +0xfe 0x02 +0x30 0x03 +0x31 0x03 +0xfe 0x00 +0xd9 0xc0 +0x1b 0x20 +0x21 0x60 +0x28 0x22 +0x29 0x30 +0x44 0x18 +0x4b 0x10 +0x4e 0x20 +0x50 0x11 +0x52 0x33 +0x53 0x44 +0x55 0x10 +0x5b 0x11 +0xc5 0x02 +0x8c 0x20 +0xfe 0x02 +0x33 0x05 +0x32 0x38 +0xfe 0x00 +0x91 0x15 +0x92 0x3a +0x93 0x20 +0x95 0x45 +0x96 0x35 +0xd5 0xf0 +0x97 0x20 +0x16 0x0c +0x1a 0x1a +0x1f 0x19 +0x20 0x10 +0x46 0x83 +0x4a 0x04 +0x54 0x02 +0x62 0x00 +0x72 0x8f +0x73 0x89 +0x7a 0x05 +0x7d 0xcc +0x90 0x00 +0xce 0x18 +0xd0 0xb3 +0xd2 0x40 +0xe6 0xe0 +0xfe 0x02 +0x12 0x01 +0x13 0x01 +0x14 0x02 +0x15 0x00 +0x22 0x7c +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xfe 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +/*GAIN*/ +0xfe 0x00 +0xb0 0x6e +0xb1 0x01 +0xb2 0x00 +0xb3 0x00 +0xb4 0x00 +0xb6 0x00 +/*ISP*/ +0xfe 0x01 +0x53 0x00 +0x89 0x03 +0x60 0x40 +/*BLK*/ +0xfe 0x01 +0x42 0x21 +0x49 0x00 +0x4a 0x01 +0x4b 0xf8 +0x55 0x00 +0xfe 0x01 +0x41 0x28 +0x4c 0x00 +0x4d 0x00 +0x4e 0x06 +0x44 0x02 +0x48 0x02 +0xfe 0x01 +0x91 0x00 +0x92 0x82 +0x93 0x00 +0x94 0x0b +0x95 0x02 +0x96 0xd0 +0x97 0x05 +0x98 0x00 +0x99 0x00 +0xfe 0x03 +0x02 0x58 +0x03 0xb7 +0x15 0x14 +0x18 0x0f +0x21 0x22 +0x22 0x03 +0x23 0x48 +0x24 0x12 +0x25 0x28 +0x26 0x06 +0x29 0x03 +0x2a 0x58 +0x2b 0x06 +0xfe 0x01 +0x8c 0x10 +0xfe 0x00 +0x3e 0x91 \ No newline at end of file diff --git a/drivers/GC5035/GC5035_mipi2lane_1280x720@30_mayi.txt b/drivers/GC5035/GC5035_mipi2lane_1280x720@30_mayi.txt new file mode 100644 index 0000000..1c50334 --- /dev/null +++ b/drivers/GC5035/GC5035_mipi2lane_1280x720@30_mayi.txt @@ -0,0 +1,257 @@ +0xfc 0x01 +0xf4 0x40 +0xf5 0xe9 +0xf6 0x14 +0xf8 0x49 +0xf9 0x82 +0xfa 0x00 +0xfc 0x81 +0xfe 0x00 +0x36 0x01 +0xd3 0x87 +0x36 0x00 +0x33 0x00 +0xfe 0x03 +0x01 0xe7 +0xf7 0x01 +0xfc 0x8f +0xfc 0x8f +0xfc 0x8e +0xfe 0x00 +0xee 0x30 +0x87 0x18 +0xfe 0x01 +0x8c 0x90 +0xfe 0x00 +0xfe 0x00 +0x05 0x02 +0x06 0xda +0x9d 0x0c +0x09 0x00 +0x0a 0x04 +0x0b 0x00 +0x0c 0x03 +0x0d 0x07 +0x0e 0xa8 +0x0f 0x0a +0x10 0x30 +0x11 0x02 +0x17 0x80 +0x19 0x05 +0xfe 0x02 +0x30 0x03 +0x31 0x03 +0xfe 0x00 +0xd9 0xc0 +0x1b 0x20 +0x21 0x48 +0x28 0x22 +0x29 0x58 +0x44 0x20 +0x4b 0x10 +0x4e 0x1a +0x50 0x11 +0x52 0x33 +0x53 0x44 +0x55 0x10 +0x5b 0x11 +0xc5 0x02 +0x8c 0x1a +0xfe 0x02 +0x33 0x05 +0x32 0x38 +0xfe 0x00 +0x91 0x80 +0x92 0x28 +0x93 0x20 +0x95 0xa0 +0x96 0xe0 +0xd5 0xfc +0x97 0x28 +0x16 0x0c +0x1a 0x1a +0x1f 0x11 +0x20 0x10 +0x46 0x83 +0x4a 0x04 +0x54 0x02 +0x62 0x00 +0x72 0x8f +0x73 0x89 +0x7a 0x05 +0x7d 0xcc +0x90 0x00 +0xce 0x18 +0xd0 0xb2 +0xd2 0x40 +0xe6 0xe0 +0xfe 0x02 +0x12 0x01 +0x13 0x01 +0x14 0x01 +0x15 0x02 +0x22 0x7c +0x91 0x00 +0x92 0x00 +0x93 0x00 +0x94 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xfe 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xb0 0x6e +0xb1 0x01 +0xb2 0x00 +0xb3 0x00 +0xb4 0x00 +0xb6 0x00 +0xfe 0x01 +0x53 0x00 +0x89 0x03 +0x60 0x40 +0xfe 0x01 +0x42 0x21 +0x49 0x03 +0x4a 0xff +0x4b 0xc0 +0x55 0x00 +0xfe 0x01 +0x41 0x28 +0x4c 0x00 +0x4d 0x00 +0x4e 0x3c +0x44 0x08 +0x48 0x02 +0xfe 0x01 +0x91 0x00 +0x92 0x08 +0x93 0x00 +0x94 0x07 +0x95 0x07 +0x96 0x98 +0x97 0x0a +0x98 0x20 +0x99 0x00 +0xfe 0x03 +0x02 0x57 +0x03 0xb7 +0x15 0x14 +0x18 0x0f +0x21 0x22 +0x22 0x06 +0x23 0x48 +0x24 0x12 +0x25 0x28 +0x26 0x08 +0x29 0x06 +0x2a 0x58 +0x2b 0x08 +0xfe 0x01 +0x8c 0x10 +0xfe 0x00 +0x3e 0x01 +0xfe 0x00 +0x3e 0x01 +0xfc 0x01 +0xf4 0x40 +0xf5 0xe4 +0xf6 0x14 +0xf8 0x49 +0xf9 0x12 +0xfa 0x01 +0xfc 0x81 +0xfe 0x00 +0x36 0x01 +0xd3 0x87 +0x36 0x00 +0x33 0x20 +0xfe 0x03 +0x01 0x87 +0xf7 0x11 +0xfc 0x8f +0xfc 0x8f +0xfc 0x8e +0xfe 0x00 +0xee 0x30 +0x87 0x18 +0xfe 0x01 +0x8c 0x90 +0xfe 0x00 +0xfe 0x00 +0x05 0x02 +0x06 0xda +0x9d 0x0c +0x09 0x00 +0x0a 0x04 +0x0b 0x00 +0x0c 0x03 +0x0d 0x07 +0x0e 0xa8 +0x0f 0x0a +0x10 0x30 +0x21 0x60 +0x29 0x30 +0x44 0x18 +0x4e 0x20 +0x8c 0x20 +0x91 0x15 +0x92 0x3a +0x93 0x20 +0x95 0x45 +0x96 0x35 +0xd5 0xf0 +0x97 0x20 +0x1f 0x19 +0xce 0x18 +0xd0 0xb3 +0xfe 0x02 +0x14 0x02 +0x15 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xfe 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x01 +0x49 0x00 +0x4a 0x01 +0x4b 0xf8 +0xfe 0x01 +0x4e 0x06 +0x44 0x02 +0xfe 0x01 +0x91 0x00 +0x92 0x0a +0x93 0x00 +0x94 0x0b +0x95 0x02 +0x96 0xd0 +0x97 0x05 +0x98 0x00 +0x99 0x00 +0xfe 0x03 +0x02 0x58 +0x22 0x03 +0x26 0x06 +0x29 0x03 +0x2b 0x06 +0xfe 0x01 +0x8c 0x10 +0xfe 0x00 +0x3e 0x91 \ No newline at end of file diff --git a/drivers/GC5035/GC5035_mipi2lane_1280x720@60_bitland.txt b/drivers/GC5035/GC5035_mipi2lane_1280x720@60_bitland.txt new file mode 100644 index 0000000..1c50334 --- /dev/null +++ b/drivers/GC5035/GC5035_mipi2lane_1280x720@60_bitland.txt @@ -0,0 +1,257 @@ +0xfc 0x01 +0xf4 0x40 +0xf5 0xe9 +0xf6 0x14 +0xf8 0x49 +0xf9 0x82 +0xfa 0x00 +0xfc 0x81 +0xfe 0x00 +0x36 0x01 +0xd3 0x87 +0x36 0x00 +0x33 0x00 +0xfe 0x03 +0x01 0xe7 +0xf7 0x01 +0xfc 0x8f +0xfc 0x8f +0xfc 0x8e +0xfe 0x00 +0xee 0x30 +0x87 0x18 +0xfe 0x01 +0x8c 0x90 +0xfe 0x00 +0xfe 0x00 +0x05 0x02 +0x06 0xda +0x9d 0x0c +0x09 0x00 +0x0a 0x04 +0x0b 0x00 +0x0c 0x03 +0x0d 0x07 +0x0e 0xa8 +0x0f 0x0a +0x10 0x30 +0x11 0x02 +0x17 0x80 +0x19 0x05 +0xfe 0x02 +0x30 0x03 +0x31 0x03 +0xfe 0x00 +0xd9 0xc0 +0x1b 0x20 +0x21 0x48 +0x28 0x22 +0x29 0x58 +0x44 0x20 +0x4b 0x10 +0x4e 0x1a +0x50 0x11 +0x52 0x33 +0x53 0x44 +0x55 0x10 +0x5b 0x11 +0xc5 0x02 +0x8c 0x1a +0xfe 0x02 +0x33 0x05 +0x32 0x38 +0xfe 0x00 +0x91 0x80 +0x92 0x28 +0x93 0x20 +0x95 0xa0 +0x96 0xe0 +0xd5 0xfc +0x97 0x28 +0x16 0x0c +0x1a 0x1a +0x1f 0x11 +0x20 0x10 +0x46 0x83 +0x4a 0x04 +0x54 0x02 +0x62 0x00 +0x72 0x8f +0x73 0x89 +0x7a 0x05 +0x7d 0xcc +0x90 0x00 +0xce 0x18 +0xd0 0xb2 +0xd2 0x40 +0xe6 0xe0 +0xfe 0x02 +0x12 0x01 +0x13 0x01 +0x14 0x01 +0x15 0x02 +0x22 0x7c +0x91 0x00 +0x92 0x00 +0x93 0x00 +0x94 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xfe 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xb0 0x6e +0xb1 0x01 +0xb2 0x00 +0xb3 0x00 +0xb4 0x00 +0xb6 0x00 +0xfe 0x01 +0x53 0x00 +0x89 0x03 +0x60 0x40 +0xfe 0x01 +0x42 0x21 +0x49 0x03 +0x4a 0xff +0x4b 0xc0 +0x55 0x00 +0xfe 0x01 +0x41 0x28 +0x4c 0x00 +0x4d 0x00 +0x4e 0x3c +0x44 0x08 +0x48 0x02 +0xfe 0x01 +0x91 0x00 +0x92 0x08 +0x93 0x00 +0x94 0x07 +0x95 0x07 +0x96 0x98 +0x97 0x0a +0x98 0x20 +0x99 0x00 +0xfe 0x03 +0x02 0x57 +0x03 0xb7 +0x15 0x14 +0x18 0x0f +0x21 0x22 +0x22 0x06 +0x23 0x48 +0x24 0x12 +0x25 0x28 +0x26 0x08 +0x29 0x06 +0x2a 0x58 +0x2b 0x08 +0xfe 0x01 +0x8c 0x10 +0xfe 0x00 +0x3e 0x01 +0xfe 0x00 +0x3e 0x01 +0xfc 0x01 +0xf4 0x40 +0xf5 0xe4 +0xf6 0x14 +0xf8 0x49 +0xf9 0x12 +0xfa 0x01 +0xfc 0x81 +0xfe 0x00 +0x36 0x01 +0xd3 0x87 +0x36 0x00 +0x33 0x20 +0xfe 0x03 +0x01 0x87 +0xf7 0x11 +0xfc 0x8f +0xfc 0x8f +0xfc 0x8e +0xfe 0x00 +0xee 0x30 +0x87 0x18 +0xfe 0x01 +0x8c 0x90 +0xfe 0x00 +0xfe 0x00 +0x05 0x02 +0x06 0xda +0x9d 0x0c +0x09 0x00 +0x0a 0x04 +0x0b 0x00 +0x0c 0x03 +0x0d 0x07 +0x0e 0xa8 +0x0f 0x0a +0x10 0x30 +0x21 0x60 +0x29 0x30 +0x44 0x18 +0x4e 0x20 +0x8c 0x20 +0x91 0x15 +0x92 0x3a +0x93 0x20 +0x95 0x45 +0x96 0x35 +0xd5 0xf0 +0x97 0x20 +0x1f 0x19 +0xce 0x18 +0xd0 0xb3 +0xfe 0x02 +0x14 0x02 +0x15 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xfe 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x01 +0x49 0x00 +0x4a 0x01 +0x4b 0xf8 +0xfe 0x01 +0x4e 0x06 +0x44 0x02 +0xfe 0x01 +0x91 0x00 +0x92 0x0a +0x93 0x00 +0x94 0x0b +0x95 0x02 +0x96 0xd0 +0x97 0x05 +0x98 0x00 +0x99 0x00 +0xfe 0x03 +0x02 0x58 +0x22 0x03 +0x26 0x06 +0x29 0x03 +0x2b 0x06 +0xfe 0x01 +0x8c 0x10 +0xfe 0x00 +0x3e 0x91 \ No newline at end of file diff --git a/drivers/GC5035/GC5035_mipi2lane_1280x720@60_mayi.txt b/drivers/GC5035/GC5035_mipi2lane_1280x720@60_mayi.txt new file mode 100644 index 0000000..668cad5 --- /dev/null +++ b/drivers/GC5035/GC5035_mipi2lane_1280x720@60_mayi.txt @@ -0,0 +1,262 @@ +0xfc 0x01 +0xf4 0x40 +0xf5 0xe9 +0xf6 0x14 +0xf8 0x49 +0xf9 0x82 +0xfa 0x00 +0xfc 0x81 +0xfe 0x00 +0x36 0x01 +0xd3 0x87 +0x36 0x00 +0x33 0x00 +0xfe 0x03 +0x01 0xe7 +0xf7 0x01 +0xfc 0x8f +0xfc 0x8f +0xfc 0x8e +0xfe 0x00 +0xee 0x30 +0x87 0x18 +0xfe 0x01 +0x8c 0x90 +0xfe 0x00 +0xfe 0x00 +0x05 0x02 +0x06 0xda +0x9d 0x0c +0x09 0x00 +0x0a 0x04 +0x0b 0x00 +0x0c 0x03 +0x0d 0x07 +0x0e 0xa8 +0x0f 0x0a +0x10 0x30 +0x11 0x02 +0x17 0x80 +0x19 0x05 +0xfe 0x02 +0x30 0x03 +0x31 0x03 +0xfe 0x00 +0xd9 0xc0 +0x1b 0x20 +0x21 0x48 +0x28 0x22 +0x29 0x58 +0x44 0x20 +0x4b 0x10 +0x4e 0x1a +0x50 0x11 +0x52 0x33 +0x53 0x44 +0x55 0x10 +0x5b 0x11 +0xc5 0x02 +0x8c 0x1a +0xfe 0x02 +0x33 0x05 +0x32 0x38 +0xfe 0x00 +0x91 0x80 +0x92 0x28 +0x93 0x20 +0x95 0xa0 +0x96 0xe0 +0xd5 0xfc +0x97 0x28 +0x16 0x0c +0x1a 0x1a +0x1f 0x11 +0x20 0x10 +0x46 0x83 +0x4a 0x04 +0x54 0x02 +0x62 0x00 +0x72 0x8f +0x73 0x89 +0x7a 0x05 +0x7d 0xcc +0x90 0x00 +0xce 0x18 +0xd0 0xb2 +0xd2 0x40 +0xe6 0xe0 +0xfe 0x02 +0x12 0x01 +0x13 0x01 +0x14 0x01 +0x15 0x02 +0x22 0x7c +0x91 0x00 +0x92 0x00 +0x93 0x00 +0x94 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xfe 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xb0 0x6e +0xb1 0x01 +0xb2 0x00 +0xb3 0x00 +0xb4 0x00 +0xb6 0x00 +0xfe 0x01 +0x53 0x00 +0x89 0x03 +0x60 0x40 +0xfe 0x01 +0x42 0x21 +0x49 0x03 +0x4a 0xff +0x4b 0xc0 +0x55 0x00 +0xfe 0x01 +0x41 0x28 +0x4c 0x00 +0x4d 0x00 +0x4e 0x3c +0x44 0x08 +0x48 0x02 +0xfe 0x01 +0x91 0x00 +0x92 0x08 +0x93 0x00 +0x94 0x07 +0x95 0x07 +0x96 0x98 +0x97 0x0a +0x98 0x20 +0x99 0x00 +0xfe 0x03 +0x02 0x57 +0x03 0xb7 +0x15 0x14 +0x18 0x0f +0x21 0x22 +0x22 0x06 +0x23 0x48 +0x24 0x12 +0x25 0x28 +0x26 0x08 +0x29 0x06 +0x2a 0x58 +0x2b 0x08 +0xfe 0x01 +0x8c 0x10 +0xfe 0x00 +0x3e 0x01 +0xfe 0x00 +0x3e 0x01 +0xfc 0x01 +0xf4 0x40 +0xf5 0xe9 +0xf6 0x14 +0xf8 0x49 +0xf9 0x82 +0xfa 0x00 +0xfc 0x81 +0xfe 0x00 +0x36 0x01 +0xd3 0x87 +0x36 0x00 +0x33 0x20 +0xfe 0x03 +0x01 0x87 +0xf7 0x11 +0xfc 0x8f +0xfc 0x8f +0xfc 0x8e +0xfe 0x00 +0xee 0x30 +0x87 0x18 +0xfe 0x01 +0x8c 0x90 +0xfe 0x00 +0xfe 0x00 +0x05 0x03 +0x06 0xb4 +0x9d 0x20 +0x09 0x00 +0x0a 0xf4 +0x0b 0x00 +0x0c 0x03 +0x0d 0x05 +0x0e 0xc8 +0x0f 0x0a +0x10 0x30 +0xd9 0xf8 +0x21 0xe0 +0x29 0x40 +0x44 0x30 +0x4e 0x20 +0x8c 0x20 +0x91 0x15 +0x92 0x3a +0x93 0x20 +0x95 0x45 +0x96 0x35 +0xd5 0xf0 +0x97 0x20 +0x1f 0x19 +0xce 0x18 +0xd0 0xb3 +0xfe 0x02 +0x14 0x02 +0x15 0x00 +0x91 0x00 +0x92 0xf0 +0x93 0x00 +0x94 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xfe 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x01 +0x49 0x00 +0x4a 0x01 +0x4b 0xf8 +0xfe 0x01 +0x4e 0x06 +0x44 0x02 +0xfe 0x01 +0x91 0x00 +0x92 0x0a +0x93 0x00 +0x94 0x0b +0x95 0x02 +0x96 0xd0 +0x97 0x05 +0x98 0x00 +0x99 0x00 +0xfe 0x03 +0x02 0x58 +0x22 0x03 +0x26 0x06 +0x29 0x03 +0x2b 0x06 +0xfe 0x01 +0x8c 0x10 +0xfe 0x00 +0x3e 0x91 \ No newline at end of file diff --git a/drivers/GC5035/GC5035_mipi2lane_1296x972@30_bitland.txt b/drivers/GC5035/GC5035_mipi2lane_1296x972@30_bitland.txt new file mode 100644 index 0000000..79b4dc1 --- /dev/null +++ b/drivers/GC5035/GC5035_mipi2lane_1296x972@30_bitland.txt @@ -0,0 +1,255 @@ +0xfc 0x01 +0xf4 0x40 +0xf5 0xe9 +0xf6 0x14 +0xf8 0x49 +0xf9 0x82 +0xfa 0x00 +0xfc 0x81 +0xfe 0x00 +0x36 0x01 +0xd3 0x87 +0x36 0x00 +0x33 0x00 +0xfe 0x03 +0x01 0xe7 +0xf7 0x01 +0xfc 0x8f +0xfc 0x8f +0xfc 0x8e +0xfe 0x00 +0xee 0x30 +0x87 0x18 +0xfe 0x01 +0x8c 0x90 +0xfe 0x00 +0xfe 0x00 +0x05 0x02 +0x06 0xda +0x9d 0x0c +0x09 0x00 +0x0a 0x04 +0x0b 0x00 +0x0c 0x03 +0x0d 0x07 +0x0e 0xa8 +0x0f 0x0a +0x10 0x30 +0x11 0x02 +0x17 0x80 +0x19 0x05 +0xfe 0x02 +0x30 0x03 +0x31 0x03 +0xfe 0x00 +0xd9 0xc0 +0x1b 0x20 +0x21 0x48 +0x28 0x22 +0x29 0x58 +0x44 0x20 +0x4b 0x10 +0x4e 0x1a +0x50 0x11 +0x52 0x33 +0x53 0x44 +0x55 0x10 +0x5b 0x11 +0xc5 0x02 +0x8c 0x1a +0xfe 0x02 +0x33 0x05 +0x32 0x38 +0xfe 0x00 +0x91 0x80 +0x92 0x28 +0x93 0x20 +0x95 0xa0 +0x96 0xe0 +0xd5 0xfc +0x97 0x28 +0x16 0x0c +0x1a 0x1a +0x1f 0x11 +0x20 0x10 +0x46 0x83 +0x4a 0x04 +0x54 0x02 +0x62 0x00 +0x72 0x8f +0x73 0x89 +0x7a 0x05 +0x7d 0xcc +0x90 0x00 +0xce 0x18 +0xd0 0xb2 +0xd2 0x40 +0xe6 0xe0 +0xfe 0x02 +0x12 0x01 +0x13 0x01 +0x14 0x01 +0x15 0x02 +0x22 0x7c +0x91 0x00 +0x92 0x00 +0x93 0x00 +0x94 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xfe 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xb0 0x6e +0xb1 0x01 +0xb2 0x00 +0xb3 0x00 +0xb4 0x00 +0xb6 0x00 +0xfe 0x01 +0x53 0x00 +0x89 0x03 +0x60 0x40 +0xfe 0x01 +0x42 0x21 +0x49 0x03 +0x4a 0xff +0x4b 0xc0 +0x55 0x00 +0xfe 0x01 +0x41 0x28 +0x4c 0x00 +0x4d 0x00 +0x4e 0x3c +0x44 0x08 +0x48 0x02 +0xfe 0x01 +0x91 0x00 +0x92 0x08 +0x93 0x00 +0x94 0x07 +0x95 0x07 +0x96 0x98 +0x97 0x0a +0x98 0x20 +0x99 0x00 +0xfe 0x03 +0x02 0x57 +0x03 0xb7 +0x15 0x14 +0x18 0x0f +0x21 0x22 +0x22 0x06 +0x23 0x48 +0x24 0x12 +0x25 0x28 +0x26 0x08 +0x29 0x06 +0x2a 0x58 +0x2b 0x08 +0xfe 0x01 +0x8c 0x10 +0xfe 0x00 +0x3e 0x01 +0xfe 0x00 +0x3e 0x01 +0xfc 0x01 +0xf4 0x40 +0xf5 0xe4 +0xf6 0x14 +0xf8 0x49 +0xf9 0x12 +0xfa 0x01 +0xfc 0x81 +0xfe 0x00 +0x36 0x01 +0xd3 0x87 +0x36 0x00 +0x33 0x20 +0xfe 0x03 +0x01 0x87 +0xf7 0x11 +0xfc 0x8f +0xfc 0x8f +0xfc 0x8e +0xfe 0x00 +0xee 0x30 +0x87 0x18 +0xfe 0x01 +0x8c 0x90 +0xfe 0x00 +0xfe 0x00 +0x05 0x02 +0x06 0xda +0x9d 0x0c +0x09 0x00 +0x0a 0x04 +0x0b 0x00 +0x0c 0x03 +0x0d 0x07 +0x0e 0xa8 +0x0f 0x0a +0x10 0x30 +0x21 0x60 +0x29 0x30 +0x44 0x18 +0x4e 0x20 +0x8c 0x20 +0x91 0x15 +0x92 0x3a +0x93 0x20 +0x95 0x45 +0x96 0x35 +0xd5 0xf0 +0x97 0x20 +0x1f 0x19 +0xce 0x18 +0xd0 0xb3 +0xfe 0x02 +0x14 0x02 +0x15 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xfe 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x01 +0x49 0x00 +0x4a 0x01 +0x4b 0xf8 +0xfe 0x01 +0x4e 0x06 +0x44 0x02 +0xfe 0x01 +0x91 0x00 +0x92 0x04 +0x93 0x00 +0x94 0x03 +0x95 0x03 +0x96 0xcc +0x97 0x05 +0x98 0x10 +0x99 0x00 +0xfe 0x03 +0x02 0x58 +0x22 0x03 +0x26 0x06 +0x29 0x03 +0x2b 0x06 +0xfe 0x01 +0x8c 0x10 \ No newline at end of file diff --git a/drivers/GC5035/GC5035_mipi2lane_1296x972@30_mayi.txt b/drivers/GC5035/GC5035_mipi2lane_1296x972@30_mayi.txt new file mode 100644 index 0000000..437f185 --- /dev/null +++ b/drivers/GC5035/GC5035_mipi2lane_1296x972@30_mayi.txt @@ -0,0 +1,257 @@ +0xfc 0x01 +0xf4 0x40 +0xf5 0xe9 +0xf6 0x14 +0xf8 0x49 +0xf9 0x82 +0xfa 0x00 +0xfc 0x81 +0xfe 0x00 +0x36 0x01 +0xd3 0x87 +0x36 0x00 +0x33 0x00 +0xfe 0x03 +0x01 0xe7 +0xf7 0x01 +0xfc 0x8f +0xfc 0x8f +0xfc 0x8e +0xfe 0x00 +0xee 0x30 +0x87 0x18 +0xfe 0x01 +0x8c 0x90 +0xfe 0x00 +0xfe 0x00 +0x05 0x02 +0x06 0xda +0x9d 0x0c +0x09 0x00 +0x0a 0x04 +0x0b 0x00 +0x0c 0x03 +0x0d 0x07 +0x0e 0xa8 +0x0f 0x0a +0x10 0x30 +0x11 0x02 +0x17 0x80 +0x19 0x05 +0xfe 0x02 +0x30 0x03 +0x31 0x03 +0xfe 0x00 +0xd9 0xc0 +0x1b 0x20 +0x21 0x48 +0x28 0x22 +0x29 0x58 +0x44 0x20 +0x4b 0x10 +0x4e 0x1a +0x50 0x11 +0x52 0x33 +0x53 0x44 +0x55 0x10 +0x5b 0x11 +0xc5 0x02 +0x8c 0x1a +0xfe 0x02 +0x33 0x05 +0x32 0x38 +0xfe 0x00 +0x91 0x80 +0x92 0x28 +0x93 0x20 +0x95 0xa0 +0x96 0xe0 +0xd5 0xfc +0x97 0x28 +0x16 0x0c +0x1a 0x1a +0x1f 0x11 +0x20 0x10 +0x46 0x83 +0x4a 0x04 +0x54 0x02 +0x62 0x00 +0x72 0x8f +0x73 0x89 +0x7a 0x05 +0x7d 0xcc +0x90 0x00 +0xce 0x18 +0xd0 0xb2 +0xd2 0x40 +0xe6 0xe0 +0xfe 0x02 +0x12 0x01 +0x13 0x01 +0x14 0x01 +0x15 0x02 +0x22 0x7c +0x91 0x00 +0x92 0x00 +0x93 0x00 +0x94 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xfe 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xb0 0x6e +0xb1 0x01 +0xb2 0x00 +0xb3 0x00 +0xb4 0x00 +0xb6 0x00 +0xfe 0x01 +0x53 0x00 +0x89 0x03 +0x60 0x40 +0xfe 0x01 +0x42 0x21 +0x49 0x03 +0x4a 0xff +0x4b 0xc0 +0x55 0x00 +0xfe 0x01 +0x41 0x28 +0x4c 0x00 +0x4d 0x00 +0x4e 0x3c +0x44 0x08 +0x48 0x02 +0xfe 0x01 +0x91 0x00 +0x92 0x08 +0x93 0x00 +0x94 0x07 +0x95 0x07 +0x96 0x98 +0x97 0x0a +0x98 0x20 +0x99 0x00 +0xfe 0x03 +0x02 0x57 +0x03 0xb7 +0x15 0x14 +0x18 0x0f +0x21 0x22 +0x22 0x06 +0x23 0x48 +0x24 0x12 +0x25 0x28 +0x26 0x08 +0x29 0x06 +0x2a 0x58 +0x2b 0x08 +0xfe 0x01 +0x8c 0x10 +0xfe 0x00 +0x3e 0x01 +0xfe 0x00 +0x3e 0x01 +0xfc 0x01 +0xf4 0x40 +0xf5 0xe4 +0xf6 0x14 +0xf8 0x49 +0xf9 0x12 +0xfa 0x01 +0xfc 0x81 +0xfe 0x00 +0x36 0x01 +0xd3 0x87 +0x36 0x00 +0x33 0x20 +0xfe 0x03 +0x01 0x87 +0xf7 0x11 +0xfc 0x8f +0xfc 0x8f +0xfc 0x8e +0xfe 0x00 +0xee 0x30 +0x87 0x18 +0xfe 0x01 +0x8c 0x90 +0xfe 0x00 +0xfe 0x00 +0x05 0x02 +0x06 0xda +0x9d 0x0c +0x09 0x00 +0x0a 0x04 +0x0b 0x00 +0x0c 0x03 +0x0d 0x07 +0x0e 0xa8 +0x0f 0x0a +0x10 0x30 +0x21 0x60 +0x29 0x30 +0x44 0x18 +0x4e 0x20 +0x8c 0x20 +0x91 0x15 +0x92 0x3a +0x93 0x20 +0x95 0x45 +0x96 0x35 +0xd5 0xf0 +0x97 0x20 +0x1f 0x19 +0xce 0x18 +0xd0 0xb3 +0xfe 0x02 +0x14 0x02 +0x15 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xfe 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x01 +0x49 0x00 +0x4a 0x01 +0x4b 0xf8 +0xfe 0x01 +0x4e 0x06 +0x44 0x02 +0xfe 0x01 +0x91 0x00 +0x92 0x04 +0x93 0x00 +0x94 0x03 +0x95 0x03 +0x96 0xcc +0x97 0x05 +0x98 0x10 +0x99 0x00 +0xfe 0x03 +0x02 0x58 +0x22 0x03 +0x26 0x06 +0x29 0x03 +0x2b 0x06 +0xfe 0x01 +0x8c 0x10 +0xfe 0x00 +0x3e 0x91 \ No newline at end of file diff --git a/drivers/GC5035/GC5035_mipi2lane_1920x1080@30_gc.txt b/drivers/GC5035/GC5035_mipi2lane_1920x1080@30_gc.txt new file mode 100644 index 0000000..6328685 --- /dev/null +++ b/drivers/GC5035/GC5035_mipi2lane_1920x1080@30_gc.txt @@ -0,0 +1,166 @@ +0xfc 0x01 +0xf4 0x40 +0xf5 0xe9 +0xf6 0x14 +0xf8 0x49 +0xf9 0x82 +0xfa 0x00 +0xfc 0x81 +0xfe 0x00 +0x36 0x01 +0xd3 0x87 +0x36 0x00 +0x33 0x00 +0xfe 0x03 +0x01 0xe7 +0xf7 0x01 +0xfc 0x8f +0xfc 0x8f +0xfc 0x8e +0xfe 0x00 +0xee 0x30 +0x87 0x18 +0xfe 0x01 +0x8c 0x90 +0xfe 0x00 +0x03 0x0b +0x04 0xb8 +0x41 0x07 +0x42 0xd8 +0x05 0x02 +0x06 0xda +0x9d 0x0c +0x09 0x00 +0x0a 0x04 +0x0b 0x00 +0x0c 0x03 +0x0d 0x07 +0x0e 0xa8 +0x0f 0x0a +0x10 0x30 +0x11 0x02 +0x17 0x80 +0x19 0x05 +0xfe 0x02 +0x30 0x03 +0x31 0x03 +0xfe 0x00 +0xd9 0xc0 +0x1b 0x20 +0x21 0x48 +0x28 0x22 +0x29 0x58 +0x44 0x20 +0x4b 0x10 +0x4e 0x1a +0x50 0x11 +0x52 0x33 +0x53 0x44 +0x55 0x10 +0x5b 0x11 +0xc5 0x02 +0x8c 0x1a +0xfe 0x02 +0x33 0x05 +0x32 0x38 +0xfe 0x00 +0x91 0x80 +0x92 0x28 +0x93 0x20 +0x95 0xa0 +0x96 0xe0 +0xd5 0xfc +0x97 0x28 +0x16 0x0c +0x1a 0x1a +0x1f 0x11 +0x20 0x10 +0x46 0x83 +0x4a 0x04 +0x54 0x02 +0x62 0x00 +0x72 0x8f +0x73 0x89 +0x7a 0x05 +0x7d 0xcc +0x90 0x00 +0xce 0x18 +0xd0 0xb2 +0xd2 0x40 +0xe6 0xe0 +0xfe 0x02 +0x12 0x01 +0x13 0x01 +0x14 0x01 +0x15 0x02 +0x22 0x7c +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xfe 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xb0 0x6e +0xb1 0x01 +0xb2 0x00 +0xb3 0x00 +0xb4 0x00 +0xb6 0x00 +0xfe 0x01 +0x53 0x00 +0x89 0x03 +0x60 0x40 +0xfe 0x01 +0x42 0x21 +0x49 0x03 +0x4a 0xff +0x4b 0xc0 +0x55 0x00 +0xfe 0x01 +0x41 0x28 +0x4c 0x00 +0x4d 0x00 +0x4e 0x3c +0x44 0x08 +0x48 0x02 +0xfe 0x01 +0x91 0x01 +0x92 0xb0 +0x93 0x01 +0x94 0x5f +0x95 0x04 +0x96 0x38 +0x97 0x07 +0x98 0x80 +0x99 0x00 +0xfe 0x03 +0x02 0x57 +0x03 0xb7 +0x15 0x14 +0x18 0x0f +0x21 0x22 +0x22 0x06 +0x23 0x48 +0x24 0x12 +0x25 0x28 +0x26 0x08 +0x29 0x06 +0x2a 0x58 +0x2b 0x08 +0xfe 0x01 +0x8c 0x10 +0xfe 0x00 +0x03 0x07 +0x04 0x04 +0x41 0x07 +0x42 0xd8 +0xb6 0x11 +0xb1 0x01 +0xb2 0x07 \ No newline at end of file diff --git a/drivers/GC5035/GC5035_mipi2lane_2592x1922@30_bitland.txt b/drivers/GC5035/GC5035_mipi2lane_2592x1922@30_bitland.txt new file mode 100644 index 0000000..1962387 --- /dev/null +++ b/drivers/GC5035/GC5035_mipi2lane_2592x1922@30_bitland.txt @@ -0,0 +1,257 @@ +0xfc 0x01 +0xf4 0x40 +0xf5 0xe9 +0xf6 0x14 +0xf8 0x49 +0xf9 0x82 +0xfa 0x00 +0xfc 0x81 +0xfe 0x00 +0x36 0x01 +0xd3 0x87 +0x36 0x00 +0x33 0x00 +0xfe 0x03 +0x01 0xe7 +0xf7 0x01 +0xfc 0x8f +0xfc 0x8f +0xfc 0x8e +0xfe 0x00 +0xee 0x30 +0x87 0x18 +0xfe 0x01 +0x8c 0x90 +0xfe 0x00 +0xfe 0x00 +0x05 0x02 +0x06 0xda +0x9d 0x0c +0x09 0x00 +0x0a 0x04 +0x0b 0x00 +0x0c 0x03 +0x0d 0x07 +0x0e 0xa8 +0x0f 0x0a +0x10 0x30 +0x11 0x02 +0x17 0x80 +0x19 0x05 +0xfe 0x02 +0x30 0x03 +0x31 0x03 +0xfe 0x00 +0xd9 0xc0 +0x1b 0x20 +0x21 0x48 +0x28 0x22 +0x29 0x58 +0x44 0x20 +0x4b 0x10 +0x4e 0x1a +0x50 0x11 +0x52 0x33 +0x53 0x44 +0x55 0x10 +0x5b 0x11 +0xc5 0x02 +0x8c 0x1a +0xfe 0x02 +0x33 0x05 +0x32 0x38 +0xfe 0x00 +0x91 0x80 +0x92 0x28 +0x93 0x20 +0x95 0xa0 +0x96 0xe0 +0xd5 0xfc +0x97 0x28 +0x16 0x0c +0x1a 0x1a +0x1f 0x11 +0x20 0x10 +0x46 0x83 +0x4a 0x04 +0x54 0x02 +0x62 0x00 +0x72 0x8f +0x73 0x89 +0x7a 0x05 +0x7d 0xcc +0x90 0x00 +0xce 0x18 +0xd0 0xb2 +0xd2 0x40 +0xe6 0xe0 +0xfe 0x02 +0x12 0x01 +0x13 0x01 +0x14 0x01 +0x15 0x02 +0x22 0x7c +0x91 0x00 +0x92 0x00 +0x93 0x00 +0x94 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xfe 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xb0 0x6e +0xb1 0x01 +0xb2 0x00 +0xb3 0x00 +0xb4 0x00 +0xb6 0x00 +0xfe 0x01 +0x53 0x00 +0x89 0x03 +0x60 0x40 +0xfe 0x01 +0x42 0x21 +0x49 0x03 +0x4a 0xff +0x4b 0xc0 +0x55 0x00 +0xfe 0x01 +0x41 0x28 +0x4c 0x00 +0x4d 0x00 +0x4e 0x3c +0x44 0x08 +0x48 0x02 +0xfe 0x01 +0x91 0x00 +0x92 0x08 +0x93 0x00 +0x94 0x07 +0x95 0x07 +0x96 0x98 +0x97 0x0a +0x98 0x20 +0x99 0x00 +0xfe 0x03 +0x02 0x57 +0x03 0xb7 +0x15 0x14 +0x18 0x0f +0x21 0x22 +0x22 0x06 +0x23 0x48 +0x24 0x12 +0x25 0x28 +0x26 0x08 +0x29 0x06 +0x2a 0x58 +0x2b 0x08 +0xfe 0x01 +0x8c 0x10 +0xfe 0x00 +0x3e 0x01 +0xfe 0x00 +0x3e 0x01 +0xfc 0x01 +0xf4 0x40 +0xf5 0xe9 +0xf6 0x14 +0xf8 0x49 +0xf9 0x82 +0xfa 0x00 +0xfc 0x81 +0xfe 0x00 +0x36 0x01 +0xd3 0x87 +0x36 0x00 +0x33 0x00 +0xfe 0x03 +0x01 0xe7 +0xf7 0x01 +0xfc 0x8f +0xfc 0x8f +0xfc 0x8e +0xfe 0x00 +0xee 0x30 +0x87 0x18 +0xfe 0x01 +0x8c 0x90 +0xfe 0x00 +0xfe 0x00 +0x05 0x02 +0x06 0xda +0x9d 0x0c +0x09 0x00 +0x0a 0x04 +0x0b 0x00 +0x0c 0x03 +0x0d 0x07 +0x0e 0xa8 +0x0f 0x0a +0x10 0x30 +0x21 0x48 +0x29 0x58 +0x44 0x20 +0x4e 0x1a +0x8c 0x1a +0x91 0x80 +0x92 0x28 +0x93 0x20 +0x95 0xa0 +0x96 0xe0 +0xd5 0xfc +0x97 0x28 +0x1f 0x11 +0xce 0x18 +0xd0 0xb2 +0xfe 0x02 +0x14 0x01 +0x15 0x02 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xfe 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x01 +0x49 0x03 +0x4a 0xff +0x4b 0xc0 +0xfe 0x01 +0x4e 0x3c +0x44 0x08 +0xfe 0x01 +0x91 0x00 +0x92 0x08 +0x93 0x00 +0x94 0x07 +0x95 0x07 +0x96 0x98 +0x97 0x0a +0x98 0x20 +0x99 0x00 +0xfe 0x03 +0x02 0x57 +0x22 0x06 +0x26 0x08 +0x29 0x06 +0x2b 0x08 +0xfe 0x01 +0x8c 0x10 +0xfe 0x00 +0x3e 0x91 diff --git a/drivers/GC5035/GC5035_mipi2lane_2592x1922@30_mayi.txt b/drivers/GC5035/GC5035_mipi2lane_2592x1922@30_mayi.txt new file mode 100644 index 0000000..0128cdc --- /dev/null +++ b/drivers/GC5035/GC5035_mipi2lane_2592x1922@30_mayi.txt @@ -0,0 +1,257 @@ +0xfc 0x01 +0xf4 0x40 +0xf5 0xe9 +0xf6 0x14 +0xf8 0x49 +0xf9 0x82 +0xfa 0x00 +0xfc 0x81 +0xfe 0x00 +0x36 0x01 +0xd3 0x87 +0x36 0x00 +0x33 0x00 +0xfe 0x03 +0x01 0xe7 +0xf7 0x01 +0xfc 0x8f +0xfc 0x8f +0xfc 0x8e +0xfe 0x00 +0xee 0x30 +0x87 0x18 +0xfe 0x01 +0x8c 0x90 +0xfe 0x00 +0xfe 0x00 +0x05 0x02 +0x06 0xda +0x9d 0x0c +0x09 0x00 +0x0a 0x04 +0x0b 0x00 +0x0c 0x03 +0x0d 0x07 +0x0e 0xa8 +0x0f 0x0a +0x10 0x30 +0x11 0x02 +0x17 0x80 +0x19 0x05 +0xfe 0x02 +0x30 0x03 +0x31 0x03 +0xfe 0x00 +0xd9 0xc0 +0x1b 0x20 +0x21 0x48 +0x28 0x22 +0x29 0x58 +0x44 0x20 +0x4b 0x10 +0x4e 0x1a +0x50 0x11 +0x52 0x33 +0x53 0x44 +0x55 0x10 +0x5b 0x11 +0xc5 0x02 +0x8c 0x1a +0xfe 0x02 +0x33 0x05 +0x32 0x38 +0xfe 0x00 +0x91 0x80 +0x92 0x28 +0x93 0x20 +0x95 0xa0 +0x96 0xe0 +0xd5 0xfc +0x97 0x28 +0x16 0x0c +0x1a 0x1a +0x1f 0x11 +0x20 0x10 +0x46 0x83 +0x4a 0x04 +0x54 0x02 +0x62 0x00 +0x72 0x8f +0x73 0x89 +0x7a 0x05 +0x7d 0xcc +0x90 0x00 +0xce 0x18 +0xd0 0xb2 +0xd2 0x40 +0xe6 0xe0 +0xfe 0x02 +0x12 0x01 +0x13 0x01 +0x14 0x01 +0x15 0x02 +0x22 0x7c +0x91 0x00 +0x92 0x00 +0x93 0x00 +0x94 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xfe 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xb0 0x6e +0xb1 0x01 +0xb2 0x00 +0xb3 0x00 +0xb4 0x00 +0xb6 0x00 +0xfe 0x01 +0x53 0x00 +0x89 0x03 +0x60 0x40 +0xfe 0x01 +0x42 0x21 +0x49 0x03 +0x4a 0xff +0x4b 0xc0 +0x55 0x00 +0xfe 0x01 +0x41 0x28 +0x4c 0x00 +0x4d 0x00 +0x4e 0x3c +0x44 0x08 +0x48 0x02 +0xfe 0x01 +0x91 0x00 +0x92 0x08 +0x93 0x00 +0x94 0x07 +0x95 0x07 +0x96 0x98 +0x97 0x0a +0x98 0x20 +0x99 0x00 +0xfe 0x03 +0x02 0x57 +0x03 0xb7 +0x15 0x14 +0x18 0x0f +0x21 0x22 +0x22 0x06 +0x23 0x48 +0x24 0x12 +0x25 0x28 +0x26 0x08 +0x29 0x06 +0x2a 0x58 +0x2b 0x08 +0xfe 0x01 +0x8c 0x10 +0xfe 0x00 +0x3e 0x01 +0xfe 0x00 +0x3e 0x01 +0xfc 0x01 +0xf4 0x40 +0xf5 0xe9 +0xf6 0x14 +0xf8 0x49 +0xf9 0x82 +0xfa 0x00 +0xfc 0x81 +0xfe 0x00 +0x36 0x01 +0xd3 0x87 +0x36 0x00 +0x33 0x00 +0xfe 0x03 +0x01 0xe7 +0xf7 0x01 +0xfc 0x8f +0xfc 0x8f +0xfc 0x8e +0xfe 0x00 +0xee 0x30 +0x87 0x18 +0xfe 0x01 +0x8c 0x90 +0xfe 0x00 +0xfe 0x00 +0x05 0x02 +0x06 0xda +0x9d 0x0c +0x09 0x00 +0x0a 0x04 +0x0b 0x00 +0x0c 0x03 +0x0d 0x07 +0x0e 0xa8 +0x0f 0x0a +0x10 0x30 +0x21 0x48 +0x29 0x58 +0x44 0x20 +0x4e 0x1a +0x8c 0x1a +0x91 0x80 +0x92 0x28 +0x93 0x20 +0x95 0xa0 +0x96 0xe0 +0xd5 0xfc +0x97 0x28 +0x1f 0x11 +0xce 0x18 +0xd0 0xb2 +0xfe 0x02 +0x14 0x01 +0x15 0x02 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xfe 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x01 +0x49 0x03 +0x4a 0xff +0x4b 0xc0 +0xfe 0x01 +0x4e 0x3c +0x44 0x08 +0xfe 0x01 +0x91 0x00 +0x92 0x08 +0x93 0x00 +0x94 0x07 +0x95 0x07 +0x96 0x98 +0x97 0x0a +0x98 0x20 +0x99 0x00 +0xfe 0x03 +0x02 0x57 +0x22 0x06 +0x26 0x08 +0x29 0x06 +0x2b 0x08 +0xfe 0x01 +0x8c 0x10 +0xfe 0x00 +0x3e 0x91 \ No newline at end of file diff --git a/drivers/GC5035/GC5035_mipi2lane_2592x1944@30_gc.txt b/drivers/GC5035/GC5035_mipi2lane_2592x1944@30_gc.txt new file mode 100644 index 0000000..6062e21 --- /dev/null +++ b/drivers/GC5035/GC5035_mipi2lane_2592x1944@30_gc.txt @@ -0,0 +1,166 @@ +0xfc 0x01 +0xf4 0x40 +0xf5 0xe9 +0xf6 0x14 +0xf8 0x49 +0xf9 0x82 +0xfa 0x00 +0xfc 0x81 +0xfe 0x00 +0x36 0x01 +0xd3 0x87 +0x36 0x00 +0x33 0x00 +0xfe 0x03 +0x01 0xe7 +0xf7 0x01 +0xfc 0x8f +0xfc 0x8f +0xfc 0x8e +0xfe 0x00 +0xee 0x30 +0x87 0x18 +0xfe 0x01 +0x8c 0x90 +0xfe 0x00 +0x03 0x0b +0x04 0xb8 +0x41 0x07 +0x42 0xd8 +0x05 0x02 +0x06 0xda +0x9d 0x0c +0x09 0x00 +0x0a 0x04 +0x0b 0x00 +0x0c 0x03 +0x0d 0x07 +0x0e 0xa8 +0x0f 0x0a +0x10 0x30 +0x11 0x02 +0x17 0x80 +0x19 0x05 +0xfe 0x02 +0x30 0x03 +0x31 0x03 +0xfe 0x00 +0xd9 0xc0 +0x1b 0x20 +0x21 0x48 +0x28 0x22 +0x29 0x58 +0x44 0x20 +0x4b 0x10 +0x4e 0x1a +0x50 0x11 +0x52 0x33 +0x53 0x44 +0x55 0x10 +0x5b 0x11 +0xc5 0x02 +0x8c 0x1a +0xfe 0x02 +0x33 0x05 +0x32 0x38 +0xfe 0x00 +0x91 0x80 +0x92 0x28 +0x93 0x20 +0x95 0xa0 +0x96 0xe0 +0xd5 0xfc +0x97 0x28 +0x16 0x0c +0x1a 0x1a +0x1f 0x11 +0x20 0x10 +0x46 0x83 +0x4a 0x04 +0x54 0x02 +0x62 0x00 +0x72 0x8f +0x73 0x89 +0x7a 0x05 +0x7d 0xcc +0x90 0x00 +0xce 0x18 +0xd0 0xb2 +0xd2 0x40 +0xe6 0xe0 +0xfe 0x02 +0x12 0x01 +0x13 0x01 +0x14 0x01 +0x15 0x02 +0x22 0x7c +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xfe 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xb0 0x6e +0xb1 0x01 +0xb2 0x00 +0xb3 0x00 +0xb4 0x00 +0xb6 0x00 +0xfe 0x01 +0x53 0x00 +0x89 0x03 +0x60 0x40 +0xfe 0x01 +0x42 0x21 +0x49 0x03 +0x4a 0xff +0x4b 0xc0 +0x55 0x00 +0xfe 0x01 +0x41 0x28 +0x4c 0x00 +0x4d 0x00 +0x4e 0x3c +0x44 0x08 +0x48 0x02 +0xfe 0x01 +0x91 0x00 +0x92 0x08 +0x93 0x00 +0x94 0x07 +0x95 0x07 +0x96 0x98 +0x97 0x0a +0x98 0x20 +0x99 0x00 +0xfe 0x03 +0x02 0x57 +0x03 0xb7 +0x15 0x14 +0x18 0x0f +0x21 0x22 +0x22 0x06 +0x23 0x48 +0x24 0x12 +0x25 0x28 +0x26 0x08 +0x29 0x06 +0x2a 0x58 +0x2b 0x08 +0xfe 0x01 +0x8c 0x10 +0xfe 0x00 +0x03 0x07 +0x04 0x04 +0x41 0x07 +0x42 0xd8 +0xb6 0x11 +0xb1 0x01 +0xb2 0x02 \ No newline at end of file diff --git a/drivers/GC5035/GC5035_mipi2lane_640x480@30_gc.txt b/drivers/GC5035/GC5035_mipi2lane_640x480@30_gc.txt new file mode 100644 index 0000000..2b41543 --- /dev/null +++ b/drivers/GC5035/GC5035_mipi2lane_640x480@30_gc.txt @@ -0,0 +1,166 @@ +0xfc 0x01 +0xf4 0x40 +0xf5 0xe4 +0xf6 0x14 +0xf8 0x49 +0xf9 0x12 +0xfa 0x01 +0xfc 0x81 +0xfe 0x00 +0x36 0x01 +0xd3 0x87 +0x36 0x00 +0x33 0x20 +0xfe 0x03 +0x01 0x87 +0xf7 0x11 +0xfc 0x8f +0xfc 0x8f +0xfc 0x8e +0xfe 0x00 +0xee 0x30 +0x87 0x18 +0xfe 0x01 +0x8c 0x90 +0xfe 0x00 +0x03 0x02 +0x04 0x58 +0x41 0x07 +0x42 0xcc +0x05 0x02 +0x06 0xda +0x9d 0x0c +0x09 0x00 +0x0a 0x04 +0x0b 0x00 +0x0c 0x03 +0x0d 0x07 +0x0e 0xa8 +0x0f 0x0a +0x10 0x30 +0x11 0x02 +0x17 0x80 +0x19 0x05 +0xfe 0x02 +0x30 0x03 +0x31 0x03 +0xfe 0x00 +0xd9 0xc0 +0x1b 0x20 +0x21 0x60 +0x28 0x22 +0x29 0x30 +0x44 0x18 +0x4b 0x10 +0x4e 0x20 +0x50 0x11 +0x52 0x33 +0x53 0x44 +0x55 0x10 +0x5b 0x11 +0xc5 0x02 +0x8c 0x20 +0xfe 0x02 +0x33 0x05 +0x32 0x38 +0xfe 0x00 +0x91 0x15 +0x92 0x3a +0x93 0x20 +0x95 0x45 +0x96 0x35 +0xd5 0xf0 +0x97 0x20 +0x16 0x0c +0x1a 0x1a +0x1f 0x19 +0x20 0x10 +0x46 0x83 +0x4a 0x04 +0x54 0x02 +0x62 0x00 +0x72 0x8f +0x73 0x89 +0x7a 0x05 +0x7d 0xcc +0x90 0x00 +0xce 0x18 +0xd0 0xb3 +0xd2 0x40 +0xe6 0xe0 +0xfe 0x02 +0x12 0x01 +0x13 0x01 +0x14 0x02 +0x15 0x00 +0x22 0x7c +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xfe 0x00 +0xfe 0x00 +0xfc 0x88 +0xfe 0x10 +0xfe 0x00 +0xfc 0x8e +0xfe 0x00 +0xb0 0x6e +0xb1 0x01 +0xb2 0x00 +0xb3 0x00 +0xb4 0x00 +0xb6 0x00 +0xfe 0x01 +0x53 0x00 +0x89 0x03 +0x60 0x40 +0xfe 0x01 +0x42 0x21 +0x49 0x00 +0x4a 0x01 +0x4b 0xf8 +0x55 0x00 +0xfe 0x01 +0x41 0x28 +0x4c 0x00 +0x4d 0x00 +0x4e 0x06 +0x44 0x02 +0x48 0x02 +0xfe 0x01 +0x91 0x00 +0x92 0xF6 +0x93 0x01 +0x94 0x48 +0x95 0x01 +0x96 0xe0 +0x97 0x02 +0x98 0x80 +0x99 0x00 +0xfe 0x03 +0x02 0x58 +0x03 0xb7 +0x15 0x14 +0x18 0x0f +0x21 0x22 +0x22 0x03 +0x23 0x48 +0x24 0x12 +0x25 0x28 +0x26 0x06 +0x29 0x03 +0x2a 0x58 +0x2b 0x06 +0xfe 0x01 +0x8c 0x10 +0xfe 0x00 +0x03 0x07 +0x04 0x04 +0x41 0x07 +0x42 0xd8 +0xb6 0x0e +0xb1 0x01 +0xb2 0x02 \ No newline at end of file diff --git a/drivers/GC5035/GC5035_priv.h b/drivers/GC5035/GC5035_priv.h new file mode 100644 index 0000000..821e8ba --- /dev/null +++ b/drivers/GC5035/GC5035_priv.h @@ -0,0 +1,241 @@ +/******************************************************************************\ +|* Copyright (c) 2020 by VeriSilicon Holdings Co., Ltd. ("VeriSilicon") *| +|* All Rights Reserved. *| +|* *| +|* The material in this file is confidential and contains trade secrets of *| +|* of VeriSilicon. This is proprietary information owned or licensed by *| +|* VeriSilicon. No part of this work may be disclosed, reproduced, copied, *| +|* transmitted, or used in any way for any purpose, without the express *| +|* written permission of VeriSilicon. *| +|* *| +\******************************************************************************/ +/** + * @file GC5035_priv.h + * + * @brief Interface description for image sensor specific implementation (iss). + * + *****************************************************************************/ +/** + * @page module_name_page Module Name + * Describe here what this module does. + * + * For a detailed list of functions and implementation detail refer to: + * - @ref module_name + * + * @defgroup gc5035_priv + * @{ + * + */ +#ifndef __GC5035_PRIV_H__ +#define __GC5035_PRIV_H__ + +#include +#include +#include +#include +#include "vvsensor.h" + + + +#ifdef __cplusplus +extern "C" +{ +#endif + + + +/***************************************************************************** + * SC control registers + *****************************************************************************/ +#define GC5035_PIDH (0x300A) //R - Product ID High Byte MSBs +#define GC5035_PIDL (0x300B) //R - Product ID Low Byte LSBs + +/***************************************************************************** + * Default values + *****************************************************************************/ + + // Make sure that these static settings are reflecting the capabilities defined +// in IsiGetCapsIss (further dynamic setup may alter these default settings but +// often does not if there is no choice available). + +/***************************************************************************** + * SC control registers + *****************************************************************************/ +#define GC5035_PIDH_DEFAULT (0x27) //read only +#define GC5035_PIDL_DEFAULT (0x70) //read only + +typedef struct GC5035_Context_s +{ + IsiSensorContext_t IsiCtx; /**< common context of ISI and ISI driver layer; @note: MUST BE FIRST IN DRIVER CONTEXT */ + + struct vvcam_mode_info SensorMode; + uint32_t KernelDriverFlag; + char SensorRegCfgFile[128]; + + uint32_t HdrMode; + uint32_t Resolution; + uint32_t MaxFps; + uint32_t MinFps; + uint32_t CurrFps; + //// modify below here //// + + IsiSensorConfig_t Config; /**< sensor configuration */ + bool_t Configured; /**< flags that config was applied to sensor */ + bool_t Streaming; /**< flags that csensor is streaming data */ + bool_t TestPattern; /**< flags that sensor is streaming test-pattern */ + + bool_t isAfpsRun; /**< if true, just do anything required for Afps parameter calculation, but DON'T access SensorHW! */ + + float one_line_exp_time; + uint16_t MaxIntegrationLine; + uint16_t MinIntegrationLine; + uint32_t gain_accuracy; + + uint16_t FrameLengthLines; /**< frame line length */ + uint16_t CurFrameLengthLines; + + float AecMinGain; + float AecMaxGain; + float AecMinIntegrationTime; + float AecMaxIntegrationTime; + + float AecIntegrationTimeIncrement; /**< _smallest_ increment the sensor/driver can handle (e.g. used for sliders in the application) */ + float AecGainIncrement; /**< _smallest_ increment the sensor/driver can handle (e.g. used for sliders in the application) */ + + float AecCurIntegrationTime; + float AecCurVSIntegrationTime; + float AecCurLongIntegrationTime; + float AecCurGain; + float AecCurVSGain; + float AecCurLongGain; + + uint32_t LastExpLine; + uint32_t LastVsExpLine; + uint32_t LastLongExpLine; + + uint32_t LastGain; + uint32_t LastVsGain; + uint32_t LastLongGain; + + bool GroupHold; + uint32_t OldGain; + uint32_t OldVsGain; + uint32_t OldIntegrationTime; + uint32_t OldVsIntegrationTime; + uint32_t OldGainHcg; + uint32_t OldAGainHcg; + uint32_t OldGainLcg; + uint32_t OldAGainLcg; + int subdev; + uint8_t pattern; + + float CurHdrRatio; +} GC5035_Context_t; + +static RESULT GC5035_IsiCreateSensorIss(IsiSensorInstanceConfig_t * + pConfig); + +static RESULT GC5035_IsiInitSensorIss(IsiSensorHandle_t handle); + +static RESULT GC5035_IsiReleaseSensorIss(IsiSensorHandle_t handle); + +static RESULT GC5035_IsiGetCapsIss(IsiSensorHandle_t handle, + IsiSensorCaps_t * pIsiSensorCaps); + +static RESULT GC5035_IsiSetupSensorIss(IsiSensorHandle_t handle, + const IsiSensorConfig_t * + pConfig); + +static RESULT GC5035_IsiSensorSetStreamingIss(IsiSensorHandle_t handle, + bool_t on); + +static RESULT GC5035_IsiSensorSetPowerIss(IsiSensorHandle_t handle, + bool_t on); + +static RESULT GC5035_IsiGetSensorRevisionIss(IsiSensorHandle_t handle, + uint32_t * p_value); + +static RESULT GC5035_IsiSetBayerPattern(IsiSensorHandle_t handle, + uint8_t pattern); + +static RESULT GC5035_IsiGetGainLimitsIss(IsiSensorHandle_t handle, + float *pMinGain, + float *pMaxGain); + +static RESULT GC5035_IsiGetIntegrationTimeLimitsIss(IsiSensorHandle_t + handle, + float + *pMinIntegrationTime, + float + *pMaxIntegrationTime); + +static RESULT GC5035_IsiExposureControlIss(IsiSensorHandle_t handle, + float NewGain, + float NewIntegrationTime, + uint8_t * + pNumberOfFramesToSkip, + float *pSetGain, + float *pSetIntegrationTime, + float *hdr_ratio); + +static RESULT GC5035_IsiGetGainIss(IsiSensorHandle_t handle, + float *pSetGain); + +static RESULT GC5035_IsiGetVSGainIss(IsiSensorHandle_t handle, + float *pSetGain); + +static RESULT GC5035_IsiGetGainIncrementIss(IsiSensorHandle_t handle, + float *pIncr); + +static RESULT GC5035_IsiSetGainIss(IsiSensorHandle_t handle, + float NewGain, float *pSetGain, + float *hdr_ratio); + +static RESULT GC5035_IsiSetVSGainIss(IsiSensorHandle_t handle, + float NewIntegrationTime, + float NewGain, float *pSetGain, + float *hdr_ratio); + +static RESULT GC5035_IsiGetIntegrationTimeIss(IsiSensorHandle_t handle, + float + *pSetIntegrationTime); + +static RESULT GC5035_IsiGetVSIntegrationTimeIss(IsiSensorHandle_t + handle, + float + *pSetIntegrationTime); + +static RESULT GC5035_IsiGetIntegrationTimeIncrementIss(IsiSensorHandle_t handle, + float *pIncr); + +static RESULT GC5035_IsiSetIntegrationTimeIss(IsiSensorHandle_t handle, + float NewIntegrationTime, + float + *pSetIntegrationTime, + uint8_t * + pNumberOfFramesToSkip, + float *hdr_ratio); + +static RESULT GC5035_IsiSetVSIntegrationTimeIss(IsiSensorHandle_t + handle, + float + NewIntegrationTime, + float + *pSetIntegrationTime, + uint8_t * + pNumberOfFramesToSkip, + float *hdr_ratio); + +RESULT GC5035_IsiGetResolutionIss(IsiSensorHandle_t handle, uint16_t *pwidth, uint16_t *pheight); + +static RESULT GC5035_IsiResetSensorIss(IsiSensorHandle_t handle); + + +#ifdef __cplusplus +} +#endif + +/* @} gc5035priv */ + +#endif /* __GC5035PRIV_H__ */ + diff --git a/drivers/GC5035/gc5035.h b/drivers/GC5035/gc5035.h new file mode 100644 index 0000000..e0beb06 --- /dev/null +++ b/drivers/GC5035/gc5035.h @@ -0,0 +1,1377 @@ +/* + * Support for OmniVision GC5035 5M camera sensor. + * + * Copyright (c) 2013 Intel Corporation. All Rights Reserved. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License version + * 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + * + */ + +#ifndef __GC5035_H__ +#define __GC5035_H__ + +#define GC5035_NAME "gc5035" + +#define GC5035_POWER_UP_RETRY_NUM 5 + +/* Defines for register writes and register array processing */ +#define I2C_MSG_LENGTH 0x2 +#define I2C_RETRY_COUNT 5 + +#define GC5035_FOCAL_LENGTH_NUM 334 /*3.34mm*/ +#define GC5035_FOCAL_LENGTH_DEM 100 +#define GC5035_F_NUMBER_DEFAULT_NUM 24 +#define GC5035_F_NUMBER_DEM 10 + +#define MAX_FMTS 1 + +/* sensor_mode_data read_mode adaptation */ +#define GC5035_READ_MODE_BINNING_ON 0x0400 +#define GC5035_READ_MODE_BINNING_OFF 0x00 +#define GC5035_INTEGRATION_TIME_MARGIN 8 + +#define GC5035_MAX_EXPOSURE_VALUE 0xFFF1 +#define GC5035_MAX_GAIN_VALUE 0xFF + +/* + * focal length bits definition: + * bits 31-16: numerator, bits 15-0: denominator + */ +#define GC5035_FOCAL_LENGTH_DEFAULT 0x1B70064 + +/* + * current f-number bits definition: + * bits 31-16: numerator, bits 15-0: denominator + */ +#define GC5035_F_NUMBER_DEFAULT 0x18000a + +/* + * f-number range bits definition: + * bits 31-24: max f-number numerator + * bits 23-16: max f-number denominator + * bits 15-8: min f-number numerator + * bits 7-0: min f-number denominator + */ +#define GC5035_F_NUMBER_RANGE 0x180a180a +#define GC5035_ID 0x5690 + +#define GC5035_FINE_INTG_TIME_MIN 0 +#define GC5035_FINE_INTG_TIME_MAX_MARGIN 0 +#define GC5035_COARSE_INTG_TIME_MIN 1 +#define GC5035_COARSE_INTG_TIME_MAX_MARGIN 6 + +#define GC5035_BIN_FACTOR_MAX 4 +/* + * GC5035 System control registers + */ +#define GC5035_SW_SLEEP 0x0100 +#define GC5035_SW_RESET 0x0103 +#define GC5035_SW_STREAM 0x0100 + +#define GC5035_SC_CMMN_CHIP_ID_H 0x300A +#define GC5035_SC_CMMN_CHIP_ID_L 0x300B +#define GC5035_SC_CMMN_SCCB_ID 0x300C +#define GC5035_SC_CMMN_SUB_ID 0x302A /* process, version*/ +/*Bit[7:4] Group control, Bit[3:0] Group ID*/ +#define GC5035_GROUP_ACCESS 0x3208 +/* +*Bit[3:0] Bit[19:16] of exposure, +*remaining 16 bits lies in Reg0x3501&Reg0x3502 +*/ +#define GC5035_EXPOSURE_H 0x3500 +#define GC5035_EXPOSURE_M 0x3501 +#define GC5035_EXPOSURE_L 0x3502 +/*Bit[1:0] means Bit[9:8] of gain*/ +#define GC5035_AGC_H 0x350A +#define GC5035_AGC_L 0x350B /*Bit[7:0] of gain*/ + +#define GC5035_HORIZONTAL_START_H 0x3800 /*Bit[11:8]*/ +#define GC5035_HORIZONTAL_START_L 0x3801 /*Bit[7:0]*/ +#define GC5035_VERTICAL_START_H 0x3802 /*Bit[11:8]*/ +#define GC5035_VERTICAL_START_L 0x3803 /*Bit[7:0]*/ +#define GC5035_HORIZONTAL_END_H 0x3804 /*Bit[11:8]*/ +#define GC5035_HORIZONTAL_END_L 0x3805 /*Bit[7:0]*/ +#define GC5035_VERTICAL_END_H 0x3806 /*Bit[11:8]*/ +#define GC5035_VERTICAL_END_L 0x3807 /*Bit[7:0]*/ +#define GC5035_HORIZONTAL_OUTPUT_SIZE_H 0x3808 /*Bit[3:0]*/ +#define GC5035_HORIZONTAL_OUTPUT_SIZE_L 0x3809 /*Bit[7:0]*/ +#define GC5035_VERTICAL_OUTPUT_SIZE_H 0x380a /*Bit[3:0]*/ +#define GC5035_VERTICAL_OUTPUT_SIZE_L 0x380b /*Bit[7:0]*/ +/*High 8-bit, and low 8-bit HTS address is 0x380d*/ +#define GC5035_TIMING_HTS_H 0x380C +/*High 8-bit, and low 8-bit HTS address is 0x380d*/ +#define GC5035_TIMING_HTS_L 0x380D +/*High 8-bit, and low 8-bit HTS address is 0x380f*/ +#define GC5035_TIMING_VTS_H 0x380e +/*High 8-bit, and low 8-bit HTS address is 0x380f*/ +#define GC5035_TIMING_VTS_L 0x380f + +#define GC5035_MWB_RED_GAIN_H 0x3400 +#define GC5035_MWB_GREEN_GAIN_H 0x3402 +#define GC5035_MWB_BLUE_GAIN_H 0x3404 +#define GC5035_MWB_GAIN_MAX 0x0fff + +#define GC5035_START_STREAMING 0x01 +#define GC5035_STOP_STREAMING 0x00 + +#define VCM_ADDR 0x0c +#define VCM_CODE_MSB 0x04 + +#define GC5035_INVALID_CONFIG 0xffffffff + +#define GC5035_VCM_SLEW_STEP 0x30F0 +#define GC5035_VCM_SLEW_STEP_MAX 0x7 +#define GC5035_VCM_SLEW_STEP_MASK 0x7 +#define GC5035_VCM_CODE 0x30F2 +#define GC5035_VCM_SLEW_TIME 0x30F4 +#define GC5035_VCM_SLEW_TIME_MAX 0xffff +#define GC5035_VCM_ENABLE 0x8000 + +#define GC5035_VCM_MAX_FOCUS_NEG -1023 +#define GC5035_VCM_MAX_FOCUS_POS 1023 + +#define DLC_ENABLE 1 +#define DLC_DISABLE 0 +#define VCM_PROTECTION_OFF 0xeca3 +#define VCM_PROTECTION_ON 0xdc51 +#define VCM_DEFAULT_S 0x0 +#define vcm_step_s(a) (u8)(a & 0xf) +#define vcm_step_mclk(a) (u8)((a >> 4) & 0x3) +#define vcm_dlc_mclk(dlc, mclk) (u16)((dlc << 3) | mclk | 0xa104) +#define vcm_tsrc(tsrc) (u16)(tsrc << 3 | 0xf200) +#define vcm_val(data, s) (u16)(data << 4 | s) +#define DIRECT_VCM vcm_dlc_mclk(0, 0) + +/* Defines for OTP Data Registers */ +#define GC5035_FRAME_OFF_NUM 0x4202 +#define GC5035_OTP_BYTE_MAX 32 //change to 32 as needed by otpdata +#define GC5035_OTP_SHORT_MAX 16 +#define GC5035_OTP_START_ADDR 0x3D00 +#define GC5035_OTP_END_ADDR 0x3D0F +#define GC5035_OTP_DATA_SIZE 320 +#define GC5035_OTP_PROGRAM_REG 0x3D80 +#define GC5035_OTP_READ_REG 0x3D81 // 1:Enable 0:disable +#define GC5035_OTP_BANK_REG 0x3D84 //otp bank and mode +#define GC5035_OTP_READY_REG_DONE 1 +#define GC5035_OTP_BANK_MAX 28 +#define GC5035_OTP_BANK_SIZE 16 //16 bytes per bank +#define GC5035_OTP_READ_ONETIME 16 +#define GC5035_OTP_MODE_READ 1 + +typedef enum GC5035_EXPOSURE_SETTING_e { + GC5035_ANALOG_GAIN = 1 << 0, + GC5035_INTEGRATION_TIME = 1 << 1, + GC5035_DIGITAL_GAIN = 1 << 2, +}GC5035_EXPOSURE_SETTING_t; + +#if 0 +struct regval_list { + u16 reg_num; + u8 value; +}; + +struct gc5035_resolution { + u8 *desc; + const struct gc5035_reg *regs; + int res; + int width; + int height; + int fps; + int pix_clk_freq; + u16 pixels_per_line; + u16 lines_per_frame; + u8 bin_factor_x; + u8 bin_factor_y; + u8 bin_mode; + bool used; +}; + +struct gc5035_format { + u8 *desc; + u32 pixelformat; + struct gc5035_reg *regs; +}; + +enum vcm_type { + VCM_UNKNOWN, + VCM_AD5823, + VCM_DW9714, +}; + +/* + * gc5035 device structure. + */ +struct gc5035_device { + struct v4l2_subdev sd; + struct media_pad pad; + struct v4l2_mbus_framefmt format; + struct mutex input_lock; + struct v4l2_ctrl_handler ctrl_handler; + + struct camera_sensor_platform_data *platform_data; + struct timespec timestamp_t_focus_abs; + int vt_pix_clk_freq_mhz; + int fmt_idx; + int run_mode; + int otp_size; + u8 *otp_data; + u32 focus; + s16 number_of_steps; + u8 res; + u8 type; + bool vcm_update; + enum vcm_type vcm; +}; + +enum gc5035_tok_type { + GC5035_8BIT = 0x0001, + GC5035_16BIT = 0x0002, + GC5035_32BIT = 0x0004, + GC5035_TOK_TERM = 0xf000, /* terminating token for reg list */ + GC5035_TOK_DELAY = 0xfe00, /* delay token for reg list */ + GC5035_TOK_MASK = 0xfff0 +}; + +/** + * struct gc5035_reg - MI sensor register format + * @type: type of the register + * @reg: 16-bit offset to register + * @val: 8/16/32-bit register value + * + * Define a structure for sensor register initialization values + */ +struct gc5035_reg { + enum gc5035_tok_type type; + u16 reg; + u32 val; /* @set value for read/mod/write, @mask */ +}; + +#define to_gc5035_sensor(x) container_of(x, struct gc5035_device, sd) + +#define GC5035_MAX_WRITE_BUF_SIZE 30 + +struct gc5035_write_buffer { + u16 addr; + u8 data[GC5035_MAX_WRITE_BUF_SIZE]; +}; + +struct gc5035_write_ctrl { + int index; + struct gc5035_write_buffer buffer; +}; + +static const struct i2c_device_id gc5035_id[] = { + {GC5035_NAME, 0}, + {} +}; + +static struct gc5035_reg const gc5035_global_setting[] = { + {GC5035_8BIT, 0x0103, 0x01}, + {GC5035_8BIT, 0x3001, 0x0a}, + {GC5035_8BIT, 0x3002, 0x80}, + {GC5035_8BIT, 0x3006, 0x00}, + {GC5035_8BIT, 0x3011, 0x21}, + {GC5035_8BIT, 0x3012, 0x09}, + {GC5035_8BIT, 0x3013, 0x10}, + {GC5035_8BIT, 0x3014, 0x00}, + {GC5035_8BIT, 0x3015, 0x08}, + {GC5035_8BIT, 0x3016, 0xf0}, + {GC5035_8BIT, 0x3017, 0xf0}, + {GC5035_8BIT, 0x3018, 0xf0}, + {GC5035_8BIT, 0x301b, 0xb4}, + {GC5035_8BIT, 0x301d, 0x02}, + {GC5035_8BIT, 0x3021, 0x00}, + {GC5035_8BIT, 0x3022, 0x01}, + {GC5035_8BIT, 0x3028, 0x44}, + {GC5035_8BIT, 0x3098, 0x02}, + {GC5035_8BIT, 0x3099, 0x19}, + {GC5035_8BIT, 0x309a, 0x02}, + {GC5035_8BIT, 0x309b, 0x01}, + {GC5035_8BIT, 0x309c, 0x00}, + {GC5035_8BIT, 0x30a0, 0xd2}, + {GC5035_8BIT, 0x30a2, 0x01}, + {GC5035_8BIT, 0x30b2, 0x00}, + {GC5035_8BIT, 0x30b3, 0x7d}, + {GC5035_8BIT, 0x30b4, 0x03}, + {GC5035_8BIT, 0x30b5, 0x04}, + {GC5035_8BIT, 0x30b6, 0x01}, + {GC5035_8BIT, 0x3104, 0x21}, + {GC5035_8BIT, 0x3106, 0x00}, + {GC5035_8BIT, 0x3400, 0x04}, + {GC5035_8BIT, 0x3401, 0x00}, + {GC5035_8BIT, 0x3402, 0x04}, + {GC5035_8BIT, 0x3403, 0x00}, + {GC5035_8BIT, 0x3404, 0x04}, + {GC5035_8BIT, 0x3405, 0x00}, + {GC5035_8BIT, 0x3406, 0x01}, + {GC5035_8BIT, 0x3500, 0x00}, + {GC5035_8BIT, 0x3503, 0x07}, + {GC5035_8BIT, 0x3504, 0x00}, + {GC5035_8BIT, 0x3505, 0x00}, + {GC5035_8BIT, 0x3506, 0x00}, + {GC5035_8BIT, 0x3507, 0x02}, + {GC5035_8BIT, 0x3508, 0x00}, + {GC5035_8BIT, 0x3509, 0x10}, + {GC5035_8BIT, 0x350a, 0x00}, + {GC5035_8BIT, 0x350b, 0x40}, + {GC5035_8BIT, 0x3601, 0x0a}, + {GC5035_8BIT, 0x3602, 0x38}, + {GC5035_8BIT, 0x3612, 0x80}, + {GC5035_8BIT, 0x3620, 0x54}, + {GC5035_8BIT, 0x3621, 0xc7}, + {GC5035_8BIT, 0x3622, 0x0f}, + {GC5035_8BIT, 0x3625, 0x10}, + {GC5035_8BIT, 0x3630, 0x55}, + {GC5035_8BIT, 0x3631, 0xf4}, + {GC5035_8BIT, 0x3632, 0x00}, + {GC5035_8BIT, 0x3633, 0x34}, + {GC5035_8BIT, 0x3634, 0x02}, + {GC5035_8BIT, 0x364d, 0x0d}, + {GC5035_8BIT, 0x364f, 0xdd}, + {GC5035_8BIT, 0x3660, 0x04}, + {GC5035_8BIT, 0x3662, 0x10}, + {GC5035_8BIT, 0x3663, 0xf1}, + {GC5035_8BIT, 0x3665, 0x00}, + {GC5035_8BIT, 0x3666, 0x20}, + {GC5035_8BIT, 0x3667, 0x00}, + {GC5035_8BIT, 0x366a, 0x80}, + {GC5035_8BIT, 0x3680, 0xe0}, + {GC5035_8BIT, 0x3681, 0x00}, + {GC5035_8BIT, 0x3700, 0x42}, + {GC5035_8BIT, 0x3701, 0x14}, + {GC5035_8BIT, 0x3702, 0xa0}, + {GC5035_8BIT, 0x3703, 0xd8}, + {GC5035_8BIT, 0x3704, 0x78}, + {GC5035_8BIT, 0x3705, 0x02}, + {GC5035_8BIT, 0x370a, 0x00}, + {GC5035_8BIT, 0x370b, 0x20}, + {GC5035_8BIT, 0x370c, 0x0c}, + {GC5035_8BIT, 0x370d, 0x11}, + {GC5035_8BIT, 0x370e, 0x00}, + {GC5035_8BIT, 0x370f, 0x40}, + {GC5035_8BIT, 0x3710, 0x00}, + {GC5035_8BIT, 0x371a, 0x1c}, + {GC5035_8BIT, 0x371b, 0x05}, + {GC5035_8BIT, 0x371c, 0x01}, + {GC5035_8BIT, 0x371e, 0xa1}, + {GC5035_8BIT, 0x371f, 0x0c}, + {GC5035_8BIT, 0x3721, 0x00}, + {GC5035_8BIT, 0x3724, 0x10}, + {GC5035_8BIT, 0x3726, 0x00}, + {GC5035_8BIT, 0x372a, 0x01}, + {GC5035_8BIT, 0x3730, 0x10}, + {GC5035_8BIT, 0x3738, 0x22}, + {GC5035_8BIT, 0x3739, 0xe5}, + {GC5035_8BIT, 0x373a, 0x50}, + {GC5035_8BIT, 0x373b, 0x02}, + {GC5035_8BIT, 0x373c, 0x41}, + {GC5035_8BIT, 0x373f, 0x02}, + {GC5035_8BIT, 0x3740, 0x42}, + {GC5035_8BIT, 0x3741, 0x02}, + {GC5035_8BIT, 0x3742, 0x18}, + {GC5035_8BIT, 0x3743, 0x01}, + {GC5035_8BIT, 0x3744, 0x02}, + {GC5035_8BIT, 0x3747, 0x10}, + {GC5035_8BIT, 0x374c, 0x04}, + {GC5035_8BIT, 0x3751, 0xf0}, + {GC5035_8BIT, 0x3752, 0x00}, + {GC5035_8BIT, 0x3753, 0x00}, + {GC5035_8BIT, 0x3754, 0xc0}, + {GC5035_8BIT, 0x3755, 0x00}, + {GC5035_8BIT, 0x3756, 0x1a}, + {GC5035_8BIT, 0x3758, 0x00}, + {GC5035_8BIT, 0x3759, 0x0f}, + {GC5035_8BIT, 0x376b, 0x44}, + {GC5035_8BIT, 0x375c, 0x04}, + {GC5035_8BIT, 0x3774, 0x10}, + {GC5035_8BIT, 0x3776, 0x00}, + {GC5035_8BIT, 0x377f, 0x08}, + {GC5035_8BIT, 0x3780, 0x22}, + {GC5035_8BIT, 0x3781, 0x0c}, + {GC5035_8BIT, 0x3784, 0x2c}, + {GC5035_8BIT, 0x3785, 0x1e}, + {GC5035_8BIT, 0x378f, 0xf5}, + {GC5035_8BIT, 0x3791, 0xb0}, + {GC5035_8BIT, 0x3795, 0x00}, + {GC5035_8BIT, 0x3796, 0x64}, + {GC5035_8BIT, 0x3797, 0x11}, + {GC5035_8BIT, 0x3798, 0x30}, + {GC5035_8BIT, 0x3799, 0x41}, + {GC5035_8BIT, 0x379a, 0x07}, + {GC5035_8BIT, 0x379b, 0xb0}, + {GC5035_8BIT, 0x379c, 0x0c}, + {GC5035_8BIT, 0x37c5, 0x00}, + {GC5035_8BIT, 0x37c6, 0x00}, + {GC5035_8BIT, 0x37c7, 0x00}, + {GC5035_8BIT, 0x37c9, 0x00}, + {GC5035_8BIT, 0x37ca, 0x00}, + {GC5035_8BIT, 0x37cb, 0x00}, + {GC5035_8BIT, 0x37de, 0x00}, + {GC5035_8BIT, 0x37df, 0x00}, + {GC5035_8BIT, 0x3800, 0x00}, + {GC5035_8BIT, 0x3801, 0x00}, + {GC5035_8BIT, 0x3802, 0x00}, + {GC5035_8BIT, 0x3804, 0x0a}, + {GC5035_8BIT, 0x3805, 0x3f}, + {GC5035_8BIT, 0x3810, 0x00}, + {GC5035_8BIT, 0x3812, 0x00}, + {GC5035_8BIT, 0x3823, 0x00}, + {GC5035_8BIT, 0x3824, 0x00}, + {GC5035_8BIT, 0x3825, 0x00}, + {GC5035_8BIT, 0x3826, 0x00}, + {GC5035_8BIT, 0x3827, 0x00}, + {GC5035_8BIT, 0x382a, 0x04}, + {GC5035_8BIT, 0x3a04, 0x06}, + {GC5035_8BIT, 0x3a05, 0x14}, + {GC5035_8BIT, 0x3a06, 0x00}, + {GC5035_8BIT, 0x3a07, 0xfe}, + {GC5035_8BIT, 0x3b00, 0x00}, + {GC5035_8BIT, 0x3b02, 0x00}, + {GC5035_8BIT, 0x3b03, 0x00}, + {GC5035_8BIT, 0x3b04, 0x00}, + {GC5035_8BIT, 0x3b05, 0x00}, + {GC5035_8BIT, 0x3e07, 0x20}, + {GC5035_8BIT, 0x4000, 0x08}, + {GC5035_8BIT, 0x4001, 0x04}, + {GC5035_8BIT, 0x4002, 0x45}, + {GC5035_8BIT, 0x4004, 0x08}, + {GC5035_8BIT, 0x4005, 0x18}, + {GC5035_8BIT, 0x4006, 0x20}, + {GC5035_8BIT, 0x4008, 0x24}, + {GC5035_8BIT, 0x4009, 0x10}, + {GC5035_8BIT, 0x400c, 0x00}, + {GC5035_8BIT, 0x400d, 0x00}, + {GC5035_8BIT, 0x4058, 0x00}, + {GC5035_8BIT, 0x404e, 0x37}, + {GC5035_8BIT, 0x404f, 0x8f}, + {GC5035_8BIT, 0x4058, 0x00}, + {GC5035_8BIT, 0x4101, 0xb2}, + {GC5035_8BIT, 0x4303, 0x00}, + {GC5035_8BIT, 0x4304, 0x08}, + {GC5035_8BIT, 0x4307, 0x31}, + {GC5035_8BIT, 0x4311, 0x04}, + {GC5035_8BIT, 0x4315, 0x01}, + {GC5035_8BIT, 0x4511, 0x05}, + {GC5035_8BIT, 0x4512, 0x01}, + {GC5035_8BIT, 0x4806, 0x00}, + {GC5035_8BIT, 0x4816, 0x52}, + {GC5035_8BIT, 0x481f, 0x30}, + {GC5035_8BIT, 0x4826, 0x2c}, + {GC5035_8BIT, 0x4831, 0x64}, + {GC5035_8BIT, 0x4d00, 0x04}, + {GC5035_8BIT, 0x4d01, 0x71}, + {GC5035_8BIT, 0x4d02, 0xfd}, + {GC5035_8BIT, 0x4d03, 0xf5}, + {GC5035_8BIT, 0x4d04, 0x0c}, + {GC5035_8BIT, 0x4d05, 0xcc}, + {GC5035_8BIT, 0x4837, 0x0a}, + {GC5035_8BIT, 0x5000, 0x06}, + {GC5035_8BIT, 0x5001, 0x01}, + {GC5035_8BIT, 0x5003, 0x20}, + {GC5035_8BIT, 0x5046, 0x0a}, + {GC5035_8BIT, 0x5013, 0x00}, + {GC5035_8BIT, 0x5046, 0x0a}, + {GC5035_8BIT, 0x5780, 0x1c}, + {GC5035_8BIT, 0x5786, 0x20}, + {GC5035_8BIT, 0x5787, 0x10}, + {GC5035_8BIT, 0x5788, 0x18}, + {GC5035_8BIT, 0x578a, 0x04}, + {GC5035_8BIT, 0x578b, 0x02}, + {GC5035_8BIT, 0x578c, 0x02}, + {GC5035_8BIT, 0x578e, 0x06}, + {GC5035_8BIT, 0x578f, 0x02}, + {GC5035_8BIT, 0x5790, 0x02}, + {GC5035_8BIT, 0x5791, 0xff}, + {GC5035_8BIT, 0x5842, 0x01}, + {GC5035_8BIT, 0x5843, 0x2b}, + {GC5035_8BIT, 0x5844, 0x01}, + {GC5035_8BIT, 0x5845, 0x92}, + {GC5035_8BIT, 0x5846, 0x01}, + {GC5035_8BIT, 0x5847, 0x8f}, + {GC5035_8BIT, 0x5848, 0x01}, + {GC5035_8BIT, 0x5849, 0x0c}, + {GC5035_8BIT, 0x5e00, 0x00}, + {GC5035_8BIT, 0x5e10, 0x0c}, + {GC5035_8BIT, 0x0100, 0x00}, + {GC5035_TOK_TERM, 0, 0} +}; + +/* + * 654x496 30fps 17ms VBlanking 2lane 10Bit (Scaling) + */ +static struct gc5035_reg const gc5035_654x496[] = { + {GC5035_8BIT, 0x3501, 0x3d}, + {GC5035_8BIT, 0x3502, 0x00}, + {GC5035_8BIT, 0x3708, 0xe6}, + {GC5035_8BIT, 0x3709, 0xc7}, + {GC5035_8BIT, 0x3803, 0x00}, + {GC5035_8BIT, 0x3806, 0x07}, + {GC5035_8BIT, 0x3807, 0xa3}, + {GC5035_8BIT, 0x3808, 0x02}, + {GC5035_8BIT, 0x3809, 0x90}, + {GC5035_8BIT, 0x380a, 0x01}, + {GC5035_8BIT, 0x380b, 0xf0}, + {GC5035_8BIT, 0x380c, 0x0a}, + {GC5035_8BIT, 0x380d, 0x80}, + {GC5035_8BIT, 0x380e, 0x07}, + {GC5035_8BIT, 0x380f, 0xc0}, + {GC5035_8BIT, 0x3811, 0x08}, + {GC5035_8BIT, 0x3813, 0x02}, + {GC5035_8BIT, 0x3814, 0x31}, + {GC5035_8BIT, 0x3815, 0x31}, + {GC5035_8BIT, 0x3820, 0x04}, + {GC5035_8BIT, 0x3821, 0x1f}, + {GC5035_8BIT, 0x5002, 0x80}, + {GC5035_8BIT, 0x0100, 0x01}, + {GC5035_TOK_TERM, 0, 0} +}; + +/* + * 1296x976 30fps 17ms VBlanking 2lane 10Bit (Scaling) +*DS from 2592x1952 +*/ +static struct gc5035_reg const gc5035_1296x976[] = { + {GC5035_8BIT, 0x3501, 0x7b}, + {GC5035_8BIT, 0x3502, 0x00}, + {GC5035_8BIT, 0x3708, 0xe2}, + {GC5035_8BIT, 0x3709, 0xc3}, + + {GC5035_8BIT, 0x3800, 0x00}, + {GC5035_8BIT, 0x3801, 0x00}, + {GC5035_8BIT, 0x3802, 0x00}, + {GC5035_8BIT, 0x3803, 0x00}, + + {GC5035_8BIT, 0x3804, 0x0a}, + {GC5035_8BIT, 0x3805, 0x3f}, + {GC5035_8BIT, 0x3806, 0x07}, + {GC5035_8BIT, 0x3807, 0xA3}, + + {GC5035_8BIT, 0x3808, 0x05}, + {GC5035_8BIT, 0x3809, 0x10}, + {GC5035_8BIT, 0x380a, 0x03}, + {GC5035_8BIT, 0x380b, 0xD0}, + + {GC5035_8BIT, 0x380c, 0x0a}, + {GC5035_8BIT, 0x380d, 0x80}, + {GC5035_8BIT, 0x380e, 0x07}, + {GC5035_8BIT, 0x380f, 0xc0}, + + {GC5035_8BIT, 0x3810, 0x00}, + {GC5035_8BIT, 0x3811, 0x10}, + {GC5035_8BIT, 0x3812, 0x00}, + {GC5035_8BIT, 0x3813, 0x02}, + + {GC5035_8BIT, 0x3814, 0x11}, /*X subsample control*/ + {GC5035_8BIT, 0x3815, 0x11}, /*Y subsample control*/ + {GC5035_8BIT, 0x3820, 0x00}, + {GC5035_8BIT, 0x3821, 0x1e}, + {GC5035_8BIT, 0x5002, 0x00}, + {GC5035_8BIT, 0x5041, 0x84}, /* scale is auto enabled */ + {GC5035_8BIT, 0x0100, 0x01}, + {GC5035_TOK_TERM, 0, 0} + +}; + + +/* + * 336x256 30fps 17ms VBlanking 2lane 10Bit (Scaling) + DS from 2564x1956 + */ +static struct gc5035_reg const gc5035_336x256[] = { + {GC5035_8BIT, 0x3501, 0x3d}, + {GC5035_8BIT, 0x3502, 0x00}, + {GC5035_8BIT, 0x3708, 0xe6}, + {GC5035_8BIT, 0x3709, 0xc7}, + {GC5035_8BIT, 0x3806, 0x07}, + {GC5035_8BIT, 0x3807, 0xa3}, + {GC5035_8BIT, 0x3808, 0x01}, + {GC5035_8BIT, 0x3809, 0x50}, + {GC5035_8BIT, 0x380a, 0x01}, + {GC5035_8BIT, 0x380b, 0x00}, + {GC5035_8BIT, 0x380c, 0x0a}, + {GC5035_8BIT, 0x380d, 0x80}, + {GC5035_8BIT, 0x380e, 0x07}, + {GC5035_8BIT, 0x380f, 0xc0}, + {GC5035_8BIT, 0x3811, 0x1E}, + {GC5035_8BIT, 0x3814, 0x31}, + {GC5035_8BIT, 0x3815, 0x31}, + {GC5035_8BIT, 0x3820, 0x04}, + {GC5035_8BIT, 0x3821, 0x1f}, + {GC5035_8BIT, 0x5002, 0x80}, + {GC5035_8BIT, 0x0100, 0x01}, + {GC5035_TOK_TERM, 0, 0} +}; + +/* + * 336x256 30fps 17ms VBlanking 2lane 10Bit (Scaling) + DS from 2368x1956 + */ +static struct gc5035_reg const gc5035_368x304[] = { + {GC5035_8BIT, 0x3501, 0x3d}, + {GC5035_8BIT, 0x3502, 0x00}, + {GC5035_8BIT, 0x3708, 0xe6}, + {GC5035_8BIT, 0x3709, 0xc7}, + {GC5035_8BIT, 0x3808, 0x01}, + {GC5035_8BIT, 0x3809, 0x70}, + {GC5035_8BIT, 0x380a, 0x01}, + {GC5035_8BIT, 0x380b, 0x30}, + {GC5035_8BIT, 0x380c, 0x0a}, + {GC5035_8BIT, 0x380d, 0x80}, + {GC5035_8BIT, 0x380e, 0x07}, + {GC5035_8BIT, 0x380f, 0xc0}, + {GC5035_8BIT, 0x3811, 0x80}, + {GC5035_8BIT, 0x3814, 0x31}, + {GC5035_8BIT, 0x3815, 0x31}, + {GC5035_8BIT, 0x3820, 0x04}, + {GC5035_8BIT, 0x3821, 0x1f}, + {GC5035_8BIT, 0x5002, 0x80}, + {GC5035_8BIT, 0x0100, 0x01}, + {GC5035_TOK_TERM, 0, 0} +}; + +/* + * gc5035_192x160 30fps 17ms VBlanking 2lane 10Bit (Scaling) + DS from 2460x1956 + */ +static struct gc5035_reg const gc5035_192x160[] = { + {GC5035_8BIT, 0x3501, 0x7b}, + {GC5035_8BIT, 0x3502, 0x80}, + {GC5035_8BIT, 0x3708, 0xe2}, + {GC5035_8BIT, 0x3709, 0xc3}, + {GC5035_8BIT, 0x3804, 0x0a}, + {GC5035_8BIT, 0x3805, 0x3f}, + {GC5035_8BIT, 0x3806, 0x07}, + {GC5035_8BIT, 0x3807, 0xA3}, + {GC5035_8BIT, 0x3808, 0x00}, + {GC5035_8BIT, 0x3809, 0xC0}, + {GC5035_8BIT, 0x380a, 0x00}, + {GC5035_8BIT, 0x380b, 0xA0}, + {GC5035_8BIT, 0x380c, 0x0a}, + {GC5035_8BIT, 0x380d, 0x80}, + {GC5035_8BIT, 0x380e, 0x07}, + {GC5035_8BIT, 0x380f, 0xc0}, + {GC5035_8BIT, 0x3811, 0x40}, + {GC5035_8BIT, 0x3813, 0x00}, + {GC5035_8BIT, 0x3814, 0x31}, + {GC5035_8BIT, 0x3815, 0x31}, + {GC5035_8BIT, 0x3820, 0x04}, + {GC5035_8BIT, 0x3821, 0x1f}, + {GC5035_8BIT, 0x5002, 0x80}, + {GC5035_8BIT, 0x0100, 0x01}, + {GC5035_TOK_TERM, 0, 0} +}; + + +static struct gc5035_reg const gc5035_736x496[] = { + {GC5035_8BIT, 0x3501, 0x3d}, + {GC5035_8BIT, 0x3502, 0x00}, + {GC5035_8BIT, 0x3708, 0xe6}, + {GC5035_8BIT, 0x3709, 0xc7}, + {GC5035_8BIT, 0x3803, 0x68}, + {GC5035_8BIT, 0x3806, 0x07}, + {GC5035_8BIT, 0x3807, 0x3b}, + {GC5035_8BIT, 0x3808, 0x02}, + {GC5035_8BIT, 0x3809, 0xe0}, + {GC5035_8BIT, 0x380a, 0x01}, + {GC5035_8BIT, 0x380b, 0xf0}, + {GC5035_8BIT, 0x380c, 0x0a}, /*hts*/ + {GC5035_8BIT, 0x380d, 0x80}, + {GC5035_8BIT, 0x380e, 0x07}, /*vts*/ + {GC5035_8BIT, 0x380f, 0xc0}, + {GC5035_8BIT, 0x3811, 0x08}, + {GC5035_8BIT, 0x3813, 0x02}, + {GC5035_8BIT, 0x3814, 0x31}, + {GC5035_8BIT, 0x3815, 0x31}, + {GC5035_8BIT, 0x3820, 0x04}, + {GC5035_8BIT, 0x3821, 0x1f}, + {GC5035_8BIT, 0x5002, 0x80}, + {GC5035_8BIT, 0x0100, 0x01}, + {GC5035_TOK_TERM, 0, 0} +}; + +/* +static struct gc5035_reg const gc5035_736x496[] = { + {GC5035_8BIT, 0x3501, 0x7b}, + {GC5035_8BIT, 0x3502, 0x00}, + {GC5035_8BIT, 0x3708, 0xe6}, + {GC5035_8BIT, 0x3709, 0xc3}, + {GC5035_8BIT, 0x3803, 0x00}, + {GC5035_8BIT, 0x3806, 0x07}, + {GC5035_8BIT, 0x3807, 0xa3}, + {GC5035_8BIT, 0x3808, 0x02}, + {GC5035_8BIT, 0x3809, 0xe0}, + {GC5035_8BIT, 0x380a, 0x01}, + {GC5035_8BIT, 0x380b, 0xf0}, + {GC5035_8BIT, 0x380c, 0x0d}, + {GC5035_8BIT, 0x380d, 0xb0}, + {GC5035_8BIT, 0x380e, 0x05}, + {GC5035_8BIT, 0x380f, 0xf2}, + {GC5035_8BIT, 0x3811, 0x08}, + {GC5035_8BIT, 0x3813, 0x02}, + {GC5035_8BIT, 0x3814, 0x31}, + {GC5035_8BIT, 0x3815, 0x31}, + {GC5035_8BIT, 0x3820, 0x01}, + {GC5035_8BIT, 0x3821, 0x1f}, + {GC5035_8BIT, 0x5002, 0x00}, + {GC5035_8BIT, 0x0100, 0x01}, + {GC5035_TOK_TERM, 0, 0} +}; +*/ +/* + * 976x556 30fps 8.8ms VBlanking 2lane 10Bit (Scaling) + */ +static struct gc5035_reg const gc5035_976x556[] = { + {GC5035_8BIT, 0x3501, 0x7b}, + {GC5035_8BIT, 0x3502, 0x00}, + {GC5035_8BIT, 0x3708, 0xe2}, + {GC5035_8BIT, 0x3709, 0xc3}, + {GC5035_8BIT, 0x3803, 0xf0}, + {GC5035_8BIT, 0x3806, 0x06}, + {GC5035_8BIT, 0x3807, 0xa7}, + {GC5035_8BIT, 0x3808, 0x03}, + {GC5035_8BIT, 0x3809, 0xd0}, + {GC5035_8BIT, 0x380a, 0x02}, + {GC5035_8BIT, 0x380b, 0x2C}, + {GC5035_8BIT, 0x380c, 0x0a}, + {GC5035_8BIT, 0x380d, 0x80}, + {GC5035_8BIT, 0x380e, 0x07}, + {GC5035_8BIT, 0x380f, 0xc0}, + {GC5035_8BIT, 0x3811, 0x10}, + {GC5035_8BIT, 0x3813, 0x02}, + {GC5035_8BIT, 0x3814, 0x11}, + {GC5035_8BIT, 0x3815, 0x11}, + {GC5035_8BIT, 0x3820, 0x00}, + {GC5035_8BIT, 0x3821, 0x1e}, + {GC5035_8BIT, 0x5002, 0x80}, + {GC5035_8BIT, 0x0100, 0x01}, + {GC5035_TOK_TERM, 0, 0} +}; + +/*DS from 2624x1492*/ +static struct gc5035_reg const gc5035_1296x736[] = { + {GC5035_8BIT, 0x3501, 0x7b}, + {GC5035_8BIT, 0x3502, 0x00}, + {GC5035_8BIT, 0x3708, 0xe2}, + {GC5035_8BIT, 0x3709, 0xc3}, + + {GC5035_8BIT, 0x3800, 0x00}, + {GC5035_8BIT, 0x3801, 0x00}, + {GC5035_8BIT, 0x3802, 0x00}, + {GC5035_8BIT, 0x3803, 0x00}, + + {GC5035_8BIT, 0x3804, 0x0a}, + {GC5035_8BIT, 0x3805, 0x3f}, + {GC5035_8BIT, 0x3806, 0x07}, + {GC5035_8BIT, 0x3807, 0xA3}, + + {GC5035_8BIT, 0x3808, 0x05}, + {GC5035_8BIT, 0x3809, 0x10}, + {GC5035_8BIT, 0x380a, 0x02}, + {GC5035_8BIT, 0x380b, 0xe0}, + + {GC5035_8BIT, 0x380c, 0x0a}, + {GC5035_8BIT, 0x380d, 0x80}, + {GC5035_8BIT, 0x380e, 0x07}, + {GC5035_8BIT, 0x380f, 0xc0}, + + {GC5035_8BIT, 0x3813, 0xE8}, + + {GC5035_8BIT, 0x3814, 0x11}, /*X subsample control*/ + {GC5035_8BIT, 0x3815, 0x11}, /*Y subsample control*/ + {GC5035_8BIT, 0x3820, 0x00}, + {GC5035_8BIT, 0x3821, 0x1e}, + {GC5035_8BIT, 0x5002, 0x00}, + {GC5035_8BIT, 0x5041, 0x84}, /* scale is auto enabled */ + {GC5035_8BIT, 0x0100, 0x01}, + {GC5035_TOK_TERM, 0, 0} +}; + +static struct gc5035_reg const gc5035_1636p_30fps[] = { + {GC5035_8BIT, 0x3501, 0x7b}, + {GC5035_8BIT, 0x3502, 0x00}, + {GC5035_8BIT, 0x3708, 0xe2}, + {GC5035_8BIT, 0x3709, 0xc3}, + {GC5035_8BIT, 0x3803, 0xf0}, + {GC5035_8BIT, 0x3806, 0x06}, + {GC5035_8BIT, 0x3807, 0xa7}, + {GC5035_8BIT, 0x3808, 0x06}, + {GC5035_8BIT, 0x3809, 0x64}, + {GC5035_8BIT, 0x380a, 0x04}, + {GC5035_8BIT, 0x380b, 0x48}, + {GC5035_8BIT, 0x380c, 0x0a}, /*hts*/ + {GC5035_8BIT, 0x380d, 0x80}, + {GC5035_8BIT, 0x380e, 0x07}, /*vts*/ + {GC5035_8BIT, 0x380f, 0xc0}, + {GC5035_8BIT, 0x3811, 0x02}, + {GC5035_8BIT, 0x3813, 0x02}, + {GC5035_8BIT, 0x3814, 0x11}, + {GC5035_8BIT, 0x3815, 0x11}, + {GC5035_8BIT, 0x3820, 0x00}, + {GC5035_8BIT, 0x3821, 0x1e}, + {GC5035_8BIT, 0x5002, 0x80}, + {GC5035_8BIT, 0x0100, 0x01}, + {GC5035_TOK_TERM, 0, 0} +}; + +static struct gc5035_reg const gc5035_1616x1216_30fps[] = { + {GC5035_8BIT, 0x3501, 0x7b}, + {GC5035_8BIT, 0x3502, 0x80}, + {GC5035_8BIT, 0x3708, 0xe2}, + {GC5035_8BIT, 0x3709, 0xc3}, + {GC5035_8BIT, 0x3800, 0x00}, /*{3800,3801} Array X start*/ + {GC5035_8BIT, 0x3801, 0x08}, /* 04 //{3800,3801} Array X start*/ + {GC5035_8BIT, 0x3802, 0x00}, /*{3802,3803} Array Y start*/ + {GC5035_8BIT, 0x3803, 0x04}, /* 00 //{3802,3803} Array Y start*/ + {GC5035_8BIT, 0x3804, 0x0a}, /*{3804,3805} Array X end*/ + {GC5035_8BIT, 0x3805, 0x37}, /* 3b //{3804,3805} Array X end*/ + {GC5035_8BIT, 0x3806, 0x07}, /*{3806,3807} Array Y end*/ + {GC5035_8BIT, 0x3807, 0x9f}, /* a3 //{3806,3807} Array Y end*/ + {GC5035_8BIT, 0x3808, 0x06}, /*{3808,3809} Final output H size*/ + {GC5035_8BIT, 0x3809, 0x50}, /*{3808,3809} Final output H size*/ + {GC5035_8BIT, 0x380a, 0x04}, /*{380a,380b} Final output V size*/ + {GC5035_8BIT, 0x380b, 0xc0}, /*{380a,380b} Final output V size*/ + {GC5035_8BIT, 0x380c, 0x0a}, /*{380c,380d} HTS*/ + {GC5035_8BIT, 0x380d, 0x80}, /*{380c,380d} HTS*/ + {GC5035_8BIT, 0x380e, 0x07}, /*{380e,380f} VTS*/ + {GC5035_8BIT, 0x380f, 0xc0}, /* bc //{380e,380f} VTS*/ + {GC5035_8BIT, 0x3810, 0x00}, /*{3810,3811} windowing X offset*/ + {GC5035_8BIT, 0x3811, 0x10}, /*{3810,3811} windowing X offset*/ + {GC5035_8BIT, 0x3812, 0x00}, /*{3812,3813} windowing Y offset*/ + {GC5035_8BIT, 0x3813, 0x06}, /*{3812,3813} windowing Y offset*/ + {GC5035_8BIT, 0x3814, 0x11}, /*X subsample control*/ + {GC5035_8BIT, 0x3815, 0x11}, /*Y subsample control*/ + {GC5035_8BIT, 0x3820, 0x00}, /*FLIP/Binnning control*/ + {GC5035_8BIT, 0x3821, 0x1e}, /*MIRROR control*/ + {GC5035_8BIT, 0x5002, 0x00}, + {GC5035_8BIT, 0x5041, 0x84}, + {GC5035_8BIT, 0x0100, 0x01}, + {GC5035_TOK_TERM, 0, 0} +}; + + +/* + * 1940x1096 30fps 8.8ms VBlanking 2lane 10bit (Scaling) + */ +static struct gc5035_reg const gc5035_1940x1096[] = { + {GC5035_8BIT, 0x3501, 0x7b}, + {GC5035_8BIT, 0x3502, 0x00}, + {GC5035_8BIT, 0x3708, 0xe2}, + {GC5035_8BIT, 0x3709, 0xc3}, + {GC5035_8BIT, 0x3803, 0xf0}, + {GC5035_8BIT, 0x3806, 0x06}, + {GC5035_8BIT, 0x3807, 0xa7}, + {GC5035_8BIT, 0x3808, 0x07}, + {GC5035_8BIT, 0x3809, 0x94}, + {GC5035_8BIT, 0x380a, 0x04}, + {GC5035_8BIT, 0x380b, 0x48}, + {GC5035_8BIT, 0x380c, 0x0a}, + {GC5035_8BIT, 0x380d, 0x80}, + {GC5035_8BIT, 0x380e, 0x07}, + {GC5035_8BIT, 0x380f, 0xc0}, + {GC5035_8BIT, 0x3811, 0x02}, + {GC5035_8BIT, 0x3813, 0x02}, + {GC5035_8BIT, 0x3814, 0x11}, + {GC5035_8BIT, 0x3815, 0x11}, + {GC5035_8BIT, 0x3820, 0x00}, + {GC5035_8BIT, 0x3821, 0x1e}, + {GC5035_8BIT, 0x5002, 0x80}, + {GC5035_8BIT, 0x0100, 0x01}, + {GC5035_TOK_TERM, 0, 0} +}; + +static struct gc5035_reg const gc5035_2592x1456_30fps[] = { + {GC5035_8BIT, 0x3501, 0x7b}, + {GC5035_8BIT, 0x3502, 0x00}, + {GC5035_8BIT, 0x3708, 0xe2}, + {GC5035_8BIT, 0x3709, 0xc3}, + {GC5035_8BIT, 0x3800, 0x00}, + {GC5035_8BIT, 0x3801, 0x00}, + {GC5035_8BIT, 0x3802, 0x00}, + {GC5035_8BIT, 0x3803, 0xf0}, + {GC5035_8BIT, 0x3804, 0x0a}, + {GC5035_8BIT, 0x3805, 0x3f}, + {GC5035_8BIT, 0x3806, 0x06}, + {GC5035_8BIT, 0x3807, 0xa4}, + {GC5035_8BIT, 0x3808, 0x0a}, + {GC5035_8BIT, 0x3809, 0x20}, + {GC5035_8BIT, 0x380a, 0x05}, + {GC5035_8BIT, 0x380b, 0xb0}, + {GC5035_8BIT, 0x380c, 0x0a}, + {GC5035_8BIT, 0x380d, 0x80}, + {GC5035_8BIT, 0x380e, 0x07}, + {GC5035_8BIT, 0x380f, 0xc0}, + {GC5035_8BIT, 0x3811, 0x10}, + {GC5035_8BIT, 0x3813, 0x00}, + {GC5035_8BIT, 0x3814, 0x11}, + {GC5035_8BIT, 0x3815, 0x11}, + {GC5035_8BIT, 0x3820, 0x00}, + {GC5035_8BIT, 0x3821, 0x1e}, + {GC5035_8BIT, 0x5002, 0x00}, + {GC5035_TOK_TERM, 0, 0} +}; + +static struct gc5035_reg const gc5035_2576x1456_30fps[] = { + {GC5035_8BIT, 0x3501, 0x7b}, + {GC5035_8BIT, 0x3502, 0x00}, + {GC5035_8BIT, 0x3708, 0xe2}, + {GC5035_8BIT, 0x3709, 0xc3}, + {GC5035_8BIT, 0x3800, 0x00}, + {GC5035_8BIT, 0x3801, 0x00}, + {GC5035_8BIT, 0x3802, 0x00}, + {GC5035_8BIT, 0x3803, 0xf0}, + {GC5035_8BIT, 0x3804, 0x0a}, + {GC5035_8BIT, 0x3805, 0x3f}, + {GC5035_8BIT, 0x3806, 0x06}, + {GC5035_8BIT, 0x3807, 0xa4}, + {GC5035_8BIT, 0x3808, 0x0a}, + {GC5035_8BIT, 0x3809, 0x10}, + {GC5035_8BIT, 0x380a, 0x05}, + {GC5035_8BIT, 0x380b, 0xb0}, + {GC5035_8BIT, 0x380c, 0x0a}, + {GC5035_8BIT, 0x380d, 0x80}, + {GC5035_8BIT, 0x380e, 0x07}, + {GC5035_8BIT, 0x380f, 0xc0}, + {GC5035_8BIT, 0x3811, 0x18}, + {GC5035_8BIT, 0x3813, 0x00}, + {GC5035_8BIT, 0x3814, 0x11}, + {GC5035_8BIT, 0x3815, 0x11}, + {GC5035_8BIT, 0x3820, 0x00}, + {GC5035_8BIT, 0x3821, 0x1e}, + {GC5035_8BIT, 0x5002, 0x00}, + {GC5035_TOK_TERM, 0, 0} +}; + +/* + * 2592x1944 30fps 0.6ms VBlanking 2lane 10Bit + */ +static struct gc5035_reg const gc5035_2592x1944_30fps[] = { + {GC5035_8BIT, 0x3501, 0x7b}, + {GC5035_8BIT, 0x3502, 0x00}, + {GC5035_8BIT, 0x3708, 0xe2}, + {GC5035_8BIT, 0x3709, 0xc3}, + {GC5035_8BIT, 0x3803, 0x00}, + {GC5035_8BIT, 0x3806, 0x07}, + {GC5035_8BIT, 0x3807, 0xa3}, + {GC5035_8BIT, 0x3808, 0x0a}, + {GC5035_8BIT, 0x3809, 0x20}, + {GC5035_8BIT, 0x380a, 0x07}, + {GC5035_8BIT, 0x380b, 0x98}, + {GC5035_8BIT, 0x380c, 0x0a}, + {GC5035_8BIT, 0x380d, 0x80}, + {GC5035_8BIT, 0x380e, 0x07}, + {GC5035_8BIT, 0x380f, 0xc0}, + {GC5035_8BIT, 0x3811, 0x10}, + {GC5035_8BIT, 0x3813, 0x00}, + {GC5035_8BIT, 0x3814, 0x11}, + {GC5035_8BIT, 0x3815, 0x11}, + {GC5035_8BIT, 0x3820, 0x00}, + {GC5035_8BIT, 0x3821, 0x1e}, + {GC5035_8BIT, 0x5002, 0x00}, + {GC5035_8BIT, 0x0100, 0x01}, + {GC5035_TOK_TERM, 0, 0} +}; + +/* + * 11:9 Full FOV Output, expected FOV Res: 2346x1920 + * ISP Effect Res: 1408x1152 + * Sensor out: 1424x1168, DS From: 2380x1952 + * + * WA: Left Offset: 8, Hor scal: 64 + */ +static struct gc5035_reg const gc5035_1424x1168_30fps[] = { + {GC5035_8BIT, 0x3501, 0x3b}, /* long exposure[15:8] */ + {GC5035_8BIT, 0x3502, 0x80}, /* long exposure[7:0] */ + {GC5035_8BIT, 0x3708, 0xe2}, + {GC5035_8BIT, 0x3709, 0xc3}, + {GC5035_8BIT, 0x3800, 0x00}, /* TIMING_X_ADDR_START */ + {GC5035_8BIT, 0x3801, 0x50}, /* 80 */ + {GC5035_8BIT, 0x3802, 0x00}, /* TIMING_Y_ADDR_START */ + {GC5035_8BIT, 0x3803, 0x02}, /* 2 */ + {GC5035_8BIT, 0x3804, 0x09}, /* TIMING_X_ADDR_END */ + {GC5035_8BIT, 0x3805, 0xdd}, /* 2525 */ + {GC5035_8BIT, 0x3806, 0x07}, /* TIMING_Y_ADDR_END */ + {GC5035_8BIT, 0x3807, 0xa1}, /* 1953 */ + {GC5035_8BIT, 0x3808, 0x05}, /* TIMING_X_OUTPUT_SIZE */ + {GC5035_8BIT, 0x3809, 0x90}, /* 1424 */ + {GC5035_8BIT, 0x380a, 0x04}, /* TIMING_Y_OUTPUT_SIZE */ + {GC5035_8BIT, 0x380b, 0x90}, /* 1168 */ + {GC5035_8BIT, 0x380c, 0x0a}, /* TIMING_HTS */ + {GC5035_8BIT, 0x380d, 0x80}, + {GC5035_8BIT, 0x380e, 0x07}, /* TIMING_VTS */ + {GC5035_8BIT, 0x380f, 0xc0}, + {GC5035_8BIT, 0x3810, 0x00}, /* TIMING_ISP_X_WIN */ + {GC5035_8BIT, 0x3811, 0x02}, /* 2 */ + {GC5035_8BIT, 0x3812, 0x00}, /* TIMING_ISP_Y_WIN */ + {GC5035_8BIT, 0x3813, 0x00}, /* 0 */ + {GC5035_8BIT, 0x3814, 0x11}, /* TIME_X_INC */ + {GC5035_8BIT, 0x3815, 0x11}, /* TIME_Y_INC */ + {GC5035_8BIT, 0x3820, 0x00}, + {GC5035_8BIT, 0x3821, 0x1e}, + {GC5035_8BIT, 0x5002, 0x00}, + {GC5035_8BIT, 0x5041, 0x84}, /* scale is auto enabled */ + {GC5035_8BIT, 0x0100, 0x01}, + {GC5035_TOK_TERM, 0, 0} +}; + +/* + * 3:2 Full FOV Output, expected FOV Res: 2560x1706 + * ISP Effect Res: 720x480 + * Sensor out: 736x496, DS From 2616x1764 + */ +static struct gc5035_reg const gc5035_736x496_30fps[] = { + {GC5035_8BIT, 0x3501, 0x3b}, /* long exposure[15:8] */ + {GC5035_8BIT, 0x3502, 0x80}, /* long exposure[7:0] */ + {GC5035_8BIT, 0x3708, 0xe2}, + {GC5035_8BIT, 0x3709, 0xc3}, + {GC5035_8BIT, 0x3800, 0x00}, /* TIMING_X_ADDR_START */ + {GC5035_8BIT, 0x3801, 0x02}, /* 2 */ + {GC5035_8BIT, 0x3802, 0x00}, /* TIMING_Y_ADDR_START */ + {GC5035_8BIT, 0x3803, 0x62}, /* 98 */ + {GC5035_8BIT, 0x3804, 0x0a}, /* TIMING_X_ADDR_END */ + {GC5035_8BIT, 0x3805, 0x3b}, /* 2619 */ + {GC5035_8BIT, 0x3806, 0x07}, /* TIMING_Y_ADDR_END */ + {GC5035_8BIT, 0x3807, 0x43}, /* 1859 */ + {GC5035_8BIT, 0x3808, 0x02}, /* TIMING_X_OUTPUT_SIZE */ + {GC5035_8BIT, 0x3809, 0xe0}, /* 736 */ + {GC5035_8BIT, 0x380a, 0x01}, /* TIMING_Y_OUTPUT_SIZE */ + {GC5035_8BIT, 0x380b, 0xf0}, /* 496 */ + {GC5035_8BIT, 0x380c, 0x0a}, /* TIMING_HTS */ + {GC5035_8BIT, 0x380d, 0x80}, + {GC5035_8BIT, 0x380e, 0x07}, /* TIMING_VTS */ + {GC5035_8BIT, 0x380f, 0xc0}, + {GC5035_8BIT, 0x3810, 0x00}, /* TIMING_ISP_X_WIN */ + {GC5035_8BIT, 0x3811, 0x02}, /* 2 */ + {GC5035_8BIT, 0x3812, 0x00}, /* TIMING_ISP_Y_WIN */ + {GC5035_8BIT, 0x3813, 0x00}, /* 0 */ + {GC5035_8BIT, 0x3814, 0x11}, /* TIME_X_INC */ + {GC5035_8BIT, 0x3815, 0x11}, /* TIME_Y_INC */ + {GC5035_8BIT, 0x3820, 0x00}, + {GC5035_8BIT, 0x3821, 0x1e}, + {GC5035_8BIT, 0x5002, 0x00}, + {GC5035_8BIT, 0x5041, 0x84}, /* scale is auto enabled */ + {GC5035_8BIT, 0x0100, 0x01}, + {GC5035_TOK_TERM, 0, 0} +}; + +static struct gc5035_reg const gc5035_2576x1936_30fps[] = { + {GC5035_8BIT, 0x3501, 0x7b}, + {GC5035_8BIT, 0x3502, 0x00}, + {GC5035_8BIT, 0x3708, 0xe2}, + {GC5035_8BIT, 0x3709, 0xc3}, + {GC5035_8BIT, 0x3803, 0x00}, + {GC5035_8BIT, 0x3806, 0x07}, + {GC5035_8BIT, 0x3807, 0xa3}, + {GC5035_8BIT, 0x3808, 0x0a}, + {GC5035_8BIT, 0x3809, 0x10}, + {GC5035_8BIT, 0x380a, 0x07}, + {GC5035_8BIT, 0x380b, 0x90}, + {GC5035_8BIT, 0x380c, 0x0a}, + {GC5035_8BIT, 0x380d, 0x80}, + {GC5035_8BIT, 0x380e, 0x07}, + {GC5035_8BIT, 0x380f, 0xc0}, + {GC5035_8BIT, 0x3811, 0x18}, + {GC5035_8BIT, 0x3813, 0x00}, + {GC5035_8BIT, 0x3814, 0x11}, + {GC5035_8BIT, 0x3815, 0x11}, + {GC5035_8BIT, 0x3820, 0x00}, + {GC5035_8BIT, 0x3821, 0x1e}, + {GC5035_8BIT, 0x5002, 0x00}, + {GC5035_8BIT, 0x0100, 0x01}, + {GC5035_TOK_TERM, 0, 0} +}; + +struct gc5035_resolution gc5035_res_preview[] = { + { + .desc = "gc5035_736x496_30fps", + .width = 736, + .height = 496, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc5035_736x496_30fps, + }, + { + .desc = "gc5035_1616x1216_30fps", + .width = 1616, + .height = 1216, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc5035_1616x1216_30fps, + }, + { + .desc = "gc5035_5M_30fps", + .width = 2576, + .height = 1456, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc5035_2576x1456_30fps, + }, + { + .desc = "gc5035_5M_30fps", + .width = 2576, + .height = 1936, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc5035_2576x1936_30fps, + }, +}; +#define N_RES_PREVIEW (ARRAY_SIZE(gc5035_res_preview)) + +struct gc5035_resolution gc5035_res_still[] = { + { + .desc = "gc5035_736x496_30fps", + .width = 736, + .height = 496, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc5035_736x496_30fps, + }, + { + .desc = "gc5035_1424x1168_30fps", + .width = 1424, + .height = 1168, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc5035_1424x1168_30fps, + }, + { + .desc = "gc5035_1616x1216_30fps", + .width = 1616, + .height = 1216, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc5035_1616x1216_30fps, + }, + { + .desc = "gc5035_5M_30fps", + .width = 2592, + .height = 1456, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc5035_2592x1456_30fps, + }, + { + .desc = "gc5035_5M_30fps", + .width = 2592, + .height = 1944, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc5035_2592x1944_30fps, + }, +}; +#define N_RES_STILL (ARRAY_SIZE(gc5035_res_still)) + +struct gc5035_resolution gc5035_res_video[] = { + { + .desc = "gc5035_736x496_30fps", + .width = 736, + .height = 496, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 1, + .regs = gc5035_736x496, + }, + { + .desc = "gc5035_336x256_30fps", + .width = 336, + .height = 256, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 1, + .regs = gc5035_336x256, + }, + { + .desc = "gc5035_368x304_30fps", + .width = 368, + .height = 304, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 1, + .regs = gc5035_368x304, + }, + { + .desc = "gc5035_192x160_30fps", + .width = 192, + .height = 160, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 1, + .regs = gc5035_192x160, + }, + { + .desc = "gc5035_1296x736_30fps", + .width = 1296, + .height = 736, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 0, + .regs = gc5035_1296x736, + }, + { + .desc = "gc5035_1296x976_30fps", + .width = 1296, + .height = 976, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 0, + .regs = gc5035_1296x976, + }, + { + .desc = "gc5035_1636P_30fps", + .width = 1636, + .height = 1096, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc5035_1636p_30fps, + }, + { + .desc = "gc5035_1080P_30fps", + .width = 1940, + .height = 1096, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc5035_1940x1096, + }, + { + .desc = "gc5035_5M_30fps", + .width = 2592, + .height = 1456, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc5035_2592x1456_30fps, + }, + { + .desc = "gc5035_5M_30fps", + .width = 2592, + .height = 1944, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = gc5035_2592x1944_30fps, + }, +}; + +#define N_RES_VIDEO (ARRAY_SIZE(gc5035_res_video)) + +static struct gc5035_resolution *gc5035_res = gc5035_res_preview; +static unsigned long N_RES = N_RES_PREVIEW; +#endif +#endif diff --git a/drivers/IMX219/3aconfig_IMX219.json b/drivers/IMX219/3aconfig_IMX219.json new file mode 100644 index 0000000..6b393b6 --- /dev/null +++ b/drivers/IMX219/3aconfig_IMX219.json @@ -0,0 +1,517 @@ +{ + "root" : [ + { + "classname" : "Aev1", + "enable" : false + }, + { + "classname" : "Aev2", + "enable" : true, + "motionThreshold" : 0.5, + "roiWeight" : 0.6, + "motionFilter" : 0.5, + "maxSensorAgain" : 10.66, + "maxSensorDgain" : 15.85, + "maxIspDgain" : 2.5, + "setPoint" : 50, + "roi_start" : 8, + "roi_end" : 24, + "roi_weight" : 0.5 + }, + { + "classname" : "Aehdr", + "enable" : false, + "motionThreshold" : 0.5, + "roi_start" : 8, + "roi_end" : 24, + "roi_weight" : 0.5, + "faceWeight" : 0.6, + "motionFilter" : 0.5, + "maxSensorAgain" : 15.5, + "maxSensorDgain" : 1, + "maxIspDgain" : 12, + "setPoint" : 30 + }, + { + "classname" : "AdaptiveAe", + "enable" : false, + "motionThreshold" : 0.7, + "roi_start" : 8, + "roi_end" : 24, + "roi_weight" : 0.5, + "faceWeight" : 0.6, + "motionFilter" : 0.5, + "targetFilter" : 0.5, + "wdrContrast.min" : 10, + "wdrContrast.max" : 110, + "lowlight" : { + "linear_repress" : [1, 0.8, 0.6, 0.4, 0.4], + "linear_gain" : [4, 8, 16, 32, 100], + "hdr_repress" : [1, 0.8, 0.8, 0.8, 0.8], + "hdr_gain" : [4, 8, 16, 32, 100] + }, + "maxSensorAgain" : 15.5, + "maxSensorDgain" : 1, + "maxIspDgain" : 12, + "setPoint" : 50 + }, + { + "classname" : "Awbv2", + "enable" : true, + "illuorder" : "A, D50, D65, D75, TL84, F12, CWF", + "indoor" : [1, 1, 1, 1, 1, 1, 1], + "outdoor" : [1, 1, 1, 1, 1, 1, 1], + "transition" : [1, 1, 1, 1, 1, 1, 1], + "avg" : 0 + }, + { + "classname" : "IspController", + "enable" : true + }, + { + "classname" : "AutoHdr", + "enable" : false + }, + { + "classname" : "DciHist", + "enable" : false, + "gaussMeanPos" : 64, + "gaussSigmaPos" : 128, + "gaussAmpPos" : 1, + "gaussMeanNeg" : 0, + "gaussSigmaNeg" : 128, + "gaussAmpNeg" : 1 + }, + { + "classname" : "SensorController", + "enable" : true + }, + { + "classname" : "AGamma64", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "curve" : [ + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [73, 113, 147, 176, 203, 228, 251, 273, 295, 315, 335, 354, 372, 390, 407, 425, 441, 457, 473, 489, 504, 519, 534, 549, 563, 577, 591, 605, 619, 632, 646, 659, 672, 685, 697, 710, 722, 735, 747, 759, 771, 783, 794, 806, 818, 829, 840, 852, 863, 874, 885, 896, 907, 918, 928, 939, 950, 960, 971, 981, 991, 1002, 1012, 1023], + [18, 35, 53, 70, 86, 103, 120, 136, 153, 169, 186, 202, 219, 235, 251, 267, 283, 300, 316, 332, 348, 364, 380, 396, 412, 428, 444, 460, 476, 491, 507, 523, 539, 555, 571, 586, 602, 618, 634, 649, 665, 681, 696, 712, 728, 743, 759, 775, 790, 806, 821, 837, 853, 868, 884, 899, 915, 930, 946, 961, 977, 992, 1008, 1023] + ] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "curve" : [ + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [73, 113, 147, 176, 203, 228, 251, 273, 295, 315, 335, 354, 372, 390, 407, 425, 441, 457, 473, 489, 504, 519, 534, 549, 563, 577, 591, 605, 619, 632, 646, 659, 672, 685, 697, 710, 722, 735, 747, 759, 771, 783, 794, 806, 818, 829, 840, 852, 863, 874, 885, 896, 907, 918, 928, 939, 950, 960, 971, 981, 991, 1002, 1012, 1023], + [73, 113, 147, 176, 203, 228, 251, 273, 295, 315, 335, 354, 372, 390, 407, 425, 441, 457, 473, 489, 504, 519, 534, 549, 563, 577, 591, 605, 619, 632, 646, 659, 672, 685, 697, 710, 722, 735, 747, 759, 771, 783, 794, 806, 818, 829, 840, 852, 863, 874, 885, 896, 907, 918, 928, 939, 950, 960, 971, 981, 991, 1002, 1012, 1023] + ] + } + ] + }, + { + "classname" : "ACproc", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "contrast" : [1, 1, 1, 1, 1, 1], + "brightness" : [0, 0, 0, 0, 0], + "saturation" : [1, 1, 1, 1, 1, 1], + "hue" : [0, 0, 0, 0, 0, 0], + "chromaout" : [2, 2, 2, 2, 2, 2], + "lumain" : [2, 2, 2, 2, 2, 2], + "lumaout" : [2, 2, 2, 2, 2, 2] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "contrast" : [1, 1, 1, 1, 1, 1], + "brightness" : [0, 0, 0, 0, 0], + "saturation" : [1, 1, 1, 1, 1, 1], + "hue" : [0, 0, 0, 0, 0, 0], + "chromaout" : [2, 2, 2, 2, 2, 2], + "lumain" : [2, 2, 2, 2, 2, 2], + "lumaout" : [2, 2, 2, 2, 2, 2] + } + ] + }, + { + "classname" : "Aee", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "strength" : [100, 100, 100, 100, 100, 100], + "srcStrength" : [1, 1, 1, 1, 1, 1], + "yup" : [5000, 5000, 5000, 5000, 5000, 5000], + "ydown" : [5000, 5000, 5000, 5000, 5000, 5000], + "uvgain" : [0, 0, 0, 0, 0, 0], + "edgegain" : [2000, 2000, 2000, 1000, 500, 200] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "strength" : [100, 100, 100, 100, 100, 100], + "srcStrength" : [1, 1, 1, 1, 1, 1], + "yup" : [5000, 5000, 5000, 5000, 5000, 5000], + "ydown" : [8000, 8000, 5000, 5000, 5000, 5000], + "uvgain" : [0, 0, 0, 0, 0, 0], + "edgegain" : [2000, 2000, 2000, 1500, 600, 200] + } + ] + }, + { + "classname" : "ACa", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enableCA" : [0, 0, 0, 0, 0, 0], + "enableDCI" : [1, 1, 1, 1, 0, 0], + "gains" : [1, 2, 4, 8, 16, 32], + "curveCA" : [ + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024] + ], + "curveDCI" : [ + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1023, 1023], + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1028, 1023], + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1028, 1023], + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1028, 1023], + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1028, 1023], + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1028, 1023] + ] + }, + { + "hdr" : true, + "enableCA" : [0, 0, 1, 1, 1, 1], + "enableDCI" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "curveCA" : [ + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024] + ], + "curveDCI" : [ + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022], + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022], + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022], + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022], + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022], + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022] + ] + } + ] + }, + { + "classname" : "ADmsc2", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "demoire_enable" : true, + "demoire_area_thr" : 3, + "demoire_sat_shrink" : 5, + "demoire_r2" : 256, + "demoire_r1" : 0, + "demoire_t2_shift" : 2, + "demoire_t1" : 180, + "demoire_edge_r2" : 256, + "demoire_edge_r1" : 20, + "demoire_edge_t2_shift" : 4, + "demoire_edge_t1" :20, + "depurple_enable" : true, + "depurple_red_sat" : true, + "depurple_blue_sat" : true, + "depurple_sat_shrink" : 8, + "depurple_thr" : 8, + "skin_enable" : false, + "cb_thr_max_2047" : 10, + "cb_thr_min_2047" : 8, + "cr_thr_max_2047" : 10, + "cr_thr_min_2047" : 8, + "y_thr_max_2047" : 10, + "y_thr_min_2047" : 8, + "tables" : [ + { + "hdr" : false, + "gains" : [1, 2, 4, 8, 16, 32], + "enableSharpen" : [1, 1, 1, 1, 1, 1], + "enableSharpenLine" : [0, 0, 0, 0, 0, 0], + "facblack" : [10, 10, 10, 10, 10, 10], + "facwhite" : [10, 10, 10, 10, 10, 10], + "maxblack" : [20, 20, 20, 20, 20, 20], + "maxwhite" : [20, 20, 20, 20, 20, 20], + "t1" : [0, 0, 0, 0, 0, 0], + "t2" : [0, 0, 0, 0, 0, 0], + "t3" : [0, 0, 0, 0, 0, 0], + "t4" : [0, 0, 0, 0, 0, 0], + "r1" : [0, 0, 0, 0, 0, 0], + "r2" : [128, 128, 128, 128, 128, 128], + "r3" : [256, 256, 256, 256, 256, 256], + "gdenoise" : [0, 0, 0, 0, 0, 0], + "gsharpen" : [16, 16, 16, 16, 16, 16], + "sharpen_line_shift2" : [6, 6, 6, 6, 6, 6], + "sharpen_line_shift1" : [5, 5, 5, 5, 5, 5], + "sharpen_line_t1" : [1000, 1000, 1000, 1000, 1000, 1000], + "sharpen_line_strength" : [100, 100, 100, 100, 100, 100], + "sharpen_line_r2" : [200, 200, 200, 200, 200, 200], + "sharpen_line_r1" : [5, 5, 5, 5, 5, 5] + }, + { + "hdr" : true, + "gains" : [1, 2, 4, 8, 16, 32], + "enableSharpen" : [0, 0, 0, 0, 0, 0], + "enableSharpenLine" : [0, 0, 0, 0, 0, 0], + "facblack" : [200, 200, 100, 50, 20, 20], + "facwhite" : [200, 200, 150, 80, 40, 20], + "maxblack" : [200, 200, 100, 100, 100, 100], + "maxwhite" : [200, 200, 200, 200, 200, 200], + "t1" : [0, 0, 0, 0, 0, 0], + "t2" : [0, 0, 0, 0, 0, 0], + "t3" : [0, 0, 0, 0, 0, 0], + "t4" : [0, 0, 0, 0, 0, 0], + "r1" : [0, 0, 0, 0, 0, 0], + "r2" : [128, 128, 128, 128, 128, 128], + "r3" : [256, 256, 256, 256, 256, 256], + "gdenoise" : [0, 0, 0, 0, 0, 0], + "gsharpen" : [16, 16, 16, 16, 16, 16], + "sharpen_line_shift2" : [6, 6, 6, 6, 6, 6], + "sharpen_line_shift1" : [5, 5, 5, 5, 5, 5], + "sharpen_line_t1" : [1000, 1000, 1000, 1000, 1000, 1000], + "sharpen_line_strength" : [100, 100, 100, 100, 100, 100], + "sharpen_line_r2" : [200, 200, 200, 200, 200, 200], + "sharpen_line_r1" : [5, 5, 5, 5, 5, 5] + } + ] + }, + { + "classname" : "AWdr4", + "forcecreate" : true, + "enable" : false, + "disable" : true, + "backlight" : true, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "backlight" : [0, 0.1, 0.2, 0.3, 0.4, 0.45], + "strength" : [128, 128, 128, 128, 128, 128], + "highStrength" : [20, 20, 20, 90, 90, 90], + "lowStrength" : [4, 8, 16, 24, 45, 64], + "globalStrength" : [0, 0, 0, 0, 0, 0], + "contrast" : [800, 800, 800, 800, 800, 800], + "flatStrength" : [0, 0, 0, 0, 0, 0], + "flatThreshold" : [0, 0, 0, 0, 0, 0] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "backlight" : [0, 0.1, 0.2, 0.3, 0.4, 0.45], + "strength" : [128, 128, 128, 128, 128, 128], + "highStrength" : [20, 20, 20, 90, 90, 90], + "lowStrength" : [4, 8, 16, 24, 45, 64], + "globalStrength" : [0, 0, 0, 0, 0, 0], + "contrast" : [800, 800, 800, 800, 800, 800], + "flatStrength" : [0, 0, 0, 0, 0, 0], + "flatThreshold" : [0, 0, 0, 0, 0, 0] + } + ], + "entropy_slope" : 200, + "entropy_base" : 700, + "entropy" : [0, 0, 0, 2, 3, 6, 11, 22, 39, 67, 111, 177, 227, 266, 321, 355, 377, 355, 221, 0], + "gamma_down" : [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 9, 16, 36, 64, 136, 256, 576, 1023], + "gamma_up" : [0, 283121, 330313, 377512, 424723, 471961, 519250, 566650, 614235, 662241, 711077, 761540, 792420, 815280, 849436, 875575, 913530, 948975, 1002792, 1048575], + "?gamma_up" : [0, 1024, 34837, 56737, 82912, 116814, 162079, 223337, 306767, 420749, 576707, 735048, 745499, 755950, 776852, 797754, 839557, 881361, 964968, 1048575], + "gamma_pre" : [0, 31514, 36815, 42173, 47646, 53350, 59514, 66602, 75530, 88145, 108135, 142869, 175428, 207095, 269144, 330303, 442139, 571475, 810472, 1048575] + }, + { + "classname" : "A3dnrv3", + "forcecreate" : false, + "enable" : false, + "disable" : false, + "autonoiseLevel": true, + "tnr_en" : false, + "nlm_en" : true, + "tables" : [ + { + "hdr" : false, + "enable" : [0, 0, 0, 0, 0, 0, 0], + "gains" : [1, 2, 4, 8, 16, 32], + "filterLen" : [100, 150, 200, 300, 400, 500], + "filterLen2" : [10, 10, 10, 10, 10, 10], + "motionSlope" : [1, 1, 1, 1, 1, 1], + "noiseLevel" : [25, 40, 60, 80, 100, 120], + "sadweight" : [8, 8, 8, 8, 8, 8], + "motionInvFactor" : [20000, 20000, 20000, 20000, 20000, 20000], + "noisemodel_a" : [0.45071, 0.85596, 1.561850, 2.219000, 3.9409, 5.2362], + "noisemodel_b" : [0.000065, 9.7098, 140.351654, 219.965805, 284.8835, 344.9119], + "autoStrength" : [1.5, 1.5, 1.5, 1.5, 1.5, 1.5], + "motion_dilate_en" : [1, 1, 1, 1, 1, 1], + "motion_erode_en" : [1, 1, 1, 1, 1, 1], + "pregamma_en" : [1, 1, 1, 1, 1, 1], + "strength" : [120, 120, 120, 120, 120, 120], + "range_h" : [7, 7, 7, 7, 7, 7], + "range_v" : [3, 3, 3, 3, 3, 3], + "dialte_h" : [3, 3, 3, 3, 3, 3], + "preweight" : [8, 8, 8, 8, 8, 8], + "noise_thresh_factor" : [2, 2, 2, 2, 2, 2], + "moving_pixel_thresh" : [0.6, 0.6, 0.6, 0.6, 0.6, 0.6] + }, + { + "hdr" : true, + "enable" : [0, 0, 0, 0, 0, 0, 0], + "gains" : [1, 2, 4, 8, 16, 32], + "filterLen" : [100, 150, 200, 300, 400, 500], + "filterLen2" : [10, 10, 10, 10, 10, 10], + "motionSlope" : [1, 1, 1, 1, 1, 1], + "noiseLevel" : [25, 40, 60, 80, 100, 120], + "sadweight" : [8, 8, 8, 8, 8, 8], + "motionInvFactor" : [20000, 20000, 20000, 20000, 20000, 20000], + "noisemodel_a" : [0.45071, 0.85596, 1.561850, 2.219000, 3.9409, 5.2362], + "noisemodel_b" : [0.000065, 9.7098, 140.351654, 219.965805, 284.8835, 344.9119], + "autoStrength" : [1.5, 1.5, 1.5, 1.5, 1.5, 1.5], + "motion_dilate_en" : [1, 1, 1, 1, 1, 1], + "motion_erode_en" : [1, 1, 1, 1, 1, 1], + "pregamma_en" : [1, 1, 1, 1, 1, 1], + "strength" : [120, 120, 120, 120, 120, 120], + "range_h" : [7, 7, 7, 7, 7, 7], + "range_v" : [3, 3, 3, 3, 3, 3], + "dialte_h" : [3, 3, 3, 3, 3, 3], + "preweight" : [8, 8, 8, 8, 8, 8], + "noise_thresh_factor" : [2, 2, 2, 2, 2, 2], + "moving_pixel_thresh" : [0.6, 0.6, 0.6, 0.6, 0.6, 0.6] + } + ] + }, + { + "classname" : "A2dnrv5", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 12, 16, 20, 24, 32, 40], + "strength" : [1, 1, 1, 1, 1, 1, 2, 2, 2, 2], + "sigma" : [5, 5, 5, 8, 8, 8, 11, 11, 11, 14], + "blendstatic" : [90, 90, 90, 90, 90, 90, 90, 35, 35, 40], + "blendmotion" : [100, 100, 100, 100, 100, 100, 100, 100, 100, 100] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 12, 16, 20, 24, 32, 40], + "strength" : [1, 1, 1, 1, 1, 1, 2, 2, 2, 2], + "sigma" : [5, 5, 5, 8, 8, 8, 11, 11, 11, 14], + "blendstatic" : [90, 90, 90, 90, 90, 90, 90, 35, 35, 40], + "blendmotion" : [100, 100, 100, 100, 100, 100, 100, 100, 100, 100] + } + ] + }, + { + "classname" : "ADpf", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 12, 16, 20, 24, 32, 40], + "gradient" : [0.1, 0.2, 0.4, 0.7, 1, 1.5, 2, 2.5, 3, 3.5], + "offset" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "Min" : [1, 1, 1, 1, 1, 1, 1, 2, 4, 16], + "Div" : [64, 64, 64, 65, 65, 65, 65, 65, 65, 65], + "sigma_g" : [1, 1, 2, 2, 3, 3, 4, 4, 4, 4], + "sigma_rb" : [1, 1, 2, 2, 3, 3, 4, 4, 4, 4], + "curve" : [ + [4095, 4095, 3677, 3068, 2686, 2219, 1933, 1735, 1587, 1379, 1235, 1129, 979, 877, 801, 742, 695], + [4095, 4056, 2910, 2388, 2073, 1697, 1471, 1317, 1203, 1042, 933, 852, 738, 660, 603, 558, 523], + [3688, 2169, 1687, 1428, 1260, 1050, 918, 827, 758, 660, 592, 542, 470, 421, 385, 357, 335], + [2254, 1553, 1258, 1085, 968, 816, 718, 649, 597, 521, 469, 430, 374, 335, 307, 284, 267], + [1060, 883, 772, 695, 637, 555, 498, 455, 422, 373, 338, 311, 272, 245, 225, 209, 196], + [580, 524, 481, 448, 420, 378, 346, 321, 301, 270, 247, 229, 202, 183, 168, 157, 148], + [368, 346, 328, 312, 298, 276, 257, 242, 230, 209, 193, 181, 162, 147, 136, 127, 120], + [214, 206, 199, 192, 186, 175, 166, 159, 152, 141, 132, 124, 112, 103, 96, 91, 86], + [158, 152, 147, 142, 138, 130, 124, 118, 113, 105, 99, 93, 84, 78, 72, 68, 64], + [127, 124, 121, 118, 115, 110, 106, 103, 99, 93, 88, 84, 77, 72, 68, 64, 61] + ] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 12, 16, 20, 24, 32, 40], + "gradient" : [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], + "offset" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "Min" : [16, 16, 16, 16, 16, 16, 16, 16, 16, 16], + "Div" : [65, 65, 65, 65, 65, 65, 65, 65, 65, 65], + "sigma_g" : [4, 4, 4, 4, 4, 4, 4, 4, 4, 4], + "sigma_rb" : [4, 4, 4, 4, 4, 4, 4, 4, 4, 4], + "curve" : [ + [4095, 4095, 3677, 3068, 2686, 2219, 1933, 1735, 1587, 1379, 1235, 1129, 979, 877, 801, 742, 695], + [4095, 4056, 2910, 2388, 2073, 1697, 1471, 1317, 1203, 1042, 933, 852, 738, 660, 603, 558, 523], + [3688, 2169, 1687, 1428, 1260, 1050, 918, 827, 758, 660, 592, 542, 470, 421, 385, 357, 335], + [2254, 1553, 1258, 1085, 968, 816, 718, 649, 597, 521, 469, 430, 374, 335, 307, 284, 267], + [1060, 883, 772, 695, 637, 555, 498, 455, 422, 373, 338, 311, 272, 245, 225, 209, 196], + [580, 524, 481, 448, 420, 378, 346, 321, 301, 270, 247, 229, 202, 183, 168, 157, 148], + [368, 346, 328, 312, 298, 276, 257, 242, 230, 209, 193, 181, 162, 147, 136, 127, 120], + [214, 206, 199, 192, 186, 175, 166, 159, 152, 141, 132, 124, 112, 103, 96, 91, 86], + [158, 152, 147, 142, 138, 130, 124, 118, 113, 105, 99, 93, 84, 78, 72, 68, 64], + [127, 124, 121, 118, 115, 110, 106, 103, 99, 93, 88, 84, 77, 72, 68, 64, 61] + ] + } + ] + }, + { + "classname" : "ABlc", + "forcecreate" : true, + "enable" : true, + "tables" : [ + { + "hdr" : false, + "gains" : [1, 16], + "blc" : [64, 64] + }, + { + "hdr" : true, + "gains" : [1, 16], + "blc" : [64, 64] + } + ] + } + ] +} diff --git a/drivers/IMX219/CMakeLists.txt b/drivers/IMX219/CMakeLists.txt new file mode 100644 index 0000000..10d0942 --- /dev/null +++ b/drivers/IMX219/CMakeLists.txt @@ -0,0 +1,35 @@ +cmake_minimum_required(VERSION 3.1.0) + +# define module name & interface version +set (module imx219) +string(TOUPPER ${module} SENSOR_NAME) + +# we want to compile all .c files as default +file(GLOB libsources ${SENSOR_NAME}.c ) + +# set public headers, these get installed +#file(GLOB pub_headers include/*.h) + +#include_directories() + +add_library(${module} SHARED ${libsources}) + +add_custom_target(${module}.drv + ALL + COMMAND ${CMAKE_COMMAND} -E copy lib${module}.so ${LIB_ROOT}/rootfs/usr/share/vi/tuningtool/bin/${module}.drv + COMMAND ${CMAKE_COMMAND} -E copy lib${module}.so ${LIB_ROOT}/rootfs/usr/lib/lib${module}.so + COMMAND ${CMAKE_COMMAND} -E make_directory ${LIB_ROOT}/rootfs/usr/share/vi/isp/test/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/*.xml ${LIB_ROOT}/rootfs/usr/share/vi/isp/test/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/${SENSOR_NAME}*.txt ${LIB_ROOT}/rootfs/usr/share/vi/isp/test/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/*.json ${LIB_ROOT}/rootfs/usr/share/vi/isp/test/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/*.xml ${LIB_ROOT}/rootfs/usr/share/vi/tuningtool/bin/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/${SENSOR_NAME}*.txt ${LIB_ROOT}/rootfs/usr/share/vi/tuningtool/bin/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/*.json ${LIB_ROOT}/rootfs/usr/share/vi/tuningtool/bin/ + DEPENDS ${module} + COMMENT "Copying ${module} driver module" + ) + +#install(FILES ${LIB_ROOT}/${CMAKE_BUILD_TYPE}/lib/lib${module}.so.${${module}_INTERFACE_CURRENT} +# DESTINATION ${CMAKE_INSTALL_PREFIX}/bin +# RENAME ${module}.drv +# ) \ No newline at end of file diff --git a/drivers/IMX219/IMX219.c b/drivers/IMX219/IMX219.c new file mode 100644 index 0000000..3a6ea50 --- /dev/null +++ b/drivers/IMX219/IMX219.c @@ -0,0 +1,1740 @@ +/******************************************************************************\ |* Copyright (c) 2020 by VeriSilicon Holdings Co., Ltd. ("VeriSilicon") *| |* All Rights Reserved. *| |* *| |* The material in this file is confidential and contains trade secrets of *| |* of VeriSilicon. This is proprietary information owned or licensed by *| |* VeriSilicon. No part of this work may be disclosed, reproduced, copied, *| |* transmitted, or used in any way for any purpose, without the express *| |* written permission of VeriSilicon. *| |* *| +\******************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "IMX219_priv.h" +#include "imx219.h" + +CREATE_TRACER( IMX219_INFO , "IMX219: ", INFO, 1); +CREATE_TRACER( IMX219_WARN , "IMX219: ", WARNING, 1); +CREATE_TRACER( IMX219_ERROR, "IMX219: ", ERROR, 1); +CREATE_TRACER( IMX219_DEBUG, "IMX219: ", INFO, 0); +CREATE_TRACER( IMX219_REG_INFO , "IMX219: ", INFO, 0); +CREATE_TRACER( IMX219_REG_DEBUG, "IMX219: ", INFO, 0); + +#ifdef SUBDEV_V4L2 +#include +#include +#include +#include +#include +#undef TRACE +#define TRACE(x, ...) +#endif + +#define IMX219_MIN_GAIN_STEP ( 1.0f/16.0f ) /**< min gain step size used by GUI (hardware min = 1/16; 1/16..32/16 depending on actual gain ) */ +#define IMX219_MAX_GAIN_AEC ( 32.0f ) /**< max. gain used by the AEC (arbitrarily chosen, hardware limit = 62.0, driver limit = 32.0 ) */ +#define IMX219_VS_MAX_INTEGRATION_TIME (0.0018) + +/***************************************************************************** + *Sensor Info +*****************************************************************************/ +static const char SensorName[16] = "IMX219"; + +static struct vvcam_mode_info pimx219_mode_info[] = { + { + .index = 0, + .width = 1920, + .height = 1080, + .fps = 30, + .hdr_mode = SENSOR_MODE_LINEAR, + .bit_width = 10, + .bayer_pattern = BAYER_RGGB, + .mipi_phy_freq = 912, /* Pixel rate is fixed at 182.4M for all the modes */ + .mipi_line_num = 2, + .preg_data = (void *)"imx219 sensor liner mode 1920*1080@30", + }, +}; + +static RESULT IMX219_IsiRegisterWriteIss(IsiSensorHandle_t handle, const uint32_t address, const uint32_t value); + +static RESULT IMX219_IsiSensorSetPowerIss(IsiSensorHandle_t handle, bool_t on) { + RESULT result = RET_SUCCESS; + + int ret = 0; + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + if (pIMX219Ctx == NULL || pIMX219Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pIMX219Ctx->IsiCtx.HalHandle; + + TRACE(IMX219_INFO, "%s (enter)\n", __func__); + + int32_t enable = on; + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_POWER, &enable); + if (ret != 0) { + // to do + //TRACE(IMX219_ERROR, "%s: sensor set power error!\n", __func__); + //return (RET_FAILURE); + } + + TRACE(IMX219_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT IMX219_IsiResetSensorIss(IsiSensorHandle_t handle) { + RESULT result = RET_SUCCESS; + int ret = 0; + + TRACE(IMX219_INFO, "%s (enter)\n", __func__); + + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + if (pIMX219Ctx == NULL || pIMX219Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pIMX219Ctx->IsiCtx.HalHandle; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_RESET, NULL); + if (ret != 0) { + TRACE(IMX219_ERROR, "%s: sensor reset error!\n", __func__); + return (RET_FAILURE); + } + + TRACE(IMX219_INFO, "%s (exit)\n", __func__); + return (result); +} + +#ifdef SUBDEV_CHAR +static RESULT IMX219_IsiSensorSetClkIss(IsiSensorHandle_t handle, uint32_t clk) { + RESULT result = RET_SUCCESS; + int32_t ret = 0; + + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + if (pIMX219Ctx == NULL || pIMX219Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pIMX219Ctx->IsiCtx.HalHandle; + + TRACE(IMX219_INFO, "%s (enter)\n", __func__); + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_CLK, &clk); + if (ret != 0) { + // to do + //TRACE(IMX219_ERROR, "%s: sensor set clk error!\n", __func__); + //return (RET_FAILURE); + } + + TRACE(IMX219_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT IMX219_IsiSensorGetClkIss + (IsiSensorHandle_t handle, uint32_t * pclk) { + RESULT result = RET_SUCCESS; + int ret = 0; + + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + if (pIMX219Ctx == NULL || pIMX219Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pIMX219Ctx->IsiCtx.HalHandle; + + TRACE(IMX219_INFO, "%s (enter)\n", __func__); + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_CLK, pclk); + if (ret != 0) { + // to do + //TRACE(IMX219_ERROR, "%s: sensor get clk error!\n", __func__); + //return (RET_FAILURE); + } + + TRACE(IMX219_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT IMX219_IsiConfigSensorSCCBIss(IsiSensorHandle_t handle) +{ + return RET_SUCCESS; +} +#endif + +static RESULT IMX219_IsiRegisterReadIss + (IsiSensorHandle_t handle, const uint32_t address, uint32_t * p_value) { + RESULT result = RET_SUCCESS; + int32_t ret = 0; + TRACE(IMX219_INFO, "%s (enter)\n", __func__); + + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + if (pIMX219Ctx == NULL || pIMX219Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pIMX219Ctx->IsiCtx.HalHandle; + + struct vvcam_sccb_data sccb_data; + sccb_data.addr = address; + sccb_data.data = 0; + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_READ_REG, &sccb_data); + if (ret != 0) { + TRACE(IMX219_ERROR, "%s: read sensor register error!\n", + __func__); + return (RET_FAILURE); + } + + *p_value = sccb_data.data; + + TRACE(IMX219_INFO, "%s (exit) result = %d\n", __func__, result); + return (result); +} + +static RESULT IMX219_IsiRegisterWriteIss + (IsiSensorHandle_t handle, const uint32_t address, const uint32_t value) { + RESULT result = RET_SUCCESS; + int ret = 0; + TRACE(IMX219_INFO, "%s (enter) write %d\n", __func__, value); + + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + if (pIMX219Ctx == NULL || pIMX219Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pIMX219Ctx->IsiCtx.HalHandle; + + struct vvcam_sccb_data sccb_data; + sccb_data.addr = address; + sccb_data.data = value; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_WRITE_REG, &sccb_data); + if (ret != 0) { + TRACE(IMX219_ERROR, "%s: write sensor register error!\n", + __func__); + return (RET_FAILURE); + } + + TRACE(IMX219_INFO, "%s (exit) result = %d\n", __func__, result); + return (result); +} + +static RESULT IMX219_IsiQuerySensorSupportIss(HalHandle_t HalHandle, vvcam_mode_info_array_t *pSensorSupportInfo) +{ + TRACE(IMX219_DEBUG, "enter %s", __func__); + //int ret = 0; + struct vvcam_mode_info_array *psensor_mode_info_arry; + + HalContext_t *pHalCtx = HalHandle; + if ( pHalCtx == NULL ) { + return RET_NULL_POINTER; + } + + psensor_mode_info_arry = pSensorSupportInfo; +#if 0 + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_QUERY, psensor_mode_info_arry); + if (ret != 0) { + TRACE(IMX219_ERROR, "%s: sensor kernel query error! Use isi query\n",__func__); + psensor_mode_info_arry->count = sizeof(pimx219_mode_info) / sizeof(struct vvcam_mode_info); + memcpy(psensor_mode_info_arry->modes, pimx219_mode_info, sizeof(pimx219_mode_info)); + } +#endif + psensor_mode_info_arry->count = sizeof(pimx219_mode_info) / sizeof(struct vvcam_mode_info); + memcpy(psensor_mode_info_arry->modes, pimx219_mode_info, sizeof(pimx219_mode_info)); + + TRACE(IMX219_DEBUG, "%s-%s-%d: cnt=%d\n", __FILE__, __func__, __LINE__, psensor_mode_info_arry->count); + + return RET_SUCCESS; +} + +static RESULT IMX219_IsiQuerySensorIss(IsiSensorHandle_t handle, vvcam_mode_info_array_t *pSensorInfo) +{ + RESULT result = RET_SUCCESS; + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + if (pIMX219Ctx == NULL || pIMX219Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pIMX219Ctx->IsiCtx.HalHandle; + IMX219_IsiQuerySensorSupportIss(pHalCtx,pSensorInfo); + + return result; +} + +static RESULT IMX219_IsiGetSensorModeIss(IsiSensorHandle_t handle,void *mode) +{ + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + if (pIMX219Ctx == NULL) { + return (RET_WRONG_HANDLE); + } + memcpy(mode,&(pIMX219Ctx->SensorMode), sizeof(pIMX219Ctx->SensorMode)); + + return ( RET_SUCCESS ); +} + +static RESULT IMX219_IsiCreateSensorIss(IsiSensorInstanceConfig_t * pConfig) { + RESULT result = RET_SUCCESS; + IMX219_Context_t *pIMX219Ctx; + + TRACE(IMX219_INFO, "%s (enter) v1.6\n", __func__); + + if (!pConfig || !pConfig->pSensor) + return (RET_NULL_POINTER); + + pIMX219Ctx = (IMX219_Context_t *) malloc(sizeof(IMX219_Context_t)); + if (!pIMX219Ctx) { + TRACE(IMX219_ERROR, "%s: Can't allocate imx219 context\n", + __func__); + return (RET_OUTOFMEM); + } + + MEMSET(pIMX219Ctx, 0, sizeof(IMX219_Context_t)); + + result = HalAddRef(pConfig->HalHandle); + if (result != RET_SUCCESS) { + free(pIMX219Ctx); + return (result); + } + + pIMX219Ctx->IsiCtx.HalHandle = pConfig->HalHandle; + pIMX219Ctx->IsiCtx.pSensor = pConfig->pSensor; + pIMX219Ctx->GroupHold = BOOL_FALSE; + pIMX219Ctx->OldGain = 0; + pIMX219Ctx->OldIntegrationTime = 0; + pIMX219Ctx->Configured = BOOL_FALSE; + pIMX219Ctx->Streaming = BOOL_FALSE; + pIMX219Ctx->TestPattern = BOOL_FALSE; + pIMX219Ctx->isAfpsRun = BOOL_FALSE; + pIMX219Ctx->SensorMode.index = pConfig->SensorModeIndex; + pConfig->hSensor = (IsiSensorHandle_t) pIMX219Ctx; +#ifdef SUBDEV_CHAR + struct vvcam_mode_info *SensorDefaultMode = NULL; + for (int i=0; i < sizeof(pimx219_mode_info)/ sizeof(struct vvcam_mode_info); i++) + { + if (pimx219_mode_info[i].index == pIMX219Ctx->SensorMode.index) + { + SensorDefaultMode = &(pimx219_mode_info[i]); + break; + } + } + + if (SensorDefaultMode != NULL) + { + strcpy(pIMX219Ctx->SensorRegCfgFile, get_vi_config_path()); + switch(SensorDefaultMode->index) + { + case 0: + strcat(pIMX219Ctx->SensorRegCfgFile, + "IMX219_mipi4lane_1920x1080@30.txt"); + break; + default: + break; + } + + if (access(pIMX219Ctx->SensorRegCfgFile, F_OK) == 0) { + pIMX219Ctx->KernelDriverFlag = 0; + memcpy(&(pIMX219Ctx->SensorMode),SensorDefaultMode,sizeof(struct vvcam_mode_info)); + } else { + pIMX219Ctx->KernelDriverFlag = 1; + } + }else + { + pIMX219Ctx->KernelDriverFlag = 1; + } + + result = IMX219_IsiSensorSetPowerIss(pIMX219Ctx, BOOL_TRUE); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + + uint32_t SensorClkIn = 0; + if (pIMX219Ctx->KernelDriverFlag) { + result = IMX219_IsiSensorGetClkIss(pIMX219Ctx, &SensorClkIn); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + } + + result = IMX219_IsiSensorSetClkIss(pIMX219Ctx, SensorClkIn); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + + result = IMX219_IsiResetSensorIss(pIMX219Ctx); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + + pIMX219Ctx->pattern = ISI_BPAT_BGBGGRGR; + + if (!pIMX219Ctx->KernelDriverFlag) { + result = IMX219_IsiConfigSensorSCCBIss(pIMX219Ctx); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + } +#endif + + TRACE(IMX219_INFO, "%s (exit pConfig->hSensor = %p)\n", __func__, pConfig->hSensor); + return (result); +} + +static RESULT IMX219_IsiGetRegCfgIss(const char *registerFileName, + struct vvcam_sccb_array *arry) +{ + if (NULL == registerFileName) { + TRACE(IMX219_ERROR, "%s:registerFileName is NULL\n", __func__); + return (RET_NULL_POINTER); + } +#ifdef SUBDEV_CHAR + FILE *fp = NULL; + fp = fopen(registerFileName, "rb"); + if (!fp) { + TRACE(IMX219_ERROR, "%s:load register file %s error!\n", + __func__, registerFileName); + return (RET_FAILURE); + } + + char LineBuf[512]; + uint32_t FileTotalLine = 0; + while (!feof(fp)) { + fgets(LineBuf, 512, fp); + FileTotalLine++; + } + + arry->sccb_data = + malloc(FileTotalLine * sizeof(struct vvcam_sccb_data)); + if (arry->sccb_data == NULL) { + TRACE(IMX219_ERROR, "%s:malloc failed NULL Point!\n", __func__, + registerFileName); + return (RET_FAILURE); + } + rewind(fp); + + arry->count = 0; + while (!feof(fp)) { + memset(LineBuf, 0, sizeof(LineBuf)); + fgets(LineBuf, 512, fp); + + int result = + sscanf(LineBuf, "0x%x 0x%x", + &(arry->sccb_data[arry->count].addr), + &(arry->sccb_data[arry->count].data)); + if (result != 2) + continue; + arry->count++; + + } +#endif + + return 0; +} + +static RESULT IMX219_IsiInitSensorIss(IsiSensorHandle_t handle) { + RESULT result = RET_SUCCESS; + + int ret = 0; + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + + HalContext_t *pHalCtx = (HalContext_t *) pIMX219Ctx->IsiCtx.HalHandle; + TRACE(IMX219_INFO, "%s (enter handle = %p)\n", __func__, handle); + + if (pIMX219Ctx == NULL) { + return (RET_WRONG_HANDLE); + } + TRACE(IMX219_INFO, "%s (pIMX219Ctx->KernelDriverFlag = %d)\n", __func__, pIMX219Ctx->KernelDriverFlag); + if (pIMX219Ctx->KernelDriverFlag) { + ; + } else { + /* sensor doesn't enter LP-11 state upon power up until and unless + * streaming is started, so upon power up switch the modes to: + * streaming -> standby + */ + ret = IMX219_IsiRegisterWriteIss(handle, 0x0100, 0x1); + if (ret != 0) { + return (RET_FAILURE); + } + ret = IMX219_IsiRegisterWriteIss(handle, 0x0100, 0x0); + if (ret != 0) { + return (RET_FAILURE); + } + osSleep(1); + + TRACE(IMX219_INFO, "%s (001)\n", __func__); + struct vvcam_sccb_array arry; + result = IMX219_IsiGetRegCfgIss(pIMX219Ctx->SensorRegCfgFile, &arry); + if (result != 0) { + TRACE(IMX219_ERROR, + "%s:IMX219_IsiGetRegCfgIss error!\n", __func__); + return (RET_FAILURE); + } + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_WRITE_ARRAY, &arry); + if (ret != 0) { + TRACE(IMX219_ERROR, "%s:Sensor Write Reg arry error!\n", + __func__); + return (RET_FAILURE); + } + TRACE(IMX219_INFO, "%s (pIMX219Ctx->SensorMode.index = %d)\n", __func__, pIMX219Ctx->SensorMode.index); + switch(pIMX219Ctx->SensorMode.index) + { + case 0: + pIMX219Ctx->one_line_exp_time = 0.00001890; // line_time = line_length / pclk + pIMX219Ctx->FrameLengthLines = 0xAA8; + pIMX219Ctx->CurFrameLengthLines = pIMX219Ctx->FrameLengthLines; + pIMX219Ctx->MaxIntegrationLine = pIMX219Ctx->CurFrameLengthLines - 16; + pIMX219Ctx->MinIntegrationLine = 1; + pIMX219Ctx->AecMaxGain = 16; + pIMX219Ctx->AecMinGain = 1; + break; + default: + return (RET_FAILURE); + } + pIMX219Ctx->AecIntegrationTimeIncrement = pIMX219Ctx->one_line_exp_time; + pIMX219Ctx->AecMinIntegrationTime = + pIMX219Ctx->one_line_exp_time * pIMX219Ctx->MinIntegrationLine; + pIMX219Ctx->AecMaxIntegrationTime = + pIMX219Ctx->one_line_exp_time * pIMX219Ctx->MaxIntegrationLine; + + + pIMX219Ctx->MaxFps = pIMX219Ctx->SensorMode.fps; + pIMX219Ctx->MinFps = 1; + pIMX219Ctx->CurrFps = pIMX219Ctx->MaxFps; + } + TRACE(IMX219_INFO, "%s (pIMX219Ctx->one_line_exp_time = %f)\n", __func__, pIMX219Ctx->one_line_exp_time); + TRACE(IMX219_INFO, "%s (pIMX219Ctx->MinIntegrationLine = %d, pIMX219Ctx->MaxIntegrationLine = %d)\n", __func__, pIMX219Ctx->MinIntegrationLine, pIMX219Ctx->MaxIntegrationLine); + return (result); +} + +static RESULT IMX219_IsiReleaseSensorIss(IsiSensorHandle_t handle) { + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(IMX219_INFO, "%s (enter)\n", __func__); + + if (pIMX219Ctx == NULL) + return (RET_WRONG_HANDLE); + + (void)IMX219_IsiSensorSetStreamingIss(pIMX219Ctx, BOOL_FALSE); + (void)IMX219_IsiSensorSetPowerIss(pIMX219Ctx, BOOL_FALSE); + (void)HalDelRef(pIMX219Ctx->IsiCtx.HalHandle); + + MEMSET(pIMX219Ctx, 0, sizeof(IMX219_Context_t)); + free(pIMX219Ctx); + TRACE(IMX219_INFO, "%s (exit)\n", __func__); + return (result); +} + +struct imx219_fmt { + int width; + int height; + int fps; +}; + +static RESULT IMX219_IsiSetupSensorIss + (IsiSensorHandle_t handle, const IsiSensorConfig_t * pConfig) { + + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + HalContext_t *pHalCtx = (HalContext_t *) pIMX219Ctx->IsiCtx.HalHandle; + + RESULT result = RET_SUCCESS; + + TRACE(IMX219_INFO, "%s: (enter)\n", __func__); + + if (!pIMX219Ctx) { + TRACE(IMX219_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pConfig) { + TRACE(IMX219_ERROR, + "%s: Invalid configuration (NULL pointer detected)\n", + __func__); + return (RET_NULL_POINTER); + } + + if (pIMX219Ctx->Streaming != BOOL_FALSE) { + return RET_WRONG_STATE; + } + + memcpy(&pIMX219Ctx->Config, pConfig, sizeof(IsiSensorConfig_t)); + + /* 1.) SW reset of image sensor (via I2C register interface) be careful, bits 6..0 are reserved, reset bit is not sticky */ + TRACE(IMX219_DEBUG, "%s: IMX219 System-Reset executed\n", __func__); + osSleep(100); + + //IMX219_AecSetModeParameters not defined yet as of 2021/8/9. + //result = IMX219_AecSetModeParameters(pIMX219Ctx, pConfig); + //if (result != RET_SUCCESS) { + // TRACE(IMX219_ERROR, "%s: SetupOutputWindow failed.\n", + // __func__); + // return (result); + //} +#if 1 + struct imx219_fmt fmt; + fmt.width = pConfig->Resolution.width; + fmt.height = pConfig->Resolution.height; + + ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_FPS, &fmt);//result = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_FPS, &fmt); +#endif + pIMX219Ctx->Configured = BOOL_TRUE; + TRACE(IMX219_INFO, "%s: (exit) ret=0x%x \n", __func__, result); + return result; +} + +static RESULT IMX219_IsiChangeSensorResolutionIss(IsiSensorHandle_t handle, uint16_t width, uint16_t height) { + RESULT result = RET_SUCCESS; +#if 0 + struct imx219_fmt fmt; + fmt.width = width; + fmt.height = height; + + int ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_FPS, &fmt); +#endif + TRACE(IMX219_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT IMX219_IsiSensorSetStreamingIss + (IsiSensorHandle_t handle, bool_t on) { + RESULT result = RET_SUCCESS; + int ret = 0; + TRACE(IMX219_INFO, "%s (enter)\n", __func__); + + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + if (pIMX219Ctx == NULL || pIMX219Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pIMX219Ctx->IsiCtx.HalHandle; + + if (pIMX219Ctx->Configured != BOOL_TRUE) + return RET_WRONG_STATE; + + int32_t enable = (uint32_t) on; + +#if 0 + IMX219_IsiRegisterWriteIss(handle, 0x0601, 0x2); // pattern=IMX219_TEST_PATTERN_SOLID_COLOR + IMX219_IsiRegisterWriteIss(handle, 0x0603, 0xff); // pattern + IMX219_IsiRegisterWriteIss(handle, 0x0605, 0x2); // pattern + IMX219_IsiRegisterWriteIss(handle, 0x0607, 0x2); // pattern + IMX219_IsiRegisterWriteIss(handle, 0x0609, 0x2); // pattern +#endif + + if (on == true) { + ret = IMX219_IsiRegisterWriteIss(handle, 0x0100, 0x1); + } else { + ret = IMX219_IsiRegisterWriteIss(handle, 0x0100, 0x00); + } + + if (ret != 0) { + return (RET_FAILURE); + } + + pIMX219Ctx->Streaming = on; + + TRACE(IMX219_INFO, "%s (exit)\n", __func__); + return (result); +} + +static int32_t sensor_get_chip_id(IsiSensorHandle_t handle, uint32_t *chip_id) +{ + RESULT result = RET_SUCCESS; + int32_t ret = 0; + int32_t chip_id_high = 0; + int32_t chip_id_low = 0; + + ret = IMX219_IsiRegisterReadIss(handle, 0x0, &chip_id_high); + if (ret != 0) { + TRACE(IMX219_ERROR, + "%s: Read Sensor correct ID Error! \n", __func__); + return (RET_FAILURE); + } + + ret = IMX219_IsiRegisterReadIss(handle, 0x1, &chip_id_low); + if (ret != 0) { + TRACE(IMX219_ERROR, + "%s: Read Sensor correct ID Error! \n", __func__); + return (RET_FAILURE); + } + + *chip_id = ((chip_id_high & 0xff)<<8) | (chip_id_low & 0xff); + + return 0; +} + +static RESULT IMX219_IsiCheckSensorConnectionIss(IsiSensorHandle_t handle) { + RESULT result = RET_SUCCESS; + int ret = 0; + uint32_t correct_id = 0x219; + uint32_t sensor_id = 0; + + TRACE(IMX219_INFO, "%s (enter)\n", __func__); + + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + if (pIMX219Ctx == NULL || pIMX219Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pIMX219Ctx->IsiCtx.HalHandle; + + ret = sensor_get_chip_id(handle, &sensor_id); + if (ret != 0) { + TRACE(IMX219_ERROR, + "%s: Read Sensor chip ID Error! \n", __func__); + return (RET_FAILURE); + } + + if (correct_id != sensor_id) { + TRACE(IMX219_ERROR, "%s:ChipID =0x%x sensor_id=%x error! \n", + __func__, correct_id, sensor_id); + return (RET_FAILURE); + } + + printf("%s ChipID = 0x%08x, sensor_id = 0x%08x, success! \n", __func__, + correct_id, sensor_id); + TRACE(IMX219_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT IMX219_IsiGetSensorRevisionIss + (IsiSensorHandle_t handle, uint32_t * p_value) { + RESULT result = RET_SUCCESS; + TRACE(IMX219_INFO, "%s (enter)\n", __func__); + + *p_value = 0X5690; + TRACE(IMX219_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT IMX219_IsiGetGainLimitsIss + (IsiSensorHandle_t handle, float *pMinGain, float *pMaxGain) { + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + RESULT result = RET_SUCCESS; + + /*TODO*/ + + TRACE(IMX219_INFO, "%s: (enter)\n", __func__); + + if (pIMX219Ctx == NULL) { + TRACE(IMX219_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if ((pMinGain == NULL) || (pMaxGain == NULL)) { + TRACE(IMX219_ERROR, "%s: NULL pointer received!!\n"); + return (RET_NULL_POINTER); + } + + *pMinGain = pIMX219Ctx->AecMinGain; + *pMaxGain = pIMX219Ctx->AecMaxGain; + + TRACE(IMX219_INFO, "%s: (exit)\n", __func__); + return (result); +} + +static RESULT IMX219_IsiGetIntegrationTimeLimitsIss + (IsiSensorHandle_t handle, + float *pMinIntegrationTime, float *pMaxIntegrationTime) { + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + RESULT result = RET_SUCCESS; + + /*TODO*/ + + TRACE(IMX219_INFO, "%s: (enter)\n", __func__); + if (pIMX219Ctx == NULL) { + TRACE(IMX219_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if ((pMinIntegrationTime == NULL) || (pMaxIntegrationTime == NULL)) { + TRACE(IMX219_ERROR, "%s: NULL pointer received!!\n"); + return (RET_NULL_POINTER); + } + + *pMinIntegrationTime = pIMX219Ctx->AecMinIntegrationTime; + *pMaxIntegrationTime = pIMX219Ctx->AecMaxIntegrationTime; + + TRACE(IMX219_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT IMX219_IsiGetGainIss(IsiSensorHandle_t handle, float *pSetGain) { + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(IMX219_INFO, "%s: (enter)\n", __func__); + + if (pIMX219Ctx == NULL) { + TRACE(IMX219_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (pSetGain == NULL) { + return (RET_NULL_POINTER); + } + + *pSetGain = pIMX219Ctx->AecCurGain; + + TRACE(IMX219_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT IMX219_IsiGetLongGainIss(IsiSensorHandle_t handle, float *gain) +{ + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + + TRACE(IMX219_INFO, "%s: (enter)\n", __func__); + + if (pIMX219Ctx == NULL) { + TRACE(IMX219_ERROR,"%s: Invalid sensor handle (NULL pointer detected)\n",__func__); + return (RET_WRONG_HANDLE); + } + + if (gain == NULL) { + return (RET_NULL_POINTER); + } + + *gain = pIMX219Ctx->AecCurLongGain; + + TRACE(IMX219_INFO, "%s: (exit)\n", __func__); + + return (RET_SUCCESS); +} + +RESULT IMX219_IsiGetVSGainIss(IsiSensorHandle_t handle, float *pSetGain) { + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + RESULT result = RET_SUCCESS; + + TRACE(IMX219_INFO, "%s: (enter)\n", __func__); + + if (pIMX219Ctx == NULL) { + TRACE(IMX219_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (pSetGain == NULL) { + return (RET_NULL_POINTER); + } + + *pSetGain = pIMX219Ctx->AecCurVSGain; + + TRACE(IMX219_INFO, "%s: (exit)\n", __func__); + + return (result); +} + +RESULT IMX219_IsiGetGainIncrementIss(IsiSensorHandle_t handle, float *pIncr) { + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(IMX219_INFO, "%s: (enter)\n", __func__); + + if (pIMX219Ctx == NULL) { + TRACE(IMX219_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (pIncr == NULL) + return (RET_NULL_POINTER); + + *pIncr = pIMX219Ctx->AecGainIncrement; + + TRACE(IMX219_INFO, "%s: (exit)\n", __func__); + + return (result); +} + +RESULT IMX219_IsiSetGainIss + (IsiSensorHandle_t handle, + float NewGain, float *pSetGain, float *hdr_ratio) { + + RESULT result = RET_SUCCESS; + int32_t again = 0, dgain = 0, ret = 0; + float gain_left; + + + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + if (pIMX219Ctx == NULL || pIMX219Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pIMX219Ctx->IsiCtx.HalHandle; + //IMX219 specific + again = 256-256/NewGain; + if (again >=232) { + again = 232; + } + gain_left = NewGain / (256.0 / (256.0 - (float)again)); // what's left after again + TRACE(IMX219_INFO, "%s: NewGain=%f again=%d, gain_left=%f dgain integer=%d dgain float=%f dgain float reg=%u\n" + , __func__, NewGain, again, gain_left, (unsigned int)gain_left, (gain_left - (unsigned int)gain_left), (unsigned int)((float)(gain_left - (unsigned int)gain_left) * 256.0)); + + ret = IMX219_IsiRegisterWriteIss(handle, 0x157, again); + if (ret != 0) { + return (RET_FAILURE); + } + + ret = IMX219_IsiRegisterWriteIss(handle, 0x158, ((unsigned int)gain_left > 15 ) ? 15 : (unsigned int)gain_left); + if (ret != 0) { + return (RET_FAILURE); + } + + ret = IMX219_IsiRegisterWriteIss(handle, 0x159, (unsigned int)((float)(gain_left - (unsigned int)gain_left) * 256.0)); + if (ret != 0) { + return (RET_FAILURE); + } + + pIMX219Ctx->AecCurGain = ((float)(NewGain)); + *pSetGain = pIMX219Ctx->AecCurGain; + TRACE(IMX219_DEBUG, "%s: g=%f\n", __func__, *pSetGain); + return (result); +} + +RESULT IMX219_IsiSetLongGainIss(IsiSensorHandle_t handle, float gain) +{ + int ret = 0; + TRACE(IMX219_INFO, "%s: (enter)\n", __func__); + + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + + if (!pIMX219Ctx || !pIMX219Ctx->IsiCtx.HalHandle) + { + TRACE(IMX219_ERROR,"%s: Invalid sensor handle (NULL pointer detected)\n",__func__); + return (RET_WRONG_HANDLE); + } + + HalContext_t *pHalCtx = (HalContext_t *) pIMX219Ctx->IsiCtx.HalHandle; + + uint32_t SensorGain = 0; + SensorGain = gain * pIMX219Ctx->gain_accuracy; + if (pIMX219Ctx->LastLongGain != SensorGain) + { + + /*TODO*/ +#if 0 + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_LONG_GAIN, &SensorGain); + if (ret != 0) + { + return (RET_FAILURE); + TRACE(IMX219_ERROR,"%s: set long gain failed\n"); + + } +#endif + pIMX219Ctx->LastLongGain = SensorGain; + pIMX219Ctx->AecCurLongGain = gain; + } + + TRACE(IMX219_INFO, "%s: (exit)\n", __func__); + return (RET_SUCCESS); +} + +RESULT IMX219_IsiSetVSGainIss + (IsiSensorHandle_t handle, + float NewIntegrationTime, + float NewGain, float *pSetGain, float *hdr_ratio) { + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + HalContext_t *pHalCtx = (HalContext_t *) pIMX219Ctx->IsiCtx.HalHandle; + RESULT result = RET_SUCCESS; +#if 0 + float Gain = 0.0f; + + uint32_t ucGain = 0U; + uint32_t again = 0U; +#endif + + TRACE(IMX219_INFO, "%s: (enter)\n", __func__); + + if (!pIMX219Ctx) { + TRACE(IMX219_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pSetGain || !hdr_ratio) + return (RET_NULL_POINTER); + + uint32_t SensorGain = 0; + SensorGain = NewGain * pIMX219Ctx->gain_accuracy; + + /*TODO*/ + //ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_VSGAIN, &SensorGain); + + pIMX219Ctx->AecCurVSGain = NewGain; + *pSetGain = pIMX219Ctx->AecCurGain; + TRACE(IMX219_DEBUG, "%s: g=%f\n", __func__, *pSetGain); + TRACE(IMX219_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT IMX219_IsiSetBayerPattern(IsiSensorHandle_t handle, uint8_t pattern) +{ + + RESULT result = RET_SUCCESS; +#if 0 + uint8_t h_shift = 0, v_shift = 0; + uint32_t val_h = 0, val_l = 0; + uint16_t val = 0; + uint8_t Start_p = 0; + bool_t streaming_status; + TRACE(IMX219_INFO, "%s: (enter)\n", __func__); + + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + if (pIMX219Ctx == NULL || pIMX219Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + // pattern 0:B 1:GB 2:GR 3:R + streaming_status = pIMX219Ctx->Streaming; + result = IMX219_IsiSensorSetStreamingIss(handle, 0); + switch (pattern) { + case BAYER_BGGR: + Start_p = 0; + break; + case BAYER_GBRG: + Start_p = 1; + break; + case BAYER_GRBG: + Start_p = 2; + break; + case BAYER_RGGB: + Start_p = 3; + break; + } + + h_shift = Start_p % 2; + v_shift = Start_p / 2; + + IMX219_IsiRegisterReadIss(handle, 0x30a0, &val_h); + IMX219_IsiRegisterReadIss(handle, 0x30a1, &val_l); + val = (((val_h << 8) & 0xff00) | (val_l & 0x00ff)) + h_shift; + val_h = (val >> 8) & 0xff; + val_l = val & 0xff; + IMX219_IsiRegisterWriteIss(handle, 0x30a0, (uint8_t)val_h); + IMX219_IsiRegisterWriteIss(handle, 0x30a1, (uint8_t)val_l); + + IMX219_IsiRegisterReadIss(handle, 0x30a2, &val_h); + IMX219_IsiRegisterReadIss(handle, 0x30a3, &val_l); + val = (((val_h << 8) & 0xff00) | (val_l & 0x00ff)) + v_shift; + val_h = (val >> 8) & 0xff; + val_l = val & 0xff; + IMX219_IsiRegisterWriteIss(handle, 0x30a2, (uint8_t)val_h); + IMX219_IsiRegisterWriteIss(handle, 0x30a3, (uint8_t)val_l); + + IMX219_IsiRegisterReadIss(handle, 0x30a4, &val_h); + IMX219_IsiRegisterReadIss(handle, 0x30a5, &val_l); + val = (((val_h << 8) & 0xff00) | (val_l & 0x00ff)) + h_shift; + val_h = (val >> 8) & 0xff; + val_l = val & 0xff; + IMX219_IsiRegisterWriteIss(handle, 0x30a4, (uint8_t)val_h); + IMX219_IsiRegisterWriteIss(handle, 0x30a5, (uint8_t)val_l); + + IMX219_IsiRegisterReadIss(handle, 0x30a6, &val_h); + IMX219_IsiRegisterReadIss(handle, 0x30a7, &val_l); + val = (((val_h << 8) & 0xff00) | (val_l & 0x00ff)) + v_shift; + val_h = (val >> 8) & 0xff; + val_l = val & 0xff; + IMX219_IsiRegisterWriteIss(handle, 0x30a6, (uint8_t)val_h); + IMX219_IsiRegisterWriteIss(handle, 0x30a7, (uint8_t)val_l); + + pIMX219Ctx->pattern = pattern; + result = IMX219_IsiSensorSetStreamingIss(handle, streaming_status); +#endif + + return (result); +} + +RESULT IMX219_IsiGetIntegrationTimeIss + (IsiSensorHandle_t handle, float *pSetIntegrationTime) +{ + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(IMX219_INFO, "%s: (enter)\n", __func__); + + if (!pIMX219Ctx) { + TRACE(IMX219_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pSetIntegrationTime) + return (RET_NULL_POINTER); + *pSetIntegrationTime = pIMX219Ctx->AecCurIntegrationTime; + TRACE(IMX219_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT IMX219_IsiGetLongIntegrationTimeIss(IsiSensorHandle_t handle, float *pIntegrationTime) +{ + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + TRACE(IMX219_INFO, "%s: (enter)\n", __func__); + + if (!pIMX219Ctx) { + TRACE(IMX219_ERROR,"%s: Invalid sensor handle (NULL pointer detected)\n",__func__); + return (RET_WRONG_HANDLE); + } + if (!pIntegrationTime) + return (RET_NULL_POINTER); + + pIMX219Ctx->AecCurLongIntegrationTime = pIMX219Ctx->AecCurIntegrationTime; + + *pIntegrationTime = pIMX219Ctx->AecCurLongIntegrationTime; + TRACE(IMX219_INFO, "%s: (exit)\n", __func__); + return (RET_SUCCESS); +} + +RESULT IMX219_IsiGetVSIntegrationTimeIss + (IsiSensorHandle_t handle, float *pSetIntegrationTime) +{ + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(IMX219_INFO, "%s: (enter)\n", __func__); + + if (!pIMX219Ctx) { + TRACE(IMX219_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + if (!pSetIntegrationTime) + return (RET_NULL_POINTER); + + *pSetIntegrationTime = pIMX219Ctx->AecCurVSIntegrationTime; + TRACE(IMX219_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT IMX219_IsiGetIntegrationTimeIncrementIss + (IsiSensorHandle_t handle, float *pIncr) +{ + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(IMX219_INFO, "%s: (enter)\n", __func__); + + if (!pIMX219Ctx) { + TRACE(IMX219_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pIncr) + return (RET_NULL_POINTER); + + //_smallest_ increment the sensor/driver can handle (e.g. used for sliders in the application) + *pIncr = pIMX219Ctx->AecIntegrationTimeIncrement; + TRACE(IMX219_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT IMX219_IsiSetIntegrationTimeIss + (IsiSensorHandle_t handle, + float NewIntegrationTime, + float *pSetIntegrationTime, + uint8_t * pNumberOfFramesToSkip, float *hdr_ratio) +{ + RESULT result = RET_SUCCESS; + + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + HalContext_t *pHalCtx = (HalContext_t *) pIMX219Ctx->IsiCtx.HalHandle; + + uint32_t exp_line = 0; + uint32_t exp_line_old = 0; + int ret = 0; + + TRACE(IMX219_INFO, "%s: (enter handle = %p)\n", __func__, handle); + + if (!pIMX219Ctx) { + TRACE(IMX219_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pSetIntegrationTime || !pNumberOfFramesToSkip) { + TRACE(IMX219_ERROR, + "%s: Invalid parameter (NULL pointer detected)\n", + __func__); + return (RET_NULL_POINTER); + } + exp_line = NewIntegrationTime / pIMX219Ctx->one_line_exp_time; + exp_line_old = exp_line; + exp_line = + MIN(pIMX219Ctx->MaxIntegrationLine, + MAX(pIMX219Ctx->MinIntegrationLine, exp_line)); + + TRACE(IMX219_DEBUG, "%s: set AEC_PK_EXPO=0x%05x min_exp_line = %d, max_exp_line = %d\n", __func__, exp_line, pIMX219Ctx->MinIntegrationLine, pIMX219Ctx->MaxIntegrationLine); + + if (exp_line != pIMX219Ctx->OldIntegrationTime) { + + /*TODO*/ + //ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_EXP, &exp_line); + pIMX219Ctx->OldIntegrationTime = exp_line; // remember current integration time + pIMX219Ctx->AecCurIntegrationTime = + exp_line * pIMX219Ctx->one_line_exp_time; + + *pNumberOfFramesToSkip = 1U; //skip 1 frame + } else { + *pNumberOfFramesToSkip = 0U; //no frame skip + } + + if (NewIntegrationTime > pIMX219Ctx->MaxIntegrationLine * pIMX219Ctx->one_line_exp_time) + NewIntegrationTime = pIMX219Ctx->MaxIntegrationLine * pIMX219Ctx->one_line_exp_time; + + // IMX219 specific + // int vts = exp_line + 16; + + ret = IMX219_IsiRegisterWriteIss(handle, 0x015A, (exp_line>>8)); + if (ret != 0) { + return (RET_FAILURE); + } + ret = IMX219_IsiRegisterWriteIss(handle, 0x015B, (exp_line&0xff)); + if (ret != 0) { + return (RET_FAILURE); + } + + if (exp_line_old != exp_line) { + *pSetIntegrationTime = pIMX219Ctx->AecCurIntegrationTime; + } else { + *pSetIntegrationTime = NewIntegrationTime; + } + + TRACE(IMX219_DEBUG, "%s: Ti=%f\n", __func__, *pSetIntegrationTime); + TRACE(IMX219_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT IMX219_IsiSetLongIntegrationTimeIss(IsiSensorHandle_t handle,float IntegrationTime) +{ + int ret; + TRACE(IMX219_INFO, "%s: (enter)\n", __func__); + + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + if (!handle || !pIMX219Ctx->IsiCtx.HalHandle) + { + TRACE(IMX219_ERROR,"%s: Invalid sensor handle (NULL pointer detected)\n",__func__); + return (RET_WRONG_HANDLE); + } + HalContext_t *pHalCtx = (HalContext_t *) pIMX219Ctx->IsiCtx.HalHandle; + + uint32_t exp_line = 0; + exp_line = IntegrationTime / pIMX219Ctx->one_line_exp_time; + exp_line = MIN(pIMX219Ctx->MaxIntegrationLine, MAX(pIMX219Ctx->MinIntegrationLine, exp_line)); + + if (exp_line != pIMX219Ctx->LastLongExpLine) + { + if (pIMX219Ctx->KernelDriverFlag) + { + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_LONG_EXP, &exp_line); + if (ret != 0) + { + TRACE(IMX219_ERROR,"%s: set long gain failed\n"); + return RET_FAILURE; + } + } + + pIMX219Ctx->LastLongExpLine = exp_line; + pIMX219Ctx->AecCurLongIntegrationTime = pIMX219Ctx->LastLongExpLine*pIMX219Ctx->one_line_exp_time; + } + + + TRACE(IMX219_INFO, "%s: (exit)\n", __func__); + return (RET_SUCCESS); +} + +RESULT IMX219_IsiSetVSIntegrationTimeIss + (IsiSensorHandle_t handle, + float NewIntegrationTime, + float *pSetVSIntegrationTime, + uint8_t * pNumberOfFramesToSkip, float *hdr_ratio) +{ + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + RESULT result = RET_SUCCESS; + uint32_t exp_line = 0; + + TRACE(IMX219_INFO, "%s: (enter)\n", __func__); + + if (!pIMX219Ctx) { + TRACE(IMX219_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pSetVSIntegrationTime || !pNumberOfFramesToSkip) { + TRACE(IMX219_ERROR, + "%s: Invalid parameter (NULL pointer detected)\n", + __func__); + return (RET_NULL_POINTER); + } + + TRACE(IMX219_INFO, + "%s: maxIntegrationTime-=%f minIntegrationTime = %f\n", __func__, + pIMX219Ctx->AecMaxIntegrationTime, + pIMX219Ctx->AecMinIntegrationTime); + + + exp_line = NewIntegrationTime / pIMX219Ctx->one_line_exp_time; + exp_line = + MIN(pIMX219Ctx->MaxIntegrationLine, + MAX(pIMX219Ctx->MinIntegrationLine, exp_line)); + + if (exp_line != pIMX219Ctx->OldVsIntegrationTime) { + /*TODO*/ + // ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_VSEXP, &exp_line); + } else if (1){ + + pIMX219Ctx->OldVsIntegrationTime = exp_line; + pIMX219Ctx->AecCurVSIntegrationTime = exp_line * pIMX219Ctx->one_line_exp_time; //remember current integration time + *pNumberOfFramesToSkip = 1U; //skip 1 frame + } else { + *pNumberOfFramesToSkip = 0U; //no frame skip + } + + *pSetVSIntegrationTime = pIMX219Ctx->AecCurVSIntegrationTime; + + TRACE(IMX219_DEBUG, "%s: NewIntegrationTime=%f\n", __func__, + NewIntegrationTime); + TRACE(IMX219_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT IMX219_IsiExposureControlIss + (IsiSensorHandle_t handle, + float NewGain, + float NewIntegrationTime, + uint8_t * pNumberOfFramesToSkip, + float *pSetGain, float *pSetIntegrationTime, float *hdr_ratio) +{ + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + RESULT result = RET_SUCCESS; + int TmpGain; + /*TODO*/ + + TRACE(IMX219_INFO, "%s: (enter)\n", __func__); + + if (pIMX219Ctx == NULL) { + TRACE(IMX219_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if ((pNumberOfFramesToSkip == NULL) || (pSetGain == NULL) + || (pSetIntegrationTime == NULL)) { + TRACE(IMX219_ERROR, + "%s: Invalid parameter (NULL pointer detected)\n", + __func__); + return (RET_NULL_POINTER); + } + + TRACE(IMX219_ERROR, "%s: g=%f, Ti=%f\n", __func__, NewGain, + NewIntegrationTime); + + result = IMX219_IsiSetIntegrationTimeIss(handle, NewIntegrationTime, + pSetIntegrationTime, + pNumberOfFramesToSkip, hdr_ratio); + result = IMX219_IsiSetGainIss(handle, NewGain, pSetGain, hdr_ratio); + + pIMX219Ctx->CurHdrRatio = *hdr_ratio; + + TRACE(IMX219_INFO, "%s: (exit)\n", __func__); + + return result; +} + +RESULT IMX219_IsiGetCurrentExposureIss + (IsiSensorHandle_t handle, float *pSetGain, float *pSetIntegrationTime, float *hdr_ratio) { + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + RESULT result = RET_SUCCESS; + + TRACE(IMX219_INFO, "%s: (enter)\n", __func__); + + if (pIMX219Ctx == NULL) { + TRACE(IMX219_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if ((pSetGain == NULL) || (pSetIntegrationTime == NULL)) + return (RET_NULL_POINTER); + + *pSetGain = pIMX219Ctx->AecCurGain; + *pSetIntegrationTime = pIMX219Ctx->AecCurIntegrationTime; + *hdr_ratio = pIMX219Ctx->CurHdrRatio; + + TRACE(IMX219_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT IMX219_IsiGetResolutionIss(IsiSensorHandle_t handle, uint16_t *pwidth, uint16_t *pheight) { + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + RESULT result = RET_SUCCESS; + + TRACE(IMX219_INFO, "%s: (enter)\n", __func__); + + if (pIMX219Ctx == NULL) { + TRACE(IMX219_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + *pwidth = pIMX219Ctx->SensorMode.width; + *pheight = pIMX219Ctx->SensorMode.height; + + TRACE(IMX219_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT IMX219_IsiGetSensorFpsIss(IsiSensorHandle_t handle, uint32_t * pfps) +{ + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + RESULT result = RET_SUCCESS; + + + TRACE(IMX219_INFO, "%s: (enter)\n", __func__); + + if (pIMX219Ctx == NULL) { + TRACE(IMX219_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + HalContext_t *pHalCtx = (HalContext_t *) pIMX219Ctx->IsiCtx.HalHandle; + + if (pIMX219Ctx->KernelDriverFlag) { + /*TODO*/ + ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_FPS, pfps); + pIMX219Ctx->CurrFps = *pfps; + } + + *pfps = pIMX219Ctx->CurrFps; + + TRACE(IMX219_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT IMX219_IsiSetSensorFpsIss(IsiSensorHandle_t handle, uint32_t fps) +{ + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + RESULT result = RET_SUCCESS; + int32_t ret = 0; + TRACE(IMX219_INFO, "%s: (enter)\n", __func__); + + if (pIMX219Ctx == NULL) { + TRACE(IMX219_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + HalContext_t *pHalCtx = (HalContext_t *) pIMX219Ctx->IsiCtx.HalHandle; + + if (fps > pIMX219Ctx->MaxFps) { + TRACE(IMX219_ERROR, + "%s: set fps(%d) out of range, correct to %d (%d, %d)\n", + __func__, fps, pIMX219Ctx->MaxFps, pIMX219Ctx->MinFps, + pIMX219Ctx->MaxFps); + fps = pIMX219Ctx->MaxFps; + } + if (fps < pIMX219Ctx->MinFps) { + TRACE(IMX219_ERROR, + "%s: set fps(%d) out of range, correct to %d (%d, %d)\n", + __func__, fps, pIMX219Ctx->MinFps, pIMX219Ctx->MinFps, + pIMX219Ctx->MaxFps); + fps = pIMX219Ctx->MinFps; + } + if (pIMX219Ctx->KernelDriverFlag) { + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_FPS, &fps); + if (ret != 0) { + TRACE(IMX219_ERROR, "%s: set sensor fps=%d error\n", + __func__); + return (RET_FAILURE); + } + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_SENSOR_MODE, &(pIMX219Ctx->SensorMode)); + { + pIMX219Ctx->MaxIntegrationLine = pIMX219Ctx->SensorMode.ae_info.max_integration_time; + pIMX219Ctx->AecMaxIntegrationTime = pIMX219Ctx->MaxIntegrationLine * pIMX219Ctx->one_line_exp_time; + } +#ifdef SUBDEV_CHAR + struct vvcam_ae_info_s ae_info; + ret = + ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_AE_INFO, &ae_info); + if (ret != 0) { + TRACE(IMX219_ERROR, "%s:sensor get ae info error!\n", + __func__); + return (RET_FAILURE); + } + pIMX219Ctx->one_line_exp_time = + (float)ae_info.one_line_exp_time_ns / 1000000000; + pIMX219Ctx->MaxIntegrationLine = ae_info.max_integration_time; + pIMX219Ctx->AecMaxIntegrationTime = + pIMX219Ctx->MaxIntegrationLine * + pIMX219Ctx->one_line_exp_time; +#endif + } + + TRACE(IMX219_INFO, "%s: set sensor fps = %d\n", __func__, + pIMX219Ctx->CurrFps); + + TRACE(IMX219_INFO, "%s: (exit)\n", __func__); + return (result); +} + +static RESULT IMX219_IsiActivateTestPattern(IsiSensorHandle_t handle, + const bool_t enable) +{ + RESULT result = RET_SUCCESS; + + TRACE(IMX219_INFO, "%s: (enter)\n", __func__); + + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + if (pIMX219Ctx == NULL || pIMX219Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + if (pIMX219Ctx->Configured != BOOL_TRUE) + return RET_WRONG_STATE; + + if (BOOL_TRUE == enable) { + //result = IMX219_IsiRegisterWriteIss(handle, 0x3253, 0x80); + } else { + //result = IMX219_IsiRegisterWriteIss(handle, 0x3253, 0x00); + } + pIMX219Ctx->TestPattern = enable; + + TRACE(IMX219_INFO, "%s: (exit)\n", __func__); + + return (result); +} + +static RESULT IMX219_IsiSensorSetBlcIss(IsiSensorHandle_t handle, sensor_blc_t * pblc) +{ + int32_t ret = 0; + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + if (pIMX219Ctx == NULL || pIMX219Ctx->IsiCtx.HalHandle == NULL) { + return RET_WRONG_HANDLE; + } + + if (pblc == NULL) + return RET_NULL_POINTER; + + HalContext_t *pHalCtx = (HalContext_t *) pIMX219Ctx->IsiCtx.HalHandle; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_BLC, pblc); + if (ret != 0) + { + TRACE(IMX219_ERROR, "%s: set wb error\n", __func__); + } + + return RET_SUCCESS; +} + +static RESULT IMX219_IsiSensorSetWBIss(IsiSensorHandle_t handle, sensor_white_balance_t * pwb) +{ + int32_t ret = 0; + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + if (pIMX219Ctx == NULL || pIMX219Ctx->IsiCtx.HalHandle == NULL) { + return RET_WRONG_HANDLE; + } + HalContext_t *pHalCtx = (HalContext_t *) pIMX219Ctx->IsiCtx.HalHandle; + + if (pwb == NULL) + return RET_NULL_POINTER; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_WB, pwb); + if (ret != 0) + { + TRACE(IMX219_ERROR, "%s: set wb error\n", __func__); + } + + return RET_SUCCESS; +} + +static RESULT IMX219_IsiGetSensorAWBModeIss(IsiSensorHandle_t handle, IsiSensorAwbMode_t *pawbmode) +{ + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + if (pIMX219Ctx == NULL || pIMX219Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + if (pIMX219Ctx->SensorMode.hdr_mode == SENSOR_MODE_HDR_NATIVE){ + *pawbmode = ISI_SENSOR_AWB_MODE_SENSOR; + }else{ + *pawbmode = ISI_SENSOR_AWB_MODE_NORMAL; + } + return RET_SUCCESS; +} + +static RESULT IMX219_IsiSensorGetExpandCurveIss(IsiSensorHandle_t handle, sensor_expand_curve_t * pexpand_curve) +{ + int32_t ret = 0; + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + if (pIMX219Ctx == NULL || pIMX219Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pIMX219Ctx->IsiCtx.HalHandle; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_EXPAND_CURVE, pexpand_curve); + if (ret != 0) + { + TRACE(IMX219_ERROR, "%s: get expand cure error\n", __func__); + return RET_FAILURE; + } + + return RET_SUCCESS; +} + +static RESULT IMX219_IsiGetCapsIss(IsiSensorHandle_t handle, + IsiSensorCaps_t * pIsiSensorCaps) +{ + IMX219_Context_t *pIMX219Ctx = (IMX219_Context_t *) handle; + + RESULT result = RET_SUCCESS; + + TRACE(IMX219_INFO, "%s (enter)\n", __func__); + + if (pIMX219Ctx == NULL) { + return (RET_WRONG_HANDLE); + } + + if (pIsiSensorCaps == NULL) { + return (RET_NULL_POINTER); + } + + pIsiSensorCaps->BusWidth = pIMX219Ctx->SensorMode.bit_width; + pIsiSensorCaps->Mode = ISI_MODE_BAYER; + pIsiSensorCaps->FieldSelection = ISI_FIELDSEL_BOTH; + pIsiSensorCaps->YCSequence = ISI_YCSEQ_YCBYCR; + pIsiSensorCaps->Conv422 = ISI_CONV422_NOCOSITED; + pIsiSensorCaps->BPat = pIMX219Ctx->SensorMode.bayer_pattern; + pIsiSensorCaps->HPol = ISI_HPOL_REFPOS; + pIsiSensorCaps->VPol = ISI_VPOL_NEG; + pIsiSensorCaps->Edge = ISI_EDGE_RISING; + pIsiSensorCaps->Resolution.width = pIMX219Ctx->SensorMode.width; + pIsiSensorCaps->Resolution.height = pIMX219Ctx->SensorMode.height; + pIsiSensorCaps->SmiaMode = ISI_SMIA_OFF; + pIsiSensorCaps->MipiLanes = ISI_MIPI_2LANES; + + if (pIsiSensorCaps->BusWidth == 10) { + pIsiSensorCaps->MipiMode = ISI_MIPI_MODE_RAW_10; + }else if (pIsiSensorCaps->BusWidth == 12){ + pIsiSensorCaps->MipiMode = ISI_MIPI_MODE_RAW_12; + }else{ + pIsiSensorCaps->MipiMode = ISI_MIPI_OFF; + } + + TRACE(IMX219_INFO, "%s (exit)\n", __func__); + return result; +} + +RESULT IMX219_IsiGetSensorIss(IsiSensor_t *pIsiSensor) +{ + RESULT result = RET_SUCCESS; + TRACE( IMX219_INFO, "%s (enter)\n", __func__); + + if ( pIsiSensor != NULL ) { + pIsiSensor->pszName = SensorName; + pIsiSensor->pIsiCreateSensorIss = IMX219_IsiCreateSensorIss; + + pIsiSensor->pIsiInitSensorIss = IMX219_IsiInitSensorIss; + pIsiSensor->pIsiGetSensorModeIss = IMX219_IsiGetSensorModeIss; + pIsiSensor->pIsiResetSensorIss = IMX219_IsiResetSensorIss; + pIsiSensor->pIsiReleaseSensorIss = IMX219_IsiReleaseSensorIss; + pIsiSensor->pIsiGetCapsIss = IMX219_IsiGetCapsIss; + pIsiSensor->pIsiSetupSensorIss = IMX219_IsiSetupSensorIss; + pIsiSensor->pIsiChangeSensorResolutionIss = IMX219_IsiChangeSensorResolutionIss; + pIsiSensor->pIsiSensorSetStreamingIss = IMX219_IsiSensorSetStreamingIss; + pIsiSensor->pIsiSensorSetPowerIss = IMX219_IsiSensorSetPowerIss; + pIsiSensor->pIsiCheckSensorConnectionIss = IMX219_IsiCheckSensorConnectionIss; + pIsiSensor->pIsiGetSensorRevisionIss = IMX219_IsiGetSensorRevisionIss; + pIsiSensor->pIsiRegisterReadIss = IMX219_IsiRegisterReadIss; + pIsiSensor->pIsiRegisterWriteIss = IMX219_IsiRegisterWriteIss; + + /* AEC functions */ + pIsiSensor->pIsiExposureControlIss = IMX219_IsiExposureControlIss; + pIsiSensor->pIsiGetGainLimitsIss = IMX219_IsiGetGainLimitsIss; + pIsiSensor->pIsiGetIntegrationTimeLimitsIss = IMX219_IsiGetIntegrationTimeLimitsIss; + pIsiSensor->pIsiGetCurrentExposureIss = IMX219_IsiGetCurrentExposureIss; + pIsiSensor->pIsiGetVSGainIss = IMX219_IsiGetVSGainIss; + pIsiSensor->pIsiGetGainIss = IMX219_IsiGetGainIss; + pIsiSensor->pIsiGetLongGainIss = IMX219_IsiGetLongGainIss; + pIsiSensor->pIsiGetGainIncrementIss = IMX219_IsiGetGainIncrementIss; + pIsiSensor->pIsiSetGainIss = IMX219_IsiSetGainIss; + pIsiSensor->pIsiGetIntegrationTimeIss = IMX219_IsiGetIntegrationTimeIss; + pIsiSensor->pIsiGetVSIntegrationTimeIss = IMX219_IsiGetVSIntegrationTimeIss; + pIsiSensor->pIsiGetLongIntegrationTimeIss = IMX219_IsiGetLongIntegrationTimeIss; + pIsiSensor->pIsiGetIntegrationTimeIncrementIss = IMX219_IsiGetIntegrationTimeIncrementIss; + pIsiSensor->pIsiSetIntegrationTimeIss = IMX219_IsiSetIntegrationTimeIss; + pIsiSensor->pIsiQuerySensorIss = IMX219_IsiQuerySensorIss; + pIsiSensor->pIsiGetResolutionIss = IMX219_IsiGetResolutionIss; + pIsiSensor->pIsiGetSensorFpsIss = IMX219_IsiGetSensorFpsIss; + pIsiSensor->pIsiSetSensorFpsIss = IMX219_IsiSetSensorFpsIss; + pIsiSensor->pIsiSensorGetExpandCurveIss = IMX219_IsiSensorGetExpandCurveIss; + + /* AWB specific functions */ + + /* Testpattern */ + pIsiSensor->pIsiActivateTestPattern = IMX219_IsiActivateTestPattern; + pIsiSensor->pIsiSetBayerPattern = IMX219_IsiSetBayerPattern; + + pIsiSensor->pIsiSensorSetBlcIss = IMX219_IsiSensorSetBlcIss; + pIsiSensor->pIsiSensorSetWBIss = IMX219_IsiSensorSetWBIss; + pIsiSensor->pIsiGetSensorAWBModeIss = IMX219_IsiGetSensorAWBModeIss; + + } else { + result = RET_NULL_POINTER; + } + + TRACE( IMX219_INFO, "%s (exit)\n", __func__); + return ( result ); +} + +/***************************************************************************** +* each sensor driver need declare this struct for isi load +*****************************************************************************/ +IsiCamDrvConfig_t IMX219_IsiCamDrvConfig = { + 0, + IMX219_IsiQuerySensorSupportIss, + IMX219_IsiGetSensorIss, + { + SensorName, /**< IsiSensor_t.pszName */ + 0, /**< IsiSensor_t.pIsiInitIss>*/ + 0, /**< IsiSensor_t.pIsiResetSensorIss>*/ + 0, /**< IsiSensor_t.pRegisterTable */ + 0, /**< IsiSensor_t.pIsiSensorCaps */ + 0, /**< IsiSensor_t.pIsiCreateSensorIss */ + 0, /**< IsiSensor_t.pIsiReleaseSensorIss */ + 0, /**< IsiSensor_t.pIsiGetCapsIss */ + 0, /**< IsiSensor_t.pIsiSetupSensorIss */ + 0, /**< IsiSensor_t.pIsiChangeSensorResolutionIss */ + 0, /**< IsiSensor_t.pIsiSensorSetStreamingIss */ + 0, /**< IsiSensor_t.pIsiSensorSetPowerIss */ + 0, /**< IsiSensor_t.pIsiCheckSensorConnectionIss */ + 0, /**< IsiSensor_t.pIsiGetSensorRevisionIss */ + 0, /**< IsiSensor_t.pIsiRegisterReadIss */ + 0, /**< IsiSensor_t.pIsiRegisterWriteIss */ + + 0, /**< IsiSensor_t.pIsiExposureControlIss */ + 0, /**< IsiSensor_t.pIsiGetGainLimitsIss */ + 0, /**< IsiSensor_t.pIsiGetIntegrationTimeLimitsIss */ + 0, /**< IsiSensor_t.pIsiGetCurrentExposureIss */ + 0, /**< IsiSensor_t.pIsiGetGainIss */ + 0, /**< IsiSensor_t.pIsiGetVSGainIss */ + 0, /**< IsiSensor_t.pIsiGetGainIncrementIss */ + 0, /**< IsiSensor_t.pIsiGetGainIncrementIss */ + 0, /**< IsiSensor_t.pIsiSetGainIss */ + 0, /**< IsiSensor_t.pIsiGetIntegrationTimeIss */ + 0, /**< IsiSensor_t.pIsiGetIntegrationTimeIncrementIss */ + 0, /**< IsiSensor_t.pIsiSetIntegrationTimeIss */ + 0, /**< IsiSensor_t.pIsiGetResolutionIss */ + 0, /**< IsiSensor_t.pIsiGetAfpsInfoIss */ + + 0, /**< IsiSensor_t.pIsiMdiInitMotoDriveMds */ + 0, /**< IsiSensor_t.pIsiMdiSetupMotoDrive */ + 0, /**< IsiSensor_t.pIsiMdiFocusSet */ + 0, /**< IsiSensor_t.pIsiMdiFocusGet */ + 0, /**< IsiSensor_t.pIsiMdiFocusCalibrate */ + 0, /**< IsiSensor_t.pIsiGetSensorMipiInfoIss */ + 0, /**< IsiSensor_t.pIsiActivateTestPattern */ + 0, /**< IsiSensor_t.pIsiSetBayerPattern */ + } +}; diff --git a/drivers/IMX219/IMX219_1640x1232.xml b/drivers/IMX219/IMX219_1640x1232.xml new file mode 100644 index 0000000..0bb91f0 --- /dev/null +++ b/drivers/IMX219/IMX219_1640x1232.xml @@ -0,0 +1,1539 @@ + + +
+ + 24-Aug-2022 + + + hong + + + imx219 + + + 2MLens_0824 + + + v2.1.1 + + + + + 1640x1232 + + + 0x00000001 + + + [ 1640] + + + [ 1232] + + + + + FPS_15 + + + [ 14.9916] + + + + + FPS_10 + + + [ 9.9944] + + + + + FPS_05 + + + [ 4.9972] + + + + + +
+ + + + + + 1640x1232 + + + 1640x1232 + + + [0.312492 0.450819 0.23669] + + + [-0.7399 0.0709331 0.668967 0.345275 -0.81341 0.46813] + + + [-0.74481 -0.667276 -2.7153] + + + [0.930564 1.0265 1.12244 1.21838 1.31432 1.41026 1.5062 1.6195 1.65613 1.74979 1.87815 1.95299 2.08183 2.17777 2.27371 2.4696] + + + [0.0594494 0.0548923 0.0512294 0.0472492 0.0446306 0.0425199 0.0410322 0.177014 0.310302 0.340953 0.168608 0.113754 0.0466876 0.0503825 0.0544594 0.063584] + + + [0.930564 1.02079 1.10262 1.1934 1.33019 1.41902 1.48294 1.60213 1.71432 1.79667 1.89229 2.01745 2.11657 2.20776 2.29061 2.4696] + + + [0.0405506 0.0683495 0.0934971 0.130669 0.144892 0.140332 0.141432 0.158091 0.204458 0.210744 0.221824 0.246499 0.242726 0.189205 0.17663 0.036416] + + + [0.8 0.90731 1.01462 1.12193 1.22924 1.33655 1.53212 1.57122 1.61331 1.68792 1.78386 1.97841 2.04665 2.24005 2.39897 2.5096] + + + [0.11674 0.110633 0.105483 0.101224 0.096918 0.0940591 0.111862 0.222281 0.328691 0.417498 0.379934 0.138274 0.144405 0.12586 0.16665 0.11686] + + + [0.8 0.90731 1.05178 1.14174 1.24796 1.33411 1.43406 1.53184 1.68057 1.74397 1.85555 1.9593 2.07767 2.23092 2.39086 2.5096] + + + [0.0832596 0.0893669 0.142538 0.172086 0.210436 0.228354 0.232203 0.239668 0.269923 0.289884 0.283281 0.298762 0.307798 0.285477 0.206964 0.083142] + + + [ 0.93056] + + + [ 2.4696] + + + [ 2.5096] + + + [ 1.794] + + + D50 + + + [ 4.5676] + + + [0.75 1.28836 1.77672 2.164 2.6 3.0618] + + + [114 114 105 95 95 90] + + + [83 83 110 120 122 128] + + + [28 27 18 16 9 9] + + + [123 123 123 123 123 120] + + + [123 123 123 123 123 126] + + + [5 5 5 5 5 5] + + + [ 1] + + + [ 0.8] + + + [ 0.05] + + + + [ 0.05] + + + [ 0.05] + + + [ 0.4] + + + [ 0.5] + + + [ 0.9] + + + [ 0.5] + + + [ 50] + + + [ 1] + + + [ 0.5] + + + + + + + + A + + + Indoor + + + + [1207.95 1609.35 1609.35 4143.2801] + + + [ 247.3246] + + + [1 1] + + + [-0.0687979 -0.012008] + + + + + + 1640x1232 + + + 1640x1232_A_90 + + + + + [1.2679 1 1 2.4534] + + + [1.62147 -0.0445277 -0.546563 -0.261854 1.52127 -0.211003 0.0194952 -1.45836 2.4966] + + + [-124.39 -122.251 -145.4412] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + A_100 + + + + + + D50 + + + Indoor + + + + [330.699 34.5927 34.5927 1629.0054] + + + [ 116.6849] + + + [1 1] + + + [0.050113 -0.068793] + + + + + + 1640x1232 + + + 1640x1232_D50_90 + + + + + [2.01726 1 1 1.6274] + + + [1.5183 -0.341669 -0.150056 -0.23618 1.63938 -0.35403 -0.0308324 -0.524599 1.5759] + + + [-81.0317 -71.6168 -83.757] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D50_100 + + + + + + D65 + + + Indoor + + + + [333.92 -176.3 -176.3 1334.0628] + + + [ 102.4529] + + + [1 1] + + + [0.0955004 -0.020029] + + + + + + 1640x1232 + + + 1640x1232_D65_90 + + + + + [2.41759 1 1 1.4225] + + + [1.74788 -0.562271 -0.124172 -0.189096 1.66277 -0.416313 0.0171408 -0.552856 1.5549] + + + [-84.4486 -70.1682 -78.446] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D65_100 + + + + + + D75 + + + Outdoor + + + + [358.543 -250.477 -250.477 1258.5652] + + + [ 99.2022] + + + [1 1] + + + [0.152003 -0.013334] + + + + + + 1640x1232 + + + 1640x1232_D75_90 + + + + + [2.46127 1 1 1.3353] + + + [1.84441 -0.649995 -0.151423 -0.17172 1.61099 -0.39653 0.0218805 -0.506897 1.5048] + + + [-87.0209 -74.4697 -80.8341] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D75_100 + + + + + + F2 (CWF) + + + Indoor + + + + [518.32 -301.304 -301.304 1170.4769] + + + [ 114.3146] + + + [1 1] + + + [0.166784 -0.0016528] + + + + + + 1640x1232 + + + 1640x1232_F2_90 + + + + + [2.02785 1 1 2.1442] + + + [2.06572 -0.770765 -0.278229 -0.301217 1.49376 -0.146116 -0.0191357 -0.55147 1.6208] + + + [-68.4901 -66.8725 -80.6516] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F2_100 + + + + + + F11 (TL84) + + + Indoor + + + + [392.346 -49.1799 -49.1799 1178.8269] + + + [ 107.9546] + + + [1 1] + + + [-0.150097 0.01359] + + + + + + 1640x1232 + + + 1640x1232_F11_90 + + + + + [1.79738 1 1 2.0643] + + + [1.52028 -0.278563 -0.200712 -0.305258 1.64403 -0.267838 -0.00796981 -0.719295 1.7485] + + + [-73.4915 -72.5498 -86.9231] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F11_100 + + + + + + F12 + + + Indoor + + + + [548.609 299.864 299.864 1633.0404] + + + [ 142.8837] + + + [1 1] + + + [0.0327322 -0.045325] + + + + + + 1640x1232 + + + 1640x1232_F12_90 + + + + + [1.00205 1 1 3.0084] + + + [1.43944 0.0309125 -0.463539 -0.338943 1.6164 -0.231193 -0.0812989 -1.41021 2.5269] + + + [-27.8837 -30.4929 -71.3504] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F12_100 + + + + + + + + + 1640x1232_A_90 + + + 1640x1232 + + + A + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 1640x1232_D50_90 + + + 1640x1232 + + + D50 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 1640x1232_D65_90 + + + 1640x1232 + + + D65 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 1640x1232_D75_90 + + + 1640x1232 + + + D75 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 1640x1232_F11_90 + + + 1640x1232 + + + F11 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 1640x1232_F12_90 + + + 1640x1232 + + + F12 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 1640x1232_F2_90 + + + 1640x1232 + + + F2 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + + + A_100 + + + [ 100] + + + [1.62147 -0.0445277 -0.546563 -0.261854 1.52127 -0.211003 0.0194952 -1.45836 2.4966] + + + [-124.39 -122.251 -145.4412] + + + [1.2679 1 1 2.4534] + + + + + D50_100 + + + [ 100] + + + [1.5183 -0.341669 -0.150056 -0.23618 1.63938 -0.35403 -0.0308324 -0.524599 1.5759] + + + [-81.0317 -71.6168 -83.757] + + + [2.01726 1 1 1.6274] + + + + + D65_100 + + + [ 100] + + + [1.74788 -0.562271 -0.124172 -0.189096 1.66277 -0.416313 0.0171408 -0.552856 1.5549] + + + [-84.4486 -70.1682 -78.446] + + + [2.41759 1 1 1.4225] + + + + + D75_100 + + + [ 100] + + + [1.84441 -0.649995 -0.151423 -0.17172 1.61099 -0.39653 0.0218805 -0.506897 1.5048] + + + [-87.0209 -74.4697 -80.8341] + + + [2.46127 1 1 1.3353] + + + + + F11_100 + + + [ 100] + + + [1.52028 -0.278563 -0.200712 -0.305258 1.64403 -0.267838 -0.00796981 -0.719295 1.7485] + + + [-73.4915 -72.5498 -86.9231] + + + [1.79738 1 1 2.0643] + + + + + F12_100 + + + [ 100] + + + [1.43944 0.0309125 -0.463539 -0.338943 1.6164 -0.231193 -0.0812989 -1.41021 2.5269] + + + [-27.8837 -30.4929 -71.3504] + + + [1.00205 1 1 3.0084] + + + + + F2_100 + + + [ 100] + + + [2.06572 -0.770765 -0.278229 -0.301217 1.49376 -0.146116 -0.0191357 -0.55147 1.6208] + + + [-68.4901 -66.8725 -80.6516] + + + [2.02785 1 1 2.1442] + + + + + + [ -1] + + + + + [ 80] + + + [ 20] + + + [ 0.7] + + + [ 0.7] + + + [ 0.7] + + + [ 0.9] + + + + + 1640x1232_FPS_15 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 1640x1232_FPS_10 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 1640x1232_FPS_05 + + + + + fast + + + [ 1] + + + [ 1] + + + + + normal + + + [ 2] + + + [ 0.9] + + + + + slow + + + [ 4] + + + [ 0.9] + + + + + + + [ 8] + + + + + + 1640x1232 + + + 1640x1232 + + + [64 64 64 64] + + + + + + + linear + + + [256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4096] + + + [0 256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4095] + + + + + + [ -1] + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + + + 1640x1232 + + + 1640x1232 + + + [ 6] + + + [ 29] + + + [ 6] + + + [ 29] + + + [ 0] + + + [ 0] + + + [-0.625 1.5625 -1.625] + + + [-0.3125 -0.125 0.375] + + + + + + + 1640x1232 + + + 1640x1232 + + + [ 1] + + + [243 177 146 127 114 96 85 77 71 62 56 51 45 40 37 34 32] + + + [ 4] + + + [ 4] + + + [ 0.15] + + + [ 0] + + + [1 1 1 1] + + + + + + + 1640x1232 + + + 1640x1232 + + + + + ISP_DPCC_MODE + + + 0x0005 + + + + + ISP_DPCC_OUT_MODE + + + 0x0003 + + + + + ISP_DPCC_SET_USE + + + 0x0007 + + + + + ISP_DPCC_METHODS_SET1 + + + 0x1D1D + + + + + ISP_DPCC_METHODS_SET2 + + + 0x0707 + + + + + ISP_DPCC_METHODS_SET3 + + + 0x1F1F + + + + + ISP_DPCC_LINE_THRESH_1 + + + 0x0808 + + + + + ISP_DPCC_LINE_MAD_FAC_1 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_1 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_1 + + + 0x0A0A + + + + + ISP_DPCC_RG_FAC_1 + + + 0x2020 + + + + + ISP_DPCC_LINE_THRESH_2 + + + 0x100C + + + + + ISP_DPCC_LINE_MAD_FAC_2 + + + 0x1810 + + + + + ISP_DPCC_PG_FAC_2 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_2 + + + 0x0808 + + + + + ISP_DPCC_RG_FAC_2 + + + 0x0808 + + + + + ISP_DPCC_LINE_THRESH_3 + + + 0x2020 + + + + + ISP_DPCC_LINE_MAD_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_3 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_3 + + + 0x0806 + + + + + ISP_DPCC_RG_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_RO_LIMITS + + + 0x0A0A + + + + + ISP_DPCC_RND_OFFS + + + 0x0FFF + + + + + + + + + + on + + + +
diff --git a/drivers/IMX219/IMX219_1920x1080.xml b/drivers/IMX219/IMX219_1920x1080.xml new file mode 100644 index 0000000..33d073d --- /dev/null +++ b/drivers/IMX219/IMX219_1920x1080.xml @@ -0,0 +1,1539 @@ + + +
+ + 24-Aug-2022 + + + hong + + + imx219 + + + 2MLens_0824 + + + v2.1.1 + + + + + 1920x1080 + + + 0x00000001 + + + [ 1920] + + + [ 1080] + + + + + FPS_15 + + + [ 14.9916] + + + + + FPS_10 + + + [ 9.9944] + + + + + FPS_05 + + + [ 4.9972] + + + + + +
+ + + + + + 1920x1080 + + + 1920x1080 + + + [0.312492 0.450819 0.23669] + + + [-0.7399 0.0709331 0.668967 0.345275 -0.81341 0.46813] + + + [-0.74481 -0.667276 -2.7153] + + + [0.930564 1.0265 1.12244 1.21838 1.31432 1.41026 1.5062 1.6195 1.65613 1.74979 1.87815 1.95299 2.08183 2.17777 2.27371 2.4696] + + + [0.0594494 0.0548923 0.0512294 0.0472492 0.0446306 0.0425199 0.0410322 0.177014 0.310302 0.340953 0.168608 0.113754 0.0466876 0.0503825 0.0544594 0.063584] + + + [0.930564 1.02079 1.10262 1.1934 1.33019 1.41902 1.48294 1.60213 1.71432 1.79667 1.89229 2.01745 2.11657 2.20776 2.29061 2.4696] + + + [0.0405506 0.0683495 0.0934971 0.130669 0.144892 0.140332 0.141432 0.158091 0.204458 0.210744 0.221824 0.246499 0.242726 0.189205 0.17663 0.036416] + + + [0.8 0.90731 1.01462 1.12193 1.22924 1.33655 1.53212 1.57122 1.61331 1.68792 1.78386 1.97841 2.04665 2.24005 2.39897 2.5096] + + + [0.11674 0.110633 0.105483 0.101224 0.096918 0.0940591 0.111862 0.222281 0.328691 0.417498 0.379934 0.138274 0.144405 0.12586 0.16665 0.11686] + + + [0.8 0.90731 1.05178 1.14174 1.24796 1.33411 1.43406 1.53184 1.68057 1.74397 1.85555 1.9593 2.07767 2.23092 2.39086 2.5096] + + + [0.0832596 0.0893669 0.142538 0.172086 0.210436 0.228354 0.232203 0.239668 0.269923 0.289884 0.283281 0.298762 0.307798 0.285477 0.206964 0.083142] + + + [ 0.93056] + + + [ 2.4696] + + + [ 2.5096] + + + [ 1.794] + + + D50 + + + [ 4.5676] + + + [0.75 1.28836 1.77672 2.164 2.6 3.0618] + + + [114 114 105 95 95 90] + + + [83 83 110 120 122 128] + + + [28 27 18 16 9 9] + + + [123 123 123 123 123 120] + + + [123 123 123 123 123 126] + + + [5 5 5 5 5 5] + + + [ 1] + + + [ 0.8] + + + [ 0.05] + + + + [ 0.05] + + + [ 0.05] + + + [ 0.4] + + + [ 0.5] + + + [ 0.9] + + + [ 0.5] + + + [ 50] + + + [ 1] + + + [ 0.5] + + + + + + + + A + + + Indoor + + + + [1207.95 1609.35 1609.35 4143.2801] + + + [ 247.3246] + + + [1 1] + + + [-0.0687979 -0.012008] + + + + + + 1920x1080 + + + 1920x1080_A_90 + + + + + [1.2679 1 1 2.4534] + + + [1.62147 -0.0445277 -0.546563 -0.261854 1.52127 -0.211003 0.0194952 -1.45836 2.4966] + + + [-124.39 -122.251 -145.4412] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + A_100 + + + + + + D50 + + + Indoor + + + + [330.699 34.5927 34.5927 1629.0054] + + + [ 116.6849] + + + [1 1] + + + [0.050113 -0.068793] + + + + + + 1920x1080 + + + 1920x1080_D50_90 + + + + + [2.01726 1 1 1.6274] + + + [1.5183 -0.341669 -0.150056 -0.23618 1.63938 -0.35403 -0.0308324 -0.524599 1.5759] + + + [-81.0317 -71.6168 -83.757] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D50_100 + + + + + + D65 + + + Indoor + + + + [333.92 -176.3 -176.3 1334.0628] + + + [ 102.4529] + + + [1 1] + + + [0.0955004 -0.020029] + + + + + + 1920x1080 + + + 1920x1080_D65_90 + + + + + [2.41759 1 1 1.4225] + + + [1.74788 -0.562271 -0.124172 -0.189096 1.66277 -0.416313 0.0171408 -0.552856 1.5549] + + + [-84.4486 -70.1682 -78.446] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D65_100 + + + + + + D75 + + + Outdoor + + + + [358.543 -250.477 -250.477 1258.5652] + + + [ 99.2022] + + + [1 1] + + + [0.152003 -0.013334] + + + + + + 1920x1080 + + + 1920x1080_D75_90 + + + + + [2.46127 1 1 1.3353] + + + [1.84441 -0.649995 -0.151423 -0.17172 1.61099 -0.39653 0.0218805 -0.506897 1.5048] + + + [-87.0209 -74.4697 -80.8341] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D75_100 + + + + + + F2 (CWF) + + + Indoor + + + + [518.32 -301.304 -301.304 1170.4769] + + + [ 114.3146] + + + [1 1] + + + [0.166784 -0.0016528] + + + + + + 1920x1080 + + + 1920x1080_F2_90 + + + + + [2.02785 1 1 2.1442] + + + [2.06572 -0.770765 -0.278229 -0.301217 1.49376 -0.146116 -0.0191357 -0.55147 1.6208] + + + [-68.4901 -66.8725 -80.6516] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F2_100 + + + + + + F11 (TL84) + + + Indoor + + + + [392.346 -49.1799 -49.1799 1178.8269] + + + [ 107.9546] + + + [1 1] + + + [-0.150097 0.01359] + + + + + + 1920x1080 + + + 1920x1080_F11_90 + + + + + [1.79738 1 1 2.0643] + + + [1.52028 -0.278563 -0.200712 -0.305258 1.64403 -0.267838 -0.00796981 -0.719295 1.7485] + + + [-73.4915 -72.5498 -86.9231] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F11_100 + + + + + + F12 + + + Indoor + + + + [548.609 299.864 299.864 1633.0404] + + + [ 142.8837] + + + [1 1] + + + [0.0327322 -0.045325] + + + + + + 1920x1080 + + + 1920x1080_F12_90 + + + + + [1.00205 1 1 3.0084] + + + [1.43944 0.0309125 -0.463539 -0.338943 1.6164 -0.231193 -0.0812989 -1.41021 2.5269] + + + [-27.8837 -30.4929 -71.3504] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F12_100 + + + + + + + + + 1920x1080_A_90 + + + 1920x1080 + + + A + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [96 104 110 119 129 128 137 137] + + + [65 66 66 67 67 69 71 69] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 1920x1080_D50_90 + + + 1920x1080 + + + D50 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 1920x1080_D65_90 + + + 1920x1080 + + + D65 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 1920x1080_D75_90 + + + 1920x1080 + + + D75 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 1920x1080_F11_90 + + + 1920x1080 + + + F11 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 1920x1080_F12_90 + + + 1920x1080 + + + F12 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 1920x1080_F2_90 + + + 1920x1080 + + + F2 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + + + A_100 + + + [ 100] + + + [1.62147 -0.0445277 -0.546563 -0.261854 1.52127 -0.211003 0.0194952 -1.45836 2.4966] + + + [-124.39 -122.251 -145.4412] + + + [1.2679 1 1 2.4534] + + + + + D50_100 + + + [ 100] + + + [1.5183 -0.341669 -0.150056 -0.23618 1.63938 -0.35403 -0.0308324 -0.524599 1.5759] + + + [-81.0317 -71.6168 -83.757] + + + [2.01726 1 1 1.6274] + + + + + D65_100 + + + [ 100] + + + [1.74788 -0.562271 -0.124172 -0.189096 1.66277 -0.416313 0.0171408 -0.552856 1.5549] + + + [-84.4486 -70.1682 -78.446] + + + [2.41759 1 1 1.4225] + + + + + D75_100 + + + [ 100] + + + [1.84441 -0.649995 -0.151423 -0.17172 1.61099 -0.39653 0.0218805 -0.506897 1.5048] + + + [-87.0209 -74.4697 -80.8341] + + + [2.46127 1 1 1.3353] + + + + + F11_100 + + + [ 100] + + + [1.52028 -0.278563 -0.200712 -0.305258 1.64403 -0.267838 -0.00796981 -0.719295 1.7485] + + + [-73.4915 -72.5498 -86.9231] + + + [1.79738 1 1 2.0643] + + + + + F12_100 + + + [ 100] + + + [1.43944 0.0309125 -0.463539 -0.338943 1.6164 -0.231193 -0.0812989 -1.41021 2.5269] + + + [-27.8837 -30.4929 -71.3504] + + + [1.00205 1 1 3.0084] + + + + + F2_100 + + + [ 100] + + + [2.06572 -0.770765 -0.278229 -0.301217 1.49376 -0.146116 -0.0191357 -0.55147 1.6208] + + + [-68.4901 -66.8725 -80.6516] + + + [2.02785 1 1 2.1442] + + + + + + [ -1] + + + + + [ 80] + + + [ 20] + + + [ 0.7] + + + [ 0.7] + + + [ 0.7] + + + [ 0.9] + + + + + 1920x1080_FPS_15 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 1920x1080_FPS_10 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 1920x1080_FPS_05 + + + + + fast + + + [ 1] + + + [ 1] + + + + + normal + + + [ 2] + + + [ 0.9] + + + + + slow + + + [ 4] + + + [ 0.9] + + + + + + + [ 8] + + + + + + 1920x1080 + + + 1920x1080 + + + [64 64 64 64] + + + + + + + linear + + + [256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4096] + + + [0 256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4095] + + + + + + [ -1] + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + + + 1920x1080 + + + 1920x1080 + + + [ 6] + + + [ 29] + + + [ 6] + + + [ 29] + + + [ 0] + + + [ 0] + + + [-0.625 1.5625 -1.625] + + + [-0.3125 -0.125 0.375] + + + + + + + 1920x1080 + + + 1920x1080 + + + [ 1] + + + [243 177 146 127 114 96 85 77 71 62 56 51 45 40 37 34 32] + + + [ 4] + + + [ 4] + + + [ 0.15] + + + [ 0] + + + [1 1 1 1] + + + + + + + 1920x1080 + + + 1920x1080 + + + + + ISP_DPCC_MODE + + + 0x0005 + + + + + ISP_DPCC_OUT_MODE + + + 0x0003 + + + + + ISP_DPCC_SET_USE + + + 0x0007 + + + + + ISP_DPCC_METHODS_SET1 + + + 0x1D1D + + + + + ISP_DPCC_METHODS_SET2 + + + 0x0707 + + + + + ISP_DPCC_METHODS_SET3 + + + 0x1F1F + + + + + ISP_DPCC_LINE_THRESH_1 + + + 0x0808 + + + + + ISP_DPCC_LINE_MAD_FAC_1 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_1 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_1 + + + 0x0A0A + + + + + ISP_DPCC_RG_FAC_1 + + + 0x2020 + + + + + ISP_DPCC_LINE_THRESH_2 + + + 0x100C + + + + + ISP_DPCC_LINE_MAD_FAC_2 + + + 0x1810 + + + + + ISP_DPCC_PG_FAC_2 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_2 + + + 0x0808 + + + + + ISP_DPCC_RG_FAC_2 + + + 0x0808 + + + + + ISP_DPCC_LINE_THRESH_3 + + + 0x2020 + + + + + ISP_DPCC_LINE_MAD_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_3 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_3 + + + 0x0806 + + + + + ISP_DPCC_RG_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_RO_LIMITS + + + 0x0A0A + + + + + ISP_DPCC_RND_OFFS + + + 0x0FFF + + + + + + + + + + on + + + +
diff --git a/drivers/IMX219/IMX219_3280x2464.xml b/drivers/IMX219/IMX219_3280x2464.xml new file mode 100644 index 0000000..42baadc --- /dev/null +++ b/drivers/IMX219/IMX219_3280x2464.xml @@ -0,0 +1,1539 @@ + + +
+ + 24-Aug-2022 + + + hong + + + imx219 + + + 2MLens_0824 + + + v2.1.1 + + + + + 3280x2464 + + + 0x00000001 + + + [ 3280] + + + [ 2464] + + + + + FPS_15 + + + [ 14.9916] + + + + + FPS_10 + + + [ 9.9944] + + + + + FPS_05 + + + [ 4.9972] + + + + + +
+ + + + + + 3280x2464 + + + 3280x2464 + + + [0.312492 0.450819 0.23669] + + + [-0.7399 0.0709331 0.668967 0.345275 -0.81341 0.46813] + + + [-0.74481 -0.667276 -2.7153] + + + [0.930564 1.0265 1.12244 1.21838 1.31432 1.41026 1.5062 1.6195 1.65613 1.74979 1.87815 1.95299 2.08183 2.17777 2.27371 2.4696] + + + [0.0594494 0.0548923 0.0512294 0.0472492 0.0446306 0.0425199 0.0410322 0.177014 0.310302 0.340953 0.168608 0.113754 0.0466876 0.0503825 0.0544594 0.063584] + + + [0.930564 1.02079 1.10262 1.1934 1.33019 1.41902 1.48294 1.60213 1.71432 1.79667 1.89229 2.01745 2.11657 2.20776 2.29061 2.4696] + + + [0.0405506 0.0683495 0.0934971 0.130669 0.144892 0.140332 0.141432 0.158091 0.204458 0.210744 0.221824 0.246499 0.242726 0.189205 0.17663 0.036416] + + + [0.8 0.90731 1.01462 1.12193 1.22924 1.33655 1.53212 1.57122 1.61331 1.68792 1.78386 1.97841 2.04665 2.24005 2.39897 2.5096] + + + [0.11674 0.110633 0.105483 0.101224 0.096918 0.0940591 0.111862 0.222281 0.328691 0.417498 0.379934 0.138274 0.144405 0.12586 0.16665 0.11686] + + + [0.8 0.90731 1.05178 1.14174 1.24796 1.33411 1.43406 1.53184 1.68057 1.74397 1.85555 1.9593 2.07767 2.23092 2.39086 2.5096] + + + [0.0832596 0.0893669 0.142538 0.172086 0.210436 0.228354 0.232203 0.239668 0.269923 0.289884 0.283281 0.298762 0.307798 0.285477 0.206964 0.083142] + + + [ 0.93056] + + + [ 2.4696] + + + [ 2.5096] + + + [ 1.794] + + + D50 + + + [ 4.5676] + + + [0.75 1.28836 1.77672 2.164 2.6 3.0618] + + + [114 114 105 95 95 90] + + + [83 83 110 120 122 128] + + + [28 27 18 16 9 9] + + + [123 123 123 123 123 120] + + + [123 123 123 123 123 126] + + + [5 5 5 5 5 5] + + + [ 1] + + + [ 0.8] + + + [ 0.05] + + + + [ 0.05] + + + [ 0.05] + + + [ 0.4] + + + [ 0.5] + + + [ 0.9] + + + [ 0.5] + + + [ 50] + + + [ 1] + + + [ 0.5] + + + + + + + + A + + + Indoor + + + + [1207.95 1609.35 1609.35 4143.2801] + + + [ 247.3246] + + + [1 1] + + + [-0.0687979 -0.012008] + + + + + + 3280x2464 + + + 3280x2464_A_90 + + + + + [1.2679 1 1 2.4534] + + + [1.62147 -0.0445277 -0.546563 -0.261854 1.52127 -0.211003 0.0194952 -1.45836 2.4966] + + + [-124.39 -122.251 -145.4412] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + A_100 + + + + + + D50 + + + Indoor + + + + [330.699 34.5927 34.5927 1629.0054] + + + [ 116.6849] + + + [1 1] + + + [0.050113 -0.068793] + + + + + + 3280x2464 + + + 3280x2464_D50_90 + + + + + [2.01726 1 1 1.6274] + + + [1.5183 -0.341669 -0.150056 -0.23618 1.63938 -0.35403 -0.0308324 -0.524599 1.5759] + + + [-81.0317 -71.6168 -83.757] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D50_100 + + + + + + D65 + + + Indoor + + + + [333.92 -176.3 -176.3 1334.0628] + + + [ 102.4529] + + + [1 1] + + + [0.0955004 -0.020029] + + + + + + 3280x2464 + + + 3280x2464_D65_90 + + + + + [2.41759 1 1 1.4225] + + + [1.74788 -0.562271 -0.124172 -0.189096 1.66277 -0.416313 0.0171408 -0.552856 1.5549] + + + [-84.4486 -70.1682 -78.446] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D65_100 + + + + + + D75 + + + Outdoor + + + + [358.543 -250.477 -250.477 1258.5652] + + + [ 99.2022] + + + [1 1] + + + [0.152003 -0.013334] + + + + + + 3280x2464 + + + 3280x2464_D75_90 + + + + + [2.46127 1 1 1.3353] + + + [1.84441 -0.649995 -0.151423 -0.17172 1.61099 -0.39653 0.0218805 -0.506897 1.5048] + + + [-87.0209 -74.4697 -80.8341] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D75_100 + + + + + + F2 (CWF) + + + Indoor + + + + [518.32 -301.304 -301.304 1170.4769] + + + [ 114.3146] + + + [1 1] + + + [0.166784 -0.0016528] + + + + + + 3280x2464 + + + 3280x2464_F2_90 + + + + + [2.02785 1 1 2.1442] + + + [2.06572 -0.770765 -0.278229 -0.301217 1.49376 -0.146116 -0.0191357 -0.55147 1.6208] + + + [-68.4901 -66.8725 -80.6516] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F2_100 + + + + + + F11 (TL84) + + + Indoor + + + + [392.346 -49.1799 -49.1799 1178.8269] + + + [ 107.9546] + + + [1 1] + + + [-0.150097 0.01359] + + + + + + 3280x2464 + + + 3280x2464_F11_90 + + + + + [1.79738 1 1 2.0643] + + + [1.52028 -0.278563 -0.200712 -0.305258 1.64403 -0.267838 -0.00796981 -0.719295 1.7485] + + + [-73.4915 -72.5498 -86.9231] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F11_100 + + + + + + F12 + + + Indoor + + + + [548.609 299.864 299.864 1633.0404] + + + [ 142.8837] + + + [1 1] + + + [0.0327322 -0.045325] + + + + + + 3280x2464 + + + 3280x2464_F12_90 + + + + + [1.00205 1 1 3.0084] + + + [1.43944 0.0309125 -0.463539 -0.338943 1.6164 -0.231193 -0.0812989 -1.41021 2.5269] + + + [-27.8837 -30.4929 -71.3504] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F12_100 + + + + + + + + + 3280x2464_A_90 + + + 3280x2464 + + + A + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 3280x2464_D50_90 + + + 3280x2464 + + + D50 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 3280x2464_D65_90 + + + 3280x2464 + + + D65 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 3280x2464_D75_90 + + + 3280x2464 + + + D75 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 3280x2464_F11_90 + + + 3280x2464 + + + F11 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 3280x2464_F12_90 + + + 3280x2464 + + + F12 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 3280x2464_F2_90 + + + 3280x2464 + + + F2 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + + + A_100 + + + [ 100] + + + [1.62147 -0.0445277 -0.546563 -0.261854 1.52127 -0.211003 0.0194952 -1.45836 2.4966] + + + [-124.39 -122.251 -145.4412] + + + [1.2679 1 1 2.4534] + + + + + D50_100 + + + [ 100] + + + [1.5183 -0.341669 -0.150056 -0.23618 1.63938 -0.35403 -0.0308324 -0.524599 1.5759] + + + [-81.0317 -71.6168 -83.757] + + + [2.01726 1 1 1.6274] + + + + + D65_100 + + + [ 100] + + + [1.74788 -0.562271 -0.124172 -0.189096 1.66277 -0.416313 0.0171408 -0.552856 1.5549] + + + [-84.4486 -70.1682 -78.446] + + + [2.41759 1 1 1.4225] + + + + + D75_100 + + + [ 100] + + + [1.84441 -0.649995 -0.151423 -0.17172 1.61099 -0.39653 0.0218805 -0.506897 1.5048] + + + [-87.0209 -74.4697 -80.8341] + + + [2.46127 1 1 1.3353] + + + + + F11_100 + + + [ 100] + + + [1.52028 -0.278563 -0.200712 -0.305258 1.64403 -0.267838 -0.00796981 -0.719295 1.7485] + + + [-73.4915 -72.5498 -86.9231] + + + [1.79738 1 1 2.0643] + + + + + F12_100 + + + [ 100] + + + [1.43944 0.0309125 -0.463539 -0.338943 1.6164 -0.231193 -0.0812989 -1.41021 2.5269] + + + [-27.8837 -30.4929 -71.3504] + + + [1.00205 1 1 3.0084] + + + + + F2_100 + + + [ 100] + + + [2.06572 -0.770765 -0.278229 -0.301217 1.49376 -0.146116 -0.0191357 -0.55147 1.6208] + + + [-68.4901 -66.8725 -80.6516] + + + [2.02785 1 1 2.1442] + + + + + + [ -1] + + + + + [ 80] + + + [ 20] + + + [ 0.7] + + + [ 0.7] + + + [ 0.7] + + + [ 0.9] + + + + + 3280x2464_FPS_15 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 3280x2464_FPS_10 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 3280x2464_FPS_05 + + + + + fast + + + [ 1] + + + [ 1] + + + + + normal + + + [ 2] + + + [ 0.9] + + + + + slow + + + [ 4] + + + [ 0.9] + + + + + + + [ 8] + + + + + + 3280x2464 + + + 3280x2464 + + + [64 64 64 64] + + + + + + + linear + + + [256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4096] + + + [0 256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4095] + + + + + + [ -1] + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + + + 3280x2464 + + + 3280x2464 + + + [ 6] + + + [ 29] + + + [ 6] + + + [ 29] + + + [ 0] + + + [ 0] + + + [-0.625 1.5625 -1.625] + + + [-0.3125 -0.125 0.375] + + + + + + + 3280x2464 + + + 3280x2464 + + + [ 1] + + + [243 177 146 127 114 96 85 77 71 62 56 51 45 40 37 34 32] + + + [ 4] + + + [ 4] + + + [ 0.15] + + + [ 0] + + + [1 1 1 1] + + + + + + + 3280x2464 + + + 3280x2464 + + + + + ISP_DPCC_MODE + + + 0x0005 + + + + + ISP_DPCC_OUT_MODE + + + 0x0003 + + + + + ISP_DPCC_SET_USE + + + 0x0007 + + + + + ISP_DPCC_METHODS_SET1 + + + 0x1D1D + + + + + ISP_DPCC_METHODS_SET2 + + + 0x0707 + + + + + ISP_DPCC_METHODS_SET3 + + + 0x1F1F + + + + + ISP_DPCC_LINE_THRESH_1 + + + 0x0808 + + + + + ISP_DPCC_LINE_MAD_FAC_1 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_1 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_1 + + + 0x0A0A + + + + + ISP_DPCC_RG_FAC_1 + + + 0x2020 + + + + + ISP_DPCC_LINE_THRESH_2 + + + 0x100C + + + + + ISP_DPCC_LINE_MAD_FAC_2 + + + 0x1810 + + + + + ISP_DPCC_PG_FAC_2 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_2 + + + 0x0808 + + + + + ISP_DPCC_RG_FAC_2 + + + 0x0808 + + + + + ISP_DPCC_LINE_THRESH_3 + + + 0x2020 + + + + + ISP_DPCC_LINE_MAD_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_3 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_3 + + + 0x0806 + + + + + ISP_DPCC_RG_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_RO_LIMITS + + + 0x0A0A + + + + + ISP_DPCC_RND_OFFS + + + 0x0FFF + + + + + + + + + + on + + + +
diff --git a/drivers/IMX219/IMX219_640x480.xml b/drivers/IMX219/IMX219_640x480.xml new file mode 100644 index 0000000..323b662 --- /dev/null +++ b/drivers/IMX219/IMX219_640x480.xml @@ -0,0 +1,1539 @@ + + +
+ + 24-Aug-2022 + + + hong + + + imx219 + + + 2MLens_0824 + + + v2.1.1 + + + + + 640x480 + + + 0x00000001 + + + [ 640] + + + [ 480] + + + + + FPS_15 + + + [ 14.9916] + + + + + FPS_10 + + + [ 9.9944] + + + + + FPS_05 + + + [ 4.9972] + + + + + +
+ + + + + + 640x480 + + + 640x480 + + + [0.312492 0.450819 0.23669] + + + [-0.7399 0.0709331 0.668967 0.345275 -0.81341 0.46813] + + + [-0.74481 -0.667276 -2.7153] + + + [0.930564 1.0265 1.12244 1.21838 1.31432 1.41026 1.5062 1.6195 1.65613 1.74979 1.87815 1.95299 2.08183 2.17777 2.27371 2.4696] + + + [0.0594494 0.0548923 0.0512294 0.0472492 0.0446306 0.0425199 0.0410322 0.177014 0.310302 0.340953 0.168608 0.113754 0.0466876 0.0503825 0.0544594 0.063584] + + + [0.930564 1.02079 1.10262 1.1934 1.33019 1.41902 1.48294 1.60213 1.71432 1.79667 1.89229 2.01745 2.11657 2.20776 2.29061 2.4696] + + + [0.0405506 0.0683495 0.0934971 0.130669 0.144892 0.140332 0.141432 0.158091 0.204458 0.210744 0.221824 0.246499 0.242726 0.189205 0.17663 0.036416] + + + [0.8 0.90731 1.01462 1.12193 1.22924 1.33655 1.53212 1.57122 1.61331 1.68792 1.78386 1.97841 2.04665 2.24005 2.39897 2.5096] + + + [0.11674 0.110633 0.105483 0.101224 0.096918 0.0940591 0.111862 0.222281 0.328691 0.417498 0.379934 0.138274 0.144405 0.12586 0.16665 0.11686] + + + [0.8 0.90731 1.05178 1.14174 1.24796 1.33411 1.43406 1.53184 1.68057 1.74397 1.85555 1.9593 2.07767 2.23092 2.39086 2.5096] + + + [0.0832596 0.0893669 0.142538 0.172086 0.210436 0.228354 0.232203 0.239668 0.269923 0.289884 0.283281 0.298762 0.307798 0.285477 0.206964 0.083142] + + + [ 0.93056] + + + [ 2.4696] + + + [ 2.5096] + + + [ 1.794] + + + D50 + + + [ 4.5676] + + + [0.75 1.28836 1.77672 2.164 2.6 3.0618] + + + [114 114 105 95 95 90] + + + [83 83 110 120 122 128] + + + [28 27 18 16 9 9] + + + [123 123 123 123 123 120] + + + [123 123 123 123 123 126] + + + [5 5 5 5 5 5] + + + [ 1] + + + [ 0.8] + + + [ 0.05] + + + + [ 0.05] + + + [ 0.05] + + + [ 0.4] + + + [ 0.5] + + + [ 0.9] + + + [ 0.5] + + + [ 50] + + + [ 1] + + + [ 0.5] + + + + + + + + A + + + Indoor + + + + [1207.95 1609.35 1609.35 4143.2801] + + + [ 247.3246] + + + [1 1] + + + [-0.0687979 -0.012008] + + + + + + 640x480 + + + 640x480_A_90 + + + + + [1.2679 1 1 2.4534] + + + [1.62147 -0.0445277 -0.546563 -0.261854 1.52127 -0.211003 0.0194952 -1.45836 2.4966] + + + [-124.39 -122.251 -145.4412] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + A_100 + + + + + + D50 + + + Indoor + + + + [330.699 34.5927 34.5927 1629.0054] + + + [ 116.6849] + + + [1 1] + + + [0.050113 -0.068793] + + + + + + 640x480 + + + 640x480_D50_90 + + + + + [2.01726 1 1 1.6274] + + + [1.5183 -0.341669 -0.150056 -0.23618 1.63938 -0.35403 -0.0308324 -0.524599 1.5759] + + + [-81.0317 -71.6168 -83.757] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D50_100 + + + + + + D65 + + + Indoor + + + + [333.92 -176.3 -176.3 1334.0628] + + + [ 102.4529] + + + [1 1] + + + [0.0955004 -0.020029] + + + + + + 640x480 + + + 640x480_D65_90 + + + + + [2.41759 1 1 1.4225] + + + [1.74788 -0.562271 -0.124172 -0.189096 1.66277 -0.416313 0.0171408 -0.552856 1.5549] + + + [-84.4486 -70.1682 -78.446] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D65_100 + + + + + + D75 + + + Outdoor + + + + [358.543 -250.477 -250.477 1258.5652] + + + [ 99.2022] + + + [1 1] + + + [0.152003 -0.013334] + + + + + + 640x480 + + + 640x480_D75_90 + + + + + [2.46127 1 1 1.3353] + + + [1.84441 -0.649995 -0.151423 -0.17172 1.61099 -0.39653 0.0218805 -0.506897 1.5048] + + + [-87.0209 -74.4697 -80.8341] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D75_100 + + + + + + F2 (CWF) + + + Indoor + + + + [518.32 -301.304 -301.304 1170.4769] + + + [ 114.3146] + + + [1 1] + + + [0.166784 -0.0016528] + + + + + + 640x480 + + + 640x480_F2_90 + + + + + [2.02785 1 1 2.1442] + + + [2.06572 -0.770765 -0.278229 -0.301217 1.49376 -0.146116 -0.0191357 -0.55147 1.6208] + + + [-68.4901 -66.8725 -80.6516] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F2_100 + + + + + + F11 (TL84) + + + Indoor + + + + [392.346 -49.1799 -49.1799 1178.8269] + + + [ 107.9546] + + + [1 1] + + + [-0.150097 0.01359] + + + + + + 640x480 + + + 640x480_F11_90 + + + + + [1.79738 1 1 2.0643] + + + [1.52028 -0.278563 -0.200712 -0.305258 1.64403 -0.267838 -0.00796981 -0.719295 1.7485] + + + [-73.4915 -72.5498 -86.9231] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F11_100 + + + + + + F12 + + + Indoor + + + + [548.609 299.864 299.864 1633.0404] + + + [ 142.8837] + + + [1 1] + + + [0.0327322 -0.045325] + + + + + + 640x480 + + + 640x480_F12_90 + + + + + [1.00205 1 1 3.0084] + + + [1.43944 0.0309125 -0.463539 -0.338943 1.6164 -0.231193 -0.0812989 -1.41021 2.5269] + + + [-27.8837 -30.4929 -71.3504] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F12_100 + + + + + + + + + 640x480_A_90 + + + 640x480 + + + A + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 640x480_D50_90 + + + 640x480 + + + D50 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 640x480_D65_90 + + + 640x480 + + + D65 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 640x480_D75_90 + + + 640x480 + + + D75 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 640x480_F11_90 + + + 640x480 + + + F11 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 640x480_F12_90 + + + 640x480 + + + F12 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + 640x480_F2_90 + + + 640x480 + + + F2 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [128 96 96 96 96 96 96 96] + + + [96 72 72 72 72 72 72 72] + + + [ 90] + + + [2254 1988 1835 1741 1647 1581 1530 1492 1487 1499 1533 1577 1635 1712 1826 2010 2338 2110 1847 1732 1612 1525 1463 1408 1382 1372 1386 1416 1462 1524 1605 1705 1864 2167 1994 1772 1639 1526 1437 1373 1327 1294 1282 1300 1333 1376 1438 1526 1638 1773 2063 1912 1709 1574 1458 1368 1304 1249 1220 1212 1226 1257 1305 1366 1464 1581 1706 1960 1857 1657 1523 1402 1308 1236 1184 1158 1150 1164 1191 1246 1315 1408 1529 1663 1896 1814 1611 1473 1360 1256 1190 1134 1108 1102 1112 1143 1196 1271 1368 1491 1630 1845 1779 1574 1442 1324 1221 1151 1096 1074 1059 1077 1103 1158 1237 1336 1467 1605 1812 1756 1558 1422 1300 1200 1128 1079 1050 1039 1051 1085 1140 1222 1323 1453 1589 1791 1740 1544 1413 1294 1192 1119 1068 1035 1024 1044 1074 1135 1210 1323 1449 1588 1789 1742 1553 1420 1302 1200 1124 1066 1035 1031 1051 1086 1146 1224 1334 1454 1590 1798 1762 1558 1442 1325 1211 1139 1086 1050 1050 1074 1102 1165 1250 1356 1480 1602 1820 1779 1588 1469 1350 1249 1179 1118 1092 1084 1104 1143 1207 1286 1388 1508 1631 1854 1820 1619 1501 1395 1304 1231 1177 1139 1136 1158 1195 1263 1334 1434 1544 1669 1925 1889 1671 1556 1449 1368 1304 1243 1215 1204 1226 1271 1325 1402 1488 1601 1723 1999 1974 1735 1613 1519 1435 1378 1335 1299 1294 1311 1349 1410 1466 1558 1659 1811 2104 2069 1823 1688 1595 1523 1466 1418 1396 1389 1404 1440 1493 1557 1632 1745 1905 2235 2267 1973 1816 1704 1640 1587 1554 1533 1522 1543 1571 1620 1681 1757 1911 2078 2581] + + + [2267 1988 1839 1736 1652 1575 1533 1494 1489 1496 1528 1576 1634 1713 1821 2010 2345 2092 1852 1724 1616 1521 1461 1411 1379 1369 1386 1412 1458 1521 1600 1701 1865 2163 1992 1767 1643 1525 1436 1374 1327 1295 1283 1299 1329 1377 1433 1528 1637 1768 2060 1924 1713 1575 1458 1366 1303 1249 1218 1208 1225 1253 1301 1364 1460 1581 1703 1966 1857 1655 1519 1402 1306 1236 1187 1158 1148 1166 1191 1245 1314 1408 1532 1655 1899 1806 1615 1477 1354 1259 1189 1132 1106 1102 1110 1139 1196 1271 1364 1491 1628 1841 1782 1579 1443 1321 1225 1151 1098 1072 1060 1075 1102 1157 1235 1338 1466 1603 1817 1739 1562 1419 1303 1201 1128 1077 1051 1035 1052 1082 1138 1218 1325 1449 1589 1795 1747 1547 1412 1291 1193 1121 1067 1034 1024 1041 1078 1133 1209 1318 1449 1582 1783 1736 1557 1423 1301 1203 1122 1065 1036 1029 1053 1084 1141 1223 1334 1459 1587 1795 1754 1564 1440 1320 1217 1141 1083 1053 1047 1066 1105 1163 1249 1355 1474 1606 1816 1777 1589 1470 1350 1250 1176 1121 1090 1083 1106 1141 1204 1282 1384 1510 1627 1860 1826 1621 1502 1393 1302 1230 1174 1141 1133 1156 1198 1257 1338 1430 1547 1671 1920 1889 1668 1552 1452 1367 1300 1246 1212 1207 1225 1265 1325 1394 1488 1597 1724 2004 1978 1730 1616 1517 1440 1377 1329 1300 1292 1310 1347 1405 1472 1551 1655 1802 2096 2074 1821 1689 1593 1521 1464 1418 1400 1386 1403 1438 1492 1553 1631 1748 1903 2233 2271 1967 1814 1706 1637 1592 1553 1523 1525 1540 1572 1611 1681 1755 1909 2069 2582] + + + [2095 1850 1718 1623 1548 1490 1442 1418 1408 1432 1459 1510 1570 1647 1757 1938 2259 1972 1739 1622 1519 1440 1387 1348 1323 1312 1325 1357 1405 1467 1547 1648 1802 2099 1897 1674 1561 1446 1375 1316 1275 1247 1238 1250 1281 1329 1387 1474 1585 1722 1994 1834 1626 1505 1393 1313 1255 1210 1179 1170 1182 1215 1264 1328 1417 1534 1652 1916 1788 1596 1466 1352 1266 1200 1153 1124 1118 1132 1156 1208 1278 1373 1490 1621 1843 1760 1570 1435 1323 1226 1159 1107 1083 1078 1092 1118 1170 1242 1336 1461 1589 1808 1758 1558 1418 1304 1204 1129 1080 1052 1054 1065 1087 1140 1216 1314 1441 1576 1774 1751 1553 1422 1297 1193 1118 1065 1037 1032 1050 1077 1126 1205 1307 1431 1566 1767 1767 1559 1426 1303 1193 1120 1064 1032 1024 1042 1077 1131 1204 1311 1431 1568 1767 1774 1588 1449 1317 1212 1126 1068 1036 1026 1045 1084 1140 1219 1325 1450 1573 1781 1805 1619 1481 1354 1237 1154 1091 1055 1047 1065 1107 1167 1246 1353 1471 1594 1808 1850 1648 1522 1394 1282 1197 1133 1098 1084 1108 1148 1211 1288 1387 1506 1630 1848 1900 1698 1572 1450 1347 1260 1196 1156 1152 1166 1208 1271 1346 1438 1549 1672 1918 1977 1751 1632 1520 1418 1342 1275 1236 1228 1246 1288 1343 1414 1503 1606 1731 1998 2075 1818 1703 1594 1502 1430 1368 1330 1318 1335 1369 1422 1488 1572 1670 1815 2101 2168 1920 1775 1677 1590 1522 1462 1429 1419 1434 1466 1512 1574 1641 1762 1915 2242 2393 2076 1920 1792 1720 1656 1615 1572 1564 1573 1602 1644 1700 1785 1925 2088 2598] + + + [2122 1855 1726 1633 1549 1498 1448 1427 1417 1433 1469 1516 1576 1654 1756 1942 2263 1982 1746 1633 1527 1452 1392 1355 1329 1319 1332 1356 1411 1472 1550 1657 1806 2109 1903 1691 1562 1459 1372 1326 1281 1251 1238 1259 1285 1333 1391 1479 1593 1722 2008 1839 1638 1511 1402 1319 1262 1213 1184 1173 1188 1219 1270 1330 1423 1538 1661 1917 1798 1605 1474 1359 1272 1204 1158 1128 1122 1130 1160 1213 1282 1378 1497 1620 1857 1781 1581 1441 1328 1232 1166 1115 1086 1083 1096 1121 1172 1246 1342 1463 1599 1807 1762 1570 1426 1312 1207 1135 1082 1057 1057 1069 1090 1143 1220 1319 1447 1577 1784 1763 1561 1427 1305 1196 1124 1069 1048 1039 1058 1078 1130 1207 1313 1436 1574 1770 1772 1574 1434 1311 1199 1124 1068 1039 1024 1048 1079 1136 1208 1313 1443 1571 1774 1789 1595 1454 1326 1215 1134 1072 1042 1031 1053 1086 1145 1222 1328 1452 1577 1786 1808 1624 1491 1360 1242 1155 1097 1060 1054 1068 1112 1172 1250 1356 1474 1598 1808 1854 1665 1534 1400 1292 1200 1139 1102 1088 1110 1150 1216 1291 1393 1509 1630 1864 1907 1708 1576 1459 1352 1270 1200 1158 1154 1172 1215 1277 1345 1446 1550 1675 1915 1987 1765 1636 1527 1431 1349 1284 1242 1233 1253 1289 1348 1420 1504 1611 1734 2011 2085 1823 1711 1595 1510 1431 1370 1337 1323 1340 1377 1427 1489 1576 1675 1820 2113 2184 1937 1782 1691 1596 1527 1476 1436 1429 1437 1470 1519 1576 1650 1770 1923 2244 2400 2094 1924 1800 1728 1661 1612 1582 1560 1583 1610 1655 1711 1787 1931 2094 2586] + + + + + + + A_100 + + + [ 100] + + + [1.62147 -0.0445277 -0.546563 -0.261854 1.52127 -0.211003 0.0194952 -1.45836 2.4966] + + + [-124.39 -122.251 -145.4412] + + + [1.2679 1 1 2.4534] + + + + + D50_100 + + + [ 100] + + + [1.5183 -0.341669 -0.150056 -0.23618 1.63938 -0.35403 -0.0308324 -0.524599 1.5759] + + + [-81.0317 -71.6168 -83.757] + + + [2.01726 1 1 1.6274] + + + + + D65_100 + + + [ 100] + + + [1.74788 -0.562271 -0.124172 -0.189096 1.66277 -0.416313 0.0171408 -0.552856 1.5549] + + + [-84.4486 -70.1682 -78.446] + + + [2.41759 1 1 1.4225] + + + + + D75_100 + + + [ 100] + + + [1.84441 -0.649995 -0.151423 -0.17172 1.61099 -0.39653 0.0218805 -0.506897 1.5048] + + + [-87.0209 -74.4697 -80.8341] + + + [2.46127 1 1 1.3353] + + + + + F11_100 + + + [ 100] + + + [1.52028 -0.278563 -0.200712 -0.305258 1.64403 -0.267838 -0.00796981 -0.719295 1.7485] + + + [-73.4915 -72.5498 -86.9231] + + + [1.79738 1 1 2.0643] + + + + + F12_100 + + + [ 100] + + + [1.43944 0.0309125 -0.463539 -0.338943 1.6164 -0.231193 -0.0812989 -1.41021 2.5269] + + + [-27.8837 -30.4929 -71.3504] + + + [1.00205 1 1 3.0084] + + + + + F2_100 + + + [ 100] + + + [2.06572 -0.770765 -0.278229 -0.301217 1.49376 -0.146116 -0.0191357 -0.55147 1.6208] + + + [-68.4901 -66.8725 -80.6516] + + + [2.02785 1 1 2.1442] + + + + + + [ -1] + + + + + [ 80] + + + [ 20] + + + [ 0.7] + + + [ 0.7] + + + [ 0.7] + + + [ 0.9] + + + + + 640x480_FPS_15 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 640x480_FPS_10 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 640x480_FPS_05 + + + + + fast + + + [ 1] + + + [ 1] + + + + + normal + + + [ 2] + + + [ 0.9] + + + + + slow + + + [ 4] + + + [ 0.9] + + + + + + + [ 8] + + + + + + 640x480 + + + 640x480 + + + [64 64 64 64] + + + + + + + linear + + + [256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4096] + + + [0 256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4095] + + + + + + [ -1] + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + + + 640x480 + + + 640x480 + + + [ 6] + + + [ 29] + + + [ 6] + + + [ 29] + + + [ 0] + + + [ 0] + + + [-0.625 1.5625 -1.625] + + + [-0.3125 -0.125 0.375] + + + + + + + 640x480 + + + 640x480 + + + [ 1] + + + [243 177 146 127 114 96 85 77 71 62 56 51 45 40 37 34 32] + + + [ 4] + + + [ 4] + + + [ 0.15] + + + [ 0] + + + [1 1 1 1] + + + + + + + 640x480 + + + 640x480 + + + + + ISP_DPCC_MODE + + + 0x0005 + + + + + ISP_DPCC_OUT_MODE + + + 0x0003 + + + + + ISP_DPCC_SET_USE + + + 0x0007 + + + + + ISP_DPCC_METHODS_SET1 + + + 0x1D1D + + + + + ISP_DPCC_METHODS_SET2 + + + 0x0707 + + + + + ISP_DPCC_METHODS_SET3 + + + 0x1F1F + + + + + ISP_DPCC_LINE_THRESH_1 + + + 0x0808 + + + + + ISP_DPCC_LINE_MAD_FAC_1 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_1 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_1 + + + 0x0A0A + + + + + ISP_DPCC_RG_FAC_1 + + + 0x2020 + + + + + ISP_DPCC_LINE_THRESH_2 + + + 0x100C + + + + + ISP_DPCC_LINE_MAD_FAC_2 + + + 0x1810 + + + + + ISP_DPCC_PG_FAC_2 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_2 + + + 0x0808 + + + + + ISP_DPCC_RG_FAC_2 + + + 0x0808 + + + + + ISP_DPCC_LINE_THRESH_3 + + + 0x2020 + + + + + ISP_DPCC_LINE_MAD_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_3 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_3 + + + 0x0806 + + + + + ISP_DPCC_RG_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_RO_LIMITS + + + 0x0A0A + + + + + ISP_DPCC_RND_OFFS + + + 0x0FFF + + + + + + + + + + on + + + +
diff --git a/drivers/IMX219/IMX219_mipi4lane_1920x1080@30.txt b/drivers/IMX219/IMX219_mipi4lane_1920x1080@30.txt new file mode 100644 index 0000000..e96f849 --- /dev/null +++ b/drivers/IMX219/IMX219_mipi4lane_1920x1080@30.txt @@ -0,0 +1,59 @@ +0x0100 0x00 +0x30eb 0x05 +0x30eb 0x0c +0x300a 0xff +0x300b 0xff +0x30eb 0x05 +0x30eb 0x09 +0x0114 0x01 +0x0128 0x00 +0x012a 0x18 +0x012b 0x00 +0x0162 0x0d +0x0163 0x78 +0x0164 0x02 +0x0165 0xa8 +0x0166 0x0a +0x0167 0x27 +0x0168 0x02 +0x0169 0xb4 +0x016a 0x06 +0x016b 0xeb +0x016c 0x07 +0x016d 0x80 +0x016e 0x04 +0x016f 0x38 +0x0170 0x01 +0x0171 0x01 +0x0174 0x00 +0x0175 0x00 +0x0301 0x05 +0x0303 0x01 +0x0304 0x03 +0x0305 0x03 +0x0306 0x00 +0x0307 0x39 +0x030b 0x01 +0x030c 0x00 +0x030d 0x72 +0x0624 0x07 +0x0625 0x80 +0x0626 0x04 +0x0627 0x38 +0x455e 0x00 +0x471e 0x4b +0x4767 0x0f +0x4750 0x14 +0x4540 0x00 +0x47b4 0x14 +0x4713 0x30 +0x478b 0x10 +0x478f 0x10 +0x4793 0x10 +0x4797 0x0e +0x479b 0x0e +0x0162 0x0d +0x0163 0x78 +0x018c 0x0a +0x018d 0x0a +0x0309 0x0a \ No newline at end of file diff --git a/drivers/IMX219/IMX219_priv.h b/drivers/IMX219/IMX219_priv.h new file mode 100644 index 0000000..9261471 --- /dev/null +++ b/drivers/IMX219/IMX219_priv.h @@ -0,0 +1,241 @@ +/******************************************************************************\ +|* Copyright (c) 2020 by VeriSilicon Holdings Co., Ltd. ("VeriSilicon") *| +|* All Rights Reserved. *| +|* *| +|* The material in this file is confidential and contains trade secrets of *| +|* of VeriSilicon. This is proprietary information owned or licensed by *| +|* VeriSilicon. No part of this work may be disclosed, reproduced, copied, *| +|* transmitted, or used in any way for any purpose, without the express *| +|* written permission of VeriSilicon. *| +|* *| +\******************************************************************************/ +/** + * @file IMX219_priv.h + * + * @brief Interface description for image sensor specific implementation (iss). + * + *****************************************************************************/ +/** + * @page module_name_page Module Name + * Describe here what this module does. + * + * For a detailed list of functions and implementation detail refer to: + * - @ref module_name + * + * @defgroup IMX219_priv + * @{ + * + */ +#ifndef __IMX219_PRIV_H__ +#define __IMX219_PRIV_H__ + +#include +#include +#include +#include +#include "vvsensor.h" + + + +#ifdef __cplusplus +extern "C" +{ +#endif + + + +/***************************************************************************** + * SC control registers + *****************************************************************************/ +#define IMX219_PIDH (0x300A) //R - Product ID High Byte MSBs +#define IMX219_PIDL (0x300B) //R - Product ID Low Byte LSBs + +/***************************************************************************** + * Default values + *****************************************************************************/ + + // Make sure that these static settings are reflecting the capabilities defined +// in IsiGetCapsIss (further dynamic setup may alter these default settings but +// often does not if there is no choice available). + +/***************************************************************************** + * SC control registers + *****************************************************************************/ +#define IMX219_PIDH_DEFAULT (0x27) //read only +#define IMX219_PIDL_DEFAULT (0x70) //read only + +typedef struct IMX219_Context_s +{ + IsiSensorContext_t IsiCtx; /**< common context of ISI and ISI driver layer; @note: MUST BE FIRST IN DRIVER CONTEXT */ + + struct vvcam_mode_info SensorMode; + uint32_t KernelDriverFlag; + char SensorRegCfgFile[128]; + + uint32_t HdrMode; + uint32_t Resolution; + uint32_t MaxFps; + uint32_t MinFps; + uint32_t CurrFps; + //// modify below here //// + + IsiSensorConfig_t Config; /**< sensor configuration */ + bool_t Configured; /**< flags that config was applied to sensor */ + bool_t Streaming; /**< flags that csensor is streaming data */ + bool_t TestPattern; /**< flags that sensor is streaming test-pattern */ + + bool_t isAfpsRun; /**< if true, just do anything required for Afps parameter calculation, but DON'T access SensorHW! */ + + float one_line_exp_time; + uint16_t MaxIntegrationLine; + uint16_t MinIntegrationLine; + uint32_t gain_accuracy; + + uint16_t FrameLengthLines; /**< frame line length */ + uint16_t CurFrameLengthLines; + + float AecMinGain; + float AecMaxGain; + float AecMinIntegrationTime; + float AecMaxIntegrationTime; + + float AecIntegrationTimeIncrement; /**< _smallest_ increment the sensor/driver can handle (e.g. used for sliders in the application) */ + float AecGainIncrement; /**< _smallest_ increment the sensor/driver can handle (e.g. used for sliders in the application) */ + + float AecCurIntegrationTime; + float AecCurVSIntegrationTime; + float AecCurLongIntegrationTime; + float AecCurGain; + float AecCurVSGain; + float AecCurLongGain; + + uint32_t LastExpLine; + uint32_t LastVsExpLine; + uint32_t LastLongExpLine; + + uint32_t LastGain; + uint32_t LastVsGain; + uint32_t LastLongGain; + + bool GroupHold; + uint32_t OldGain; + uint32_t OldVsGain; + uint32_t OldIntegrationTime; + uint32_t OldVsIntegrationTime; + uint32_t OldGainHcg; + uint32_t OldAGainHcg; + uint32_t OldGainLcg; + uint32_t OldAGainLcg; + int subdev; + uint8_t pattern; + + float CurHdrRatio; +} IMX219_Context_t; + +static RESULT IMX219_IsiCreateSensorIss(IsiSensorInstanceConfig_t * + pConfig); + +static RESULT IMX219_IsiInitSensorIss(IsiSensorHandle_t handle); + +static RESULT IMX219_IsiReleaseSensorIss(IsiSensorHandle_t handle); + +static RESULT IMX219_IsiGetCapsIss(IsiSensorHandle_t handle, + IsiSensorCaps_t * pIsiSensorCaps); + +static RESULT IMX219_IsiSetupSensorIss(IsiSensorHandle_t handle, + const IsiSensorConfig_t * + pConfig); + +static RESULT IMX219_IsiSensorSetStreamingIss(IsiSensorHandle_t handle, + bool_t on); + +static RESULT IMX219_IsiSensorSetPowerIss(IsiSensorHandle_t handle, + bool_t on); + +static RESULT IMX219_IsiGetSensorRevisionIss(IsiSensorHandle_t handle, + uint32_t * p_value); + +static RESULT IMX219_IsiSetBayerPattern(IsiSensorHandle_t handle, + uint8_t pattern); + +static RESULT IMX219_IsiGetGainLimitsIss(IsiSensorHandle_t handle, + float *pMinGain, + float *pMaxGain); + +static RESULT IMX219_IsiGetIntegrationTimeLimitsIss(IsiSensorHandle_t + handle, + float + *pMinIntegrationTime, + float + *pMaxIntegrationTime); + +static RESULT IMX219_IsiExposureControlIss(IsiSensorHandle_t handle, + float NewGain, + float NewIntegrationTime, + uint8_t * + pNumberOfFramesToSkip, + float *pSetGain, + float *pSetIntegrationTime, + float *hdr_ratio); + +static RESULT IMX219_IsiGetGainIss(IsiSensorHandle_t handle, + float *pSetGain); + +static RESULT IMX219_IsiGetVSGainIss(IsiSensorHandle_t handle, + float *pSetGain); + +static RESULT IMX219_IsiGetGainIncrementIss(IsiSensorHandle_t handle, + float *pIncr); + +static RESULT IMX219_IsiSetGainIss(IsiSensorHandle_t handle, + float NewGain, float *pSetGain, + float *hdr_ratio); + +static RESULT IMX219_IsiSetVSGainIss(IsiSensorHandle_t handle, + float NewIntegrationTime, + float NewGain, float *pSetGain, + float *hdr_ratio); + +static RESULT IMX219_IsiGetIntegrationTimeIss(IsiSensorHandle_t handle, + float + *pSetIntegrationTime); + +static RESULT IMX219_IsiGetVSIntegrationTimeIss(IsiSensorHandle_t + handle, + float + *pSetIntegrationTime); + +static RESULT IMX219_IsiGetIntegrationTimeIncrementIss(IsiSensorHandle_t handle, + float *pIncr); + +static RESULT IMX219_IsiSetIntegrationTimeIss(IsiSensorHandle_t handle, + float NewIntegrationTime, + float + *pSetIntegrationTime, + uint8_t * + pNumberOfFramesToSkip, + float *hdr_ratio); + +static RESULT IMX219_IsiSetVSIntegrationTimeIss(IsiSensorHandle_t + handle, + float + NewIntegrationTime, + float + *pSetIntegrationTime, + uint8_t * + pNumberOfFramesToSkip, + float *hdr_ratio); + +RESULT IMX219_IsiGetResolutionIss(IsiSensorHandle_t handle, uint16_t *pwidth, uint16_t *pheight); + +static RESULT IMX219_IsiResetSensorIss(IsiSensorHandle_t handle); + + +#ifdef __cplusplus +} +#endif + +/* @} IMX219priv */ + +#endif /* __IMX219PRIV_H__ */ + diff --git a/drivers/IMX219/imx219.h b/drivers/IMX219/imx219.h new file mode 100644 index 0000000..397c404 --- /dev/null +++ b/drivers/IMX219/imx219.h @@ -0,0 +1,1377 @@ +/* + * Support for OmniVision IMX219 5M camera sensor. + * + * Copyright (c) 2013 Intel Corporation. All Rights Reserved. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License version + * 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + * + */ + +#ifndef __IMX219_H__ +#define __IMX219_H__ + +#define IMX219_NAME "imx219" + +#define IMX219_POWER_UP_RETRY_NUM 5 + +/* Defines for register writes and register array processing */ +#define I2C_MSG_LENGTH 0x2 +#define I2C_RETRY_COUNT 5 + +#define IMX219_FOCAL_LENGTH_NUM 334 /*3.34mm*/ +#define IMX219_FOCAL_LENGTH_DEM 100 +#define IMX219_F_NUMBER_DEFAULT_NUM 24 +#define IMX219_F_NUMBER_DEM 10 + +#define MAX_FMTS 1 + +/* sensor_mode_data read_mode adaptation */ +#define IMX219_READ_MODE_BINNING_ON 0x0400 +#define IMX219_READ_MODE_BINNING_OFF 0x00 +#define IMX219_INTEGRATION_TIME_MARGIN 8 + +#define IMX219_MAX_EXPOSURE_VALUE 0xFFF1 +#define IMX219_MAX_GAIN_VALUE 0xFF + +/* + * focal length bits definition: + * bits 31-16: numerator, bits 15-0: denominator + */ +#define IMX219_FOCAL_LENGTH_DEFAULT 0x1B70064 + +/* + * current f-number bits definition: + * bits 31-16: numerator, bits 15-0: denominator + */ +#define IMX219_F_NUMBER_DEFAULT 0x18000a + +/* + * f-number range bits definition: + * bits 31-24: max f-number numerator + * bits 23-16: max f-number denominator + * bits 15-8: min f-number numerator + * bits 7-0: min f-number denominator + */ +#define IMX219_F_NUMBER_RANGE 0x180a180a +#define IMX219_ID 0x5690 + +#define IMX219_FINE_INTG_TIME_MIN 0 +#define IMX219_FINE_INTG_TIME_MAX_MARGIN 0 +#define IMX219_COARSE_INTG_TIME_MIN 1 +#define IMX219_COARSE_INTG_TIME_MAX_MARGIN 6 + +#define IMX219_BIN_FACTOR_MAX 4 +/* + * IMX219 System control registers + */ +#define IMX219_SW_SLEEP 0x0100 +#define IMX219_SW_RESET 0x0103 +#define IMX219_SW_STREAM 0x0100 + +#define IMX219_SC_CMMN_CHIP_ID_H 0x300A +#define IMX219_SC_CMMN_CHIP_ID_L 0x300B +#define IMX219_SC_CMMN_SCCB_ID 0x300C +#define IMX219_SC_CMMN_SUB_ID 0x302A /* process, version*/ +/*Bit[7:4] Group control, Bit[3:0] Group ID*/ +#define IMX219_GROUP_ACCESS 0x3208 +/* +*Bit[3:0] Bit[19:16] of exposure, +*remaining 16 bits lies in Reg0x3501&Reg0x3502 +*/ +#define IMX219_EXPOSURE_H 0x3500 +#define IMX219_EXPOSURE_M 0x3501 +#define IMX219_EXPOSURE_L 0x3502 +/*Bit[1:0] means Bit[9:8] of gain*/ +#define IMX219_AGC_H 0x350A +#define IMX219_AGC_L 0x350B /*Bit[7:0] of gain*/ + +#define IMX219_HORIZONTAL_START_H 0x3800 /*Bit[11:8]*/ +#define IMX219_HORIZONTAL_START_L 0x3801 /*Bit[7:0]*/ +#define IMX219_VERTICAL_START_H 0x3802 /*Bit[11:8]*/ +#define IMX219_VERTICAL_START_L 0x3803 /*Bit[7:0]*/ +#define IMX219_HORIZONTAL_END_H 0x3804 /*Bit[11:8]*/ +#define IMX219_HORIZONTAL_END_L 0x3805 /*Bit[7:0]*/ +#define IMX219_VERTICAL_END_H 0x3806 /*Bit[11:8]*/ +#define IMX219_VERTICAL_END_L 0x3807 /*Bit[7:0]*/ +#define IMX219_HORIZONTAL_OUTPUT_SIZE_H 0x3808 /*Bit[3:0]*/ +#define IMX219_HORIZONTAL_OUTPUT_SIZE_L 0x3809 /*Bit[7:0]*/ +#define IMX219_VERTICAL_OUTPUT_SIZE_H 0x380a /*Bit[3:0]*/ +#define IMX219_VERTICAL_OUTPUT_SIZE_L 0x380b /*Bit[7:0]*/ +/*High 8-bit, and low 8-bit HTS address is 0x380d*/ +#define IMX219_TIMING_HTS_H 0x380C +/*High 8-bit, and low 8-bit HTS address is 0x380d*/ +#define IMX219_TIMING_HTS_L 0x380D +/*High 8-bit, and low 8-bit HTS address is 0x380f*/ +#define IMX219_TIMING_VTS_H 0x380e +/*High 8-bit, and low 8-bit HTS address is 0x380f*/ +#define IMX219_TIMING_VTS_L 0x380f + +#define IMX219_MWB_RED_GAIN_H 0x3400 +#define IMX219_MWB_GREEN_GAIN_H 0x3402 +#define IMX219_MWB_BLUE_GAIN_H 0x3404 +#define IMX219_MWB_GAIN_MAX 0x0fff + +#define IMX219_START_STREAMING 0x01 +#define IMX219_STOP_STREAMING 0x00 + +#define VCM_ADDR 0x0c +#define VCM_CODE_MSB 0x04 + +#define IMX219_INVALID_CONFIG 0xffffffff + +#define IMX219_VCM_SLEW_STEP 0x30F0 +#define IMX219_VCM_SLEW_STEP_MAX 0x7 +#define IMX219_VCM_SLEW_STEP_MASK 0x7 +#define IMX219_VCM_CODE 0x30F2 +#define IMX219_VCM_SLEW_TIME 0x30F4 +#define IMX219_VCM_SLEW_TIME_MAX 0xffff +#define IMX219_VCM_ENABLE 0x8000 + +#define IMX219_VCM_MAX_FOCUS_NEG -1023 +#define IMX219_VCM_MAX_FOCUS_POS 1023 + +#define DLC_ENABLE 1 +#define DLC_DISABLE 0 +#define VCM_PROTECTION_OFF 0xeca3 +#define VCM_PROTECTION_ON 0xdc51 +#define VCM_DEFAULT_S 0x0 +#define vcm_step_s(a) (u8)(a & 0xf) +#define vcm_step_mclk(a) (u8)((a >> 4) & 0x3) +#define vcm_dlc_mclk(dlc, mclk) (u16)((dlc << 3) | mclk | 0xa104) +#define vcm_tsrc(tsrc) (u16)(tsrc << 3 | 0xf200) +#define vcm_val(data, s) (u16)(data << 4 | s) +#define DIRECT_VCM vcm_dlc_mclk(0, 0) + +/* Defines for OTP Data Registers */ +#define IMX219_FRAME_OFF_NUM 0x4202 +#define IMX219_OTP_BYTE_MAX 32 //change to 32 as needed by otpdata +#define IMX219_OTP_SHORT_MAX 16 +#define IMX219_OTP_START_ADDR 0x3D00 +#define IMX219_OTP_END_ADDR 0x3D0F +#define IMX219_OTP_DATA_SIZE 320 +#define IMX219_OTP_PROGRAM_REG 0x3D80 +#define IMX219_OTP_READ_REG 0x3D81 // 1:Enable 0:disable +#define IMX219_OTP_BANK_REG 0x3D84 //otp bank and mode +#define IMX219_OTP_READY_REG_DONE 1 +#define IMX219_OTP_BANK_MAX 28 +#define IMX219_OTP_BANK_SIZE 16 //16 bytes per bank +#define IMX219_OTP_READ_ONETIME 16 +#define IMX219_OTP_MODE_READ 1 + +typedef enum IMX219_EXPOSURE_SETTING_e { + IMX219_ANALOG_GAIN = 1 << 0, + IMX219_INTEGRATION_TIME = 1 << 1, + IMX219_DIGITAL_GAIN = 1 << 2, +}IMX219_EXPOSURE_SETTING_t; + +#if 0 +struct regval_list { + u16 reg_num; + u8 value; +}; + +struct imx219_resolution { + u8 *desc; + const struct imx219_reg *regs; + int res; + int width; + int height; + int fps; + int pix_clk_freq; + u16 pixels_per_line; + u16 lines_per_frame; + u8 bin_factor_x; + u8 bin_factor_y; + u8 bin_mode; + bool used; +}; + +struct imx219_format { + u8 *desc; + u32 pixelformat; + struct imx219_reg *regs; +}; + +enum vcm_type { + VCM_UNKNOWN, + VCM_AD5823, + VCM_DW9714, +}; + +/* + * imx219 device structure. + */ +struct imx219_device { + struct v4l2_subdev sd; + struct media_pad pad; + struct v4l2_mbus_framefmt format; + struct mutex input_lock; + struct v4l2_ctrl_handler ctrl_handler; + + struct camera_sensor_platform_data *platform_data; + struct timespec timestamp_t_focus_abs; + int vt_pix_clk_freq_mhz; + int fmt_idx; + int run_mode; + int otp_size; + u8 *otp_data; + u32 focus; + s16 number_of_steps; + u8 res; + u8 type; + bool vcm_update; + enum vcm_type vcm; +}; + +enum imx219_tok_type { + IMX219_8BIT = 0x0001, + IMX219_16BIT = 0x0002, + IMX219_32BIT = 0x0004, + IMX219_TOK_TERM = 0xf000, /* terminating token for reg list */ + IMX219_TOK_DELAY = 0xfe00, /* delay token for reg list */ + IMX219_TOK_MASK = 0xfff0 +}; + +/** + * struct imx219_reg - MI sensor register format + * @type: type of the register + * @reg: 16-bit offset to register + * @val: 8/16/32-bit register value + * + * Define a structure for sensor register initialization values + */ +struct imx219_reg { + enum imx219_tok_type type; + u16 reg; + u32 val; /* @set value for read/mod/write, @mask */ +}; + +#define to_imx219_sensor(x) container_of(x, struct imx219_device, sd) + +#define IMX219_MAX_WRITE_BUF_SIZE 30 + +struct imx219_write_buffer { + u16 addr; + u8 data[IMX219_MAX_WRITE_BUF_SIZE]; +}; + +struct imx219_write_ctrl { + int index; + struct imx219_write_buffer buffer; +}; + +static const struct i2c_device_id imx219_id[] = { + {IMX219_NAME, 0}, + {} +}; + +static struct imx219_reg const imx219_global_setting[] = { + {IMX219_8BIT, 0x0103, 0x01}, + {IMX219_8BIT, 0x3001, 0x0a}, + {IMX219_8BIT, 0x3002, 0x80}, + {IMX219_8BIT, 0x3006, 0x00}, + {IMX219_8BIT, 0x3011, 0x21}, + {IMX219_8BIT, 0x3012, 0x09}, + {IMX219_8BIT, 0x3013, 0x10}, + {IMX219_8BIT, 0x3014, 0x00}, + {IMX219_8BIT, 0x3015, 0x08}, + {IMX219_8BIT, 0x3016, 0xf0}, + {IMX219_8BIT, 0x3017, 0xf0}, + {IMX219_8BIT, 0x3018, 0xf0}, + {IMX219_8BIT, 0x301b, 0xb4}, + {IMX219_8BIT, 0x301d, 0x02}, + {IMX219_8BIT, 0x3021, 0x00}, + {IMX219_8BIT, 0x3022, 0x01}, + {IMX219_8BIT, 0x3028, 0x44}, + {IMX219_8BIT, 0x3098, 0x02}, + {IMX219_8BIT, 0x3099, 0x19}, + {IMX219_8BIT, 0x309a, 0x02}, + {IMX219_8BIT, 0x309b, 0x01}, + {IMX219_8BIT, 0x309c, 0x00}, + {IMX219_8BIT, 0x30a0, 0xd2}, + {IMX219_8BIT, 0x30a2, 0x01}, + {IMX219_8BIT, 0x30b2, 0x00}, + {IMX219_8BIT, 0x30b3, 0x7d}, + {IMX219_8BIT, 0x30b4, 0x03}, + {IMX219_8BIT, 0x30b5, 0x04}, + {IMX219_8BIT, 0x30b6, 0x01}, + {IMX219_8BIT, 0x3104, 0x21}, + {IMX219_8BIT, 0x3106, 0x00}, + {IMX219_8BIT, 0x3400, 0x04}, + {IMX219_8BIT, 0x3401, 0x00}, + {IMX219_8BIT, 0x3402, 0x04}, + {IMX219_8BIT, 0x3403, 0x00}, + {IMX219_8BIT, 0x3404, 0x04}, + {IMX219_8BIT, 0x3405, 0x00}, + {IMX219_8BIT, 0x3406, 0x01}, + {IMX219_8BIT, 0x3500, 0x00}, + {IMX219_8BIT, 0x3503, 0x07}, + {IMX219_8BIT, 0x3504, 0x00}, + {IMX219_8BIT, 0x3505, 0x00}, + {IMX219_8BIT, 0x3506, 0x00}, + {IMX219_8BIT, 0x3507, 0x02}, + {IMX219_8BIT, 0x3508, 0x00}, + {IMX219_8BIT, 0x3509, 0x10}, + {IMX219_8BIT, 0x350a, 0x00}, + {IMX219_8BIT, 0x350b, 0x40}, + {IMX219_8BIT, 0x3601, 0x0a}, + {IMX219_8BIT, 0x3602, 0x38}, + {IMX219_8BIT, 0x3612, 0x80}, + {IMX219_8BIT, 0x3620, 0x54}, + {IMX219_8BIT, 0x3621, 0xc7}, + {IMX219_8BIT, 0x3622, 0x0f}, + {IMX219_8BIT, 0x3625, 0x10}, + {IMX219_8BIT, 0x3630, 0x55}, + {IMX219_8BIT, 0x3631, 0xf4}, + {IMX219_8BIT, 0x3632, 0x00}, + {IMX219_8BIT, 0x3633, 0x34}, + {IMX219_8BIT, 0x3634, 0x02}, + {IMX219_8BIT, 0x364d, 0x0d}, + {IMX219_8BIT, 0x364f, 0xdd}, + {IMX219_8BIT, 0x3660, 0x04}, + {IMX219_8BIT, 0x3662, 0x10}, + {IMX219_8BIT, 0x3663, 0xf1}, + {IMX219_8BIT, 0x3665, 0x00}, + {IMX219_8BIT, 0x3666, 0x20}, + {IMX219_8BIT, 0x3667, 0x00}, + {IMX219_8BIT, 0x366a, 0x80}, + {IMX219_8BIT, 0x3680, 0xe0}, + {IMX219_8BIT, 0x3681, 0x00}, + {IMX219_8BIT, 0x3700, 0x42}, + {IMX219_8BIT, 0x3701, 0x14}, + {IMX219_8BIT, 0x3702, 0xa0}, + {IMX219_8BIT, 0x3703, 0xd8}, + {IMX219_8BIT, 0x3704, 0x78}, + {IMX219_8BIT, 0x3705, 0x02}, + {IMX219_8BIT, 0x370a, 0x00}, + {IMX219_8BIT, 0x370b, 0x20}, + {IMX219_8BIT, 0x370c, 0x0c}, + {IMX219_8BIT, 0x370d, 0x11}, + {IMX219_8BIT, 0x370e, 0x00}, + {IMX219_8BIT, 0x370f, 0x40}, + {IMX219_8BIT, 0x3710, 0x00}, + {IMX219_8BIT, 0x371a, 0x1c}, + {IMX219_8BIT, 0x371b, 0x05}, + {IMX219_8BIT, 0x371c, 0x01}, + {IMX219_8BIT, 0x371e, 0xa1}, + {IMX219_8BIT, 0x371f, 0x0c}, + {IMX219_8BIT, 0x3721, 0x00}, + {IMX219_8BIT, 0x3724, 0x10}, + {IMX219_8BIT, 0x3726, 0x00}, + {IMX219_8BIT, 0x372a, 0x01}, + {IMX219_8BIT, 0x3730, 0x10}, + {IMX219_8BIT, 0x3738, 0x22}, + {IMX219_8BIT, 0x3739, 0xe5}, + {IMX219_8BIT, 0x373a, 0x50}, + {IMX219_8BIT, 0x373b, 0x02}, + {IMX219_8BIT, 0x373c, 0x41}, + {IMX219_8BIT, 0x373f, 0x02}, + {IMX219_8BIT, 0x3740, 0x42}, + {IMX219_8BIT, 0x3741, 0x02}, + {IMX219_8BIT, 0x3742, 0x18}, + {IMX219_8BIT, 0x3743, 0x01}, + {IMX219_8BIT, 0x3744, 0x02}, + {IMX219_8BIT, 0x3747, 0x10}, + {IMX219_8BIT, 0x374c, 0x04}, + {IMX219_8BIT, 0x3751, 0xf0}, + {IMX219_8BIT, 0x3752, 0x00}, + {IMX219_8BIT, 0x3753, 0x00}, + {IMX219_8BIT, 0x3754, 0xc0}, + {IMX219_8BIT, 0x3755, 0x00}, + {IMX219_8BIT, 0x3756, 0x1a}, + {IMX219_8BIT, 0x3758, 0x00}, + {IMX219_8BIT, 0x3759, 0x0f}, + {IMX219_8BIT, 0x376b, 0x44}, + {IMX219_8BIT, 0x375c, 0x04}, + {IMX219_8BIT, 0x3774, 0x10}, + {IMX219_8BIT, 0x3776, 0x00}, + {IMX219_8BIT, 0x377f, 0x08}, + {IMX219_8BIT, 0x3780, 0x22}, + {IMX219_8BIT, 0x3781, 0x0c}, + {IMX219_8BIT, 0x3784, 0x2c}, + {IMX219_8BIT, 0x3785, 0x1e}, + {IMX219_8BIT, 0x378f, 0xf5}, + {IMX219_8BIT, 0x3791, 0xb0}, + {IMX219_8BIT, 0x3795, 0x00}, + {IMX219_8BIT, 0x3796, 0x64}, + {IMX219_8BIT, 0x3797, 0x11}, + {IMX219_8BIT, 0x3798, 0x30}, + {IMX219_8BIT, 0x3799, 0x41}, + {IMX219_8BIT, 0x379a, 0x07}, + {IMX219_8BIT, 0x379b, 0xb0}, + {IMX219_8BIT, 0x379c, 0x0c}, + {IMX219_8BIT, 0x37c5, 0x00}, + {IMX219_8BIT, 0x37c6, 0x00}, + {IMX219_8BIT, 0x37c7, 0x00}, + {IMX219_8BIT, 0x37c9, 0x00}, + {IMX219_8BIT, 0x37ca, 0x00}, + {IMX219_8BIT, 0x37cb, 0x00}, + {IMX219_8BIT, 0x37de, 0x00}, + {IMX219_8BIT, 0x37df, 0x00}, + {IMX219_8BIT, 0x3800, 0x00}, + {IMX219_8BIT, 0x3801, 0x00}, + {IMX219_8BIT, 0x3802, 0x00}, + {IMX219_8BIT, 0x3804, 0x0a}, + {IMX219_8BIT, 0x3805, 0x3f}, + {IMX219_8BIT, 0x3810, 0x00}, + {IMX219_8BIT, 0x3812, 0x00}, + {IMX219_8BIT, 0x3823, 0x00}, + {IMX219_8BIT, 0x3824, 0x00}, + {IMX219_8BIT, 0x3825, 0x00}, + {IMX219_8BIT, 0x3826, 0x00}, + {IMX219_8BIT, 0x3827, 0x00}, + {IMX219_8BIT, 0x382a, 0x04}, + {IMX219_8BIT, 0x3a04, 0x06}, + {IMX219_8BIT, 0x3a05, 0x14}, + {IMX219_8BIT, 0x3a06, 0x00}, + {IMX219_8BIT, 0x3a07, 0xfe}, + {IMX219_8BIT, 0x3b00, 0x00}, + {IMX219_8BIT, 0x3b02, 0x00}, + {IMX219_8BIT, 0x3b03, 0x00}, + {IMX219_8BIT, 0x3b04, 0x00}, + {IMX219_8BIT, 0x3b05, 0x00}, + {IMX219_8BIT, 0x3e07, 0x20}, + {IMX219_8BIT, 0x4000, 0x08}, + {IMX219_8BIT, 0x4001, 0x04}, + {IMX219_8BIT, 0x4002, 0x45}, + {IMX219_8BIT, 0x4004, 0x08}, + {IMX219_8BIT, 0x4005, 0x18}, + {IMX219_8BIT, 0x4006, 0x20}, + {IMX219_8BIT, 0x4008, 0x24}, + {IMX219_8BIT, 0x4009, 0x10}, + {IMX219_8BIT, 0x400c, 0x00}, + {IMX219_8BIT, 0x400d, 0x00}, + {IMX219_8BIT, 0x4058, 0x00}, + {IMX219_8BIT, 0x404e, 0x37}, + {IMX219_8BIT, 0x404f, 0x8f}, + {IMX219_8BIT, 0x4058, 0x00}, + {IMX219_8BIT, 0x4101, 0xb2}, + {IMX219_8BIT, 0x4303, 0x00}, + {IMX219_8BIT, 0x4304, 0x08}, + {IMX219_8BIT, 0x4307, 0x31}, + {IMX219_8BIT, 0x4311, 0x04}, + {IMX219_8BIT, 0x4315, 0x01}, + {IMX219_8BIT, 0x4511, 0x05}, + {IMX219_8BIT, 0x4512, 0x01}, + {IMX219_8BIT, 0x4806, 0x00}, + {IMX219_8BIT, 0x4816, 0x52}, + {IMX219_8BIT, 0x481f, 0x30}, + {IMX219_8BIT, 0x4826, 0x2c}, + {IMX219_8BIT, 0x4831, 0x64}, + {IMX219_8BIT, 0x4d00, 0x04}, + {IMX219_8BIT, 0x4d01, 0x71}, + {IMX219_8BIT, 0x4d02, 0xfd}, + {IMX219_8BIT, 0x4d03, 0xf5}, + {IMX219_8BIT, 0x4d04, 0x0c}, + {IMX219_8BIT, 0x4d05, 0xcc}, + {IMX219_8BIT, 0x4837, 0x0a}, + {IMX219_8BIT, 0x5000, 0x06}, + {IMX219_8BIT, 0x5001, 0x01}, + {IMX219_8BIT, 0x5003, 0x20}, + {IMX219_8BIT, 0x5046, 0x0a}, + {IMX219_8BIT, 0x5013, 0x00}, + {IMX219_8BIT, 0x5046, 0x0a}, + {IMX219_8BIT, 0x5780, 0x1c}, + {IMX219_8BIT, 0x5786, 0x20}, + {IMX219_8BIT, 0x5787, 0x10}, + {IMX219_8BIT, 0x5788, 0x18}, + {IMX219_8BIT, 0x578a, 0x04}, + {IMX219_8BIT, 0x578b, 0x02}, + {IMX219_8BIT, 0x578c, 0x02}, + {IMX219_8BIT, 0x578e, 0x06}, + {IMX219_8BIT, 0x578f, 0x02}, + {IMX219_8BIT, 0x5790, 0x02}, + {IMX219_8BIT, 0x5791, 0xff}, + {IMX219_8BIT, 0x5842, 0x01}, + {IMX219_8BIT, 0x5843, 0x2b}, + {IMX219_8BIT, 0x5844, 0x01}, + {IMX219_8BIT, 0x5845, 0x92}, + {IMX219_8BIT, 0x5846, 0x01}, + {IMX219_8BIT, 0x5847, 0x8f}, + {IMX219_8BIT, 0x5848, 0x01}, + {IMX219_8BIT, 0x5849, 0x0c}, + {IMX219_8BIT, 0x5e00, 0x00}, + {IMX219_8BIT, 0x5e10, 0x0c}, + {IMX219_8BIT, 0x0100, 0x00}, + {IMX219_TOK_TERM, 0, 0} +}; + +/* + * 654x496 30fps 17ms VBlanking 2lane 10Bit (Scaling) + */ +static struct imx219_reg const imx219_654x496[] = { + {IMX219_8BIT, 0x3501, 0x3d}, + {IMX219_8BIT, 0x3502, 0x00}, + {IMX219_8BIT, 0x3708, 0xe6}, + {IMX219_8BIT, 0x3709, 0xc7}, + {IMX219_8BIT, 0x3803, 0x00}, + {IMX219_8BIT, 0x3806, 0x07}, + {IMX219_8BIT, 0x3807, 0xa3}, + {IMX219_8BIT, 0x3808, 0x02}, + {IMX219_8BIT, 0x3809, 0x90}, + {IMX219_8BIT, 0x380a, 0x01}, + {IMX219_8BIT, 0x380b, 0xf0}, + {IMX219_8BIT, 0x380c, 0x0a}, + {IMX219_8BIT, 0x380d, 0x80}, + {IMX219_8BIT, 0x380e, 0x07}, + {IMX219_8BIT, 0x380f, 0xc0}, + {IMX219_8BIT, 0x3811, 0x08}, + {IMX219_8BIT, 0x3813, 0x02}, + {IMX219_8BIT, 0x3814, 0x31}, + {IMX219_8BIT, 0x3815, 0x31}, + {IMX219_8BIT, 0x3820, 0x04}, + {IMX219_8BIT, 0x3821, 0x1f}, + {IMX219_8BIT, 0x5002, 0x80}, + {IMX219_8BIT, 0x0100, 0x01}, + {IMX219_TOK_TERM, 0, 0} +}; + +/* + * 1296x976 30fps 17ms VBlanking 2lane 10Bit (Scaling) +*DS from 2592x1952 +*/ +static struct imx219_reg const imx219_1296x976[] = { + {IMX219_8BIT, 0x3501, 0x7b}, + {IMX219_8BIT, 0x3502, 0x00}, + {IMX219_8BIT, 0x3708, 0xe2}, + {IMX219_8BIT, 0x3709, 0xc3}, + + {IMX219_8BIT, 0x3800, 0x00}, + {IMX219_8BIT, 0x3801, 0x00}, + {IMX219_8BIT, 0x3802, 0x00}, + {IMX219_8BIT, 0x3803, 0x00}, + + {IMX219_8BIT, 0x3804, 0x0a}, + {IMX219_8BIT, 0x3805, 0x3f}, + {IMX219_8BIT, 0x3806, 0x07}, + {IMX219_8BIT, 0x3807, 0xA3}, + + {IMX219_8BIT, 0x3808, 0x05}, + {IMX219_8BIT, 0x3809, 0x10}, + {IMX219_8BIT, 0x380a, 0x03}, + {IMX219_8BIT, 0x380b, 0xD0}, + + {IMX219_8BIT, 0x380c, 0x0a}, + {IMX219_8BIT, 0x380d, 0x80}, + {IMX219_8BIT, 0x380e, 0x07}, + {IMX219_8BIT, 0x380f, 0xc0}, + + {IMX219_8BIT, 0x3810, 0x00}, + {IMX219_8BIT, 0x3811, 0x10}, + {IMX219_8BIT, 0x3812, 0x00}, + {IMX219_8BIT, 0x3813, 0x02}, + + {IMX219_8BIT, 0x3814, 0x11}, /*X subsample control*/ + {IMX219_8BIT, 0x3815, 0x11}, /*Y subsample control*/ + {IMX219_8BIT, 0x3820, 0x00}, + {IMX219_8BIT, 0x3821, 0x1e}, + {IMX219_8BIT, 0x5002, 0x00}, + {IMX219_8BIT, 0x5041, 0x84}, /* scale is auto enabled */ + {IMX219_8BIT, 0x0100, 0x01}, + {IMX219_TOK_TERM, 0, 0} + +}; + + +/* + * 336x256 30fps 17ms VBlanking 2lane 10Bit (Scaling) + DS from 2564x1956 + */ +static struct imx219_reg const imx219_336x256[] = { + {IMX219_8BIT, 0x3501, 0x3d}, + {IMX219_8BIT, 0x3502, 0x00}, + {IMX219_8BIT, 0x3708, 0xe6}, + {IMX219_8BIT, 0x3709, 0xc7}, + {IMX219_8BIT, 0x3806, 0x07}, + {IMX219_8BIT, 0x3807, 0xa3}, + {IMX219_8BIT, 0x3808, 0x01}, + {IMX219_8BIT, 0x3809, 0x50}, + {IMX219_8BIT, 0x380a, 0x01}, + {IMX219_8BIT, 0x380b, 0x00}, + {IMX219_8BIT, 0x380c, 0x0a}, + {IMX219_8BIT, 0x380d, 0x80}, + {IMX219_8BIT, 0x380e, 0x07}, + {IMX219_8BIT, 0x380f, 0xc0}, + {IMX219_8BIT, 0x3811, 0x1E}, + {IMX219_8BIT, 0x3814, 0x31}, + {IMX219_8BIT, 0x3815, 0x31}, + {IMX219_8BIT, 0x3820, 0x04}, + {IMX219_8BIT, 0x3821, 0x1f}, + {IMX219_8BIT, 0x5002, 0x80}, + {IMX219_8BIT, 0x0100, 0x01}, + {IMX219_TOK_TERM, 0, 0} +}; + +/* + * 336x256 30fps 17ms VBlanking 2lane 10Bit (Scaling) + DS from 2368x1956 + */ +static struct imx219_reg const imx219_368x304[] = { + {IMX219_8BIT, 0x3501, 0x3d}, + {IMX219_8BIT, 0x3502, 0x00}, + {IMX219_8BIT, 0x3708, 0xe6}, + {IMX219_8BIT, 0x3709, 0xc7}, + {IMX219_8BIT, 0x3808, 0x01}, + {IMX219_8BIT, 0x3809, 0x70}, + {IMX219_8BIT, 0x380a, 0x01}, + {IMX219_8BIT, 0x380b, 0x30}, + {IMX219_8BIT, 0x380c, 0x0a}, + {IMX219_8BIT, 0x380d, 0x80}, + {IMX219_8BIT, 0x380e, 0x07}, + {IMX219_8BIT, 0x380f, 0xc0}, + {IMX219_8BIT, 0x3811, 0x80}, + {IMX219_8BIT, 0x3814, 0x31}, + {IMX219_8BIT, 0x3815, 0x31}, + {IMX219_8BIT, 0x3820, 0x04}, + {IMX219_8BIT, 0x3821, 0x1f}, + {IMX219_8BIT, 0x5002, 0x80}, + {IMX219_8BIT, 0x0100, 0x01}, + {IMX219_TOK_TERM, 0, 0} +}; + +/* + * imx219_192x160 30fps 17ms VBlanking 2lane 10Bit (Scaling) + DS from 2460x1956 + */ +static struct imx219_reg const imx219_192x160[] = { + {IMX219_8BIT, 0x3501, 0x7b}, + {IMX219_8BIT, 0x3502, 0x80}, + {IMX219_8BIT, 0x3708, 0xe2}, + {IMX219_8BIT, 0x3709, 0xc3}, + {IMX219_8BIT, 0x3804, 0x0a}, + {IMX219_8BIT, 0x3805, 0x3f}, + {IMX219_8BIT, 0x3806, 0x07}, + {IMX219_8BIT, 0x3807, 0xA3}, + {IMX219_8BIT, 0x3808, 0x00}, + {IMX219_8BIT, 0x3809, 0xC0}, + {IMX219_8BIT, 0x380a, 0x00}, + {IMX219_8BIT, 0x380b, 0xA0}, + {IMX219_8BIT, 0x380c, 0x0a}, + {IMX219_8BIT, 0x380d, 0x80}, + {IMX219_8BIT, 0x380e, 0x07}, + {IMX219_8BIT, 0x380f, 0xc0}, + {IMX219_8BIT, 0x3811, 0x40}, + {IMX219_8BIT, 0x3813, 0x00}, + {IMX219_8BIT, 0x3814, 0x31}, + {IMX219_8BIT, 0x3815, 0x31}, + {IMX219_8BIT, 0x3820, 0x04}, + {IMX219_8BIT, 0x3821, 0x1f}, + {IMX219_8BIT, 0x5002, 0x80}, + {IMX219_8BIT, 0x0100, 0x01}, + {IMX219_TOK_TERM, 0, 0} +}; + + +static struct imx219_reg const imx219_736x496[] = { + {IMX219_8BIT, 0x3501, 0x3d}, + {IMX219_8BIT, 0x3502, 0x00}, + {IMX219_8BIT, 0x3708, 0xe6}, + {IMX219_8BIT, 0x3709, 0xc7}, + {IMX219_8BIT, 0x3803, 0x68}, + {IMX219_8BIT, 0x3806, 0x07}, + {IMX219_8BIT, 0x3807, 0x3b}, + {IMX219_8BIT, 0x3808, 0x02}, + {IMX219_8BIT, 0x3809, 0xe0}, + {IMX219_8BIT, 0x380a, 0x01}, + {IMX219_8BIT, 0x380b, 0xf0}, + {IMX219_8BIT, 0x380c, 0x0a}, /*hts*/ + {IMX219_8BIT, 0x380d, 0x80}, + {IMX219_8BIT, 0x380e, 0x07}, /*vts*/ + {IMX219_8BIT, 0x380f, 0xc0}, + {IMX219_8BIT, 0x3811, 0x08}, + {IMX219_8BIT, 0x3813, 0x02}, + {IMX219_8BIT, 0x3814, 0x31}, + {IMX219_8BIT, 0x3815, 0x31}, + {IMX219_8BIT, 0x3820, 0x04}, + {IMX219_8BIT, 0x3821, 0x1f}, + {IMX219_8BIT, 0x5002, 0x80}, + {IMX219_8BIT, 0x0100, 0x01}, + {IMX219_TOK_TERM, 0, 0} +}; + +/* +static struct imx219_reg const imx219_736x496[] = { + {IMX219_8BIT, 0x3501, 0x7b}, + {IMX219_8BIT, 0x3502, 0x00}, + {IMX219_8BIT, 0x3708, 0xe6}, + {IMX219_8BIT, 0x3709, 0xc3}, + {IMX219_8BIT, 0x3803, 0x00}, + {IMX219_8BIT, 0x3806, 0x07}, + {IMX219_8BIT, 0x3807, 0xa3}, + {IMX219_8BIT, 0x3808, 0x02}, + {IMX219_8BIT, 0x3809, 0xe0}, + {IMX219_8BIT, 0x380a, 0x01}, + {IMX219_8BIT, 0x380b, 0xf0}, + {IMX219_8BIT, 0x380c, 0x0d}, + {IMX219_8BIT, 0x380d, 0xb0}, + {IMX219_8BIT, 0x380e, 0x05}, + {IMX219_8BIT, 0x380f, 0xf2}, + {IMX219_8BIT, 0x3811, 0x08}, + {IMX219_8BIT, 0x3813, 0x02}, + {IMX219_8BIT, 0x3814, 0x31}, + {IMX219_8BIT, 0x3815, 0x31}, + {IMX219_8BIT, 0x3820, 0x01}, + {IMX219_8BIT, 0x3821, 0x1f}, + {IMX219_8BIT, 0x5002, 0x00}, + {IMX219_8BIT, 0x0100, 0x01}, + {IMX219_TOK_TERM, 0, 0} +}; +*/ +/* + * 976x556 30fps 8.8ms VBlanking 2lane 10Bit (Scaling) + */ +static struct imx219_reg const imx219_976x556[] = { + {IMX219_8BIT, 0x3501, 0x7b}, + {IMX219_8BIT, 0x3502, 0x00}, + {IMX219_8BIT, 0x3708, 0xe2}, + {IMX219_8BIT, 0x3709, 0xc3}, + {IMX219_8BIT, 0x3803, 0xf0}, + {IMX219_8BIT, 0x3806, 0x06}, + {IMX219_8BIT, 0x3807, 0xa7}, + {IMX219_8BIT, 0x3808, 0x03}, + {IMX219_8BIT, 0x3809, 0xd0}, + {IMX219_8BIT, 0x380a, 0x02}, + {IMX219_8BIT, 0x380b, 0x2C}, + {IMX219_8BIT, 0x380c, 0x0a}, + {IMX219_8BIT, 0x380d, 0x80}, + {IMX219_8BIT, 0x380e, 0x07}, + {IMX219_8BIT, 0x380f, 0xc0}, + {IMX219_8BIT, 0x3811, 0x10}, + {IMX219_8BIT, 0x3813, 0x02}, + {IMX219_8BIT, 0x3814, 0x11}, + {IMX219_8BIT, 0x3815, 0x11}, + {IMX219_8BIT, 0x3820, 0x00}, + {IMX219_8BIT, 0x3821, 0x1e}, + {IMX219_8BIT, 0x5002, 0x80}, + {IMX219_8BIT, 0x0100, 0x01}, + {IMX219_TOK_TERM, 0, 0} +}; + +/*DS from 2624x1492*/ +static struct imx219_reg const imx219_1296x736[] = { + {IMX219_8BIT, 0x3501, 0x7b}, + {IMX219_8BIT, 0x3502, 0x00}, + {IMX219_8BIT, 0x3708, 0xe2}, + {IMX219_8BIT, 0x3709, 0xc3}, + + {IMX219_8BIT, 0x3800, 0x00}, + {IMX219_8BIT, 0x3801, 0x00}, + {IMX219_8BIT, 0x3802, 0x00}, + {IMX219_8BIT, 0x3803, 0x00}, + + {IMX219_8BIT, 0x3804, 0x0a}, + {IMX219_8BIT, 0x3805, 0x3f}, + {IMX219_8BIT, 0x3806, 0x07}, + {IMX219_8BIT, 0x3807, 0xA3}, + + {IMX219_8BIT, 0x3808, 0x05}, + {IMX219_8BIT, 0x3809, 0x10}, + {IMX219_8BIT, 0x380a, 0x02}, + {IMX219_8BIT, 0x380b, 0xe0}, + + {IMX219_8BIT, 0x380c, 0x0a}, + {IMX219_8BIT, 0x380d, 0x80}, + {IMX219_8BIT, 0x380e, 0x07}, + {IMX219_8BIT, 0x380f, 0xc0}, + + {IMX219_8BIT, 0x3813, 0xE8}, + + {IMX219_8BIT, 0x3814, 0x11}, /*X subsample control*/ + {IMX219_8BIT, 0x3815, 0x11}, /*Y subsample control*/ + {IMX219_8BIT, 0x3820, 0x00}, + {IMX219_8BIT, 0x3821, 0x1e}, + {IMX219_8BIT, 0x5002, 0x00}, + {IMX219_8BIT, 0x5041, 0x84}, /* scale is auto enabled */ + {IMX219_8BIT, 0x0100, 0x01}, + {IMX219_TOK_TERM, 0, 0} +}; + +static struct imx219_reg const imx219_1636p_30fps[] = { + {IMX219_8BIT, 0x3501, 0x7b}, + {IMX219_8BIT, 0x3502, 0x00}, + {IMX219_8BIT, 0x3708, 0xe2}, + {IMX219_8BIT, 0x3709, 0xc3}, + {IMX219_8BIT, 0x3803, 0xf0}, + {IMX219_8BIT, 0x3806, 0x06}, + {IMX219_8BIT, 0x3807, 0xa7}, + {IMX219_8BIT, 0x3808, 0x06}, + {IMX219_8BIT, 0x3809, 0x64}, + {IMX219_8BIT, 0x380a, 0x04}, + {IMX219_8BIT, 0x380b, 0x48}, + {IMX219_8BIT, 0x380c, 0x0a}, /*hts*/ + {IMX219_8BIT, 0x380d, 0x80}, + {IMX219_8BIT, 0x380e, 0x07}, /*vts*/ + {IMX219_8BIT, 0x380f, 0xc0}, + {IMX219_8BIT, 0x3811, 0x02}, + {IMX219_8BIT, 0x3813, 0x02}, + {IMX219_8BIT, 0x3814, 0x11}, + {IMX219_8BIT, 0x3815, 0x11}, + {IMX219_8BIT, 0x3820, 0x00}, + {IMX219_8BIT, 0x3821, 0x1e}, + {IMX219_8BIT, 0x5002, 0x80}, + {IMX219_8BIT, 0x0100, 0x01}, + {IMX219_TOK_TERM, 0, 0} +}; + +static struct imx219_reg const imx219_1616x1216_30fps[] = { + {IMX219_8BIT, 0x3501, 0x7b}, + {IMX219_8BIT, 0x3502, 0x80}, + {IMX219_8BIT, 0x3708, 0xe2}, + {IMX219_8BIT, 0x3709, 0xc3}, + {IMX219_8BIT, 0x3800, 0x00}, /*{3800,3801} Array X start*/ + {IMX219_8BIT, 0x3801, 0x08}, /* 04 //{3800,3801} Array X start*/ + {IMX219_8BIT, 0x3802, 0x00}, /*{3802,3803} Array Y start*/ + {IMX219_8BIT, 0x3803, 0x04}, /* 00 //{3802,3803} Array Y start*/ + {IMX219_8BIT, 0x3804, 0x0a}, /*{3804,3805} Array X end*/ + {IMX219_8BIT, 0x3805, 0x37}, /* 3b //{3804,3805} Array X end*/ + {IMX219_8BIT, 0x3806, 0x07}, /*{3806,3807} Array Y end*/ + {IMX219_8BIT, 0x3807, 0x9f}, /* a3 //{3806,3807} Array Y end*/ + {IMX219_8BIT, 0x3808, 0x06}, /*{3808,3809} Final output H size*/ + {IMX219_8BIT, 0x3809, 0x50}, /*{3808,3809} Final output H size*/ + {IMX219_8BIT, 0x380a, 0x04}, /*{380a,380b} Final output V size*/ + {IMX219_8BIT, 0x380b, 0xc0}, /*{380a,380b} Final output V size*/ + {IMX219_8BIT, 0x380c, 0x0a}, /*{380c,380d} HTS*/ + {IMX219_8BIT, 0x380d, 0x80}, /*{380c,380d} HTS*/ + {IMX219_8BIT, 0x380e, 0x07}, /*{380e,380f} VTS*/ + {IMX219_8BIT, 0x380f, 0xc0}, /* bc //{380e,380f} VTS*/ + {IMX219_8BIT, 0x3810, 0x00}, /*{3810,3811} windowing X offset*/ + {IMX219_8BIT, 0x3811, 0x10}, /*{3810,3811} windowing X offset*/ + {IMX219_8BIT, 0x3812, 0x00}, /*{3812,3813} windowing Y offset*/ + {IMX219_8BIT, 0x3813, 0x06}, /*{3812,3813} windowing Y offset*/ + {IMX219_8BIT, 0x3814, 0x11}, /*X subsample control*/ + {IMX219_8BIT, 0x3815, 0x11}, /*Y subsample control*/ + {IMX219_8BIT, 0x3820, 0x00}, /*FLIP/Binnning control*/ + {IMX219_8BIT, 0x3821, 0x1e}, /*MIRROR control*/ + {IMX219_8BIT, 0x5002, 0x00}, + {IMX219_8BIT, 0x5041, 0x84}, + {IMX219_8BIT, 0x0100, 0x01}, + {IMX219_TOK_TERM, 0, 0} +}; + + +/* + * 1940x1096 30fps 8.8ms VBlanking 2lane 10bit (Scaling) + */ +static struct imx219_reg const imx219_1940x1096[] = { + {IMX219_8BIT, 0x3501, 0x7b}, + {IMX219_8BIT, 0x3502, 0x00}, + {IMX219_8BIT, 0x3708, 0xe2}, + {IMX219_8BIT, 0x3709, 0xc3}, + {IMX219_8BIT, 0x3803, 0xf0}, + {IMX219_8BIT, 0x3806, 0x06}, + {IMX219_8BIT, 0x3807, 0xa7}, + {IMX219_8BIT, 0x3808, 0x07}, + {IMX219_8BIT, 0x3809, 0x94}, + {IMX219_8BIT, 0x380a, 0x04}, + {IMX219_8BIT, 0x380b, 0x48}, + {IMX219_8BIT, 0x380c, 0x0a}, + {IMX219_8BIT, 0x380d, 0x80}, + {IMX219_8BIT, 0x380e, 0x07}, + {IMX219_8BIT, 0x380f, 0xc0}, + {IMX219_8BIT, 0x3811, 0x02}, + {IMX219_8BIT, 0x3813, 0x02}, + {IMX219_8BIT, 0x3814, 0x11}, + {IMX219_8BIT, 0x3815, 0x11}, + {IMX219_8BIT, 0x3820, 0x00}, + {IMX219_8BIT, 0x3821, 0x1e}, + {IMX219_8BIT, 0x5002, 0x80}, + {IMX219_8BIT, 0x0100, 0x01}, + {IMX219_TOK_TERM, 0, 0} +}; + +static struct imx219_reg const imx219_2592x1456_30fps[] = { + {IMX219_8BIT, 0x3501, 0x7b}, + {IMX219_8BIT, 0x3502, 0x00}, + {IMX219_8BIT, 0x3708, 0xe2}, + {IMX219_8BIT, 0x3709, 0xc3}, + {IMX219_8BIT, 0x3800, 0x00}, + {IMX219_8BIT, 0x3801, 0x00}, + {IMX219_8BIT, 0x3802, 0x00}, + {IMX219_8BIT, 0x3803, 0xf0}, + {IMX219_8BIT, 0x3804, 0x0a}, + {IMX219_8BIT, 0x3805, 0x3f}, + {IMX219_8BIT, 0x3806, 0x06}, + {IMX219_8BIT, 0x3807, 0xa4}, + {IMX219_8BIT, 0x3808, 0x0a}, + {IMX219_8BIT, 0x3809, 0x20}, + {IMX219_8BIT, 0x380a, 0x05}, + {IMX219_8BIT, 0x380b, 0xb0}, + {IMX219_8BIT, 0x380c, 0x0a}, + {IMX219_8BIT, 0x380d, 0x80}, + {IMX219_8BIT, 0x380e, 0x07}, + {IMX219_8BIT, 0x380f, 0xc0}, + {IMX219_8BIT, 0x3811, 0x10}, + {IMX219_8BIT, 0x3813, 0x00}, + {IMX219_8BIT, 0x3814, 0x11}, + {IMX219_8BIT, 0x3815, 0x11}, + {IMX219_8BIT, 0x3820, 0x00}, + {IMX219_8BIT, 0x3821, 0x1e}, + {IMX219_8BIT, 0x5002, 0x00}, + {IMX219_TOK_TERM, 0, 0} +}; + +static struct imx219_reg const imx219_2576x1456_30fps[] = { + {IMX219_8BIT, 0x3501, 0x7b}, + {IMX219_8BIT, 0x3502, 0x00}, + {IMX219_8BIT, 0x3708, 0xe2}, + {IMX219_8BIT, 0x3709, 0xc3}, + {IMX219_8BIT, 0x3800, 0x00}, + {IMX219_8BIT, 0x3801, 0x00}, + {IMX219_8BIT, 0x3802, 0x00}, + {IMX219_8BIT, 0x3803, 0xf0}, + {IMX219_8BIT, 0x3804, 0x0a}, + {IMX219_8BIT, 0x3805, 0x3f}, + {IMX219_8BIT, 0x3806, 0x06}, + {IMX219_8BIT, 0x3807, 0xa4}, + {IMX219_8BIT, 0x3808, 0x0a}, + {IMX219_8BIT, 0x3809, 0x10}, + {IMX219_8BIT, 0x380a, 0x05}, + {IMX219_8BIT, 0x380b, 0xb0}, + {IMX219_8BIT, 0x380c, 0x0a}, + {IMX219_8BIT, 0x380d, 0x80}, + {IMX219_8BIT, 0x380e, 0x07}, + {IMX219_8BIT, 0x380f, 0xc0}, + {IMX219_8BIT, 0x3811, 0x18}, + {IMX219_8BIT, 0x3813, 0x00}, + {IMX219_8BIT, 0x3814, 0x11}, + {IMX219_8BIT, 0x3815, 0x11}, + {IMX219_8BIT, 0x3820, 0x00}, + {IMX219_8BIT, 0x3821, 0x1e}, + {IMX219_8BIT, 0x5002, 0x00}, + {IMX219_TOK_TERM, 0, 0} +}; + +/* + * 2592x1944 30fps 0.6ms VBlanking 2lane 10Bit + */ +static struct imx219_reg const imx219_2592x1944_30fps[] = { + {IMX219_8BIT, 0x3501, 0x7b}, + {IMX219_8BIT, 0x3502, 0x00}, + {IMX219_8BIT, 0x3708, 0xe2}, + {IMX219_8BIT, 0x3709, 0xc3}, + {IMX219_8BIT, 0x3803, 0x00}, + {IMX219_8BIT, 0x3806, 0x07}, + {IMX219_8BIT, 0x3807, 0xa3}, + {IMX219_8BIT, 0x3808, 0x0a}, + {IMX219_8BIT, 0x3809, 0x20}, + {IMX219_8BIT, 0x380a, 0x07}, + {IMX219_8BIT, 0x380b, 0x98}, + {IMX219_8BIT, 0x380c, 0x0a}, + {IMX219_8BIT, 0x380d, 0x80}, + {IMX219_8BIT, 0x380e, 0x07}, + {IMX219_8BIT, 0x380f, 0xc0}, + {IMX219_8BIT, 0x3811, 0x10}, + {IMX219_8BIT, 0x3813, 0x00}, + {IMX219_8BIT, 0x3814, 0x11}, + {IMX219_8BIT, 0x3815, 0x11}, + {IMX219_8BIT, 0x3820, 0x00}, + {IMX219_8BIT, 0x3821, 0x1e}, + {IMX219_8BIT, 0x5002, 0x00}, + {IMX219_8BIT, 0x0100, 0x01}, + {IMX219_TOK_TERM, 0, 0} +}; + +/* + * 11:9 Full FOV Output, expected FOV Res: 2346x1920 + * ISP Effect Res: 1408x1152 + * Sensor out: 1424x1168, DS From: 2380x1952 + * + * WA: Left Offset: 8, Hor scal: 64 + */ +static struct imx219_reg const imx219_1424x1168_30fps[] = { + {IMX219_8BIT, 0x3501, 0x3b}, /* long exposure[15:8] */ + {IMX219_8BIT, 0x3502, 0x80}, /* long exposure[7:0] */ + {IMX219_8BIT, 0x3708, 0xe2}, + {IMX219_8BIT, 0x3709, 0xc3}, + {IMX219_8BIT, 0x3800, 0x00}, /* TIMING_X_ADDR_START */ + {IMX219_8BIT, 0x3801, 0x50}, /* 80 */ + {IMX219_8BIT, 0x3802, 0x00}, /* TIMING_Y_ADDR_START */ + {IMX219_8BIT, 0x3803, 0x02}, /* 2 */ + {IMX219_8BIT, 0x3804, 0x09}, /* TIMING_X_ADDR_END */ + {IMX219_8BIT, 0x3805, 0xdd}, /* 2525 */ + {IMX219_8BIT, 0x3806, 0x07}, /* TIMING_Y_ADDR_END */ + {IMX219_8BIT, 0x3807, 0xa1}, /* 1953 */ + {IMX219_8BIT, 0x3808, 0x05}, /* TIMING_X_OUTPUT_SIZE */ + {IMX219_8BIT, 0x3809, 0x90}, /* 1424 */ + {IMX219_8BIT, 0x380a, 0x04}, /* TIMING_Y_OUTPUT_SIZE */ + {IMX219_8BIT, 0x380b, 0x90}, /* 1168 */ + {IMX219_8BIT, 0x380c, 0x0a}, /* TIMING_HTS */ + {IMX219_8BIT, 0x380d, 0x80}, + {IMX219_8BIT, 0x380e, 0x07}, /* TIMING_VTS */ + {IMX219_8BIT, 0x380f, 0xc0}, + {IMX219_8BIT, 0x3810, 0x00}, /* TIMING_ISP_X_WIN */ + {IMX219_8BIT, 0x3811, 0x02}, /* 2 */ + {IMX219_8BIT, 0x3812, 0x00}, /* TIMING_ISP_Y_WIN */ + {IMX219_8BIT, 0x3813, 0x00}, /* 0 */ + {IMX219_8BIT, 0x3814, 0x11}, /* TIME_X_INC */ + {IMX219_8BIT, 0x3815, 0x11}, /* TIME_Y_INC */ + {IMX219_8BIT, 0x3820, 0x00}, + {IMX219_8BIT, 0x3821, 0x1e}, + {IMX219_8BIT, 0x5002, 0x00}, + {IMX219_8BIT, 0x5041, 0x84}, /* scale is auto enabled */ + {IMX219_8BIT, 0x0100, 0x01}, + {IMX219_TOK_TERM, 0, 0} +}; + +/* + * 3:2 Full FOV Output, expected FOV Res: 2560x1706 + * ISP Effect Res: 720x480 + * Sensor out: 736x496, DS From 2616x1764 + */ +static struct imx219_reg const imx219_736x496_30fps[] = { + {IMX219_8BIT, 0x3501, 0x3b}, /* long exposure[15:8] */ + {IMX219_8BIT, 0x3502, 0x80}, /* long exposure[7:0] */ + {IMX219_8BIT, 0x3708, 0xe2}, + {IMX219_8BIT, 0x3709, 0xc3}, + {IMX219_8BIT, 0x3800, 0x00}, /* TIMING_X_ADDR_START */ + {IMX219_8BIT, 0x3801, 0x02}, /* 2 */ + {IMX219_8BIT, 0x3802, 0x00}, /* TIMING_Y_ADDR_START */ + {IMX219_8BIT, 0x3803, 0x62}, /* 98 */ + {IMX219_8BIT, 0x3804, 0x0a}, /* TIMING_X_ADDR_END */ + {IMX219_8BIT, 0x3805, 0x3b}, /* 2619 */ + {IMX219_8BIT, 0x3806, 0x07}, /* TIMING_Y_ADDR_END */ + {IMX219_8BIT, 0x3807, 0x43}, /* 1859 */ + {IMX219_8BIT, 0x3808, 0x02}, /* TIMING_X_OUTPUT_SIZE */ + {IMX219_8BIT, 0x3809, 0xe0}, /* 736 */ + {IMX219_8BIT, 0x380a, 0x01}, /* TIMING_Y_OUTPUT_SIZE */ + {IMX219_8BIT, 0x380b, 0xf0}, /* 496 */ + {IMX219_8BIT, 0x380c, 0x0a}, /* TIMING_HTS */ + {IMX219_8BIT, 0x380d, 0x80}, + {IMX219_8BIT, 0x380e, 0x07}, /* TIMING_VTS */ + {IMX219_8BIT, 0x380f, 0xc0}, + {IMX219_8BIT, 0x3810, 0x00}, /* TIMING_ISP_X_WIN */ + {IMX219_8BIT, 0x3811, 0x02}, /* 2 */ + {IMX219_8BIT, 0x3812, 0x00}, /* TIMING_ISP_Y_WIN */ + {IMX219_8BIT, 0x3813, 0x00}, /* 0 */ + {IMX219_8BIT, 0x3814, 0x11}, /* TIME_X_INC */ + {IMX219_8BIT, 0x3815, 0x11}, /* TIME_Y_INC */ + {IMX219_8BIT, 0x3820, 0x00}, + {IMX219_8BIT, 0x3821, 0x1e}, + {IMX219_8BIT, 0x5002, 0x00}, + {IMX219_8BIT, 0x5041, 0x84}, /* scale is auto enabled */ + {IMX219_8BIT, 0x0100, 0x01}, + {IMX219_TOK_TERM, 0, 0} +}; + +static struct imx219_reg const imx219_2576x1936_30fps[] = { + {IMX219_8BIT, 0x3501, 0x7b}, + {IMX219_8BIT, 0x3502, 0x00}, + {IMX219_8BIT, 0x3708, 0xe2}, + {IMX219_8BIT, 0x3709, 0xc3}, + {IMX219_8BIT, 0x3803, 0x00}, + {IMX219_8BIT, 0x3806, 0x07}, + {IMX219_8BIT, 0x3807, 0xa3}, + {IMX219_8BIT, 0x3808, 0x0a}, + {IMX219_8BIT, 0x3809, 0x10}, + {IMX219_8BIT, 0x380a, 0x07}, + {IMX219_8BIT, 0x380b, 0x90}, + {IMX219_8BIT, 0x380c, 0x0a}, + {IMX219_8BIT, 0x380d, 0x80}, + {IMX219_8BIT, 0x380e, 0x07}, + {IMX219_8BIT, 0x380f, 0xc0}, + {IMX219_8BIT, 0x3811, 0x18}, + {IMX219_8BIT, 0x3813, 0x00}, + {IMX219_8BIT, 0x3814, 0x11}, + {IMX219_8BIT, 0x3815, 0x11}, + {IMX219_8BIT, 0x3820, 0x00}, + {IMX219_8BIT, 0x3821, 0x1e}, + {IMX219_8BIT, 0x5002, 0x00}, + {IMX219_8BIT, 0x0100, 0x01}, + {IMX219_TOK_TERM, 0, 0} +}; + +struct imx219_resolution imx219_res_preview[] = { + { + .desc = "imx219_736x496_30fps", + .width = 736, + .height = 496, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = imx219_736x496_30fps, + }, + { + .desc = "imx219_1616x1216_30fps", + .width = 1616, + .height = 1216, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = imx219_1616x1216_30fps, + }, + { + .desc = "imx219_5M_30fps", + .width = 2576, + .height = 1456, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = imx219_2576x1456_30fps, + }, + { + .desc = "imx219_5M_30fps", + .width = 2576, + .height = 1936, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = imx219_2576x1936_30fps, + }, +}; +#define N_RES_PREVIEW (ARRAY_SIZE(imx219_res_preview)) + +struct imx219_resolution imx219_res_still[] = { + { + .desc = "imx219_736x496_30fps", + .width = 736, + .height = 496, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = imx219_736x496_30fps, + }, + { + .desc = "imx219_1424x1168_30fps", + .width = 1424, + .height = 1168, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = imx219_1424x1168_30fps, + }, + { + .desc = "imx219_1616x1216_30fps", + .width = 1616, + .height = 1216, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = imx219_1616x1216_30fps, + }, + { + .desc = "imx219_5M_30fps", + .width = 2592, + .height = 1456, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = imx219_2592x1456_30fps, + }, + { + .desc = "imx219_5M_30fps", + .width = 2592, + .height = 1944, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = imx219_2592x1944_30fps, + }, +}; +#define N_RES_STILL (ARRAY_SIZE(imx219_res_still)) + +struct imx219_resolution imx219_res_video[] = { + { + .desc = "imx219_736x496_30fps", + .width = 736, + .height = 496, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 1, + .regs = imx219_736x496, + }, + { + .desc = "imx219_336x256_30fps", + .width = 336, + .height = 256, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 1, + .regs = imx219_336x256, + }, + { + .desc = "imx219_368x304_30fps", + .width = 368, + .height = 304, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 1, + .regs = imx219_368x304, + }, + { + .desc = "imx219_192x160_30fps", + .width = 192, + .height = 160, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 1, + .regs = imx219_192x160, + }, + { + .desc = "imx219_1296x736_30fps", + .width = 1296, + .height = 736, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 0, + .regs = imx219_1296x736, + }, + { + .desc = "imx219_1296x976_30fps", + .width = 1296, + .height = 976, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 0, + .regs = imx219_1296x976, + }, + { + .desc = "imx219_1636P_30fps", + .width = 1636, + .height = 1096, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = imx219_1636p_30fps, + }, + { + .desc = "imx219_1080P_30fps", + .width = 1940, + .height = 1096, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = imx219_1940x1096, + }, + { + .desc = "imx219_5M_30fps", + .width = 2592, + .height = 1456, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = imx219_2592x1456_30fps, + }, + { + .desc = "imx219_5M_30fps", + .width = 2592, + .height = 1944, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = imx219_2592x1944_30fps, + }, +}; + +#define N_RES_VIDEO (ARRAY_SIZE(imx219_res_video)) + +static struct imx219_resolution *imx219_res = imx219_res_preview; +static unsigned long N_RES = N_RES_PREVIEW; +#endif +#endif diff --git a/drivers/IMX334/CMakeLists.txt b/drivers/IMX334/CMakeLists.txt new file mode 100644 index 0000000..3f7644b --- /dev/null +++ b/drivers/IMX334/CMakeLists.txt @@ -0,0 +1,35 @@ +cmake_minimum_required(VERSION 3.1.0) + +# define module name & interface version +set (module imx334) +string(TOUPPER ${module} SENSOR_NAME) + +# we want to compile all .c files as default +file(GLOB libsources ${SENSOR_NAME}.c ) + +# set public headers, these get installed +#file(GLOB pub_headers include/*.h) + +#include_directories() + +add_library(${module} SHARED ${libsources}) + +add_custom_target(${module}.drv + ALL + COMMAND ${CMAKE_COMMAND} -E copy lib${module}.so ${LIB_ROOT}/rootfs/usr/share/vi/tuningtool/bin/${module}.drv + COMMAND ${CMAKE_COMMAND} -E copy lib${module}.so ${LIB_ROOT}/rootfs/usr/lib/lib${module}.so + COMMAND ${CMAKE_COMMAND} -E make_directory ${LIB_ROOT}/rootfs/usr/share/vi/isp/test/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/*.xml ${LIB_ROOT}/rootfs/usr/share/vi/isp/test/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/${SENSOR_NAME}*.txt ${LIB_ROOT}/rootfs/usr/share/vi/isp/test/ + #COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/*.json ${LIB_ROOT}/rootfs/usr/share/vi/isp/test/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/*.xml ${LIB_ROOT}/rootfs/usr/share/vi/tuningtool/bin/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/${SENSOR_NAME}*.txt ${LIB_ROOT}/rootfs/usr/share/vi/tuningtool/bin/ + #COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/*.json ${LIB_ROOT}/rootfs/usr/share/vi/tuningtool/bin/ + DEPENDS ${module} + COMMENT "Copying ${module} driver module" + ) + +#install(FILES ${LIB_ROOT}/${CMAKE_BUILD_TYPE}/lib/lib${module}.so.${${module}_INTERFACE_CURRENT} +# DESTINATION ${CMAKE_INSTALL_PREFIX}/bin +# RENAME ${module}.drv +# ) diff --git a/drivers/IMX334/IMX334.c b/drivers/IMX334/IMX334.c new file mode 100644 index 0000000..dcbd44a --- /dev/null +++ b/drivers/IMX334/IMX334.c @@ -0,0 +1,2044 @@ +/******************************************************************************\ +|* Copyright (c) 2020 by VeriSilicon Holdings Co., Ltd. ("VeriSilicon") *| +|* All Rights Reserved. *| +|* *| +|* The material in this file is confidential and contains trade secrets of *| +|* of VeriSilicon. This is proprietary information owned or licensed by *| +|* VeriSilicon. No part of this work may be disclosed, reproduced, copied, *| +|* transmitted, or used in any way for any purpose, without the express *| +|* written permission of VeriSilicon. *| +|* *| +\******************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "IMX334_priv.h" + +CREATE_TRACER( IMX334_INFO , "IMX334: ", INFO, 1); +CREATE_TRACER( IMX334_WARN , "IMX334: ", WARNING, 1); +CREATE_TRACER( IMX334_ERROR, "IMX334: ", ERROR, 1); +CREATE_TRACER( IMX334_DEBUG, "IMX334: ", INFO, 1); +CREATE_TRACER( IMX334_REG_INFO , "IMX334: ", INFO, 1); +CREATE_TRACER( IMX334_REG_DEBUG, "IMX334: ", INFO, 1); + +#ifdef SUBDEV_V4L2 +#include +#include +#include +#include +#include +#undef TRACE +#define TRACE(x, ...) +#endif + +#define IMX334_MIN_GAIN_STEP ( 1.0f/16.0f ) /**< min gain step size used by GUI (hardware min = 1/16; 1/16..32/16 depending on actual gain ) */ +#define IMX334_MAX_GAIN_AEC ( 32.0f ) /**< max. gain used by the AEC (arbitrarily chosen, hardware limit = 62.0, driver limit = 32.0 ) */ +#define IMX334_PLL_PCLK 74250000 +#define IMX334_HMAX 0xaec +#define IMX334_VMAX 0xac4 + +extern const IsiRegDescription_t IMX334_g_aRegDescription[]; +//const IsiSensorCaps_t IMX334_g_IsiSensorDefaultConfig; + +/***************************************************************************** + *Sensor Info +*****************************************************************************/ +static const char SensorName[16] = "IMX334"; + +static struct vvcam_mode_info pIMX334_mode_info[] = { + { + .index = 0, + .width = 3864, + .height = 2180, + .fps = 30, + .hdr_mode = SENSOR_MODE_LINEAR, + .bit_width = 12, + .bayer_pattern = 3, + .mipi_phy_freq = 800, //mbps + .mipi_line_num = 4, + .preg_data = (void *)"imx334 3864x2180", + }, + /* + { + .index = 0, + .width = 3840, + .height = 2160, + .fps = 30, + .hdr_mode = SENSOR_MODE_LINEAR, + .bit_width = 12, + .bayer_pattern = 3, + .mipi_phy_freq = 900, //mbps + .mipi_line_num = 4, + .preg_data = (void *)"imx334 3840x2160", + }, + */ + /* + { + .index = 1, + .width = 3840, + .height = 2160, + .fps = 30, + .hdr_mode = SENSOR_MODE_HDR_STITCH, + .stitching_mode = SENSOR_STITCHING_3DOL, + .bit_width = 12, + .bayer_pattern = BAYER_GBRG, + .mipi_phy_freq = 800, //mbps + .mipi_line_num = 4, + .preg_data = (void *)"imx334 3840x2160", + }, + { + .index = 2, + .width = 1280, + .height = 720, + .fps = 60, + .hdr_mode = SENSOR_MODE_LINEAR, + .bit_width = 10, + .bayer_pattern = BAYER_GBRG, + .mipi_phy_freq = 600, //mbps + .mipi_line_num = 4, + .preg_data = (void *)"imx334 1920x1080", + } + */ +}; + +/* +static const uint32_t SensorDrvSupportResoluton[] = { + ISI_RES_TV720P, + ISI_RES_TV1080P +}; +*/ + +static RESULT IMX334_IsiSensorSetPowerIss(IsiSensorHandle_t handle, bool_t on) { + RESULT result = RET_SUCCESS; + + int ret = 0; + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + if (pIMX334Ctx == NULL || pIMX334Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pIMX334Ctx->IsiCtx.HalHandle; + + TRACE(IMX334_INFO, "%s (enter)\n", __func__); + + int32_t enable = on; + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_POWER, &enable); + if (ret != 0) { + TRACE(IMX334_ERROR, "%s: sensor set power error!\n", __func__); + return (RET_FAILURE); + } + + TRACE(IMX334_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT IMX334_IsiResetSensorIss(IsiSensorHandle_t handle) { + RESULT result = RET_SUCCESS; + int ret = 0; + + TRACE(IMX334_INFO, "%s (enter)\n", __func__); + + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + if (pIMX334Ctx == NULL || pIMX334Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pIMX334Ctx->IsiCtx.HalHandle; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_RESET, NULL); + if (ret != 0) { + TRACE(IMX334_ERROR, "%s: sensor reset error!\n", __func__); + return (RET_FAILURE); + } + + sleep(0.01); + + TRACE(IMX334_INFO, "%s (exit)\n", __func__); + return (result); +} + +#ifdef SUBDEV_CHAR +static RESULT IMX334_IsiSensorSetClkIss(IsiSensorHandle_t handle, uint32_t clk) { + RESULT result = RET_SUCCESS; + int32_t ret = 0; + + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + if (pIMX334Ctx == NULL || pIMX334Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pIMX334Ctx->IsiCtx.HalHandle; + + TRACE(IMX334_INFO, "%s (enter)\n", __func__); + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_CLK, &clk); + if (ret != 0) { + TRACE(IMX334_ERROR, "%s: sensor set clk error!\n", __func__); + return (RET_FAILURE); + } + + TRACE(IMX334_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT IMX334_IsiSensorGetClkIss(IsiSensorHandle_t handle, uint32_t * pclk) { + RESULT result = RET_SUCCESS; + int ret = 0; + + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + if (pIMX334Ctx == NULL || pIMX334Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pIMX334Ctx->IsiCtx.HalHandle; + + TRACE(IMX334_INFO, "%s (enter)\n", __func__); + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_CLK, pclk); + if (ret != 0) { + TRACE(IMX334_ERROR, "%s: sensor get clk error!\n", __func__); + return (RET_FAILURE); + } + + TRACE(IMX334_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT IMX334_IsiConfigSensorSCCBIss(IsiSensorHandle_t handle) +{ + RESULT result = RET_SUCCESS; + int ret = 0; + TRACE(IMX334_INFO, "%s (enter)\n", __func__); + + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + if (pIMX334Ctx == NULL || pIMX334Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pIMX334Ctx->IsiCtx.HalHandle; + + static const IsiSccbInfo_t SensorSccbInfo = { + .slave_addr = (0x34 >> 1), + .addr_byte = 2, + .data_byte = 1, + }; + + struct vvcam_sccb_cfg_s sensor_sccb_config; + sensor_sccb_config.slave_addr = SensorSccbInfo.slave_addr; + sensor_sccb_config.addr_byte = SensorSccbInfo.addr_byte; + sensor_sccb_config.data_byte = SensorSccbInfo.data_byte; + + ret = + ioctl(pHalCtx->sensor_fd, VVSENSORIOC_SENSOR_SCCB_CFG, + &sensor_sccb_config); + if (ret != 0) { + TRACE(IMX334_ERROR, "%s: sensor config sccb info error!\n", + __func__); + return (RET_FAILURE); + } + + TRACE(IMX334_INFO, "%s (exit) result = %d\n", __func__, result); + return (result); +} +#endif + +static RESULT IMX334_IsiRegisterReadIss (IsiSensorHandle_t handle, const uint32_t address, uint32_t * p_value) { + RESULT result = RET_SUCCESS; + int32_t ret = 0; + TRACE(IMX334_INFO, "%s (enter)\n", __func__); + + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + if (pIMX334Ctx == NULL || pIMX334Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pIMX334Ctx->IsiCtx.HalHandle; + + struct vvcam_sccb_data sccb_data; + sccb_data.addr = address; + sccb_data.data = 0; + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_READ_REG, &sccb_data); + if (ret != 0) { + TRACE(IMX334_ERROR, "%s: read sensor register error!\n", + __func__); + return (RET_FAILURE); + } + + *p_value = sccb_data.data; + + TRACE(IMX334_INFO, "%s (exit) result = %d\n", __func__, result); + return (result); +} + +static RESULT IMX334_IsiRegisterWriteIss(IsiSensorHandle_t handle, const uint32_t address, const uint32_t value) { + RESULT result = RET_SUCCESS; + int ret = 0; + TRACE(IMX334_INFO, "%s (enter)\n", __func__); + + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + if (pIMX334Ctx == NULL || pIMX334Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pIMX334Ctx->IsiCtx.HalHandle; + + struct vvcam_sccb_data sccb_data; + sccb_data.addr = address; + sccb_data.data = value; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_WRITE_REG, &sccb_data); + if (ret != 0) { + TRACE(IMX334_ERROR, "%s: write sensor register error!\n", + __func__); + return (RET_FAILURE); + } + + TRACE(IMX334_INFO, "%s (exit) result = %d\n", __func__, result); + return (result); +} + +static RESULT IMX334_IsiQuerySensorSupportIss(HalHandle_t HalHandle, vvcam_mode_info_array_t *pSensorSupportInfo) +{ + int ret = 0; + struct vvcam_mode_info_array *psensor_mode_info_arry; + + HalContext_t *pHalCtx = HalHandle; + if ( pHalCtx == NULL ) { + return RET_NULL_POINTER; + } + + psensor_mode_info_arry = pSensorSupportInfo; + psensor_mode_info_arry->count = sizeof(pIMX334_mode_info) / sizeof(struct vvcam_mode_info); + memcpy(psensor_mode_info_arry->modes, pIMX334_mode_info, sizeof(pIMX334_mode_info)); + + TRACE(IMX334_INFO, "SensorQuery:\n"); + TRACE(IMX334_INFO, "*********************************\n"); + for(int i=0; icount; i++) + { + TRACE( IMX334_INFO, "Current Sensor Mode:\n"); + TRACE( IMX334_INFO, "Mode Index: %d \n",psensor_mode_info_arry->modes[i].index); + TRACE( IMX334_INFO, "Resolution: %d * %d\n",psensor_mode_info_arry->modes[i].width,psensor_mode_info_arry->modes[i].height); + TRACE( IMX334_INFO, "fps: %d \n",psensor_mode_info_arry->modes[i].fps); + TRACE( IMX334_INFO, "hdr_mode: %d \n",psensor_mode_info_arry->modes[i].hdr_mode); + TRACE( IMX334_INFO, "stitching_mode: %d \n",psensor_mode_info_arry->modes[i].stitching_mode); + TRACE( IMX334_INFO, "bit_width: %d \n",psensor_mode_info_arry->modes[i].bit_width); + TRACE( IMX334_INFO, "bayer_pattern: %d \n",psensor_mode_info_arry->modes[i].bayer_pattern); + TRACE( IMX334_INFO, "---------------------------------\n"); + } + TRACE(IMX334_INFO, "*********************************\n"); + return RET_SUCCESS; +} + +static RESULT IMX334_IsiQuerySensorIss(IsiSensorHandle_t handle, vvcam_mode_info_array_t *pSensorInfo) +{ + RESULT result = RET_SUCCESS; + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + if (pIMX334Ctx == NULL || pIMX334Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pIMX334Ctx->IsiCtx.HalHandle; + IMX334_IsiQuerySensorSupportIss(pHalCtx,pSensorInfo); + + return result; +} + +static RESULT IMX334_IsiGetSensorModeIss(IsiSensorHandle_t handle,void *mode) +{ + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + if (pIMX334Ctx == NULL) { + return (RET_WRONG_HANDLE); + } + memcpy(mode,&(pIMX334Ctx->SensorMode), sizeof(pIMX334Ctx->SensorMode)); + + return ( RET_SUCCESS ); +} + +static RESULT IMX334_IsiCreateSensorIss(IsiSensorInstanceConfig_t * pConfig) { + RESULT result = RET_SUCCESS; + IMX334_Context_t *pIMX334Ctx; + + TRACE(IMX334_INFO, "%s (enter)\n", __func__); + + if (!pConfig || !pConfig->pSensor) + return (RET_NULL_POINTER); + + pIMX334Ctx = (IMX334_Context_t *) malloc(sizeof(IMX334_Context_t)); + if (!pIMX334Ctx) { + TRACE(IMX334_ERROR, "%s: Can't allocate IMX334 context\n", + __func__); + return (RET_OUTOFMEM); + } + + MEMSET(pIMX334Ctx, 0, sizeof(IMX334_Context_t)); + + result = HalAddRef(pConfig->HalHandle); + if (result != RET_SUCCESS) { + free(pIMX334Ctx); + return (result); + } + + pIMX334Ctx->IsiCtx.HalHandle = pConfig->HalHandle; + pIMX334Ctx->IsiCtx.pSensor = pConfig->pSensor; + pIMX334Ctx->GroupHold = BOOL_FALSE; + pIMX334Ctx->OldGain = 1.0; + pIMX334Ctx->OldIntegrationTime = 0.01; + pIMX334Ctx->Configured = BOOL_FALSE; + pIMX334Ctx->Streaming = BOOL_FALSE; + pIMX334Ctx->TestPattern = BOOL_FALSE; + pIMX334Ctx->isAfpsRun = BOOL_FALSE; + pIMX334Ctx->SensorMode.index = pConfig->SensorModeIndex; + pConfig->hSensor = (IsiSensorHandle_t) pIMX334Ctx; +#ifdef SUBDEV_CHAR + struct vvcam_mode_info *SensorDefaultMode = NULL; + for (int i=0; i < sizeof(pIMX334_mode_info)/ sizeof(struct vvcam_mode_info); i++) + { + if (pIMX334_mode_info[i].index == pIMX334Ctx->SensorMode.index) + { + SensorDefaultMode = &(pIMX334_mode_info[i]); + break; + } + } + + if (SensorDefaultMode != NULL) + { + strcpy(pIMX334Ctx->SensorRegCfgFile, get_vi_config_path()); + switch(SensorDefaultMode->index) + { + case 0: + strcat(pIMX334Ctx->SensorRegCfgFile, + "IMX334_mipi4lane_3864_2180_raw12_800mbps_init.txt"); + break; + /* + case 1: //3Dol mode + strcat(pIMX334Ctx->SensorRegCfgFile, + "IMX334_mipi4lane_3840_2160_raw12_800mbps_3dol_init.txt"); + break; + */ + default: + break; + } + + if (access(pIMX334Ctx->SensorRegCfgFile, F_OK) == 0) { + pIMX334Ctx->KernelDriverFlag = 0; + memcpy(&(pIMX334Ctx->SensorMode),SensorDefaultMode,sizeof(struct vvcam_mode_info)); + } else { + TRACE(IMX334_ERROR, "%s, %d, load %s: error\n", __func__, __LINE__, pIMX334Ctx->SensorRegCfgFile); + return -1; + } + }else + { + pIMX334Ctx->KernelDriverFlag = 1; + } + + result = IMX334_IsiSensorSetPowerIss(pIMX334Ctx, BOOL_TRUE); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + + uint32_t SensorClkIn; + if (pIMX334Ctx->KernelDriverFlag) { + result = IMX334_IsiSensorGetClkIss(pIMX334Ctx, &SensorClkIn); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + } + + result = IMX334_IsiSensorSetClkIss(pIMX334Ctx, SensorClkIn); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + + result = IMX334_IsiResetSensorIss(pIMX334Ctx); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + + if (!pIMX334Ctx->KernelDriverFlag) { + result = IMX334_IsiConfigSensorSCCBIss(pIMX334Ctx); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + } + + pIMX334Ctx->pattern = 3; +#endif + +#ifdef SUBDEV_V4L2 + pIMX334Ctx->pattern = 3; + pIMX334Ctx->subdev = HalGetFdHandle(pConfig->HalHandle, HAL_MODULE_SENSOR); + pIMX334Ctx->KernelDriverFlag = 1; +#endif + TRACE(IMX334_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT IMX334_IsiGetRegCfgIss(const char *registerFileName, + struct vvcam_sccb_array *arry) +{ + if (NULL == registerFileName) { + TRACE(IMX334_ERROR, "%s:registerFileName is NULL\n", __func__); + return (RET_NULL_POINTER); + } +#ifdef SUBDEV_CHAR + FILE *fp = NULL; + fp = fopen(registerFileName, "rb"); + if (!fp) { + TRACE(IMX334_ERROR, "%s:load register file %s error!\n", + __func__, registerFileName); + return (RET_FAILURE); + } + + char LineBuf[512]; + uint32_t FileTotalLine = 0; + while (!feof(fp)) { + fgets(LineBuf, 512, fp); + FileTotalLine++; + } + + arry->sccb_data = + malloc(FileTotalLine * sizeof(struct vvcam_sccb_data)); + if (arry->sccb_data == NULL) { + TRACE(IMX334_ERROR, "%s:malloc failed NULL Point!\n", __func__, + registerFileName); + return (RET_FAILURE); + } + rewind(fp); + + arry->count = 0; + while (!feof(fp)) { + memset(LineBuf, 0, sizeof(LineBuf)); + fgets(LineBuf, 512, fp); + + int result = + sscanf(LineBuf, "0x%x 0x%x", + &(arry->sccb_data[arry->count].addr), + &(arry->sccb_data[arry->count].data)); + if (result != 2) + continue; + arry->count++; + + } +#endif + + return 0; +} + +#if 0 +static RESULT IMX334_IsiGetPicSize(uint32_t Resolution, uint32_t * pwidth, + uint32_t * pheight) +{ + switch (Resolution) { + case ISI_RES_TV1080P: + { + *pwidth = 1920; + *pheight = 1080; + break; + } + case ISI_RES_TV720P: + { + *pwidth = 1280; + *pheight = 720; + break; + } + default: + { + return (RET_NOTSUPP); + } + } + return (RET_SUCCESS); +} +#endif + +static RESULT IMX334_IsiInitSensorIss(IsiSensorHandle_t handle) { + RESULT result = RET_SUCCESS; + int ret = 0; + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + + HalContext_t *pHalCtx = (HalContext_t *) pIMX334Ctx->IsiCtx.HalHandle; + + TRACE(IMX334_INFO, "%s (enter)\n", __func__); + if (pIMX334Ctx == NULL) { + return (RET_WRONG_HANDLE); + } + if (pIMX334Ctx->KernelDriverFlag) { +#ifdef SUBDEV_CHAR + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_INIT, &(pIMX334Ctx->SensorMode)); + if (ret != 0) { + TRACE(IMX334_ERROR, "%s:sensor init error!\n", + __func__); + return (RET_FAILURE); + } + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_SENSOR_MODE, &(pIMX334Ctx->SensorMode)); + if (ret != 0) { + TRACE(IMX334_ERROR, "%s:sensor get mode info error!\n", + __func__); + return (RET_FAILURE); + } + + struct vvcam_ae_info_s ae_info; + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_AE_INFO, &ae_info); + if (ret != 0) { + TRACE(IMX334_ERROR, "%s:sensor get ae info error!\n", + __func__); + return (RET_FAILURE); + } + pIMX334Ctx->one_line_exp_time = IMX334_HMAX/IMX334_PLL_PCLK; + pIMX334Ctx->MaxIntegrationLine = ae_info.max_integration_time; + pIMX334Ctx->MinIntegrationLine = ae_info.min_integration_time; + pIMX334Ctx->gain_accuracy = ae_info.gain_accuracy; + pIMX334Ctx->AecMinGain = 1.0; + pIMX334Ctx->AecMaxGain = 36; + + pIMX334Ctx->MaxFps = pIMX334Ctx->SensorMode.fps; + pIMX334Ctx->MinFps = 1; + pIMX334Ctx->CurrFps = pIMX334Ctx->MaxFps; +#endif + +#ifdef SUBDEV_V4L2 + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_SENSOR_MODE, &(pIMX334Ctx->SensorMode)); + if (ret != 0) { + TRACE(IMX334_ERROR, "%s:sensor get mode info error!\n", + __func__); + return (RET_FAILURE); + } + pIMX334Ctx->one_line_exp_time = IMX334_HMAX/IMX334_PLL_PCLK; + pIMX334Ctx->FrameLengthLines = 0xac4; + pIMX334Ctx->CurFrameLengthLines = pIMX334Ctx->FrameLengthLines; + pIMX334Ctx->MaxIntegrationLine = pIMX334Ctx->CurFrameLengthLines - 3; + pIMX334Ctx->MinIntegrationLine = 1; + pIMX334Ctx->AecMaxGain = 24; + pIMX334Ctx->AecMinGain = 3; + pIMX334Ctx->CurrFps = pIMX334Ctx->MaxFps; + pIMX334Ctx->gain_accuracy = 1024; + + if (pIMX334Ctx->SensorMode.hdr_mode != SENSOR_MODE_LINEAR) + { + pIMX334Ctx->enableHdr = 1; + } +#endif + + } else { + struct vvcam_sccb_array arry; + result = IMX334_IsiGetRegCfgIss(pIMX334Ctx->SensorRegCfgFile, &arry); + if (result != 0) { + TRACE(IMX334_ERROR, + "%s:IMX334_IsiGetRegCfgIss error!\n", __func__); + return (RET_FAILURE); + } + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_WRITE_ARRAY, &arry); + if (ret != 0) { + TRACE(IMX334_ERROR, "%s:Sensor Write Reg arry error!\n", + __func__); + return (RET_FAILURE); + } + + switch(pIMX334Ctx->SensorMode.index) + { + case 0: + pIMX334Ctx->one_line_exp_time = IMX334_HMAX/IMX334_PLL_PCLK; + pIMX334Ctx->FrameLengthLines = 0xac4; + pIMX334Ctx->CurFrameLengthLines = pIMX334Ctx->FrameLengthLines; + pIMX334Ctx->MaxIntegrationLine = pIMX334Ctx->CurFrameLengthLines - 3; + pIMX334Ctx->MinIntegrationLine = 1; + pIMX334Ctx->AecMaxGain = 24; + pIMX334Ctx->AecMinGain = 3; + break; + case 1: + pIMX334Ctx->one_line_exp_time = IMX334_HMAX/IMX334_PLL_PCLK; + pIMX334Ctx->FrameLengthLines = 0xac4; + pIMX334Ctx->CurFrameLengthLines = pIMX334Ctx->FrameLengthLines; + pIMX334Ctx->MaxIntegrationLine = pIMX334Ctx->CurFrameLengthLines - 3; + pIMX334Ctx->MinIntegrationLine = 1; + pIMX334Ctx->AecMaxGain = 21; + pIMX334Ctx->AecMinGain = 3; + break; + default: + return ( RET_NOTAVAILABLE ); + break; + } + pIMX334Ctx->MaxFps = pIMX334Ctx->SensorMode.fps; + pIMX334Ctx->MinFps = 1; + pIMX334Ctx->CurrFps = pIMX334Ctx->MaxFps; + } + + + TRACE(IMX334_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT IMX334_IsiReleaseSensorIss(IsiSensorHandle_t handle) { + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(IMX334_INFO, "%s (enter)\n", __func__); + + if (pIMX334Ctx == NULL) + return (RET_WRONG_HANDLE); + + (void)IMX334_IsiSensorSetStreamingIss(pIMX334Ctx, BOOL_FALSE); + (void)IMX334_IsiSensorSetPowerIss(pIMX334Ctx, BOOL_FALSE); + (void)HalDelRef(pIMX334Ctx->IsiCtx.HalHandle); + + MEMSET(pIMX334Ctx, 0, sizeof(IMX334_Context_t)); + free(pIMX334Ctx); + TRACE(IMX334_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT IMX334_IsiGetCapsIss + (IsiSensorHandle_t handle, IsiSensorCaps_t * pIsiSensorCaps) { + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + + RESULT result = RET_SUCCESS; + + TRACE(IMX334_INFO, "%s (enter)\n", __func__); + + if (pIMX334Ctx == NULL) + return (RET_WRONG_HANDLE); + + if (pIsiSensorCaps == NULL) { + return (RET_NULL_POINTER); + } else { + pIsiSensorCaps->BusWidth = 12;//ISI_BUSWIDTH_12BIT; + pIsiSensorCaps->Mode = ISI_MODE_BAYER; + pIsiSensorCaps->FieldSelection = ISI_FIELDSEL_BOTH; + pIsiSensorCaps->YCSequence = ISI_YCSEQ_YCBYCR; // ISI_YCSEQ_YCRYCB;//ISI_YCSEQ_YCBYCR; /**< only Bayer supported, will not be evaluated */ + pIsiSensorCaps->Conv422 = ISI_CONV422_NOCOSITED; //ISI_CONV422_INTER;//ISI_CONV422_NOCOSITED; + pIsiSensorCaps->BPat = pIMX334Ctx->pattern; + pIsiSensorCaps->HPol = ISI_HPOL_REFPOS; + pIsiSensorCaps->VPol = ISI_VPOL_NEG; //ISI_VPOL_POS;//ISI_VPOL_NEG; + pIsiSensorCaps->Edge = ISI_EDGE_RISING; //ISI_EDGE_FALLING;//ISI_EDGE_RISING; + //pIsiSensorCaps->Bls = ISI_BLS_OFF; + //pIsiSensorCaps->Gamma = ISI_GAMMA_OFF; + //pIsiSensorCaps->CConv = ISI_CCONV_OFF; + + pIsiSensorCaps->Resolution = pIMX334Ctx->Resolution; //( ISI_RES_TV1080P24 | ISI_RES_TV1080P20 | ISI_RES_TV1080P15 | ISI_RES_TV1080P6 + + //pIsiSensorCaps->BLC = (ISI_BLC_AUTO | ISI_BLC_OFF); + //pIsiSensorCaps->AGC = ISI_AGC_OFF; // ( ISI_AGC_AUTO | ISI_AGC_OFF ); + //pIsiSensorCaps->AWB = ISI_AWB_OFF; // ( ISI_AWB_AUTO | ISI_AWB_OFF ); + //pIsiSensorCaps->AEC = (ISI_AEC_OFF); // ISI_AEC_AUTO | ISI_AEC_OFF ); + //pIsiSensorCaps->DPCC = (ISI_DPCC_AUTO | ISI_DPCC_OFF); + + //pIsiSensorCaps->DwnSz = ISI_DWNSZ_SUBSMPL; + /* + pIsiSensorCaps->CieProfile = (ISI_CIEPROF_A + | ISI_CIEPROF_D50 + | ISI_CIEPROF_D65 + | ISI_CIEPROF_D75 + | ISI_CIEPROF_F2 + | ISI_CIEPROF_F11); + */ + pIsiSensorCaps->SmiaMode = ISI_SMIA_OFF; + pIsiSensorCaps->MipiMode = ISI_MIPI_OFF; //= ISI_MIPI_MODE_RAW_10; + pIsiSensorCaps->MipiLanes = ISI_MIPI_4LANES; + //pIsiSensorCaps->AfpsResolutions = ISI_AFPS_NOTSUPP; //(ISI_RES_TV1080P15); //ISI_AFPS_NOTSUPP; //( ISI_RES_TV1080P24 | ISI_RES_TV1080P20 | ISI_RES_TV1080P15 | ISI_RES_TV1080P6); + //pIsiSensorCaps->enableHdr = pIMX334Ctx->enableHdr; + } + + TRACE(IMX334_INFO, "%s (exit)\n", __func__); + return (result); +} +/* +const IsiSensorCaps_t IMX334_g_IsiSensorDefaultConfig = { + ISI_BUSWIDTH_12BIT, // BusWidth + ISI_MODE_BAYER, // Mode + ISI_FIELDSEL_BOTH, // FieldSel + ISI_YCSEQ_YCBYCR, //ISI_YCSEQ_YCRYCB, //ISI_YCSEQ_YCBYCR, // YCSeq + ISI_CONV422_NOCOSITED, //ISI_CONV422_INTER, //ISI_CONV422_NOCOSITED, // Conv422 + ISI_BPAT_BGBGGRGR, + ISI_HPOL_REFPOS, // HPol + ISI_VPOL_NEG, //ISI_VPOL_POS, //ISI_VPOL_NEG, // VPol + ISI_EDGE_RISING, //ISI_EDGE_FALLING, //ISI_EDGE_RISING, // Edge + ISI_BLS_OFF, // Bls + ISI_GAMMA_OFF, // Gamma + ISI_CCONV_OFF, // CConv + ISI_RES_TV1080P, //ISI_RES_TV1080P24, // Res + ISI_DWNSZ_SUBSMPL, // DwnSz + ISI_BLC_AUTO, // BLC + ISI_AGC_OFF, //ISI_AGC_OFF, // AGC + ISI_AWB_OFF, //ISI_AWB_OFF, // AWB + ISI_AEC_OFF, //ISI_AEC_OFF, // AEC + ISI_DPCC_OFF, // DPCC + ISI_CIEPROF_F11, // CieProfile, this is also used as start profile for AWB (if not altered by menu settings) + ISI_SMIA_OFF, // SmiaMode + ISI_MIPI_OFF, //ISI_MIPI_MODE_RAW_10, // MipiMode + ISI_MIPI_4LANES, + ISI_AFPS_NOTSUPP, //ISI_RES_TV1080P15, // ISI_AFPS_NOTSUPP(ISI_AFPS_NOTSUPP | ISI_RES_TV1080P6) + //( ISI_AFPS_NOTSUPP | ISI_RES_TV1080P24 | ISI_RES_TV1080P20 | ISI_RES_TV1080P15 ) // AfpsResolutions + 0, +}; +*/ + +static RESULT IMX334_AecSetModeParameters + (IMX334_Context_t * pIMX334Ctx, const IsiSensorConfig_t * pConfig) { + RESULT result = RET_SUCCESS; + TRACE(IMX334_INFO, "%s%s: (enter)\n", __func__, + pIMX334Ctx->isAfpsRun ? "(AFPS)" : ""); + + pIMX334Ctx->AecIntegrationTimeIncrement = pIMX334Ctx->one_line_exp_time; + pIMX334Ctx->AecMinIntegrationTime = 0.001; + pIMX334Ctx->AecMaxIntegrationTime = 0.033; + + TRACE(IMX334_DEBUG, "%s%s: AecMaxIntegrationTime = %f \n", __func__, + pIMX334Ctx->isAfpsRun ? "(AFPS)" : "", + pIMX334Ctx->AecMaxIntegrationTime); + + pIMX334Ctx->AecGainIncrement = IMX334_MIN_GAIN_STEP; + + //reflects the state of the sensor registers, must equal default settings + pIMX334Ctx->AecCurGain = pIMX334Ctx->AecMinGain; + pIMX334Ctx->AecCurIntegrationTime = 0.0f; + pIMX334Ctx->OldGain = 0; + pIMX334Ctx->OldIntegrationTime = 0; + + TRACE(IMX334_INFO, "%s%s: (exit)\n", __func__, + pIMX334Ctx->isAfpsRun ? "(AFPS)" : ""); + + return (result); +} + +#ifdef SUBDEV_V4L2 +RESULT IMX334_Private_SetFormat(IsiSensorHandle_t handle, int width, int height, bool hdrEnable) +{ + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + TRACE(IMX334_INFO, "%s: %d %d %d\n", __func__, width, height, hdrEnable); + + ioctl(pIMX334Ctx->subdev, VVSENSORIOC_S_HDR_MODE, &hdrEnable); + + struct v4l2_subdev_format format; + format.format.width = width; + format.format.height = height; + format.which = V4L2_SUBDEV_FORMAT_ACTIVE; + format.pad = 0; + int rc = ioctl(pIMX334Ctx->subdev, VIDIOC_SUBDEV_S_FMT, &format); + return rc == 0 ? RET_SUCCESS : RET_FAILURE; +} +#endif + +static RESULT IMX334_IsiSetupSensorIss + (IsiSensorHandle_t handle, const IsiSensorConfig_t * pConfig) { + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + RESULT result = RET_SUCCESS; + + TRACE(IMX334_INFO, "%s (enter)\n", __func__); + + if (!pIMX334Ctx) { + TRACE(IMX334_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pConfig) { + TRACE(IMX334_ERROR, + "%s: Invalid configuration (NULL pointer detected)\n", + __func__); + return (RET_NULL_POINTER); + } + + if (pIMX334Ctx->Streaming != BOOL_FALSE) { + return RET_WRONG_STATE; + } + + memcpy(&pIMX334Ctx->Config, pConfig, sizeof(IsiSensorConfig_t)); + + /* 1.) SW reset of image sensor (via I2C register interface) be careful, bits 6..0 are reserved, reset bit is not sticky */ + TRACE(IMX334_DEBUG, "%s: IMX334 System-Reset executed\n", __func__); + osSleep(100); + + result = IMX334_AecSetModeParameters(pIMX334Ctx, pConfig); + if (result != RET_SUCCESS) { + TRACE(IMX334_ERROR, "%s: SetupOutputWindow failed.\n", + __func__); + return (result); + } +#ifdef SUBDEV_V4L2 + IMX334_Private_SetFormat(pIMX334Ctx, + pIMX334Ctx->SensorMode.width, + pIMX334Ctx->SensorMode.height, + pIMX334Ctx->SensorMode.hdr_mode); +#endif + + pIMX334Ctx->Configured = BOOL_TRUE; + TRACE(IMX334_INFO, "%s: (exit)\n", __func__); + return 0; +} +/* +static RESULT IMX334_IsiGetSupportResolutionIss + (IsiSensorHandle_t handle, IsiResolutionArry_t * pResolutinArry) { + RESULT result = RET_SUCCESS; + + TRACE(IMX334_INFO, "%s (enter)\n", __func__); + + if (handle == NULL) { + TRACE(IMX334_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + pResolutinArry->count = + sizeof(SensorDrvSupportResoluton) / sizeof(uint32_t); + memcpy(pResolutinArry->ResolutionArry, SensorDrvSupportResoluton, + sizeof(SensorDrvSupportResoluton)); + TRACE(IMX334_INFO, "%s: (exit)\n", __func__); + + return (result); +} + +static RESULT IMX334_IsiChangeSensorResolutionIss + (IsiSensorHandle_t handle, + uint32_t Resolution, uint8_t * pNumberOfFramesToSkip) { + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + RESULT result = RET_SUCCESS; + float hdr_ratio[2] = { 1.0f, 1.0f }; + + TRACE(IMX334_INFO, "%s (enter)\n", __func__); + + if (!pIMX334Ctx) + return (RET_WRONG_HANDLE); + + if (!pNumberOfFramesToSkip) + return (RET_NULL_POINTER); + + if ((pIMX334Ctx->Configured != BOOL_TRUE) + || (pIMX334Ctx->Streaming != BOOL_FALSE)) + return RET_WRONG_STATE; + + IsiSensorCaps_t Caps; + result = IMX334_IsiGetCapsIss(handle, &Caps); + if (RET_SUCCESS != result) + return result; + + if ((Resolution & Caps.Resolution) == 0) + return RET_OUTOFRANGE; + + if (Resolution == pIMX334Ctx->Config.Resolution) { + // well, no need to worry + *pNumberOfFramesToSkip = 0; + } else { + // change resolution + char *szResName = NULL; + result = IsiGetResolutionName(Resolution, &szResName); + TRACE(IMX334_DEBUG, "%s: NewRes=0x%08x (%s)\n", __func__, + Resolution, szResName); + + // update resolution in copy of config in context + pIMX334Ctx->Config.Resolution = Resolution; + + // tell sensor about that + + // remember old exposure values + float OldGain = pIMX334Ctx->AecCurGain; + float OldIntegrationTime = pIMX334Ctx->AecCurIntegrationTime; + + // update limits & stuff (reset current & old settings) + result = + IMX334_AecSetModeParameters(pIMX334Ctx, + &pIMX334Ctx->Config); + if (result != RET_SUCCESS) { + TRACE(IMX334_ERROR, + "%s: AecSetModeParameters failed.\n", __func__); + return (result); + } + // restore old exposure values (at least within new exposure values' limits) + uint8_t NumberOfFramesToSkip; + float DummySetGain; + float DummySetIntegrationTime; + result = IMX334_IsiExposureControlIss(handle, OldGain, + OldIntegrationTime, + &NumberOfFramesToSkip, + &DummySetGain, + &DummySetIntegrationTime, + hdr_ratio); + if (result != RET_SUCCESS) { + TRACE(IMX334_ERROR, + "%s: IMX334_IsiExposureControlIss failed.\n", + __func__); + return (result); + } + // return number of frames that aren't exposed correctly + *pNumberOfFramesToSkip = NumberOfFramesToSkip + 1; + } + + TRACE(IMX334_INFO, "%s (exit)\n", __func__); + return (result); +} +*/ + +static RESULT IMX334_IsiChangeSensorResolutionIss(IsiSensorHandle_t handle, uint16_t width, uint16_t height) +{ + RESULT result = RET_SUCCESS; + + return (result); +#if 0 + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + RESULT result = RET_SUCCESS; + float hdr_ratio[2] = { 1.0f, 1.0f }; + + TRACE(IMX334_INFO, "%s (enter)\n", __func__); + + if (!pIMX334Ctx) + return (RET_WRONG_HANDLE); + + if ((pIMX334Ctx->Configured != BOOL_TRUE) + || (pIMX334Ctx->Streaming != BOOL_FALSE)) + return RET_WRONG_STATE; + + IsiSensorCaps_t Caps; + result = IMX334_IsiGetCapsIss(handle, &Caps); + if (RET_SUCCESS != result) + return result; + + if (Caps.Resolution.width != width || Caps.Resolution.height != height) + return RET_OUTOFRANGE; + + + if (width == pIMX334Ctx->Config.Resolution.width + && height == pIMX334Ctx->Config.Resolution.height) { + // well, no need to worry + } else { + // change resolution + char *szResName = NULL; + result = IsiGetResolutionName(Resolution, &szResName); + TRACE(IMX334_DEBUG, "%s: NewRes=0x%08x (%s)\n", __func__, + Resolution, szResName); + + // update resolution in copy of config in context + pIMX334Ctx->Config.Resolution = Resolution; + + // tell sensor about that + + // remember old exposure values + float OldGain = pIMX334Ctx->AecCurGain; + float OldIntegrationTime = pIMX334Ctx->AecCurIntegrationTime; + + // update limits & stuff (reset current & old settings) + result = + IMX334_AecSetModeParameters(pIMX334Ctx, + &pIMX334Ctx->Config); + if (result != RET_SUCCESS) { + TRACE(IMX334_ERROR, + "%s: AecSetModeParameters failed.\n", __func__); + return (result); + } + // restore old exposure values (at least within new exposure values' limits) + uint8_t NumberOfFramesToSkip; + float DummySetGain; + float DummySetIntegrationTime; + result = IMX334_IsiExposureControlIss(handle, OldGain, + OldIntegrationTime, + &NumberOfFramesToSkip, + &DummySetGain, + &DummySetIntegrationTime, + hdr_ratio); + if (result != RET_SUCCESS) { + TRACE(IMX334_ERROR, + "%s: IMX334_IsiExposureControlIss failed.\n", + __func__); + return (result); + } + // return number of frames that aren't exposed correctly + *pNumberOfFramesToSkip = NumberOfFramesToSkip + 1; + } + + TRACE(IMX334_INFO, "%s (exit)\n", __func__); + return (result); +#endif +} + +static RESULT IMX334_IsiSensorSetStreamingIss + (IsiSensorHandle_t handle, bool_t on) { + RESULT result = RET_SUCCESS; + int ret = 0; + TRACE(IMX334_INFO, "%s (enter)\n", __func__); + + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + if (pIMX334Ctx == NULL || pIMX334Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pIMX334Ctx->IsiCtx.HalHandle; + + if (pIMX334Ctx->Configured != BOOL_TRUE) + return RET_WRONG_STATE; + + if (on) { + ret |= IMX334_IsiRegisterWriteIss(handle, 0x3000, 0x00); + ret |= IMX334_IsiRegisterWriteIss(handle, 0x3002, 0x00); + } else { + ret |= IMX334_IsiRegisterWriteIss(handle, 0x3000, 0x01); + ret |= IMX334_IsiRegisterWriteIss(handle, 0x3002, 0x01); + } + + if (ret != 0) { + return (RET_FAILURE); + } + + pIMX334Ctx->Streaming = on; + + TRACE(IMX334_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT IMX334_IsiCheckSensorConnectionIss(IsiSensorHandle_t handle) { + RESULT result = RET_SUCCESS; + int ret = 0; + uint32_t correct_id = 0x9012; + uint32_t sensor_id = 0; + + TRACE(IMX334_INFO, "%s (enter)\n", __func__); + + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + if (pIMX334Ctx == NULL || pIMX334Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pIMX334Ctx->IsiCtx.HalHandle; + + if (pIMX334Ctx->KernelDriverFlag) { + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_RESERVE_ID, + &correct_id); + if (ret != 0) { + TRACE(IMX334_ERROR, + "%s: Read Sensor correct ID Error! \n", __func__); + return (RET_FAILURE); + } + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_CHIP_ID, + &sensor_id); + if (ret != 0) { + TRACE(IMX334_ERROR, + "%s: Read Sensor chip ID Error! \n", __func__); + return (RET_FAILURE); + } + } else { + result = IMX334_IsiGetSensorRevisionIss(handle, &sensor_id); + if (result != RET_SUCCESS) { + TRACE(IMX334_ERROR, "%s: Read Sensor ID Error! \n", + __func__); + return (RET_FAILURE); + } + } + + if (correct_id != sensor_id) { + TRACE(IMX334_ERROR, "%s:ChipID =0x%x sensor_id=%x error! \n", + __func__, correct_id, sensor_id); + return (RET_FAILURE); + } + + TRACE(IMX334_INFO, + "%s ChipID = 0x%08x, sensor_id = 0x%08x, success! \n", __func__, + correct_id, sensor_id); + TRACE(IMX334_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT IMX334_IsiGetSensorRevisionIss + (IsiSensorHandle_t handle, uint32_t * p_value) { + RESULT result = RET_SUCCESS; + int ret = 0; + uint32_t reg_val; + uint32_t sensor_id; + + TRACE(IMX334_INFO, "%s (enter)\n", __func__); + + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + if (pIMX334Ctx == NULL || pIMX334Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pIMX334Ctx->IsiCtx.HalHandle; + + if (!p_value) + return (RET_NULL_POINTER); + + if (pIMX334Ctx->KernelDriverFlag) { + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_CHIP_ID, + &sensor_id); + if (ret != 0) { + TRACE(IMX334_ERROR, "%s: Read Sensor ID Error! \n", + __func__); + return (RET_FAILURE); + } + } else { + reg_val = 0; + result = IMX334_IsiRegisterReadIss(handle, 0x3a04, ®_val); + sensor_id = (reg_val & 0xff) << 8; + + reg_val = 0; + result |= IMX334_IsiRegisterReadIss(handle, 0x3a05, ®_val); + sensor_id |= (reg_val & 0xff); + + } + + *p_value = sensor_id; + TRACE(IMX334_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT IMX334_IsiGetGainLimitsIss + (IsiSensorHandle_t handle, float *pMinGain, float *pMaxGain) { + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + RESULT result = RET_SUCCESS; + + TRACE(IMX334_INFO, "%s: (enter)\n", __func__); + + if (pIMX334Ctx == NULL) { + TRACE(IMX334_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if ((pMinGain == NULL) || (pMaxGain == NULL)) { + TRACE(IMX334_ERROR, "%s: NULL pointer received!!\n"); + return (RET_NULL_POINTER); + } + + *pMinGain = pIMX334Ctx->AecMinGain; + *pMaxGain = pIMX334Ctx->AecMaxGain; + + TRACE(IMX334_INFO, "%s: (enter)\n", __func__); + return (result); +} + +static RESULT IMX334_IsiGetIntegrationTimeLimitsIss + (IsiSensorHandle_t handle, + float *pMinIntegrationTime, float *pMaxIntegrationTime) { + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + RESULT result = RET_SUCCESS; + + TRACE(IMX334_INFO, "%s: (enter)\n", __func__); + if (pIMX334Ctx == NULL) { + TRACE(IMX334_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if ((pMinIntegrationTime == NULL) || (pMaxIntegrationTime == NULL)) { + TRACE(IMX334_ERROR, "%s: NULL pointer received!!\n"); + return (RET_NULL_POINTER); + } + + *pMinIntegrationTime = pIMX334Ctx->AecMinIntegrationTime; + *pMaxIntegrationTime = pIMX334Ctx->AecMaxIntegrationTime; + + TRACE(IMX334_INFO, "%s: (enter)\n", __func__); + return (result); +} + +RESULT IMX334_IsiGetGainIss(IsiSensorHandle_t handle, float *pSetGain) { + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(IMX334_INFO, "%s: (enter)\n", __func__); + + if (pIMX334Ctx == NULL) { + TRACE(IMX334_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (pSetGain == NULL) { + return (RET_NULL_POINTER); + } + + *pSetGain = pIMX334Ctx->AecCurGain; + + TRACE(IMX334_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT IMX334_IsiGetSEF1GainIss(IsiSensorHandle_t handle, float *pSetGain) { + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + RESULT result = RET_SUCCESS; + + TRACE(IMX334_INFO, "%s: (enter)\n", __func__); + + if (pIMX334Ctx == NULL) { + TRACE(IMX334_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (pSetGain == NULL) { + return (RET_NULL_POINTER); + } + + *pSetGain = pIMX334Ctx->AecCurGainSEF1; + + TRACE(IMX334_INFO, "%s: (exit)\n", __func__); + + return (result); +} + +RESULT IMX334_IsiGetGainIncrementIss(IsiSensorHandle_t handle, float *pIncr) { + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(IMX334_INFO, "%s: (enter)\n", __func__); + + if (pIMX334Ctx == NULL) { + TRACE(IMX334_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (pIncr == NULL) + return (RET_NULL_POINTER); + + *pIncr = pIMX334Ctx->AecGainIncrement; + + TRACE(IMX334_INFO, "%s: (exit)\n", __func__); + + return (result); +} + +RESULT IMX334_IsiSetGainIss + (IsiSensorHandle_t handle, + float NewGain, float *pSetGain, float *hdr_ratio) { + + RESULT result = RET_SUCCESS; + return result; + int32_t ret = 0; + + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + if (pIMX334Ctx == NULL || pIMX334Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pIMX334Ctx->IsiCtx.HalHandle; + + if (pIMX334Ctx->KernelDriverFlag) { + uint32_t SensorGain = 0; + SensorGain = NewGain * pIMX334Ctx->gain_accuracy; + + #ifdef SUBDEV_CHAR + if (pIMX334Ctx->enableHdr == true) { + uint32_t SensorHdrRatio = (uint32_t)*hdr_ratio; + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_HDR_RADIO, &SensorHdrRatio); + } + #endif + ret |= ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_GAIN, &SensorGain); + if (ret != 0) { + TRACE(IMX334_ERROR, "%s: set sensor gain error\n", + __func__); + return RET_FAILURE; + } + } else { + uint32_t Gain = 0; + Gain = (uint32_t)(20*log10(NewGain)*(10/3)) ; + result = IMX334_IsiRegisterWriteIss(handle, 0x3001, 0x01); + result =IMX334_IsiRegisterWriteIss(handle, 0x30e8,(Gain & 0x00ff)); + result =IMX334_IsiRegisterWriteIss(handle, 0x30e9,(Gain & 0x0700)>>8); + result = IMX334_IsiRegisterWriteIss(handle, 0x3001, 0x00); + pIMX334Ctx->OldGain = NewGain; + } + + + pIMX334Ctx->AecCurGain = ((float)(NewGain)); + + *pSetGain = pIMX334Ctx->AecCurGain; + TRACE(IMX334_DEBUG, "%s: g=%f\n", __func__, *pSetGain); + return (result); +} +RESULT IMX334_IsiSetSEF1GainIss(IsiSensorHandle_t handle,float NewIntegrationTime,float NewGain, float *pSetGain, float *hdr_ratio) { + + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + RESULT result = RET_SUCCESS; + HalContext_t *pHalCtx = (HalContext_t *) pIMX334Ctx->IsiCtx.HalHandle; + + TRACE(IMX334_INFO, "%s: (enter)\n", __func__); + + if (!pIMX334Ctx) { + TRACE(IMX334_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pSetGain || !hdr_ratio) + return (RET_NULL_POINTER); + + if (pIMX334Ctx->KernelDriverFlag) { + uint32_t SensorGain = 0; + SensorGain = NewGain * pIMX334Ctx->gain_accuracy; + ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_VSGAIN, &SensorGain); + } else { + uint32_t Gain = 0; + Gain = (uint32_t)(20*log10(NewGain)*(10/3)) ; + result = IMX334_IsiRegisterWriteIss(handle, 0x3001, 0x01); + result =IMX334_IsiRegisterWriteIss(handle, 0x30EA, (Gain & 0x00FF)); + result =IMX334_IsiRegisterWriteIss(handle, 0x30EB, (Gain & 0x0700)>>8); + result = IMX334_IsiRegisterWriteIss(handle, 0x3001, 0x00); + pIMX334Ctx->OldGainSEF1 = NewGain; + } + + pIMX334Ctx->AecCurGainSEF1 = NewGain; + *pSetGain = pIMX334Ctx->AecCurGainSEF1; + + TRACE(IMX334_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT IMX334_IsiSetBayerPattern(IsiSensorHandle_t handle, uint8_t pattern) +{ + + RESULT result = RET_SUCCESS; + uint8_t h_shift = 0, v_shift = 0; + uint32_t val_h = 0, val_l = 0; + uint16_t val = 0; + uint8_t Start_p = 0; + + TRACE(IMX334_INFO, "%s: (enter)\n", __func__); + + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + if (pIMX334Ctx == NULL || pIMX334Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + // pattern 0:B 1:GB 2:GR 3:R + result = IMX334_IsiSensorSetStreamingIss(handle, 0); + switch (pattern) { + case BAYER_BGGR: + Start_p = 0; + break; + case BAYER_GBRG: + Start_p = 1; + break; + case BAYER_GRBG: + Start_p = 2; + break; + case BAYER_RGGB: + Start_p = 3; + break; + } + + h_shift = Start_p % 2; + v_shift = Start_p / 2; + + IMX334_IsiRegisterReadIss(handle, 0x30a0, &val_h); + IMX334_IsiRegisterReadIss(handle, 0x30a1, &val_l); + val = (((val_h << 8) & 0xff00) | (val_l & 0x00ff)) + h_shift; + val_h = (val >> 8) & 0xff; + val_l = val & 0xff; + IMX334_IsiRegisterWriteIss(handle, 0x30a0, (uint8_t)val_h); + IMX334_IsiRegisterWriteIss(handle, 0x30a1, (uint8_t)val_l); + + IMX334_IsiRegisterReadIss(handle, 0x30a2, &val_h); + IMX334_IsiRegisterReadIss(handle, 0x30a3, &val_l); + val = (((val_h << 8) & 0xff00) | (val_l & 0x00ff)) + v_shift; + val_h = (val >> 8) & 0xff; + val_l = val & 0xff; + IMX334_IsiRegisterWriteIss(handle, 0x30a2, (uint8_t)val_h); + IMX334_IsiRegisterWriteIss(handle, 0x30a3, (uint8_t)val_l); + + IMX334_IsiRegisterReadIss(handle, 0x30a4, &val_h); + IMX334_IsiRegisterReadIss(handle, 0x30a5, &val_l); + val = (((val_h << 8) & 0xff00) | (val_l & 0x00ff)) + h_shift; + val_h = (val >> 8) & 0xff; + val_l = val & 0xff; + IMX334_IsiRegisterWriteIss(handle, 0x30a4, (uint8_t)val_h); + IMX334_IsiRegisterWriteIss(handle, 0x30a5, (uint8_t)val_l); + + IMX334_IsiRegisterReadIss(handle, 0x30a6, &val_h); + IMX334_IsiRegisterReadIss(handle, 0x30a7, &val_l); + val = (((val_h << 8) & 0xff00) | (val_l & 0x00ff)) + v_shift; + val_h = (val >> 8) & 0xff; + val_l = val & 0xff; + IMX334_IsiRegisterWriteIss(handle, 0x30a6, (uint8_t)val_h); + IMX334_IsiRegisterWriteIss(handle, 0x30a7, (uint8_t)val_l); + + pIMX334Ctx->pattern = 3; + result = IMX334_IsiSensorSetStreamingIss(handle, pIMX334Ctx->Streaming); + + return (result); +} + +RESULT IMX334_IsiGetIntegrationTimeIss + (IsiSensorHandle_t handle, float *pSetIntegrationTime) +{ + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(IMX334_INFO, "%s: (enter)\n", __func__); + + if (!pIMX334Ctx) { + TRACE(IMX334_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pSetIntegrationTime) + return (RET_NULL_POINTER); + *pSetIntegrationTime = pIMX334Ctx->AecCurIntegrationTime; + TRACE(IMX334_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT IMX334_IsiGetSEF1IntegrationTimeIss + (IsiSensorHandle_t handle, float *pSetIntegrationTime) +{ + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(IMX334_INFO, "%s: (enter)\n", __func__); + + if (!pIMX334Ctx) { + TRACE(IMX334_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + if (!pSetIntegrationTime) + return (RET_NULL_POINTER); + + *pSetIntegrationTime = pIMX334Ctx->AecCurIntegrationTimeSEF1; + TRACE(IMX334_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT IMX334_IsiGetIntegrationTimeIncrementIss + (IsiSensorHandle_t handle, float *pIncr) +{ + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(IMX334_INFO, "%s: (enter)\n", __func__); + + if (!pIMX334Ctx) { + TRACE(IMX334_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pIncr) + return (RET_NULL_POINTER); + + //_smallest_ increment the sensor/driver can handle (e.g. used for sliders in the application) + *pIncr = pIMX334Ctx->AecIntegrationTimeIncrement; + TRACE(IMX334_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT IMX334_IsiSetIntegrationTimeIss + (IsiSensorHandle_t handle, + float NewIntegrationTime, + float *pSetIntegrationTime, + uint8_t * pNumberOfFramesToSkip, float *hdr_ratio) +{ + RESULT result = RET_SUCCESS; + + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + HalContext_t *pHalCtx = (HalContext_t *) pIMX334Ctx->IsiCtx.HalHandle; + + uint32_t exp = 0; + + TRACE(IMX334_INFO, "%s: (enter)\n", __func__); + + if (!pIMX334Ctx) { + TRACE(IMX334_ERROR,"%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pSetIntegrationTime || !pNumberOfFramesToSkip) { + TRACE(IMX334_ERROR, "%s: Invalid parameter (NULL pointer detected)\n", + __func__); + return (RET_NULL_POINTER); + } + + exp = NewIntegrationTime / pIMX334Ctx->one_line_exp_time; + + TRACE(IMX334_DEBUG, "%s: set AEC_PK_EXPO=0x%05x\n", __func__, exp); + + if (NewIntegrationTime != pIMX334Ctx->OldIntegrationTime) { + if (pIMX334Ctx->KernelDriverFlag) { + ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_EXP, &exp); + } else { + + exp = 2200 - exp +1; + exp = exp > 5?exp:5; + exp = exp >8); + result = IMX334_IsiRegisterWriteIss(handle, 0x305a, (exp & 0x070000)>>16); + result = IMX334_IsiRegisterWriteIss(handle, 0x3001, 0x00); + } + + pIMX334Ctx->OldIntegrationTime = NewIntegrationTime ; + pIMX334Ctx->AecCurIntegrationTime = NewIntegrationTime; + + *pNumberOfFramesToSkip = 1U; + } else { + *pNumberOfFramesToSkip = 0U; //no frame skip + } + + *pSetIntegrationTime = pIMX334Ctx->AecCurIntegrationTime; + TRACE(IMX334_DEBUG, "%s: Ti=%f\n", __func__, *pSetIntegrationTime); + TRACE(IMX334_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT IMX334_IsiSetSEF1IntegrationTimeIss(IsiSensorHandle_t handle, float NewIntegrationTime,float *pSetIntegrationTimeSEF1, uint8_t * pNumberOfFramesToSkip, float *hdr_ratio) +{ + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + HalContext_t *pHalCtx = (HalContext_t *) pIMX334Ctx->IsiCtx.HalHandle; + RESULT result = RET_SUCCESS; + uint32_t exp = 0; + + TRACE(IMX334_INFO, "%s: (enter)\n", __func__); + + if (!pIMX334Ctx) { + TRACE(IMX334_ERROR,"%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pSetIntegrationTimeSEF1 || !pNumberOfFramesToSkip) { + TRACE(IMX334_ERROR,"%s: Invalid parameter (NULL pointer detected)\n", + __func__); + return (RET_NULL_POINTER); + } + TRACE(IMX334_INFO,"%s: maxIntegrationTime-=%f minIntegrationTime = %f\n", __func__, + pIMX334Ctx->AecMaxIntegrationTime, pIMX334Ctx->AecMinIntegrationTime); + + + exp = NewIntegrationTime / pIMX334Ctx->one_line_exp_time; + + if (NewIntegrationTime != pIMX334Ctx->OldIntegrationTimeSEF1) { + if (pIMX334Ctx->KernelDriverFlag) { + ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_VSEXP, &exp); + } else { + exp = 2200- exp +1; + exp = exp > 5 ? exp : 5; + exp = exp < IMX334_VMAX - 1 ? exp : IMX334_VMAX - 1; + result = IMX334_IsiRegisterWriteIss(handle, 0x3001, 0x01); + result = IMX334_IsiRegisterWriteIss(handle, 0x305c,(exp & 0x0000ff)); + result = IMX334_IsiRegisterWriteIss(handle, 0x305D,(exp & 0x00ff00)>>8); + result = IMX334_IsiRegisterWriteIss(handle, 0x305e,(exp & 0x070000)>>16); + result = IMX334_IsiRegisterWriteIss(handle, 0x3001, 0x00); + } + + pIMX334Ctx->OldIntegrationTimeSEF1 = NewIntegrationTime; + pIMX334Ctx->AecCurIntegrationTimeSEF1 = NewIntegrationTime; + *pNumberOfFramesToSkip = 1U; + } else { + *pNumberOfFramesToSkip = 0U; + } + + *pSetIntegrationTimeSEF1 = pIMX334Ctx->AecCurIntegrationTimeSEF1; + + TRACE(IMX334_DEBUG, "%s: NewIntegrationTime=%f\n", __func__, + NewIntegrationTime); + TRACE(IMX334_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT IMX334_IsiExposureControlIss(IsiSensorHandle_t handle,float NewGain,float NewIntegrationTime, + uint8_t * pNumberOfFramesToSkip,float *pSetGain, float *pSetIntegrationTime, float *hdr_ratio) +{ + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(IMX334_INFO, "%s: (enter)\n", __func__); + + return result; + if (pIMX334Ctx == NULL) { + TRACE(IMX334_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if ((pNumberOfFramesToSkip == NULL) || (pSetGain == NULL) + || (pSetIntegrationTime == NULL)) { + TRACE(IMX334_ERROR, + "%s: Invalid parameter (NULL pointer detected)\n", + __func__); + return (RET_NULL_POINTER); + } + + + if (pIMX334Ctx->enableHdr) + { + result = IMX334_IsiSetSEF1IntegrationTimeIss(handle, NewIntegrationTime,pSetIntegrationTime,pNumberOfFramesToSkip,hdr_ratio); + result = IMX334_IsiSetSEF1GainIss(handle, NewIntegrationTime, NewGain,pSetGain, hdr_ratio); + } + result = IMX334_IsiSetIntegrationTimeIss(handle, NewIntegrationTime,pSetIntegrationTime,pNumberOfFramesToSkip, hdr_ratio); + result = IMX334_IsiSetGainIss(handle, NewGain, pSetGain, hdr_ratio); + TRACE(IMX334_INFO, "%s: (exit)\n", __func__); + + return result; +} + +RESULT IMX334_IsiGetCurrentExposureIss + (IsiSensorHandle_t handle, float *pSetGain, float *pSetIntegrationTime, float *hdr_ratio) { + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + RESULT result = RET_SUCCESS; + + TRACE(IMX334_INFO, "%s: (enter)\n", __func__); + + if (pIMX334Ctx == NULL) { + TRACE(IMX334_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if ((pSetGain == NULL) || (pSetIntegrationTime == NULL)) + return (RET_NULL_POINTER); + + *pSetGain = pIMX334Ctx->AecCurGain; + *pSetIntegrationTime = pIMX334Ctx->AecCurIntegrationTime; + *hdr_ratio = pIMX334Ctx->CurHdrRatio; + + TRACE(IMX334_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT IMX334_IsiGetResolutionIss + (IsiSensorHandle_t handle, uint16_t *pwidth, uint16_t *pheight) { + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + RESULT result = RET_SUCCESS; + + TRACE(IMX334_INFO, "%s: (enter)\n", __func__); + + if (pIMX334Ctx == NULL) { + TRACE(IMX334_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + *pwidth = pIMX334Ctx->Config.Resolution.width; + *pheight = pIMX334Ctx->Config.Resolution.height; + TRACE(IMX334_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT IMX334_IsiGetSensorFpsIss(IsiSensorHandle_t handle, uint32_t * pfps) +{ + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(IMX334_INFO, "%s: (enter)\n", __func__); + + if (pIMX334Ctx == NULL) { + TRACE(IMX334_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + HalContext_t *pHalCtx = (HalContext_t *) pIMX334Ctx->IsiCtx.HalHandle; + + if (pIMX334Ctx->KernelDriverFlag) { + ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_FPS, pfps); + pIMX334Ctx->CurrFps = *pfps; + } + + *pfps = pIMX334Ctx->CurrFps; + + TRACE(IMX334_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT IMX334_IsiSetSensorFpsIss(IsiSensorHandle_t handle, uint32_t fps) +{ + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + RESULT result = RET_SUCCESS; + int32_t ret = 0; + TRACE(IMX334_INFO, "%s: (enter)\n", __func__); + return 0; + if (pIMX334Ctx == NULL) { + TRACE(IMX334_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + HalContext_t *pHalCtx = (HalContext_t *) pIMX334Ctx->IsiCtx.HalHandle; + + if (fps > pIMX334Ctx->MaxFps) { + TRACE(IMX334_ERROR, + "%s: set fps(%d) out of range, correct to %d (%d, %d)\n", + __func__, fps, pIMX334Ctx->MaxFps, pIMX334Ctx->MinFps, + pIMX334Ctx->MaxFps); + fps = pIMX334Ctx->MaxFps; + } + if (fps < pIMX334Ctx->MinFps) { + TRACE(IMX334_ERROR, + "%s: set fps(%d) out of range, correct to %d (%d, %d)\n", + __func__, fps, pIMX334Ctx->MinFps, pIMX334Ctx->MinFps, + pIMX334Ctx->MaxFps); + fps = pIMX334Ctx->MinFps; + } + if (pIMX334Ctx->KernelDriverFlag) { + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_FPS, &fps); + if (ret != 0) { + TRACE(IMX334_ERROR, "%s: set sensor fps=%d error\n", + __func__); + return (RET_FAILURE); + } +#ifdef SUBDEV_CHAR + struct vvcam_ae_info_s ae_info; + ret = + ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_AE_INFO, &ae_info); + if (ret != 0) { + TRACE(IMX334_ERROR, "%s:sensor get ae info error!\n", + __func__); + return (RET_FAILURE); + } + pIMX334Ctx->one_line_exp_time = + (float)ae_info.one_line_exp_time_ns / 1000000000; + pIMX334Ctx->MaxIntegrationLine = ae_info.max_integration_time; + pIMX334Ctx->AecMaxIntegrationTime = + pIMX334Ctx->MaxIntegrationLine * + pIMX334Ctx->one_line_exp_time; +#endif + } else { + uint16_t FrameLengthLines; + FrameLengthLines = + pIMX334Ctx->FrameLengthLines * pIMX334Ctx->MaxFps / fps; + result = + IMX334_IsiRegisterWriteIss(handle, 0x30b2, + (FrameLengthLines >> 8) & 0xff); + result |= + IMX334_IsiRegisterWriteIss(handle, 0x30b3, + FrameLengthLines & 0xff); + if (result != RET_SUCCESS) { + TRACE(IMX334_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_FAILURE); + } + pIMX334Ctx->CurrFps = fps; + pIMX334Ctx->CurFrameLengthLines = FrameLengthLines; + pIMX334Ctx->MaxIntegrationLine = + pIMX334Ctx->CurFrameLengthLines - 3; + pIMX334Ctx->AecMaxIntegrationTime = + pIMX334Ctx->MaxIntegrationLine * + pIMX334Ctx->one_line_exp_time; + } + + TRACE(IMX334_INFO, "%s: set sensor fps = %d\n", __func__, + pIMX334Ctx->CurrFps); + + TRACE(IMX334_INFO, "%s: (exit)\n", __func__); + return (result); +} + +/* +RESULT IMX334_IsiGetAfpsInfoIss(IsiSensorHandle_t handle, + uint32_t Resolution, IsiAfpsInfo_t * pAfpsInfo) +{ + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + RESULT result = RET_SUCCESS; + + TRACE(IMX334_INFO, "%s: (enter)\n", __func__); + + if (pIMX334Ctx == NULL) { + TRACE(IMX334_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (pAfpsInfo == NULL) + return (RET_NULL_POINTER); + + // set current resolution data in info struct + pAfpsInfo->AecMaxGain = pIMX334Ctx->AecMaxGain; + pAfpsInfo->AecMinGain = pIMX334Ctx->AecMinGain; + pAfpsInfo->AecMaxIntTime = pIMX334Ctx->AecMinIntegrationTime; + pAfpsInfo->AecMaxIntTime = pIMX334Ctx->AecMaxIntegrationTime; + pAfpsInfo->AecSlowestResolution = pIMX334Ctx->Resolution; + pAfpsInfo->CurrResolution = pIMX334Ctx->Resolution; + pAfpsInfo->CurrMaxIntTime = pIMX334Ctx->AecMaxIntegrationTime; + pAfpsInfo->CurrMinIntTime = pIMX334Ctx->AecMinIntegrationTime; + pAfpsInfo->Stage[0].MaxIntTime = pIMX334Ctx->AecMaxIntegrationTime; + pAfpsInfo->Stage[0].Resolution = pIMX334Ctx->Resolution; + + TRACE(IMX334_INFO, "%s: (exit)\n", __func__); + return (result); +} +*/ + +static RESULT IMX334_IsiActivateTestPattern(IsiSensorHandle_t handle, + const bool_t enable) +{ + RESULT result = RET_SUCCESS; + + TRACE(IMX334_INFO, "%s: (enter)\n", __func__); + + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + if (pIMX334Ctx == NULL || pIMX334Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + if (pIMX334Ctx->Configured != BOOL_TRUE) + return RET_WRONG_STATE; + + if (BOOL_TRUE == enable) { + result = IMX334_IsiRegisterWriteIss(handle, 0x3253, 0x80); + } else { + result = IMX334_IsiRegisterWriteIss(handle, 0x3253, 0x00); + } + pIMX334Ctx->TestPattern = enable; + + TRACE(IMX334_INFO, "%s: (exit)\n", __func__); + + return (result); +} + +/* +static RESULT IMX334_IsiEnableHdr(IsiSensorHandle_t handle, const bool_t enable) +{ + RESULT result = RET_SUCCESS; + int32_t ret = 0; + TRACE(IMX334_INFO, "%s: (enter)\n", __func__); + + IMX334_Context_t *pIMX334Ctx = (IMX334_Context_t *) handle; + if (pIMX334Ctx == NULL || pIMX334Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + +#ifdef SUBDEV_CHAR + HalContext_t *pHalCtx = (HalContext_t *) pIMX334Ctx->IsiCtx.HalHandle; + result = IMX334_IsiSensorSetStreamingIss(handle, 0); + + if (pIMX334Ctx->KernelDriverFlag) { + uint32_t hdr_mode; + if (enable == 0) { + hdr_mode = SENSOR_MODE_LINEAR; + } else { + hdr_mode = SENSOR_MODE_HDR_STITCH; + } + ret = + ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_HDR_MODE, + &hdr_mode); + } else { + result |= + IMX334_IsiRegisterWriteIss(handle, 0x3190, + enable ? 0x05 : 0x08); + } + result |= + IMX334_IsiSensorSetStreamingIss(handle, pIMX334Ctx->Streaming); +#endif + + if (result != 0 || ret != 0) { + TRACE(IMX334_ERROR, "%s: change hdr status error\n", __func__); + return RET_FAILURE; + } + + pIMX334Ctx->enableHdr = enable; + TRACE(IMX334_INFO, "%s: (exit)\n", __func__); + return RET_SUCCESS; +} +*/ + +RESULT IMX334_IsiGetSensorIss(IsiSensor_t *pIsiSensor) +{ + RESULT result = RET_SUCCESS; + TRACE( IMX334_INFO, "%s (enter)\n", __func__); + + if ( pIsiSensor != NULL ) { + pIsiSensor->pszName = SensorName; + pIsiSensor->pIsiCreateSensorIss = IMX334_IsiCreateSensorIss; + + pIsiSensor->pIsiInitSensorIss = IMX334_IsiInitSensorIss; + pIsiSensor->pIsiGetSensorModeIss = IMX334_IsiGetSensorModeIss; + pIsiSensor->pIsiResetSensorIss = IMX334_IsiResetSensorIss; + pIsiSensor->pIsiReleaseSensorIss = IMX334_IsiReleaseSensorIss; + pIsiSensor->pIsiGetCapsIss = IMX334_IsiGetCapsIss; + pIsiSensor->pIsiSetupSensorIss = IMX334_IsiSetupSensorIss; + pIsiSensor->pIsiChangeSensorResolutionIss = IMX334_IsiChangeSensorResolutionIss; + pIsiSensor->pIsiSensorSetStreamingIss = IMX334_IsiSensorSetStreamingIss; + pIsiSensor->pIsiSensorSetPowerIss = IMX334_IsiSensorSetPowerIss; + pIsiSensor->pIsiCheckSensorConnectionIss = IMX334_IsiCheckSensorConnectionIss; + pIsiSensor->pIsiGetSensorRevisionIss = IMX334_IsiGetSensorRevisionIss; + pIsiSensor->pIsiRegisterReadIss = IMX334_IsiRegisterReadIss; + pIsiSensor->pIsiRegisterWriteIss = IMX334_IsiRegisterWriteIss; + + /* AEC functions */ + pIsiSensor->pIsiExposureControlIss = IMX334_IsiExposureControlIss; + pIsiSensor->pIsiGetGainLimitsIss = IMX334_IsiGetGainLimitsIss; + pIsiSensor->pIsiGetIntegrationTimeLimitsIss = IMX334_IsiGetIntegrationTimeLimitsIss; + pIsiSensor->pIsiGetCurrentExposureIss = IMX334_IsiGetCurrentExposureIss; + pIsiSensor->pIsiGetVSGainIss = IMX334_IsiGetSEF1GainIss; + pIsiSensor->pIsiGetGainIss = IMX334_IsiGetGainIss; + pIsiSensor->pIsiGetGainIncrementIss = IMX334_IsiGetGainIncrementIss; + pIsiSensor->pIsiSetGainIss = IMX334_IsiSetGainIss; + pIsiSensor->pIsiGetIntegrationTimeIss = IMX334_IsiGetIntegrationTimeIss; + pIsiSensor->pIsiGetVSIntegrationTimeIss = IMX334_IsiGetSEF1IntegrationTimeIss; + pIsiSensor->pIsiGetIntegrationTimeIncrementIss = IMX334_IsiGetIntegrationTimeIncrementIss; + pIsiSensor->pIsiSetIntegrationTimeIss = IMX334_IsiSetIntegrationTimeIss; + pIsiSensor->pIsiQuerySensorIss = IMX334_IsiQuerySensorIss; + pIsiSensor->pIsiGetResolutionIss = IMX334_IsiGetResolutionIss; + pIsiSensor->pIsiGetSensorFpsIss = IMX334_IsiGetSensorFpsIss; + pIsiSensor->pIsiSetSensorFpsIss = IMX334_IsiSetSensorFpsIss; + + /* AWB specific functions */ + + /* Testpattern */ + pIsiSensor->pIsiActivateTestPattern = IMX334_IsiActivateTestPattern; + pIsiSensor->pIsiSetBayerPattern = IMX334_IsiSetBayerPattern; + + } else { + result = RET_NULL_POINTER; + } + + TRACE( IMX334_INFO, "%s (exit)\n", __func__); + return ( result ); +} + +/***************************************************************************** +* each sensor driver need declare this struct for isi load +*****************************************************************************/ +IsiCamDrvConfig_t IMX334_IsiCamDrvConfig = { + 0, + IMX334_IsiQuerySensorSupportIss, + IMX334_IsiGetSensorIss, + { + SensorName, /**< IsiSensor_t.pszName */ + 0, /**< IsiSensor_t.pIsiInitIss>*/ + 0, /**< IsiSensor_t.pIsiResetSensorIss>*/ + 0, /**< IsiSensor_t.pRegisterTable */ + 0, /**< IsiSensor_t.pIsiSensorCaps */ + 0, /**< IsiSensor_t.pIsiCreateSensorIss */ + 0, /**< IsiSensor_t.pIsiReleaseSensorIss */ + 0, /**< IsiSensor_t.pIsiGetCapsIss */ + 0, /**< IsiSensor_t.pIsiSetupSensorIss */ + 0, /**< IsiSensor_t.pIsiChangeSensorResolutionIss */ + 0, /**< IsiSensor_t.pIsiSensorSetStreamingIss */ + 0, /**< IsiSensor_t.pIsiSensorSetPowerIss */ + 0, /**< IsiSensor_t.pIsiCheckSensorConnectionIss */ + 0, /**< IsiSensor_t.pIsiGetSensorRevisionIss */ + 0, /**< IsiSensor_t.pIsiRegisterReadIss */ + 0, /**< IsiSensor_t.pIsiRegisterWriteIss */ + + 0, /**< IsiSensor_t.pIsiExposureControlIss */ + 0, /**< IsiSensor_t.pIsiGetGainLimitsIss */ + 0, /**< IsiSensor_t.pIsiGetIntegrationTimeLimitsIss */ + 0, /**< IsiSensor_t.pIsiGetCurrentExposureIss */ + 0, /**< IsiSensor_t.pIsiGetGainIss */ + 0, /**< IsiSensor_t.pIsiGetVSGainIss */ + 0, /**< IsiSensor_t.pIsiGetGainIncrementIss */ + 0, /**< IsiSensor_t.pIsiGetGainIncrementIss */ + 0, /**< IsiSensor_t.pIsiSetGainIss */ + 0, /**< IsiSensor_t.pIsiGetIntegrationTimeIss */ + 0, /**< IsiSensor_t.pIsiGetIntegrationTimeIncrementIss */ + 0, /**< IsiSensor_t.pIsiSetIntegrationTimeIss */ + 0, /**< IsiSensor_t.pIsiGetResolutionIss */ + 0, /**< IsiSensor_t.pIsiGetAfpsInfoIss */ + + 0, /**< IsiSensor_t.pIsiMdiInitMotoDriveMds */ + 0, /**< IsiSensor_t.pIsiMdiSetupMotoDrive */ + 0, /**< IsiSensor_t.pIsiMdiFocusSet */ + 0, /**< IsiSensor_t.pIsiMdiFocusGet */ + 0, /**< IsiSensor_t.pIsiMdiFocusCalibrate */ + 0, /**< IsiSensor_t.pIsiGetSensorMipiInfoIss */ + 0, /**< IsiSensor_t.pIsiActivateTestPattern */ + 0, /**< IsiSensor_t.pIsiEnableHdr */ + 0, /**< IsiSensor_t.pIsiSetBayerPattern */ + } +}; diff --git a/drivers/IMX334/IMX334.xml b/drivers/IMX334/IMX334.xml new file mode 100644 index 0000000..80b069e --- /dev/null +++ b/drivers/IMX334/IMX334.xml @@ -0,0 +1,1304 @@ + + +
+ + 24-Jul-2019 + + + AN + + + IMX334 + + + 8M_06 + + + v1.3 + + + + + 1920x1080 + + + 0x00000001 + + + [ 1920] + + + [ 1080] + + + + + FPS_15 + + + [ 14.9916] + + + + + FPS_10 + + + [ 9.9944] + + + + + FPS_05 + + + [ 4.9972] + + + + + +
+ + + + + + 1920x1080 + + + 1920x1080 + + + [0.316211 0.450278 0.23351] + + + [-0.676539 -0.0576107 0.73415 0.457123 -0.814462 0.35734] + + + [-0.766376 -0.642393 -2.9218] + + + [0.797383 1.27564 1.48203 1.60186 1.7926 1.86989 1.95978 2.07698 2.28119 2.33243 2.431 2.57425 2.6544 2.76562 2.83952 3.0108] + + + [0.449646 0.289261 0.093411 0.142743 0.266621 0.286629 0.206521 0.053599 -0.134047 -0.144737 -0.124515 -0.148586 -0.0494788 0.0735386 0.227056 0.31218] + + + [0.791651 1.28931 1.5087 1.63155 1.76295 1.86143 1.97637 2.09131 2.20625 2.32119 2.49084 2.62999 2.6879 2.78095 2.89589 3.0108] + + + [-0.178231 0.0469239 0.124591 0.10802 0.168323 0.171752 0.194948 0.210209 0.216012 0.209423 0.225067 0.235329 0.111501 -0.0301974 -0.152124 -0.29218] + + + [0.790659 0.953496 1.08735 1.27777 1.42719 1.52153 1.59422 1.7919 1.9658 2.11352 2.26477 2.45061 2.60066 2.75072 2.81865 3.0508] + + + [0.560682 0.506246 0.480332 0.408497 0.256789 0.2696 0.317996 0.416285 0.245149 0.0802887 -0.0424134 -0.0716488 -0.00439574 0.111498 0.229011 0.45335] + + + [0.79608 0.971478 1.09638 1.2955 1.4237 1.55028 1.70033 1.85039 2.00044 2.1505 2.30055 2.45061 2.63052 2.75072 2.90077 3.0508] + + + [-0.0481781 0.0374423 0.108593 0.173398 0.161051 0.170806 0.219416 0.259086 0.288821 0.304528 0.30161 0.271649 0.266912 0.088502 -0.0675137 -0.25335] + + + [ 50.5676] + + + [0.75 1.28836 1.77672 2.164 2.6 3.0618] + + + [14 114 110 85 80 80] + + + [89 89 90 110 122 122] + + + [25 25 30 30 30 30] + + + [123 123 123 123 123 120] + + + [123 123 123 123 123 126] + + + [5 5 5 5 5 5] + + + [ 1] + + + [ 0.8] + + + [ 0.05] + + + [ 1.0867] + + + [ 3.0108] + + + [ 3.0508] + + + [ 2.5512] + + + D50 + + + + [ 0.05] + + + [ 0.05] + + + [ 0.4] + + + [ 0.5] + + + [ 0.9] + + + [ 0.5] + + + [ 50] + + + [ 1] + + + [ 0.5] + + + + + + + + A + + + Indoor + + + + [1779.18 1985.06 1985.06 3572.058] + + + [ 247.3246] + + + [1 1] + + + [-0.0807738 -0.036178] + + + + + + 1920x1080 + + + 1920x1080_A_100 + + + + + [1.36712 1 1 3.0034] + + + [1.49795 -0.0462832 -0.444131 -0.551138 1.8009 -0.188796 0.0863862 -1.16732 2.1462] + + + [-30.8663 -13.8688 -62.6904] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + A_100 + + + + + + D50 + + + Outdoor + + + + [373.404 234.132 234.132 1586.2997] + + + [ 116.6849] + + + [1 1] + + + [0.108698 -0.057781] + + + + + + 1920x1080 + + + 1920x1080_D50_100 + + + + + [2.27077 1 1 1.678] + + + [1.61973 -0.43184 -0.178597 -0.378588 1.74723 -0.311869 0.0504386 -0.696697 1.7321] + + + [-38.0503 -12.5684 -33.4259] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D50_100 + + + + + + D65 + + + Outdoor + + + + [303.902 -12.5877 -12.5877 1364.0808] + + + [ 102.4529] + + + [1 1] + + + [0.167494 -0.036178] + + + + + + 1920x1080 + + + 1920x1080_D65_100 + + + + + [2.52254 1 1 1.3684] + + + [1.79236 -0.643233 -0.136052 -0.307611 1.68029 -0.333016 -0.000491909 -0.530799 1.6214] + + + [-53.5556 -19.3249 -43.7898] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D65_100 + + + + + + F2 (CWF) + + + Indoor + + + + [440.977 -185.372 -185.372 1247.8193] + + + [ 114.3146] + + + [1 1] + + + [0.0311265 -0.094536] + + + + + + 1920x1080 + + + 1920x1080_F2_100 + + + + + [2.08575 1 1 2.3609] + + + [2.01106 -0.707544 -0.28756 -0.507154 1.713 -0.140703 0.017089 -0.637034 1.7397] + + + [-65.3188 -45.8938 -114.1056] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F2_100 + + + + + + F11 (TL84) + + + Indoor + + + + [396.473 75.1515 75.1515 1174.6995] + + + [ 107.9546] + + + [1 1] + + + [0.00655912 -0.051741] + + + + + + 1920x1080 + + + 1920x1080_F11_100 + + + + + [1.70775 1 1 2.2382] + + + [1.73757 -0.471256 -0.249347 -0.501502 1.84827 -0.270678 0.00828138 -0.613284 1.7322] + + + [-69.4732 -63.9677 -158.0231] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F11_100 + + + + + + + + + 1920x1080_A_100 + + + 1920x1080 + + + A + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [77 77 115 115 115 154 153 154] + + + [43 43 65 65 65 86 87 86] + + + [ 100] + + + [2282 2122 1954 1751 1619 1498 1384 1323 1294 1292 1344 1428 1525 1652 1794 1936 2098 2186 2024 1885 1694 1545 1447 1334 1271 1238 1254 1293 1375 1481 1588 1744 1860 2018 2117 1956 1824 1646 1504 1392 1286 1226 1197 1202 1254 1337 1421 1554 1674 1825 1951 2059 1887 1747 1580 1439 1338 1237 1174 1150 1158 1199 1281 1377 1482 1632 1740 1896 1981 1828 1687 1530 1402 1300 1198 1133 1103 1118 1161 1238 1330 1446 1586 1701 1857 1929 1783 1654 1488 1366 1259 1162 1104 1078 1083 1126 1207 1299 1407 1542 1654 1791 1907 1752 1618 1459 1334 1229 1137 1079 1048 1059 1101 1183 1268 1380 1509 1619 1747 1873 1729 1606 1436 1319 1220 1119 1063 1033 1038 1085 1166 1254 1356 1487 1592 1738 1889 1737 1601 1440 1318 1217 1117 1060 1032 1034 1075 1157 1246 1361 1485 1597 1733 1899 1739 1613 1450 1325 1223 1125 1057 1024 1035 1072 1165 1244 1362 1498 1605 1744 1930 1765 1633 1470 1341 1236 1138 1070 1031 1032 1083 1173 1263 1376 1522 1640 1770 1964 1802 1664 1496 1369 1266 1159 1093 1039 1037 1094 1196 1290 1403 1550 1681 1827 2004 1836 1702 1535 1396 1288 1185 1110 1061 1050 1106 1213 1307 1429 1569 1712 1860 2044 1893 1730 1569 1428 1320 1210 1138 1083 1073 1129 1230 1344 1461 1609 1716 1876 2118 1930 1794 1606 1468 1353 1248 1167 1123 1113 1167 1274 1377 1505 1663 1782 1928 2141 1984 1812 1640 1497 1386 1274 1190 1150 1144 1194 1297 1401 1549 1689 1811 1961 2182 2039 1870 1683 1545 1413 1310 1234 1188 1176 1237 1325 1444 1551 1738 1870 2040] + + + [1943 1847 1722 1584 1482 1401 1324 1266 1242 1239 1280 1348 1416 1504 1613 1709 1806 1899 1782 1665 1540 1434 1358 1272 1228 1203 1212 1251 1304 1376 1468 1577 1663 1777 1844 1726 1626 1501 1399 1315 1250 1191 1169 1179 1213 1278 1343 1433 1532 1632 1736 1795 1672 1572 1447 1354 1273 1203 1150 1127 1137 1171 1229 1304 1382 1490 1573 1683 1734 1633 1523 1412 1318 1242 1167 1120 1095 1105 1134 1199 1266 1355 1454 1536 1656 1699 1590 1493 1382 1291 1220 1141 1094 1071 1075 1109 1174 1247 1324 1426 1507 1599 1684 1564 1472 1356 1268 1194 1122 1075 1050 1052 1090 1157 1219 1305 1405 1481 1574 1649 1553 1460 1348 1260 1188 1108 1062 1035 1035 1076 1144 1210 1294 1389 1471 1562 1657 1556 1459 1347 1258 1184 1106 1058 1031 1036 1070 1133 1207 1291 1388 1471 1565 1667 1564 1471 1355 1266 1191 1110 1057 1024 1037 1069 1142 1209 1293 1399 1473 1573 1692 1587 1484 1373 1283 1206 1123 1065 1032 1034 1071 1149 1221 1304 1416 1507 1591 1722 1620 1515 1395 1306 1225 1144 1086 1043 1038 1086 1167 1237 1328 1443 1544 1635 1764 1643 1553 1418 1328 1244 1166 1102 1063 1051 1100 1177 1264 1352 1452 1562 1661 1802 1686 1572 1447 1357 1273 1191 1128 1083 1073 1114 1202 1285 1375 1485 1578 1672 1840 1709 1621 1482 1377 1300 1221 1160 1113 1106 1148 1229 1312 1417 1519 1613 1717 1872 1755 1634 1513 1412 1320 1241 1179 1143 1127 1178 1254 1333 1455 1546 1642 1736 1917 1779 1673 1542 1434 1354 1261 1207 1165 1161 1202 1282 1362 1456 1579 1670 1790] + + + [1949 1830 1718 1582 1477 1401 1314 1261 1245 1243 1287 1345 1416 1511 1616 1714 1821 1882 1787 1661 1534 1436 1357 1273 1225 1199 1210 1242 1307 1373 1466 1577 1666 1776 1843 1718 1616 1493 1395 1313 1241 1193 1165 1173 1214 1272 1339 1440 1532 1637 1737 1789 1669 1565 1443 1350 1272 1197 1147 1129 1132 1166 1233 1304 1387 1496 1580 1688 1740 1626 1518 1410 1315 1238 1165 1115 1092 1106 1131 1199 1271 1355 1455 1533 1663 1695 1588 1491 1376 1290 1213 1138 1091 1068 1074 1107 1176 1249 1323 1433 1514 1613 1669 1562 1467 1356 1267 1190 1119 1070 1045 1051 1088 1154 1223 1307 1406 1488 1573 1645 1551 1454 1343 1255 1179 1104 1058 1032 1034 1075 1146 1212 1293 1400 1474 1562 1658 1551 1453 1343 1254 1180 1103 1056 1027 1036 1068 1132 1207 1291 1394 1475 1568 1672 1556 1468 1354 1261 1188 1107 1055 1024 1035 1068 1145 1209 1296 1400 1487 1573 1689 1587 1481 1366 1279 1199 1120 1065 1030 1033 1072 1149 1224 1308 1418 1512 1603 1730 1607 1518 1389 1301 1220 1142 1081 1041 1036 1087 1166 1240 1333 1447 1544 1644 1757 1641 1541 1419 1321 1248 1161 1100 1060 1051 1095 1185 1267 1352 1459 1567 1665 1797 1676 1566 1448 1345 1267 1187 1128 1079 1070 1113 1199 1284 1379 1495 1581 1678 1847 1706 1615 1474 1381 1300 1220 1152 1117 1102 1149 1237 1313 1415 1531 1618 1724 1875 1753 1632 1507 1400 1318 1237 1173 1136 1125 1177 1258 1331 1463 1553 1642 1756 1912 1774 1679 1529 1429 1347 1266 1204 1170 1153 1200 1285 1368 1452 1580 1681 1776] + + + [1840 1761 1646 1535 1434 1372 1301 1249 1244 1230 1271 1334 1395 1468 1586 1639 1751 1794 1683 1604 1490 1403 1333 1266 1218 1195 1204 1231 1293 1351 1436 1542 1613 1691 1733 1650 1560 1453 1371 1299 1234 1186 1167 1168 1210 1260 1319 1409 1498 1572 1670 1692 1602 1512 1413 1328 1260 1197 1144 1127 1136 1167 1230 1285 1363 1462 1524 1618 1653 1561 1471 1375 1302 1228 1163 1115 1091 1103 1131 1189 1254 1336 1422 1494 1592 1621 1529 1454 1349 1274 1206 1137 1092 1070 1074 1110 1169 1238 1312 1404 1468 1543 1602 1507 1434 1335 1261 1187 1114 1071 1046 1054 1088 1154 1217 1289 1376 1450 1518 1582 1503 1419 1328 1247 1179 1110 1058 1032 1033 1072 1143 1203 1278 1379 1434 1502 1594 1504 1428 1329 1253 1178 1101 1053 1031 1034 1068 1132 1196 1276 1366 1429 1513 1593 1512 1436 1339 1254 1191 1111 1051 1024 1035 1068 1135 1201 1279 1374 1438 1517 1619 1533 1453 1354 1275 1197 1123 1064 1025 1032 1069 1148 1210 1295 1389 1472 1540 1651 1564 1475 1375 1288 1218 1142 1080 1041 1035 1085 1160 1232 1313 1408 1492 1577 1674 1581 1505 1392 1313 1239 1162 1099 1060 1044 1091 1170 1250 1332 1432 1516 1592 1712 1616 1524 1425 1336 1262 1182 1122 1077 1068 1108 1189 1273 1352 1445 1520 1605 1762 1642 1570 1446 1360 1292 1212 1149 1114 1097 1142 1216 1288 1384 1481 1558 1631 1790 1684 1580 1465 1380 1303 1229 1171 1128 1118 1162 1235 1302 1419 1497 1576 1670 1816 1695 1612 1488 1401 1322 1258 1190 1156 1138 1185 1260 1337 1406 1526 1601 1674] + + + + + 1920x1080_D50_100 + + + 1920x1080 + + + D50 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [77 77 115 115 115 154 153 154] + + + [43 43 65 65 65 86 87 86] + + + [ 100] + + + [2282 2122 1954 1751 1619 1498 1384 1323 1294 1292 1344 1428 1525 1652 1794 1936 2098 2186 2024 1885 1694 1545 1447 1334 1271 1238 1254 1293 1375 1481 1588 1744 1860 2018 2117 1956 1824 1646 1504 1392 1286 1226 1197 1202 1254 1337 1421 1554 1674 1825 1951 2059 1887 1747 1580 1439 1338 1237 1174 1150 1158 1199 1281 1377 1482 1632 1740 1896 1981 1828 1687 1530 1402 1300 1198 1133 1103 1118 1161 1238 1330 1446 1586 1701 1857 1929 1783 1654 1488 1366 1259 1162 1104 1078 1083 1126 1207 1299 1407 1542 1654 1791 1907 1752 1618 1459 1334 1229 1137 1079 1048 1059 1101 1183 1268 1380 1509 1619 1747 1873 1729 1606 1436 1319 1220 1119 1063 1033 1038 1085 1166 1254 1356 1487 1592 1738 1889 1737 1601 1440 1318 1217 1117 1060 1032 1034 1075 1157 1246 1361 1485 1597 1733 1899 1739 1613 1450 1325 1223 1125 1057 1024 1035 1072 1165 1244 1362 1498 1605 1744 1930 1765 1633 1470 1341 1236 1138 1070 1031 1032 1083 1173 1263 1376 1522 1640 1770 1964 1802 1664 1496 1369 1266 1159 1093 1039 1037 1094 1196 1290 1403 1550 1681 1827 2004 1836 1702 1535 1396 1288 1185 1110 1061 1050 1106 1213 1307 1429 1569 1712 1860 2044 1893 1730 1569 1428 1320 1210 1138 1083 1073 1129 1230 1344 1461 1609 1716 1876 2118 1930 1794 1606 1468 1353 1248 1167 1123 1113 1167 1274 1377 1505 1663 1782 1928 2141 1984 1812 1640 1497 1386 1274 1190 1150 1144 1194 1297 1401 1549 1689 1811 1961 2182 2039 1870 1683 1545 1413 1310 1234 1188 1176 1237 1325 1444 1551 1738 1870 2040] + + + [1943 1847 1722 1584 1482 1401 1324 1266 1242 1239 1280 1348 1416 1504 1613 1709 1806 1899 1782 1665 1540 1434 1358 1272 1228 1203 1212 1251 1304 1376 1468 1577 1663 1777 1844 1726 1626 1501 1399 1315 1250 1191 1169 1179 1213 1278 1343 1433 1532 1632 1736 1795 1672 1572 1447 1354 1273 1203 1150 1127 1137 1171 1229 1304 1382 1490 1573 1683 1734 1633 1523 1412 1318 1242 1167 1120 1095 1105 1134 1199 1266 1355 1454 1536 1656 1699 1590 1493 1382 1291 1220 1141 1094 1071 1075 1109 1174 1247 1324 1426 1507 1599 1684 1564 1472 1356 1268 1194 1122 1075 1050 1052 1090 1157 1219 1305 1405 1481 1574 1649 1553 1460 1348 1260 1188 1108 1062 1035 1035 1076 1144 1210 1294 1389 1471 1562 1657 1556 1459 1347 1258 1184 1106 1058 1031 1036 1070 1133 1207 1291 1388 1471 1565 1667 1564 1471 1355 1266 1191 1110 1057 1024 1037 1069 1142 1209 1293 1399 1473 1573 1692 1587 1484 1373 1283 1206 1123 1065 1032 1034 1071 1149 1221 1304 1416 1507 1591 1722 1620 1515 1395 1306 1225 1144 1086 1043 1038 1086 1167 1237 1328 1443 1544 1635 1764 1643 1553 1418 1328 1244 1166 1102 1063 1051 1100 1177 1264 1352 1452 1562 1661 1802 1686 1572 1447 1357 1273 1191 1128 1083 1073 1114 1202 1285 1375 1485 1578 1672 1840 1709 1621 1482 1377 1300 1221 1160 1113 1106 1148 1229 1312 1417 1519 1613 1717 1872 1755 1634 1513 1412 1320 1241 1179 1143 1127 1178 1254 1333 1455 1546 1642 1736 1917 1779 1673 1542 1434 1354 1261 1207 1165 1161 1202 1282 1362 1456 1579 1670 1790] + + + [1949 1830 1718 1582 1477 1401 1314 1261 1245 1243 1287 1345 1416 1511 1616 1714 1821 1882 1787 1661 1534 1436 1357 1273 1225 1199 1210 1242 1307 1373 1466 1577 1666 1776 1843 1718 1616 1493 1395 1313 1241 1193 1165 1173 1214 1272 1339 1440 1532 1637 1737 1789 1669 1565 1443 1350 1272 1197 1147 1129 1132 1166 1233 1304 1387 1496 1580 1688 1740 1626 1518 1410 1315 1238 1165 1115 1092 1106 1131 1199 1271 1355 1455 1533 1663 1695 1588 1491 1376 1290 1213 1138 1091 1068 1074 1107 1176 1249 1323 1433 1514 1613 1669 1562 1467 1356 1267 1190 1119 1070 1045 1051 1088 1154 1223 1307 1406 1488 1573 1645 1551 1454 1343 1255 1179 1104 1058 1032 1034 1075 1146 1212 1293 1400 1474 1562 1658 1551 1453 1343 1254 1180 1103 1056 1027 1036 1068 1132 1207 1291 1394 1475 1568 1672 1556 1468 1354 1261 1188 1107 1055 1024 1035 1068 1145 1209 1296 1400 1487 1573 1689 1587 1481 1366 1279 1199 1120 1065 1030 1033 1072 1149 1224 1308 1418 1512 1603 1730 1607 1518 1389 1301 1220 1142 1081 1041 1036 1087 1166 1240 1333 1447 1544 1644 1757 1641 1541 1419 1321 1248 1161 1100 1060 1051 1095 1185 1267 1352 1459 1567 1665 1797 1676 1566 1448 1345 1267 1187 1128 1079 1070 1113 1199 1284 1379 1495 1581 1678 1847 1706 1615 1474 1381 1300 1220 1152 1117 1102 1149 1237 1313 1415 1531 1618 1724 1875 1753 1632 1507 1400 1318 1237 1173 1136 1125 1177 1258 1331 1463 1553 1642 1756 1912 1774 1679 1529 1429 1347 1266 1204 1170 1153 1200 1285 1368 1452 1580 1681 1776] + + + [1840 1761 1646 1535 1434 1372 1301 1249 1244 1230 1271 1334 1395 1468 1586 1639 1751 1794 1683 1604 1490 1403 1333 1266 1218 1195 1204 1231 1293 1351 1436 1542 1613 1691 1733 1650 1560 1453 1371 1299 1234 1186 1167 1168 1210 1260 1319 1409 1498 1572 1670 1692 1602 1512 1413 1328 1260 1197 1144 1127 1136 1167 1230 1285 1363 1462 1524 1618 1653 1561 1471 1375 1302 1228 1163 1115 1091 1103 1131 1189 1254 1336 1422 1494 1592 1621 1529 1454 1349 1274 1206 1137 1092 1070 1074 1110 1169 1238 1312 1404 1468 1543 1602 1507 1434 1335 1261 1187 1114 1071 1046 1054 1088 1154 1217 1289 1376 1450 1518 1582 1503 1419 1328 1247 1179 1110 1058 1032 1033 1072 1143 1203 1278 1379 1434 1502 1594 1504 1428 1329 1253 1178 1101 1053 1031 1034 1068 1132 1196 1276 1366 1429 1513 1593 1512 1436 1339 1254 1191 1111 1051 1024 1035 1068 1135 1201 1279 1374 1438 1517 1619 1533 1453 1354 1275 1197 1123 1064 1025 1032 1069 1148 1210 1295 1389 1472 1540 1651 1564 1475 1375 1288 1218 1142 1080 1041 1035 1085 1160 1232 1313 1408 1492 1577 1674 1581 1505 1392 1313 1239 1162 1099 1060 1044 1091 1170 1250 1332 1432 1516 1592 1712 1616 1524 1425 1336 1262 1182 1122 1077 1068 1108 1189 1273 1352 1445 1520 1605 1762 1642 1570 1446 1360 1292 1212 1149 1114 1097 1142 1216 1288 1384 1481 1558 1631 1790 1684 1580 1465 1380 1303 1229 1171 1128 1118 1162 1235 1302 1419 1497 1576 1670 1816 1695 1612 1488 1401 1322 1258 1190 1156 1138 1185 1260 1337 1406 1526 1601 1674] + + + + + 1920x1080_D65_100 + + + 1920x1080 + + + D65 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [77 77 115 115 115 154 153 154] + + + [43 43 65 65 65 86 87 86] + + + [ 100] + + + [2282 2122 1954 1751 1619 1498 1384 1323 1294 1292 1344 1428 1525 1652 1794 1936 2098 2186 2024 1885 1694 1545 1447 1334 1271 1238 1254 1293 1375 1481 1588 1744 1860 2018 2117 1956 1824 1646 1504 1392 1286 1226 1197 1202 1254 1337 1421 1554 1674 1825 1951 2059 1887 1747 1580 1439 1338 1237 1174 1150 1158 1199 1281 1377 1482 1632 1740 1896 1981 1828 1687 1530 1402 1300 1198 1133 1103 1118 1161 1238 1330 1446 1586 1701 1857 1929 1783 1654 1488 1366 1259 1162 1104 1078 1083 1126 1207 1299 1407 1542 1654 1791 1907 1752 1618 1459 1334 1229 1137 1079 1048 1059 1101 1183 1268 1380 1509 1619 1747 1873 1729 1606 1436 1319 1220 1119 1063 1033 1038 1085 1166 1254 1356 1487 1592 1738 1889 1737 1601 1440 1318 1217 1117 1060 1032 1034 1075 1157 1246 1361 1485 1597 1733 1899 1739 1613 1450 1325 1223 1125 1057 1024 1035 1072 1165 1244 1362 1498 1605 1744 1930 1765 1633 1470 1341 1236 1138 1070 1031 1032 1083 1173 1263 1376 1522 1640 1770 1964 1802 1664 1496 1369 1266 1159 1093 1039 1037 1094 1196 1290 1403 1550 1681 1827 2004 1836 1702 1535 1396 1288 1185 1110 1061 1050 1106 1213 1307 1429 1569 1712 1860 2044 1893 1730 1569 1428 1320 1210 1138 1083 1073 1129 1230 1344 1461 1609 1716 1876 2118 1930 1794 1606 1468 1353 1248 1167 1123 1113 1167 1274 1377 1505 1663 1782 1928 2141 1984 1812 1640 1497 1386 1274 1190 1150 1144 1194 1297 1401 1549 1689 1811 1961 2182 2039 1870 1683 1545 1413 1310 1234 1188 1176 1237 1325 1444 1551 1738 1870 2040] + + + [1943 1847 1722 1584 1482 1401 1324 1266 1242 1239 1280 1348 1416 1504 1613 1709 1806 1899 1782 1665 1540 1434 1358 1272 1228 1203 1212 1251 1304 1376 1468 1577 1663 1777 1844 1726 1626 1501 1399 1315 1250 1191 1169 1179 1213 1278 1343 1433 1532 1632 1736 1795 1672 1572 1447 1354 1273 1203 1150 1127 1137 1171 1229 1304 1382 1490 1573 1683 1734 1633 1523 1412 1318 1242 1167 1120 1095 1105 1134 1199 1266 1355 1454 1536 1656 1699 1590 1493 1382 1291 1220 1141 1094 1071 1075 1109 1174 1247 1324 1426 1507 1599 1684 1564 1472 1356 1268 1194 1122 1075 1050 1052 1090 1157 1219 1305 1405 1481 1574 1649 1553 1460 1348 1260 1188 1108 1062 1035 1035 1076 1144 1210 1294 1389 1471 1562 1657 1556 1459 1347 1258 1184 1106 1058 1031 1036 1070 1133 1207 1291 1388 1471 1565 1667 1564 1471 1355 1266 1191 1110 1057 1024 1037 1069 1142 1209 1293 1399 1473 1573 1692 1587 1484 1373 1283 1206 1123 1065 1032 1034 1071 1149 1221 1304 1416 1507 1591 1722 1620 1515 1395 1306 1225 1144 1086 1043 1038 1086 1167 1237 1328 1443 1544 1635 1764 1643 1553 1418 1328 1244 1166 1102 1063 1051 1100 1177 1264 1352 1452 1562 1661 1802 1686 1572 1447 1357 1273 1191 1128 1083 1073 1114 1202 1285 1375 1485 1578 1672 1840 1709 1621 1482 1377 1300 1221 1160 1113 1106 1148 1229 1312 1417 1519 1613 1717 1872 1755 1634 1513 1412 1320 1241 1179 1143 1127 1178 1254 1333 1455 1546 1642 1736 1917 1779 1673 1542 1434 1354 1261 1207 1165 1161 1202 1282 1362 1456 1579 1670 1790] + + + [1949 1830 1718 1582 1477 1401 1314 1261 1245 1243 1287 1345 1416 1511 1616 1714 1821 1882 1787 1661 1534 1436 1357 1273 1225 1199 1210 1242 1307 1373 1466 1577 1666 1776 1843 1718 1616 1493 1395 1313 1241 1193 1165 1173 1214 1272 1339 1440 1532 1637 1737 1789 1669 1565 1443 1350 1272 1197 1147 1129 1132 1166 1233 1304 1387 1496 1580 1688 1740 1626 1518 1410 1315 1238 1165 1115 1092 1106 1131 1199 1271 1355 1455 1533 1663 1695 1588 1491 1376 1290 1213 1138 1091 1068 1074 1107 1176 1249 1323 1433 1514 1613 1669 1562 1467 1356 1267 1190 1119 1070 1045 1051 1088 1154 1223 1307 1406 1488 1573 1645 1551 1454 1343 1255 1179 1104 1058 1032 1034 1075 1146 1212 1293 1400 1474 1562 1658 1551 1453 1343 1254 1180 1103 1056 1027 1036 1068 1132 1207 1291 1394 1475 1568 1672 1556 1468 1354 1261 1188 1107 1055 1024 1035 1068 1145 1209 1296 1400 1487 1573 1689 1587 1481 1366 1279 1199 1120 1065 1030 1033 1072 1149 1224 1308 1418 1512 1603 1730 1607 1518 1389 1301 1220 1142 1081 1041 1036 1087 1166 1240 1333 1447 1544 1644 1757 1641 1541 1419 1321 1248 1161 1100 1060 1051 1095 1185 1267 1352 1459 1567 1665 1797 1676 1566 1448 1345 1267 1187 1128 1079 1070 1113 1199 1284 1379 1495 1581 1678 1847 1706 1615 1474 1381 1300 1220 1152 1117 1102 1149 1237 1313 1415 1531 1618 1724 1875 1753 1632 1507 1400 1318 1237 1173 1136 1125 1177 1258 1331 1463 1553 1642 1756 1912 1774 1679 1529 1429 1347 1266 1204 1170 1153 1200 1285 1368 1452 1580 1681 1776] + + + [1840 1761 1646 1535 1434 1372 1301 1249 1244 1230 1271 1334 1395 1468 1586 1639 1751 1794 1683 1604 1490 1403 1333 1266 1218 1195 1204 1231 1293 1351 1436 1542 1613 1691 1733 1650 1560 1453 1371 1299 1234 1186 1167 1168 1210 1260 1319 1409 1498 1572 1670 1692 1602 1512 1413 1328 1260 1197 1144 1127 1136 1167 1230 1285 1363 1462 1524 1618 1653 1561 1471 1375 1302 1228 1163 1115 1091 1103 1131 1189 1254 1336 1422 1494 1592 1621 1529 1454 1349 1274 1206 1137 1092 1070 1074 1110 1169 1238 1312 1404 1468 1543 1602 1507 1434 1335 1261 1187 1114 1071 1046 1054 1088 1154 1217 1289 1376 1450 1518 1582 1503 1419 1328 1247 1179 1110 1058 1032 1033 1072 1143 1203 1278 1379 1434 1502 1594 1504 1428 1329 1253 1178 1101 1053 1031 1034 1068 1132 1196 1276 1366 1429 1513 1593 1512 1436 1339 1254 1191 1111 1051 1024 1035 1068 1135 1201 1279 1374 1438 1517 1619 1533 1453 1354 1275 1197 1123 1064 1025 1032 1069 1148 1210 1295 1389 1472 1540 1651 1564 1475 1375 1288 1218 1142 1080 1041 1035 1085 1160 1232 1313 1408 1492 1577 1674 1581 1505 1392 1313 1239 1162 1099 1060 1044 1091 1170 1250 1332 1432 1516 1592 1712 1616 1524 1425 1336 1262 1182 1122 1077 1068 1108 1189 1273 1352 1445 1520 1605 1762 1642 1570 1446 1360 1292 1212 1149 1114 1097 1142 1216 1288 1384 1481 1558 1631 1790 1684 1580 1465 1380 1303 1229 1171 1128 1118 1162 1235 1302 1419 1497 1576 1670 1816 1695 1612 1488 1401 1322 1258 1190 1156 1138 1185 1260 1337 1406 1526 1601 1674] + + + + + 1920x1080_F11_100 + + + 1920x1080 + + + F11 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [77 77 115 115 115 154 153 154] + + + [43 43 65 65 65 86 87 86] + + + [ 100] + + + [2282 2122 1954 1751 1619 1498 1384 1323 1294 1292 1344 1428 1525 1652 1794 1936 2098 2186 2024 1885 1694 1545 1447 1334 1271 1238 1254 1293 1375 1481 1588 1744 1860 2018 2117 1956 1824 1646 1504 1392 1286 1226 1197 1202 1254 1337 1421 1554 1674 1825 1951 2059 1887 1747 1580 1439 1338 1237 1174 1150 1158 1199 1281 1377 1482 1632 1740 1896 1981 1828 1687 1530 1402 1300 1198 1133 1103 1118 1161 1238 1330 1446 1586 1701 1857 1929 1783 1654 1488 1366 1259 1162 1104 1078 1083 1126 1207 1299 1407 1542 1654 1791 1907 1752 1618 1459 1334 1229 1137 1079 1048 1059 1101 1183 1268 1380 1509 1619 1747 1873 1729 1606 1436 1319 1220 1119 1063 1033 1038 1085 1166 1254 1356 1487 1592 1738 1889 1737 1601 1440 1318 1217 1117 1060 1032 1034 1075 1157 1246 1361 1485 1597 1733 1899 1739 1613 1450 1325 1223 1125 1057 1024 1035 1072 1165 1244 1362 1498 1605 1744 1930 1765 1633 1470 1341 1236 1138 1070 1031 1032 1083 1173 1263 1376 1522 1640 1770 1964 1802 1664 1496 1369 1266 1159 1093 1039 1037 1094 1196 1290 1403 1550 1681 1827 2004 1836 1702 1535 1396 1288 1185 1110 1061 1050 1106 1213 1307 1429 1569 1712 1860 2044 1893 1730 1569 1428 1320 1210 1138 1083 1073 1129 1230 1344 1461 1609 1716 1876 2118 1930 1794 1606 1468 1353 1248 1167 1123 1113 1167 1274 1377 1505 1663 1782 1928 2141 1984 1812 1640 1497 1386 1274 1190 1150 1144 1194 1297 1401 1549 1689 1811 1961 2182 2039 1870 1683 1545 1413 1310 1234 1188 1176 1237 1325 1444 1551 1738 1870 2040] + + + [1943 1847 1722 1584 1482 1401 1324 1266 1242 1239 1280 1348 1416 1504 1613 1709 1806 1899 1782 1665 1540 1434 1358 1272 1228 1203 1212 1251 1304 1376 1468 1577 1663 1777 1844 1726 1626 1501 1399 1315 1250 1191 1169 1179 1213 1278 1343 1433 1532 1632 1736 1795 1672 1572 1447 1354 1273 1203 1150 1127 1137 1171 1229 1304 1382 1490 1573 1683 1734 1633 1523 1412 1318 1242 1167 1120 1095 1105 1134 1199 1266 1355 1454 1536 1656 1699 1590 1493 1382 1291 1220 1141 1094 1071 1075 1109 1174 1247 1324 1426 1507 1599 1684 1564 1472 1356 1268 1194 1122 1075 1050 1052 1090 1157 1219 1305 1405 1481 1574 1649 1553 1460 1348 1260 1188 1108 1062 1035 1035 1076 1144 1210 1294 1389 1471 1562 1657 1556 1459 1347 1258 1184 1106 1058 1031 1036 1070 1133 1207 1291 1388 1471 1565 1667 1564 1471 1355 1266 1191 1110 1057 1024 1037 1069 1142 1209 1293 1399 1473 1573 1692 1587 1484 1373 1283 1206 1123 1065 1032 1034 1071 1149 1221 1304 1416 1507 1591 1722 1620 1515 1395 1306 1225 1144 1086 1043 1038 1086 1167 1237 1328 1443 1544 1635 1764 1643 1553 1418 1328 1244 1166 1102 1063 1051 1100 1177 1264 1352 1452 1562 1661 1802 1686 1572 1447 1357 1273 1191 1128 1083 1073 1114 1202 1285 1375 1485 1578 1672 1840 1709 1621 1482 1377 1300 1221 1160 1113 1106 1148 1229 1312 1417 1519 1613 1717 1872 1755 1634 1513 1412 1320 1241 1179 1143 1127 1178 1254 1333 1455 1546 1642 1736 1917 1779 1673 1542 1434 1354 1261 1207 1165 1161 1202 1282 1362 1456 1579 1670 1790] + + + [1949 1830 1718 1582 1477 1401 1314 1261 1245 1243 1287 1345 1416 1511 1616 1714 1821 1882 1787 1661 1534 1436 1357 1273 1225 1199 1210 1242 1307 1373 1466 1577 1666 1776 1843 1718 1616 1493 1395 1313 1241 1193 1165 1173 1214 1272 1339 1440 1532 1637 1737 1789 1669 1565 1443 1350 1272 1197 1147 1129 1132 1166 1233 1304 1387 1496 1580 1688 1740 1626 1518 1410 1315 1238 1165 1115 1092 1106 1131 1199 1271 1355 1455 1533 1663 1695 1588 1491 1376 1290 1213 1138 1091 1068 1074 1107 1176 1249 1323 1433 1514 1613 1669 1562 1467 1356 1267 1190 1119 1070 1045 1051 1088 1154 1223 1307 1406 1488 1573 1645 1551 1454 1343 1255 1179 1104 1058 1032 1034 1075 1146 1212 1293 1400 1474 1562 1658 1551 1453 1343 1254 1180 1103 1056 1027 1036 1068 1132 1207 1291 1394 1475 1568 1672 1556 1468 1354 1261 1188 1107 1055 1024 1035 1068 1145 1209 1296 1400 1487 1573 1689 1587 1481 1366 1279 1199 1120 1065 1030 1033 1072 1149 1224 1308 1418 1512 1603 1730 1607 1518 1389 1301 1220 1142 1081 1041 1036 1087 1166 1240 1333 1447 1544 1644 1757 1641 1541 1419 1321 1248 1161 1100 1060 1051 1095 1185 1267 1352 1459 1567 1665 1797 1676 1566 1448 1345 1267 1187 1128 1079 1070 1113 1199 1284 1379 1495 1581 1678 1847 1706 1615 1474 1381 1300 1220 1152 1117 1102 1149 1237 1313 1415 1531 1618 1724 1875 1753 1632 1507 1400 1318 1237 1173 1136 1125 1177 1258 1331 1463 1553 1642 1756 1912 1774 1679 1529 1429 1347 1266 1204 1170 1153 1200 1285 1368 1452 1580 1681 1776] + + + [1840 1761 1646 1535 1434 1372 1301 1249 1244 1230 1271 1334 1395 1468 1586 1639 1751 1794 1683 1604 1490 1403 1333 1266 1218 1195 1204 1231 1293 1351 1436 1542 1613 1691 1733 1650 1560 1453 1371 1299 1234 1186 1167 1168 1210 1260 1319 1409 1498 1572 1670 1692 1602 1512 1413 1328 1260 1197 1144 1127 1136 1167 1230 1285 1363 1462 1524 1618 1653 1561 1471 1375 1302 1228 1163 1115 1091 1103 1131 1189 1254 1336 1422 1494 1592 1621 1529 1454 1349 1274 1206 1137 1092 1070 1074 1110 1169 1238 1312 1404 1468 1543 1602 1507 1434 1335 1261 1187 1114 1071 1046 1054 1088 1154 1217 1289 1376 1450 1518 1582 1503 1419 1328 1247 1179 1110 1058 1032 1033 1072 1143 1203 1278 1379 1434 1502 1594 1504 1428 1329 1253 1178 1101 1053 1031 1034 1068 1132 1196 1276 1366 1429 1513 1593 1512 1436 1339 1254 1191 1111 1051 1024 1035 1068 1135 1201 1279 1374 1438 1517 1619 1533 1453 1354 1275 1197 1123 1064 1025 1032 1069 1148 1210 1295 1389 1472 1540 1651 1564 1475 1375 1288 1218 1142 1080 1041 1035 1085 1160 1232 1313 1408 1492 1577 1674 1581 1505 1392 1313 1239 1162 1099 1060 1044 1091 1170 1250 1332 1432 1516 1592 1712 1616 1524 1425 1336 1262 1182 1122 1077 1068 1108 1189 1273 1352 1445 1520 1605 1762 1642 1570 1446 1360 1292 1212 1149 1114 1097 1142 1216 1288 1384 1481 1558 1631 1790 1684 1580 1465 1380 1303 1229 1171 1128 1118 1162 1235 1302 1419 1497 1576 1670 1816 1695 1612 1488 1401 1322 1258 1190 1156 1138 1185 1260 1337 1406 1526 1601 1674] + + + + + 1920x1080_F2_100 + + + 1920x1080 + + + F2 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [77 77 115 115 115 154 153 154] + + + [43 43 65 65 65 86 87 86] + + + [ 100] + + + [2282 2122 1954 1751 1619 1498 1384 1323 1294 1292 1344 1428 1525 1652 1794 1936 2098 2186 2024 1885 1694 1545 1447 1334 1271 1238 1254 1293 1375 1481 1588 1744 1860 2018 2117 1956 1824 1646 1504 1392 1286 1226 1197 1202 1254 1337 1421 1554 1674 1825 1951 2059 1887 1747 1580 1439 1338 1237 1174 1150 1158 1199 1281 1377 1482 1632 1740 1896 1981 1828 1687 1530 1402 1300 1198 1133 1103 1118 1161 1238 1330 1446 1586 1701 1857 1929 1783 1654 1488 1366 1259 1162 1104 1078 1083 1126 1207 1299 1407 1542 1654 1791 1907 1752 1618 1459 1334 1229 1137 1079 1048 1059 1101 1183 1268 1380 1509 1619 1747 1873 1729 1606 1436 1319 1220 1119 1063 1033 1038 1085 1166 1254 1356 1487 1592 1738 1889 1737 1601 1440 1318 1217 1117 1060 1032 1034 1075 1157 1246 1361 1485 1597 1733 1899 1739 1613 1450 1325 1223 1125 1057 1024 1035 1072 1165 1244 1362 1498 1605 1744 1930 1765 1633 1470 1341 1236 1138 1070 1031 1032 1083 1173 1263 1376 1522 1640 1770 1964 1802 1664 1496 1369 1266 1159 1093 1039 1037 1094 1196 1290 1403 1550 1681 1827 2004 1836 1702 1535 1396 1288 1185 1110 1061 1050 1106 1213 1307 1429 1569 1712 1860 2044 1893 1730 1569 1428 1320 1210 1138 1083 1073 1129 1230 1344 1461 1609 1716 1876 2118 1930 1794 1606 1468 1353 1248 1167 1123 1113 1167 1274 1377 1505 1663 1782 1928 2141 1984 1812 1640 1497 1386 1274 1190 1150 1144 1194 1297 1401 1549 1689 1811 1961 2182 2039 1870 1683 1545 1413 1310 1234 1188 1176 1237 1325 1444 1551 1738 1870 2040] + + + [1943 1847 1722 1584 1482 1401 1324 1266 1242 1239 1280 1348 1416 1504 1613 1709 1806 1899 1782 1665 1540 1434 1358 1272 1228 1203 1212 1251 1304 1376 1468 1577 1663 1777 1844 1726 1626 1501 1399 1315 1250 1191 1169 1179 1213 1278 1343 1433 1532 1632 1736 1795 1672 1572 1447 1354 1273 1203 1150 1127 1137 1171 1229 1304 1382 1490 1573 1683 1734 1633 1523 1412 1318 1242 1167 1120 1095 1105 1134 1199 1266 1355 1454 1536 1656 1699 1590 1493 1382 1291 1220 1141 1094 1071 1075 1109 1174 1247 1324 1426 1507 1599 1684 1564 1472 1356 1268 1194 1122 1075 1050 1052 1090 1157 1219 1305 1405 1481 1574 1649 1553 1460 1348 1260 1188 1108 1062 1035 1035 1076 1144 1210 1294 1389 1471 1562 1657 1556 1459 1347 1258 1184 1106 1058 1031 1036 1070 1133 1207 1291 1388 1471 1565 1667 1564 1471 1355 1266 1191 1110 1057 1024 1037 1069 1142 1209 1293 1399 1473 1573 1692 1587 1484 1373 1283 1206 1123 1065 1032 1034 1071 1149 1221 1304 1416 1507 1591 1722 1620 1515 1395 1306 1225 1144 1086 1043 1038 1086 1167 1237 1328 1443 1544 1635 1764 1643 1553 1418 1328 1244 1166 1102 1063 1051 1100 1177 1264 1352 1452 1562 1661 1802 1686 1572 1447 1357 1273 1191 1128 1083 1073 1114 1202 1285 1375 1485 1578 1672 1840 1709 1621 1482 1377 1300 1221 1160 1113 1106 1148 1229 1312 1417 1519 1613 1717 1872 1755 1634 1513 1412 1320 1241 1179 1143 1127 1178 1254 1333 1455 1546 1642 1736 1917 1779 1673 1542 1434 1354 1261 1207 1165 1161 1202 1282 1362 1456 1579 1670 1790] + + + [1949 1830 1718 1582 1477 1401 1314 1261 1245 1243 1287 1345 1416 1511 1616 1714 1821 1882 1787 1661 1534 1436 1357 1273 1225 1199 1210 1242 1307 1373 1466 1577 1666 1776 1843 1718 1616 1493 1395 1313 1241 1193 1165 1173 1214 1272 1339 1440 1532 1637 1737 1789 1669 1565 1443 1350 1272 1197 1147 1129 1132 1166 1233 1304 1387 1496 1580 1688 1740 1626 1518 1410 1315 1238 1165 1115 1092 1106 1131 1199 1271 1355 1455 1533 1663 1695 1588 1491 1376 1290 1213 1138 1091 1068 1074 1107 1176 1249 1323 1433 1514 1613 1669 1562 1467 1356 1267 1190 1119 1070 1045 1051 1088 1154 1223 1307 1406 1488 1573 1645 1551 1454 1343 1255 1179 1104 1058 1032 1034 1075 1146 1212 1293 1400 1474 1562 1658 1551 1453 1343 1254 1180 1103 1056 1027 1036 1068 1132 1207 1291 1394 1475 1568 1672 1556 1468 1354 1261 1188 1107 1055 1024 1035 1068 1145 1209 1296 1400 1487 1573 1689 1587 1481 1366 1279 1199 1120 1065 1030 1033 1072 1149 1224 1308 1418 1512 1603 1730 1607 1518 1389 1301 1220 1142 1081 1041 1036 1087 1166 1240 1333 1447 1544 1644 1757 1641 1541 1419 1321 1248 1161 1100 1060 1051 1095 1185 1267 1352 1459 1567 1665 1797 1676 1566 1448 1345 1267 1187 1128 1079 1070 1113 1199 1284 1379 1495 1581 1678 1847 1706 1615 1474 1381 1300 1220 1152 1117 1102 1149 1237 1313 1415 1531 1618 1724 1875 1753 1632 1507 1400 1318 1237 1173 1136 1125 1177 1258 1331 1463 1553 1642 1756 1912 1774 1679 1529 1429 1347 1266 1204 1170 1153 1200 1285 1368 1452 1580 1681 1776] + + + [1840 1761 1646 1535 1434 1372 1301 1249 1244 1230 1271 1334 1395 1468 1586 1639 1751 1794 1683 1604 1490 1403 1333 1266 1218 1195 1204 1231 1293 1351 1436 1542 1613 1691 1733 1650 1560 1453 1371 1299 1234 1186 1167 1168 1210 1260 1319 1409 1498 1572 1670 1692 1602 1512 1413 1328 1260 1197 1144 1127 1136 1167 1230 1285 1363 1462 1524 1618 1653 1561 1471 1375 1302 1228 1163 1115 1091 1103 1131 1189 1254 1336 1422 1494 1592 1621 1529 1454 1349 1274 1206 1137 1092 1070 1074 1110 1169 1238 1312 1404 1468 1543 1602 1507 1434 1335 1261 1187 1114 1071 1046 1054 1088 1154 1217 1289 1376 1450 1518 1582 1503 1419 1328 1247 1179 1110 1058 1032 1033 1072 1143 1203 1278 1379 1434 1502 1594 1504 1428 1329 1253 1178 1101 1053 1031 1034 1068 1132 1196 1276 1366 1429 1513 1593 1512 1436 1339 1254 1191 1111 1051 1024 1035 1068 1135 1201 1279 1374 1438 1517 1619 1533 1453 1354 1275 1197 1123 1064 1025 1032 1069 1148 1210 1295 1389 1472 1540 1651 1564 1475 1375 1288 1218 1142 1080 1041 1035 1085 1160 1232 1313 1408 1492 1577 1674 1581 1505 1392 1313 1239 1162 1099 1060 1044 1091 1170 1250 1332 1432 1516 1592 1712 1616 1524 1425 1336 1262 1182 1122 1077 1068 1108 1189 1273 1352 1445 1520 1605 1762 1642 1570 1446 1360 1292 1212 1149 1114 1097 1142 1216 1288 1384 1481 1558 1631 1790 1684 1580 1465 1380 1303 1229 1171 1128 1118 1162 1235 1302 1419 1497 1576 1670 1816 1695 1612 1488 1401 1322 1258 1190 1156 1138 1185 1260 1337 1406 1526 1601 1674] + + + + + + + A_100 + + + [ 100] + + + [1.49795 -0.0462832 -0.444131 -0.551138 1.8009 -0.188796 0.0863862 -1.16732 2.1462] + + + [-30.8663 -13.8688 -62.6904] + + + [1.36712 1 1 3.0034] + + + + + D50_100 + + + [ 100] + + + [1.61973 -0.43184 -0.178597 -0.378588 1.74723 -0.311869 0.0504386 -0.696697 1.7321] + + + [-38.0503 -12.5684 -33.4259] + + + [2.27077 1 1 1.678] + + + + + D65_100 + + + [ 100] + + + [1.79236 -0.643233 -0.136052 -0.307611 1.68029 -0.333016 -0.000491909 -0.530799 1.6214] + + + [-53.5556 -19.3249 -43.7898] + + + [2.52254 1 1 1.3684] + + + + + F11_100 + + + [ 100] + + + [1.73757 -0.471256 -0.249347 -0.501502 1.84827 -0.270678 0.00828138 -0.613284 1.7322] + + + [-69.4732 -63.9677 -158.0231] + + + [1.70775 1 1 2.2382] + + + + + F2_100 + + + [ 100] + + + [2.01106 -0.707544 -0.28756 -0.507154 1.713 -0.140703 0.017089 -0.637034 1.7397] + + + [-65.3188 -45.8938 -114.1056] + + + [2.08575 1 1 2.3609] + + + + + H_100 + + + [ 100] + + + [1.32834 0.113811 -0.433888 -0.679715 1.87956 -0.139634 0.0994681 -1.32422 2.3402] + + + [-33.8443 -24.0092 -122.9322] + + + [1.14391 1 1 3.8028] + + + + + + [ -1] + + + + + [ 80] + + + [ 20] + + + [ 0.8] + + + [ 0.7] + + + [ 0.7] + + + [ 0.9] + + + + + 1920x1080_FPS_15 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 1920x1080_FPS_10 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 1920x1080_FPS_05 + + + + + fast + + + [ 1] + + + [ 1] + + + + + normal + + + [ 2] + + + [ 0.9] + + + + + slow + + + [ 4] + + + [ 0.9] + + + + + + + [ 8] + + + + + + 1920x1080 + + + 1920x1080 + + + [64 64 64 64] + + + + + + + linear + + + [256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4096] + + + [0 256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4095] + + + + + + [ -1] + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + + + 1920x1080 + + + 1920x1080 + + + [ 6] + + + [ 29] + + + [ 6] + + + [ 29] + + + [ 0] + + + [ 0] + + + [0.125 -0.4375 0.4375] + + + [-3.5 4.375 -1.875] + + + + + + + 1920x1080 + + + 1920x1080 + + + [ 1] + + + [1023 859 589 476 410 334 288 258 235 203 182 166 143 128 117 108 101] + + + [ 4] + + + [ 4] + + + [ 0.15] + + + [ 0] + + + [1 1 1 1] + + + + + + + 1920x1080 + + + 1920x1080 + + + + + ISP_DPCC_MODE + + + 0x0004 + + + + + ISP_DPCC_OUT_MODE + + + 0x0003 + + + + + ISP_DPCC_SET_USE + + + 0x0007 + + + + + ISP_DPCC_METHODS_SET1 + + + 0x1D1D + + + + + ISP_DPCC_METHODS_SET2 + + + 0x0707 + + + + + ISP_DPCC_METHODS_SET3 + + + 0x1F1F + + + + + ISP_DPCC_LINE_THRESH_1 + + + 0x0808 + + + + + ISP_DPCC_LINE_MAD_FAC_1 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_1 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_1 + + + 0x0A0A + + + + + ISP_DPCC_RG_FAC_1 + + + 0x2020 + + + + + ISP_DPCC_LINE_THRESH_2 + + + 0x100C + + + + + ISP_DPCC_LINE_MAD_FAC_2 + + + 0x1810 + + + + + ISP_DPCC_PG_FAC_2 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_2 + + + 0x0808 + + + + + ISP_DPCC_RG_FAC_2 + + + 0x0808 + + + + + ISP_DPCC_LINE_THRESH_3 + + + 0x2020 + + + + + ISP_DPCC_LINE_MAD_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_3 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_3 + + + 0x0806 + + + + + ISP_DPCC_RG_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_RO_LIMITS + + + 0x0A0A + + + + + ISP_DPCC_RND_OFFS + + + 0x0FFF + + + + + + + + + + on + + + +
diff --git a/drivers/IMX334/IMX334_3864x2180.xml b/drivers/IMX334/IMX334_3864x2180.xml new file mode 100644 index 0000000..2ae3d1f --- /dev/null +++ b/drivers/IMX334/IMX334_3864x2180.xml @@ -0,0 +1,1539 @@ + + +
+ + 15-Jul-2022 + + + hong + + + sc2310 + + + 2MLens_0715 + + + v2.1.1 + + + + + 3864x2180 + + + 0x00000001 + + + [ 3864] + + + [ 2180] + + + + + FPS_15 + + + [ 14.9916] + + + + + FPS_10 + + + [ 9.9944] + + + + + FPS_05 + + + [ 4.9972] + + + + + +
+ + + + + + 3864x2180 + + + 3864x2180 + + + [0.312492 0.450819 0.23669] + + + [-0.7399 0.0709331 0.668967 0.345275 -0.81341 0.46813] + + + [-0.74481 -0.667276 -2.7153] + + + [0.930564 1.0265 1.12244 1.21838 1.31432 1.41026 1.5062 1.6195 1.65613 1.74979 1.87815 1.95299 2.08183 2.17777 2.27371 2.4696] + + + [0.0594494 0.0548923 0.0512294 0.0472492 0.0446306 0.0425199 0.0410322 0.177014 0.310302 0.340953 0.168608 0.113754 0.0466876 0.0503825 0.0544594 0.063584] + + + [0.930564 1.02079 1.10262 1.1934 1.33019 1.41902 1.48294 1.60213 1.71432 1.79667 1.89229 2.01745 2.11657 2.20776 2.29061 2.4696] + + + [0.0405506 0.0683495 0.0934971 0.130669 0.144892 0.140332 0.141432 0.158091 0.204458 0.210744 0.221824 0.246499 0.242726 0.189205 0.17663 0.036416] + + + [0.8 0.90731 1.01462 1.12193 1.22924 1.33655 1.53212 1.57122 1.61331 1.68792 1.78386 1.97841 2.04665 2.24005 2.39897 2.5096] + + + [0.11674 0.110633 0.105483 0.101224 0.096918 0.0940591 0.111862 0.222281 0.328691 0.417498 0.379934 0.138274 0.144405 0.12586 0.16665 0.11686] + + + [0.8 0.90731 1.05178 1.14174 1.24796 1.33411 1.43406 1.53184 1.68057 1.74397 1.85555 1.9593 2.07767 2.23092 2.39086 2.5096] + + + [0.0832596 0.0893669 0.142538 0.172086 0.210436 0.228354 0.232203 0.239668 0.269923 0.289884 0.283281 0.298762 0.307798 0.285477 0.206964 0.083142] + + + [ 0.93056] + + + [ 2.4696] + + + [ 2.5096] + + + [ 1.794] + + + D50 + + + [ 44.5676] + + + [0.75 1.28836 1.77672 2.164 2.6 3.0618] + + + [114 114 105 95 95 90] + + + [83 83 110 120 122 128] + + + [28 27 18 16 9 9] + + + [123 123 123 123 123 120] + + + [123 123 123 123 123 126] + + + [5 5 5 5 5 5] + + + [ 1] + + + [ 0.8] + + + [ 0.05] + + + + [ 0.05] + + + [ 0.05] + + + [ 0.4] + + + [ 0.5] + + + [ 0.9] + + + [ 0.5] + + + [ 50] + + + [ 1] + + + [ 0.5] + + + + + + + + A + + + Indoor + + + + [1207.95 1609.35 1609.35 4143.2801] + + + [ 247.3246] + + + [1 1] + + + [-0.0687979 -0.012008] + + + + + + 3864x2180 + + + 3864x2180_A_100 + + + + + [1.2679 1 1 2.4534] + + + [1.62147 -0.0445277 -0.546563 -0.261854 1.52127 -0.211003 0.0194952 -1.45836 2.4966] + + + [-124.39 -122.251 -145.4412] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + A_100 + + + + + + D50 + + + Indoor + + + + [330.699 34.5927 34.5927 1629.0054] + + + [ 116.6849] + + + [1 1] + + + [0.050113 -0.068793] + + + + + + 3864x2180 + + + 3864x2180_D50_100 + + + + + [2.01726 1 1 1.6274] + + + [1.5183 -0.341669 -0.150056 -0.23618 1.63938 -0.35403 -0.0308324 -0.524599 1.5759] + + + [-81.0317 -71.6168 -83.757] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D50_100 + + + + + + D65 + + + Outdoor + + + + [333.92 -176.3 -176.3 1334.0628] + + + [ 102.4529] + + + [1 1] + + + [0.0955004 -0.020029] + + + + + + 3864x2180 + + + 3864x2180_D65_100 + + + + + [2.41759 1 1 1.4225] + + + [1.74788 -0.562271 -0.124172 -0.189096 1.66277 -0.416313 0.0171408 -0.552856 1.5549] + + + [-84.4486 -70.1682 -78.446] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D65_100 + + + + + + D75 + + + Outdoor + + + + [358.543 -250.477 -250.477 1258.5652] + + + [ 99.2022] + + + [1 1] + + + [0.152003 -0.013334] + + + + + + 3864x2180 + + + 3864x2180_D75_100 + + + + + [2.46127 1 1 1.3353] + + + [1.84441 -0.649995 -0.151423 -0.17172 1.61099 -0.39653 0.0218805 -0.506897 1.5048] + + + [-87.0209 -74.4697 -80.8341] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D75_100 + + + + + + F2 (CWF) + + + Indoor + + + + [518.32 -301.304 -301.304 1170.4769] + + + [ 114.3146] + + + [1 1] + + + [0.166784 -0.0016528] + + + + + + 3864x2180 + + + 3864x2180_F2_100 + + + + + [2.02785 1 1 2.1442] + + + [2.06572 -0.770765 -0.278229 -0.301217 1.49376 -0.146116 -0.0191357 -0.55147 1.6208] + + + [-68.4901 -66.8725 -80.6516] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F2_100 + + + + + + F11 (TL84) + + + Indoor + + + + [392.346 -49.1799 -49.1799 1178.8269] + + + [ 107.9546] + + + [1 1] + + + [-0.150241 0.01294] + + + + + + 3864x2180 + + + 3864x2180_F11_100 + + + + + [1.79738 1 1 2.0643] + + + [1.52028 -0.278563 -0.200712 -0.305258 1.64403 -0.267838 -0.00796981 -0.719295 1.7485] + + + [-73.4915 -72.5498 -86.9231] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F11_100 + + + + + + F12 + + + Indoor + + + + [548.609 299.864 299.864 1633.0404] + + + [ 142.8837] + + + [1 1] + + + [0.0327322 -0.045325] + + + + + + 3864x2180 + + + 3864x2180_F12_100 + + + + + [1.00205 1 1 3.0084] + + + [1.43944 0.0309125 -0.463539 -0.338943 1.6164 -0.231193 -0.0812989 -1.41021 2.5269] + + + [-27.8837 -30.4929 -71.3504] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F12_100 + + + + + + + + + 3864x2180_A_100 + + + 3864x2180 + + + A + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [154 115 115 115 115 116 115 115] + + + [87 65 66 65 65 65 66 65] + + + [ 100] + + + [6996 5246 4193 3468 2940 2567 2317 2178 2138 2201 2367 2648 3056 3596 4461 5522 7657 6411 4679 3744 3061 2583 2230 1983 1841 1794 1855 2018 2305 2674 3196 3921 5008 6785 6011 4356 3443 2828 2361 2012 1765 1623 1575 1637 1803 2080 2452 2956 3628 4640 6414 5749 4060 3237 2627 2174 1829 1579 1435 1387 1452 1617 1883 2263 2756 3397 4341 6088 5479 3849 3059 2487 2017 1678 1430 1281 1242 1300 1463 1739 2113 2595 3226 4111 5827 5293 3689 2933 2356 1907 1557 1313 1179 1142 1191 1343 1618 1998 2469 3089 3950 5611 5142 3577 2827 2265 1813 1472 1228 1104 1074 1116 1258 1529 1896 2380 2986 3811 5481 5019 3498 2777 2203 1761 1414 1173 1064 1036 1080 1202 1471 1842 2315 2919 3737 5365 5013 3477 2752 2184 1746 1390 1157 1050 1024 1062 1182 1451 1822 2296 2889 3691 5335 5023 3500 2771 2197 1752 1407 1165 1059 1029 1073 1197 1460 1836 2305 2917 3703 5389 5113 3546 2821 2245 1799 1454 1210 1092 1066 1107 1243 1510 1879 2367 2952 3773 5456 5244 3650 2899 2325 1874 1526 1284 1154 1122 1166 1317 1588 1956 2438 3050 3876 5599 5430 3815 3016 2447 1987 1642 1392 1248 1207 1263 1432 1696 2072 2545 3167 4057 5769 5730 4006 3190 2597 2131 1786 1536 1391 1345 1412 1571 1846 2214 2695 3346 4287 6027 6004 4282 3400 2783 2309 1964 1715 1571 1526 1590 1753 2030 2411 2898 3580 4557 6359 6405 4635 3684 3018 2533 2171 1927 1779 1735 1798 1966 2242 2616 3133 3850 4895 6728 6990 5146 4135 3379 2881 2512 2248 2104 2062 2125 2293 2576 2966 3529 4361 5407 7331] + + + [5658 4216 3382 2789 2408 2132 1955 1860 1829 1873 1982 2185 2481 2897 3574 4400 6206 5171 3790 3021 2502 2141 1898 1723 1627 1594 1636 1748 1945 2210 2593 3174 4020 5463 4880 3521 2809 2325 1984 1745 1571 1471 1438 1484 1595 1785 2046 2415 2934 3742 5151 4625 3298 2635 2186 1856 1619 1438 1333 1303 1345 1466 1653 1916 2269 2763 3500 4899 4423 3145 2509 2079 1754 1513 1331 1222 1191 1235 1353 1549 1810 2159 2623 3327 4691 4271 3011 2416 1998 1672 1427 1245 1141 1115 1151 1267 1464 1732 2069 2525 3189 4550 4139 2926 2345 1931 1614 1365 1180 1087 1061 1096 1198 1404 1667 2001 2448 3096 4416 4076 2873 2305 1888 1577 1322 1141 1055 1035 1064 1158 1359 1625 1958 2398 3027 4351 4047 2844 2285 1880 1562 1308 1125 1042 1024 1053 1145 1344 1612 1942 2374 3011 4308 4077 2859 2300 1888 1570 1319 1133 1051 1030 1060 1153 1352 1617 1954 2385 3022 4325 4124 2910 2331 1918 1598 1351 1169 1078 1053 1088 1187 1386 1650 1987 2423 3060 4402 4244 2978 2393 1974 1648 1403 1219 1121 1099 1128 1244 1445 1699 2042 2483 3152 4491 4392 3100 2475 2048 1723 1485 1301 1193 1162 1203 1324 1519 1779 2117 2581 3277 4655 4571 3262 2601 2155 1823 1579 1405 1298 1265 1311 1429 1621 1879 2224 2707 3460 4848 4852 3467 2763 2294 1944 1705 1532 1432 1399 1442 1554 1744 2006 2369 2888 3673 5104 5135 3736 2970 2460 2102 1845 1674 1576 1549 1587 1699 1891 2156 2543 3111 3951 5379 5638 4118 3318 2730 2342 2080 1895 1799 1767 1808 1923 2120 2408 2832 3486 4309 6071] + + + [5639 4199 3382 2786 2399 2133 1952 1855 1829 1874 1980 2190 2477 2913 3575 4386 6248 5164 3786 3011 2497 2145 1892 1726 1627 1592 1636 1747 1945 2211 2592 3173 4017 5442 4859 3506 2794 2320 1982 1745 1569 1467 1438 1480 1597 1784 2046 2410 2926 3730 5168 4603 3285 2627 2178 1855 1613 1439 1332 1299 1345 1463 1652 1911 2266 2754 3489 4890 4392 3130 2500 2073 1748 1510 1327 1222 1189 1231 1352 1548 1807 2156 2618 3323 4677 4251 2994 2410 1990 1670 1425 1242 1140 1110 1150 1265 1461 1726 2067 2515 3188 4541 4122 2911 2343 1925 1609 1364 1178 1084 1060 1094 1197 1402 1662 2000 2445 3085 4401 4059 2857 2297 1887 1574 1319 1139 1056 1032 1062 1158 1357 1625 1956 2393 3024 4339 4028 2838 2283 1872 1562 1306 1125 1043 1024 1053 1144 1344 1610 1940 2378 2999 4300 4051 2851 2291 1883 1569 1317 1134 1050 1029 1060 1153 1353 1618 1954 2386 3015 4328 4111 2906 2328 1914 1598 1350 1168 1078 1055 1088 1190 1388 1649 1986 2420 3068 4388 4222 2970 2382 1970 1646 1404 1220 1122 1099 1129 1245 1444 1701 2042 2483 3147 4488 4367 3086 2470 2044 1721 1485 1300 1194 1162 1205 1326 1521 1776 2114 2578 3273 4645 4566 3245 2593 2151 1821 1580 1406 1299 1266 1312 1430 1623 1881 2225 2703 3453 4841 4814 3468 2746 2295 1952 1705 1535 1432 1400 1444 1556 1747 2005 2365 2887 3668 5098 5119 3724 2962 2449 2100 1851 1675 1579 1548 1592 1701 1891 2163 2543 3102 3938 5382 5596 4127 3308 2728 2349 2079 1902 1798 1768 1810 1928 2125 2410 2830 3494 4313 6049] + + + [5475 4058 3292 2707 2333 2072 1895 1804 1780 1817 1918 2117 2396 2800 3452 4209 6064 5008 3666 2931 2432 2082 1847 1686 1596 1562 1599 1703 1887 2144 2511 3063 3872 5236 4697 3421 2717 2262 1935 1703 1539 1444 1416 1454 1557 1740 1984 2331 2829 3599 4975 4467 3191 2559 2117 1810 1584 1416 1320 1286 1330 1433 1612 1859 2195 2663 3367 4718 4262 3031 2436 2023 1710 1490 1312 1212 1184 1222 1333 1516 1756 2085 2528 3196 4520 4145 2908 2341 1938 1637 1405 1238 1138 1110 1146 1251 1435 1684 1997 2433 3069 4350 4002 2826 2275 1878 1582 1350 1176 1086 1060 1093 1191 1376 1619 1935 2360 2967 4257 3940 2764 2234 1839 1542 1311 1135 1055 1037 1062 1150 1338 1584 1892 2309 2914 4160 3915 2749 2216 1825 1533 1293 1128 1045 1024 1053 1136 1324 1571 1880 2284 2887 4152 3925 2769 2236 1831 1540 1303 1131 1054 1030 1059 1146 1327 1580 1891 2298 2905 4150 3991 2817 2260 1865 1567 1339 1165 1079 1058 1087 1179 1364 1605 1920 2336 2937 4215 4110 2871 2332 1919 1615 1387 1215 1118 1098 1126 1230 1416 1653 1967 2401 3025 4333 4210 3013 2394 1994 1684 1459 1289 1188 1155 1196 1309 1484 1723 2035 2480 3152 4453 4442 3142 2520 2098 1773 1553 1384 1285 1257 1296 1405 1581 1824 2143 2600 3322 4662 4647 3368 2682 2232 1903 1665 1509 1411 1378 1422 1523 1697 1941 2281 2779 3512 4931 4956 3612 2885 2398 2045 1803 1638 1550 1521 1555 1660 1832 2097 2455 2989 3774 5173 5443 4030 3240 2674 2294 2037 1862 1759 1739 1769 1878 2072 2334 2754 3377 4155 5801] + + + + + 3864x2180_D50_100 + + + 3864x2180 + + + D50 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [154 115 115 115 115 116 115 115] + + + [87 65 66 65 65 65 66 65] + + + [ 100] + + + [6996 5246 4193 3468 2940 2567 2317 2178 2138 2201 2367 2648 3056 3596 4461 5522 7657 6411 4679 3744 3061 2583 2230 1983 1841 1794 1855 2018 2305 2674 3196 3921 5008 6785 6011 4356 3443 2828 2361 2012 1765 1623 1575 1637 1803 2080 2452 2956 3628 4640 6414 5749 4060 3237 2627 2174 1829 1579 1435 1387 1452 1617 1883 2263 2756 3397 4341 6088 5479 3849 3059 2487 2017 1678 1430 1281 1242 1300 1463 1739 2113 2595 3226 4111 5827 5293 3689 2933 2356 1907 1557 1313 1179 1142 1191 1343 1618 1998 2469 3089 3950 5611 5142 3577 2827 2265 1813 1472 1228 1104 1074 1116 1258 1529 1896 2380 2986 3811 5481 5019 3498 2777 2203 1761 1414 1173 1064 1036 1080 1202 1471 1842 2315 2919 3737 5365 5013 3477 2752 2184 1746 1390 1157 1050 1024 1062 1182 1451 1822 2296 2889 3691 5335 5023 3500 2771 2197 1752 1407 1165 1059 1029 1073 1197 1460 1836 2305 2917 3703 5389 5113 3546 2821 2245 1799 1454 1210 1092 1066 1107 1243 1510 1879 2367 2952 3773 5456 5244 3650 2899 2325 1874 1526 1284 1154 1122 1166 1317 1588 1956 2438 3050 3876 5599 5430 3815 3016 2447 1987 1642 1392 1248 1207 1263 1432 1696 2072 2545 3167 4057 5769 5730 4006 3190 2597 2131 1786 1536 1391 1345 1412 1571 1846 2214 2695 3346 4287 6027 6004 4282 3400 2783 2309 1964 1715 1571 1526 1590 1753 2030 2411 2898 3580 4557 6359 6405 4635 3684 3018 2533 2171 1927 1779 1735 1798 1966 2242 2616 3133 3850 4895 6728 6990 5146 4135 3379 2881 2512 2248 2104 2062 2125 2293 2576 2966 3529 4361 5407 7331] + + + [5658 4216 3382 2789 2408 2132 1955 1860 1829 1873 1982 2185 2481 2897 3574 4400 6206 5171 3790 3021 2502 2141 1898 1723 1627 1594 1636 1748 1945 2210 2593 3174 4020 5463 4880 3521 2809 2325 1984 1745 1571 1471 1438 1484 1595 1785 2046 2415 2934 3742 5151 4625 3298 2635 2186 1856 1619 1438 1333 1303 1345 1466 1653 1916 2269 2763 3500 4899 4423 3145 2509 2079 1754 1513 1331 1222 1191 1235 1353 1549 1810 2159 2623 3327 4691 4271 3011 2416 1998 1672 1427 1245 1141 1115 1151 1267 1464 1732 2069 2525 3189 4550 4139 2926 2345 1931 1614 1365 1180 1087 1061 1096 1198 1404 1667 2001 2448 3096 4416 4076 2873 2305 1888 1577 1322 1141 1055 1035 1064 1158 1359 1625 1958 2398 3027 4351 4047 2844 2285 1880 1562 1308 1125 1042 1024 1053 1145 1344 1612 1942 2374 3011 4308 4077 2859 2300 1888 1570 1319 1133 1051 1030 1060 1153 1352 1617 1954 2385 3022 4325 4124 2910 2331 1918 1598 1351 1169 1078 1053 1088 1187 1386 1650 1987 2423 3060 4402 4244 2978 2393 1974 1648 1403 1219 1121 1099 1128 1244 1445 1699 2042 2483 3152 4491 4392 3100 2475 2048 1723 1485 1301 1193 1162 1203 1324 1519 1779 2117 2581 3277 4655 4571 3262 2601 2155 1823 1579 1405 1298 1265 1311 1429 1621 1879 2224 2707 3460 4848 4852 3467 2763 2294 1944 1705 1532 1432 1399 1442 1554 1744 2006 2369 2888 3673 5104 5135 3736 2970 2460 2102 1845 1674 1576 1549 1587 1699 1891 2156 2543 3111 3951 5379 5638 4118 3318 2730 2342 2080 1895 1799 1767 1808 1923 2120 2408 2832 3486 4309 6071] + + + [5639 4199 3382 2786 2399 2133 1952 1855 1829 1874 1980 2190 2477 2913 3575 4386 6248 5164 3786 3011 2497 2145 1892 1726 1627 1592 1636 1747 1945 2211 2592 3173 4017 5442 4859 3506 2794 2320 1982 1745 1569 1467 1438 1480 1597 1784 2046 2410 2926 3730 5168 4603 3285 2627 2178 1855 1613 1439 1332 1299 1345 1463 1652 1911 2266 2754 3489 4890 4392 3130 2500 2073 1748 1510 1327 1222 1189 1231 1352 1548 1807 2156 2618 3323 4677 4251 2994 2410 1990 1670 1425 1242 1140 1110 1150 1265 1461 1726 2067 2515 3188 4541 4122 2911 2343 1925 1609 1364 1178 1084 1060 1094 1197 1402 1662 2000 2445 3085 4401 4059 2857 2297 1887 1574 1319 1139 1056 1032 1062 1158 1357 1625 1956 2393 3024 4339 4028 2838 2283 1872 1562 1306 1125 1043 1024 1053 1144 1344 1610 1940 2378 2999 4300 4051 2851 2291 1883 1569 1317 1134 1050 1029 1060 1153 1353 1618 1954 2386 3015 4328 4111 2906 2328 1914 1598 1350 1168 1078 1055 1088 1190 1388 1649 1986 2420 3068 4388 4222 2970 2382 1970 1646 1404 1220 1122 1099 1129 1245 1444 1701 2042 2483 3147 4488 4367 3086 2470 2044 1721 1485 1300 1194 1162 1205 1326 1521 1776 2114 2578 3273 4645 4566 3245 2593 2151 1821 1580 1406 1299 1266 1312 1430 1623 1881 2225 2703 3453 4841 4814 3468 2746 2295 1952 1705 1535 1432 1400 1444 1556 1747 2005 2365 2887 3668 5098 5119 3724 2962 2449 2100 1851 1675 1579 1548 1592 1701 1891 2163 2543 3102 3938 5382 5596 4127 3308 2728 2349 2079 1902 1798 1768 1810 1928 2125 2410 2830 3494 4313 6049] + + + [5475 4058 3292 2707 2333 2072 1895 1804 1780 1817 1918 2117 2396 2800 3452 4209 6064 5008 3666 2931 2432 2082 1847 1686 1596 1562 1599 1703 1887 2144 2511 3063 3872 5236 4697 3421 2717 2262 1935 1703 1539 1444 1416 1454 1557 1740 1984 2331 2829 3599 4975 4467 3191 2559 2117 1810 1584 1416 1320 1286 1330 1433 1612 1859 2195 2663 3367 4718 4262 3031 2436 2023 1710 1490 1312 1212 1184 1222 1333 1516 1756 2085 2528 3196 4520 4145 2908 2341 1938 1637 1405 1238 1138 1110 1146 1251 1435 1684 1997 2433 3069 4350 4002 2826 2275 1878 1582 1350 1176 1086 1060 1093 1191 1376 1619 1935 2360 2967 4257 3940 2764 2234 1839 1542 1311 1135 1055 1037 1062 1150 1338 1584 1892 2309 2914 4160 3915 2749 2216 1825 1533 1293 1128 1045 1024 1053 1136 1324 1571 1880 2284 2887 4152 3925 2769 2236 1831 1540 1303 1131 1054 1030 1059 1146 1327 1580 1891 2298 2905 4150 3991 2817 2260 1865 1567 1339 1165 1079 1058 1087 1179 1364 1605 1920 2336 2937 4215 4110 2871 2332 1919 1615 1387 1215 1118 1098 1126 1230 1416 1653 1967 2401 3025 4333 4210 3013 2394 1994 1684 1459 1289 1188 1155 1196 1309 1484 1723 2035 2480 3152 4453 4442 3142 2520 2098 1773 1553 1384 1285 1257 1296 1405 1581 1824 2143 2600 3322 4662 4647 3368 2682 2232 1903 1665 1509 1411 1378 1422 1523 1697 1941 2281 2779 3512 4931 4956 3612 2885 2398 2045 1803 1638 1550 1521 1555 1660 1832 2097 2455 2989 3774 5173 5443 4030 3240 2674 2294 2037 1862 1759 1739 1769 1878 2072 2334 2754 3377 4155 5801] + + + + + 3864x2180_D65_100 + + + 3864x2180 + + + D65 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [154 115 115 115 115 116 115 115] + + + [87 65 66 65 65 65 66 65] + + + [ 100] + + + [6996 5246 4193 3468 2940 2567 2317 2178 2138 2201 2367 2648 3056 3596 4461 5522 7657 6411 4679 3744 3061 2583 2230 1983 1841 1794 1855 2018 2305 2674 3196 3921 5008 6785 6011 4356 3443 2828 2361 2012 1765 1623 1575 1637 1803 2080 2452 2956 3628 4640 6414 5749 4060 3237 2627 2174 1829 1579 1435 1387 1452 1617 1883 2263 2756 3397 4341 6088 5479 3849 3059 2487 2017 1678 1430 1281 1242 1300 1463 1739 2113 2595 3226 4111 5827 5293 3689 2933 2356 1907 1557 1313 1179 1142 1191 1343 1618 1998 2469 3089 3950 5611 5142 3577 2827 2265 1813 1472 1228 1104 1074 1116 1258 1529 1896 2380 2986 3811 5481 5019 3498 2777 2203 1761 1414 1173 1064 1036 1080 1202 1471 1842 2315 2919 3737 5365 5013 3477 2752 2184 1746 1390 1157 1050 1024 1062 1182 1451 1822 2296 2889 3691 5335 5023 3500 2771 2197 1752 1407 1165 1059 1029 1073 1197 1460 1836 2305 2917 3703 5389 5113 3546 2821 2245 1799 1454 1210 1092 1066 1107 1243 1510 1879 2367 2952 3773 5456 5244 3650 2899 2325 1874 1526 1284 1154 1122 1166 1317 1588 1956 2438 3050 3876 5599 5430 3815 3016 2447 1987 1642 1392 1248 1207 1263 1432 1696 2072 2545 3167 4057 5769 5730 4006 3190 2597 2131 1786 1536 1391 1345 1412 1571 1846 2214 2695 3346 4287 6027 6004 4282 3400 2783 2309 1964 1715 1571 1526 1590 1753 2030 2411 2898 3580 4557 6359 6405 4635 3684 3018 2533 2171 1927 1779 1735 1798 1966 2242 2616 3133 3850 4895 6728 6990 5146 4135 3379 2881 2512 2248 2104 2062 2125 2293 2576 2966 3529 4361 5407 7331] + + + [5658 4216 3382 2789 2408 2132 1955 1860 1829 1873 1982 2185 2481 2897 3574 4400 6206 5171 3790 3021 2502 2141 1898 1723 1627 1594 1636 1748 1945 2210 2593 3174 4020 5463 4880 3521 2809 2325 1984 1745 1571 1471 1438 1484 1595 1785 2046 2415 2934 3742 5151 4625 3298 2635 2186 1856 1619 1438 1333 1303 1345 1466 1653 1916 2269 2763 3500 4899 4423 3145 2509 2079 1754 1513 1331 1222 1191 1235 1353 1549 1810 2159 2623 3327 4691 4271 3011 2416 1998 1672 1427 1245 1141 1115 1151 1267 1464 1732 2069 2525 3189 4550 4139 2926 2345 1931 1614 1365 1180 1087 1061 1096 1198 1404 1667 2001 2448 3096 4416 4076 2873 2305 1888 1577 1322 1141 1055 1035 1064 1158 1359 1625 1958 2398 3027 4351 4047 2844 2285 1880 1562 1308 1125 1042 1024 1053 1145 1344 1612 1942 2374 3011 4308 4077 2859 2300 1888 1570 1319 1133 1051 1030 1060 1153 1352 1617 1954 2385 3022 4325 4124 2910 2331 1918 1598 1351 1169 1078 1053 1088 1187 1386 1650 1987 2423 3060 4402 4244 2978 2393 1974 1648 1403 1219 1121 1099 1128 1244 1445 1699 2042 2483 3152 4491 4392 3100 2475 2048 1723 1485 1301 1193 1162 1203 1324 1519 1779 2117 2581 3277 4655 4571 3262 2601 2155 1823 1579 1405 1298 1265 1311 1429 1621 1879 2224 2707 3460 4848 4852 3467 2763 2294 1944 1705 1532 1432 1399 1442 1554 1744 2006 2369 2888 3673 5104 5135 3736 2970 2460 2102 1845 1674 1576 1549 1587 1699 1891 2156 2543 3111 3951 5379 5638 4118 3318 2730 2342 2080 1895 1799 1767 1808 1923 2120 2408 2832 3486 4309 6071] + + + [5639 4199 3382 2786 2399 2133 1952 1855 1829 1874 1980 2190 2477 2913 3575 4386 6248 5164 3786 3011 2497 2145 1892 1726 1627 1592 1636 1747 1945 2211 2592 3173 4017 5442 4859 3506 2794 2320 1982 1745 1569 1467 1438 1480 1597 1784 2046 2410 2926 3730 5168 4603 3285 2627 2178 1855 1613 1439 1332 1299 1345 1463 1652 1911 2266 2754 3489 4890 4392 3130 2500 2073 1748 1510 1327 1222 1189 1231 1352 1548 1807 2156 2618 3323 4677 4251 2994 2410 1990 1670 1425 1242 1140 1110 1150 1265 1461 1726 2067 2515 3188 4541 4122 2911 2343 1925 1609 1364 1178 1084 1060 1094 1197 1402 1662 2000 2445 3085 4401 4059 2857 2297 1887 1574 1319 1139 1056 1032 1062 1158 1357 1625 1956 2393 3024 4339 4028 2838 2283 1872 1562 1306 1125 1043 1024 1053 1144 1344 1610 1940 2378 2999 4300 4051 2851 2291 1883 1569 1317 1134 1050 1029 1060 1153 1353 1618 1954 2386 3015 4328 4111 2906 2328 1914 1598 1350 1168 1078 1055 1088 1190 1388 1649 1986 2420 3068 4388 4222 2970 2382 1970 1646 1404 1220 1122 1099 1129 1245 1444 1701 2042 2483 3147 4488 4367 3086 2470 2044 1721 1485 1300 1194 1162 1205 1326 1521 1776 2114 2578 3273 4645 4566 3245 2593 2151 1821 1580 1406 1299 1266 1312 1430 1623 1881 2225 2703 3453 4841 4814 3468 2746 2295 1952 1705 1535 1432 1400 1444 1556 1747 2005 2365 2887 3668 5098 5119 3724 2962 2449 2100 1851 1675 1579 1548 1592 1701 1891 2163 2543 3102 3938 5382 5596 4127 3308 2728 2349 2079 1902 1798 1768 1810 1928 2125 2410 2830 3494 4313 6049] + + + [5475 4058 3292 2707 2333 2072 1895 1804 1780 1817 1918 2117 2396 2800 3452 4209 6064 5008 3666 2931 2432 2082 1847 1686 1596 1562 1599 1703 1887 2144 2511 3063 3872 5236 4697 3421 2717 2262 1935 1703 1539 1444 1416 1454 1557 1740 1984 2331 2829 3599 4975 4467 3191 2559 2117 1810 1584 1416 1320 1286 1330 1433 1612 1859 2195 2663 3367 4718 4262 3031 2436 2023 1710 1490 1312 1212 1184 1222 1333 1516 1756 2085 2528 3196 4520 4145 2908 2341 1938 1637 1405 1238 1138 1110 1146 1251 1435 1684 1997 2433 3069 4350 4002 2826 2275 1878 1582 1350 1176 1086 1060 1093 1191 1376 1619 1935 2360 2967 4257 3940 2764 2234 1839 1542 1311 1135 1055 1037 1062 1150 1338 1584 1892 2309 2914 4160 3915 2749 2216 1825 1533 1293 1128 1045 1024 1053 1136 1324 1571 1880 2284 2887 4152 3925 2769 2236 1831 1540 1303 1131 1054 1030 1059 1146 1327 1580 1891 2298 2905 4150 3991 2817 2260 1865 1567 1339 1165 1079 1058 1087 1179 1364 1605 1920 2336 2937 4215 4110 2871 2332 1919 1615 1387 1215 1118 1098 1126 1230 1416 1653 1967 2401 3025 4333 4210 3013 2394 1994 1684 1459 1289 1188 1155 1196 1309 1484 1723 2035 2480 3152 4453 4442 3142 2520 2098 1773 1553 1384 1285 1257 1296 1405 1581 1824 2143 2600 3322 4662 4647 3368 2682 2232 1903 1665 1509 1411 1378 1422 1523 1697 1941 2281 2779 3512 4931 4956 3612 2885 2398 2045 1803 1638 1550 1521 1555 1660 1832 2097 2455 2989 3774 5173 5443 4030 3240 2674 2294 2037 1862 1759 1739 1769 1878 2072 2334 2754 3377 4155 5801] + + + + + 3864x2180_D75_100 + + + 3864x2180 + + + D75 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [154 115 115 115 115 116 115 115] + + + [87 65 66 65 65 65 66 65] + + + [ 100] + + + [6996 5246 4193 3468 2940 2567 2317 2178 2138 2201 2367 2648 3056 3596 4461 5522 7657 6411 4679 3744 3061 2583 2230 1983 1841 1794 1855 2018 2305 2674 3196 3921 5008 6785 6011 4356 3443 2828 2361 2012 1765 1623 1575 1637 1803 2080 2452 2956 3628 4640 6414 5749 4060 3237 2627 2174 1829 1579 1435 1387 1452 1617 1883 2263 2756 3397 4341 6088 5479 3849 3059 2487 2017 1678 1430 1281 1242 1300 1463 1739 2113 2595 3226 4111 5827 5293 3689 2933 2356 1907 1557 1313 1179 1142 1191 1343 1618 1998 2469 3089 3950 5611 5142 3577 2827 2265 1813 1472 1228 1104 1074 1116 1258 1529 1896 2380 2986 3811 5481 5019 3498 2777 2203 1761 1414 1173 1064 1036 1080 1202 1471 1842 2315 2919 3737 5365 5013 3477 2752 2184 1746 1390 1157 1050 1024 1062 1182 1451 1822 2296 2889 3691 5335 5023 3500 2771 2197 1752 1407 1165 1059 1029 1073 1197 1460 1836 2305 2917 3703 5389 5113 3546 2821 2245 1799 1454 1210 1092 1066 1107 1243 1510 1879 2367 2952 3773 5456 5244 3650 2899 2325 1874 1526 1284 1154 1122 1166 1317 1588 1956 2438 3050 3876 5599 5430 3815 3016 2447 1987 1642 1392 1248 1207 1263 1432 1696 2072 2545 3167 4057 5769 5730 4006 3190 2597 2131 1786 1536 1391 1345 1412 1571 1846 2214 2695 3346 4287 6027 6004 4282 3400 2783 2309 1964 1715 1571 1526 1590 1753 2030 2411 2898 3580 4557 6359 6405 4635 3684 3018 2533 2171 1927 1779 1735 1798 1966 2242 2616 3133 3850 4895 6728 6990 5146 4135 3379 2881 2512 2248 2104 2062 2125 2293 2576 2966 3529 4361 5407 7331] + + + [5658 4216 3382 2789 2408 2132 1955 1860 1829 1873 1982 2185 2481 2897 3574 4400 6206 5171 3790 3021 2502 2141 1898 1723 1627 1594 1636 1748 1945 2210 2593 3174 4020 5463 4880 3521 2809 2325 1984 1745 1571 1471 1438 1484 1595 1785 2046 2415 2934 3742 5151 4625 3298 2635 2186 1856 1619 1438 1333 1303 1345 1466 1653 1916 2269 2763 3500 4899 4423 3145 2509 2079 1754 1513 1331 1222 1191 1235 1353 1549 1810 2159 2623 3327 4691 4271 3011 2416 1998 1672 1427 1245 1141 1115 1151 1267 1464 1732 2069 2525 3189 4550 4139 2926 2345 1931 1614 1365 1180 1087 1061 1096 1198 1404 1667 2001 2448 3096 4416 4076 2873 2305 1888 1577 1322 1141 1055 1035 1064 1158 1359 1625 1958 2398 3027 4351 4047 2844 2285 1880 1562 1308 1125 1042 1024 1053 1145 1344 1612 1942 2374 3011 4308 4077 2859 2300 1888 1570 1319 1133 1051 1030 1060 1153 1352 1617 1954 2385 3022 4325 4124 2910 2331 1918 1598 1351 1169 1078 1053 1088 1187 1386 1650 1987 2423 3060 4402 4244 2978 2393 1974 1648 1403 1219 1121 1099 1128 1244 1445 1699 2042 2483 3152 4491 4392 3100 2475 2048 1723 1485 1301 1193 1162 1203 1324 1519 1779 2117 2581 3277 4655 4571 3262 2601 2155 1823 1579 1405 1298 1265 1311 1429 1621 1879 2224 2707 3460 4848 4852 3467 2763 2294 1944 1705 1532 1432 1399 1442 1554 1744 2006 2369 2888 3673 5104 5135 3736 2970 2460 2102 1845 1674 1576 1549 1587 1699 1891 2156 2543 3111 3951 5379 5638 4118 3318 2730 2342 2080 1895 1799 1767 1808 1923 2120 2408 2832 3486 4309 6071] + + + [5639 4199 3382 2786 2399 2133 1952 1855 1829 1874 1980 2190 2477 2913 3575 4386 6248 5164 3786 3011 2497 2145 1892 1726 1627 1592 1636 1747 1945 2211 2592 3173 4017 5442 4859 3506 2794 2320 1982 1745 1569 1467 1438 1480 1597 1784 2046 2410 2926 3730 5168 4603 3285 2627 2178 1855 1613 1439 1332 1299 1345 1463 1652 1911 2266 2754 3489 4890 4392 3130 2500 2073 1748 1510 1327 1222 1189 1231 1352 1548 1807 2156 2618 3323 4677 4251 2994 2410 1990 1670 1425 1242 1140 1110 1150 1265 1461 1726 2067 2515 3188 4541 4122 2911 2343 1925 1609 1364 1178 1084 1060 1094 1197 1402 1662 2000 2445 3085 4401 4059 2857 2297 1887 1574 1319 1139 1056 1032 1062 1158 1357 1625 1956 2393 3024 4339 4028 2838 2283 1872 1562 1306 1125 1043 1024 1053 1144 1344 1610 1940 2378 2999 4300 4051 2851 2291 1883 1569 1317 1134 1050 1029 1060 1153 1353 1618 1954 2386 3015 4328 4111 2906 2328 1914 1598 1350 1168 1078 1055 1088 1190 1388 1649 1986 2420 3068 4388 4222 2970 2382 1970 1646 1404 1220 1122 1099 1129 1245 1444 1701 2042 2483 3147 4488 4367 3086 2470 2044 1721 1485 1300 1194 1162 1205 1326 1521 1776 2114 2578 3273 4645 4566 3245 2593 2151 1821 1580 1406 1299 1266 1312 1430 1623 1881 2225 2703 3453 4841 4814 3468 2746 2295 1952 1705 1535 1432 1400 1444 1556 1747 2005 2365 2887 3668 5098 5119 3724 2962 2449 2100 1851 1675 1579 1548 1592 1701 1891 2163 2543 3102 3938 5382 5596 4127 3308 2728 2349 2079 1902 1798 1768 1810 1928 2125 2410 2830 3494 4313 6049] + + + [5475 4058 3292 2707 2333 2072 1895 1804 1780 1817 1918 2117 2396 2800 3452 4209 6064 5008 3666 2931 2432 2082 1847 1686 1596 1562 1599 1703 1887 2144 2511 3063 3872 5236 4697 3421 2717 2262 1935 1703 1539 1444 1416 1454 1557 1740 1984 2331 2829 3599 4975 4467 3191 2559 2117 1810 1584 1416 1320 1286 1330 1433 1612 1859 2195 2663 3367 4718 4262 3031 2436 2023 1710 1490 1312 1212 1184 1222 1333 1516 1756 2085 2528 3196 4520 4145 2908 2341 1938 1637 1405 1238 1138 1110 1146 1251 1435 1684 1997 2433 3069 4350 4002 2826 2275 1878 1582 1350 1176 1086 1060 1093 1191 1376 1619 1935 2360 2967 4257 3940 2764 2234 1839 1542 1311 1135 1055 1037 1062 1150 1338 1584 1892 2309 2914 4160 3915 2749 2216 1825 1533 1293 1128 1045 1024 1053 1136 1324 1571 1880 2284 2887 4152 3925 2769 2236 1831 1540 1303 1131 1054 1030 1059 1146 1327 1580 1891 2298 2905 4150 3991 2817 2260 1865 1567 1339 1165 1079 1058 1087 1179 1364 1605 1920 2336 2937 4215 4110 2871 2332 1919 1615 1387 1215 1118 1098 1126 1230 1416 1653 1967 2401 3025 4333 4210 3013 2394 1994 1684 1459 1289 1188 1155 1196 1309 1484 1723 2035 2480 3152 4453 4442 3142 2520 2098 1773 1553 1384 1285 1257 1296 1405 1581 1824 2143 2600 3322 4662 4647 3368 2682 2232 1903 1665 1509 1411 1378 1422 1523 1697 1941 2281 2779 3512 4931 4956 3612 2885 2398 2045 1803 1638 1550 1521 1555 1660 1832 2097 2455 2989 3774 5173 5443 4030 3240 2674 2294 2037 1862 1759 1739 1769 1878 2072 2334 2754 3377 4155 5801] + + + + + 3864x2180_F11_100 + + + 3864x2180 + + + F11 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [154 115 115 115 115 116 115 115] + + + [87 65 66 65 65 65 66 65] + + + [ 100] + + + [6996 5246 4193 3468 2940 2567 2317 2178 2138 2201 2367 2648 3056 3596 4461 5522 7657 6411 4679 3744 3061 2583 2230 1983 1841 1794 1855 2018 2305 2674 3196 3921 5008 6785 6011 4356 3443 2828 2361 2012 1765 1623 1575 1637 1803 2080 2452 2956 3628 4640 6414 5749 4060 3237 2627 2174 1829 1579 1435 1387 1452 1617 1883 2263 2756 3397 4341 6088 5479 3849 3059 2487 2017 1678 1430 1281 1242 1300 1463 1739 2113 2595 3226 4111 5827 5293 3689 2933 2356 1907 1557 1313 1179 1142 1191 1343 1618 1998 2469 3089 3950 5611 5142 3577 2827 2265 1813 1472 1228 1104 1074 1116 1258 1529 1896 2380 2986 3811 5481 5019 3498 2777 2203 1761 1414 1173 1064 1036 1080 1202 1471 1842 2315 2919 3737 5365 5013 3477 2752 2184 1746 1390 1157 1050 1024 1062 1182 1451 1822 2296 2889 3691 5335 5023 3500 2771 2197 1752 1407 1165 1059 1029 1073 1197 1460 1836 2305 2917 3703 5389 5113 3546 2821 2245 1799 1454 1210 1092 1066 1107 1243 1510 1879 2367 2952 3773 5456 5244 3650 2899 2325 1874 1526 1284 1154 1122 1166 1317 1588 1956 2438 3050 3876 5599 5430 3815 3016 2447 1987 1642 1392 1248 1207 1263 1432 1696 2072 2545 3167 4057 5769 5730 4006 3190 2597 2131 1786 1536 1391 1345 1412 1571 1846 2214 2695 3346 4287 6027 6004 4282 3400 2783 2309 1964 1715 1571 1526 1590 1753 2030 2411 2898 3580 4557 6359 6405 4635 3684 3018 2533 2171 1927 1779 1735 1798 1966 2242 2616 3133 3850 4895 6728 6990 5146 4135 3379 2881 2512 2248 2104 2062 2125 2293 2576 2966 3529 4361 5407 7331] + + + [5658 4216 3382 2789 2408 2132 1955 1860 1829 1873 1982 2185 2481 2897 3574 4400 6206 5171 3790 3021 2502 2141 1898 1723 1627 1594 1636 1748 1945 2210 2593 3174 4020 5463 4880 3521 2809 2325 1984 1745 1571 1471 1438 1484 1595 1785 2046 2415 2934 3742 5151 4625 3298 2635 2186 1856 1619 1438 1333 1303 1345 1466 1653 1916 2269 2763 3500 4899 4423 3145 2509 2079 1754 1513 1331 1222 1191 1235 1353 1549 1810 2159 2623 3327 4691 4271 3011 2416 1998 1672 1427 1245 1141 1115 1151 1267 1464 1732 2069 2525 3189 4550 4139 2926 2345 1931 1614 1365 1180 1087 1061 1096 1198 1404 1667 2001 2448 3096 4416 4076 2873 2305 1888 1577 1322 1141 1055 1035 1064 1158 1359 1625 1958 2398 3027 4351 4047 2844 2285 1880 1562 1308 1125 1042 1024 1053 1145 1344 1612 1942 2374 3011 4308 4077 2859 2300 1888 1570 1319 1133 1051 1030 1060 1153 1352 1617 1954 2385 3022 4325 4124 2910 2331 1918 1598 1351 1169 1078 1053 1088 1187 1386 1650 1987 2423 3060 4402 4244 2978 2393 1974 1648 1403 1219 1121 1099 1128 1244 1445 1699 2042 2483 3152 4491 4392 3100 2475 2048 1723 1485 1301 1193 1162 1203 1324 1519 1779 2117 2581 3277 4655 4571 3262 2601 2155 1823 1579 1405 1298 1265 1311 1429 1621 1879 2224 2707 3460 4848 4852 3467 2763 2294 1944 1705 1532 1432 1399 1442 1554 1744 2006 2369 2888 3673 5104 5135 3736 2970 2460 2102 1845 1674 1576 1549 1587 1699 1891 2156 2543 3111 3951 5379 5638 4118 3318 2730 2342 2080 1895 1799 1767 1808 1923 2120 2408 2832 3486 4309 6071] + + + [5639 4199 3382 2786 2399 2133 1952 1855 1829 1874 1980 2190 2477 2913 3575 4386 6248 5164 3786 3011 2497 2145 1892 1726 1627 1592 1636 1747 1945 2211 2592 3173 4017 5442 4859 3506 2794 2320 1982 1745 1569 1467 1438 1480 1597 1784 2046 2410 2926 3730 5168 4603 3285 2627 2178 1855 1613 1439 1332 1299 1345 1463 1652 1911 2266 2754 3489 4890 4392 3130 2500 2073 1748 1510 1327 1222 1189 1231 1352 1548 1807 2156 2618 3323 4677 4251 2994 2410 1990 1670 1425 1242 1140 1110 1150 1265 1461 1726 2067 2515 3188 4541 4122 2911 2343 1925 1609 1364 1178 1084 1060 1094 1197 1402 1662 2000 2445 3085 4401 4059 2857 2297 1887 1574 1319 1139 1056 1032 1062 1158 1357 1625 1956 2393 3024 4339 4028 2838 2283 1872 1562 1306 1125 1043 1024 1053 1144 1344 1610 1940 2378 2999 4300 4051 2851 2291 1883 1569 1317 1134 1050 1029 1060 1153 1353 1618 1954 2386 3015 4328 4111 2906 2328 1914 1598 1350 1168 1078 1055 1088 1190 1388 1649 1986 2420 3068 4388 4222 2970 2382 1970 1646 1404 1220 1122 1099 1129 1245 1444 1701 2042 2483 3147 4488 4367 3086 2470 2044 1721 1485 1300 1194 1162 1205 1326 1521 1776 2114 2578 3273 4645 4566 3245 2593 2151 1821 1580 1406 1299 1266 1312 1430 1623 1881 2225 2703 3453 4841 4814 3468 2746 2295 1952 1705 1535 1432 1400 1444 1556 1747 2005 2365 2887 3668 5098 5119 3724 2962 2449 2100 1851 1675 1579 1548 1592 1701 1891 2163 2543 3102 3938 5382 5596 4127 3308 2728 2349 2079 1902 1798 1768 1810 1928 2125 2410 2830 3494 4313 6049] + + + [5475 4058 3292 2707 2333 2072 1895 1804 1780 1817 1918 2117 2396 2800 3452 4209 6064 5008 3666 2931 2432 2082 1847 1686 1596 1562 1599 1703 1887 2144 2511 3063 3872 5236 4697 3421 2717 2262 1935 1703 1539 1444 1416 1454 1557 1740 1984 2331 2829 3599 4975 4467 3191 2559 2117 1810 1584 1416 1320 1286 1330 1433 1612 1859 2195 2663 3367 4718 4262 3031 2436 2023 1710 1490 1312 1212 1184 1222 1333 1516 1756 2085 2528 3196 4520 4145 2908 2341 1938 1637 1405 1238 1138 1110 1146 1251 1435 1684 1997 2433 3069 4350 4002 2826 2275 1878 1582 1350 1176 1086 1060 1093 1191 1376 1619 1935 2360 2967 4257 3940 2764 2234 1839 1542 1311 1135 1055 1037 1062 1150 1338 1584 1892 2309 2914 4160 3915 2749 2216 1825 1533 1293 1128 1045 1024 1053 1136 1324 1571 1880 2284 2887 4152 3925 2769 2236 1831 1540 1303 1131 1054 1030 1059 1146 1327 1580 1891 2298 2905 4150 3991 2817 2260 1865 1567 1339 1165 1079 1058 1087 1179 1364 1605 1920 2336 2937 4215 4110 2871 2332 1919 1615 1387 1215 1118 1098 1126 1230 1416 1653 1967 2401 3025 4333 4210 3013 2394 1994 1684 1459 1289 1188 1155 1196 1309 1484 1723 2035 2480 3152 4453 4442 3142 2520 2098 1773 1553 1384 1285 1257 1296 1405 1581 1824 2143 2600 3322 4662 4647 3368 2682 2232 1903 1665 1509 1411 1378 1422 1523 1697 1941 2281 2779 3512 4931 4956 3612 2885 2398 2045 1803 1638 1550 1521 1555 1660 1832 2097 2455 2989 3774 5173 5443 4030 3240 2674 2294 2037 1862 1759 1739 1769 1878 2072 2334 2754 3377 4155 5801] + + + + + 3864x2180_F12_100 + + + 3864x2180 + + + F12 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [154 115 115 115 115 116 115 115] + + + [87 65 66 65 65 65 66 65] + + + [ 100] + + + [6996 5246 4193 3468 2940 2567 2317 2178 2138 2201 2367 2648 3056 3596 4461 5522 7657 6411 4679 3744 3061 2583 2230 1983 1841 1794 1855 2018 2305 2674 3196 3921 5008 6785 6011 4356 3443 2828 2361 2012 1765 1623 1575 1637 1803 2080 2452 2956 3628 4640 6414 5749 4060 3237 2627 2174 1829 1579 1435 1387 1452 1617 1883 2263 2756 3397 4341 6088 5479 3849 3059 2487 2017 1678 1430 1281 1242 1300 1463 1739 2113 2595 3226 4111 5827 5293 3689 2933 2356 1907 1557 1313 1179 1142 1191 1343 1618 1998 2469 3089 3950 5611 5142 3577 2827 2265 1813 1472 1228 1104 1074 1116 1258 1529 1896 2380 2986 3811 5481 5019 3498 2777 2203 1761 1414 1173 1064 1036 1080 1202 1471 1842 2315 2919 3737 5365 5013 3477 2752 2184 1746 1390 1157 1050 1024 1062 1182 1451 1822 2296 2889 3691 5335 5023 3500 2771 2197 1752 1407 1165 1059 1029 1073 1197 1460 1836 2305 2917 3703 5389 5113 3546 2821 2245 1799 1454 1210 1092 1066 1107 1243 1510 1879 2367 2952 3773 5456 5244 3650 2899 2325 1874 1526 1284 1154 1122 1166 1317 1588 1956 2438 3050 3876 5599 5430 3815 3016 2447 1987 1642 1392 1248 1207 1263 1432 1696 2072 2545 3167 4057 5769 5730 4006 3190 2597 2131 1786 1536 1391 1345 1412 1571 1846 2214 2695 3346 4287 6027 6004 4282 3400 2783 2309 1964 1715 1571 1526 1590 1753 2030 2411 2898 3580 4557 6359 6405 4635 3684 3018 2533 2171 1927 1779 1735 1798 1966 2242 2616 3133 3850 4895 6728 6990 5146 4135 3379 2881 2512 2248 2104 2062 2125 2293 2576 2966 3529 4361 5407 7331] + + + [5658 4216 3382 2789 2408 2132 1955 1860 1829 1873 1982 2185 2481 2897 3574 4400 6206 5171 3790 3021 2502 2141 1898 1723 1627 1594 1636 1748 1945 2210 2593 3174 4020 5463 4880 3521 2809 2325 1984 1745 1571 1471 1438 1484 1595 1785 2046 2415 2934 3742 5151 4625 3298 2635 2186 1856 1619 1438 1333 1303 1345 1466 1653 1916 2269 2763 3500 4899 4423 3145 2509 2079 1754 1513 1331 1222 1191 1235 1353 1549 1810 2159 2623 3327 4691 4271 3011 2416 1998 1672 1427 1245 1141 1115 1151 1267 1464 1732 2069 2525 3189 4550 4139 2926 2345 1931 1614 1365 1180 1087 1061 1096 1198 1404 1667 2001 2448 3096 4416 4076 2873 2305 1888 1577 1322 1141 1055 1035 1064 1158 1359 1625 1958 2398 3027 4351 4047 2844 2285 1880 1562 1308 1125 1042 1024 1053 1145 1344 1612 1942 2374 3011 4308 4077 2859 2300 1888 1570 1319 1133 1051 1030 1060 1153 1352 1617 1954 2385 3022 4325 4124 2910 2331 1918 1598 1351 1169 1078 1053 1088 1187 1386 1650 1987 2423 3060 4402 4244 2978 2393 1974 1648 1403 1219 1121 1099 1128 1244 1445 1699 2042 2483 3152 4491 4392 3100 2475 2048 1723 1485 1301 1193 1162 1203 1324 1519 1779 2117 2581 3277 4655 4571 3262 2601 2155 1823 1579 1405 1298 1265 1311 1429 1621 1879 2224 2707 3460 4848 4852 3467 2763 2294 1944 1705 1532 1432 1399 1442 1554 1744 2006 2369 2888 3673 5104 5135 3736 2970 2460 2102 1845 1674 1576 1549 1587 1699 1891 2156 2543 3111 3951 5379 5638 4118 3318 2730 2342 2080 1895 1799 1767 1808 1923 2120 2408 2832 3486 4309 6071] + + + [5639 4199 3382 2786 2399 2133 1952 1855 1829 1874 1980 2190 2477 2913 3575 4386 6248 5164 3786 3011 2497 2145 1892 1726 1627 1592 1636 1747 1945 2211 2592 3173 4017 5442 4859 3506 2794 2320 1982 1745 1569 1467 1438 1480 1597 1784 2046 2410 2926 3730 5168 4603 3285 2627 2178 1855 1613 1439 1332 1299 1345 1463 1652 1911 2266 2754 3489 4890 4392 3130 2500 2073 1748 1510 1327 1222 1189 1231 1352 1548 1807 2156 2618 3323 4677 4251 2994 2410 1990 1670 1425 1242 1140 1110 1150 1265 1461 1726 2067 2515 3188 4541 4122 2911 2343 1925 1609 1364 1178 1084 1060 1094 1197 1402 1662 2000 2445 3085 4401 4059 2857 2297 1887 1574 1319 1139 1056 1032 1062 1158 1357 1625 1956 2393 3024 4339 4028 2838 2283 1872 1562 1306 1125 1043 1024 1053 1144 1344 1610 1940 2378 2999 4300 4051 2851 2291 1883 1569 1317 1134 1050 1029 1060 1153 1353 1618 1954 2386 3015 4328 4111 2906 2328 1914 1598 1350 1168 1078 1055 1088 1190 1388 1649 1986 2420 3068 4388 4222 2970 2382 1970 1646 1404 1220 1122 1099 1129 1245 1444 1701 2042 2483 3147 4488 4367 3086 2470 2044 1721 1485 1300 1194 1162 1205 1326 1521 1776 2114 2578 3273 4645 4566 3245 2593 2151 1821 1580 1406 1299 1266 1312 1430 1623 1881 2225 2703 3453 4841 4814 3468 2746 2295 1952 1705 1535 1432 1400 1444 1556 1747 2005 2365 2887 3668 5098 5119 3724 2962 2449 2100 1851 1675 1579 1548 1592 1701 1891 2163 2543 3102 3938 5382 5596 4127 3308 2728 2349 2079 1902 1798 1768 1810 1928 2125 2410 2830 3494 4313 6049] + + + [5475 4058 3292 2707 2333 2072 1895 1804 1780 1817 1918 2117 2396 2800 3452 4209 6064 5008 3666 2931 2432 2082 1847 1686 1596 1562 1599 1703 1887 2144 2511 3063 3872 5236 4697 3421 2717 2262 1935 1703 1539 1444 1416 1454 1557 1740 1984 2331 2829 3599 4975 4467 3191 2559 2117 1810 1584 1416 1320 1286 1330 1433 1612 1859 2195 2663 3367 4718 4262 3031 2436 2023 1710 1490 1312 1212 1184 1222 1333 1516 1756 2085 2528 3196 4520 4145 2908 2341 1938 1637 1405 1238 1138 1110 1146 1251 1435 1684 1997 2433 3069 4350 4002 2826 2275 1878 1582 1350 1176 1086 1060 1093 1191 1376 1619 1935 2360 2967 4257 3940 2764 2234 1839 1542 1311 1135 1055 1037 1062 1150 1338 1584 1892 2309 2914 4160 3915 2749 2216 1825 1533 1293 1128 1045 1024 1053 1136 1324 1571 1880 2284 2887 4152 3925 2769 2236 1831 1540 1303 1131 1054 1030 1059 1146 1327 1580 1891 2298 2905 4150 3991 2817 2260 1865 1567 1339 1165 1079 1058 1087 1179 1364 1605 1920 2336 2937 4215 4110 2871 2332 1919 1615 1387 1215 1118 1098 1126 1230 1416 1653 1967 2401 3025 4333 4210 3013 2394 1994 1684 1459 1289 1188 1155 1196 1309 1484 1723 2035 2480 3152 4453 4442 3142 2520 2098 1773 1553 1384 1285 1257 1296 1405 1581 1824 2143 2600 3322 4662 4647 3368 2682 2232 1903 1665 1509 1411 1378 1422 1523 1697 1941 2281 2779 3512 4931 4956 3612 2885 2398 2045 1803 1638 1550 1521 1555 1660 1832 2097 2455 2989 3774 5173 5443 4030 3240 2674 2294 2037 1862 1759 1739 1769 1878 2072 2334 2754 3377 4155 5801] + + + + + 3864x2180_F2_100 + + + 3864x2180 + + + F2 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [154 115 115 115 115 116 115 115] + + + [87 65 66 65 65 65 66 65] + + + [ 100] + + + [6996 5246 4193 3468 2940 2567 2317 2178 2138 2201 2367 2648 3056 3596 4461 5522 7657 6411 4679 3744 3061 2583 2230 1983 1841 1794 1855 2018 2305 2674 3196 3921 5008 6785 6011 4356 3443 2828 2361 2012 1765 1623 1575 1637 1803 2080 2452 2956 3628 4640 6414 5749 4060 3237 2627 2174 1829 1579 1435 1387 1452 1617 1883 2263 2756 3397 4341 6088 5479 3849 3059 2487 2017 1678 1430 1281 1242 1300 1463 1739 2113 2595 3226 4111 5827 5293 3689 2933 2356 1907 1557 1313 1179 1142 1191 1343 1618 1998 2469 3089 3950 5611 5142 3577 2827 2265 1813 1472 1228 1104 1074 1116 1258 1529 1896 2380 2986 3811 5481 5019 3498 2777 2203 1761 1414 1173 1064 1036 1080 1202 1471 1842 2315 2919 3737 5365 5013 3477 2752 2184 1746 1390 1157 1050 1024 1062 1182 1451 1822 2296 2889 3691 5335 5023 3500 2771 2197 1752 1407 1165 1059 1029 1073 1197 1460 1836 2305 2917 3703 5389 5113 3546 2821 2245 1799 1454 1210 1092 1066 1107 1243 1510 1879 2367 2952 3773 5456 5244 3650 2899 2325 1874 1526 1284 1154 1122 1166 1317 1588 1956 2438 3050 3876 5599 5430 3815 3016 2447 1987 1642 1392 1248 1207 1263 1432 1696 2072 2545 3167 4057 5769 5730 4006 3190 2597 2131 1786 1536 1391 1345 1412 1571 1846 2214 2695 3346 4287 6027 6004 4282 3400 2783 2309 1964 1715 1571 1526 1590 1753 2030 2411 2898 3580 4557 6359 6405 4635 3684 3018 2533 2171 1927 1779 1735 1798 1966 2242 2616 3133 3850 4895 6728 6990 5146 4135 3379 2881 2512 2248 2104 2062 2125 2293 2576 2966 3529 4361 5407 7331] + + + [5658 4216 3382 2789 2408 2132 1955 1860 1829 1873 1982 2185 2481 2897 3574 4400 6206 5171 3790 3021 2502 2141 1898 1723 1627 1594 1636 1748 1945 2210 2593 3174 4020 5463 4880 3521 2809 2325 1984 1745 1571 1471 1438 1484 1595 1785 2046 2415 2934 3742 5151 4625 3298 2635 2186 1856 1619 1438 1333 1303 1345 1466 1653 1916 2269 2763 3500 4899 4423 3145 2509 2079 1754 1513 1331 1222 1191 1235 1353 1549 1810 2159 2623 3327 4691 4271 3011 2416 1998 1672 1427 1245 1141 1115 1151 1267 1464 1732 2069 2525 3189 4550 4139 2926 2345 1931 1614 1365 1180 1087 1061 1096 1198 1404 1667 2001 2448 3096 4416 4076 2873 2305 1888 1577 1322 1141 1055 1035 1064 1158 1359 1625 1958 2398 3027 4351 4047 2844 2285 1880 1562 1308 1125 1042 1024 1053 1145 1344 1612 1942 2374 3011 4308 4077 2859 2300 1888 1570 1319 1133 1051 1030 1060 1153 1352 1617 1954 2385 3022 4325 4124 2910 2331 1918 1598 1351 1169 1078 1053 1088 1187 1386 1650 1987 2423 3060 4402 4244 2978 2393 1974 1648 1403 1219 1121 1099 1128 1244 1445 1699 2042 2483 3152 4491 4392 3100 2475 2048 1723 1485 1301 1193 1162 1203 1324 1519 1779 2117 2581 3277 4655 4571 3262 2601 2155 1823 1579 1405 1298 1265 1311 1429 1621 1879 2224 2707 3460 4848 4852 3467 2763 2294 1944 1705 1532 1432 1399 1442 1554 1744 2006 2369 2888 3673 5104 5135 3736 2970 2460 2102 1845 1674 1576 1549 1587 1699 1891 2156 2543 3111 3951 5379 5638 4118 3318 2730 2342 2080 1895 1799 1767 1808 1923 2120 2408 2832 3486 4309 6071] + + + [5639 4199 3382 2786 2399 2133 1952 1855 1829 1874 1980 2190 2477 2913 3575 4386 6248 5164 3786 3011 2497 2145 1892 1726 1627 1592 1636 1747 1945 2211 2592 3173 4017 5442 4859 3506 2794 2320 1982 1745 1569 1467 1438 1480 1597 1784 2046 2410 2926 3730 5168 4603 3285 2627 2178 1855 1613 1439 1332 1299 1345 1463 1652 1911 2266 2754 3489 4890 4392 3130 2500 2073 1748 1510 1327 1222 1189 1231 1352 1548 1807 2156 2618 3323 4677 4251 2994 2410 1990 1670 1425 1242 1140 1110 1150 1265 1461 1726 2067 2515 3188 4541 4122 2911 2343 1925 1609 1364 1178 1084 1060 1094 1197 1402 1662 2000 2445 3085 4401 4059 2857 2297 1887 1574 1319 1139 1056 1032 1062 1158 1357 1625 1956 2393 3024 4339 4028 2838 2283 1872 1562 1306 1125 1043 1024 1053 1144 1344 1610 1940 2378 2999 4300 4051 2851 2291 1883 1569 1317 1134 1050 1029 1060 1153 1353 1618 1954 2386 3015 4328 4111 2906 2328 1914 1598 1350 1168 1078 1055 1088 1190 1388 1649 1986 2420 3068 4388 4222 2970 2382 1970 1646 1404 1220 1122 1099 1129 1245 1444 1701 2042 2483 3147 4488 4367 3086 2470 2044 1721 1485 1300 1194 1162 1205 1326 1521 1776 2114 2578 3273 4645 4566 3245 2593 2151 1821 1580 1406 1299 1266 1312 1430 1623 1881 2225 2703 3453 4841 4814 3468 2746 2295 1952 1705 1535 1432 1400 1444 1556 1747 2005 2365 2887 3668 5098 5119 3724 2962 2449 2100 1851 1675 1579 1548 1592 1701 1891 2163 2543 3102 3938 5382 5596 4127 3308 2728 2349 2079 1902 1798 1768 1810 1928 2125 2410 2830 3494 4313 6049] + + + [5475 4058 3292 2707 2333 2072 1895 1804 1780 1817 1918 2117 2396 2800 3452 4209 6064 5008 3666 2931 2432 2082 1847 1686 1596 1562 1599 1703 1887 2144 2511 3063 3872 5236 4697 3421 2717 2262 1935 1703 1539 1444 1416 1454 1557 1740 1984 2331 2829 3599 4975 4467 3191 2559 2117 1810 1584 1416 1320 1286 1330 1433 1612 1859 2195 2663 3367 4718 4262 3031 2436 2023 1710 1490 1312 1212 1184 1222 1333 1516 1756 2085 2528 3196 4520 4145 2908 2341 1938 1637 1405 1238 1138 1110 1146 1251 1435 1684 1997 2433 3069 4350 4002 2826 2275 1878 1582 1350 1176 1086 1060 1093 1191 1376 1619 1935 2360 2967 4257 3940 2764 2234 1839 1542 1311 1135 1055 1037 1062 1150 1338 1584 1892 2309 2914 4160 3915 2749 2216 1825 1533 1293 1128 1045 1024 1053 1136 1324 1571 1880 2284 2887 4152 3925 2769 2236 1831 1540 1303 1131 1054 1030 1059 1146 1327 1580 1891 2298 2905 4150 3991 2817 2260 1865 1567 1339 1165 1079 1058 1087 1179 1364 1605 1920 2336 2937 4215 4110 2871 2332 1919 1615 1387 1215 1118 1098 1126 1230 1416 1653 1967 2401 3025 4333 4210 3013 2394 1994 1684 1459 1289 1188 1155 1196 1309 1484 1723 2035 2480 3152 4453 4442 3142 2520 2098 1773 1553 1384 1285 1257 1296 1405 1581 1824 2143 2600 3322 4662 4647 3368 2682 2232 1903 1665 1509 1411 1378 1422 1523 1697 1941 2281 2779 3512 4931 4956 3612 2885 2398 2045 1803 1638 1550 1521 1555 1660 1832 2097 2455 2989 3774 5173 5443 4030 3240 2674 2294 2037 1862 1759 1739 1769 1878 2072 2334 2754 3377 4155 5801] + + + + + + + A_100 + + + [ 100] + + + [1.62147 -0.0445277 -0.546563 -0.261854 1.52127 -0.211003 0.0194952 -1.45836 2.4966] + + + [-124.39 -122.251 -145.4412] + + + [1.2679 1 1 2.4534] + + + + + D50_100 + + + [ 100] + + + [1.5183 -0.341669 -0.150056 -0.23618 1.63938 -0.35403 -0.0308324 -0.524599 1.5759] + + + [-81.0317 -71.6168 -83.757] + + + [2.01726 1 1 1.6274] + + + + + D65_100 + + + [ 100] + + + [1.74788 -0.562271 -0.124172 -0.189096 1.66277 -0.416313 0.0171408 -0.552856 1.5549] + + + [-84.4486 -70.1682 -78.446] + + + [2.41759 1 1 1.4225] + + + + + D75_100 + + + [ 100] + + + [1.84441 -0.649995 -0.151423 -0.17172 1.61099 -0.39653 0.0218805 -0.506897 1.5048] + + + [-87.0209 -74.4697 -80.8341] + + + [2.46127 1 1 1.3353] + + + + + F11_100 + + + [ 100] + + + [1.52028 -0.278563 -0.200712 -0.305258 1.64403 -0.267838 -0.00796981 -0.719295 1.7485] + + + [-73.4915 -72.5498 -86.9231] + + + [1.79738 1 1 2.0643] + + + + + F12_100 + + + [ 100] + + + [1.43944 0.0309125 -0.463539 -0.338943 1.6164 -0.231193 -0.0812989 -1.41021 2.5269] + + + [-27.8837 -30.4929 -71.3504] + + + [1.00205 1 1 3.0084] + + + + + F2_100 + + + [ 100] + + + [2.06572 -0.770765 -0.278229 -0.301217 1.49376 -0.146116 -0.0191357 -0.55147 1.6208] + + + [-68.4901 -66.8725 -80.6516] + + + [2.02785 1 1 2.1442] + + + + + + [ -1] + + + + + [ 80] + + + [ 20] + + + [ 0.7] + + + [ 0.7] + + + [ 0.7] + + + [ 0.9] + + + + + 3864x2180_FPS_15 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 3864x2180_FPS_10 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 3864x2180_FPS_05 + + + + + fast + + + [ 1] + + + [ 1] + + + + + normal + + + [ 2] + + + [ 0.9] + + + + + slow + + + [ 4] + + + [ 0.9] + + + + + + + [ 8] + + + + + + 3864x2180 + + + 3864x2180 + + + [256 256 256 256] + + + + + + + linear + + + [256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4096] + + + [0 256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4095] + + + + + + [ -1] + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + + + 3864x2180 + + + 3864x2180 + + + [ 6] + + + [ 29] + + + [ 6] + + + [ 29] + + + [ 0] + + + [ 0] + + + [-0.625 1.5625 -1.625] + + + [-0.3125 -0.125 0.375] + + + + + + + 3864x2180 + + + 3864x2180 + + + [ 1] + + + [555 338 265 225 199 166 146 131 120 105 94 86 75 67 61 57 53] + + + [ 4] + + + [ 4] + + + [ 0.15] + + + [ 0] + + + [1 1 1 1] + + + + + + + 3864x2180 + + + 3864x2180 + + + + + ISP_DPCC_MODE + + + 0x0005 + + + + + ISP_DPCC_OUT_MODE + + + 0x0003 + + + + + ISP_DPCC_SET_USE + + + 0x0007 + + + + + ISP_DPCC_METHODS_SET1 + + + 0x1D1D + + + + + ISP_DPCC_METHODS_SET2 + + + 0x0707 + + + + + ISP_DPCC_METHODS_SET3 + + + 0x1F1F + + + + + ISP_DPCC_LINE_THRESH_1 + + + 0x0808 + + + + + ISP_DPCC_LINE_MAD_FAC_1 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_1 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_1 + + + 0x0A0A + + + + + ISP_DPCC_RG_FAC_1 + + + 0x2020 + + + + + ISP_DPCC_LINE_THRESH_2 + + + 0x100C + + + + + ISP_DPCC_LINE_MAD_FAC_2 + + + 0x1810 + + + + + ISP_DPCC_PG_FAC_2 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_2 + + + 0x0808 + + + + + ISP_DPCC_RG_FAC_2 + + + 0x0808 + + + + + ISP_DPCC_LINE_THRESH_3 + + + 0x2020 + + + + + ISP_DPCC_LINE_MAD_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_3 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_3 + + + 0x0806 + + + + + ISP_DPCC_RG_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_RO_LIMITS + + + 0x0A0A + + + + + ISP_DPCC_RND_OFFS + + + 0x0FFF + + + + + + + + + + on + + + +
diff --git a/drivers/IMX334/IMX334_mipi4lane_3840_2160_raw12_800mbps_3dol_init.txt b/drivers/IMX334/IMX334_mipi4lane_3840_2160_raw12_800mbps_3dol_init.txt new file mode 100644 index 0000000..41a7693 --- /dev/null +++ b/drivers/IMX334/IMX334_mipi4lane_3840_2160_raw12_800mbps_3dol_init.txt @@ -0,0 +1,102 @@ +0x3000 0x01 +0x3001 0x00 +0x3002 0x01 +0x3003 0x00 +0x300C 0x3B +0x300D 0x2A +0x3030 0xc4 + + +0x319f 0x00 +0x3a20 0x20 + +0x3031 0x17 + +0x3048 0x01 +0x3049 0x02 +0x304A 0x02 +0x304B 0x02 +0x304C 0x13 + +0x3034 0xEC +0x3035 0x18 + +0x3059 0x15 +0x3068 0x91 +0x30E8 0x14 +0x314C 0x29 +0x314D 0x01 +0x315A 0x03 +0x3168 0xA0 +0x316A 0x7E +0x31A1 0x00 +0x31D7 0x01 +0x3288 0x21 +0x328A 0x02 +0x3414 0x05 +0x3416 0x18 +0x35AC 0x0E +0x3648 0x01 +0x364A 0x04 +0x364C 0x04 +0x3678 0x01 +0x367C 0x31 +0x367E 0x31 +0x3708 0x02 +0x3714 0x01 +0x3715 0x02 +0x3716 0x02 +0x3717 0x02 +0x371C 0x3D +0x371D 0x3F +0x372C 0x00 +0x372D 0x00 +0x372E 0x46 +0x372F 0x00 +0x3730 0x89 +0x3731 0x00 +0x3732 0x08 +0x3733 0x01 +0x3734 0xFE +0x3735 0x05 +0x375D 0x00 +0x375E 0x00 +0x375F 0x61 +0x3760 0x06 +0x3768 0x1B +0x3769 0x1B +0x376A 0x1A +0x376B 0x19 +0x376C 0x18 +0x376D 0x14 +0x376E 0x0F +0x3776 0x00 +0x3777 0x00 +0x3778 0x46 +0x3779 0x00 +0x377A 0x08 +0x377B 0x01 +0x377C 0x45 +0x377D 0x01 +0x377E 0x23 +0x377F 0x02 +0x3780 0xD9 +0x3781 0x03 +0x3782 0xF5 +0x3783 0x06 +0x3784 0xA5 +0x3788 0x0F +0x378A 0xD9 +0x378B 0x03 +0x378C 0xEB +0x378D 0x05 +0x378E 0x87 +0x378F 0x06 +0x3790 0xF5 +0x3792 0x43 +0x3794 0x7A +0x3796 0xA1 +0x3E04 0x0E + + + diff --git a/drivers/IMX334/IMX334_mipi4lane_3864_2180_raw12_800mbps_init.txt b/drivers/IMX334/IMX334_mipi4lane_3864_2180_raw12_800mbps_init.txt new file mode 100644 index 0000000..918e8df --- /dev/null +++ b/drivers/IMX334/IMX334_mipi4lane_3864_2180_raw12_800mbps_init.txt @@ -0,0 +1,165 @@ +0x3000 0x01 +0x3001 0x00 +0x3002 0x01 +0x3003 0x00 +0x300C 0x3B +0x300D 0x2A +0x3018 0x00 +0x302C 0x30 +0x302D 0x00 +0x302E 0x18 +0x302F 0x0F + +0x3030 0xCA +0x3031 0x08 +0x3032 0x00 + +0x3033 0x00 + +0x3034 0x4C +0x3035 0x04 + +0x304C 0x14 +0x3050 0x01 +0x3076 0x84 +0x3077 0x08 +0x3090 0x84 +0x3091 0x08 +0x30C6 0x00 +0x30C7 0x00 +0x30CE 0x00 +0x30CF 0x00 +0x30D8 0xF8 +0x30D9 0x11 +0x3117 0x00 +0x314C 0x29 +0x314D 0x01 +0x315A 0x06 +0x3168 0xA0 +0x316A 0x7E +0x3199 0x00 +0x319D 0x01 +0x319E 0x02 +0x31A0 0x2A +0x31D4 0x00 +0x31D5 0x00 +0x31DD 0x03 +0x3288 0x21 +0x328A 0x02 +0x3300 0x00 +0x3302 0x32 +0x3303 0x00 +0x3308 0x84 +0x3309 0x08 +0x3414 0x05 +0x3416 0x18 +0x341C 0x47 +0x341D 0x00 +0x35AC 0x0E +0x3648 0x01 +0x364A 0x04 +0x364C 0x04 +0x3678 0x01 +0x367C 0x31 +0x367E 0x31 +0x3708 0x02 +0x3714 0x01 +0x3715 0x02 +0x3716 0x02 +0x3717 0x02 +0x371C 0x3D +0x371D 0x3F +0x372C 0x00 +0x372D 0x00 +0x372E 0x46 +0x372F 0x00 +0x3730 0x89 +0x3731 0x00 +0x3732 0x08 +0x3733 0x01 +0x3734 0xFE +0x3735 0x05 +0x375D 0x00 +0x375E 0x00 +0x375F 0x61 +0x3760 0x06 +0x3768 0x1B +0x3769 0x1B +0x376A 0x1A +0x376B 0x19 +0x376C 0x18 +0x376D 0x14 +0x376E 0x0F +0x3776 0x00 +0x3777 0x00 +0x3778 0x46 +0x3779 0x00 +0x377A 0x08 +0x377B 0x01 +0x377C 0x45 +0x377D 0x01 +0x377E 0x23 +0x377F 0x02 +0x3780 0xD9 +0x3781 0x03 +0x3782 0xF5 +0x3783 0x06 +0x3784 0xA5 +0x3788 0x0F +0x378A 0xD9 +0x378B 0x03 +0x378C 0xEB +0x378D 0x05 +0x378E 0x87 +0x378F 0x06 +0x3790 0xF5 +0x3792 0x43 +0x3794 0x7A +0x3796 0xA1 +0x3A01 0x03 +0x3A18 0x7F +0x3A19 0x00 +0x3A1A 0x37 +0x3A1B 0x00 +0x3A1C 0x37 +0x3A1D 0x00 +0x3A1E 0xF7 +0x3A1F 0x00 +0x3A20 0x3F +0x3A21 0x00 +0x3A22 0x6F +0x3A23 0x00 +0x3A24 0x3F +0x3A25 0x00 +0x3A26 0x5F +0x3A27 0x00 +0x3A28 0x2F +0x3A29 0x00 +0x3E04 0x0E +0x3078 0x02 +0x3079 0x00 +0x307A 0x00 +0x307B 0x00 +0x3081 0x00 +0x3082 0x00 +0x3083 0x00 +0x3088 0x02 +0x3094 0x00 +0x3095 0x00 +0x3096 0x00 +0x309C 0x00 +0x309D 0x00 +0x309E 0x00 +0x30A4 0x00 +0x30A5 0x00 +0x304E 0x00 +0x304F 0x00 +0x3074 0xB0 +0x3075 0x00 +0x308E 0xB1 +0x308F 0x00 +0x30B6 0x00 +0x30B7 0x00 +0x3116 0x00 +0x3080 0x02 +0x309B 0x02 diff --git a/drivers/IMX334/IMX334_priv.h b/drivers/IMX334/IMX334_priv.h new file mode 100644 index 0000000..a4e74d5 --- /dev/null +++ b/drivers/IMX334/IMX334_priv.h @@ -0,0 +1,207 @@ +/******************************************************************************\ +|* Copyright (c) 2020 by VeriSilicon Holdings Co., Ltd. ("VeriSilicon") *| +|* All Rights Reserved. *| +|* *| +|* The material in this file is confidential and contains trade secrets of *| +|* of VeriSilicon. This is proprietary information owned or licensed by *| +|* VeriSilicon. No part of this work may be disclosed, reproduced, copied, *| +|* transmitted, or used in any way for any purpose, without the express *| +|* written permission of VeriSilicon. *| +|* *| +\******************************************************************************/ +/** + * @file IMX334_priv.h + * + * @brief Interface description for image sensor specific implementation (iss). + * + *****************************************************************************/ +/** + * @page module_name_page Module Name + * Describe here what this module does. + * + * For a detailed list of functions and implementation detail refer to: + * - @ref module_name + * + * @defgroup IMX334_priv + * @{ + * + */ +#ifndef __IMX334_PRIV_H__ +#define __IMX334_PRIV_H__ + +#include +#include +#include +#include +#include "vvsensor.h" + + + +#ifdef __cplusplus +extern "C" +{ +#endif + +typedef struct IMX334_Context_s +{ + IsiSensorContext_t IsiCtx; /**< common context of ISI and ISI driver layer; @note: MUST BE FIRST IN DRIVER CONTEXT */ + + struct vvcam_mode_info SensorMode; + uint32_t KernelDriverFlag; + char SensorRegCfgFile[128]; + + uint32_t HdrMode; + IsiResolution_t Resolution; + uint32_t MaxFps; + uint32_t MinFps; + uint32_t CurrFps; + //// modify below here //// + + IsiSensorConfig_t Config; /**< sensor configuration */ + bool_t Configured; /**< flags that config was applied to sensor */ + bool_t Streaming; /**< flags that csensor is streaming data */ + bool_t TestPattern; /**< flags that sensor is streaming test-pattern */ + + bool_t isAfpsRun; /**< if true, just do anything required for Afps parameter calculation, but DON'T access SensorHW! */ + + float one_line_exp_time; + uint16_t MaxIntegrationLine; + uint16_t MinIntegrationLine; + uint32_t gain_accuracy; + + uint16_t FrameLengthLines; /**< frame line length */ + uint16_t CurFrameLengthLines; + + float AecMinGain; + float AecMaxGain; + float AecMinIntegrationTime; + float AecMaxIntegrationTime; + + float AecIntegrationTimeIncrement; /**< _smallest_ increment the sensor/driver can handle (e.g. used for sliders in the application) */ + float AecGainIncrement; /**< _smallest_ increment the sensor/driver can handle (e.g. used for sliders in the application) */ + + float AecCurGain; + float AecCurIntegrationTime; + float AecCurGainSEF1; + float AecCurIntegrationTimeSEF1; + + bool GroupHold; + uint32_t OldGain; + uint32_t OldIntegrationTime; + uint32_t OldGainSEF1; + uint32_t OldIntegrationTimeSEF1; + + int subdev; + bool enableHdr; + uint8_t pattern; + float CurHdrRatio; +} IMX334_Context_t; + +static RESULT IMX334_IsiCreateSensorIss(IsiSensorInstanceConfig_t * + pConfig); + +static RESULT IMX334_IsiInitSensorIss(IsiSensorHandle_t handle); + +static RESULT IMX334_IsiReleaseSensorIss(IsiSensorHandle_t handle); + +static RESULT IMX334_IsiGetCapsIss(IsiSensorHandle_t handle, + IsiSensorCaps_t * pIsiSensorCaps); + +static RESULT IMX334_IsiSetupSensorIss(IsiSensorHandle_t handle, + const IsiSensorConfig_t * + pConfig); + +static RESULT IMX334_IsiSensorSetStreamingIss(IsiSensorHandle_t handle, + bool_t on); + +static RESULT IMX334_IsiSensorSetPowerIss(IsiSensorHandle_t handle, + bool_t on); + +static RESULT IMX334_IsiGetSensorRevisionIss(IsiSensorHandle_t handle, + uint32_t * p_value); + +static RESULT IMX334_IsiSetBayerPattern(IsiSensorHandle_t handle, + uint8_t pattern); + +static RESULT IMX334_IsiGetGainLimitsIss(IsiSensorHandle_t handle, + float *pMinGain, + float *pMaxGain); + +static RESULT IMX334_IsiGetIntegrationTimeLimitsIss(IsiSensorHandle_t + handle, + float + *pMinIntegrationTime, + float + *pMaxIntegrationTime); + +static RESULT IMX334_IsiExposureControlIss(IsiSensorHandle_t handle, + float NewGain, + float NewIntegrationTime, + uint8_t * + pNumberOfFramesToSkip, + float *pSetGain, + float *pSetIntegrationTime, + float *hdr_ratio); + +static RESULT IMX334_IsiGetGainIss(IsiSensorHandle_t handle, + float *pSetGain); + +static RESULT IMX334_IsiGetSEF1GainIss(IsiSensorHandle_t handle, + float *pSetGain); + +static RESULT IMX334_IsiGetGainIncrementIss(IsiSensorHandle_t handle, + float *pIncr); + +static RESULT IMX334_IsiSetGainIss(IsiSensorHandle_t handle, + float NewGain, float *pSetGain, + float *hdr_ratio); + +static RESULT IMX334_IsiSetSEF1GainIss(IsiSensorHandle_t handle, + float NewIntegrationTime, + float NewGain, float *pSetGain, + float *hdr_ratio); + +static RESULT IMX334_IsiGetIntegrationTimeIss(IsiSensorHandle_t handle, + float + *pSetIntegrationTime); + +static RESULT IMX334_IsiGetSEF1IntegrationTimeIss(IsiSensorHandle_t + handle, + float + *pSetIntegrationTime); + +static RESULT IMX334_IsiGetIntegrationTimeIncrementIss(IsiSensorHandle_t handle, + float *pIncr); + +static RESULT IMX334_IsiSetIntegrationTimeIss(IsiSensorHandle_t handle, + float NewIntegrationTime, + float + *pSetIntegrationTime, + uint8_t * + pNumberOfFramesToSkip, + float *hdr_ratio); + +static RESULT IMX334_IsiSetSEF1IntegrationTimeIss(IsiSensorHandle_t + handle, + float + NewIntegrationTime, + float + *pSetIntegrationTime, + uint8_t * + pNumberOfFramesToSkip, + float *hdr_ratio); + +static RESULT IMX334_IsiGetResolutionIss + (IsiSensorHandle_t handle, uint16_t *pwidth, uint16_t *pheight); + +static RESULT IMX334_IsiResetSensorIss(IsiSensorHandle_t handle); + + +#ifdef __cplusplus +} +#endif + +/* @} IMX334priv */ + +#endif /* __IMX334PRIV_H__ */ + diff --git a/drivers/SC132GS/3aconfig_SC132GS.json b/drivers/SC132GS/3aconfig_SC132GS.json new file mode 100644 index 0000000..2272eec --- /dev/null +++ b/drivers/SC132GS/3aconfig_SC132GS.json @@ -0,0 +1,518 @@ +{ + "root" : [ + { + "classname" : "Aev1", + "enable" : false + }, + { + "classname" : "Aev2", + "enable" : true, + "motionThreshold" : 0.5, + "roiWeight" : 0.6, + "motionFilter" : 0.5, + "maxSensorAgain" : 15.5, + "maxSensorDgain" : 1, + "maxIspDgain" : 2.6, + "setPoint" : 120, + "roi_start" : 8, + "roi_end" : 24, + "roi_weight" : 0.5 + }, + { + "classname" : "Aehdr", + "enable" : false, + "motionThreshold" : 0.5, + "roi_start" : 8, + "roi_end" : 24, + "roi_weight" : 0.5, + "faceWeight" : 0.6, + "motionFilter" : 0.5, + "maxSensorAgain" : 15.5, + "maxSensorDgain" : 1, + "maxIspDgain" : 12, + "setPoint" : 30 + }, + { + "classname" : "AdaptiveAe", + "enable" : false, + "motionThreshold" : 0.7, + "roi_start" : 8, + "roi_end" : 24, + "roi_weight" : 0.5, + "faceWeight" : 0.6, + "motionFilter" : 0.5, + "targetFilter" : 0.5, + "wdrContrast.min" : 10, + "wdrContrast.max" : 110, + "lowlight" : { + "linear_repress" : [1, 0.8, 0.6, 0.4, 0.4], + "linear_gain" : [4, 8, 16, 32, 100], + "hdr_repress" : [1, 0.8, 0.8, 0.8, 0.8], + "hdr_gain" : [4, 8, 16, 32, 100] + }, + "maxSensorAgain" : 15.5, + "maxSensorDgain" : 1, + "maxIspDgain" : 12, + "setPoint" : 30 + }, + { + "classname" : "Awbv2", + "enable" : false, + "illuorder" : "A, D50, D65, D75, TL84, F12, CWF", + "indoor" : [1, 1, 1, 1, 1, 1, 1], + "outdoor" : [1, 1, 1, 1, 1, 1, 1], + "transition" : [1, 1, 1, 1, 1, 1, 1], + "avg" : 0.0 + }, + { + "classname" : "IspController", + "enable" : true + }, + { + "classname" : "AutoHdr", + "enable" : false + }, + { + "classname" : "DciHist", + "enable" : false, + "gaussMeanPos" : 64, + "gaussSigmaPos" : 128, + "gaussAmpPos" : 1.0, + "gaussMeanNeg" : 0, + "gaussSigmaNeg" : 128, + "gaussAmpNeg" : 1.0 + }, + { + "classname" : "SensorController", + "enable" : true + }, + { + "classname" : "AGamma64", + "forcecreate" : false, + "enable" : false, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "curve" : [ + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [73, 113, 147, 176, 203, 228, 251, 273, 295, 315, 335, 354, 372, 390, 407, 425, 441, 457, 473, 489, 504, 519, 534, 549, 563, 577, 591, 605, 619, 632, 646, 659, 672, 685, 697, 710, 722, 735, 747, 759, 771, 783, 794, 806, 818, 829, 840, 852, 863, 874, 885, 896, 907, 918, 928, 939, 950, 960, 971, 981, 991, 1002, 1012, 1023], + [18, 35, 53, 70, 86, 103, 120, 136, 153, 169, 186, 202, 219, 235, 251, 267, 283, 300, 316, 332, 348, 364, 380, 396, 412, 428, 444, 460, 476, 491, 507, 523, 539, 555, 571, 586, 602, 618, 634, 649, 665, 681, 696, 712, 728, 743, 759, 775, 790, 806, 821, 837, 853, 868, 884, 899, 915, 930, 946, 961, 977, 992, 1008, 1023] + ] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "curve" : [ + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [73, 113, 147, 176, 203, 228, 251, 273, 295, 315, 335, 354, 372, 390, 407, 425, 441, 457, 473, 489, 504, 519, 534, 549, 563, 577, 591, 605, 619, 632, 646, 659, 672, 685, 697, 710, 722, 735, 747, 759, 771, 783, 794, 806, 818, 829, 840, 852, 863, 874, 885, 896, 907, 918, 928, 939, 950, 960, 971, 981, 991, 1002, 1012, 1023], + [73, 113, 147, 176, 203, 228, 251, 273, 295, 315, 335, 354, 372, 390, 407, 425, 441, 457, 473, 489, 504, 519, 534, 549, 563, 577, 591, 605, 619, 632, 646, 659, 672, 685, 697, 710, 722, 735, 747, 759, 771, 783, 794, 806, 818, 829, 840, 852, 863, 874, 885, 896, 907, 918, 928, 939, 950, 960, 971, 981, 991, 1002, 1012, 1023] + ] + } + ] + }, + { + "classname" : "ACproc", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "contrast" : [1, 1, 1, 1, 1, 1], + "brightness" : [0, 0, 0, 0, 0], + "saturation" : [1, 1, 1, 1, 1, 1], + "hue" : [0, 0, 0, 0, 0, 0], + "chromaout" : [2, 2, 2, 2, 2, 2], + "lumain" : [2, 2, 2, 2, 2, 2], + "lumaout" : [2, 2, 2, 2, 2, 2] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "contrast" : [1, 1, 1, 1, 1, 1], + "brightness" : [0, 0, 0, 0, 0], + "saturation" : [1, 1, 1, 1, 1, 1], + "hue" : [0, 0, 0, 0, 0, 0], + "chromaout" : [2, 2, 2, 2, 2, 2], + "lumain" : [2, 2, 2, 2, 2, 2], + "lumaout" : [2, 2, 2, 2, 2, 2] + } + ] + }, + { + "classname" : "Aee", + "forcecreate" : false, + "enable" : false, + "disable" : true, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "strength" : [100, 100, 100, 100, 100, 100], + "srcStrength" : [1, 1, 1, 1, 1, 1], + "yup" : [2048, 2048, 2048, 2048, 2048, 2048], + "ydown" : [2048, 2048, 2048, 2048, 2048, 2048], + "uvgain" : [0, 0, 0, 0, 0, 0], + "edgegain" : [1000, 1000, 1000, 1000, 500, 200] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "strength" : [100, 100, 100, 100, 100, 100], + "srcStrength" : [1, 1, 1, 1, 1, 1], + "yup" : [5000, 5000, 5000, 5000, 5000, 5000], + "ydown" : [8000, 8000, 5000, 5000, 5000, 5000], + "uvgain" : [0, 0, 0, 0, 0, 0], + "edgegain" : [2000, 2000, 2000, 1500, 600, 200] + } + ] + }, + { + "classname" : "ACa", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enableCA" : [1, 1, 1, 1, 1, 1], + "enableDCI" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "curveCA" : [ + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024] + ], + "curveDCI" : [ + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1023, 1023], + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1028, 1023], + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1028, 1023], + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1028, 1023], + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1028, 1023], + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1028, 1023] + ] + }, + { + "hdr" : true, + "enableCA" : [0, 0, 1, 1, 1, 1], + "enableDCI" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "curveCA" : [ + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024] + ], + "curveDCI" : [ + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022], + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022], + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022], + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022], + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022], + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022] + ] + } + ] + }, + { + "classname" : "ADmsc2", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "demoire_enable" : true, + "demoire_area_thr" : 3, + "demoire_sat_shrink" : 5, + "demoire_r2" : 256, + "demoire_r1" : 0, + "demoire_t2_shift" : 2, + "demoire_t1" : 180, + "demoire_edge_r2" : 256, + "demoire_edge_r1" : 20, + "demoire_edge_t2_shift" : 4, + "demoire_edge_t1" :20, + "depurple_enable" : true, + "depurple_red_sat" : true, + "depurple_blue_sat" : true, + "depurple_sat_shrink" : 8, + "depurple_thr" : 8, + "skin_enable" : false, + "cb_thr_max_2047" : 10, + "cb_thr_min_2047" : 8, + "cr_thr_max_2047" : 10, + "cr_thr_min_2047" : 8, + "y_thr_max_2047" : 10, + "y_thr_min_2047" : 8, + "tables" : [ + { + "hdr" : false, + "gains" : [1, 2, 4, 8, 16, 32], + "enableSharpen" : [1, 1, 1, 1, 1, 1], + "enableSharpenLine" : [0, 0, 0, 0, 0, 0], + "facblack" : [10, 10, 10, 10, 10, 10], + "facwhite" : [10, 10, 10, 10, 10, 10], + "maxblack" : [20, 20, 20, 20, 20, 20], + "maxwhite" : [20, 20, 20, 20, 20, 20], + "t1" : [0, 0, 0, 0, 0, 0], + "t2" : [0, 0, 0, 0, 0, 0], + "t3" : [0, 0, 0, 0, 0, 0], + "t4" : [0, 0, 0, 0, 0, 0], + "r1" : [0, 0, 0, 0, 0, 0], + "r2" : [128, 128, 128, 128, 128, 128], + "r3" : [256, 256, 256, 256, 256, 256], + "gdenoise" : [0, 0, 0, 0, 0, 0], + "gsharpen" : [16, 16, 16, 16, 16, 16], + "sharpen_line_shift2" : [6, 6, 6, 6, 6, 6], + "sharpen_line_shift1" : [5, 5, 5, 5, 5, 5], + "sharpen_line_t1" : [1000, 1000, 1000, 1000, 1000, 1000], + "sharpen_line_strength" : [100, 100, 100, 100, 100, 100], + "sharpen_line_r2" : [200, 200, 200, 200, 200, 200], + "sharpen_line_r1" : [5, 5, 5, 5, 5, 5] + }, + { + "hdr" : true, + "gains" : [1, 2, 4, 8, 16, 32], + "enableSharpen" : [0, 0, 0, 0, 0, 0], + "enableSharpenLine" : [0, 0, 0, 0, 0, 0], + "facblack" : [200, 200, 100, 50, 20, 20], + "facwhite" : [200, 200, 150, 80, 40, 20], + "maxblack" : [200, 200, 100, 100, 100, 100], + "maxwhite" : [200, 200, 200, 200, 200, 200], + "t1" : [0, 0, 0, 0, 0, 0], + "t2" : [0, 0, 0, 0, 0, 0], + "t3" : [0, 0, 0, 0, 0, 0], + "t4" : [0, 0, 0, 0, 0, 0], + "r1" : [0, 0, 0, 0, 0, 0], + "r2" : [128, 128, 128, 128, 128, 128], + "r3" : [256, 256, 256, 256, 256, 256], + "gdenoise" : [0, 0, 0, 0, 0, 0], + "gsharpen" : [16, 16, 16, 16, 16, 16], + "sharpen_line_shift2" : [6, 6, 6, 6, 6, 6], + "sharpen_line_shift1" : [5, 5, 5, 5, 5, 5], + "sharpen_line_t1" : [1000, 1000, 1000, 1000, 1000, 1000], + "sharpen_line_strength" : [100, 100, 100, 100, 100, 100], + "sharpen_line_r2" : [200, 200, 200, 200, 200, 200], + "sharpen_line_r1" : [5, 5, 5, 5, 5, 5] + } + ] + }, + { + "classname" : "AWdr4", + "forcecreate" : true, + "enable" : false, + "disable" : true, + "backlight" : true, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "backlight" : [0, 0.1, 0.2, 0.3, 0.4, 0.45], + "strength" : [128, 128, 128, 128, 128, 128], + "highStrength" : [20, 20, 20, 90, 90, 90], + "lowStrength" : [4, 8, 16, 24, 45, 64], + "globalStrength" : [0, 0, 0, 0, 0, 0], + "contrast" : [800, 800, 800, 800, 800, 800], + "flatStrength" : [0, 0, 0, 0, 0, 0], + "flatThreshold" : [0, 0, 0, 0, 0, 0] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "backlight" : [0, 0.1, 0.2, 0.3, 0.4, 0.45], + "strength" : [128, 128, 128, 128, 128, 128], + "highStrength" : [20, 20, 20, 90, 90, 90], + "lowStrength" : [4, 8, 16, 24, 45, 64], + "globalStrength" : [0, 0, 0, 0, 0, 0], + "contrast" : [800, 800, 800, 800, 800, 800], + "flatStrength" : [0, 0, 0, 0, 0, 0], + "flatThreshold" : [0, 0, 0, 0, 0, 0] + } + ], + "entropy_slope": 200, + "entropy_base": 700, + "entropy" : [0, 0, 0, 2, 3, 6, 11, 22, 39, 67, 111, 177, 227, 266, 321, 355, 377, 355, 221, 0], + "gamma_down" : [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 9, 16, 36, 64, 136, 256, 576, 1023], + "gamma_up" : [0, 283121, 330313, 377512, 424723, 471961, 519250, 566650, 614235, 662241, 711077, 761540, 792420, 815280, 849436, 875575, 913530, 948975, 1002792, 1048575], + "?gamma_up" : [0, 1024, 34837, 56737, 82912, 116814, 162079, 223337, 306767, 420749, 576707, 735048, 745499, 755950, 776852, 797754, 839557, 881361, 964968, 1048575], + "gamma_pre" : [0, 31514, 36815, 42173, 47646, 53350, 59514, 66602, 75530, 88145, 108135, 142869, 175428, 207095, 269144, 330303, 442139, 571475, 810472, 1048575] + }, + { + + "classname" : "A3dnrv3", + "forcecreate" : false, + "enable" : false, + "disable" : false, + "autonoiseLevel": true, + "tnr_en" : false, + "nlm_en" : true, + "tables" : [ + { + "hdr" : false, + "enable" : [0, 0, 0, 0, 0, 0, 0], + "gains" : [1, 2, 4, 8, 16, 32], + "filterLen" : [100, 150, 200, 300, 400, 500], + "filterLen2" : [10, 10, 10, 10, 10, 10], + "motionSlope" : [1, 1, 1, 1, 1, 1], + "noiseLevel" : [25, 40, 60, 80, 100, 120], + "sadweight" : [8, 8, 8, 8, 8, 8], + "motionInvFactor" : [20000, 20000, 20000, 20000, 20000, 20000], + "noisemodel_a" : [0.45071, 0.85596, 1.561850, 2.219000, 3.9409, 5.2362], + "noisemodel_b" : [0.000065, 9.7098, 140.351654, 219.965805, 284.8835, 344.9119], + "autoStrength" : [1.5, 1.5, 1.5, 1.5, 1.5, 1.5], + "motion_dilate_en" : [1, 1, 1, 1, 1, 1], + "motion_erode_en" : [1, 1, 1, 1, 1, 1], + "pregamma_en" : [1, 1, 1, 1, 1, 1], + "strength" : [120, 120, 120, 120, 120, 120], + "range_h" : [7, 7, 7, 7, 7, 7], + "range_v" : [3, 3, 3, 3, 3, 3], + "dialte_h" : [3, 3, 3, 3, 3, 3], + "preweight" : [8, 8, 8, 8, 8, 8], + "noise_thresh_factor" : [2, 2, 2, 2, 2, 2], + "moving_pixel_thresh" : [0.6, 0.6, 0.6, 0.6, 0.6, 0.6] + }, + { + "hdr" : true, + "enable" : [0, 0, 0, 0, 0, 0, 0], + "gains" : [1, 2, 4, 8, 16, 32], + "filterLen" : [100, 150, 200, 300, 400, 500], + "filterLen2" : [10, 10, 10, 10, 10, 10], + "motionSlope" : [1, 1, 1, 1, 1, 1], + "noiseLevel" : [25, 40, 60, 80, 100, 120], + "sadweight" : [8, 8, 8, 8, 8, 8], + "motionInvFactor" : [20000, 20000, 20000, 20000, 20000, 20000], + "noisemodel_a" : [0.45071, 0.85596, 1.561850, 2.219000, 3.9409, 5.2362], + "noisemodel_b" : [0.000065, 9.7098, 140.351654, 219.965805, 284.8835, 344.9119], + "autoStrength" : [1.5, 1.5, 1.5, 1.5, 1.5, 1.5], + "motion_dilate_en" : [1, 1, 1, 1, 1, 1], + "motion_erode_en" : [1, 1, 1, 1, 1, 1], + "pregamma_en" : [1, 1, 1, 1, 1, 1], + "strength" : [120, 120, 120, 120, 120, 120], + "range_h" : [7, 7, 7, 7, 7, 7], + "range_v" : [3, 3, 3, 3, 3, 3], + "dialte_h" : [3, 3, 3, 3, 3, 3], + "preweight" : [8, 8, 8, 8, 8, 8], + "noise_thresh_factor" : [2, 2, 2, 2, 2, 2], + "moving_pixel_thresh" : [0.6, 0.6, 0.6, 0.6, 0.6, 0.6] + } + ] + }, + { + "classname" : "A2dnrv5", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 12, 16, 20, 24, 32, 40], + "strength" : [1, 1, 1, 1, 1, 1, 2, 2, 2, 2], + "sigma" : [5, 5, 5, 8, 8, 8, 11, 11, 11, 14], + "blendstatic" : [90, 90, 90, 90, 90, 90, 90, 35, 35, 40], + "blendmotion" : [100, 100, 100, 100, 100, 100, 100, 100, 100, 100] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 12, 16, 20, 24, 32, 40], + "strength" : [1, 1, 1, 1, 1, 1, 2, 2, 2, 2], + "sigma" : [5, 5, 5, 8, 8, 8, 11, 11, 11, 14], + "blendstatic" : [90, 90, 90, 90, 90, 90, 90, 35, 35, 40], + "blendmotion" : [100, 100, 100, 100, 100, 100, 100, 100, 100, 100] + } + ] + }, + { + "classname" : "ADpf", + "forcecreate" : true, + "enable" : false, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 12, 16, 20, 24, 32, 40], + "gradient" : [0.1, 0.2, 0.4, 0.7, 1, 1.5, 2, 2.5, 3, 3.5], + "offset" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "Min" : [1, 1, 1, 1, 1, 1, 1, 2, 4, 16], + "Div" : [64, 64, 64, 65, 65, 65, 65, 65, 65, 65], + "sigma_g" : [1, 1, 2, 2, 3, 3, 4, 4, 4, 4], + "sigma_rb" : [1, 1, 2, 2, 3, 3, 4, 4, 4, 4], + "curve" : [ + [4095, 4095, 3677, 3068, 2686, 2219, 1933, 1735, 1587, 1379, 1235, 1129, 979, 877, 801, 742, 695], + [4095, 4056, 2910, 2388, 2073, 1697, 1471, 1317, 1203, 1042, 933, 852, 738, 660, 603, 558, 523], + [3688, 2169, 1687, 1428, 1260, 1050, 918, 827, 758, 660, 592, 542, 470, 421, 385, 357, 335], + [2254, 1553, 1258, 1085, 968, 816, 718, 649, 597, 521, 469, 430, 374, 335, 307, 284, 267], + [1060, 883, 772, 695, 637, 555, 498, 455, 422, 373, 338, 311, 272, 245, 225, 209, 196], + [580, 524, 481, 448, 420, 378, 346, 321, 301, 270, 247, 229, 202, 183, 168, 157, 148], + [368, 346, 328, 312, 298, 276, 257, 242, 230, 209, 193, 181, 162, 147, 136, 127, 120], + [214, 206, 199, 192, 186, 175, 166, 159, 152, 141, 132, 124, 112, 103, 96, 91, 86], + [158, 152, 147, 142, 138, 130, 124, 118, 113, 105, 99, 93, 84, 78, 72, 68, 64], + [127, 124, 121, 118, 115, 110, 106, 103, 99, 93, 88, 84, 77, 72, 68, 64, 61] + ] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 12, 16, 20, 24, 32, 40], + "gradient" : [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], + "offset" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "Min" : [16, 16, 16, 16, 16, 16, 16, 16, 16, 16], + "Div" : [65, 65, 65, 65, 65, 65, 65, 65, 65, 65], + "sigma_g" : [4, 4, 4, 4, 4, 4, 4, 4, 4, 4], + "sigma_rb" : [4, 4, 4, 4, 4, 4, 4, 4, 4, 4], + "curve" : [ + [4095, 4095, 3677, 3068, 2686, 2219, 1933, 1735, 1587, 1379, 1235, 1129, 979, 877, 801, 742, 695], + [4095, 4056, 2910, 2388, 2073, 1697, 1471, 1317, 1203, 1042, 933, 852, 738, 660, 603, 558, 523], + [3688, 2169, 1687, 1428, 1260, 1050, 918, 827, 758, 660, 592, 542, 470, 421, 385, 357, 335], + [2254, 1553, 1258, 1085, 968, 816, 718, 649, 597, 521, 469, 430, 374, 335, 307, 284, 267], + [1060, 883, 772, 695, 637, 555, 498, 455, 422, 373, 338, 311, 272, 245, 225, 209, 196], + [580, 524, 481, 448, 420, 378, 346, 321, 301, 270, 247, 229, 202, 183, 168, 157, 148], + [368, 346, 328, 312, 298, 276, 257, 242, 230, 209, 193, 181, 162, 147, 136, 127, 120], + [214, 206, 199, 192, 186, 175, 166, 159, 152, 141, 132, 124, 112, 103, 96, 91, 86], + [158, 152, 147, 142, 138, 130, 124, 118, 113, 105, 99, 93, 84, 78, 72, 68, 64], + [127, 124, 121, 118, 115, 110, 106, 103, 99, 93, 88, 84, 77, 72, 68, 64, 61] + ] + } + ] + }, + { + "classname" : "ABlc", + "forcecreate" : true, + "enable" : true, + "tables" : [ + { + "hdr" : false, + "gains" : [1, 16], + "blc" : [256, 256] + }, + { + "hdr" : true, + "gains" : [1, 16], + "blc" : [256, 256] + } + ] + } + ] +} diff --git a/drivers/SC132GS/CMakeLists.txt b/drivers/SC132GS/CMakeLists.txt new file mode 100644 index 0000000..ffe843e --- /dev/null +++ b/drivers/SC132GS/CMakeLists.txt @@ -0,0 +1,35 @@ +cmake_minimum_required(VERSION 3.1.0) + +# define module name & interface version +set (module sc132gs) +string(TOUPPER ${module} SENSOR_NAME) + +# we want to compile all .c files as default +file(GLOB libsources ${SENSOR_NAME}.c ) + +# set public headers, these get installed +#file(GLOB pub_headers include/*.h) + +#include_directories() + +add_library(${module} SHARED ${libsources}) + +add_custom_target(${module}.drv + ALL + COMMAND ${CMAKE_COMMAND} -E copy lib${module}.so ${LIB_ROOT}/rootfs/usr/share/vi/tuningtool/bin/${module}.drv + COMMAND ${CMAKE_COMMAND} -E copy lib${module}.so ${LIB_ROOT}/rootfs/usr/lib/lib${module}.so + COMMAND ${CMAKE_COMMAND} -E make_directory ${LIB_ROOT}/rootfs/usr/share/vi/isp/test/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/*.xml ${LIB_ROOT}/rootfs/usr/share/vi/isp/test/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/${SENSOR_NAME}*.txt ${LIB_ROOT}/rootfs/usr/share/vi/isp/test/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/*.json ${LIB_ROOT}/rootfs/usr/share/vi/isp/test/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/*.xml ${LIB_ROOT}/rootfs/usr/share/vi/tuningtool/bin/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/${SENSOR_NAME}*.txt ${LIB_ROOT}/rootfs/usr/share/vi/tuningtool/bin/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/*.json ${LIB_ROOT}/rootfs/usr/share/vi/tuningtool/bin/ + DEPENDS ${module} + COMMENT "Copying ${module} driver module" + ) + +#install(FILES ${LIB_ROOT}/${CMAKE_BUILD_TYPE}/lib/lib${module}.so.${${module}_INTERFACE_CURRENT} +# DESTINATION ${CMAKE_INSTALL_PREFIX}/bin +# RENAME ${module}.drv +# ) \ No newline at end of file diff --git a/drivers/SC132GS/README.txt b/drivers/SC132GS/README.txt new file mode 100644 index 0000000..0481eda --- /dev/null +++ b/drivers/SC132GS/README.txt @@ -0,0 +1,2 @@ +2 lane 的配置是27mhz的时钟源 +4 lane 的时钟源是24mhz diff --git a/drivers/SC132GS/SC132GS.c b/drivers/SC132GS/SC132GS.c new file mode 100644 index 0000000..7b9520f --- /dev/null +++ b/drivers/SC132GS/SC132GS.c @@ -0,0 +1,1996 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "SC132GS_priv.h" +#include "sc132gs.h" + +CREATE_TRACER( SC132GS_INFO , "SC132GS: ", INFO, 0); +CREATE_TRACER( SC132GS_WARN , "SC132GS: ", WARNING, 1); +CREATE_TRACER( SC132GS_ERROR, "SC132GS: ", ERROR, 1); +CREATE_TRACER( SC132GS_DEBUG, "SC132GS: ", INFO, 1); +CREATE_TRACER( SC132GS_REG_INFO , "SC132GS: ", INFO, 1); +CREATE_TRACER( SC132GS_REG_DEBUG, "SC132GS: ", INFO, 1); + +#ifdef SUBDEV_V4L2 +#include +#include +#include +#include +#include +#undef TRACE +#define TRACE(x, ...) +#endif +#define SC132GS_MIN_GAIN_STEP ( 1.0f/16.0f ) /**< min gain step size used by GUI (hardware min = 1/16; 1/16..32/16 depending on actual gain ) */ +#define SC132GS_MAX_GAIN_AEC ( 32.0f ) /**< max. gain used by the AEC (arbitrarily chosen, hardware limit = 62.0, driver limit = 32.0 ) */ +#define SC132GS_VS_MAX_INTEGRATION_TIME (0.0018) + +/***************************************************************************** + *Sensor Info +*****************************************************************************/ +static const char SensorName[16] = "SC132GS"; + +static struct vvcam_mode_info psc132gs_mode_info[] = { + { + .index = 0, + .width = 1080, + .height = 1280, + .fps = 30, + .hdr_mode = SENSOR_MODE_LINEAR, + .bit_width = 10, + .bayer_pattern = BAYER_BGGR, + .mipi_phy_freq = 607, //mbps + .mipi_line_num = 2, + .preg_data = (void *)"sc132gs sensor liner mode, raw10, 607mbps(sensor clk 24m), img resolution is 1080*1280", + }, + { + .index = 1, + .width = 1080, + .height = 1280, + .fps = 30, + .hdr_mode = SENSOR_MODE_LINEAR, + .bit_width = 10, + .bayer_pattern = BAYER_BGGR, + .mipi_phy_freq = 607, //mbps + .mipi_line_num = 2, + .preg_data = (void *)"sc132gs sensor liner mode, raw10, 607mbps(sensor clk 24m), img resolution is 1080*1280, dual camera synchronization mode, sensor is master", + }, + { + .index = 2, + .width = 1080, + .height = 1280, + .fps = 30, + .hdr_mode = SENSOR_MODE_LINEAR, + .bit_width = 10, + .bayer_pattern = BAYER_BGGR, + .mipi_phy_freq = 607, //mbps + .mipi_line_num = 2, + .preg_data = (void *)"sc132gs sensor liner mode, raw10, 607mbps(sensor clk 24m), img resolution is 1080*1280, dual camera synchronization mode, sensor is slave", + }, + { + .index = 3, + .width = 960, + .height = 1280, + .fps = 30, + .hdr_mode = SENSOR_MODE_LINEAR, + .bit_width = 10, + .bayer_pattern = BAYER_BGGR, + .mipi_phy_freq = 360, //mbps + .mipi_line_num = 2, + .preg_data = (void *)"sc132gs sensor liner mode, raw10 30fps, 360mbps, img resolution is 960*1280", + }, + { + .index = 4, + .width = 960, + .height = 1280, + .fps = 30, + .hdr_mode = SENSOR_MODE_LINEAR, + .bit_width = 10, + .bayer_pattern = BAYER_BGGR, + .mipi_phy_freq = 360, //mbps + .mipi_line_num = 2, + .preg_data = (void *)"sc132gs sensor liner mode, raw10 30fps, 360mbps, img resolution is 960*1280, dual camera synchronization mode, sensor is master", + }, + { + .index = 5, + .width = 960, + .height = 1280, + .fps = 30, + .hdr_mode = SENSOR_MODE_LINEAR, + .bit_width = 10, + .bayer_pattern = BAYER_BGGR, + .mipi_phy_freq = 360, //mbps + .mipi_line_num = 2, + .preg_data = (void *)"sc132gs sensor liner mode, raw10 30fps, 360mbps, img resolution is 960*1280, dual camera synchronization mode, sensor is slave", + }, + +}; + +static RESULT SC132GS_IsiRegisterWriteIss(IsiSensorHandle_t handle, const uint32_t address, const uint32_t value); + +typedef struct { + int ana_reg_val; + float step; + float max_val; +} sc132gs_gain_map_t; + +static sc132gs_gain_map_t sc132gs_gain_map[] = { + {0x03, 0.031, 1}, + {0x03, 0.031, 1.781}, + {0x023, 0.056, 3.568}, + {0x027, 0.114, 7.137}, + {0x02f, 0.226, 14.273}, + {0x03f, 0.450, 28.547}, +}; + +static int sc132gs_set_gain(IsiSensorHandle_t handle, float gain, float *set_gain) +{ +//Normal 模式/ HDR 模式下的长曝光数据 +#define ANA_GAIN 0x3e08 +#define ANA_FINE 0x3e09 +//HDR 模式下的短曝光数据 +#define ANA_VS_GAIN 0x3e12 +#define ANA_VS_FINE 0x3e13 + + int ret = 0; + int i = 0; + uint32_t ana_gain_val = 0; + uint32_t ana_fine_val = 0; + + if (gain <= 1.0) { + ana_gain_val = 0x3; + ana_fine_val = 0x20; + *set_gain = 1; + } else if (gain >= 28.547) { + ana_gain_val = 0x3f; + ana_fine_val = 0x3f; + *set_gain = 28.547; + } else { + for(i = 0; i < sizeof(sc132gs_gain_map) / sizeof(sc132gs_gain_map[0]); i++) { + if (sc132gs_gain_map[i].max_val > gain) { + ana_gain_val = sc132gs_gain_map[i].ana_reg_val; + ana_fine_val = 0x20 + (gain - sc132gs_gain_map[i - 1].max_val) / sc132gs_gain_map[i].step; + *set_gain = sc132gs_gain_map[i - 1].max_val + (gain - sc132gs_gain_map[i - 1].max_val) / sc132gs_gain_map[i].step; + break; + } + } + + if (ana_fine_val > 0x3f) { + ana_fine_val = 0x3f; + *set_gain = sc132gs_gain_map[i].max_val; + } + } + + ret |= SC132GS_IsiRegisterWriteIss(handle, ANA_GAIN, ana_gain_val); + ret |= SC132GS_IsiRegisterWriteIss(handle, ANA_FINE, ana_fine_val); + + if (ret != 0) { + return -1; + } + + return ret; +} + +long __sc132gs_set_exposure(IsiSensorHandle_t handle, int coarse_itg, + int gain, int digitgain, SC132GS_EXPOSURE_SETTING_t type) + +{ + + return 0; +} + +static RESULT SC132GS_IsiSensorSetPowerIss(IsiSensorHandle_t handle, bool_t on) { + RESULT result = RET_SUCCESS; + + int ret = 0; + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + if (pSC132GSCtx == NULL || pSC132GSCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pSC132GSCtx->IsiCtx.HalHandle; + + TRACE(SC132GS_INFO, "%s (enter)\n", __func__); + + int32_t enable = on; + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_POWER, &enable); + if (ret != 0) { + // to do + //TRACE(SC132GS_ERROR, "%s: sensor set power error!\n", __func__); + //return (RET_FAILURE); + } + + TRACE(SC132GS_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT SC132GS_IsiResetSensorIss(IsiSensorHandle_t handle) { + RESULT result = RET_SUCCESS; + int ret = 0; + + TRACE(SC132GS_INFO, "%s (enter)\n", __func__); + + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + if (pSC132GSCtx == NULL || pSC132GSCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pSC132GSCtx->IsiCtx.HalHandle; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_RESET, NULL); + if (ret != 0) { + TRACE(SC132GS_ERROR, "%s: sensor reset error!\n", __func__); + return (RET_FAILURE); + } + sleep(0.01); + + ret = SC132GS_IsiRegisterWriteIss(handle, 0x103, 1); + if (ret != 0) { + TRACE(SC132GS_ERROR, "%s: sensor reset error!\n", __func__); + return (RET_FAILURE); + } + + sleep(0.01); + + ret = SC132GS_IsiRegisterWriteIss(handle, 0x103, 0); + if (ret != 0) { + TRACE(SC132GS_ERROR, "%s: sensor reset error!\n", __func__); + return (RET_FAILURE); + } + + TRACE(SC132GS_INFO, "%s (exit)\n", __func__); + return (result); +} + +#ifdef SUBDEV_CHAR +static RESULT SC132GS_IsiSensorSetClkIss(IsiSensorHandle_t handle, uint32_t clk) { + RESULT result = RET_SUCCESS; + int32_t ret = 0; + + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + if (pSC132GSCtx == NULL || pSC132GSCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pSC132GSCtx->IsiCtx.HalHandle; + + TRACE(SC132GS_INFO, "%s (enter)\n", __func__); + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_CLK, &clk); + if (ret != 0) { + // to do + //TRACE(SC132GS_ERROR, "%s: sensor set clk error!\n", __func__); + //return (RET_FAILURE); + } + + TRACE(SC132GS_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT SC132GS_IsiSensorGetClkIss + (IsiSensorHandle_t handle, uint32_t * pclk) { + RESULT result = RET_SUCCESS; + int ret = 0; + + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + if (pSC132GSCtx == NULL || pSC132GSCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pSC132GSCtx->IsiCtx.HalHandle; + + TRACE(SC132GS_INFO, "%s (enter)\n", __func__); + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_CLK, pclk); + if (ret != 0) { + // to do + //TRACE(SC132GS_ERROR, "%s: sensor get clk error!\n", __func__); + //return (RET_FAILURE); + } + + TRACE(SC132GS_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT SC132GS_IsiConfigSensorSCCBIss(IsiSensorHandle_t handle) +{ + RESULT result = RET_SUCCESS; + return result; + int ret = 0; + TRACE(SC132GS_INFO, "%s (enter)\n", __func__); + + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + if (pSC132GSCtx == NULL || pSC132GSCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pSC132GSCtx->IsiCtx.HalHandle; + + static const IsiSccbInfo_t SensorSccbInfo = { + .slave_addr = (0x31), //0x30 or 0x32 + .addr_byte = 2, + .data_byte = 1, + }; + + struct vvcam_sccb_cfg_s sensor_sccb_config; + sensor_sccb_config.slave_addr = SensorSccbInfo.slave_addr; + sensor_sccb_config.addr_byte = SensorSccbInfo.addr_byte; + sensor_sccb_config.data_byte = SensorSccbInfo.data_byte; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_SENSOR_SCCB_CFG, + &sensor_sccb_config); + if (ret != 0) { + TRACE(SC132GS_ERROR, "%s: sensor config sccb info error!\n", + __func__); + return (RET_FAILURE); + } + + TRACE(SC132GS_INFO, "%s (exit) result = %d\n", __func__, result); + return (result); + + return RET_SUCCESS; +} +#endif + +static RESULT SC132GS_IsiRegisterReadIss + (IsiSensorHandle_t handle, const uint32_t address, uint32_t * p_value) { + RESULT result = RET_SUCCESS; + int32_t ret = 0; + TRACE(SC132GS_INFO, "%s (enter)\n", __func__); + + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + if (pSC132GSCtx == NULL || pSC132GSCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pSC132GSCtx->IsiCtx.HalHandle; + + struct vvcam_sccb_data sccb_data; + sccb_data.addr = address; + sccb_data.data = 0; + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_READ_REG, &sccb_data); + if (ret != 0) { + TRACE(SC132GS_ERROR, "%s: read sensor register error!\n", + __func__); + return (RET_FAILURE); + } + + *p_value = sccb_data.data; + + TRACE(SC132GS_INFO, "%s (exit) result = %d\n", __func__, result); + return (result); +} + +static RESULT SC132GS_IsiRegisterWriteIss + (IsiSensorHandle_t handle, const uint32_t address, const uint32_t value) { + RESULT result = RET_SUCCESS; + int ret = 0; + TRACE(SC132GS_INFO, "%s (enter)\n", __func__); + + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + if (pSC132GSCtx == NULL || pSC132GSCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pSC132GSCtx->IsiCtx.HalHandle; + + struct vvcam_sccb_data sccb_data; + sccb_data.addr = address; + sccb_data.data = value; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_WRITE_REG, &sccb_data); + if (ret != 0) { + TRACE(SC132GS_ERROR, "%s: write sensor register error!\n", + __func__); + return (RET_FAILURE); + } + + TRACE(SC132GS_INFO, "%s (exit) result = %d\n", __func__, result); + return (result); +} + +static RESULT SC132GS_IsiQuerySensorSupportIss(HalHandle_t HalHandle, vvcam_mode_info_array_t *pSensorSupportInfo) +{ + //int ret = 0; + struct vvcam_mode_info_array *psensor_mode_info_arry; + + HalContext_t *pHalCtx = HalHandle; + if ( pHalCtx == NULL ) { + return RET_NULL_POINTER; + } + + psensor_mode_info_arry = pSensorSupportInfo; + psensor_mode_info_arry->count = sizeof(psc132gs_mode_info) / sizeof(struct vvcam_mode_info); + memcpy(psensor_mode_info_arry->modes, psc132gs_mode_info, sizeof(psc132gs_mode_info)); + return RET_SUCCESS; +} + +static RESULT SC132GS_IsiQuerySensorIss(IsiSensorHandle_t handle, vvcam_mode_info_array_t *pSensorInfo) +{ + RESULT result = RET_SUCCESS; + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + if (pSC132GSCtx == NULL || pSC132GSCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pSC132GSCtx->IsiCtx.HalHandle; + SC132GS_IsiQuerySensorSupportIss(pHalCtx,pSensorInfo); + + return result; +} + +static RESULT SC132GS_IsiGetSensorModeIss(IsiSensorHandle_t handle,void *mode) +{ + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + if (pSC132GSCtx == NULL) { + return (RET_WRONG_HANDLE); + } + memcpy(mode,&(pSC132GSCtx->SensorMode), sizeof(pSC132GSCtx->SensorMode)); + + return ( RET_SUCCESS ); +} + +static RESULT SC132GS_IsiCreateSensorIss(IsiSensorInstanceConfig_t * pConfig) { + RESULT result = RET_SUCCESS; + SC132GS_Context_t *pSC132GSCtx; + + TRACE(SC132GS_INFO, "%s (enter)\n", __func__); + + if (!pConfig || !pConfig->pSensor) + return (RET_NULL_POINTER); + + pSC132GSCtx = (SC132GS_Context_t *) malloc(sizeof(SC132GS_Context_t)); + if (!pSC132GSCtx) { + TRACE(SC132GS_ERROR, "%s: Can't allocate sc132gs context\n", + __func__); + return (RET_OUTOFMEM); + } + + MEMSET(pSC132GSCtx, 0, sizeof(SC132GS_Context_t)); + + result = HalAddRef(pConfig->HalHandle); + if (result != RET_SUCCESS) { + free(pSC132GSCtx); + return (result); + } + + pSC132GSCtx->IsiCtx.HalHandle = pConfig->HalHandle; + pSC132GSCtx->IsiCtx.pSensor = pConfig->pSensor; + pSC132GSCtx->GroupHold = BOOL_FALSE; + pSC132GSCtx->OldGain = 0; + pSC132GSCtx->OldIntegrationTime = 0; + pSC132GSCtx->Configured = BOOL_FALSE; + pSC132GSCtx->Streaming = BOOL_FALSE; + pSC132GSCtx->TestPattern = BOOL_FALSE; + pSC132GSCtx->isAfpsRun = BOOL_FALSE; + pSC132GSCtx->SensorMode.index = pConfig->SensorModeIndex; + pConfig->hSensor = (IsiSensorHandle_t) pSC132GSCtx; +#ifdef SUBDEV_CHAR + struct vvcam_mode_info *SensorDefaultMode = NULL; + for (int i=0; i < sizeof(psc132gs_mode_info)/ sizeof(struct vvcam_mode_info); i++) + { + if (psc132gs_mode_info[i].index == pSC132GSCtx->SensorMode.index) + { + SensorDefaultMode = &(psc132gs_mode_info[i]); + break; + } + } + + if (SensorDefaultMode != NULL) + { + strcpy(pSC132GSCtx->SensorRegCfgFile, get_vi_config_path()); + switch(SensorDefaultMode->index) + { + case 0: + strcat(pSC132GSCtx->SensorRegCfgFile, + "SC132GS_mipi2lane_1080x1280_init.txt"); + break; + case 1: + strcat(pSC132GSCtx->SensorRegCfgFile, + "SC132GS_mipi2lane_1080x1280_master_init.txt"); + break; + + case 2: + strcat(pSC132GSCtx->SensorRegCfgFile, + "SC132GS_mipi2lane_1080x1280_slave_init.txt"); + break; + case 3: + strcat(pSC132GSCtx->SensorRegCfgFile, + "SC132GS_mipi2lane_960x1280_init.txt"); + break; + case 4: + strcat(pSC132GSCtx->SensorRegCfgFile, + "SC132GS_mipi2lane_960x1280_master_init.txt"); + break; + case 5: + strcat(pSC132GSCtx->SensorRegCfgFile, + "SC132GS_mipi2lane_960x1280_slave_init.txt"); + break; + default: + return -1; + } + + if (access(pSC132GSCtx->SensorRegCfgFile, F_OK) == 0) { + pSC132GSCtx->KernelDriverFlag = 0; + memcpy(&(pSC132GSCtx->SensorMode),SensorDefaultMode,sizeof(struct vvcam_mode_info)); + } else { + return -1; + } + }else + { + pSC132GSCtx->KernelDriverFlag = 1; + } + + result = SC132GS_IsiSensorSetPowerIss(pSC132GSCtx, BOOL_TRUE); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + + uint32_t SensorClkIn = 0; + if (pSC132GSCtx->KernelDriverFlag) { + result = SC132GS_IsiSensorGetClkIss(pSC132GSCtx, &SensorClkIn); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + } + + result = SC132GS_IsiSensorSetClkIss(pSC132GSCtx, SensorClkIn); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + + result = SC132GS_IsiResetSensorIss(pSC132GSCtx); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + + pSC132GSCtx->pattern = ISI_BPAT_BGBGGRGR; + + if (!pSC132GSCtx->KernelDriverFlag) { + result = SC132GS_IsiConfigSensorSCCBIss(pSC132GSCtx); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + } +#endif + + TRACE(SC132GS_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT SC132GS_IsiGetRegCfgIss(const char *registerFileName, + struct vvcam_sccb_array *arry) +{ + if (NULL == registerFileName) { + TRACE(SC132GS_ERROR, "%s:registerFileName is NULL\n", __func__); + return (RET_NULL_POINTER); + } +#ifdef SUBDEV_CHAR + FILE *fp = NULL; + fp = fopen(registerFileName, "rb"); + if (!fp) { + TRACE(SC132GS_ERROR, "%s:load register file %s error!\n", + __func__, registerFileName); + return (RET_FAILURE); + } + + char LineBuf[512]; + uint32_t FileTotalLine = 0; + while (!feof(fp)) { + fgets(LineBuf, 512, fp); + FileTotalLine++; + } + + arry->sccb_data = + malloc(FileTotalLine * sizeof(struct vvcam_sccb_data)); + if (arry->sccb_data == NULL) { + TRACE(SC132GS_ERROR, "%s:malloc failed NULL Point!\n", __func__, + registerFileName); + return (RET_FAILURE); + } + rewind(fp); + + arry->count = 0; + while (!feof(fp)) { + memset(LineBuf, 0, sizeof(LineBuf)); + fgets(LineBuf, 512, fp); + + int result = + sscanf(LineBuf, "0x%x 0x%x", + &(arry->sccb_data[arry->count].addr), + &(arry->sccb_data[arry->count].data)); + if (result != 2) + continue; + arry->count++; + + } +#endif + + return 0; +} + +static RESULT SC132GS_IsiInitSensorIss(IsiSensorHandle_t handle) { + RESULT result = RET_SUCCESS; + + int ret = 0; + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + + HalContext_t *pHalCtx = (HalContext_t *) pSC132GSCtx->IsiCtx.HalHandle; + TRACE(SC132GS_INFO, "%s (enter)\n", __func__); + + if (pSC132GSCtx == NULL) { + return (RET_WRONG_HANDLE); + } + + if (pSC132GSCtx->KernelDriverFlag) { + ; + } else { + struct vvcam_sccb_array arry; + result = SC132GS_IsiGetRegCfgIss(pSC132GSCtx->SensorRegCfgFile, &arry); + if (result != 0) { + TRACE(SC132GS_ERROR, + "%s:SC132GS_IsiGetRegCfgIss error!\n", __func__); + return (RET_FAILURE); + } + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_WRITE_ARRAY, &arry); + if (ret != 0) { + TRACE(SC132GS_ERROR, "%s:Sensor Write Reg arry error!\n", + __func__); + return (RET_FAILURE); + } + + switch(pSC132GSCtx->SensorMode.index) + { + case 0: + pSC132GSCtx->one_line_exp_time = 1; + pSC132GSCtx->FrameLengthLines = (0x546 - 8) * 16; + pSC132GSCtx->CurFrameLengthLines = pSC132GSCtx->FrameLengthLines; + pSC132GSCtx->MaxIntegrationLine = pSC132GSCtx->CurFrameLengthLines - 3; + pSC132GSCtx->MinIntegrationLine = 1; + pSC132GSCtx->AecMaxGain = 28; + pSC132GSCtx->AecMinGain = 1; + break; + case 1: + pSC132GSCtx->one_line_exp_time = 1; + pSC132GSCtx->FrameLengthLines = (0x546 - 8) * 16; + pSC132GSCtx->CurFrameLengthLines = pSC132GSCtx->FrameLengthLines; + pSC132GSCtx->MaxIntegrationLine = pSC132GSCtx->CurFrameLengthLines - 3; + pSC132GSCtx->MinIntegrationLine = 1; + pSC132GSCtx->AecMaxGain = 28; + pSC132GSCtx->AecMinGain = 1; + break; + case 2: + pSC132GSCtx->one_line_exp_time = 1; + pSC132GSCtx->FrameLengthLines = (0x546 - 8) * 16; + pSC132GSCtx->CurFrameLengthLines = pSC132GSCtx->FrameLengthLines; + pSC132GSCtx->MaxIntegrationLine = pSC132GSCtx->CurFrameLengthLines - 3; + pSC132GSCtx->MinIntegrationLine = 1; + pSC132GSCtx->AecMaxGain = 28; + pSC132GSCtx->AecMinGain = 1; + break; + case 3: + pSC132GSCtx->one_line_exp_time = 1; + pSC132GSCtx->FrameLengthLines = (0x546 - 8) * 16; + pSC132GSCtx->CurFrameLengthLines = pSC132GSCtx->FrameLengthLines; + pSC132GSCtx->MaxIntegrationLine = pSC132GSCtx->CurFrameLengthLines - 3; + pSC132GSCtx->MinIntegrationLine = 1; + pSC132GSCtx->AecMaxGain = 28; + pSC132GSCtx->AecMinGain = 1; + break; + case 4: + pSC132GSCtx->one_line_exp_time = 1; + pSC132GSCtx->FrameLengthLines = (0x546 - 8) * 16; + pSC132GSCtx->CurFrameLengthLines = pSC132GSCtx->FrameLengthLines; + pSC132GSCtx->MaxIntegrationLine = pSC132GSCtx->CurFrameLengthLines - 3; + pSC132GSCtx->MinIntegrationLine = 1; + pSC132GSCtx->AecMaxGain = 28; + pSC132GSCtx->AecMinGain = 1; + break; + case 5: + pSC132GSCtx->one_line_exp_time = 1; + pSC132GSCtx->FrameLengthLines = (0x546 - 8) * 16; + pSC132GSCtx->CurFrameLengthLines = pSC132GSCtx->FrameLengthLines; + pSC132GSCtx->MaxIntegrationLine = pSC132GSCtx->CurFrameLengthLines - 3; + pSC132GSCtx->MinIntegrationLine = 1; + pSC132GSCtx->AecMaxGain = 28; + pSC132GSCtx->AecMinGain = 1; + break; + default: + return ( RET_NOTAVAILABLE ); + } + + pSC132GSCtx->AecIntegrationTimeIncrement = pSC132GSCtx->one_line_exp_time; + pSC132GSCtx->AecMinIntegrationTime = + pSC132GSCtx->one_line_exp_time * pSC132GSCtx->MinIntegrationLine; + pSC132GSCtx->AecMaxIntegrationTime = + pSC132GSCtx->one_line_exp_time * pSC132GSCtx->FrameLengthLines; + + pSC132GSCtx->MaxFps = pSC132GSCtx->SensorMode.fps; + pSC132GSCtx->MinFps = 1; + pSC132GSCtx->CurrFps = pSC132GSCtx->MaxFps; + } + + TRACE(SC132GS_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT SC132GS_IsiReleaseSensorIss(IsiSensorHandle_t handle) { + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(SC132GS_INFO, "%s (enter)\n", __func__); + + if (pSC132GSCtx == NULL) + return (RET_WRONG_HANDLE); + + (void)SC132GS_IsiSensorSetStreamingIss(pSC132GSCtx, BOOL_FALSE); + (void)SC132GS_IsiSensorSetPowerIss(pSC132GSCtx, BOOL_FALSE); + (void)HalDelRef(pSC132GSCtx->IsiCtx.HalHandle); + + MEMSET(pSC132GSCtx, 0, sizeof(SC132GS_Context_t)); + free(pSC132GSCtx); + TRACE(SC132GS_INFO, "%s (exit)\n", __func__); + return (result); +} + +struct sc132gs_fmt { + int width; + int height; + int fps; +}; + +static RESULT SC132GS_IsiSetupSensorIss + (IsiSensorHandle_t handle, const IsiSensorConfig_t * pConfig) { + + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + HalContext_t *pHalCtx = (HalContext_t *) pSC132GSCtx->IsiCtx.HalHandle; + + RESULT result = RET_SUCCESS; + + TRACE(SC132GS_INFO, "%s: (enter)\n", __func__); + + if (!pSC132GSCtx) { + TRACE(SC132GS_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pConfig) { + TRACE(SC132GS_ERROR, + "%s: Invalid configuration (NULL pointer detected)\n", + __func__); + return (RET_NULL_POINTER); + } + + if (pSC132GSCtx->Streaming != BOOL_FALSE) { + return RET_WRONG_STATE; + } + + memcpy(&pSC132GSCtx->Config, pConfig, sizeof(IsiSensorConfig_t)); + + /* 1.) SW reset of image sensor (via I2C register interface) be careful, bits 6..0 are reserved, reset bit is not sticky */ + TRACE(SC132GS_DEBUG, "%s: SC132GS System-Reset executed\n", __func__); + osSleep(100); + + //SC132GS_AecSetModeParameters not defined yet as of 2021/8/9. + //result = SC132GS_AecSetModeParameters(pSC132GSCtx, pConfig); + //if (result != RET_SUCCESS) { + // TRACE(SC132GS_ERROR, "%s: SetupOutputWindow failed.\n", + // __func__); + // return (result); + //} +#if 1 + struct sc132gs_fmt fmt; + fmt.width = pConfig->Resolution.width; + fmt.height = pConfig->Resolution.height; + + ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_FPS, &fmt);//result = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_FPS, &fmt); +#endif + pSC132GSCtx->Configured = BOOL_TRUE; + TRACE(SC132GS_INFO, "%s: (exit) ret=0x%x \n", __func__, result); + return result; +} + +static RESULT SC132GS_IsiChangeSensorResolutionIss(IsiSensorHandle_t handle, uint16_t width, uint16_t height) { + RESULT result = RET_SUCCESS; +#if 0 + struct sc132gs_fmt fmt; + fmt.width = width; + fmt.height = height; + + int ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_FPS, &fmt); +#endif + TRACE(SC132GS_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT SC132GS_IsiSensorSetStreamingIss + (IsiSensorHandle_t handle, bool_t on) { + RESULT result = RET_SUCCESS; + int ret = 0; + TRACE(SC132GS_INFO, "%s (enter)\n", __func__); + + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + if (pSC132GSCtx == NULL || pSC132GSCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pSC132GSCtx->IsiCtx.HalHandle; + + if (pSC132GSCtx->Configured != BOOL_TRUE) + return RET_WRONG_STATE; + + int32_t enable = (uint32_t) on; + ret = SC132GS_IsiRegisterWriteIss(handle, 0x3800, 0x00); + if (ret != 0) { + return (RET_FAILURE); + } + + ret = SC132GS_IsiRegisterWriteIss(handle, 0x3817, 0x01); + if (ret != 0) { + return (RET_FAILURE); + } + + ret = SC132GS_IsiRegisterWriteIss(handle, 0x100, on); + if (ret != 0) { + return (RET_FAILURE); + } + + ret = SC132GS_IsiRegisterWriteIss(handle, 0x3800, 0x10); + if (ret != 0) { + return (RET_FAILURE); + } + + ret = SC132GS_IsiRegisterWriteIss(handle, 0x3800, 0x40); + if (ret != 0) { + return (RET_FAILURE); + } + + pSC132GSCtx->Streaming = on; + + TRACE(SC132GS_INFO, "%s (exit)\n", __func__); + return (result); +} + +static int32_t sensor_get_chip_id(IsiSensorHandle_t handle, uint32_t *chip_id) +{ + RESULT result = RET_SUCCESS; + int32_t ret = 0; + int32_t chip_id_high = 0; + int32_t chip_id_low = 0; + + ret = SC132GS_IsiRegisterReadIss(handle, 0x3107, &chip_id_high); + if (ret != 0) { + TRACE(SC132GS_ERROR, + "%s: Read Sensor correct ID Error! \n", __func__); + return (RET_FAILURE); + } + + ret = SC132GS_IsiRegisterReadIss(handle, 0x3108, &chip_id_low); + if (ret != 0) { + TRACE(SC132GS_ERROR, + "%s: Read Sensor correct ID Error! \n", __func__); + return (RET_FAILURE); + } + + *chip_id = ((chip_id_high & 0xff)<<8) | (chip_id_low & 0xff); + + return 0; +} + +static RESULT SC132GS_IsiCheckSensorConnectionIss(IsiSensorHandle_t handle) { + RESULT result = RET_SUCCESS; + int ret = 0; + uint32_t correct_id = 0x132; + uint32_t sensor_id = 0; + + TRACE(SC132GS_INFO, "%s (enter)\n", __func__); + + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + if (pSC132GSCtx == NULL || pSC132GSCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pSC132GSCtx->IsiCtx.HalHandle; + + ret = sensor_get_chip_id(handle, &sensor_id); + if (ret != 0) { + TRACE(SC132GS_ERROR, + "%s: Read Sensor chip ID Error! \n", __func__); + return (RET_FAILURE); + } + + if (correct_id != sensor_id) { + TRACE(SC132GS_ERROR, "%s:ChipID =0x%x sensor_id=%x error! \n", + __func__, correct_id, sensor_id); + return (RET_FAILURE); + } + + TRACE(SC132GS_INFO, + "%s ChipID = 0x%08x, sensor_id = 0x%08x, success! \n", __func__, + correct_id, sensor_id); + TRACE(SC132GS_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT SC132GS_IsiGetSensorRevisionIss + (IsiSensorHandle_t handle, uint32_t * p_value) { + RESULT result = RET_SUCCESS; + TRACE(SC132GS_INFO, "%s (enter)\n", __func__); + + *p_value = 0X132; + TRACE(SC132GS_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT SC132GS_IsiGetGainLimitsIss + (IsiSensorHandle_t handle, float *pMinGain, float *pMaxGain) { + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + RESULT result = RET_SUCCESS; + + /*TODO*/ + + TRACE(SC132GS_INFO, "%s: (enter)\n", __func__); + + if (pSC132GSCtx == NULL) { + TRACE(SC132GS_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if ((pMinGain == NULL) || (pMaxGain == NULL)) { + TRACE(SC132GS_ERROR, "%s: NULL pointer received!!\n"); + return (RET_NULL_POINTER); + } + + *pMinGain = pSC132GSCtx->AecMinGain; + *pMaxGain = pSC132GSCtx->AecMaxGain; + + TRACE(SC132GS_INFO, "%s: (enter)\n", __func__); + return (result); +} + +static RESULT SC132GS_IsiGetIntegrationTimeLimitsIss + (IsiSensorHandle_t handle, + float *pMinIntegrationTime, float *pMaxIntegrationTime) { + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + RESULT result = RET_SUCCESS; + + /*TODO*/ + + TRACE(SC132GS_INFO, "%s: (enter)\n", __func__); + if (pSC132GSCtx == NULL) { + TRACE(SC132GS_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if ((pMinIntegrationTime == NULL) || (pMaxIntegrationTime == NULL)) { + TRACE(SC132GS_ERROR, "%s: NULL pointer received!!\n"); + return (RET_NULL_POINTER); + } + + *pMinIntegrationTime = pSC132GSCtx->AecMinIntegrationTime; + *pMaxIntegrationTime = pSC132GSCtx->AecMaxIntegrationTime; + + TRACE(SC132GS_INFO, "%s: (enter)\n", __func__); + return (result); +} + +RESULT SC132GS_IsiGetGainIss(IsiSensorHandle_t handle, float *pSetGain) { + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(SC132GS_INFO, "%s: (enter)\n", __func__); + + if (pSC132GSCtx == NULL) { + TRACE(SC132GS_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (pSetGain == NULL) { + return (RET_NULL_POINTER); + } + + *pSetGain = pSC132GSCtx->AecCurGain; + + TRACE(SC132GS_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT SC132GS_IsiGetLongGainIss(IsiSensorHandle_t handle, float *gain) +{ + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + + TRACE(SC132GS_INFO, "%s: (enter)\n", __func__); + + if (pSC132GSCtx == NULL) { + TRACE(SC132GS_ERROR,"%s: Invalid sensor handle (NULL pointer detected)\n",__func__); + return (RET_WRONG_HANDLE); + } + + if (gain == NULL) { + return (RET_NULL_POINTER); + } + + *gain = pSC132GSCtx->AecCurLongGain; + + TRACE(SC132GS_INFO, "%s: (exit)\n", __func__); + + return (RET_SUCCESS); +} + +RESULT SC132GS_IsiGetVSGainIss(IsiSensorHandle_t handle, float *pSetGain) { + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + RESULT result = RET_SUCCESS; + + TRACE(SC132GS_INFO, "%s: (enter)\n", __func__); + + if (pSC132GSCtx == NULL) { + TRACE(SC132GS_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (pSetGain == NULL) { + return (RET_NULL_POINTER); + } + + *pSetGain = pSC132GSCtx->AecCurVSGain; + + TRACE(SC132GS_INFO, "%s: (exit)\n", __func__); + + return (result); +} + +RESULT SC132GS_IsiGetGainIncrementIss(IsiSensorHandle_t handle, float *pIncr) { + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(SC132GS_INFO, "%s: (enter)\n", __func__); + + if (pSC132GSCtx == NULL) { + TRACE(SC132GS_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (pIncr == NULL) + return (RET_NULL_POINTER); + + *pIncr = pSC132GSCtx->AecGainIncrement; + + TRACE(SC132GS_INFO, "%s: (exit)\n", __func__); + + return (result); +} + +RESULT SC132GS_IsiSetGainIss + (IsiSensorHandle_t handle, + float NewGain, float *pSetGain, float *hdr_ratio) { + + RESULT result = RET_SUCCESS; + int32_t ret = 0; + int TmpGain; + + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + if (pSC132GSCtx == NULL || pSC132GSCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + if (NewGain >= 25) { // More than 25 will not take effect + NewGain = 25; + } + + HalContext_t *pHalCtx = (HalContext_t *) pSC132GSCtx->IsiCtx.HalHandle; + + sc132gs_set_gain(handle, NewGain, pSetGain); + pSC132GSCtx->AecCurGain = *pSetGain; + + TRACE(SC132GS_DEBUG, "%s: g=%f\n", __func__, *pSetGain); + return (result); +} + +RESULT SC132GS_IsiSetLongGainIss(IsiSensorHandle_t handle, float gain) +{ + int ret = 0; + TRACE(SC132GS_INFO, "%s: (enter)\n", __func__); + + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + + if (!pSC132GSCtx || !pSC132GSCtx->IsiCtx.HalHandle) + { + TRACE(SC132GS_ERROR,"%s: Invalid sensor handle (NULL pointer detected)\n",__func__); + return (RET_WRONG_HANDLE); + } + + HalContext_t *pHalCtx = (HalContext_t *) pSC132GSCtx->IsiCtx.HalHandle; + + uint32_t SensorGain = 0; + SensorGain = gain * pSC132GSCtx->gain_accuracy; + if (pSC132GSCtx->LastLongGain != SensorGain) + { + + /*TODO*/ +#if 0 + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_LONG_GAIN, &SensorGain); + if (ret != 0) + { + return (RET_FAILURE); + TRACE(SC132GS_ERROR,"%s: set long gain failed\n"); + + } +#endif + pSC132GSCtx->LastLongGain = SensorGain; + pSC132GSCtx->AecCurLongGain = gain; + } + + TRACE(SC132GS_INFO, "%s: (exit)\n", __func__); + return (RET_SUCCESS); +} + +RESULT SC132GS_IsiSetVSGainIss + (IsiSensorHandle_t handle, + float NewIntegrationTime, + float NewGain, float *pSetGain, float *hdr_ratio) { + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + HalContext_t *pHalCtx = (HalContext_t *) pSC132GSCtx->IsiCtx.HalHandle; + RESULT result = RET_SUCCESS; +#if 0 + float Gain = 0.0f; + + uint32_t ucGain = 0U; + uint32_t again = 0U; +#endif + + TRACE(SC132GS_INFO, "%s: (enter)\n", __func__); + + if (!pSC132GSCtx) { + TRACE(SC132GS_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pSetGain || !hdr_ratio) + return (RET_NULL_POINTER); + + uint32_t SensorGain = 0; + SensorGain = NewGain * pSC132GSCtx->gain_accuracy; + + /*TODO*/ + //ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_VSGAIN, &SensorGain); + + pSC132GSCtx->AecCurVSGain = NewGain; + *pSetGain = pSC132GSCtx->AecCurGain; + TRACE(SC132GS_DEBUG, "%s: g=%f\n", __func__, *pSetGain); + TRACE(SC132GS_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT SC132GS_IsiSetBayerPattern(IsiSensorHandle_t handle, uint8_t pattern) +{ + + RESULT result = RET_SUCCESS; +#if 0 + uint8_t h_shift = 0, v_shift = 0; + uint32_t val_h = 0, val_l = 0; + uint16_t val = 0; + uint8_t Start_p = 0; + bool_t streaming_status; + TRACE(SC132GS_INFO, "%s: (enter)\n", __func__); + + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + if (pSC132GSCtx == NULL || pSC132GSCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + // pattern 0:B 1:GB 2:GR 3:R + streaming_status = pSC132GSCtx->Streaming; + result = SC132GS_IsiSensorSetStreamingIss(handle, 0); + switch (pattern) { + case BAYER_BGGR: + Start_p = 0; + break; + case BAYER_GBRG: + Start_p = 1; + break; + case BAYER_GRBG: + Start_p = 2; + break; + case BAYER_RGGB: + Start_p = 3; + break; + } + + h_shift = Start_p % 2; + v_shift = Start_p / 2; + + SC132GS_IsiRegisterReadIss(handle, 0x30a0, &val_h); + SC132GS_IsiRegisterReadIss(handle, 0x30a1, &val_l); + val = (((val_h << 8) & 0xff00) | (val_l & 0x00ff)) + h_shift; + val_h = (val >> 8) & 0xff; + val_l = val & 0xff; + SC132GS_IsiRegisterWriteIss(handle, 0x30a0, (uint8_t)val_h); + SC132GS_IsiRegisterWriteIss(handle, 0x30a1, (uint8_t)val_l); + + SC132GS_IsiRegisterReadIss(handle, 0x30a2, &val_h); + SC132GS_IsiRegisterReadIss(handle, 0x30a3, &val_l); + val = (((val_h << 8) & 0xff00) | (val_l & 0x00ff)) + v_shift; + val_h = (val >> 8) & 0xff; + val_l = val & 0xff; + SC132GS_IsiRegisterWriteIss(handle, 0x30a2, (uint8_t)val_h); + SC132GS_IsiRegisterWriteIss(handle, 0x30a3, (uint8_t)val_l); + + SC132GS_IsiRegisterReadIss(handle, 0x30a4, &val_h); + SC132GS_IsiRegisterReadIss(handle, 0x30a5, &val_l); + val = (((val_h << 8) & 0xff00) | (val_l & 0x00ff)) + h_shift; + val_h = (val >> 8) & 0xff; + val_l = val & 0xff; + SC132GS_IsiRegisterWriteIss(handle, 0x30a4, (uint8_t)val_h); + SC132GS_IsiRegisterWriteIss(handle, 0x30a5, (uint8_t)val_l); + + SC132GS_IsiRegisterReadIss(handle, 0x30a6, &val_h); + SC132GS_IsiRegisterReadIss(handle, 0x30a7, &val_l); + val = (((val_h << 8) & 0xff00) | (val_l & 0x00ff)) + v_shift; + val_h = (val >> 8) & 0xff; + val_l = val & 0xff; + SC132GS_IsiRegisterWriteIss(handle, 0x30a6, (uint8_t)val_h); + SC132GS_IsiRegisterWriteIss(handle, 0x30a7, (uint8_t)val_l); + + pSC132GSCtx->pattern = pattern; + result = SC132GS_IsiSensorSetStreamingIss(handle, streaming_status); +#endif + + return (result); +} + +RESULT SC132GS_IsiGetIntegrationTimeIss + (IsiSensorHandle_t handle, float *pSetIntegrationTime) +{ + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(SC132GS_INFO, "%s: (enter)\n", __func__); + + if (!pSC132GSCtx) { + TRACE(SC132GS_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pSetIntegrationTime) + return (RET_NULL_POINTER); + *pSetIntegrationTime = pSC132GSCtx->AecCurIntegrationTime; + TRACE(SC132GS_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT SC132GS_IsiGetLongIntegrationTimeIss(IsiSensorHandle_t handle, float *pIntegrationTime) +{ + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + TRACE(SC132GS_INFO, "%s: (enter)\n", __func__); + + if (!pSC132GSCtx) { + TRACE(SC132GS_ERROR,"%s: Invalid sensor handle (NULL pointer detected)\n",__func__); + return (RET_WRONG_HANDLE); + } + if (!pIntegrationTime) + return (RET_NULL_POINTER); + + pSC132GSCtx->AecCurLongIntegrationTime = pSC132GSCtx->AecCurIntegrationTime; + + *pIntegrationTime = pSC132GSCtx->AecCurLongIntegrationTime; + TRACE(SC132GS_INFO, "%s: (exit)\n", __func__); + return (RET_SUCCESS); +} + +RESULT SC132GS_IsiGetVSIntegrationTimeIss + (IsiSensorHandle_t handle, float *pSetIntegrationTime) +{ + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(SC132GS_INFO, "%s: (enter)\n", __func__); + + if (!pSC132GSCtx) { + TRACE(SC132GS_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + if (!pSetIntegrationTime) + return (RET_NULL_POINTER); + + *pSetIntegrationTime = pSC132GSCtx->AecCurVSIntegrationTime; + TRACE(SC132GS_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT SC132GS_IsiGetIntegrationTimeIncrementIss + (IsiSensorHandle_t handle, float *pIncr) +{ + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(SC132GS_INFO, "%s: (enter)\n", __func__); + + if (!pSC132GSCtx) { + TRACE(SC132GS_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pIncr) + return (RET_NULL_POINTER); + + //_smallest_ increment the sensor/driver can handle (e.g. used for sliders in the application) + *pIncr = pSC132GSCtx->AecIntegrationTimeIncrement; + TRACE(SC132GS_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT SC132GS_IsiSetIntegrationTimeIss + (IsiSensorHandle_t handle, + float NewIntegrationTime, + float *pSetIntegrationTime, + uint8_t * pNumberOfFramesToSkip, float *hdr_ratio) +{ + RESULT result = RET_SUCCESS; + + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + HalContext_t *pHalCtx = (HalContext_t *) pSC132GSCtx->IsiCtx.HalHandle; + + // 曝光时间小于3ms + if (NewIntegrationTime > 3692.0f) { + NewIntegrationTime = 3692.0f; + } + + //行长 = 寄存器{16‘h320c, 16′h320d}值*2 + //2*{16’h320e,16’h320f}-6:h320e,h320f为帧长 + uint32_t hval_time = (((uint32_t)NewIntegrationTime) & 0xf0000) >> 16; + uint32_t mval_time = (((uint32_t)NewIntegrationTime) & 0xff00) >> 8; + uint32_t lval_time = ((uint32_t)NewIntegrationTime) & 0xff; + + result = SC132GS_IsiRegisterWriteIss(handle, 0x3e00, hval_time); + result = SC132GS_IsiRegisterWriteIss(handle, 0x3e01, mval_time); + result = SC132GS_IsiRegisterWriteIss(handle, 0x3e02, lval_time); + + pSC132GSCtx->AecCurIntegrationTime = NewIntegrationTime; + *pNumberOfFramesToSkip = 1U; + *pSetIntegrationTime = pSC132GSCtx->AecCurIntegrationTime; + +#if 0 + uint32_t exp_line = 0; + uint32_t exp_line_old = 0; + + TRACE(SC132GS_INFO, "%s: (enter)\n", __func__); + + if (!pSC132GSCtx) { + TRACE(SC132GS_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pSetIntegrationTime || !pNumberOfFramesToSkip) { + TRACE(SC132GS_ERROR, + "%s: Invalid parameter (NULL pointer detected)\n", + __func__); + return (RET_NULL_POINTER); + } + + exp_line = NewIntegrationTime / pSC132GSCtx->one_line_exp_time; + exp_line_old = exp_line; + exp_line = + MIN(pSC132GSCtx->MaxIntegrationLine, + MAX(pSC132GSCtx->MinIntegrationLine, exp_line)); + + TRACE(SC132GS_DEBUG, "%s: set AEC_PK_EXPO=0x%05x\n", __func__, exp_line); + + if (exp_line != pSC132GSCtx->OldIntegrationTime) { + + /*TODO*/ + //ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_EXP, &exp_line); + pSC132GSCtx->OldIntegrationTime = exp_line; // remember current integration time + pSC132GSCtx->AecCurIntegrationTime = + exp_line * pSC132GSCtx->one_line_exp_time; + + *pNumberOfFramesToSkip = 1U; //skip 1 frame + } else { + *pNumberOfFramesToSkip = 0U; //no frame skip + } + + if (NewIntegrationTime > pSC132GSCtx->FrameLengthLines * pSC132GSCtx->one_line_exp_time) + NewIntegrationTime = pSC132GSCtx->FrameLengthLines * pSC132GSCtx->one_line_exp_time; + float exp_t = NewIntegrationTime * 16.0f / pSC132GSCtx->one_line_exp_time; + __sc132gs_set_exposure(handle, (int)exp_t, + 0, 0, SC132GS_INTEGRATION_TIME); + + if (exp_line_old != exp_line) { + *pSetIntegrationTime = pSC132GSCtx->AecCurIntegrationTime; + } else { + *pSetIntegrationTime = NewIntegrationTime; + } +#endif + + TRACE(SC132GS_DEBUG, "%s: Ti=%f\n", __func__, *pSetIntegrationTime); + TRACE(SC132GS_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT SC132GS_IsiSetLongIntegrationTimeIss(IsiSensorHandle_t handle,float IntegrationTime) +{ + int ret; + TRACE(SC132GS_INFO, "%s: (enter)\n", __func__); + + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + if (!handle || !pSC132GSCtx->IsiCtx.HalHandle) + { + TRACE(SC132GS_ERROR,"%s: Invalid sensor handle (NULL pointer detected)\n",__func__); + return (RET_WRONG_HANDLE); + } + HalContext_t *pHalCtx = (HalContext_t *) pSC132GSCtx->IsiCtx.HalHandle; + + uint32_t exp_line = 0; + exp_line = IntegrationTime / pSC132GSCtx->one_line_exp_time; + exp_line = MIN(pSC132GSCtx->MaxIntegrationLine, MAX(pSC132GSCtx->MinIntegrationLine, exp_line)); + + if (exp_line != pSC132GSCtx->LastLongExpLine) + { + if (pSC132GSCtx->KernelDriverFlag) + { + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_LONG_EXP, &exp_line); + if (ret != 0) + { + TRACE(SC132GS_ERROR,"%s: set long gain failed\n"); + return RET_FAILURE; + } + } + + pSC132GSCtx->LastLongExpLine = exp_line; + pSC132GSCtx->AecCurLongIntegrationTime = pSC132GSCtx->LastLongExpLine*pSC132GSCtx->one_line_exp_time; + } + + + TRACE(SC132GS_INFO, "%s: (exit)\n", __func__); + return (RET_SUCCESS); +} + +RESULT SC132GS_IsiSetVSIntegrationTimeIss + (IsiSensorHandle_t handle, + float NewIntegrationTime, + float *pSetVSIntegrationTime, + uint8_t * pNumberOfFramesToSkip, float *hdr_ratio) +{ + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + RESULT result = RET_SUCCESS; + uint32_t exp_line = 0; + + TRACE(SC132GS_INFO, "%s: (enter)\n", __func__); + + if (!pSC132GSCtx) { + TRACE(SC132GS_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pSetVSIntegrationTime || !pNumberOfFramesToSkip) { + TRACE(SC132GS_ERROR, + "%s: Invalid parameter (NULL pointer detected)\n", + __func__); + return (RET_NULL_POINTER); + } + + TRACE(SC132GS_INFO, + "%s: maxIntegrationTime-=%f minIntegrationTime = %f\n", __func__, + pSC132GSCtx->AecMaxIntegrationTime, + pSC132GSCtx->AecMinIntegrationTime); + + + exp_line = NewIntegrationTime / pSC132GSCtx->one_line_exp_time; + exp_line = + MIN(pSC132GSCtx->MaxIntegrationLine, + MAX(pSC132GSCtx->MinIntegrationLine, exp_line)); + + if (exp_line != pSC132GSCtx->OldVsIntegrationTime) { + /*TODO*/ + // ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_VSEXP, &exp_line); + } else if (1){ + + pSC132GSCtx->OldVsIntegrationTime = exp_line; + pSC132GSCtx->AecCurVSIntegrationTime = exp_line * pSC132GSCtx->one_line_exp_time; //remember current integration time + *pNumberOfFramesToSkip = 1U; //skip 1 frame + } else { + *pNumberOfFramesToSkip = 0U; //no frame skip + } + + *pSetVSIntegrationTime = pSC132GSCtx->AecCurVSIntegrationTime; + + TRACE(SC132GS_DEBUG, "%s: NewIntegrationTime=%f\n", __func__, + NewIntegrationTime); + TRACE(SC132GS_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT SC132GS_IsiExposureControlIss + (IsiSensorHandle_t handle, + float NewGain, + float NewIntegrationTime, + uint8_t * pNumberOfFramesToSkip, + float *pSetGain, float *pSetIntegrationTime, float *hdr_ratio) +{ + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + RESULT result = RET_SUCCESS; + + TRACE(SC132GS_INFO, "%s: (enter)\n", __func__); + + if (pSC132GSCtx == NULL) { + TRACE(SC132GS_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if ((pNumberOfFramesToSkip == NULL) || (pSetGain == NULL) + || (pSetIntegrationTime == NULL)) { + TRACE(SC132GS_ERROR, + "%s: Invalid parameter (NULL pointer detected)\n", + __func__); + return (RET_NULL_POINTER); + } + + if (NewGain >= 28) { + NewGain = 28; + } + + TRACE(SC132GS_DEBUG, "%s: g=%f, Ti=%f\n", __func__, NewGain, + NewIntegrationTime); + + if (NewIntegrationTime > pSC132GSCtx->FrameLengthLines * pSC132GSCtx->one_line_exp_time) + NewIntegrationTime = pSC132GSCtx->FrameLengthLines * pSC132GSCtx->one_line_exp_time; + + sc132gs_set_gain(handle, NewGain, pSetGain); + SC132GS_IsiSetIntegrationTimeIss(handle, NewIntegrationTime, pSetIntegrationTime, pNumberOfFramesToSkip, hdr_ratio); + pSC132GSCtx->AecCurGain = NewGain; + pSC132GSCtx->AecCurIntegrationTime = *pSetIntegrationTime; + + TRACE(SC132GS_DEBUG, "%s: set: vsg=%f, vsTi=%f, vsskip=%d\n", __func__, + NewGain, NewIntegrationTime, *pNumberOfFramesToSkip); + TRACE(SC132GS_INFO, "%s: (exit)\n", __func__); + + return result; +} + +RESULT SC132GS_IsiGetCurrentExposureIss + (IsiSensorHandle_t handle, float *pSetGain, float *pSetIntegrationTime, float *hdr_ratio) { + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + RESULT result = RET_SUCCESS; + + TRACE(SC132GS_INFO, "%s: (enter)\n", __func__); + + if (pSC132GSCtx == NULL) { + TRACE(SC132GS_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if ((pSetGain == NULL) || (pSetIntegrationTime == NULL)) + return (RET_NULL_POINTER); + + *pSetGain = pSC132GSCtx->AecCurGain; + *pSetIntegrationTime = pSC132GSCtx->AecCurIntegrationTime; + *hdr_ratio = pSC132GSCtx->CurHdrRatio; + + TRACE(SC132GS_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT SC132GS_IsiGetResolutionIss(IsiSensorHandle_t handle, uint16_t *pwidth, uint16_t *pheight) { + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + RESULT result = RET_SUCCESS; + + TRACE(SC132GS_INFO, "%s: (enter)\n", __func__); + + if (pSC132GSCtx == NULL) { + TRACE(SC132GS_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + *pwidth = pSC132GSCtx->SensorMode.width; + *pheight = pSC132GSCtx->SensorMode.height; + + TRACE(SC132GS_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT SC132GS_IsiGetSensorFpsIss(IsiSensorHandle_t handle, uint32_t * pfps) +{ + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + RESULT result = RET_SUCCESS; + + + TRACE(SC132GS_INFO, "%s: (enter)\n", __func__); + + if (pSC132GSCtx == NULL) { + TRACE(SC132GS_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + HalContext_t *pHalCtx = (HalContext_t *) pSC132GSCtx->IsiCtx.HalHandle; + + if (pSC132GSCtx->KernelDriverFlag) { + /*TODO*/ + ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_FPS, pfps); + pSC132GSCtx->CurrFps = *pfps; + } + + *pfps = pSC132GSCtx->CurrFps; + + TRACE(SC132GS_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT SC132GS_IsiSetSensorFpsIss(IsiSensorHandle_t handle, uint32_t fps) +{ + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + RESULT result = RET_SUCCESS; + int32_t ret = 0; + TRACE(SC132GS_INFO, "%s: (enter)\n", __func__); + + if (pSC132GSCtx == NULL) { + TRACE(SC132GS_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + HalContext_t *pHalCtx = (HalContext_t *) pSC132GSCtx->IsiCtx.HalHandle; + + if (fps > pSC132GSCtx->MaxFps) { + TRACE(SC132GS_ERROR, + "%s: set fps(%d) out of range, correct to %d (%d, %d)\n", + __func__, fps, pSC132GSCtx->MaxFps, pSC132GSCtx->MinFps, + pSC132GSCtx->MaxFps); + fps = pSC132GSCtx->MaxFps; + } + if (fps < pSC132GSCtx->MinFps) { + TRACE(SC132GS_ERROR, + "%s: set fps(%d) out of range, correct to %d (%d, %d)\n", + __func__, fps, pSC132GSCtx->MinFps, pSC132GSCtx->MinFps, + pSC132GSCtx->MaxFps); + fps = pSC132GSCtx->MinFps; + } + if (pSC132GSCtx->KernelDriverFlag) { + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_FPS, &fps); + if (ret != 0) { + TRACE(SC132GS_ERROR, "%s: set sensor fps=%d error\n", + __func__); + return (RET_FAILURE); + } + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_SENSOR_MODE, &(pSC132GSCtx->SensorMode)); + { + pSC132GSCtx->MaxIntegrationLine = pSC132GSCtx->SensorMode.ae_info.max_integration_time; + pSC132GSCtx->AecMaxIntegrationTime = pSC132GSCtx->MaxIntegrationLine * pSC132GSCtx->one_line_exp_time; + } +#ifdef SUBDEV_CHAR + struct vvcam_ae_info_s ae_info; + ret = + ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_AE_INFO, &ae_info); + if (ret != 0) { + TRACE(SC132GS_ERROR, "%s:sensor get ae info error!\n", + __func__); + return (RET_FAILURE); + } + pSC132GSCtx->one_line_exp_time = + (float)ae_info.one_line_exp_time_ns / 1000000000; + pSC132GSCtx->MaxIntegrationLine = ae_info.max_integration_time; + pSC132GSCtx->AecMaxIntegrationTime = + pSC132GSCtx->MaxIntegrationLine * + pSC132GSCtx->one_line_exp_time; +#endif + } + + TRACE(SC132GS_INFO, "%s: set sensor fps = %d\n", __func__, + pSC132GSCtx->CurrFps); + + TRACE(SC132GS_INFO, "%s: (exit)\n", __func__); + return (result); +} + +static RESULT SC132GS_IsiActivateTestPattern(IsiSensorHandle_t handle, + const bool_t enable) +{ + RESULT result = RET_SUCCESS; + + TRACE(SC132GS_INFO, "%s: (enter)\n", __func__); + + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + if (pSC132GSCtx == NULL || pSC132GSCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + if (pSC132GSCtx->Configured != BOOL_TRUE) + return RET_WRONG_STATE; + + if (BOOL_TRUE == enable) { + //result = SC132GS_IsiRegisterWriteIss(handle, 0x3253, 0x80); + } else { + //result = SC132GS_IsiRegisterWriteIss(handle, 0x3253, 0x00); + } + pSC132GSCtx->TestPattern = enable; + + TRACE(SC132GS_INFO, "%s: (exit)\n", __func__); + + return (result); +} + +static RESULT SC132GS_IsiSensorSetBlcIss(IsiSensorHandle_t handle, sensor_blc_t * pblc) +{ + int32_t ret = 0; + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + if (pSC132GSCtx == NULL || pSC132GSCtx->IsiCtx.HalHandle == NULL) { + return RET_WRONG_HANDLE; + } + + if (pblc == NULL) + return RET_NULL_POINTER; + + HalContext_t *pHalCtx = (HalContext_t *) pSC132GSCtx->IsiCtx.HalHandle; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_BLC, pblc); + if (ret != 0) + { + TRACE(SC132GS_ERROR, "%s: set wb error\n", __func__); + } + + return RET_SUCCESS; +} + +static RESULT SC132GS_IsiSensorSetWBIss(IsiSensorHandle_t handle, sensor_white_balance_t * pwb) +{ + int32_t ret = 0; + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + if (pSC132GSCtx == NULL || pSC132GSCtx->IsiCtx.HalHandle == NULL) { + return RET_WRONG_HANDLE; + } + HalContext_t *pHalCtx = (HalContext_t *) pSC132GSCtx->IsiCtx.HalHandle; + + if (pwb == NULL) + return RET_NULL_POINTER; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_WB, pwb); + if (ret != 0) + { + TRACE(SC132GS_ERROR, "%s: set wb error\n", __func__); + } + + return RET_SUCCESS; +} + +static RESULT SC132GS_IsiGetSensorAWBModeIss(IsiSensorHandle_t handle, IsiSensorAwbMode_t *pawbmode) +{ + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + if (pSC132GSCtx == NULL || pSC132GSCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + if (pSC132GSCtx->SensorMode.hdr_mode == SENSOR_MODE_HDR_NATIVE){ + *pawbmode = ISI_SENSOR_AWB_MODE_SENSOR; + }else{ + *pawbmode = ISI_SENSOR_AWB_MODE_NORMAL; + } + return RET_SUCCESS; +} + +static RESULT SC132GS_IsiSensorGetExpandCurveIss(IsiSensorHandle_t handle, sensor_expand_curve_t * pexpand_curve) +{ + int32_t ret = 0; + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + if (pSC132GSCtx == NULL || pSC132GSCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pSC132GSCtx->IsiCtx.HalHandle; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_EXPAND_CURVE, pexpand_curve); + if (ret != 0) + { + TRACE(SC132GS_ERROR, "%s: get expand cure error\n", __func__); + return RET_FAILURE; + } + + return RET_SUCCESS; +} + +static RESULT SC132GS_IsiGetCapsIss(IsiSensorHandle_t handle, + IsiSensorCaps_t * pIsiSensorCaps) +{ + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + + RESULT result = RET_SUCCESS; + + TRACE(SC132GS_INFO, "%s (enter)\n", __func__); + + if (pSC132GSCtx == NULL) { + return (RET_WRONG_HANDLE); + } + + if (pIsiSensorCaps == NULL) { + return (RET_NULL_POINTER); + } + + pIsiSensorCaps->BusWidth = pSC132GSCtx->SensorMode.bit_width; + pIsiSensorCaps->Mode = ISI_MODE_BAYER; + pIsiSensorCaps->FieldSelection = ISI_FIELDSEL_BOTH; + pIsiSensorCaps->YCSequence = ISI_YCSEQ_YCBYCR; + pIsiSensorCaps->Conv422 = ISI_CONV422_NOCOSITED; + pIsiSensorCaps->BPat = pSC132GSCtx->SensorMode.bayer_pattern; + pIsiSensorCaps->HPol = ISI_HPOL_REFPOS; + pIsiSensorCaps->VPol = ISI_VPOL_NEG; + pIsiSensorCaps->Edge = ISI_EDGE_RISING; + pIsiSensorCaps->Resolution.width = pSC132GSCtx->SensorMode.width; + pIsiSensorCaps->Resolution.height = pSC132GSCtx->SensorMode.height; + pIsiSensorCaps->SmiaMode = ISI_SMIA_OFF; + pIsiSensorCaps->MipiLanes = ISI_MIPI_2LANES; + + if (pIsiSensorCaps->BusWidth == 10) { + pIsiSensorCaps->MipiMode = ISI_MIPI_MODE_RAW_10; + }else if (pIsiSensorCaps->BusWidth == 12){ + pIsiSensorCaps->MipiMode = ISI_MIPI_MODE_RAW_12; + }else{ + pIsiSensorCaps->MipiMode = ISI_MIPI_OFF; + } + + TRACE(SC132GS_INFO, "%s (exit)\n", __func__); + return result; +} + +static RESULT SC132GS_IsiGetSensorTemperature(IsiSensorHandle_t handle, int32_t *val) +{ + RESULT result = RET_SUCCESS; + int ret = 0; + uint32_t i = 0, f = 0; + + TRACE(SC132GS_INFO, "%s (enter)\n", __func__); + + SC132GS_Context_t *pSC132GSCtx = (SC132GS_Context_t *) handle; + if (pSC132GSCtx == NULL || pSC132GSCtx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pSC132GSCtx->IsiCtx.HalHandle; + + /* + ret = SC132GS_IsiRegisterReadIss(handle, 0x4c11, &f); //float + if (ret != 0) { + TRACE(SC132GS_ERROR, "%s: sensor reset error!\n", __func__); + return (RET_FAILURE); + } + */ + + ret = SC132GS_IsiRegisterReadIss(handle, 0x4c10, &i); //integer + if (ret != 0) { + TRACE(SC132GS_ERROR, "%s: sensor reset error!\n", __func__); + return (RET_FAILURE); + } + + *val = i * 2 - 273; + + TRACE(SC132GS_INFO, "%s (exit)\n", __func__); + return (result); +} + + +RESULT SC132GS_IsiGetSensorIss(IsiSensor_t *pIsiSensor) +{ + RESULT result = RET_SUCCESS; + TRACE( SC132GS_INFO, "%s (enter)\n", __func__); + + if ( pIsiSensor != NULL ) { + pIsiSensor->pszName = SensorName; + pIsiSensor->pIsiCreateSensorIss = SC132GS_IsiCreateSensorIss; + + pIsiSensor->pIsiInitSensorIss = SC132GS_IsiInitSensorIss; + pIsiSensor->pIsiGetSensorModeIss = SC132GS_IsiGetSensorModeIss; + pIsiSensor->pIsiResetSensorIss = SC132GS_IsiResetSensorIss; + pIsiSensor->pIsiReleaseSensorIss = SC132GS_IsiReleaseSensorIss; + pIsiSensor->pIsiGetCapsIss = SC132GS_IsiGetCapsIss; + pIsiSensor->pIsiSetupSensorIss = SC132GS_IsiSetupSensorIss; + pIsiSensor->pIsiChangeSensorResolutionIss = SC132GS_IsiChangeSensorResolutionIss; + pIsiSensor->pIsiSensorSetStreamingIss = SC132GS_IsiSensorSetStreamingIss; + pIsiSensor->pIsiSensorSetPowerIss = SC132GS_IsiSensorSetPowerIss; + pIsiSensor->pIsiCheckSensorConnectionIss = SC132GS_IsiCheckSensorConnectionIss; + pIsiSensor->pIsiGetSensorRevisionIss = SC132GS_IsiGetSensorRevisionIss; + pIsiSensor->pIsiRegisterReadIss = SC132GS_IsiRegisterReadIss; + pIsiSensor->pIsiRegisterWriteIss = SC132GS_IsiRegisterWriteIss; + + /* AEC functions */ + pIsiSensor->pIsiExposureControlIss = SC132GS_IsiExposureControlIss; + pIsiSensor->pIsiGetGainLimitsIss = SC132GS_IsiGetGainLimitsIss; + pIsiSensor->pIsiGetIntegrationTimeLimitsIss = SC132GS_IsiGetIntegrationTimeLimitsIss; + pIsiSensor->pIsiGetCurrentExposureIss = SC132GS_IsiGetCurrentExposureIss; + pIsiSensor->pIsiGetVSGainIss = SC132GS_IsiGetVSGainIss; + pIsiSensor->pIsiGetGainIss = SC132GS_IsiGetGainIss; + pIsiSensor->pIsiGetLongGainIss = SC132GS_IsiGetLongGainIss; + pIsiSensor->pIsiGetGainIncrementIss = SC132GS_IsiGetGainIncrementIss; + pIsiSensor->pIsiSetGainIss = SC132GS_IsiSetGainIss; + pIsiSensor->pIsiGetIntegrationTimeIss = SC132GS_IsiGetIntegrationTimeIss; + pIsiSensor->pIsiGetVSIntegrationTimeIss = SC132GS_IsiGetVSIntegrationTimeIss; + pIsiSensor->pIsiGetLongIntegrationTimeIss = SC132GS_IsiGetLongIntegrationTimeIss; + pIsiSensor->pIsiGetIntegrationTimeIncrementIss = SC132GS_IsiGetIntegrationTimeIncrementIss; + pIsiSensor->pIsiSetIntegrationTimeIss = SC132GS_IsiSetIntegrationTimeIss; + pIsiSensor->pIsiQuerySensorIss = SC132GS_IsiQuerySensorIss; + pIsiSensor->pIsiGetResolutionIss = SC132GS_IsiGetResolutionIss; + pIsiSensor->pIsiGetSensorFpsIss = SC132GS_IsiGetSensorFpsIss; + pIsiSensor->pIsiSetSensorFpsIss = SC132GS_IsiSetSensorFpsIss; + pIsiSensor->pIsiSensorGetExpandCurveIss = SC132GS_IsiSensorGetExpandCurveIss; + + /* AWB specific functions */ + + /* Testpattern */ + pIsiSensor->pIsiActivateTestPattern = SC132GS_IsiActivateTestPattern; + pIsiSensor->pIsiSetBayerPattern = SC132GS_IsiSetBayerPattern; + + pIsiSensor->pIsiSensorSetBlcIss = SC132GS_IsiSensorSetBlcIss; + pIsiSensor->pIsiSensorSetWBIss = SC132GS_IsiSensorSetWBIss; + pIsiSensor->pIsiGetSensorAWBModeIss = SC132GS_IsiGetSensorAWBModeIss; + pIsiSensor->pIsiGetSensorTemperature = SC132GS_IsiGetSensorTemperature; + } else { + result = RET_NULL_POINTER; + } + + TRACE( SC132GS_INFO, "%s (exit)\n", __func__); + return ( result ); +} + +/***************************************************************************** +* each sensor driver need declare this struct for isi load +*****************************************************************************/ +IsiCamDrvConfig_t SC132GS_IsiCamDrvConfig = { + 0, + SC132GS_IsiQuerySensorSupportIss, + SC132GS_IsiGetSensorIss, + { + SensorName, /**< IsiSensor_t.pszName */ + 0, /**< IsiSensor_t.pIsiInitIss>*/ + 0, /**< IsiSensor_t.pIsiResetSensorIss>*/ + 0, /**< IsiSensor_t.pRegisterTable */ + 0, /**< IsiSensor_t.pIsiSensorCaps */ + 0, /**< IsiSensor_t.pIsiCreateSensorIss */ + 0, /**< IsiSensor_t.pIsiReleaseSensorIss */ + 0, /**< IsiSensor_t.pIsiGetCapsIss */ + 0, /**< IsiSensor_t.pIsiSetupSensorIss */ + 0, /**< IsiSensor_t.pIsiChangeSensorResolutionIss */ + 0, /**< IsiSensor_t.pIsiSensorSetStreamingIss */ + 0, /**< IsiSensor_t.pIsiSensorSetPowerIss */ + 0, /**< IsiSensor_t.pIsiCheckSensorConnectionIss */ + 0, /**< IsiSensor_t.pIsiGetSensorRevisionIss */ + 0, /**< IsiSensor_t.pIsiRegisterReadIss */ + 0, /**< IsiSensor_t.pIsiRegisterWriteIss */ + + 0, /**< IsiSensor_t.pIsiExposureControlIss */ + 0, /**< IsiSensor_t.pIsiGetGainLimitsIss */ + 0, /**< IsiSensor_t.pIsiGetIntegrationTimeLimitsIss */ + 0, /**< IsiSensor_t.pIsiGetCurrentExposureIss */ + 0, /**< IsiSensor_t.pIsiGetGainIss */ + 0, /**< IsiSensor_t.pIsiGetVSGainIss */ + 0, /**< IsiSensor_t.pIsiGetGainIncrementIss */ + 0, /**< IsiSensor_t.pIsiGetGainIncrementIss */ + 0, /**< IsiSensor_t.pIsiSetGainIss */ + 0, /**< IsiSensor_t.pIsiGetIntegrationTimeIss */ + 0, /**< IsiSensor_t.pIsiGetIntegrationTimeIncrementIss */ + 0, /**< IsiSensor_t.pIsiSetIntegrationTimeIss */ + 0, /**< IsiSensor_t.pIsiGetResolutionIss */ + 0, /**< IsiSensor_t.pIsiGetAfpsInfoIss */ + + 0, /**< IsiSensor_t.pIsiMdiInitMotoDriveMds */ + 0, /**< IsiSensor_t.pIsiMdiSetupMotoDrive */ + 0, /**< IsiSensor_t.pIsiMdiFocusSet */ + 0, /**< IsiSensor_t.pIsiMdiFocusGet */ + 0, /**< IsiSensor_t.pIsiMdiFocusCalibrate */ + 0, /**< IsiSensor_t.pIsiGetSensorMipiInfoIss */ + 0, /**< IsiSensor_t.pIsiActivateTestPattern */ + 0, /**< IsiSensor_t.pIsiSetBayerPattern */ + } +}; diff --git a/drivers/SC132GS/SC132GS.xml b/drivers/SC132GS/SC132GS.xml new file mode 100644 index 0000000..d00501a --- /dev/null +++ b/drivers/SC132GS/SC132GS.xml @@ -0,0 +1,1375 @@ + + +
+ + 29-Jun-2021 + + + xrh + + + OV5648_VGA + + + LensA_03_ant_5648 + + + v2.0.19 + + + + + 640x480 + + + 0x00000001 + + + [ 640] + + + [ 480] + + + + + FPS_15 + + + [ 14.9916] + + + + + FPS_10 + + + [ 9.9944] + + + + + FPS_05 + + + [ 4.9972] + + + + + +
+ + + + + + 640x480 + + + 640x480 + + + [0.316211 0.450278 0.23351] + + + [0.810766 -0.489012 -0.321754 0.0965665 0.653861 -0.75043] + + + [-0.677389 -0.735625 -2.2245] + + + [0.9 1.06472 1.12932 1.19392 1.25851 1.32311 1.38771 1.45231 1.5169 1.5815 1.6461 1.7107 1.7753 1.83989 1.90449 1.9691] + + + [0.0477825 0.0318575 0.0177747 0.0053393 -0.00526232 -0.0138163 -0.0200636 -0.0237368 -0.0247103 -0.0226834 -0.0172902 -0.00823107 0.00452079 0.0218954 0.0434027 0.076164] + + + [0.9 1.06472 1.12932 1.19392 1.25851 1.32311 1.38771 1.45231 1.5169 1.5815 1.6461 1.7107 1.7753 1.83989 1.90449 1.9691] + + + [-0.0377825 -0.0218575 -0.00777468 0.0046607 0.0152623 0.0238163 0.0300636 0.0337368 0.0347103 0.0326834 0.0272902 0.0182311 0.00547921 -0.0118954 -0.0334027 -0.066164] + + + [0.8 0.880606 0.961212 1.04182 1.12242 1.20303 1.28364 1.36424 1.44485 1.52545 1.60606 1.68667 1.76727 1.84788 1.92848 2.2] + + + [0.200744 0.175747 0.153106 0.132329 0.114272 0.0986159 0.0860366 0.0769741 0.0715332 0.0703707 0.0739714 0.082977 0.0977554 0.119343 0.147614 0.19041] + + + [0.8 0.880606 0.961212 1.04182 1.12242 1.20303 1.28364 1.36424 1.44485 1.52545 1.60606 1.68667 1.76727 1.84788 1.92848 2.2] + + + [-0.000744293 0.0242529 0.0468937 0.0676709 0.0857277 0.101384 0.113963 0.123026 0.128467 0.129629 0.126029 0.117023 0.102245 0.0806574 0.0523865 0.0095864] + + + [ 0.9] + + + [ 1.9691] + + + [ 2.2] + + + [ 1.5815] + + + D50 + + + [ 3.1754] + + + [0.75 1.28836 1.77672 2.164 2.6 3.0618] + + + [114 114 105 95 95 90] + + + [83 83 110 120 122 128] + + + [28 27 18 16 9 9] + + + [123 123 123 123 123 120] + + + [123 123 123 123 123 126] + + + [5 5 5 5 5 5] + + + [ 1] + + + [ 0.8] + + + [ 0.05] + + + + [ 0.05] + + + [ 0.05] + + + [ 0.4] + + + [ 0.5] + + + [ 0.9] + + + [ 0.5] + + + [ 50] + + + [ 1] + + + [ 0.5] + + + + + + + + A + + + Outdoor + + + + [581.701 -599.641 -599.641 4769.5325] + + + [ 247.3246] + + + [1 1] + + + [-0.121897 -0.14612] + + + + + + 640x480 + + + 1920x1080_A_90 1920x1080_A_80 + + + + + [1.2213 1 1 1.9842] + + + [2.06242 -0.371307 -0.663126 -0.544726 2.0142 -0.418246 -0.231985 -1.5015 2.7321] + + + [18.6851 19.911 5.6011] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + A_100 + + + + + + D50 + + + Outdoor + + + + [660.396 -566.167 -566.167 1299.308] + + + [ 116.6849] + + + [1 1] + + + [-0.0332151 -0.050803] + + + + + + 640x480 + + + 1920x1080_D50_90 + + + + + [1.7235 1 1 1.4796] + + + [2.15715 -0.811382 -0.352482 -0.40827 2.03502 -0.610777 -0.107697 -0.997128 2.105] + + + [27.4831 35.8149 24.214] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D50_100 + + + + + + D65 + + + Outdoor + + + + [769.711 -526.328 -526.328 898.2725] + + + [ 102.4529] + + + [1 1] + + + [0.0119213 -0.020824] + + + + + + 640x480 + + + 1920x1080_D65_90 + + + + + [1.93689 1 1 1.2873] + + + [2.41044 -1.18465 -0.231436 -0.331637 1.88932 -0.539832 -0.0998097 -0.787651 1.8939] + + + [23.0711 34.8913 27.0426] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D65_100 + + + + + + F2 (CWF) + + + Indoor + + + + [969.419 -426.006 -426.006 719.3782] + + + [ 114.3146] + + + [1 1] + + + [-0.0519455 -0.090868] + + + + + + 640x480 + + + 1920x1080_F2_90 + + + + + [1.4659 1 1 1.4979] + + + [2.04873 -0.864931 -0.17386 -0.516298 2.10785 -0.552634 -0.101268 -0.93087 2.0287] + + + [17.1462 22.1597 14.0667] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F2_100 + + + + + + F11 (TL84) + + + Indoor + + + + [654.898 -374.136 -374.136 916.2745] + + + [ 107.9546] + + + [1 1] + + + [-0.0628424 -0.079301] + + + + + + 640x480 + + + 1920x1080_F11_90 + + + + + [1.53834 1 1 1.5979] + + + [1.93371 -0.741394 -0.174673 -0.437678 2.0616 -0.578537 -0.0965241 -1.07416 2.1677] + + + [17.0109 22.4961 12.1673] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F11_100 + + + + + + + + + 1920x1080_A_90 + + + 640x480 + + + A + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [22 45 73 94 132 169 207 218] + + + [42 53 62 69 75 69 85 85] + + + [ 90] + + + [5847 5067 3857 2767 2047 1755 1484 1334 1335 1388 1588 1863 2179 2862 3757 5117 5647 5091 4430 3450 2564 1966 1690 1425 1279 1278 1342 1525 1797 2099 2551 3660 4151 5089 4321 3824 3070 2359 1897 1612 1362 1214 1221 1277 1457 1718 2002 2387 2909 3876 4153 3725 3359 2775 2203 1837 1540 1297 1152 1176 1216 1393 1635 1918 2169 2761 3249 3653 3316 3031 2525 2096 1774 1471 1233 1137 1114 1174 1327 1569 1848 2088 2469 2964 3211 3044 2790 2362 2024 1720 1395 1204 1106 1075 1131 1282 1490 1741 1958 2289 2678 2919 2884 2659 2266 1986 1694 1356 1211 1082 1050 1105 1252 1438 1682 1845 1967 2695 2507 2747 2547 2202 1950 1693 1409 1195 1066 1029 1084 1218 1371 1666 1795 2009 2207 2447 2714 2506 2186 1933 1682 1416 1184 1064 1024 1082 1219 1385 1668 1833 2048 2267 2446 2753 2548 2197 1956 1689 1424 1195 1072 1032 1088 1225 1401 1662 1833 2051 2361 2581 2872 2657 2274 1983 1730 1449 1218 1098 1062 1107 1248 1428 1711 1914 2142 2511 2720 3042 2816 2372 2039 1781 1420 1224 1142 1093 1137 1279 1473 1745 1950 2252 2669 2905 3358 3056 2557 2106 1835 1458 1263 1168 1130 1180 1304 1533 1811 2055 2453 2948 3197 3782 3410 2811 2226 1912 1525 1318 1227 1156 1221 1366 1599 1889 2156 2738 3263 3654 4455 3921 3152 2417 1998 1602 1371 1291 1180 1277 1430 1682 1955 2344 2981 3805 4217 5244 4595 3544 2653 2093 1681 1422 1340 1273 1323 1501 1765 2044 2566 3469 4346 5020 6096 5337 4002 2910 2210 1753 1482 1382 1337 1385 1574 1846 2159 2830 3823 5103 5814] + + + [4937 4249 3253 2340 1727 1524 1324 1227 1253 1288 1435 1634 1842 2405 3142 4233 4756 4247 3735 2904 2175 1673 1473 1283 1190 1212 1259 1389 1581 1798 2144 3070 3475 4217 3629 3222 2602 1999 1626 1416 1236 1143 1171 1215 1347 1525 1728 2017 2460 3257 3448 3133 2834 2343 1871 1587 1359 1191 1098 1142 1171 1298 1469 1670 1849 2335 2748 3076 2794 2564 2139 1796 1542 1314 1141 1099 1091 1139 1254 1420 1624 1793 2090 2504 2692 2573 2363 2005 1742 1502 1251 1127 1077 1065 1109 1222 1363 1536 1689 1939 2260 2481 2437 2245 1923 1713 1490 1222 1142 1061 1042 1090 1201 1324 1491 1591 1661 2283 2089 2321 2142 1870 1680 1492 1279 1133 1049 1026 1075 1171 1267 1483 1555 1709 1843 2043 2286 2114 1858 1671 1484 1287 1127 1049 1024 1070 1176 1281 1488 1587 1745 1904 2040 2316 2144 1868 1686 1488 1290 1135 1056 1027 1079 1180 1298 1482 1585 1745 1977 2169 2424 2239 1918 1707 1516 1309 1150 1078 1056 1091 1200 1316 1518 1658 1819 2103 2281 2560 2376 2007 1743 1559 1272 1148 1115 1080 1116 1219 1349 1542 1680 1902 2248 2433 2805 2564 2156 1791 1597 1297 1171 1133 1107 1151 1235 1390 1591 1760 2075 2482 2685 3207 2860 2384 1888 1654 1347 1212 1177 1122 1181 1281 1437 1648 1834 2317 2753 3047 3731 3296 2654 2049 1719 1408 1246 1225 1136 1219 1326 1499 1690 1988 2529 3186 3524 4409 3852 2988 2254 1789 1465 1283 1256 1211 1256 1379 1562 1758 2166 2928 3627 4197 5100 4458 3375 2452 1886 1514 1323 1280 1262 1295 1431 1619 1835 2388 3218 4206 4856] + + + [4942 4247 3263 2342 1735 1522 1327 1224 1255 1293 1440 1642 1858 2429 3182 4305 4918 4280 3744 2922 2184 1674 1476 1284 1190 1210 1261 1393 1589 1806 2170 3107 3516 4240 3632 3233 2607 2007 1627 1417 1239 1145 1171 1218 1351 1539 1737 2034 2488 3293 3509 3152 2839 2351 1874 1590 1362 1193 1099 1142 1173 1304 1477 1682 1862 2358 2770 3082 2806 2563 2146 1799 1545 1317 1142 1099 1093 1143 1258 1429 1636 1803 2108 2528 2726 2569 2366 2004 1745 1502 1253 1128 1081 1067 1113 1227 1372 1550 1702 1961 2274 2493 2440 2250 1920 1719 1491 1225 1144 1062 1044 1091 1207 1332 1500 1602 1673 2324 2104 2331 2147 1876 1684 1494 1278 1136 1052 1027 1079 1177 1275 1495 1563 1723 1845 2062 2295 2111 1858 1675 1485 1291 1130 1051 1024 1075 1182 1290 1494 1600 1752 1924 2056 2329 2144 1873 1685 1491 1291 1136 1058 1030 1082 1185 1304 1493 1594 1757 1984 2176 2410 2233 1921 1706 1520 1312 1153 1079 1055 1095 1203 1323 1528 1669 1830 2123 2300 2564 2375 2003 1745 1558 1276 1149 1116 1081 1116 1224 1356 1552 1688 1909 2264 2441 2805 2560 2155 1791 1600 1294 1173 1132 1109 1153 1239 1395 1596 1768 2085 2493 2712 3179 2852 2376 1885 1652 1349 1210 1176 1124 1179 1285 1443 1654 1846 2325 2758 3069 3704 3283 2640 2045 1715 1402 1248 1221 1133 1218 1327 1502 1696 1990 2538 3194 3524 4340 3814 2976 2242 1788 1463 1278 1253 1208 1253 1377 1565 1763 2177 2929 3626 4179 5092 4397 3343 2448 1877 1508 1319 1276 1255 1294 1432 1620 1835 2391 3208 4233 4775] + + + [4204 3707 2933 2164 1634 1452 1279 1205 1235 1263 1389 1562 1743 2219 2858 3702 4137 3752 3298 2654 2024 1591 1406 1244 1170 1198 1242 1359 1518 1706 2008 2760 3088 3611 3198 2903 2405 1890 1550 1362 1213 1135 1167 1212 1324 1483 1657 1896 2280 2917 3079 2827 2604 2169 1782 1518 1321 1176 1099 1140 1173 1291 1437 1609 1762 2164 2510 2747 2552 2351 2006 1714 1479 1281 1134 1101 1095 1144 1250 1398 1566 1713 1946 2286 2454 2353 2193 1880 1670 1447 1226 1123 1081 1068 1113 1222 1346 1497 1620 1823 2072 2243 2235 2087 1811 1643 1440 1199 1143 1065 1047 1096 1201 1311 1449 1527 1565 2110 1916 2128 1991 1772 1615 1445 1261 1134 1052 1028 1080 1175 1253 1449 1494 1619 1700 1871 2110 1964 1756 1603 1434 1270 1128 1051 1024 1075 1178 1273 1453 1526 1648 1759 1878 2139 1982 1764 1613 1441 1267 1136 1056 1029 1079 1182 1281 1445 1517 1650 1822 1965 2216 2065 1805 1634 1459 1288 1148 1079 1053 1093 1192 1298 1476 1588 1713 1943 2092 2345 2164 1873 1663 1499 1243 1142 1118 1080 1113 1215 1326 1491 1608 1777 2063 2206 2524 2332 2000 1700 1529 1262 1161 1133 1107 1151 1228 1359 1532 1675 1923 2260 2380 2860 2577 2178 1781 1580 1299 1195 1173 1118 1175 1269 1401 1579 1734 2119 2477 2722 3234 2918 2417 1903 1625 1349 1221 1208 1121 1208 1296 1447 1608 1850 2304 2809 3046 3758 3308 2682 2064 1676 1390 1236 1232 1182 1228 1335 1491 1654 1988 2601 3138 3533 4210 3787 2981 2226 1741 1428 1262 1241 1223 1260 1366 1531 1709 2168 2821 3562 4021] + + + + + 1920x1080_A_80 + + + 640x480 + + + A + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [21 43 70 93 130 170 210 223] + + + [41 52 62 68 76 70 85 86] + + + [ 80] + + + [4095 4095 3677 2664 1947 1686 1438 1300 1307 1356 1543 1795 2075 2737 3582 4095 4095 4095 4095 3288 2459 1879 1630 1389 1254 1255 1317 1490 1734 2002 2443 3487 3944 4095 4092 3631 2925 2264 1819 1561 1334 1192 1204 1260 1429 1670 1915 2289 2771 3678 3925 3508 3178 2642 2109 1767 1498 1275 1135 1165 1204 1368 1595 1841 2075 2626 3070 3436 3129 2862 2406 2004 1718 1436 1215 1124 1109 1163 1311 1535 1783 1991 2350 2800 3020 2858 2636 2247 1936 1669 1366 1187 1100 1071 1126 1267 1460 1682 1877 2175 2522 2742 2710 2510 2154 1905 1648 1331 1200 1077 1047 1101 1241 1407 1631 1749 1872 2548 2336 2577 2406 2093 1871 1644 1385 1184 1063 1028 1084 1203 1350 1611 1715 1900 2071 2290 2548 2365 2076 1856 1634 1394 1176 1060 1024 1080 1207 1364 1613 1754 1936 2132 2287 2585 2406 2087 1878 1640 1401 1185 1070 1031 1088 1210 1380 1605 1760 1938 2226 2417 2695 2509 2160 1903 1677 1424 1207 1094 1060 1103 1236 1402 1660 1826 2030 2367 2548 2855 2660 2261 1949 1726 1395 1201 1137 1088 1132 1263 1443 1688 1861 2138 2517 2726 3167 2891 2439 2014 1775 1426 1240 1160 1122 1170 1285 1500 1745 1960 2337 2787 3003 3571 3228 2679 2131 1842 1488 1288 1212 1143 1208 1343 1556 1813 2060 2604 3082 3443 4095 3735 3007 2321 1917 1559 1337 1271 1165 1258 1400 1632 1869 2248 2838 3611 3988 4095 4095 3390 2543 2007 1628 1380 1314 1250 1299 1462 1705 1950 2462 3308 4095 4095 4095 4095 3823 2790 2116 1690 1433 1348 1309 1353 1528 1774 2058 2704 3651 4095 4095] + + + [4095 3971 3054 2223 1636 1457 1281 1195 1225 1257 1392 1561 1744 2283 2953 3951 4095 3958 3494 2736 2072 1588 1414 1246 1163 1190 1232 1352 1517 1701 2039 2883 3245 3923 3380 3010 2453 1904 1549 1366 1206 1121 1153 1197 1314 1475 1641 1915 2324 3038 3206 2913 2648 2208 1778 1519 1316 1166 1081 1130 1157 1273 1424 1593 1753 2200 2564 2856 2602 2399 2024 1703 1486 1276 1123 1084 1085 1130 1233 1382 1557 1697 1973 2341 2503 2394 2209 1893 1655 1450 1220 1109 1070 1062 1102 1205 1328 1477 1608 1830 2108 2306 2266 2101 1815 1631 1443 1192 1126 1055 1040 1085 1187 1290 1435 1501 1570 2137 1930 2159 2006 1764 1603 1441 1251 1121 1047 1025 1074 1155 1243 1427 1476 1606 1718 1896 2127 1979 1753 1596 1432 1263 1115 1047 1024 1070 1162 1258 1431 1512 1639 1775 1894 2153 2008 1761 1609 1438 1264 1123 1053 1027 1078 1165 1273 1422 1512 1640 1850 2014 2254 2095 1809 1625 1462 1281 1136 1074 1054 1086 1184 1286 1463 1571 1713 1966 2118 2379 2223 1896 1655 1501 1245 1123 1110 1075 1111 1200 1319 1480 1593 1794 2099 2258 2615 2397 2041 1699 1535 1265 1146 1124 1100 1141 1214 1351 1526 1669 1961 2321 2498 2980 2673 2250 1795 1583 1309 1182 1162 1109 1165 1255 1392 1570 1741 2185 2565 2830 3486 3089 2501 1955 1635 1364 1210 1205 1119 1199 1293 1448 1601 1894 2380 2979 3275 4095 3607 2818 2144 1701 1414 1240 1230 1190 1228 1340 1498 1666 2059 2753 3389 3908 4095 4095 3176 2328 1793 1454 1275 1244 1234 1263 1384 1544 1737 2266 3018 3925 4095] + + + [4095 3963 3072 2226 1642 1455 1283 1193 1226 1259 1393 1569 1757 2305 2989 4023 4095 3985 3502 2749 2079 1589 1416 1247 1163 1188 1236 1355 1527 1709 2061 2919 3290 3943 3382 3026 2458 1913 1548 1367 1208 1122 1153 1200 1318 1483 1649 1935 2345 3077 3267 2932 2652 2214 1781 1522 1319 1170 1081 1130 1159 1277 1430 1604 1764 2225 2582 2865 2611 2398 2028 1707 1488 1279 1124 1084 1087 1133 1238 1392 1568 1709 1990 2367 2535 2387 2213 1893 1658 1454 1221 1109 1073 1062 1107 1210 1338 1490 1620 1851 2122 2320 2270 2104 1813 1634 1443 1194 1129 1057 1043 1088 1191 1299 1446 1511 1585 2173 1945 2168 2011 1769 1607 1443 1251 1124 1049 1027 1078 1160 1251 1437 1484 1617 1722 1913 2136 1977 1751 1597 1435 1265 1118 1047 1024 1075 1167 1265 1436 1525 1646 1794 1909 2166 2009 1764 1607 1439 1265 1126 1054 1030 1080 1170 1280 1432 1521 1649 1857 2022 2241 2088 1812 1624 1466 1285 1137 1074 1053 1090 1187 1293 1473 1582 1725 1983 2136 2381 2222 1889 1659 1500 1247 1125 1110 1076 1112 1205 1325 1489 1601 1800 2117 2266 2617 2393 2037 1698 1538 1264 1147 1121 1101 1141 1219 1356 1530 1676 1969 2331 2519 2957 2665 2240 1792 1580 1310 1179 1161 1109 1165 1257 1399 1578 1750 2189 2572 2851 3456 3072 2490 1946 1634 1360 1210 1200 1117 1197 1294 1450 1608 1896 2391 2986 3273 4046 3571 2803 2133 1697 1409 1235 1227 1185 1226 1337 1503 1669 2068 2755 3386 3889 4095 4095 3142 2324 1783 1446 1270 1241 1227 1261 1384 1548 1738 2265 3013 3950 4095] + + + [4095 3652 2856 2101 1567 1394 1237 1175 1211 1237 1354 1506 1672 2155 2773 3642 4093 3689 3224 2572 1965 1523 1359 1212 1146 1179 1222 1325 1472 1635 1942 2681 3004 3527 3104 2813 2329 1828 1492 1319 1186 1115 1153 1195 1301 1441 1595 1831 2193 2826 2979 2714 2510 2091 1715 1469 1283 1156 1081 1130 1161 1270 1402 1550 1693 2086 2413 2632 2454 2256 1933 1649 1437 1249 1116 1088 1090 1136 1233 1367 1515 1643 1865 2191 2348 2242 2099 1806 1603 1409 1198 1106 1074 1065 1109 1209 1319 1449 1560 1748 1973 2134 2129 1995 1733 1582 1405 1173 1127 1061 1045 1092 1192 1284 1408 1451 1496 2016 1801 2024 1899 1691 1558 1405 1237 1124 1049 1027 1079 1162 1235 1405 1431 1536 1604 1766 2005 1873 1681 1547 1396 1247 1118 1049 1024 1074 1166 1253 1410 1465 1566 1665 1771 2033 1890 1688 1555 1401 1246 1125 1053 1028 1079 1168 1262 1399 1460 1569 1729 1858 2109 1972 1726 1574 1420 1263 1134 1076 1052 1090 1183 1271 1435 1522 1633 1848 1983 2237 2067 1797 1596 1455 1222 1118 1114 1077 1110 1198 1302 1444 1541 1698 1966 2098 2422 2236 1926 1633 1483 1236 1140 1125 1101 1142 1211 1327 1482 1606 1846 2164 2268 2759 2479 2100 1717 1524 1269 1167 1161 1107 1161 1250 1363 1522 1664 2036 2373 2607 3145 2832 2336 1843 1567 1309 1188 1191 1106 1192 1269 1407 1541 1785 2220 2718 2944 3691 3238 2604 2004 1609 1349 1199 1207 1165 1204 1305 1438 1583 1922 2518 3047 3447 4095 3730 2911 2154 1678 1376 1222 1212 1199 1233 1333 1476 1637 2095 2735 3486 3962] + + + + + 1920x1080_D50_90 + + + 640x480 + + + D50 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [22 45 75 103 136 171 197 211] + + + [45 55 62 69 75 67 83 84] + + + [ 90] + + + [5099 4379 3289 2397 1841 1569 1357 1253 1305 1352 1516 1760 2001 2628 3469 4640 5207 4379 3854 2955 2207 1776 1500 1306 1212 1247 1305 1460 1694 1943 2333 3332 3774 4576 3833 3367 2668 2026 1720 1438 1249 1183 1190 1251 1395 1620 1868 2203 2679 3537 3774 3334 3028 2444 1913 1667 1386 1214 1162 1141 1196 1338 1545 1806 2026 2558 3006 3369 3023 2740 2282 1852 1606 1366 1181 1127 1095 1148 1285 1485 1735 1956 2269 2735 2947 2763 2564 2151 1821 1555 1331 1150 1098 1064 1111 1243 1444 1658 1844 2133 2521 2729 2625 2433 2079 1800 1525 1298 1141 1079 1037 1089 1215 1411 1631 1857 2024 2643 2479 2526 2332 2027 1786 1512 1270 1143 1059 1027 1071 1200 1385 1605 1832 2040 2215 2426 2484 2310 2014 1791 1510 1242 1152 1054 1024 1070 1195 1384 1593 1825 2018 2150 2340 2530 2330 2038 1811 1531 1243 1154 1062 1034 1079 1206 1387 1590 1826 2010 2265 2495 2625 2448 2101 1847 1597 1320 1166 1100 1050 1100 1234 1385 1592 1848 2049 2381 2567 2788 2572 2184 1893 1638 1352 1189 1141 1077 1125 1268 1389 1625 1888 2118 2507 2737 3032 2794 2357 1951 1702 1395 1228 1157 1119 1166 1307 1439 1683 1949 2283 2733 2962 3435 3085 2581 2050 1769 1451 1265 1200 1165 1216 1344 1518 1748 2031 2548 3036 3379 3990 3560 2865 2214 1838 1512 1274 1258 1203 1266 1395 1601 1815 2182 2781 3513 3819 4681 4156 3261 2434 1915 1577 1319 1312 1223 1302 1458 1670 1905 2362 3197 3976 4610 5529 4860 3706 2687 2022 1657 1392 1342 1320 1343 1525 1744 1999 2640 3511 4657 5241] + + + [4461 3834 2864 2085 1602 1380 1228 1164 1232 1271 1399 1578 1752 2287 3021 4080 4637 3912 3353 2580 1909 1555 1335 1191 1138 1195 1242 1357 1531 1717 2037 2926 3315 3980 3339 2945 2326 1762 1509 1284 1149 1127 1153 1203 1310 1478 1660 1920 2358 3114 3326 2935 2638 2142 1660 1469 1245 1125 1120 1116 1163 1269 1421 1615 1783 2248 2642 2947 2635 2394 1989 1616 1421 1237 1107 1099 1080 1127 1231 1376 1564 1730 1996 2393 2590 2417 2226 1876 1597 1382 1210 1088 1078 1054 1096 1199 1344 1499 1638 1874 2208 2379 2292 2112 1811 1582 1358 1184 1085 1064 1035 1079 1179 1321 1478 1655 1776 2331 2164 2202 2024 1765 1572 1346 1162 1094 1045 1025 1063 1168 1305 1461 1638 1799 1922 2115 2159 2000 1754 1576 1346 1135 1104 1043 1024 1063 1166 1306 1453 1628 1779 1864 2028 2204 2032 1769 1592 1365 1135 1105 1048 1029 1072 1175 1304 1451 1627 1768 1972 2162 2287 2125 1823 1623 1424 1203 1113 1082 1047 1086 1200 1299 1442 1644 1799 2071 2233 2438 2239 1901 1657 1457 1227 1126 1119 1067 1111 1223 1294 1467 1671 1858 2182 2378 2660 2434 2047 1711 1511 1261 1153 1128 1102 1146 1256 1332 1512 1718 1991 2385 2588 3014 2715 2261 1790 1567 1308 1177 1165 1143 1186 1283 1396 1563 1793 2241 2668 2958 3513 3138 2531 1939 1623 1355 1178 1207 1169 1229 1324 1467 1618 1916 2454 3082 3371 4190 3685 2864 2143 1686 1409 1209 1250 1179 1252 1372 1518 1685 2074 2827 3495 4018 4988 4322 3256 2363 1776 1468 1267 1257 1259 1278 1414 1576 1760 2308 3080 4050 4676] + + + [4496 3825 2884 2081 1606 1379 1231 1169 1231 1275 1404 1582 1762 2299 3036 4130 4661 3886 3360 2574 1916 1554 1336 1191 1137 1198 1242 1360 1535 1720 2055 2942 3338 4056 3348 2948 2321 1760 1510 1284 1151 1128 1154 1204 1315 1487 1669 1935 2368 3137 3323 2923 2627 2142 1662 1470 1247 1127 1121 1118 1166 1273 1425 1622 1793 2264 2658 2967 2632 2393 1985 1615 1424 1238 1108 1100 1081 1128 1234 1383 1570 1738 2010 2403 2596 2411 2226 1876 1595 1382 1211 1089 1080 1055 1098 1203 1348 1508 1644 1877 2220 2398 2292 2113 1812 1580 1359 1184 1087 1065 1035 1081 1183 1327 1484 1660 1785 2347 2174 2202 2024 1768 1573 1346 1164 1096 1047 1026 1066 1170 1310 1469 1643 1808 1931 2119 2153 1993 1757 1575 1348 1137 1107 1043 1024 1065 1169 1309 1461 1637 1784 1877 2028 2205 2028 1768 1593 1364 1134 1107 1049 1030 1073 1178 1310 1454 1631 1780 1974 2179 2290 2120 1822 1624 1424 1204 1113 1082 1046 1089 1202 1303 1449 1650 1801 2075 2236 2412 2233 1893 1657 1457 1227 1128 1119 1069 1111 1226 1298 1472 1676 1860 2193 2381 2657 2430 2040 1705 1511 1260 1155 1127 1102 1146 1258 1335 1519 1721 1991 2387 2598 2992 2694 2251 1786 1563 1307 1177 1162 1143 1184 1285 1396 1568 1792 2245 2668 2956 3492 3103 2507 1932 1620 1354 1178 1205 1168 1230 1323 1471 1618 1923 2447 3068 3380 4138 3650 2848 2123 1686 1407 1205 1247 1174 1250 1370 1517 1689 2068 2821 3482 4012 4927 4275 3222 2348 1766 1463 1265 1258 1255 1275 1412 1579 1759 2306 3084 4036 4669] + + + [4004 3468 2622 1933 1498 1300 1174 1140 1216 1252 1363 1513 1664 2137 2781 3680 4111 3495 3039 2374 1774 1457 1259 1146 1116 1184 1227 1331 1477 1633 1911 2705 3044 3584 3052 2702 2147 1646 1421 1224 1117 1116 1147 1202 1294 1438 1591 1821 2196 2850 3036 2701 2445 1983 1567 1389 1194 1103 1114 1116 1165 1262 1390 1559 1706 2101 2450 2725 2439 2210 1855 1523 1347 1194 1089 1097 1083 1128 1228 1356 1511 1658 1876 2215 2376 2231 2060 1760 1508 1314 1173 1077 1076 1058 1102 1199 1330 1457 1570 1766 2048 2205 2118 1959 1701 1497 1296 1150 1077 1062 1035 1084 1180 1310 1442 1587 1684 2182 1991 2029 1874 1660 1492 1284 1136 1084 1046 1028 1068 1169 1298 1429 1579 1707 1787 1964 1999 1850 1654 1492 1286 1108 1098 1039 1024 1066 1168 1298 1424 1570 1693 1748 1858 2027 1873 1658 1510 1304 1107 1099 1046 1029 1074 1174 1295 1418 1568 1684 1835 1994 2101 1961 1711 1539 1356 1172 1105 1081 1045 1089 1197 1288 1401 1581 1704 1921 2061 2224 2067 1767 1569 1392 1191 1117 1116 1067 1110 1220 1281 1422 1606 1743 2022 2173 2440 2240 1899 1612 1431 1220 1140 1125 1101 1143 1251 1310 1460 1644 1862 2194 2370 2730 2481 2084 1680 1482 1258 1156 1158 1138 1180 1276 1366 1502 1703 2070 2445 2694 3162 2832 2323 1804 1527 1290 1149 1193 1159 1219 1303 1422 1550 1798 2264 2794 3044 3705 3300 2614 1965 1584 1329 1161 1225 1155 1233 1335 1457 1602 1919 2574 3138 3601 4348 3798 2937 2160 1641 1376 1207 1226 1229 1245 1368 1507 1649 2117 2800 3613 4067] + + + + + 1920x1080_D65_90 + + + 640x480 + + + D65 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [21 42 71 101 136 170 200 219] + + + [42 55 60 71 78 67 83 84] + + + [ 90] + + + [5187 4589 3551 2556 1878 1597 1359 1244 1290 1347 1518 1760 2015 2667 3470 4618 5173 4535 4011 3188 2381 1813 1541 1304 1212 1241 1297 1461 1695 1949 2379 3359 3763 4490 3857 3474 2824 2196 1763 1481 1246 1188 1185 1246 1394 1627 1863 2228 2713 3521 3759 3402 3077 2569 2045 1737 1427 1210 1162 1136 1191 1341 1560 1807 2047 2582 3019 3340 3020 2782 2355 1950 1693 1383 1189 1125 1092 1144 1288 1494 1739 1932 2279 2682 2892 2792 2577 2189 1894 1644 1347 1155 1097 1061 1108 1246 1446 1682 1889 2125 2477 2656 2636 2461 2121 1859 1615 1328 1139 1083 1036 1088 1222 1423 1638 1853 2031 2645 2466 2564 2367 2060 1834 1594 1318 1124 1070 1028 1073 1203 1401 1618 1835 2035 2236 2514 2506 2337 2056 1833 1592 1310 1120 1071 1024 1075 1203 1404 1601 1825 2021 2283 2447 2572 2375 2083 1851 1606 1338 1125 1079 1036 1087 1214 1414 1592 1821 2035 2293 2475 2667 2503 2148 1897 1646 1386 1158 1107 1060 1110 1241 1445 1571 1836 2082 2390 2577 2831 2639 2247 1941 1691 1421 1189 1142 1090 1140 1266 1488 1559 1887 2162 2526 2703 3100 2872 2447 2011 1758 1485 1240 1171 1136 1183 1313 1527 1646 1950 2349 2747 2978 3530 3208 2689 2142 1829 1565 1290 1216 1188 1235 1368 1583 1754 2041 2606 3052 3396 4109 3707 3017 2331 1905 1634 1338 1265 1215 1287 1423 1640 1846 2212 2813 3528 3873 4838 4357 3441 2581 1998 1711 1403 1305 1281 1315 1488 1717 1929 2430 3256 4018 4594 5667 4982 3886 2827 2120 1785 1473 1347 1336 1388 1555 1784 2045 2697 3617 4659 5322] + + + [4737 4116 3169 2271 1644 1419 1228 1158 1226 1269 1403 1592 1783 2354 3090 4117 4636 4078 3606 2839 2103 1599 1374 1190 1142 1192 1240 1360 1542 1737 2113 3004 3367 4051 3476 3097 2516 1938 1569 1328 1147 1134 1150 1200 1318 1492 1671 1975 2425 3152 3340 3020 2733 2281 1810 1547 1286 1125 1122 1115 1161 1274 1438 1630 1825 2301 2689 2982 2694 2460 2073 1724 1512 1256 1113 1100 1078 1124 1235 1392 1577 1730 2032 2383 2572 2458 2271 1935 1680 1476 1230 1092 1079 1055 1095 1204 1354 1531 1697 1890 2195 2364 2340 2162 1864 1649 1451 1213 1081 1068 1035 1078 1185 1338 1492 1673 1806 2367 2186 2249 2073 1812 1629 1433 1210 1071 1057 1027 1067 1174 1322 1481 1652 1821 1983 2206 2215 2056 1808 1624 1432 1203 1070 1060 1024 1071 1174 1327 1466 1644 1806 2018 2165 2255 2090 1832 1645 1441 1229 1074 1067 1035 1081 1183 1337 1455 1643 1813 2023 2178 2369 2193 1889 1674 1477 1266 1102 1091 1055 1102 1206 1363 1424 1650 1850 2114 2270 2507 2325 1978 1718 1512 1298 1124 1121 1083 1127 1227 1392 1415 1692 1929 2226 2404 2766 2545 2151 1778 1573 1351 1167 1141 1123 1167 1266 1423 1485 1744 2091 2449 2642 3195 2866 2403 1895 1636 1420 1202 1180 1169 1210 1311 1467 1582 1818 2332 2730 3019 3722 3322 2694 2073 1700 1482 1242 1217 1191 1255 1355 1519 1666 1973 2535 3172 3484 4454 3929 3087 2307 1781 1549 1296 1241 1245 1272 1413 1574 1730 2176 2934 3613 4129 5253 4557 3497 2540 1878 1604 1346 1272 1279 1330 1453 1627 1812 2412 3255 4182 4768] + + + [4711 4123 3157 2255 1644 1416 1227 1156 1223 1271 1404 1594 1780 2369 3110 4131 4666 4087 3573 2831 2102 1597 1372 1191 1140 1192 1238 1363 1544 1739 2118 3013 3385 4070 3440 3077 2509 1930 1565 1326 1147 1132 1149 1201 1318 1495 1673 1982 2422 3168 3356 3011 2721 2269 1806 1545 1286 1124 1121 1114 1161 1277 1437 1634 1828 2310 2696 2994 2680 2446 2069 1721 1509 1253 1112 1098 1078 1125 1237 1395 1580 1734 2036 2395 2580 2447 2265 1930 1677 1473 1228 1090 1079 1054 1096 1205 1357 1534 1701 1894 2194 2370 2329 2148 1857 1646 1450 1212 1080 1069 1034 1078 1185 1341 1494 1674 1808 2374 2186 2236 2067 1810 1626 1429 1208 1071 1056 1025 1068 1176 1324 1482 1654 1823 1982 2213 2197 2043 1802 1622 1428 1203 1071 1059 1024 1070 1175 1327 1469 1645 1808 2023 2160 2245 2082 1822 1640 1439 1224 1072 1066 1033 1080 1184 1339 1457 1645 1814 2022 2175 2348 2175 1883 1671 1471 1265 1100 1089 1055 1101 1205 1364 1427 1651 1850 2114 2272 2485 2304 1966 1714 1505 1296 1122 1120 1079 1126 1225 1392 1414 1691 1925 2221 2396 2744 2512 2139 1771 1569 1348 1164 1139 1120 1164 1265 1425 1484 1745 2084 2439 2635 3141 2841 2377 1884 1630 1414 1199 1176 1167 1206 1310 1465 1576 1815 2321 2726 2999 3677 3268 2664 2053 1690 1475 1238 1212 1187 1253 1354 1517 1662 1965 2527 3149 3473 4388 3883 3057 2281 1772 1542 1289 1238 1240 1268 1406 1572 1725 2166 2915 3576 4082 5176 4497 3448 2513 1859 1595 1338 1267 1275 1323 1450 1624 1804 2398 3212 4152 4739] + + + [4262 3716 2925 2094 1543 1325 1175 1125 1205 1253 1364 1530 1695 2198 2879 3728 4185 3727 3276 2612 1953 1497 1292 1142 1119 1180 1225 1335 1488 1654 1984 2781 3099 3683 3167 2850 2332 1808 1475 1258 1113 1120 1144 1195 1301 1448 1609 1866 2270 2902 3078 2797 2527 2118 1703 1458 1226 1097 1113 1112 1162 1268 1407 1573 1745 2148 2505 2757 2489 2288 1927 1632 1426 1205 1092 1094 1080 1126 1232 1368 1525 1661 1911 2214 2381 2281 2100 1813 1586 1404 1185 1076 1076 1055 1099 1203 1339 1491 1630 1790 2040 2196 2154 2009 1744 1561 1380 1175 1067 1066 1035 1083 1183 1325 1455 1608 1708 2223 2016 2082 1922 1704 1538 1368 1177 1059 1054 1027 1073 1174 1314 1449 1591 1729 1847 2065 2044 1901 1698 1538 1368 1169 1062 1055 1024 1073 1174 1320 1434 1582 1722 1894 2013 2083 1934 1710 1554 1374 1194 1063 1062 1034 1083 1184 1324 1422 1580 1722 1887 2021 2173 2027 1768 1584 1404 1230 1091 1087 1054 1101 1202 1347 1387 1581 1759 1966 2114 2299 2134 1840 1619 1437 1256 1110 1119 1079 1128 1222 1371 1372 1616 1814 2070 2222 2535 2337 1992 1676 1486 1301 1148 1136 1120 1163 1259 1401 1434 1666 1957 2254 2426 2886 2629 2213 1771 1548 1360 1176 1169 1164 1204 1302 1437 1516 1725 2158 2524 2756 3354 3019 2474 1922 1599 1408 1206 1201 1179 1246 1336 1475 1595 1842 2352 2893 3163 3967 3530 2817 2115 1665 1462 1246 1217 1224 1253 1380 1515 1643 2014 2678 3253 3675 4644 4059 3171 2324 1740 1507 1279 1235 1252 1301 1408 1559 1707 2216 2950 3718 4245] + + + + + 1920x1080_D75_90 + + + 640x480 + + + D75 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [19 40 72 103 136 172 198 220] + + + [43 54 62 71 76 66 83 85] + + + [ 90] + + + [4740 4181 3268 2362 1765 1527 1334 1268 1289 1348 1511 1754 1985 2646 3449 4562 4966 4075 3673 2899 2163 1697 1470 1289 1249 1232 1297 1449 1687 1923 2359 3329 3717 4384 3582 3214 2604 1996 1648 1405 1260 1209 1177 1245 1396 1614 1852 2202 2704 3468 3690 3143 2881 2391 1865 1615 1376 1228 1169 1134 1193 1337 1550 1795 2028 2550 2949 3253 2819 2616 2213 1791 1565 1351 1186 1129 1089 1149 1288 1488 1718 1901 2257 2653 2846 2617 2429 2094 1758 1518 1306 1165 1096 1058 1111 1247 1445 1665 1829 2126 2487 2635 2461 2332 2009 1748 1494 1281 1161 1078 1036 1091 1221 1416 1634 1847 2023 2577 2406 2392 2234 1959 1737 1477 1253 1152 1058 1026 1074 1205 1393 1616 1815 2013 2157 2330 2330 2209 1951 1743 1468 1218 1162 1055 1024 1074 1202 1395 1601 1809 1973 2142 2339 2400 2243 1964 1762 1499 1239 1157 1067 1033 1085 1211 1399 1605 1799 1984 2253 2421 2477 2345 2041 1793 1555 1302 1176 1095 1056 1105 1240 1411 1614 1822 2021 2325 2479 2644 2469 2125 1838 1596 1334 1192 1131 1081 1133 1267 1416 1643 1856 2106 2445 2614 2871 2686 2313 1898 1668 1397 1226 1161 1120 1170 1313 1447 1693 1922 2271 2706 2905 3239 2992 2531 2015 1729 1477 1244 1211 1167 1218 1353 1534 1754 2024 2557 2965 3242 3797 3458 2828 2188 1801 1530 1272 1262 1199 1269 1404 1600 1806 2182 2760 3436 3728 4403 4043 3237 2411 1873 1580 1334 1291 1257 1311 1463 1663 1889 2367 3175 3893 4411 5222 4600 3646 2656 1993 1649 1388 1335 1306 1362 1527 1738 1988 2632 3505 4530 5044] + + + [4393 3836 2929 2113 1569 1369 1221 1195 1231 1279 1408 1602 1780 2380 3173 4194 4644 3785 3346 2631 1944 1516 1326 1190 1185 1193 1246 1366 1550 1744 2129 3049 3415 4034 3273 2922 2358 1781 1478 1277 1168 1164 1149 1207 1322 1498 1684 1994 2469 3193 3366 2841 2602 2153 1662 1455 1254 1152 1133 1115 1168 1281 1442 1646 1832 2336 2699 2972 2561 2354 1987 1603 1412 1234 1122 1107 1078 1129 1242 1397 1575 1730 2042 2410 2580 2339 2176 1868 1579 1372 1198 1110 1081 1053 1099 1208 1359 1535 1660 1934 2247 2381 2227 2071 1795 1569 1349 1179 1110 1063 1033 1082 1189 1340 1508 1686 1830 2354 2158 2139 1991 1747 1559 1339 1155 1107 1047 1026 1068 1176 1322 1491 1661 1826 1918 2089 2098 1961 1735 1563 1328 1121 1115 1045 1024 1069 1175 1323 1480 1651 1785 1920 2090 2137 2000 1752 1581 1357 1139 1111 1054 1029 1078 1185 1327 1480 1639 1792 2020 2160 2236 2091 1816 1607 1407 1195 1121 1080 1051 1095 1208 1333 1480 1661 1824 2080 2224 2371 2216 1903 1645 1441 1222 1136 1111 1074 1119 1232 1332 1511 1685 1898 2203 2351 2605 2411 2065 1700 1503 1280 1156 1136 1107 1155 1270 1353 1551 1743 2059 2451 2643 2989 2717 2294 1806 1571 1351 1169 1177 1151 1198 1304 1432 1602 1838 2342 2708 2952 3520 3171 2585 1983 1628 1397 1189 1220 1178 1242 1347 1490 1648 1982 2540 3155 3399 4160 3726 2959 2190 1698 1441 1239 1242 1226 1277 1394 1545 1717 2159 2927 3582 4056 4912 4360 3361 2416 1790 1491 1279 1267 1260 1312 1437 1599 1798 2398 3225 4179 4713] + + + [4352 3827 2934 2107 1570 1370 1222 1194 1234 1282 1415 1606 1792 2395 3184 4227 4672 3795 3333 2623 1943 1516 1328 1191 1187 1192 1249 1371 1556 1745 2142 3070 3439 4072 3263 2915 2352 1779 1477 1277 1170 1165 1151 1209 1326 1504 1691 2000 2483 3210 3381 2847 2596 2144 1662 1457 1255 1154 1136 1116 1169 1286 1447 1648 1842 2343 2712 2986 2544 2347 1985 1599 1413 1236 1123 1108 1080 1132 1246 1401 1582 1737 2048 2422 2596 2334 2173 1866 1578 1372 1200 1111 1082 1054 1100 1212 1363 1540 1664 1942 2244 2398 2227 2067 1795 1568 1349 1179 1111 1065 1033 1084 1192 1345 1513 1688 1840 2363 2166 2126 1987 1743 1559 1339 1156 1107 1049 1026 1070 1180 1326 1497 1665 1830 1923 2093 2095 1956 1731 1561 1329 1123 1118 1045 1024 1069 1177 1328 1484 1658 1790 1922 2100 2133 1989 1750 1579 1353 1139 1112 1055 1031 1080 1186 1331 1484 1644 1799 2018 2172 2222 2085 1814 1604 1405 1196 1123 1079 1051 1096 1209 1336 1487 1660 1826 2089 2231 2346 2207 1892 1644 1441 1220 1136 1111 1073 1119 1233 1335 1515 1688 1903 2200 2354 2591 2404 2054 1696 1498 1278 1157 1135 1107 1155 1271 1356 1553 1744 2058 2451 2642 2954 2698 2277 1798 1567 1348 1168 1177 1150 1197 1306 1432 1602 1841 2329 2704 2939 3468 3117 2561 1967 1624 1394 1188 1218 1176 1241 1346 1488 1650 1977 2535 3139 3399 4113 3672 2930 2174 1696 1438 1235 1242 1223 1274 1395 1542 1719 2155 2917 3559 4047 4857 4284 3323 2394 1779 1484 1276 1263 1260 1309 1435 1598 1794 2387 3203 4147 4659] + + + [3969 3466 2719 1968 1474 1292 1171 1174 1219 1265 1385 1546 1704 2241 2965 3822 4189 3457 3073 2434 1806 1427 1252 1147 1169 1184 1239 1346 1505 1671 2009 2844 3168 3716 2994 2704 2189 1670 1396 1216 1140 1157 1149 1207 1314 1463 1628 1892 2323 2960 3102 2644 2420 2003 1567 1379 1203 1130 1133 1115 1171 1278 1419 1594 1760 2192 2526 2757 2387 2186 1857 1516 1338 1192 1108 1105 1082 1136 1244 1378 1535 1661 1928 2249 2418 2169 2024 1755 1497 1304 1162 1100 1082 1057 1103 1212 1349 1498 1599 1835 2096 2231 2068 1931 1690 1486 1289 1146 1102 1063 1038 1088 1192 1334 1476 1626 1743 2212 2009 1986 1853 1645 1480 1279 1127 1099 1046 1028 1075 1180 1317 1464 1604 1743 1809 1949 1942 1825 1634 1482 1268 1095 1112 1043 1024 1074 1178 1318 1455 1597 1710 1796 1941 1984 1852 1652 1499 1298 1110 1106 1051 1032 1082 1185 1320 1453 1583 1710 1890 2018 2060 1944 1706 1524 1342 1165 1115 1079 1049 1098 1206 1322 1447 1599 1727 1942 2068 2198 2049 1774 1558 1373 1187 1127 1111 1074 1120 1231 1318 1470 1623 1792 2052 2181 2392 2227 1918 1607 1428 1237 1145 1133 1108 1154 1268 1334 1501 1674 1928 2264 2451 2736 2508 2120 1695 1489 1299 1150 1171 1148 1194 1299 1404 1547 1753 2175 2514 2710 3168 2878 2383 1845 1540 1331 1159 1209 1168 1237 1331 1449 1589 1858 2363 2887 3108 3749 3367 2709 2024 1594 1363 1195 1222 1211 1261 1367 1494 1638 2012 2688 3246 3654 4383 3887 3044 2220 1667 1397 1221 1237 1236 1288 1397 1531 1696 2206 2948 3736 4183] + + + + + 1920x1080_F11_90 + + + 640x480 + + + F11 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [20 41 70 102 133 164 203 227] + + + [40 54 62 71 76 67 83 87] + + + [ 90] + + + [5188 4629 3514 2565 1923 1678 1435 1335 1275 1315 1489 1718 1955 2633 3436 4601 5179 4543 4013 3163 2369 1839 1631 1391 1298 1221 1267 1427 1656 1891 2344 3350 3761 4515 3848 3432 2803 2158 1767 1565 1351 1247 1166 1207 1357 1590 1811 2183 2666 3506 3714 3332 3023 2533 1971 1713 1509 1320 1195 1121 1152 1295 1491 1751 1980 2528 2944 3286 2950 2733 2317 1823 1673 1464 1288 1151 1078 1105 1239 1402 1687 1891 2232 2657 2851 2720 2521 2137 1748 1640 1439 1259 1115 1049 1068 1199 1355 1602 1768 2046 2376 2545 2570 2412 2014 1721 1609 1425 1240 1099 1029 1048 1172 1327 1566 1773 1924 2426 2198 2489 2314 1946 1708 1572 1416 1228 1083 1024 1031 1154 1303 1529 1761 1879 2007 2280 2474 2294 1960 1697 1554 1423 1229 1084 1025 1033 1152 1296 1516 1748 1880 2096 2262 2528 2355 1994 1714 1551 1442 1243 1094 1033 1048 1158 1326 1559 1757 1900 2162 2334 2652 2475 2103 1775 1566 1477 1271 1123 1051 1068 1194 1309 1593 1781 1980 2241 2400 2809 2612 2218 1850 1585 1503 1303 1167 1075 1099 1211 1401 1626 1813 2065 2389 2540 3055 2837 2415 1949 1646 1527 1347 1192 1117 1142 1259 1457 1675 1874 2241 2625 2810 3524 3190 2673 2103 1744 1556 1404 1234 1166 1191 1318 1524 1715 1988 2502 2959 3283 4124 3679 2993 2313 1837 1614 1457 1287 1216 1245 1383 1592 1771 2164 2741 3437 3795 4902 4334 3404 2554 1934 1693 1514 1342 1265 1303 1453 1655 1853 2357 3201 3942 4521 5652 4991 3843 2786 2051 1763 1572 1396 1316 1354 1521 1715 1945 2614 3526 4582 5275] + + + [4840 4260 3298 2394 1790 1577 1359 1289 1241 1274 1424 1622 1813 2434 3195 4251 4760 4202 3736 2950 2212 1723 1535 1326 1262 1197 1234 1372 1569 1766 2171 3099 3471 4156 3578 3200 2625 2011 1655 1479 1294 1222 1150 1183 1313 1509 1703 2029 2483 3242 3439 3081 2811 2359 1839 1613 1427 1273 1176 1113 1135 1258 1418 1653 1846 2356 2731 3040 2755 2540 2153 1706 1576 1388 1247 1139 1073 1092 1206 1333 1595 1770 2082 2464 2651 2521 2346 1980 1637 1545 1369 1227 1110 1047 1060 1173 1295 1518 1660 1901 2199 2341 2396 2234 1866 1611 1518 1357 1212 1094 1028 1042 1150 1269 1478 1669 1782 2256 2022 2297 2140 1799 1601 1488 1352 1204 1080 1024 1027 1135 1250 1445 1659 1750 1841 2095 2289 2122 1811 1589 1469 1358 1205 1081 1026 1027 1135 1245 1431 1648 1748 1938 2074 2342 2174 1843 1604 1469 1376 1218 1091 1033 1043 1141 1277 1482 1651 1766 1990 2146 2448 2285 1935 1653 1483 1407 1245 1118 1052 1061 1174 1251 1510 1669 1841 2071 2213 2594 2421 2050 1719 1499 1431 1271 1162 1074 1093 1189 1349 1542 1698 1920 2205 2352 2851 2634 2240 1810 1550 1455 1308 1183 1112 1134 1232 1400 1585 1752 2083 2429 2590 3281 2958 2498 1954 1638 1481 1357 1223 1161 1178 1290 1458 1615 1856 2331 2751 3027 3817 3425 2788 2158 1719 1534 1407 1267 1207 1232 1347 1521 1670 2020 2555 3188 3472 4542 4026 3173 2389 1813 1602 1454 1317 1254 1281 1412 1575 1735 2196 2978 3652 4152 5232 4658 3554 2606 1913 1661 1498 1359 1291 1326 1465 1624 1812 2424 3233 4245 4748] + + + [4862 4287 3297 2400 1805 1581 1357 1291 1240 1278 1431 1629 1832 2456 3227 4342 4793 4235 3745 2968 2219 1723 1536 1329 1264 1198 1237 1378 1579 1777 2199 3135 3514 4210 3589 3210 2628 2016 1659 1481 1297 1221 1152 1186 1318 1522 1711 2047 2510 3283 3482 3096 2811 2366 1843 1616 1430 1274 1178 1112 1137 1262 1426 1664 1859 2376 2757 3063 2755 2545 2154 1707 1581 1391 1249 1141 1074 1095 1211 1340 1605 1783 2099 2488 2675 2529 2349 1986 1640 1548 1370 1230 1111 1048 1063 1178 1302 1529 1669 1919 2210 2370 2400 2234 1872 1614 1520 1360 1214 1096 1030 1044 1155 1277 1488 1680 1796 2288 2026 2303 2145 1801 1603 1492 1353 1206 1082 1024 1028 1140 1256 1454 1668 1760 1851 2113 2280 2122 1814 1593 1473 1359 1209 1082 1026 1032 1138 1251 1439 1660 1757 1953 2085 2347 2181 1842 1606 1472 1380 1220 1090 1034 1044 1145 1284 1492 1664 1778 2010 2161 2438 2284 1936 1655 1483 1410 1246 1119 1051 1064 1179 1256 1517 1681 1851 2080 2225 2606 2420 2047 1721 1502 1433 1273 1160 1074 1093 1192 1354 1550 1708 1928 2218 2347 2846 2619 2236 1807 1552 1454 1310 1181 1112 1134 1234 1404 1591 1762 2094 2433 2614 3250 2943 2487 1948 1633 1483 1356 1221 1158 1178 1291 1461 1624 1862 2340 2748 3035 3809 3401 2777 2147 1718 1530 1403 1265 1202 1230 1347 1524 1674 2023 2564 3197 3475 4519 3982 3159 2373 1808 1599 1451 1313 1249 1279 1411 1578 1737 2204 2984 3658 4183 5212 4602 3547 2596 1905 1656 1494 1353 1287 1320 1466 1626 1817 2421 3254 4214 4765] + + + [4363 3854 3039 2247 1701 1494 1306 1265 1224 1254 1386 1563 1731 2275 2955 3825 4265 3819 3389 2730 2078 1642 1459 1283 1241 1186 1216 1341 1516 1694 2042 2855 3173 3729 3281 2957 2445 1905 1591 1416 1269 1212 1145 1178 1294 1473 1644 1921 2326 2969 3140 2853 2607 2214 1762 1555 1378 1254 1175 1110 1131 1245 1385 1593 1770 2199 2536 2771 2570 2369 2022 1658 1521 1346 1235 1139 1077 1092 1199 1308 1545 1705 1960 2288 2452 2336 2193 1882 1599 1491 1336 1222 1111 1049 1059 1169 1274 1477 1597 1803 2028 2170 2243 2088 1786 1575 1469 1331 1208 1095 1031 1043 1144 1254 1440 1609 1692 2119 1873 2137 2005 1729 1564 1446 1331 1203 1083 1024 1026 1131 1237 1406 1604 1661 1710 1928 2145 1987 1733 1555 1438 1334 1208 1081 1025 1027 1131 1230 1396 1592 1669 1808 1927 2179 2033 1760 1567 1443 1350 1219 1091 1035 1041 1133 1260 1449 1595 1684 1863 1988 2275 2124 1824 1607 1455 1377 1242 1118 1048 1058 1166 1225 1469 1612 1741 1922 2041 2399 2248 1921 1653 1473 1397 1266 1159 1072 1090 1177 1322 1499 1632 1808 2036 2149 2624 2422 2091 1725 1512 1419 1296 1181 1109 1126 1218 1373 1537 1678 1940 2232 2366 2981 2720 2308 1845 1577 1449 1334 1216 1155 1169 1271 1426 1556 1763 2159 2523 2723 3443 3109 2567 2015 1640 1488 1372 1255 1193 1216 1320 1475 1601 1889 2355 2878 3125 4043 3569 2894 2198 1709 1531 1406 1288 1231 1257 1372 1512 1642 2029 2705 3260 3677 4561 4126 3199 2394 1779 1574 1439 1321 1260 1287 1415 1548 1700 2225 2907 3702 4143] + + + + + 1920x1080_F2_90 + + + 640x480 + + + F2 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [17 37 68 102 132 172 206 226] + + + [40 53 61 70 78 67 84 87] + + + [ 90] + + + [5182 4590 3655 2625 1955 1686 1419 1284 1286 1339 1500 1722 1973 2725 3573 4783 5123 4461 4029 3231 2433 1872 1632 1370 1237 1242 1291 1448 1668 1904 2413 3447 3847 4520 3805 3479 2863 2211 1798 1569 1312 1198 1184 1237 1389 1606 1822 2236 2760 3575 3713 3278 3047 2576 2034 1746 1514 1260 1173 1138 1189 1329 1538 1764 2025 2593 3001 3290 2924 2738 2348 1900 1689 1464 1220 1142 1091 1141 1279 1480 1699 1913 2320 2709 2873 2676 2523 2170 1824 1642 1422 1195 1111 1057 1102 1244 1400 1612 1764 2016 2382 2535 2530 2399 2058 1787 1607 1397 1182 1093 1033 1081 1215 1384 1598 1677 1946 2494 2262 2442 2300 1972 1749 1585 1377 1175 1077 1024 1063 1196 1362 1560 1688 1926 2103 2302 2402 2268 1939 1736 1576 1373 1175 1071 1024 1064 1188 1362 1534 1724 1894 2114 2234 2435 2307 1946 1735 1586 1385 1186 1091 1029 1076 1191 1363 1570 1728 1877 2165 2298 2546 2414 2027 1731 1617 1410 1215 1108 1053 1095 1224 1386 1601 1743 1985 2273 2407 2709 2534 2172 1730 1642 1442 1242 1139 1081 1124 1246 1415 1633 1816 2092 2429 2566 2981 2771 2388 1807 1658 1488 1284 1163 1126 1163 1284 1460 1692 1903 2324 2708 2886 3428 3125 2654 2011 1666 1548 1337 1213 1160 1213 1337 1519 1750 2031 2585 3017 3276 3995 3633 2967 2265 1714 1601 1389 1263 1175 1256 1388 1592 1785 2243 2854 3543 3813 4711 4257 3393 2530 1824 1648 1453 1294 1264 1310 1447 1666 1859 2443 3348 4082 4553 5513 4918 3872 2761 1976 1698 1515 1346 1302 1361 1508 1730 1979 2678 3718 4736 5222] + + + [4772 4263 3368 2434 1801 1564 1334 1231 1247 1290 1425 1606 1817 2495 3308 4359 4744 4156 3737 2995 2248 1729 1526 1296 1196 1212 1256 1382 1566 1760 2226 3188 3543 4188 3517 3212 2653 2039 1671 1471 1248 1166 1167 1211 1336 1517 1692 2062 2568 3285 3419 3044 2809 2382 1876 1622 1423 1204 1151 1125 1169 1289 1458 1646 1873 2403 2762 3032 2715 2519 2167 1755 1575 1377 1173 1129 1086 1129 1246 1408 1594 1774 2147 2502 2647 2462 2317 1996 1689 1530 1343 1155 1103 1057 1094 1218 1339 1514 1637 1859 2183 2341 2333 2201 1892 1649 1502 1320 1148 1087 1034 1077 1192 1328 1502 1558 1790 2295 2062 2242 2111 1809 1622 1480 1306 1142 1072 1025 1060 1175 1310 1467 1571 1779 1922 2104 2202 2076 1776 1608 1473 1301 1145 1067 1024 1059 1170 1312 1446 1602 1752 1936 2038 2236 2114 1786 1608 1478 1308 1155 1085 1029 1073 1172 1313 1479 1611 1730 1971 2104 2339 2207 1864 1600 1507 1331 1178 1103 1055 1088 1202 1329 1509 1615 1830 2080 2196 2479 2332 1990 1600 1528 1356 1201 1129 1079 1115 1221 1357 1532 1685 1931 2226 2356 2755 2552 2195 1669 1544 1399 1238 1151 1118 1155 1255 1391 1586 1768 2145 2495 2647 3142 2888 2453 1856 1555 1454 1282 1191 1153 1200 1302 1441 1635 1881 2405 2786 3030 3687 3351 2754 2094 1597 1500 1329 1236 1163 1240 1343 1508 1663 2081 2664 3273 3525 4366 3947 3143 2343 1695 1547 1383 1263 1245 1289 1396 1574 1732 2270 3117 3766 4242 5145 4586 3549 2573 1821 1580 1432 1299 1269 1325 1445 1629 1822 2486 3413 4393 4841] + + + [4769 4286 3357 2429 1800 1568 1333 1229 1245 1290 1425 1615 1826 2510 3332 4382 4785 4154 3732 3010 2238 1729 1521 1295 1192 1210 1253 1385 1566 1764 2237 3208 3569 4228 3518 3206 2648 2038 1669 1471 1245 1164 1165 1210 1337 1520 1696 2073 2580 3314 3452 3042 2803 2376 1873 1620 1422 1204 1147 1123 1169 1289 1461 1651 1877 2416 2778 3051 2706 2514 2161 1755 1574 1375 1172 1127 1084 1128 1246 1411 1598 1782 2156 2506 2660 2463 2317 1993 1685 1528 1342 1153 1101 1054 1094 1219 1341 1519 1642 1868 2185 2351 2328 2193 1889 1650 1502 1318 1147 1086 1033 1075 1193 1329 1507 1560 1799 2311 2080 2226 2105 1809 1621 1476 1303 1143 1069 1024 1060 1177 1312 1469 1575 1782 1927 2107 2196 2070 1775 1607 1471 1299 1143 1067 1024 1059 1171 1314 1450 1605 1754 1940 2049 2235 2101 1781 1606 1477 1306 1153 1083 1028 1073 1171 1316 1480 1612 1733 1975 2115 2324 2200 1855 1600 1502 1329 1176 1100 1051 1086 1202 1331 1510 1620 1832 2082 2196 2465 2324 1980 1599 1527 1353 1199 1127 1076 1113 1221 1357 1536 1682 1934 2217 2362 2724 2530 2182 1665 1542 1395 1234 1147 1114 1152 1253 1392 1588 1770 2146 2495 2653 3118 2873 2433 1845 1550 1448 1277 1187 1149 1196 1299 1441 1635 1879 2394 2784 3016 3671 3318 2722 2081 1591 1496 1323 1231 1156 1235 1341 1506 1664 2079 2655 3262 3527 4318 3906 3115 2318 1688 1539 1377 1256 1238 1282 1390 1571 1726 2265 3109 3754 4206 5067 4507 3526 2545 1807 1572 1425 1291 1263 1319 1437 1624 1823 2470 3421 4345 4842] + + + [4254 3866 3096 2266 1710 1486 1284 1206 1234 1272 1385 1547 1729 2326 3027 3896 4224 3750 3396 2772 2101 1644 1448 1251 1174 1201 1243 1358 1505 1682 2087 2927 3228 3737 3235 2957 2477 1923 1594 1409 1217 1156 1162 1209 1324 1473 1631 1944 2393 2999 3148 2817 2611 2227 1784 1553 1371 1184 1147 1124 1170 1283 1426 1589 1788 2239 2553 2781 2518 2351 2035 1688 1509 1333 1158 1128 1087 1130 1245 1383 1545 1704 2013 2314 2458 2304 2161 1891 1630 1471 1308 1145 1104 1057 1096 1217 1325 1468 1573 1748 2011 2156 2183 2062 1800 1597 1446 1290 1143 1088 1036 1080 1191 1315 1465 1492 1681 2144 1909 2096 1978 1732 1573 1425 1280 1141 1072 1024 1063 1176 1301 1434 1507 1681 1786 1944 2070 1941 1711 1559 1419 1276 1143 1067 1024 1061 1170 1303 1415 1537 1662 1810 1895 2096 1980 1716 1564 1424 1281 1153 1082 1028 1073 1169 1299 1444 1548 1635 1832 1937 2190 2063 1780 1562 1451 1298 1173 1102 1050 1087 1199 1313 1470 1549 1721 1924 2028 2290 2167 1877 1569 1470 1318 1194 1131 1078 1112 1217 1334 1487 1615 1807 2053 2147 2549 2361 2050 1628 1494 1351 1223 1151 1115 1151 1249 1362 1534 1689 1994 2284 2427 2879 2652 2268 1771 1512 1395 1262 1186 1145 1195 1291 1407 1574 1780 2211 2552 2752 3320 3039 2536 1961 1550 1434 1296 1223 1147 1228 1321 1459 1597 1940 2455 2948 3148 3895 3519 2854 2162 1620 1465 1334 1237 1222 1269 1358 1510 1634 2095 2813 3337 3729 4458 4020 3199 2362 1713 1493 1367 1262 1241 1291 1397 1548 1717 2268 3076 3827 4207] + + + + + + + A_100 + + + [ 100] + + + [2.06242 -0.371307 -0.663126 -0.544726 2.0142 -0.418246 -0.231985 -1.5015 2.7321] + + + [18.6851 19.911 5.6011] + + + [1.2213 1 1 1.9842] + + + + + D50_100 + + + [ 100] + + + [2.15715 -0.811382 -0.352482 -0.40827 2.03502 -0.610777 -0.107697 -0.997128 2.105] + + + [27.4831 35.8149 24.214] + + + [1.7235 1 1 1.4796] + + + + + D65_100 + + + [ 100] + + + [2.41044 -1.18465 -0.231436 -0.331637 1.88932 -0.539832 -0.0998097 -0.787651 1.8939] + + + [23.0711 34.8913 27.0426] + + + [1.93689 1 1 1.2873] + + + + + F11_100 + + + [ 100] + + + [1.93371 -0.741394 -0.174673 -0.437678 2.0616 -0.578537 -0.0965241 -1.07416 2.1677] + + + [17.0109 22.4961 12.1673] + + + [1.53834 1 1 1.5979] + + + + + F2_100 + + + [ 100] + + + [2.04873 -0.864931 -0.17386 -0.516298 2.10785 -0.552634 -0.101268 -0.93087 2.0287] + + + [17.1462 22.1597 14.0667] + + + [1.4659 1 1 1.4979] + + + + + + [ -1] + + + + + [ 80] + + + [ 20] + + + [ 0.7] + + + [ 0.7] + + + [ 0.7] + + + [ 0.9] + + + + + 640x480_FPS_15 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 640x480_FPS_10 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 640x480_FPS_05 + + + + + fast + + + [ 1] + + + [ 1] + + + + + normal + + + [ 2] + + + [ 0.9] + + + + + slow + + + [ 4] + + + [ 0.9] + + + + + + + [ 8] + + + + + + 640x480 + + + 640x480 + + + [256 256 256 256] + + + + + + + linear + + + [256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4096] + + + [0 256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4095] + + + + + + [ -1] + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + + + 640x480 + + + 640x480 + + + [ 6] + + + [ 29] + + + [ 6] + + + [ 29] + + + [ 0] + + + [ 0] + + + [0.125 -0.4375 0.4375] + + + [-3.5 4.375 -1.875] + + + + + + + 640x480 + + + 640x480 + + + [ 1] + + + [1023 1023 906 756 662 547 476 427 391 340 304 278 241 216 197 183 171] + + + [ 4] + + + [ 4] + + + [ 0.15] + + + [ 0] + + + [1 1 1 1] + + + + + + + 640x480 + + + 640x480 + + + + + ISP_DPCC_MODE + + + 0x0004 + + + + + ISP_DPCC_OUT_MODE + + + 0x0003 + + + + + ISP_DPCC_SET_USE + + + 0x0007 + + + + + ISP_DPCC_METHODS_SET1 + + + 0x1D1D + + + + + ISP_DPCC_METHODS_SET2 + + + 0x0707 + + + + + ISP_DPCC_METHODS_SET3 + + + 0x1F1F + + + + + ISP_DPCC_LINE_THRESH_1 + + + 0x0808 + + + + + ISP_DPCC_LINE_MAD_FAC_1 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_1 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_1 + + + 0x0A0A + + + + + ISP_DPCC_RG_FAC_1 + + + 0x2020 + + + + + ISP_DPCC_LINE_THRESH_2 + + + 0x100C + + + + + ISP_DPCC_LINE_MAD_FAC_2 + + + 0x1810 + + + + + ISP_DPCC_PG_FAC_2 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_2 + + + 0x0808 + + + + + ISP_DPCC_RG_FAC_2 + + + 0x0808 + + + + + ISP_DPCC_LINE_THRESH_3 + + + 0x2020 + + + + + ISP_DPCC_LINE_MAD_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_3 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_3 + + + 0x0806 + + + + + ISP_DPCC_RG_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_RO_LIMITS + + + 0x0A0A + + + + + ISP_DPCC_RND_OFFS + + + 0x0FFF + + + + + + + + + + on + + + +
diff --git a/drivers/SC132GS/SC132GS_1080x1280.xml b/drivers/SC132GS/SC132GS_1080x1280.xml new file mode 100644 index 0000000..4abe8ed --- /dev/null +++ b/drivers/SC132GS/SC132GS_1080x1280.xml @@ -0,0 +1,1375 @@ + + +
+ + 29-Jun-2021 + + + xrh + + + OV5648_VGA + + + LensA_03_ant_5648 + + + v2.0.19 + + + + + 1080x1280 + + + 0x00000001 + + + [ 1080] + + + [ 1280] + + + + + FPS_15 + + + [ 14.9916] + + + + + FPS_10 + + + [ 9.9944] + + + + + FPS_05 + + + [ 4.9972] + + + + + +
+ + + + + + 1080x1280 + + + 1080x1280 + + + [0.316211 0.450278 0.23351] + + + [0.810766 -0.489012 -0.321754 0.0965665 0.653861 -0.75043] + + + [-0.677389 -0.735625 -2.2245] + + + [0.9 1.06472 1.12932 1.19392 1.25851 1.32311 1.38771 1.45231 1.5169 1.5815 1.6461 1.7107 1.7753 1.83989 1.90449 1.9691] + + + [0.0477825 0.0318575 0.0177747 0.0053393 -0.00526232 -0.0138163 -0.0200636 -0.0237368 -0.0247103 -0.0226834 -0.0172902 -0.00823107 0.00452079 0.0218954 0.0434027 0.076164] + + + [0.9 1.06472 1.12932 1.19392 1.25851 1.32311 1.38771 1.45231 1.5169 1.5815 1.6461 1.7107 1.7753 1.83989 1.90449 1.9691] + + + [-0.0377825 -0.0218575 -0.00777468 0.0046607 0.0152623 0.0238163 0.0300636 0.0337368 0.0347103 0.0326834 0.0272902 0.0182311 0.00547921 -0.0118954 -0.0334027 -0.066164] + + + [0.8 0.880606 0.961212 1.04182 1.12242 1.20303 1.28364 1.36424 1.44485 1.52545 1.60606 1.68667 1.76727 1.84788 1.92848 2.2] + + + [0.200744 0.175747 0.153106 0.132329 0.114272 0.0986159 0.0860366 0.0769741 0.0715332 0.0703707 0.0739714 0.082977 0.0977554 0.119343 0.147614 0.19041] + + + [0.8 0.880606 0.961212 1.04182 1.12242 1.20303 1.28364 1.36424 1.44485 1.52545 1.60606 1.68667 1.76727 1.84788 1.92848 2.2] + + + [-0.000744293 0.0242529 0.0468937 0.0676709 0.0857277 0.101384 0.113963 0.123026 0.128467 0.129629 0.126029 0.117023 0.102245 0.0806574 0.0523865 0.0095864] + + + [ 0.9] + + + [ 1.9691] + + + [ 2.2] + + + [ 1.5815] + + + D50 + + + [ 3.1754] + + + [0.75 1.28836 1.77672 2.164 2.6 3.0618] + + + [114 114 105 95 95 90] + + + [83 83 110 120 122 128] + + + [28 27 18 16 9 9] + + + [123 123 123 123 123 120] + + + [123 123 123 123 123 126] + + + [5 5 5 5 5 5] + + + [ 1] + + + [ 0.8] + + + [ 0.05] + + + + [ 0.05] + + + [ 0.05] + + + [ 0.4] + + + [ 0.5] + + + [ 0.9] + + + [ 0.5] + + + [ 50] + + + [ 1] + + + [ 0.5] + + + + + + + + A + + + Outdoor + + + + [581.701 -599.641 -599.641 4769.5325] + + + [ 247.3246] + + + [1 1] + + + [-0.121897 -0.14612] + + + + + + 1080x1280 + + + 1920x1080_A_90 1920x1080_A_80 + + + + + [1.2213 1 1 1.9842] + + + [2.06242 -0.371307 -0.663126 -0.544726 2.0142 -0.418246 -0.231985 -1.5015 2.7321] + + + [18.6851 19.911 5.6011] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + A_100 + + + + + + D50 + + + Outdoor + + + + [660.396 -566.167 -566.167 1299.308] + + + [ 116.6849] + + + [1 1] + + + [-0.0332151 -0.050803] + + + + + + 1080x1280 + + + 1920x1080_D50_90 + + + + + [1.7235 1 1 1.4796] + + + [2.15715 -0.811382 -0.352482 -0.40827 2.03502 -0.610777 -0.107697 -0.997128 2.105] + + + [27.4831 35.8149 24.214] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D50_100 + + + + + + D65 + + + Outdoor + + + + [769.711 -526.328 -526.328 898.2725] + + + [ 102.4529] + + + [1 1] + + + [0.0119213 -0.020824] + + + + + + 1080x1280 + + + 1920x1080_D65_90 + + + + + [1.93689 1 1 1.2873] + + + [2.41044 -1.18465 -0.231436 -0.331637 1.88932 -0.539832 -0.0998097 -0.787651 1.8939] + + + [23.0711 34.8913 27.0426] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D65_100 + + + + + + F2 (CWF) + + + Indoor + + + + [969.419 -426.006 -426.006 719.3782] + + + [ 114.3146] + + + [1 1] + + + [-0.0519455 -0.090868] + + + + + + 1080x1280 + + + 1920x1080_F2_90 + + + + + [1.4659 1 1 1.4979] + + + [2.04873 -0.864931 -0.17386 -0.516298 2.10785 -0.552634 -0.101268 -0.93087 2.0287] + + + [17.1462 22.1597 14.0667] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F2_100 + + + + + + F11 (TL84) + + + Indoor + + + + [654.898 -374.136 -374.136 916.2745] + + + [ 107.9546] + + + [1 1] + + + [-0.0628424 -0.079301] + + + + + + 1080x1280 + + + 1920x1080_F11_90 + + + + + [1.53834 1 1 1.5979] + + + [1.93371 -0.741394 -0.174673 -0.437678 2.0616 -0.578537 -0.0965241 -1.07416 2.1677] + + + [17.0109 22.4961 12.1673] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F11_100 + + + + + + + + + 1920x1080_A_90 + + + 1080x1280 + + + A + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [22 45 73 94 132 169 207 218] + + + [42 53 62 69 75 69 85 85] + + + [ 90] + + + [5847 5067 3857 2767 2047 1755 1484 1334 1335 1388 1588 1863 2179 2862 3757 5117 5647 5091 4430 3450 2564 1966 1690 1425 1279 1278 1342 1525 1797 2099 2551 3660 4151 5089 4321 3824 3070 2359 1897 1612 1362 1214 1221 1277 1457 1718 2002 2387 2909 3876 4153 3725 3359 2775 2203 1837 1540 1297 1152 1176 1216 1393 1635 1918 2169 2761 3249 3653 3316 3031 2525 2096 1774 1471 1233 1137 1114 1174 1327 1569 1848 2088 2469 2964 3211 3044 2790 2362 2024 1720 1395 1204 1106 1075 1131 1282 1490 1741 1958 2289 2678 2919 2884 2659 2266 1986 1694 1356 1211 1082 1050 1105 1252 1438 1682 1845 1967 2695 2507 2747 2547 2202 1950 1693 1409 1195 1066 1029 1084 1218 1371 1666 1795 2009 2207 2447 2714 2506 2186 1933 1682 1416 1184 1064 1024 1082 1219 1385 1668 1833 2048 2267 2446 2753 2548 2197 1956 1689 1424 1195 1072 1032 1088 1225 1401 1662 1833 2051 2361 2581 2872 2657 2274 1983 1730 1449 1218 1098 1062 1107 1248 1428 1711 1914 2142 2511 2720 3042 2816 2372 2039 1781 1420 1224 1142 1093 1137 1279 1473 1745 1950 2252 2669 2905 3358 3056 2557 2106 1835 1458 1263 1168 1130 1180 1304 1533 1811 2055 2453 2948 3197 3782 3410 2811 2226 1912 1525 1318 1227 1156 1221 1366 1599 1889 2156 2738 3263 3654 4455 3921 3152 2417 1998 1602 1371 1291 1180 1277 1430 1682 1955 2344 2981 3805 4217 5244 4595 3544 2653 2093 1681 1422 1340 1273 1323 1501 1765 2044 2566 3469 4346 5020 6096 5337 4002 2910 2210 1753 1482 1382 1337 1385 1574 1846 2159 2830 3823 5103 5814] + + + [4937 4249 3253 2340 1727 1524 1324 1227 1253 1288 1435 1634 1842 2405 3142 4233 4756 4247 3735 2904 2175 1673 1473 1283 1190 1212 1259 1389 1581 1798 2144 3070 3475 4217 3629 3222 2602 1999 1626 1416 1236 1143 1171 1215 1347 1525 1728 2017 2460 3257 3448 3133 2834 2343 1871 1587 1359 1191 1098 1142 1171 1298 1469 1670 1849 2335 2748 3076 2794 2564 2139 1796 1542 1314 1141 1099 1091 1139 1254 1420 1624 1793 2090 2504 2692 2573 2363 2005 1742 1502 1251 1127 1077 1065 1109 1222 1363 1536 1689 1939 2260 2481 2437 2245 1923 1713 1490 1222 1142 1061 1042 1090 1201 1324 1491 1591 1661 2283 2089 2321 2142 1870 1680 1492 1279 1133 1049 1026 1075 1171 1267 1483 1555 1709 1843 2043 2286 2114 1858 1671 1484 1287 1127 1049 1024 1070 1176 1281 1488 1587 1745 1904 2040 2316 2144 1868 1686 1488 1290 1135 1056 1027 1079 1180 1298 1482 1585 1745 1977 2169 2424 2239 1918 1707 1516 1309 1150 1078 1056 1091 1200 1316 1518 1658 1819 2103 2281 2560 2376 2007 1743 1559 1272 1148 1115 1080 1116 1219 1349 1542 1680 1902 2248 2433 2805 2564 2156 1791 1597 1297 1171 1133 1107 1151 1235 1390 1591 1760 2075 2482 2685 3207 2860 2384 1888 1654 1347 1212 1177 1122 1181 1281 1437 1648 1834 2317 2753 3047 3731 3296 2654 2049 1719 1408 1246 1225 1136 1219 1326 1499 1690 1988 2529 3186 3524 4409 3852 2988 2254 1789 1465 1283 1256 1211 1256 1379 1562 1758 2166 2928 3627 4197 5100 4458 3375 2452 1886 1514 1323 1280 1262 1295 1431 1619 1835 2388 3218 4206 4856] + + + [4942 4247 3263 2342 1735 1522 1327 1224 1255 1293 1440 1642 1858 2429 3182 4305 4918 4280 3744 2922 2184 1674 1476 1284 1190 1210 1261 1393 1589 1806 2170 3107 3516 4240 3632 3233 2607 2007 1627 1417 1239 1145 1171 1218 1351 1539 1737 2034 2488 3293 3509 3152 2839 2351 1874 1590 1362 1193 1099 1142 1173 1304 1477 1682 1862 2358 2770 3082 2806 2563 2146 1799 1545 1317 1142 1099 1093 1143 1258 1429 1636 1803 2108 2528 2726 2569 2366 2004 1745 1502 1253 1128 1081 1067 1113 1227 1372 1550 1702 1961 2274 2493 2440 2250 1920 1719 1491 1225 1144 1062 1044 1091 1207 1332 1500 1602 1673 2324 2104 2331 2147 1876 1684 1494 1278 1136 1052 1027 1079 1177 1275 1495 1563 1723 1845 2062 2295 2111 1858 1675 1485 1291 1130 1051 1024 1075 1182 1290 1494 1600 1752 1924 2056 2329 2144 1873 1685 1491 1291 1136 1058 1030 1082 1185 1304 1493 1594 1757 1984 2176 2410 2233 1921 1706 1520 1312 1153 1079 1055 1095 1203 1323 1528 1669 1830 2123 2300 2564 2375 2003 1745 1558 1276 1149 1116 1081 1116 1224 1356 1552 1688 1909 2264 2441 2805 2560 2155 1791 1600 1294 1173 1132 1109 1153 1239 1395 1596 1768 2085 2493 2712 3179 2852 2376 1885 1652 1349 1210 1176 1124 1179 1285 1443 1654 1846 2325 2758 3069 3704 3283 21080 2045 1715 1402 1248 1221 1133 1218 1327 1502 1696 1990 2538 3194 3524 4340 3814 2976 2242 1788 1463 1278 1253 1208 1253 1377 1565 1763 2177 2929 3626 4179 5092 4397 3343 2448 1877 1508 1319 1276 1255 1294 1432 1620 1835 2391 3208 4233 4775] + + + [4204 3707 2933 2164 1634 1452 1279 1205 1235 1263 1389 1562 1743 2219 2858 3702 4137 3752 3298 2654 2024 1591 1406 1244 1170 1198 1242 1359 1518 1706 2008 2760 3088 3611 3198 2903 2405 1890 1550 1362 1213 1135 1167 1212 1324 1483 1657 1896 2280 2917 3079 2827 2604 2169 1782 1518 1321 1176 1099 1140 1173 1291 1437 1609 1762 2164 2510 2747 2552 2351 2006 1714 1479 1281 1134 1101 1095 1144 1250 1398 1566 1713 1946 2286 2454 2353 2193 1880 1670 1447 1226 1123 1081 1068 1113 1222 1346 1497 1620 1823 2072 2243 2235 2087 1811 1643 1440 1199 1143 1065 1047 1096 1201 1311 1449 1527 1565 2110 1916 2128 1991 1772 1615 1445 1261 1134 1052 1028 1080 1175 1253 1449 1494 1619 1700 1871 2110 1964 1756 1603 1434 1270 1128 1051 1024 1075 1178 1273 1453 1526 1648 1759 1878 2139 1982 1764 1613 1441 1267 1136 1056 1029 1079 1182 1281 1445 1517 1650 1822 1965 2216 2065 1805 1634 1459 1288 1148 1079 1053 1093 1192 1298 1476 1588 1713 1943 2092 2345 2164 1873 1663 1499 1243 1142 1118 1080 1113 1215 1326 1491 1608 1777 2063 2206 2524 2332 2000 1700 1529 1262 1161 1133 1107 1151 1228 1359 1532 1675 1923 2260 2380 2860 2577 2178 1781 1580 1299 1195 1173 1118 1175 1269 1401 1579 1734 2119 2477 2722 3234 2918 2417 1903 1625 1349 1221 1208 1121 1208 1296 1447 1608 1850 2304 2809 3046 3758 3308 2682 2064 1676 1390 1236 1232 1182 1228 1335 1491 1654 1988 2601 3138 3533 4210 3787 2981 2226 1741 1428 1262 1241 1223 1260 1366 1531 1709 2168 2821 3562 4021] + + + + + 1920x1080_A_80 + + + 1080x1280 + + + A + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [21 43 70 93 130 170 210 223] + + + [41 52 62 68 76 70 85 86] + + + [ 80] + + + [4095 4095 3677 2664 1947 1686 1438 1300 1307 1356 1543 1795 2075 2737 3582 4095 4095 4095 4095 3288 2459 1879 1630 1389 1254 1255 1317 1490 1734 2002 2443 3487 3944 4095 4092 3631 2925 2264 1819 1561 1334 1192 1204 1260 1429 1670 1915 2289 2771 3678 3925 3508 3178 2642 2109 1767 1498 1275 1135 1165 1204 1368 1595 1841 2075 2626 3070 3436 3129 2862 2406 2004 1718 1436 1215 1124 1109 1163 1311 1535 1783 1991 2350 2800 3020 2858 2636 2247 1936 1669 1366 1187 1100 1071 1126 1267 1460 1682 1877 2175 2522 2742 2710 2510 2154 1905 1648 1331 1200 1077 1047 1101 1241 1407 1631 1749 1872 2548 2336 2577 2406 2093 1871 1644 1385 1184 1063 1028 1084 1203 1350 1611 1715 1900 2071 2290 2548 2365 2076 1856 1634 1394 1176 1060 1024 1080 1207 1364 1613 1754 1936 2132 2287 2585 2406 2087 1878 11080 1401 1185 1070 1031 1088 1210 1380 1605 1760 1938 2226 2417 2695 2509 2160 1903 1677 1424 1207 1094 1060 1103 1236 1402 1660 1826 2030 2367 2548 2855 2660 2261 1949 1726 1395 1201 1137 1088 1132 1263 1443 1688 1861 2138 2517 2726 3167 2891 2439 2014 1775 1426 1240 1160 1122 1170 1285 1500 1745 1960 2337 2787 3003 3571 3228 2679 2131 1842 1488 1288 1212 1143 1208 1343 1556 1813 2060 2604 3082 3443 4095 3735 3007 2321 1917 1559 1337 1271 1165 1258 1400 1632 1869 2248 2838 3611 3988 4095 4095 3390 2543 2007 1628 1380 1314 1250 1299 1462 1705 1950 2462 3308 4095 4095 4095 4095 3823 2790 2116 1690 1433 1348 1309 1353 1528 1774 2058 2704 3651 4095 4095] + + + [4095 3971 3054 2223 1636 1457 1281 1195 1225 1257 1392 1561 1744 2283 2953 3951 4095 3958 3494 2736 2072 1588 1414 1246 1163 1190 1232 1352 1517 1701 2039 2883 3245 3923 3380 3010 2453 1904 1549 1366 1206 1121 1153 1197 1314 1475 1641 1915 2324 3038 3206 2913 2648 2208 1778 1519 1316 1166 1081 1130 1157 1273 1424 1593 1753 2200 2564 2856 2602 2399 2024 1703 1486 1276 1123 1084 1085 1130 1233 1382 1557 1697 1973 2341 2503 2394 2209 1893 1655 1450 1220 1109 1070 1062 1102 1205 1328 1477 1608 1830 2108 2306 2266 2101 1815 1631 1443 1192 1126 1055 1040 1085 1187 1290 1435 1501 1570 2137 1930 2159 2006 1764 1603 1441 1251 1121 1047 1025 1074 1155 1243 1427 1476 1606 1718 1896 2127 1979 1753 1596 1432 1263 1115 1047 1024 1070 1162 1258 1431 1512 1639 1775 1894 2153 2008 1761 1609 1438 1264 1123 1053 1027 1078 1165 1273 1422 1512 11080 1850 2014 2254 2095 1809 1625 1462 1281 1136 1074 1054 1086 1184 1286 1463 1571 1713 1966 2118 2379 2223 1896 1655 1501 1245 1123 1110 1075 1111 1200 1319 11280 1593 1794 2099 2258 2615 2397 2041 1699 1535 1265 1146 1124 1100 1141 1214 1351 1526 1669 1961 2321 2498 2980 2673 2250 1795 1583 1309 1182 1162 1109 1165 1255 1392 1570 1741 2185 2565 2830 3486 3089 2501 1955 1635 1364 1210 1205 1119 1199 1293 1448 1601 1894 2380 2979 3275 4095 3607 2818 2144 1701 1414 1240 1230 1190 1228 1340 1498 1666 2059 2753 3389 3908 4095 4095 3176 2328 1793 1454 1275 1244 1234 1263 1384 1544 1737 2266 3018 3925 4095] + + + [4095 3963 3072 2226 1642 1455 1283 1193 1226 1259 1393 1569 1757 2305 2989 4023 4095 3985 3502 2749 2079 1589 1416 1247 1163 1188 1236 1355 1527 1709 2061 2919 3290 3943 3382 3026 2458 1913 1548 1367 1208 1122 1153 1200 1318 1483 1649 1935 2345 3077 3267 2932 2652 2214 1781 1522 1319 1170 1081 1130 1159 1277 1430 1604 1764 2225 2582 2865 2611 2398 2028 1707 1488 1279 1124 1084 1087 1133 1238 1392 1568 1709 1990 2367 2535 2387 2213 1893 1658 1454 1221 1109 1073 1062 1107 1210 1338 1490 1620 1851 2122 2320 2270 2104 1813 1634 1443 1194 1129 1057 1043 1088 1191 1299 1446 1511 1585 2173 1945 2168 2011 1769 1607 1443 1251 1124 1049 1027 1078 1160 1251 1437 1484 1617 1722 1913 2136 1977 1751 1597 1435 1265 1118 1047 1024 1075 1167 1265 1436 1525 1646 1794 1909 2166 2009 1764 1607 1439 1265 1126 1054 1030 1080 1170 1280 1432 1521 1649 1857 2022 2241 2088 1812 1624 1466 1285 1137 1074 1053 1090 1187 1293 1473 1582 1725 1983 2136 2381 2222 1889 1659 1500 1247 1125 1110 1076 1112 1205 1325 1489 1601 1800 2117 2266 2617 2393 2037 1698 1538 1264 1147 1121 1101 1141 1219 1356 1530 1676 1969 2331 2519 2957 2665 2240 1792 1580 1310 1179 1161 1109 1165 1257 1399 1578 1750 2189 2572 2851 3456 3072 2490 1946 1634 1360 1210 1200 1117 1197 1294 1450 1608 1896 2391 2986 3273 4046 3571 2803 2133 1697 1409 1235 1227 1185 1226 1337 1503 1669 2068 2755 3386 3889 4095 4095 3142 2324 1783 1446 1270 1241 1227 1261 1384 1548 1738 2265 3013 3950 4095] + + + [4095 3652 2856 2101 1567 1394 1237 1175 1211 1237 1354 1506 1672 2155 2773 3642 4093 3689 3224 2572 1965 1523 1359 1212 1146 1179 1222 1325 1472 1635 1942 2681 3004 3527 3104 2813 2329 1828 1492 1319 1186 1115 1153 1195 1301 1441 1595 1831 2193 2826 2979 2714 2510 2091 1715 1469 1283 1156 1081 1130 1161 1270 1402 1550 1693 2086 2413 2632 2454 2256 1933 1649 1437 1249 1116 1088 1090 1136 1233 1367 1515 1643 1865 2191 2348 2242 2099 1806 1603 1409 1198 1106 1074 1065 1109 1209 1319 1449 1560 1748 1973 2134 2129 1995 1733 1582 1405 1173 1127 1061 1045 1092 1192 1284 1408 1451 1496 2016 1801 2024 1899 1691 1558 1405 1237 1124 1049 1027 1079 1162 1235 1405 1431 1536 1604 1766 2005 1873 1681 1547 1396 1247 1118 1049 1024 1074 1166 1253 1410 1465 1566 1665 1771 2033 1890 1688 1555 1401 1246 1125 1053 1028 1079 1168 1262 1399 1460 1569 1729 1858 2109 1972 1726 1574 1420 1263 1134 1076 1052 1090 1183 1271 1435 1522 1633 1848 1983 2237 2067 1797 1596 1455 1222 1118 1114 1077 1110 1198 1302 1444 1541 1698 1966 2098 2422 2236 1926 1633 1483 1236 1140 1125 1101 1142 1211 1327 1482 1606 1846 2164 2268 2759 2479 2100 1717 1524 1269 1167 1161 1107 1161 1250 1363 1522 1664 2036 2373 2607 3145 2832 2336 1843 1567 1309 1188 1191 1106 1192 1269 1407 1541 1785 2220 2718 2944 3691 3238 2604 2004 1609 1349 1199 1207 1165 1204 1305 1438 1583 1922 2518 3047 3447 4095 3730 2911 2154 1678 1376 1222 1212 1199 1233 1333 1476 1637 2095 2735 3486 3962] + + + + + 1920x1080_D50_90 + + + 1080x1280 + + + D50 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [22 45 75 103 136 171 197 211] + + + [45 55 62 69 75 67 83 84] + + + [ 90] + + + [5099 4379 3289 2397 1841 1569 1357 1253 1305 1352 1516 1760 2001 2628 3469 41080 5207 4379 3854 2955 2207 1776 1500 1306 1212 1247 1305 1460 1694 1943 2333 3332 3774 4576 3833 3367 2668 2026 1720 1438 1249 1183 1190 1251 1395 1620 1868 2203 2679 3537 3774 3334 3028 2444 1913 1667 1386 1214 1162 1141 1196 1338 1545 1806 2026 2558 3006 3369 3023 2740 2282 1852 1606 1366 1181 1127 1095 1148 1285 1485 1735 1956 2269 2735 2947 2763 2564 2151 1821 1555 1331 1150 1098 1064 1111 1243 1444 1658 1844 2133 2521 2729 2625 2433 2079 1800 1525 1298 1141 1079 1037 1089 1215 1411 1631 1857 2024 2643 2479 2526 2332 2027 1786 1512 1270 1143 1059 1027 1071 1200 1385 1605 1832 2040 2215 2426 2484 2310 2014 1791 1510 1242 1152 1054 1024 1070 1195 1384 1593 1825 2018 2150 2340 2530 2330 2038 1811 1531 1243 1154 1062 1034 1079 1206 1387 1590 1826 2010 2265 2495 2625 2448 2101 1847 1597 1320 1166 1100 1050 1100 1234 1385 1592 1848 2049 2381 2567 2788 2572 2184 1893 1638 1352 1189 1141 1077 1125 1268 1389 1625 1888 2118 2507 2737 3032 2794 2357 1951 1702 1395 1228 1157 1119 1166 1307 1439 1683 1949 2283 2733 2962 3435 3085 2581 2050 1769 1451 1265 1200 1165 1216 1344 1518 1748 2031 2548 3036 3379 3990 3560 2865 2214 1838 1512 1274 1258 1203 1266 1395 1601 1815 2182 2781 3513 3819 4681 4156 3261 2434 1915 1577 1319 1312 1223 1302 1458 1670 1905 2362 3197 3976 4610 5529 4860 3706 2687 2022 1657 1392 1342 1320 1343 1525 1744 1999 21080 3511 4657 5241] + + + [4461 3834 2864 2085 1602 1380 1228 1164 1232 1271 1399 1578 1752 2287 3021 4080 4637 3912 3353 2580 1909 1555 1335 1191 1138 1195 1242 1357 1531 1717 2037 2926 3315 3980 3339 2945 2326 1762 1509 1284 1149 1127 1153 1203 1310 1478 1660 1920 2358 3114 3326 2935 2638 2142 1660 1469 1245 1125 1120 1116 1163 1269 1421 1615 1783 2248 2642 2947 2635 2394 1989 1616 1421 1237 1107 1099 1080 1127 1231 1376 1564 1730 1996 2393 2590 2417 2226 1876 1597 1382 1210 1088 1078 1054 1096 1199 1344 1499 1638 1874 2208 2379 2292 2112 1811 1582 1358 1184 1085 1064 1035 1079 1179 1321 1478 1655 1776 2331 2164 2202 2024 1765 1572 1346 1162 1094 1045 1025 1063 1168 1305 1461 1638 1799 1922 2115 2159 2000 1754 1576 1346 1135 1104 1043 1024 1063 1166 1306 1453 1628 1779 1864 2028 2204 2032 1769 1592 1365 1135 1105 1048 1029 1072 1175 1304 1451 1627 1768 1972 2162 2287 2125 1823 1623 1424 1203 1113 1082 1047 1086 1200 1299 1442 1644 1799 2071 2233 2438 2239 1901 1657 1457 1227 1126 1119 1067 1111 1223 1294 1467 1671 1858 2182 2378 2660 2434 2047 1711 1511 1261 1153 1128 1102 1146 1256 1332 1512 1718 1991 2385 2588 3014 2715 2261 1790 1567 1308 1177 1165 1143 1186 1283 1396 1563 1793 2241 2668 2958 3513 3138 2531 1939 1623 1355 1178 1207 1169 1229 1324 1467 1618 1916 2454 3082 3371 4190 3685 2864 2143 1686 1409 1209 1250 1179 1252 1372 1518 1685 2074 2827 3495 4018 4988 4322 3256 2363 1776 1468 1267 1257 1259 1278 1414 1576 1760 2308 3080 4050 4676] + + + [4496 3825 2884 2081 1606 1379 1231 1169 1231 1275 1404 1582 1762 2299 3036 4130 4661 3886 3360 2574 1916 1554 1336 1191 1137 1198 1242 1360 1535 1720 2055 2942 3338 4056 3348 2948 2321 1760 1510 1284 1151 1128 1154 1204 1315 1487 1669 1935 2368 3137 3323 2923 2627 2142 1662 1470 1247 1127 1121 1118 1166 1273 1425 1622 1793 2264 2658 2967 2632 2393 1985 1615 1424 1238 1108 1100 1081 1128 1234 1383 1570 1738 2010 2403 2596 2411 2226 1876 1595 1382 1211 1089 1080 1055 1098 1203 1348 1508 1644 1877 2220 2398 2292 2113 1812 1580 1359 1184 1087 1065 1035 1081 1183 1327 1484 1660 1785 2347 2174 2202 2024 1768 1573 1346 1164 1096 1047 1026 1066 1170 1310 1469 1643 1808 1931 2119 2153 1993 1757 1575 1348 1137 1107 1043 1024 1065 1169 1309 1461 1637 1784 1877 2028 2205 2028 1768 1593 1364 1134 1107 1049 1030 1073 1178 1310 1454 1631 1780 1974 2179 2290 2120 1822 1624 1424 1204 1113 1082 1046 1089 1202 1303 1449 1650 1801 2075 2236 2412 2233 1893 1657 1457 1227 1128 1119 1069 1111 1226 1298 1472 1676 1860 2193 2381 2657 2430 2040 1705 1511 1260 1155 1127 1102 1146 1258 1335 1519 1721 1991 2387 2598 2992 2694 2251 1786 1563 1307 1177 1162 1143 1184 1285 1396 1568 1792 2245 2668 2956 3492 3103 2507 1932 1620 1354 1178 1205 1168 1230 1323 1471 1618 1923 2447 3068 3380 4138 3650 2848 2123 1686 1407 1205 1247 1174 1250 1370 1517 1689 2068 2821 3482 4012 4927 4275 3222 2348 1766 1463 1265 1258 1255 1275 1412 1579 1759 2306 3084 4036 4669] + + + [4004 3468 2622 1933 1498 1300 1174 1140 1216 1252 1363 1513 1664 2137 2781 3680 4111 3495 3039 2374 1774 1457 1259 1146 1116 1184 1227 1331 1477 1633 1911 2705 3044 3584 3052 2702 2147 1646 1421 1224 1117 1116 1147 1202 1294 1438 1591 1821 2196 2850 3036 2701 2445 1983 1567 1389 1194 1103 1114 1116 1165 1262 1390 1559 1706 2101 2450 2725 2439 2210 1855 1523 1347 1194 1089 1097 1083 1128 1228 1356 1511 1658 1876 2215 2376 2231 2060 1760 1508 1314 1173 1077 1076 1058 1102 1199 1330 1457 1570 1766 2048 2205 2118 1959 1701 1497 1296 1150 1077 1062 1035 1084 1180 1310 1442 1587 1684 2182 1991 2029 1874 1660 1492 1284 1136 1084 1046 1028 1068 1169 1298 1429 1579 1707 1787 1964 1999 1850 1654 1492 1286 1108 1098 1039 1024 1066 1168 1298 1424 1570 1693 1748 1858 2027 1873 1658 1510 1304 1107 1099 1046 1029 1074 1174 1295 1418 1568 1684 1835 1994 2101 1961 1711 1539 1356 1172 1105 1081 1045 1089 1197 1288 1401 1581 1704 1921 2061 2224 2067 1767 1569 1392 1191 1117 1116 1067 1110 1220 1281 1422 1606 1743 2022 2173 2440 2240 1899 1612 1431 1220 1140 1125 1101 1143 1251 1310 1460 1644 1862 2194 2370 2730 2481 2084 1680 1482 1258 1156 1158 1138 1180 1276 1366 1502 1703 2070 2445 2694 3162 2832 2323 1804 1527 1290 1149 1193 1159 1219 1303 1422 1550 1798 2264 2794 3044 3705 3300 2614 1965 1584 1329 1161 1225 1155 1233 1335 1457 1602 1919 2574 3138 3601 4348 3798 2937 2160 1641 1376 1207 1226 1229 1245 1368 1507 1649 2117 2800 3613 4067] + + + + + 1920x1080_D65_90 + + + 1080x1280 + + + D65 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [21 42 71 101 136 170 200 219] + + + [42 55 60 71 78 67 83 84] + + + [ 90] + + + [5187 4589 3551 2556 1878 1597 1359 1244 1290 1347 1518 1760 2015 2667 3470 4618 5173 4535 4011 3188 2381 1813 1541 1304 1212 1241 1297 1461 1695 1949 2379 3359 3763 4490 3857 3474 2824 2196 1763 1481 1246 1188 1185 1246 1394 1627 1863 2228 2713 3521 3759 3402 3077 2569 2045 1737 1427 1210 1162 1136 1191 1341 1560 1807 2047 2582 3019 3340 3020 2782 2355 1950 1693 1383 1189 1125 1092 1144 1288 1494 1739 1932 2279 2682 2892 2792 2577 2189 1894 1644 1347 1155 1097 1061 1108 1246 1446 1682 1889 2125 2477 2656 2636 2461 2121 1859 1615 1328 1139 1083 1036 1088 1222 1423 1638 1853 2031 2645 2466 2564 2367 2060 1834 1594 1318 1124 1070 1028 1073 1203 1401 1618 1835 2035 2236 2514 2506 2337 2056 1833 1592 1310 1120 1071 1024 1075 1203 1404 1601 1825 2021 2283 2447 2572 2375 2083 1851 1606 1338 1125 1079 1036 1087 1214 1414 1592 1821 2035 2293 2475 2667 2503 2148 1897 1646 1386 1158 1107 1060 1110 1241 1445 1571 1836 2082 2390 2577 2831 2639 2247 1941 1691 1421 1189 1142 1090 1140 1266 1488 1559 1887 2162 2526 2703 3100 2872 2447 2011 1758 1485 1240 1171 1136 1183 1313 1527 1646 1950 2349 2747 2978 3530 3208 2689 2142 1829 1565 1290 1216 1188 1235 1368 1583 1754 2041 2606 3052 3396 4109 3707 3017 2331 1905 1634 1338 1265 1215 1287 1423 11080 1846 2212 2813 3528 3873 4838 4357 3441 2581 1998 1711 1403 1305 1281 1315 1488 1717 1929 2430 3256 4018 4594 5667 4982 3886 2827 2120 1785 1473 1347 1336 1388 1555 1784 2045 2697 3617 4659 5322] + + + [4737 4116 3169 2271 1644 1419 1228 1158 1226 1269 1403 1592 1783 2354 3090 4117 4636 4078 3606 2839 2103 1599 1374 1190 1142 1192 1240 1360 1542 1737 2113 3004 3367 4051 3476 3097 2516 1938 1569 1328 1147 1134 1150 1200 1318 1492 1671 1975 2425 3152 3340 3020 2733 2281 1810 1547 1286 1125 1122 1115 1161 1274 1438 1630 1825 2301 2689 2982 2694 2460 2073 1724 1512 1256 1113 1100 1078 1124 1235 1392 1577 1730 2032 2383 2572 2458 2271 1935 1680 1476 1230 1092 1079 1055 1095 1204 1354 1531 1697 1890 2195 2364 2340 2162 1864 1649 1451 1213 1081 1068 1035 1078 1185 1338 1492 1673 1806 2367 2186 2249 2073 1812 1629 1433 1210 1071 1057 1027 1067 1174 1322 1481 1652 1821 1983 2206 2215 2056 1808 1624 1432 1203 1070 1060 1024 1071 1174 1327 1466 1644 1806 2018 2165 2255 2090 1832 1645 1441 1229 1074 1067 1035 1081 1183 1337 1455 1643 1813 2023 2178 2369 2193 1889 1674 1477 1266 1102 1091 1055 1102 1206 1363 1424 1650 1850 2114 2270 2507 2325 1978 1718 1512 1298 1124 1121 1083 1127 1227 1392 1415 1692 1929 2226 2404 2766 2545 2151 1778 1573 1351 1167 1141 1123 1167 1266 1423 1485 1744 2091 2449 2642 3195 2866 2403 1895 1636 1420 1202 1180 1169 1210 1311 1467 1582 1818 2332 2730 3019 3722 3322 2694 2073 1700 1482 1242 1217 1191 1255 1355 1519 1666 1973 2535 3172 3484 4454 3929 3087 2307 1781 1549 1296 1241 1245 1272 1413 1574 1730 2176 2934 3613 4129 5253 4557 3497 2540 1878 1604 1346 1272 1279 1330 1453 1627 1812 2412 3255 4182 4768] + + + [4711 4123 3157 2255 1644 1416 1227 1156 1223 1271 1404 1594 1780 2369 3110 4131 4666 4087 3573 2831 2102 1597 1372 1191 1140 1192 1238 1363 1544 1739 2118 3013 3385 4070 3440 3077 2509 1930 1565 1326 1147 1132 1149 1201 1318 1495 1673 1982 2422 3168 3356 3011 2721 2269 1806 1545 1286 1124 1121 1114 1161 1277 1437 1634 1828 2310 2696 2994 2680 2446 2069 1721 1509 1253 1112 1098 1078 1125 1237 1395 1580 1734 2036 2395 2580 2447 2265 1930 1677 1473 1228 1090 1079 1054 1096 1205 1357 1534 1701 1894 2194 2370 2329 2148 1857 1646 1450 1212 1080 1069 1034 1078 1185 1341 1494 1674 1808 2374 2186 2236 2067 1810 1626 1429 1208 1071 1056 1025 1068 1176 1324 1482 1654 1823 1982 2213 2197 2043 1802 1622 1428 1203 1071 1059 1024 1070 1175 1327 1469 1645 1808 2023 2160 2245 2082 1822 11080 1439 1224 1072 1066 1033 1080 1184 1339 1457 1645 1814 2022 2175 2348 2175 1883 1671 1471 1265 1100 1089 1055 1101 1205 1364 1427 1651 1850 2114 2272 2485 2304 1966 1714 1505 1296 1122 1120 1079 1126 1225 1392 1414 1691 1925 2221 2396 2744 2512 2139 1771 1569 1348 1164 1139 1120 1164 1265 1425 1484 1745 2084 2439 2635 3141 2841 2377 1884 1630 1414 1199 1176 1167 1206 1310 1465 1576 1815 2321 2726 2999 3677 3268 2664 2053 1690 1475 1238 1212 1187 1253 1354 1517 1662 1965 2527 3149 3473 4388 3883 3057 2281 1772 1542 1289 1238 1240 1268 1406 1572 1725 2166 2915 3576 4082 5176 4497 3448 2513 1859 1595 1338 1267 1275 1323 1450 1624 1804 2398 3212 4152 4739] + + + [4262 3716 2925 2094 1543 1325 1175 1125 1205 1253 1364 1530 1695 2198 2879 3728 4185 3727 3276 2612 1953 1497 1292 1142 1119 1180 1225 1335 1488 1654 1984 2781 3099 3683 3167 2850 2332 1808 1475 1258 1113 1120 1144 1195 1301 1448 1609 1866 2270 2902 3078 2797 2527 2118 1703 1458 1226 1097 1113 1112 1162 1268 1407 1573 1745 2148 2505 2757 2489 2288 1927 1632 1426 1205 1092 1094 1080 1126 1232 1368 1525 1661 1911 2214 2381 2281 2100 1813 1586 1404 1185 1076 1076 1055 1099 1203 1339 1491 1630 1790 2040 2196 2154 2009 1744 1561 1380 1175 1067 1066 1035 1083 1183 1325 1455 1608 1708 2223 2016 2082 1922 1704 1538 1368 1177 1059 1054 1027 1073 1174 1314 1449 1591 1729 1847 2065 2044 1901 1698 1538 1368 1169 1062 1055 1024 1073 1174 1320 1434 1582 1722 1894 2013 2083 1934 1710 1554 1374 1194 1063 1062 1034 1083 1184 1324 1422 1580 1722 1887 2021 2173 2027 1768 1584 1404 1230 1091 1087 1054 1101 1202 1347 1387 1581 1759 1966 2114 2299 2134 1840 1619 1437 1256 1110 1119 1079 1128 1222 1371 1372 1616 1814 2070 2222 2535 2337 1992 1676 1486 1301 1148 1136 1120 1163 1259 1401 1434 1666 1957 2254 2426 2886 2629 2213 1771 1548 1360 1176 1169 1164 1204 1302 1437 1516 1725 2158 2524 2756 3354 3019 2474 1922 1599 1408 1206 1201 1179 1246 1336 1475 1595 1842 2352 2893 3163 3967 3530 2817 2115 1665 1462 1246 1217 1224 1253 1380 1515 1643 2014 2678 3253 3675 4644 4059 3171 2324 1740 1507 1279 1235 1252 1301 1408 1559 1707 2216 2950 3718 4245] + + + + + 1920x1080_D75_90 + + + 1080x1280 + + + D75 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [19 40 72 103 136 172 198 220] + + + [43 54 62 71 76 66 83 85] + + + [ 90] + + + [4740 4181 3268 2362 1765 1527 1334 1268 1289 1348 1511 1754 1985 2646 3449 4562 4966 4075 3673 2899 2163 1697 1470 1289 1249 1232 1297 1449 1687 1923 2359 3329 3717 4384 3582 3214 2604 1996 1648 1405 1260 1209 1177 1245 1396 1614 1852 2202 2704 3468 3690 3143 2881 2391 1865 1615 1376 1228 1169 1134 1193 1337 1550 1795 2028 2550 2949 3253 2819 2616 2213 1791 1565 1351 1186 1129 1089 1149 1288 1488 1718 1901 2257 2653 2846 2617 2429 2094 1758 1518 1306 1165 1096 1058 1111 1247 1445 1665 1829 2126 2487 2635 2461 2332 2009 1748 1494 1281 1161 1078 1036 1091 1221 1416 1634 1847 2023 2577 2406 2392 2234 1959 1737 1477 1253 1152 1058 1026 1074 1205 1393 1616 1815 2013 2157 2330 2330 2209 1951 1743 1468 1218 1162 1055 1024 1074 1202 1395 1601 1809 1973 2142 2339 2400 2243 1964 1762 1499 1239 1157 1067 1033 1085 1211 1399 1605 1799 1984 2253 2421 2477 2345 2041 1793 1555 1302 1176 1095 1056 1105 1240 1411 1614 1822 2021 2325 2479 2644 2469 2125 1838 1596 1334 1192 1131 1081 1133 1267 1416 1643 1856 2106 2445 2614 2871 2686 2313 1898 1668 1397 1226 1161 1120 1170 1313 1447 1693 1922 2271 2706 2905 3239 2992 2531 2015 1729 1477 1244 1211 1167 1218 1353 1534 1754 2024 2557 2965 3242 3797 3458 2828 2188 1801 1530 1272 1262 1199 1269 1404 1600 1806 2182 2760 3436 3728 4403 4043 3237 2411 1873 1580 1334 1291 1257 1311 1463 1663 1889 2367 3175 3893 4411 5222 4600 3646 2656 1993 1649 1388 1335 1306 1362 1527 1738 1988 2632 3505 4530 5044] + + + [4393 3836 2929 2113 1569 1369 1221 1195 1231 1279 1408 1602 1780 2380 3173 4194 4644 3785 3346 2631 1944 1516 1326 1190 1185 1193 1246 1366 1550 1744 2129 3049 3415 4034 3273 2922 2358 1781 1478 1277 1168 1164 1149 1207 1322 1498 1684 1994 2469 3193 3366 2841 2602 2153 1662 1455 1254 1152 1133 1115 1168 1281 1442 1646 1832 2336 2699 2972 2561 2354 1987 1603 1412 1234 1122 1107 1078 1129 1242 1397 1575 1730 2042 2410 2580 2339 2176 1868 1579 1372 1198 1110 1081 1053 1099 1208 1359 1535 1660 1934 2247 2381 2227 2071 1795 1569 1349 1179 1110 1063 1033 1082 1189 1340 1508 1686 1830 2354 2158 2139 1991 1747 1559 1339 1155 1107 1047 1026 1068 1176 1322 1491 1661 1826 1918 2089 2098 1961 1735 1563 1328 1121 1115 1045 1024 1069 1175 1323 11280 1651 1785 1920 2090 2137 2000 1752 1581 1357 1139 1111 1054 1029 1078 1185 1327 11280 1639 1792 2020 2160 2236 2091 1816 1607 1407 1195 1121 1080 1051 1095 1208 1333 11280 1661 1824 2080 2224 2371 2216 1903 1645 1441 1222 1136 1111 1074 1119 1232 1332 1511 1685 1898 2203 2351 2605 2411 2065 1700 1503 1280 1156 1136 1107 1155 1270 1353 1551 1743 2059 2451 2643 2989 2717 2294 1806 1571 1351 1169 1177 1151 1198 1304 1432 1602 1838 2342 2708 2952 3520 3171 2585 1983 1628 1397 1189 1220 1178 1242 1347 1490 1648 1982 2540 3155 3399 4160 3726 2959 2190 1698 1441 1239 1242 1226 1277 1394 1545 1717 2159 2927 3582 4056 4912 4360 3361 2416 1790 1491 1279 1267 1260 1312 1437 1599 1798 2398 3225 4179 4713] + + + [4352 3827 2934 2107 1570 1370 1222 1194 1234 1282 1415 1606 1792 2395 3184 4227 4672 3795 3333 2623 1943 1516 1328 1191 1187 1192 1249 1371 1556 1745 2142 3070 3439 4072 3263 2915 2352 1779 1477 1277 1170 1165 1151 1209 1326 1504 1691 2000 2483 3210 3381 2847 2596 2144 1662 1457 1255 1154 1136 1116 1169 1286 1447 1648 1842 2343 2712 2986 2544 2347 1985 1599 1413 1236 1123 1108 1080 1132 1246 1401 1582 1737 2048 2422 2596 2334 2173 1866 1578 1372 1200 1111 1082 1054 1100 1212 1363 1540 1664 1942 2244 2398 2227 2067 1795 1568 1349 1179 1111 1065 1033 1084 1192 1345 1513 1688 1840 2363 2166 2126 1987 1743 1559 1339 1156 1107 1049 1026 1070 1180 1326 1497 1665 1830 1923 2093 2095 1956 1731 1561 1329 1123 1118 1045 1024 1069 1177 1328 1484 1658 1790 1922 2100 2133 1989 1750 1579 1353 1139 1112 1055 1031 1080 1186 1331 1484 1644 1799 2018 2172 2222 2085 1814 1604 1405 1196 1123 1079 1051 1096 1209 1336 1487 1660 1826 2089 2231 2346 2207 1892 1644 1441 1220 1136 1111 1073 1119 1233 1335 1515 1688 1903 2200 2354 2591 2404 2054 1696 1498 1278 1157 1135 1107 1155 1271 1356 1553 1744 2058 2451 2642 2954 2698 2277 1798 1567 1348 1168 1177 1150 1197 1306 1432 1602 1841 2329 2704 2939 3468 3117 2561 1967 1624 1394 1188 1218 1176 1241 1346 1488 1650 1977 2535 3139 3399 4113 3672 2930 2174 1696 1438 1235 1242 1223 1274 1395 1542 1719 2155 2917 3559 4047 4857 4284 3323 2394 1779 1484 1276 1263 1260 1309 1435 1598 1794 2387 3203 4147 4659] + + + [3969 3466 2719 1968 1474 1292 1171 1174 1219 1265 1385 1546 1704 2241 2965 3822 4189 3457 3073 2434 1806 1427 1252 1147 1169 1184 1239 1346 1505 1671 2009 2844 3168 3716 2994 2704 2189 1670 1396 1216 1140 1157 1149 1207 1314 1463 1628 1892 2323 2960 3102 2644 2420 2003 1567 1379 1203 1130 1133 1115 1171 1278 1419 1594 1760 2192 2526 2757 2387 2186 1857 1516 1338 1192 1108 1105 1082 1136 1244 1378 1535 1661 1928 2249 2418 2169 2024 1755 1497 1304 1162 1100 1082 1057 1103 1212 1349 1498 1599 1835 2096 2231 2068 1931 1690 1486 1289 1146 1102 1063 1038 1088 1192 1334 1476 1626 1743 2212 2009 1986 1853 1645 11280 1279 1127 1099 1046 1028 1075 1180 1317 1464 1604 1743 1809 1949 1942 1825 1634 1482 1268 1095 1112 1043 1024 1074 1178 1318 1455 1597 1710 1796 1941 1984 1852 1652 1499 1298 1110 1106 1051 1032 1082 1185 1320 1453 1583 1710 1890 2018 2060 1944 1706 1524 1342 1165 1115 1079 1049 1098 1206 1322 1447 1599 1727 1942 2068 2198 2049 1774 1558 1373 1187 1127 1111 1074 1120 1231 1318 1470 1623 1792 2052 2181 2392 2227 1918 1607 1428 1237 1145 1133 1108 1154 1268 1334 1501 1674 1928 2264 2451 2736 2508 2120 1695 1489 1299 1150 1171 1148 1194 1299 1404 1547 1753 2175 2514 2710 3168 2878 2383 1845 1540 1331 1159 1209 1168 1237 1331 1449 1589 1858 2363 2887 3108 3749 3367 2709 2024 1594 1363 1195 1222 1211 1261 1367 1494 1638 2012 2688 3246 3654 4383 3887 3044 2220 1667 1397 1221 1237 1236 1288 1397 1531 1696 2206 2948 3736 4183] + + + + + 1920x1080_F11_90 + + + 1080x1280 + + + F11 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [20 41 70 102 133 164 203 227] + + + [40 54 62 71 76 67 83 87] + + + [ 90] + + + [5188 4629 3514 2565 1923 1678 1435 1335 1275 1315 1489 1718 1955 2633 3436 4601 5179 4543 4013 3163 2369 1839 1631 1391 1298 1221 1267 1427 1656 1891 2344 3350 3761 4515 3848 3432 2803 2158 1767 1565 1351 1247 1166 1207 1357 1590 1811 2183 2666 3506 3714 3332 3023 2533 1971 1713 1509 1320 1195 1121 1152 1295 1491 1751 1980 2528 2944 3286 2950 2733 2317 1823 1673 1464 1288 1151 1078 1105 1239 1402 1687 1891 2232 2657 2851 2720 2521 2137 1748 11080 1439 1259 1115 1049 1068 1199 1355 1602 1768 2046 2376 2545 2570 2412 2014 1721 1609 1425 1240 1099 1029 1048 1172 1327 1566 1773 1924 2426 2198 2489 2314 1946 1708 1572 1416 1228 1083 1024 1031 1154 1303 1529 1761 1879 2007 2280 2474 2294 1960 1697 1554 1423 1229 1084 1025 1033 1152 1296 1516 1748 1880 2096 2262 2528 2355 1994 1714 1551 1442 1243 1094 1033 1048 1158 1326 1559 1757 1900 2162 2334 2652 2475 2103 1775 1566 1477 1271 1123 1051 1068 1194 1309 1593 1781 1980 2241 2400 2809 2612 2218 1850 1585 1503 1303 1167 1075 1099 1211 1401 1626 1813 2065 2389 2540 3055 2837 2415 1949 1646 1527 1347 1192 1117 1142 1259 1457 1675 1874 2241 2625 2810 3524 3190 2673 2103 1744 1556 1404 1234 1166 1191 1318 1524 1715 1988 2502 2959 3283 4124 3679 2993 2313 1837 1614 1457 1287 1216 1245 1383 1592 1771 2164 2741 3437 3795 4902 4334 3404 2554 1934 1693 1514 1342 1265 1303 1453 1655 1853 2357 3201 3942 4521 5652 4991 3843 2786 2051 1763 1572 1396 1316 1354 1521 1715 1945 2614 3526 4582 5275] + + + [4840 4260 3298 2394 1790 1577 1359 1289 1241 1274 1424 1622 1813 2434 3195 4251 4760 4202 3736 2950 2212 1723 1535 1326 1262 1197 1234 1372 1569 1766 2171 3099 3471 4156 3578 3200 2625 2011 1655 1479 1294 1222 1150 1183 1313 1509 1703 2029 2483 3242 3439 3081 2811 2359 1839 1613 1427 1273 1176 1113 1135 1258 1418 1653 1846 2356 2731 3040 2755 2540 2153 1706 1576 1388 1247 1139 1073 1092 1206 1333 1595 1770 2082 2464 2651 2521 2346 1980 1637 1545 1369 1227 1110 1047 1060 1173 1295 1518 1660 1901 2199 2341 2396 2234 1866 1611 1518 1357 1212 1094 1028 1042 1150 1269 1478 1669 1782 2256 2022 2297 2140 1799 1601 1488 1352 1204 1080 1024 1027 1135 1250 1445 1659 1750 1841 2095 2289 2122 1811 1589 1469 1358 1205 1081 1026 1027 1135 1245 1431 1648 1748 1938 2074 2342 2174 1843 1604 1469 1376 1218 1091 1033 1043 1141 1277 1482 1651 1766 1990 2146 2448 2285 1935 1653 1483 1407 1245 1118 1052 1061 1174 1251 1510 1669 1841 2071 2213 2594 2421 2050 1719 1499 1431 1271 1162 1074 1093 1189 1349 1542 1698 1920 2205 2352 2851 2634 2240 1810 1550 1455 1308 1183 1112 1134 1232 1400 1585 1752 2083 2429 2590 3281 2958 2498 1954 1638 1481 1357 1223 1161 1178 1290 1458 1615 1856 2331 2751 3027 3817 3425 2788 2158 1719 1534 1407 1267 1207 1232 1347 1521 1670 2020 2555 3188 3472 4542 4026 3173 2389 1813 1602 1454 1317 1254 1281 1412 1575 1735 2196 2978 3652 4152 5232 4658 3554 2606 1913 1661 1498 1359 1291 1326 1465 1624 1812 2424 3233 4245 4748] + + + [4862 4287 3297 2400 1805 1581 1357 1291 1240 1278 1431 1629 1832 2456 3227 4342 4793 4235 3745 2968 2219 1723 1536 1329 1264 1198 1237 1378 1579 1777 2199 3135 3514 4210 3589 3210 2628 2016 1659 1481 1297 1221 1152 1186 1318 1522 1711 2047 2510 3283 3482 3096 2811 2366 1843 1616 1430 1274 1178 1112 1137 1262 1426 1664 1859 2376 2757 3063 2755 2545 2154 1707 1581 1391 1249 1141 1074 1095 1211 1340 1605 1783 2099 2488 2675 2529 2349 1986 11080 1548 1370 1230 1111 1048 1063 1178 1302 1529 1669 1919 2210 2370 2400 2234 1872 1614 1520 1360 1214 1096 1030 1044 1155 1277 1488 1680 1796 2288 2026 2303 2145 1801 1603 1492 1353 1206 1082 1024 1028 1140 1256 1454 1668 1760 1851 2113 2280 2122 1814 1593 1473 1359 1209 1082 1026 1032 1138 1251 1439 1660 1757 1953 2085 2347 2181 1842 1606 1472 1380 1220 1090 1034 1044 1145 1284 1492 1664 1778 2010 2161 2438 2284 1936 1655 1483 1410 1246 1119 1051 1064 1179 1256 1517 1681 1851 2080 2225 2606 2420 2047 1721 1502 1433 1273 1160 1074 1093 1192 1354 1550 1708 1928 2218 2347 2846 2619 2236 1807 1552 1454 1310 1181 1112 1134 1234 1404 1591 1762 2094 2433 2614 3250 2943 2487 1948 1633 1483 1356 1221 1158 1178 1291 1461 1624 1862 2340 2748 3035 3809 3401 2777 2147 1718 1530 1403 1265 1202 1230 1347 1524 1674 2023 2564 3197 3475 4519 3982 3159 2373 1808 1599 1451 1313 1249 1279 1411 1578 1737 2204 2984 3658 4183 5212 4602 3547 2596 1905 1656 1494 1353 1287 1320 1466 1626 1817 2421 3254 4214 4765] + + + [4363 3854 3039 2247 1701 1494 1306 1265 1224 1254 1386 1563 1731 2275 2955 3825 4265 3819 3389 2730 2078 1642 1459 1283 1241 1186 1216 1341 1516 1694 2042 2855 3173 3729 3281 2957 2445 1905 1591 1416 1269 1212 1145 1178 1294 1473 1644 1921 2326 2969 3140 2853 2607 2214 1762 1555 1378 1254 1175 1110 1131 1245 1385 1593 1770 2199 2536 2771 2570 2369 2022 1658 1521 1346 1235 1139 1077 1092 1199 1308 1545 1705 1960 2288 2452 2336 2193 1882 1599 1491 1336 1222 1111 1049 1059 1169 1274 1477 1597 1803 2028 2170 2243 2088 1786 1575 1469 1331 1208 1095 1031 1043 1144 1254 1440 1609 1692 2119 1873 2137 2005 1729 1564 1446 1331 1203 1083 1024 1026 1131 1237 1406 1604 1661 1710 1928 2145 1987 1733 1555 1438 1334 1208 1081 1025 1027 1131 1230 1396 1592 1669 1808 1927 2179 2033 1760 1567 1443 1350 1219 1091 1035 1041 1133 1260 1449 1595 1684 1863 1988 2275 2124 1824 1607 1455 1377 1242 1118 1048 1058 1166 1225 1469 1612 1741 1922 2041 2399 2248 1921 1653 1473 1397 1266 1159 1072 1090 1177 1322 1499 1632 1808 2036 2149 2624 2422 2091 1725 1512 1419 1296 1181 1109 1126 1218 1373 1537 1678 1940 2232 2366 2981 2720 2308 1845 1577 1449 1334 1216 1155 1169 1271 1426 1556 1763 2159 2523 2723 3443 3109 2567 2015 11080 1488 1372 1255 1193 1216 1320 1475 1601 1889 2355 2878 3125 4043 3569 2894 2198 1709 1531 1406 1288 1231 1257 1372 1512 1642 2029 2705 3260 3677 4561 4126 3199 2394 1779 1574 1439 1321 1260 1287 1415 1548 1700 2225 2907 3702 4143] + + + + + 1920x1080_F2_90 + + + 1080x1280 + + + F2 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [17 37 68 102 132 172 206 226] + + + [40 53 61 70 78 67 84 87] + + + [ 90] + + + [5182 4590 3655 2625 1955 1686 1419 1284 1286 1339 1500 1722 1973 2725 3573 4783 5123 4461 4029 3231 2433 1872 1632 1370 1237 1242 1291 1448 1668 1904 2413 3447 3847 4520 3805 3479 2863 2211 1798 1569 1312 1198 1184 1237 1389 1606 1822 2236 2760 3575 3713 3278 3047 2576 2034 1746 1514 1260 1173 1138 1189 1329 1538 1764 2025 2593 3001 3290 2924 2738 2348 1900 1689 1464 1220 1142 1091 1141 1279 11280 1699 1913 2320 2709 2873 2676 2523 2170 1824 1642 1422 1195 1111 1057 1102 1244 1400 1612 1764 2016 2382 2535 2530 2399 2058 1787 1607 1397 1182 1093 1033 1081 1215 1384 1598 1677 1946 2494 2262 2442 2300 1972 1749 1585 1377 1175 1077 1024 1063 1196 1362 1560 1688 1926 2103 2302 2402 2268 1939 1736 1576 1373 1175 1071 1024 1064 1188 1362 1534 1724 1894 2114 2234 2435 2307 1946 1735 1586 1385 1186 1091 1029 1076 1191 1363 1570 1728 1877 2165 2298 2546 2414 2027 1731 1617 1410 1215 1108 1053 1095 1224 1386 1601 1743 1985 2273 2407 2709 2534 2172 1730 1642 1442 1242 1139 1081 1124 1246 1415 1633 1816 2092 2429 2566 2981 2771 2388 1807 1658 1488 1284 1163 1126 1163 1284 1460 1692 1903 2324 2708 2886 3428 3125 2654 2011 1666 1548 1337 1213 1160 1213 1337 1519 1750 2031 2585 3017 3276 3995 3633 2967 2265 1714 1601 1389 1263 1175 1256 1388 1592 1785 2243 2854 3543 3813 4711 4257 3393 2530 1824 1648 1453 1294 1264 1310 1447 1666 1859 2443 3348 4082 4553 5513 4918 3872 2761 1976 1698 1515 1346 1302 1361 1508 1730 1979 2678 3718 4736 5222] + + + [4772 4263 3368 2434 1801 1564 1334 1231 1247 1290 1425 1606 1817 2495 3308 4359 4744 4156 3737 2995 2248 1729 1526 1296 1196 1212 1256 1382 1566 1760 2226 3188 3543 4188 3517 3212 2653 2039 1671 1471 1248 1166 1167 1211 1336 1517 1692 2062 2568 3285 3419 3044 2809 2382 1876 1622 1423 1204 1151 1125 1169 1289 1458 1646 1873 2403 2762 3032 2715 2519 2167 1755 1575 1377 1173 1129 1086 1129 1246 1408 1594 1774 2147 2502 2647 2462 2317 1996 1689 1530 1343 1155 1103 1057 1094 1218 1339 1514 1637 1859 2183 2341 2333 2201 1892 1649 1502 1320 1148 1087 1034 1077 1192 1328 1502 1558 1790 2295 2062 2242 2111 1809 1622 11280 1306 1142 1072 1025 1060 1175 1310 1467 1571 1779 1922 2104 2202 2076 1776 1608 1473 1301 1145 1067 1024 1059 1170 1312 1446 1602 1752 1936 2038 2236 2114 1786 1608 1478 1308 1155 1085 1029 1073 1172 1313 1479 1611 1730 1971 2104 2339 2207 1864 1600 1507 1331 1178 1103 1055 1088 1202 1329 1509 1615 1830 2080 2196 2479 2332 1990 1600 1528 1356 1201 1129 1079 1115 1221 1357 1532 1685 1931 2226 2356 2755 2552 2195 1669 1544 1399 1238 1151 1118 1155 1255 1391 1586 1768 2145 2495 2647 3142 2888 2453 1856 1555 1454 1282 1191 1153 1200 1302 1441 1635 1881 2405 2786 3030 3687 3351 2754 2094 1597 1500 1329 1236 1163 1240 1343 1508 1663 2081 2664 3273 3525 4366 3947 3143 2343 1695 1547 1383 1263 1245 1289 1396 1574 1732 2270 3117 3766 4242 5145 4586 3549 2573 1821 1580 1432 1299 1269 1325 1445 1629 1822 2486 3413 4393 4841] + + + [4769 4286 3357 2429 1800 1568 1333 1229 1245 1290 1425 1615 1826 2510 3332 4382 4785 4154 3732 3010 2238 1729 1521 1295 1192 1210 1253 1385 1566 1764 2237 3208 3569 4228 3518 3206 2648 2038 1669 1471 1245 1164 1165 1210 1337 1520 1696 2073 2580 3314 3452 3042 2803 2376 1873 1620 1422 1204 1147 1123 1169 1289 1461 1651 1877 2416 2778 3051 2706 2514 2161 1755 1574 1375 1172 1127 1084 1128 1246 1411 1598 1782 2156 2506 2660 2463 2317 1993 1685 1528 1342 1153 1101 1054 1094 1219 1341 1519 1642 1868 2185 2351 2328 2193 1889 1650 1502 1318 1147 1086 1033 1075 1193 1329 1507 1560 1799 2311 2080 2226 2105 1809 1621 1476 1303 1143 1069 1024 1060 1177 1312 1469 1575 1782 1927 2107 2196 2070 1775 1607 1471 1299 1143 1067 1024 1059 1171 1314 1450 1605 1754 1940 2049 2235 2101 1781 1606 1477 1306 1153 1083 1028 1073 1171 1316 11280 1612 1733 1975 2115 2324 2200 1855 1600 1502 1329 1176 1100 1051 1086 1202 1331 1510 1620 1832 2082 2196 2465 2324 1980 1599 1527 1353 1199 1127 1076 1113 1221 1357 1536 1682 1934 2217 2362 2724 2530 2182 1665 1542 1395 1234 1147 1114 1152 1253 1392 1588 1770 2146 2495 2653 3118 2873 2433 1845 1550 1448 1277 1187 1149 1196 1299 1441 1635 1879 2394 2784 3016 3671 3318 2722 2081 1591 1496 1323 1231 1156 1235 1341 1506 1664 2079 2655 3262 3527 4318 3906 3115 2318 1688 1539 1377 1256 1238 1282 1390 1571 1726 2265 3109 3754 4206 5067 4507 3526 2545 1807 1572 1425 1291 1263 1319 1437 1624 1823 2470 3421 4345 4842] + + + [4254 3866 3096 2266 1710 1486 1284 1206 1234 1272 1385 1547 1729 2326 3027 3896 4224 3750 3396 2772 2101 1644 1448 1251 1174 1201 1243 1358 1505 1682 2087 2927 3228 3737 3235 2957 2477 1923 1594 1409 1217 1156 1162 1209 1324 1473 1631 1944 2393 2999 3148 2817 2611 2227 1784 1553 1371 1184 1147 1124 1170 1283 1426 1589 1788 2239 2553 2781 2518 2351 2035 1688 1509 1333 1158 1128 1087 1130 1245 1383 1545 1704 2013 2314 2458 2304 2161 1891 1630 1471 1308 1145 1104 1057 1096 1217 1325 1468 1573 1748 2011 2156 2183 2062 1800 1597 1446 1290 1143 1088 1036 1080 1191 1315 1465 1492 1681 2144 1909 2096 1978 1732 1573 1425 1280 1141 1072 1024 1063 1176 1301 1434 1507 1681 1786 1944 2070 1941 1711 1559 1419 1276 1143 1067 1024 1061 1170 1303 1415 1537 1662 1810 1895 2096 1980 1716 1564 1424 1281 1153 1082 1028 1073 1169 1299 1444 1548 1635 1832 1937 2190 2063 1780 1562 1451 1298 1173 1102 1050 1087 1199 1313 1470 1549 1721 1924 2028 2290 2167 1877 1569 1470 1318 1194 1131 1078 1112 1217 1334 1487 1615 1807 2053 2147 2549 2361 2050 1628 1494 1351 1223 1151 1115 1151 1249 1362 1534 1689 1994 2284 2427 2879 2652 2268 1771 1512 1395 1262 1186 1145 1195 1291 1407 1574 1780 2211 2552 2752 3320 3039 2536 1961 1550 1434 1296 1223 1147 1228 1321 1459 1597 1940 2455 2948 3148 3895 3519 2854 2162 1620 1465 1334 1237 1222 1269 1358 1510 1634 2095 2813 3337 3729 4458 4020 3199 2362 1713 1493 1367 1262 1241 1291 1397 1548 1717 2268 3076 3827 4207] + + + + + + + A_100 + + + [ 100] + + + [2.06242 -0.371307 -0.663126 -0.544726 2.0142 -0.418246 -0.231985 -1.5015 2.7321] + + + [18.6851 19.911 5.6011] + + + [1.2213 1 1 1.9842] + + + + + D50_100 + + + [ 100] + + + [2.15715 -0.811382 -0.352482 -0.40827 2.03502 -0.610777 -0.107697 -0.997128 2.105] + + + [27.4831 35.8149 24.214] + + + [1.7235 1 1 1.4796] + + + + + D65_100 + + + [ 100] + + + [2.41044 -1.18465 -0.231436 -0.331637 1.88932 -0.539832 -0.0998097 -0.787651 1.8939] + + + [23.0711 34.8913 27.0426] + + + [1.93689 1 1 1.2873] + + + + + F11_100 + + + [ 100] + + + [1.93371 -0.741394 -0.174673 -0.437678 2.0616 -0.578537 -0.0965241 -1.07416 2.1677] + + + [17.0109 22.4961 12.1673] + + + [1.53834 1 1 1.5979] + + + + + F2_100 + + + [ 100] + + + [2.04873 -0.864931 -0.17386 -0.516298 2.10785 -0.552634 -0.101268 -0.93087 2.0287] + + + [17.1462 22.1597 14.0667] + + + [1.4659 1 1 1.4979] + + + + + + [ -1] + + + + + [ 80] + + + [ 20] + + + [ 0.7] + + + [ 0.7] + + + [ 0.7] + + + [ 0.9] + + + + + 1080x1280_FPS_15 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 1080x1280_FPS_10 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 1080x1280_FPS_05 + + + + + fast + + + [ 1] + + + [ 1] + + + + + normal + + + [ 2] + + + [ 0.9] + + + + + slow + + + [ 4] + + + [ 0.9] + + + + + + + [ 8] + + + + + + 1080x1280 + + + 1080x1280 + + + [256 256 256 256] + + + + + + + linear + + + [256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4096] + + + [0 256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4095] + + + + + + [ -1] + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + + + 1080x1280 + + + 1080x1280 + + + [ 6] + + + [ 29] + + + [ 6] + + + [ 29] + + + [ 0] + + + [ 0] + + + [0.125 -0.4375 0.4375] + + + [-3.5 4.375 -1.875] + + + + + + + 1080x1280 + + + 1080x1280 + + + [ 1] + + + [1023 1023 906 756 662 547 476 427 391 340 304 278 241 216 197 183 171] + + + [ 4] + + + [ 4] + + + [ 0.15] + + + [ 0] + + + [1 1 1 1] + + + + + + + 1080x1280 + + + 1080x1280 + + + + + ISP_DPCC_MODE + + + 0x0004 + + + + + ISP_DPCC_OUT_MODE + + + 0x0003 + + + + + ISP_DPCC_SET_USE + + + 0x0007 + + + + + ISP_DPCC_METHODS_SET1 + + + 0x1D1D + + + + + ISP_DPCC_METHODS_SET2 + + + 0x0707 + + + + + ISP_DPCC_METHODS_SET3 + + + 0x1F1F + + + + + ISP_DPCC_LINE_THRESH_1 + + + 0x0808 + + + + + ISP_DPCC_LINE_MAD_FAC_1 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_1 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_1 + + + 0x0A0A + + + + + ISP_DPCC_RG_FAC_1 + + + 0x2020 + + + + + ISP_DPCC_LINE_THRESH_2 + + + 0x100C + + + + + ISP_DPCC_LINE_MAD_FAC_2 + + + 0x1810 + + + + + ISP_DPCC_PG_FAC_2 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_2 + + + 0x0808 + + + + + ISP_DPCC_RG_FAC_2 + + + 0x0808 + + + + + ISP_DPCC_LINE_THRESH_3 + + + 0x2020 + + + + + ISP_DPCC_LINE_MAD_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_3 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_3 + + + 0x0806 + + + + + ISP_DPCC_RG_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_RO_LIMITS + + + 0x0A0A + + + + + ISP_DPCC_RND_OFFS + + + 0x0FFF + + + + + + + + + + on + + + +
diff --git a/drivers/SC132GS/SC132GS_mipi2lane_1080x1280_init.txt b/drivers/SC132GS/SC132GS_mipi2lane_1080x1280_init.txt new file mode 100644 index 0000000..8307210 --- /dev/null +++ b/drivers/SC132GS/SC132GS_mipi2lane_1080x1280_init.txt @@ -0,0 +1,101 @@ +0x0103 0x01 +0x0100 0x00 +0x36e9 0x80 +0x36f9 0x80 +0x3018 0x32 +0x301a 0xb4 +0x301f 0x27 +0x3032 0x60 +0x3038 0x44 +0x3207 0x17 +0x320c 0x02 +0x320d 0xee +0x3250 0xcc +0x3251 0x02 +0x3252 0x05 +0x3253 0x41 +0x3254 0x05 +0x3255 0x3b +0x3306 0x78 +0x330a 0x00 +0x330b 0xc8 +0x330f 0x24 +0x3314 0x80 +0x3315 0x40 +0x3317 0xf0 +0x331f 0x12 +0x3364 0x00 +0x3385 0x41 +0x3387 0x41 +0x3389 0x09 +0x33ab 0x00 +0x33ac 0x00 +0x33b1 0x03 +0x33b2 0x12 +0x33f8 0x02 +0x33fa 0x01 +0x3409 0x08 +0x34f0 0xc0 +0x34f1 0x20 +0x34f2 0x03 +0x3622 0xf5 +0x3630 0x5c +0x3631 0x80 +0x3632 0xc8 +0x3633 0x32 +0x3638 0x2a +0x3639 0x07 +0x363b 0x48 +0x363c 0x83 +0x363d 0x10 +0x36ea 0x65 +0x36eb 0x05 +0x36ec 0x03 +0x36ed 0x04 +0x36fa 0x65 +0x36fb 0x09 +0x36fc 0x00 +0x36fd 0x07 +0x3900 0x11 +0x3901 0x05 +0x3902 0xc5 +0x3904 0x04 +0x3908 0x91 +0x391e 0x00 +0x3e01 0x03 +0x3e02 0xe0 +0x3e09 0x20 +0x3e0e 0xd2 +0x3e14 0xb0 +0x3e1e 0x7c +0x3e26 0x20 +0x4418 0x38 +0x4503 0x10 +0x4837 0x1a +0x5000 0x0e +0x540c 0x51 +0x550f 0x38 +0x5780 0x67 +0x5784 0x10 +0x5785 0x06 +0x5787 0x02 +0x5788 0x00 +0x5789 0x00 +0x578a 0x02 +0x578b 0x00 +0x578c 0x00 +0x5790 0x00 +0x5791 0x00 +0x5792 0x00 +0x5793 0x00 +0x5794 0x00 +0x5795 0x00 +0x5799 0x04 +0x36e9 0x31 +0x36f9 0x31 +0x33fa 0x02 +0x3317 0x14 +0x3e08 0x3f +0x3e09 0x3f +0x320e 0x0a +0x320f 0x20 diff --git a/drivers/SC132GS/SC132GS_mipi2lane_1080x1280_master_init.txt b/drivers/SC132GS/SC132GS_mipi2lane_1080x1280_master_init.txt new file mode 100644 index 0000000..a5e7034 --- /dev/null +++ b/drivers/SC132GS/SC132GS_mipi2lane_1080x1280_master_init.txt @@ -0,0 +1,105 @@ +0x0103 0x01 +0x0100 0x00 +0x36e9 0x80 +0x36f9 0x80 +0x3018 0x32 +0x301a 0xb4 +0x301f 0x27 +0x3032 0x60 +0x3038 0x44 +0x3207 0x17 +0x320c 0x02 +0x320d 0xee +0x3250 0xcc +0x3251 0x02 +0x3252 0x05 +0x3253 0x41 +0x3254 0x05 +0x3255 0x3b +0x3306 0x78 +0x330a 0x00 +0x330b 0xc8 +0x330f 0x24 +0x3314 0x80 +0x3315 0x40 +0x3317 0xf0 +0x331f 0x12 +0x3364 0x00 +0x3385 0x41 +0x3387 0x41 +0x3389 0x09 +0x33ab 0x00 +0x33ac 0x00 +0x33b1 0x03 +0x33b2 0x12 +0x33f8 0x02 +0x33fa 0x01 +0x3409 0x08 +0x34f0 0xc0 +0x34f1 0x20 +0x34f2 0x03 +0x3622 0xf5 +0x3630 0x5c +0x3631 0x80 +0x3632 0xc8 +0x3633 0x32 +0x3638 0x2a +0x3639 0x07 +0x363b 0x48 +0x363c 0x83 +0x363d 0x10 +0x36ea 0x65 +0x36eb 0x05 +0x36ec 0x03 +0x36ed 0x04 +0x36fa 0x65 +0x36fb 0x09 +0x36fc 0x00 +0x36fd 0x07 +0x3900 0x11 +0x3901 0x05 +0x3902 0xc5 +0x3904 0x04 +0x3908 0x91 +0x391e 0x00 +0x3e01 0x03 +0x3e02 0xe0 +0x3e09 0x20 +0x3e0e 0xd2 +0x3e14 0xb0 +0x3e1e 0x7c +0x3e26 0x20 +0x4418 0x38 +0x4503 0x10 +0x4837 0x1a +0x5000 0x0e +0x540c 0x51 +0x550f 0x38 +0x5780 0x67 +0x5784 0x10 +0x5785 0x06 +0x5787 0x02 +0x5788 0x00 +0x5789 0x00 +0x578a 0x02 +0x578b 0x00 +0x578c 0x00 +0x5790 0x00 +0x5791 0x00 +0x5792 0x00 +0x5793 0x00 +0x5794 0x00 +0x5795 0x00 +0x5799 0x04 +0x36e9 0x31 +0x36f9 0x31 +0x33fa 0x02 +0x3317 0x14 +0x3e08 0x3f +0x3e09 0x3f +0x320e 0x0a +0x320f 0x20 +0x300a 0x64 +0x3032 0xa0 +0x3217 0x0a +0x3218 0x1b diff --git a/drivers/SC132GS/SC132GS_mipi2lane_1080x1280_slave_init.txt b/drivers/SC132GS/SC132GS_mipi2lane_1080x1280_slave_init.txt new file mode 100644 index 0000000..6deabd8 --- /dev/null +++ b/drivers/SC132GS/SC132GS_mipi2lane_1080x1280_slave_init.txt @@ -0,0 +1,112 @@ +0x0103 0x01 +0x0100 0x00 +0x36e9 0x80 +0x36f9 0x80 +0x3018 0x32 +0x301a 0xb4 +0x301f 0x27 +0x3032 0x60 +0x3038 0x44 +0x3207 0x17 +0x320c 0x02 +0x320d 0xee +0x3250 0xcc +0x3251 0x02 +0x3252 0x05 +0x3253 0x41 +0x3254 0x05 +0x3255 0x3b +0x3306 0x78 +0x330a 0x00 +0x330b 0xc8 +0x330f 0x24 +0x3314 0x80 +0x3315 0x40 +0x3317 0xf0 +0x331f 0x12 +0x3364 0x00 +0x3385 0x41 +0x3387 0x41 +0x3389 0x09 +0x33ab 0x00 +0x33ac 0x00 +0x33b1 0x03 +0x33b2 0x12 +0x33f8 0x02 +0x33fa 0x01 +0x3409 0x08 +0x34f0 0xc0 +0x34f1 0x20 +0x34f2 0x03 +0x3622 0xf5 +0x3630 0x5c +0x3631 0x80 +0x3632 0xc8 +0x3633 0x32 +0x3638 0x2a +0x3639 0x07 +0x363b 0x48 +0x363c 0x83 +0x363d 0x10 +0x36ea 0x65 +0x36eb 0x05 +0x36ec 0x03 +0x36ed 0x04 +0x36fa 0x65 +0x36fb 0x09 +0x36fc 0x00 +0x36fd 0x07 +0x3900 0x11 +0x3901 0x05 +0x3902 0xc5 +0x3904 0x04 +0x3908 0x91 +0x391e 0x00 +0x3e01 0x03 +0x3e02 0xe0 +0x3e09 0x20 +0x3e0e 0xd2 +0x3e14 0xb0 +0x3e1e 0x7c +0x3e26 0x20 +0x4418 0x38 +0x4503 0x10 +0x4837 0x1a +0x5000 0x0e +0x540c 0x51 +0x550f 0x38 +0x5780 0x67 +0x5784 0x10 +0x5785 0x06 +0x5787 0x02 +0x5788 0x00 +0x5789 0x00 +0x578a 0x02 +0x578b 0x00 +0x578c 0x00 +0x5790 0x00 +0x5791 0x00 +0x5792 0x00 +0x5793 0x00 +0x5794 0x00 +0x5795 0x00 +0x5799 0x04 +0x36e9 0x31 +0x36f9 0x31 +0x33fa 0x02 +0x3317 0x14 +0x3e08 0x3f +0x3e09 0x3f +0x320e 0x0a +0x320f 0x20 +0x300a 0x62 +0x3222 0x02 +0x3223 0x44 +0x3226 0x08 +0x3227 0x08 +0x3228 0x0a +0x3229 0x18 +0x3217 0x00 +0x3218 0x00 +0x322b 0x0b +0x3231 0x28 diff --git a/drivers/SC132GS/SC132GS_mipi2lane_960x1280_init.txt b/drivers/SC132GS/SC132GS_mipi2lane_960x1280_init.txt new file mode 100644 index 0000000..79608f2 --- /dev/null +++ b/drivers/SC132GS/SC132GS_mipi2lane_960x1280_init.txt @@ -0,0 +1,120 @@ +0x0103 0x01 +0x0100 0x00 +0x36e9 0x80 +0x36f9 0x80 +0x3018 0x32 +0x3019 0x0c +0x301a 0xb4 +0x301f 0x91 +0x3032 0x60 +0x3038 0x44 +0x3207 0x17 +0x320c 0x02 +0x320d 0xee +0x320e 0x06 +0x320f 0x40 +0x3250 0xcc +0x3251 0x02 +0x3252 0x06 +0x3253 0x3b +0x3254 0x05 +0x3255 0x3b +0x3306 0x78 +0x330a 0x00 +0x330b 0xc8 +0x330f 0x24 +0x3314 0x80 +0x3315 0x40 +0x3317 0xf0 +0x331f 0x12 +0x3364 0x00 +0x3385 0x41 +0x3387 0x41 +0x3389 0x09 +0x33ab 0x00 +0x33ac 0x00 +0x33b1 0x03 +0x33b2 0x12 +0x33f8 0x02 +0x33fa 0x01 +0x3409 0x08 +0x34f0 0xc0 +0x34f1 0x20 +0x34f2 0x03 +0x3622 0xf5 +0x3630 0x5c +0x3631 0x80 +0x3632 0xc8 +0x3633 0x32 +0x3638 0x2a +0x3639 0x07 +0x363b 0x48 +0x363c 0x83 +0x363d 0x10 +0x36ea 0x34 +0x36eb 0x14 +0x36ec 0x03 +0x36ed 0x24 +0x36fa 0x37 +0x36fb 0x15 +0x36fc 0x01 +0x36fd 0x14 +0x3900 0x11 +0x3901 0x05 +0x3902 0xc5 +0x3904 0x04 +0x3908 0x91 +0x391e 0x00 +0x3e01 0x63 +0x3e02 0x80 +0x3e09 0x20 +0x3e0e 0xd2 +0x3e14 0xb0 +0x3e1e 0x7c +0x3e26 0x20 +0x4418 0x38 +0x4503 0x10 +0x4800 0x24 +0x4837 0x2c +0x5000 0x0e +0x540c 0x51 +0x550f 0x38 +0x5780 0x67 +0x5784 0x10 +0x5785 0x06 +0x5787 0x02 +0x5788 0x00 +0x5789 0x00 +0x578a 0x02 +0x578b 0x00 +0x578c 0x00 +0x5790 0x00 +0x5791 0x00 +0x5792 0x00 +0x5793 0x00 +0x5794 0x00 +0x5795 0x00 +0x5799 0x04 +0x3200 0x00 +0x3201 0x42 +0x3202 0x00 +0x3203 0x02 +0x3204 0x04 +0x3205 0x15 +0x3206 0x05 +0x3207 0x15 +0x3208 0x03 +0x3209 0xc0 +0x320a 0x05 +0x320b 0x00 +0x3210 0x00 +0x3211 0x0a +0x3212 0x00 +0x3213 0x0a +0x36e9 0x54 +0x36f9 0x54 +0x0100 0x01 +0x33fa 0x01 +0x3317 0xf0 +0x33fa 0x02 +0x3317 0x14 diff --git a/drivers/SC132GS/SC132GS_mipi2lane_960x1280_master_init.txt b/drivers/SC132GS/SC132GS_mipi2lane_960x1280_master_init.txt new file mode 100644 index 0000000..82e42b7 --- /dev/null +++ b/drivers/SC132GS/SC132GS_mipi2lane_960x1280_master_init.txt @@ -0,0 +1,125 @@ +0x0103 0x01 +0x0100 0x00 +0x36e9 0x80 +0x36f9 0x80 +0x3018 0x32 +0x3019 0x0c +0x301a 0xb4 +0x301f 0x91 +0x3032 0x60 +0x3038 0x44 +0x3207 0x17 +0x320c 0x02 +0x320d 0xee +0x320e 0x06 +0x320f 0x40 +0x3250 0xcc +0x3251 0x02 +0x3252 0x06 +0x3253 0x3b +0x3254 0x05 +0x3255 0x3b +0x3306 0x78 +0x330a 0x00 +0x330b 0xc8 +0x330f 0x24 +0x3314 0x80 +0x3315 0x40 +0x3317 0xf0 +0x331f 0x12 +0x3364 0x00 +0x3385 0x41 +0x3387 0x41 +0x3389 0x09 +0x33ab 0x00 +0x33ac 0x00 +0x33b1 0x03 +0x33b2 0x12 +0x33f8 0x02 +0x33fa 0x01 +0x3409 0x08 +0x34f0 0xc0 +0x34f1 0x20 +0x34f2 0x03 +0x3622 0xf5 +0x3630 0x5c +0x3631 0x80 +0x3632 0xc8 +0x3633 0x32 +0x3638 0x2a +0x3639 0x07 +0x363b 0x48 +0x363c 0x83 +0x363d 0x10 +0x36ea 0x34 +0x36eb 0x14 +0x36ec 0x03 +0x36ed 0x24 +0x36fa 0x37 +0x36fb 0x15 +0x36fc 0x01 +0x36fd 0x14 +0x3900 0x11 +0x3901 0x05 +0x3902 0xc5 +0x3904 0x04 +0x3908 0x91 +0x391e 0x00 +0x3e01 0x63 +0x3e02 0x80 +0x3e09 0x20 +0x3e0e 0xd2 +0x3e14 0xb0 +0x3e1e 0x7c +0x3e26 0x20 +0x4418 0x38 +0x4503 0x10 +0x4800 0x24 +0x4837 0x2c +0x5000 0x0e +0x540c 0x51 +0x550f 0x38 +0x5780 0x67 +0x5784 0x10 +0x5785 0x06 +0x5787 0x02 +0x5788 0x00 +0x5789 0x00 +0x578a 0x02 +0x578b 0x00 +0x578c 0x00 +0x5790 0x00 +0x5791 0x00 +0x5792 0x00 +0x5793 0x00 +0x5794 0x00 +0x5795 0x00 +0x5799 0x04 +0x3200 0x00 +0x3201 0x42 +0x3202 0x00 +0x3203 0x02 +0x3204 0x04 +0x3205 0x15 +0x3206 0x05 +0x3207 0x15 +0x3208 0x03 +0x3209 0xc0 +0x320a 0x05 +0x320b 0x00 +0x3210 0x00 +0x3211 0x0a +0x3212 0x00 +0x3213 0x0a +0x36e9 0x54 +0x36f9 0x54 +0x0100 0x01 +0x33fa 0x01 +0x3317 0xf0 +0x33fa 0x02 +0x3317 0x14 +0x300a 0x64 +0x3032 0xa0 +0x3217 0x0a +0x3218 0x1a + diff --git a/drivers/SC132GS/SC132GS_mipi2lane_960x1280_slave_init.txt b/drivers/SC132GS/SC132GS_mipi2lane_960x1280_slave_init.txt new file mode 100644 index 0000000..2d81cd6 --- /dev/null +++ b/drivers/SC132GS/SC132GS_mipi2lane_960x1280_slave_init.txt @@ -0,0 +1,131 @@ +0x0103 0x01 +0x0100 0x00 +0x36e9 0x80 +0x36f9 0x80 +0x3018 0x32 +0x3019 0x0c +0x301a 0xb4 +0x301f 0x91 +0x3032 0x60 +0x3038 0x44 +0x3207 0x17 +0x320c 0x02 +0x320d 0xee +0x320e 0x06 +0x320f 0x40 +0x3250 0xcc +0x3251 0x02 +0x3252 0x06 +0x3253 0x3b +0x3254 0x05 +0x3255 0x3b +0x3306 0x78 +0x330a 0x00 +0x330b 0xc8 +0x330f 0x24 +0x3314 0x80 +0x3315 0x40 +0x3317 0xf0 +0x331f 0x12 +0x3364 0x00 +0x3385 0x41 +0x3387 0x41 +0x3389 0x09 +0x33ab 0x00 +0x33ac 0x00 +0x33b1 0x03 +0x33b2 0x12 +0x33f8 0x02 +0x33fa 0x01 +0x3409 0x08 +0x34f0 0xc0 +0x34f1 0x20 +0x34f2 0x03 +0x3622 0xf5 +0x3630 0x5c +0x3631 0x80 +0x3632 0xc8 +0x3633 0x32 +0x3638 0x2a +0x3639 0x07 +0x363b 0x48 +0x363c 0x83 +0x363d 0x10 +0x36ea 0x34 +0x36eb 0x14 +0x36ec 0x03 +0x36ed 0x24 +0x36fa 0x37 +0x36fb 0x15 +0x36fc 0x01 +0x36fd 0x14 +0x3900 0x11 +0x3901 0x05 +0x3902 0xc5 +0x3904 0x04 +0x3908 0x91 +0x391e 0x00 +0x3e01 0x63 +0x3e02 0x80 +0x3e09 0x20 +0x3e0e 0xd2 +0x3e14 0xb0 +0x3e1e 0x7c +0x3e26 0x20 +0x4418 0x38 +0x4503 0x10 +0x4800 0x24 +0x4837 0x2c +0x5000 0x0e +0x540c 0x51 +0x550f 0x38 +0x5780 0x67 +0x5784 0x10 +0x5785 0x06 +0x5787 0x02 +0x5788 0x00 +0x5789 0x00 +0x578a 0x02 +0x578b 0x00 +0x578c 0x00 +0x5790 0x00 +0x5791 0x00 +0x5792 0x00 +0x5793 0x00 +0x5794 0x00 +0x5795 0x00 +0x5799 0x04 +0x3200 0x00 +0x3201 0x42 +0x3202 0x00 +0x3203 0x02 +0x3204 0x04 +0x3205 0x15 +0x3206 0x05 +0x3207 0x15 +0x3208 0x03 +0x3209 0xc0 +0x320a 0x05 +0x320b 0x00 +0x3210 0x00 +0x3211 0x0a +0x3212 0x00 +0x3213 0x0a +0x36e9 0x54 +0x36f9 0x54 +0x0100 0x01 +0x33fa 0x01 +0x3317 0xf0 +0x33fa 0x02 +0x3317 0x14 +0x300a 0x62 +0x3222 0x02 +0x3223 0x4c +0x3226 0x06 +0x3227 0x06 +0x3228 0x0a +0x3229 0x1a +0x3217 0x00 +0x3218 0x00 +0x322b 0x0b +0x3231 0x28 diff --git a/drivers/SC132GS/SC132GS_priv.h b/drivers/SC132GS/SC132GS_priv.h new file mode 100644 index 0000000..e7bde94 --- /dev/null +++ b/drivers/SC132GS/SC132GS_priv.h @@ -0,0 +1,241 @@ +/******************************************************************************\ +|* Copyright (c) 2020 by VeriSilicon Holdings Co., Ltd. ("VeriSilicon") *| +|* All Rights Reserved. *| +|* *| +|* The material in this file is confidential and contains trade secrets of *| +|* of VeriSilicon. This is proprietary information owned or licensed by *| +|* VeriSilicon. No part of this work may be disclosed, reproduced, copied, *| +|* transmitted, or used in any way for any purpose, without the express *| +|* written permission of VeriSilicon. *| +|* *| +\******************************************************************************/ +/** + * @file SC132GS_priv.h + * + * @brief Interface description for image sensor specific implementation (iss). + * + *****************************************************************************/ +/** + * @page module_name_page Module Name + * Describe here what this module does. + * + * For a detailed list of functions and implementation detail refer to: + * - @ref module_name + * + * @defgroup sc132gs_priv + * @{ + * + */ +#ifndef __SC132GS_PRIV_H__ +#define __SC132GS_PRIV_H__ + +#include +#include +#include +#include +#include "vvsensor.h" + + + +#ifdef __cplusplus +extern "C" +{ +#endif + + + +/***************************************************************************** + * SC control registers + *****************************************************************************/ +#define SC132GS_PIDH (0x300A) //R - Product ID High Byte MSBs +#define SC132GS_PIDL (0x300B) //R - Product ID Low Byte LSBs + +/***************************************************************************** + * Default values + *****************************************************************************/ + + // Make sure that these static settings are reflecting the capabilities defined +// in IsiGetCapsIss (further dynamic setup may alter these default settings but +// often does not if there is no choice available). + +/***************************************************************************** + * SC control registers + *****************************************************************************/ +#define SC132GS_PIDH_DEFAULT (0x27) //read only +#define SC132GS_PIDL_DEFAULT (0x70) //read only + +typedef struct SC132GS_Context_s +{ + IsiSensorContext_t IsiCtx; /**< common context of ISI and ISI driver layer; @note: MUST BE FIRST IN DRIVER CONTEXT */ + + struct vvcam_mode_info SensorMode; + uint32_t KernelDriverFlag; + char SensorRegCfgFile[128]; + + uint32_t HdrMode; + uint32_t Resolution; + uint32_t MaxFps; + uint32_t MinFps; + uint32_t CurrFps; + //// modify below here //// + + IsiSensorConfig_t Config; /**< sensor configuration */ + bool_t Configured; /**< flags that config was applied to sensor */ + bool_t Streaming; /**< flags that csensor is streaming data */ + bool_t TestPattern; /**< flags that sensor is streaming test-pattern */ + + bool_t isAfpsRun; /**< if true, just do anything required for Afps parameter calculation, but DON'T access SensorHW! */ + + float one_line_exp_time; + uint16_t MaxIntegrationLine; + uint16_t MinIntegrationLine; + uint32_t gain_accuracy; + + uint16_t FrameLengthLines; /**< frame line length */ + uint16_t CurFrameLengthLines; + + float AecMinGain; + float AecMaxGain; + float AecMinIntegrationTime; + float AecMaxIntegrationTime; + + float AecIntegrationTimeIncrement; /**< _smallest_ increment the sensor/driver can handle (e.g. used for sliders in the application) */ + float AecGainIncrement; /**< _smallest_ increment the sensor/driver can handle (e.g. used for sliders in the application) */ + + float AecCurIntegrationTime; + float AecCurVSIntegrationTime; + float AecCurLongIntegrationTime; + float AecCurGain; + float AecCurVSGain; + float AecCurLongGain; + + uint32_t LastExpLine; + uint32_t LastVsExpLine; + uint32_t LastLongExpLine; + + uint32_t LastGain; + uint32_t LastVsGain; + uint32_t LastLongGain; + + bool GroupHold; + uint32_t OldGain; + uint32_t OldVsGain; + uint32_t OldIntegrationTime; + uint32_t OldVsIntegrationTime; + uint32_t OldGainHcg; + uint32_t OldAGainHcg; + uint32_t OldGainLcg; + uint32_t OldAGainLcg; + int subdev; + uint8_t pattern; + + float CurHdrRatio; +} SC132GS_Context_t; + +static RESULT SC132GS_IsiCreateSensorIss(IsiSensorInstanceConfig_t * + pConfig); + +static RESULT SC132GS_IsiInitSensorIss(IsiSensorHandle_t handle); + +static RESULT SC132GS_IsiReleaseSensorIss(IsiSensorHandle_t handle); + +static RESULT SC132GS_IsiGetCapsIss(IsiSensorHandle_t handle, + IsiSensorCaps_t * pIsiSensorCaps); + +static RESULT SC132GS_IsiSetupSensorIss(IsiSensorHandle_t handle, + const IsiSensorConfig_t * + pConfig); + +static RESULT SC132GS_IsiSensorSetStreamingIss(IsiSensorHandle_t handle, + bool_t on); + +static RESULT SC132GS_IsiSensorSetPowerIss(IsiSensorHandle_t handle, + bool_t on); + +static RESULT SC132GS_IsiGetSensorRevisionIss(IsiSensorHandle_t handle, + uint32_t * p_value); + +static RESULT SC132GS_IsiSetBayerPattern(IsiSensorHandle_t handle, + uint8_t pattern); + +static RESULT SC132GS_IsiGetGainLimitsIss(IsiSensorHandle_t handle, + float *pMinGain, + float *pMaxGain); + +static RESULT SC132GS_IsiGetIntegrationTimeLimitsIss(IsiSensorHandle_t + handle, + float + *pMinIntegrationTime, + float + *pMaxIntegrationTime); + +static RESULT SC132GS_IsiExposureControlIss(IsiSensorHandle_t handle, + float NewGain, + float NewIntegrationTime, + uint8_t * + pNumberOfFramesToSkip, + float *pSetGain, + float *pSetIntegrationTime, + float *hdr_ratio); + +static RESULT SC132GS_IsiGetGainIss(IsiSensorHandle_t handle, + float *pSetGain); + +static RESULT SC132GS_IsiGetVSGainIss(IsiSensorHandle_t handle, + float *pSetGain); + +static RESULT SC132GS_IsiGetGainIncrementIss(IsiSensorHandle_t handle, + float *pIncr); + +static RESULT SC132GS_IsiSetGainIss(IsiSensorHandle_t handle, + float NewGain, float *pSetGain, + float *hdr_ratio); + +static RESULT SC132GS_IsiSetVSGainIss(IsiSensorHandle_t handle, + float NewIntegrationTime, + float NewGain, float *pSetGain, + float *hdr_ratio); + +static RESULT SC132GS_IsiGetIntegrationTimeIss(IsiSensorHandle_t handle, + float + *pSetIntegrationTime); + +static RESULT SC132GS_IsiGetVSIntegrationTimeIss(IsiSensorHandle_t + handle, + float + *pSetIntegrationTime); + +static RESULT SC132GS_IsiGetIntegrationTimeIncrementIss(IsiSensorHandle_t handle, + float *pIncr); + +static RESULT SC132GS_IsiSetIntegrationTimeIss(IsiSensorHandle_t handle, + float NewIntegrationTime, + float + *pSetIntegrationTime, + uint8_t * + pNumberOfFramesToSkip, + float *hdr_ratio); + +static RESULT SC132GS_IsiSetVSIntegrationTimeIss(IsiSensorHandle_t + handle, + float + NewIntegrationTime, + float + *pSetIntegrationTime, + uint8_t * + pNumberOfFramesToSkip, + float *hdr_ratio); + +RESULT SC132GS_IsiGetResolutionIss(IsiSensorHandle_t handle, uint16_t *pwidth, uint16_t *pheight); + +static RESULT SC132GS_IsiResetSensorIss(IsiSensorHandle_t handle); + + +#ifdef __cplusplus +} +#endif + +/* @} sc132gspriv */ + +#endif /* __SC132GSPRIV_H__ */ + diff --git a/drivers/SC132GS/sc132gs.h b/drivers/SC132GS/sc132gs.h new file mode 100644 index 0000000..7091be1 --- /dev/null +++ b/drivers/SC132GS/sc132gs.h @@ -0,0 +1,1377 @@ +/* + * Support for OmniVision SC132GS 5M camera sensor. + * + * Copyright (c) 2013 Intel Corporation. All Rights Reserved. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License version + * 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + * + */ + +#ifndef __SC132GS_H__ +#define __SC132GS_H__ + +#define SC132GS_NAME "sc132gs" + +#define SC132GS_POWER_UP_RETRY_NUM 5 + +/* Defines for register writes and register array processing */ +#define I2C_MSG_LENGTH 0x2 +#define I2C_RETRY_COUNT 5 + +#define SC132GS_FOCAL_LENGTH_NUM 334 /*3.34mm*/ +#define SC132GS_FOCAL_LENGTH_DEM 100 +#define SC132GS_F_NUMBER_DEFAULT_NUM 24 +#define SC132GS_F_NUMBER_DEM 10 + +#define MAX_FMTS 1 + +/* sensor_mode_data read_mode adaptation */ +#define SC132GS_READ_MODE_BINNING_ON 0x0400 +#define SC132GS_READ_MODE_BINNING_OFF 0x00 +#define SC132GS_INTEGRATION_TIME_MARGIN 8 + +#define SC132GS_MAX_EXPOSURE_VALUE 0xFFF1 +#define SC132GS_MAX_GAIN_VALUE 0xFF + +/* + * focal length bits definition: + * bits 31-16: numerator, bits 15-0: denominator + */ +#define SC132GS_FOCAL_LENGTH_DEFAULT 0x1B70064 + +/* + * current f-number bits definition: + * bits 31-16: numerator, bits 15-0: denominator + */ +#define SC132GS_F_NUMBER_DEFAULT 0x18000a + +/* + * f-number range bits definition: + * bits 31-24: max f-number numerator + * bits 23-16: max f-number denominator + * bits 15-8: min f-number numerator + * bits 7-0: min f-number denominator + */ +#define SC132GS_F_NUMBER_RANGE 0x180a180a +#define SC132GS_ID 0x5690 + +#define SC132GS_FINE_INTG_TIME_MIN 0 +#define SC132GS_FINE_INTG_TIME_MAX_MARGIN 0 +#define SC132GS_COARSE_INTG_TIME_MIN 1 +#define SC132GS_COARSE_INTG_TIME_MAX_MARGIN 6 + +#define SC132GS_BIN_FACTOR_MAX 4 +/* + * SC132GS System control registers + */ +#define SC132GS_SW_SLEEP 0x0100 +#define SC132GS_SW_RESET 0x0103 +#define SC132GS_SW_STREAM 0x0100 + +#define SC132GS_SC_CMMN_CHIP_ID_H 0x300A +#define SC132GS_SC_CMMN_CHIP_ID_L 0x300B +#define SC132GS_SC_CMMN_SCCB_ID 0x300C +#define SC132GS_SC_CMMN_SUB_ID 0x302A /* process, version*/ +/*Bit[7:4] Group control, Bit[3:0] Group ID*/ +#define SC132GS_GROUP_ACCESS 0x3208 +/* +*Bit[3:0] Bit[19:16] of exposure, +*remaining 16 bits lies in Reg0x3501&Reg0x3502 +*/ +#define SC132GS_EXPOSURE_H 0x3500 +#define SC132GS_EXPOSURE_M 0x3501 +#define SC132GS_EXPOSURE_L 0x3502 +/*Bit[1:0] means Bit[9:8] of gain*/ +#define SC132GS_AGC_H 0x350A +#define SC132GS_AGC_L 0x350B /*Bit[7:0] of gain*/ + +#define SC132GS_HORIZONTAL_START_H 0x3800 /*Bit[11:8]*/ +#define SC132GS_HORIZONTAL_START_L 0x3801 /*Bit[7:0]*/ +#define SC132GS_VERTICAL_START_H 0x3802 /*Bit[11:8]*/ +#define SC132GS_VERTICAL_START_L 0x3803 /*Bit[7:0]*/ +#define SC132GS_HORIZONTAL_END_H 0x3804 /*Bit[11:8]*/ +#define SC132GS_HORIZONTAL_END_L 0x3805 /*Bit[7:0]*/ +#define SC132GS_VERTICAL_END_H 0x3806 /*Bit[11:8]*/ +#define SC132GS_VERTICAL_END_L 0x3807 /*Bit[7:0]*/ +#define SC132GS_HORIZONTAL_OUTPUT_SIZE_H 0x3808 /*Bit[3:0]*/ +#define SC132GS_HORIZONTAL_OUTPUT_SIZE_L 0x3809 /*Bit[7:0]*/ +#define SC132GS_VERTICAL_OUTPUT_SIZE_H 0x380a /*Bit[3:0]*/ +#define SC132GS_VERTICAL_OUTPUT_SIZE_L 0x380b /*Bit[7:0]*/ +/*High 8-bit, and low 8-bit HTS address is 0x380d*/ +#define SC132GS_TIMING_HTS_H 0x380C +/*High 8-bit, and low 8-bit HTS address is 0x380d*/ +#define SC132GS_TIMING_HTS_L 0x380D +/*High 8-bit, and low 8-bit HTS address is 0x380f*/ +#define SC132GS_TIMING_VTS_H 0x380e +/*High 8-bit, and low 8-bit HTS address is 0x380f*/ +#define SC132GS_TIMING_VTS_L 0x380f + +#define SC132GS_MWB_RED_GAIN_H 0x3400 +#define SC132GS_MWB_GREEN_GAIN_H 0x3402 +#define SC132GS_MWB_BLUE_GAIN_H 0x3404 +#define SC132GS_MWB_GAIN_MAX 0x0fff + +#define SC132GS_START_STREAMING 0x01 +#define SC132GS_STOP_STREAMING 0x00 + +#define VCM_ADDR 0x0c +#define VCM_CODE_MSB 0x04 + +#define SC132GS_INVALID_CONFIG 0xffffffff + +#define SC132GS_VCM_SLEW_STEP 0x30F0 +#define SC132GS_VCM_SLEW_STEP_MAX 0x7 +#define SC132GS_VCM_SLEW_STEP_MASK 0x7 +#define SC132GS_VCM_CODE 0x30F2 +#define SC132GS_VCM_SLEW_TIME 0x30F4 +#define SC132GS_VCM_SLEW_TIME_MAX 0xffff +#define SC132GS_VCM_ENABLE 0x8000 + +#define SC132GS_VCM_MAX_FOCUS_NEG -1023 +#define SC132GS_VCM_MAX_FOCUS_POS 1023 + +#define DLC_ENABLE 1 +#define DLC_DISABLE 0 +#define VCM_PROTECTION_OFF 0xeca3 +#define VCM_PROTECTION_ON 0xdc51 +#define VCM_DEFAULT_S 0x0 +#define vcm_step_s(a) (u8)(a & 0xf) +#define vcm_step_mclk(a) (u8)((a >> 4) & 0x3) +#define vcm_dlc_mclk(dlc, mclk) (u16)((dlc << 3) | mclk | 0xa104) +#define vcm_tsrc(tsrc) (u16)(tsrc << 3 | 0xf200) +#define vcm_val(data, s) (u16)(data << 4 | s) +#define DIRECT_VCM vcm_dlc_mclk(0, 0) + +/* Defines for OTP Data Registers */ +#define SC132GS_FRAME_OFF_NUM 0x4202 +#define SC132GS_OTP_BYTE_MAX 32 //change to 32 as needed by otpdata +#define SC132GS_OTP_SHORT_MAX 16 +#define SC132GS_OTP_START_ADDR 0x3D00 +#define SC132GS_OTP_END_ADDR 0x3D0F +#define SC132GS_OTP_DATA_SIZE 320 +#define SC132GS_OTP_PROGRAM_REG 0x3D80 +#define SC132GS_OTP_READ_REG 0x3D81 // 1:Enable 0:disable +#define SC132GS_OTP_BANK_REG 0x3D84 //otp bank and mode +#define SC132GS_OTP_READY_REG_DONE 1 +#define SC132GS_OTP_BANK_MAX 28 +#define SC132GS_OTP_BANK_SIZE 16 //16 bytes per bank +#define SC132GS_OTP_READ_ONETIME 16 +#define SC132GS_OTP_MODE_READ 1 + +typedef enum SC132GS_EXPOSURE_SETTING_e { + SC132GS_ANALOG_GAIN = 1 << 0, + SC132GS_INTEGRATION_TIME = 1 << 1, + SC132GS_DIGITAL_GAIN = 1 << 2, +}SC132GS_EXPOSURE_SETTING_t; + +#if 0 +struct regval_list { + u16 reg_num; + u8 value; +}; + +struct sc132gs_resolution { + u8 *desc; + const struct sc132gs_reg *regs; + int res; + int width; + int height; + int fps; + int pix_clk_freq; + u16 pixels_per_line; + u16 lines_per_frame; + u8 bin_factor_x; + u8 bin_factor_y; + u8 bin_mode; + bool used; +}; + +struct sc132gs_format { + u8 *desc; + u32 pixelformat; + struct sc132gs_reg *regs; +}; + +enum vcm_type { + VCM_UNKNOWN, + VCM_AD5823, + VCM_DW9714, +}; + +/* + * sc132gs device structure. + */ +struct sc132gs_device { + struct v4l2_subdev sd; + struct media_pad pad; + struct v4l2_mbus_framefmt format; + struct mutex input_lock; + struct v4l2_ctrl_handler ctrl_handler; + + struct camera_sensor_platform_data *platform_data; + struct timespec timestamp_t_focus_abs; + int vt_pix_clk_freq_mhz; + int fmt_idx; + int run_mode; + int otp_size; + u8 *otp_data; + u32 focus; + s16 number_of_steps; + u8 res; + u8 type; + bool vcm_update; + enum vcm_type vcm; +}; + +enum sc132gs_tok_type { + SC132GS_8BIT = 0x0001, + SC132GS_16BIT = 0x0002, + SC132GS_32BIT = 0x0004, + SC132GS_TOK_TERM = 0xf000, /* terminating token for reg list */ + SC132GS_TOK_DELAY = 0xfe00, /* delay token for reg list */ + SC132GS_TOK_MASK = 0xfff0 +}; + +/** + * struct sc132gs_reg - MI sensor register format + * @type: type of the register + * @reg: 16-bit offset to register + * @val: 8/16/32-bit register value + * + * Define a structure for sensor register initialization values + */ +struct sc132gs_reg { + enum sc132gs_tok_type type; + u16 reg; + u32 val; /* @set value for read/mod/write, @mask */ +}; + +#define to_sc132gs_sensor(x) container_of(x, struct sc132gs_device, sd) + +#define SC132GS_MAX_WRITE_BUF_SIZE 30 + +struct sc132gs_write_buffer { + u16 addr; + u8 data[SC132GS_MAX_WRITE_BUF_SIZE]; +}; + +struct sc132gs_write_ctrl { + int index; + struct sc132gs_write_buffer buffer; +}; + +static const struct i2c_device_id sc132gs_id[] = { + {SC132GS_NAME, 0}, + {} +}; + +static struct sc132gs_reg const sc132gs_global_setting[] = { + {SC132GS_8BIT, 0x0103, 0x01}, + {SC132GS_8BIT, 0x3001, 0x0a}, + {SC132GS_8BIT, 0x3002, 0x80}, + {SC132GS_8BIT, 0x3006, 0x00}, + {SC132GS_8BIT, 0x3011, 0x21}, + {SC132GS_8BIT, 0x3012, 0x09}, + {SC132GS_8BIT, 0x3013, 0x10}, + {SC132GS_8BIT, 0x3014, 0x00}, + {SC132GS_8BIT, 0x3015, 0x08}, + {SC132GS_8BIT, 0x3016, 0xf0}, + {SC132GS_8BIT, 0x3017, 0xf0}, + {SC132GS_8BIT, 0x3018, 0xf0}, + {SC132GS_8BIT, 0x301b, 0xb4}, + {SC132GS_8BIT, 0x301d, 0x02}, + {SC132GS_8BIT, 0x3021, 0x00}, + {SC132GS_8BIT, 0x3022, 0x01}, + {SC132GS_8BIT, 0x3028, 0x44}, + {SC132GS_8BIT, 0x3098, 0x02}, + {SC132GS_8BIT, 0x3099, 0x19}, + {SC132GS_8BIT, 0x309a, 0x02}, + {SC132GS_8BIT, 0x309b, 0x01}, + {SC132GS_8BIT, 0x309c, 0x00}, + {SC132GS_8BIT, 0x30a0, 0xd2}, + {SC132GS_8BIT, 0x30a2, 0x01}, + {SC132GS_8BIT, 0x30b2, 0x00}, + {SC132GS_8BIT, 0x30b3, 0x7d}, + {SC132GS_8BIT, 0x30b4, 0x03}, + {SC132GS_8BIT, 0x30b5, 0x04}, + {SC132GS_8BIT, 0x30b6, 0x01}, + {SC132GS_8BIT, 0x3104, 0x21}, + {SC132GS_8BIT, 0x3106, 0x00}, + {SC132GS_8BIT, 0x3400, 0x04}, + {SC132GS_8BIT, 0x3401, 0x00}, + {SC132GS_8BIT, 0x3402, 0x04}, + {SC132GS_8BIT, 0x3403, 0x00}, + {SC132GS_8BIT, 0x3404, 0x04}, + {SC132GS_8BIT, 0x3405, 0x00}, + {SC132GS_8BIT, 0x3406, 0x01}, + {SC132GS_8BIT, 0x3500, 0x00}, + {SC132GS_8BIT, 0x3503, 0x07}, + {SC132GS_8BIT, 0x3504, 0x00}, + {SC132GS_8BIT, 0x3505, 0x00}, + {SC132GS_8BIT, 0x3506, 0x00}, + {SC132GS_8BIT, 0x3507, 0x02}, + {SC132GS_8BIT, 0x3508, 0x00}, + {SC132GS_8BIT, 0x3509, 0x10}, + {SC132GS_8BIT, 0x350a, 0x00}, + {SC132GS_8BIT, 0x350b, 0x40}, + {SC132GS_8BIT, 0x3601, 0x0a}, + {SC132GS_8BIT, 0x3602, 0x38}, + {SC132GS_8BIT, 0x3612, 0x80}, + {SC132GS_8BIT, 0x3620, 0x54}, + {SC132GS_8BIT, 0x3621, 0xc7}, + {SC132GS_8BIT, 0x3622, 0x0f}, + {SC132GS_8BIT, 0x3625, 0x10}, + {SC132GS_8BIT, 0x3630, 0x55}, + {SC132GS_8BIT, 0x3631, 0xf4}, + {SC132GS_8BIT, 0x3632, 0x00}, + {SC132GS_8BIT, 0x3633, 0x34}, + {SC132GS_8BIT, 0x3634, 0x02}, + {SC132GS_8BIT, 0x364d, 0x0d}, + {SC132GS_8BIT, 0x364f, 0xdd}, + {SC132GS_8BIT, 0x3660, 0x04}, + {SC132GS_8BIT, 0x3662, 0x10}, + {SC132GS_8BIT, 0x3663, 0xf1}, + {SC132GS_8BIT, 0x3665, 0x00}, + {SC132GS_8BIT, 0x3666, 0x20}, + {SC132GS_8BIT, 0x3667, 0x00}, + {SC132GS_8BIT, 0x366a, 0x80}, + {SC132GS_8BIT, 0x3680, 0xe0}, + {SC132GS_8BIT, 0x3681, 0x00}, + {SC132GS_8BIT, 0x3700, 0x42}, + {SC132GS_8BIT, 0x3701, 0x14}, + {SC132GS_8BIT, 0x3702, 0xa0}, + {SC132GS_8BIT, 0x3703, 0xd8}, + {SC132GS_8BIT, 0x3704, 0x78}, + {SC132GS_8BIT, 0x3705, 0x02}, + {SC132GS_8BIT, 0x370a, 0x00}, + {SC132GS_8BIT, 0x370b, 0x20}, + {SC132GS_8BIT, 0x370c, 0x0c}, + {SC132GS_8BIT, 0x370d, 0x11}, + {SC132GS_8BIT, 0x370e, 0x00}, + {SC132GS_8BIT, 0x370f, 0x40}, + {SC132GS_8BIT, 0x3710, 0x00}, + {SC132GS_8BIT, 0x371a, 0x1c}, + {SC132GS_8BIT, 0x371b, 0x05}, + {SC132GS_8BIT, 0x371c, 0x01}, + {SC132GS_8BIT, 0x371e, 0xa1}, + {SC132GS_8BIT, 0x371f, 0x0c}, + {SC132GS_8BIT, 0x3721, 0x00}, + {SC132GS_8BIT, 0x3724, 0x10}, + {SC132GS_8BIT, 0x3726, 0x00}, + {SC132GS_8BIT, 0x372a, 0x01}, + {SC132GS_8BIT, 0x3730, 0x10}, + {SC132GS_8BIT, 0x3738, 0x22}, + {SC132GS_8BIT, 0x3739, 0xe5}, + {SC132GS_8BIT, 0x373a, 0x50}, + {SC132GS_8BIT, 0x373b, 0x02}, + {SC132GS_8BIT, 0x373c, 0x41}, + {SC132GS_8BIT, 0x373f, 0x02}, + {SC132GS_8BIT, 0x3740, 0x42}, + {SC132GS_8BIT, 0x3741, 0x02}, + {SC132GS_8BIT, 0x3742, 0x18}, + {SC132GS_8BIT, 0x3743, 0x01}, + {SC132GS_8BIT, 0x3744, 0x02}, + {SC132GS_8BIT, 0x3747, 0x10}, + {SC132GS_8BIT, 0x374c, 0x04}, + {SC132GS_8BIT, 0x3751, 0xf0}, + {SC132GS_8BIT, 0x3752, 0x00}, + {SC132GS_8BIT, 0x3753, 0x00}, + {SC132GS_8BIT, 0x3754, 0xc0}, + {SC132GS_8BIT, 0x3755, 0x00}, + {SC132GS_8BIT, 0x3756, 0x1a}, + {SC132GS_8BIT, 0x3758, 0x00}, + {SC132GS_8BIT, 0x3759, 0x0f}, + {SC132GS_8BIT, 0x376b, 0x44}, + {SC132GS_8BIT, 0x375c, 0x04}, + {SC132GS_8BIT, 0x3774, 0x10}, + {SC132GS_8BIT, 0x3776, 0x00}, + {SC132GS_8BIT, 0x377f, 0x08}, + {SC132GS_8BIT, 0x3780, 0x22}, + {SC132GS_8BIT, 0x3781, 0x0c}, + {SC132GS_8BIT, 0x3784, 0x2c}, + {SC132GS_8BIT, 0x3785, 0x1e}, + {SC132GS_8BIT, 0x378f, 0xf5}, + {SC132GS_8BIT, 0x3791, 0xb0}, + {SC132GS_8BIT, 0x3795, 0x00}, + {SC132GS_8BIT, 0x3796, 0x64}, + {SC132GS_8BIT, 0x3797, 0x11}, + {SC132GS_8BIT, 0x3798, 0x30}, + {SC132GS_8BIT, 0x3799, 0x41}, + {SC132GS_8BIT, 0x379a, 0x07}, + {SC132GS_8BIT, 0x379b, 0xb0}, + {SC132GS_8BIT, 0x379c, 0x0c}, + {SC132GS_8BIT, 0x37c5, 0x00}, + {SC132GS_8BIT, 0x37c6, 0x00}, + {SC132GS_8BIT, 0x37c7, 0x00}, + {SC132GS_8BIT, 0x37c9, 0x00}, + {SC132GS_8BIT, 0x37ca, 0x00}, + {SC132GS_8BIT, 0x37cb, 0x00}, + {SC132GS_8BIT, 0x37de, 0x00}, + {SC132GS_8BIT, 0x37df, 0x00}, + {SC132GS_8BIT, 0x3800, 0x00}, + {SC132GS_8BIT, 0x3801, 0x00}, + {SC132GS_8BIT, 0x3802, 0x00}, + {SC132GS_8BIT, 0x3804, 0x0a}, + {SC132GS_8BIT, 0x3805, 0x3f}, + {SC132GS_8BIT, 0x3810, 0x00}, + {SC132GS_8BIT, 0x3812, 0x00}, + {SC132GS_8BIT, 0x3823, 0x00}, + {SC132GS_8BIT, 0x3824, 0x00}, + {SC132GS_8BIT, 0x3825, 0x00}, + {SC132GS_8BIT, 0x3826, 0x00}, + {SC132GS_8BIT, 0x3827, 0x00}, + {SC132GS_8BIT, 0x382a, 0x04}, + {SC132GS_8BIT, 0x3a04, 0x06}, + {SC132GS_8BIT, 0x3a05, 0x14}, + {SC132GS_8BIT, 0x3a06, 0x00}, + {SC132GS_8BIT, 0x3a07, 0xfe}, + {SC132GS_8BIT, 0x3b00, 0x00}, + {SC132GS_8BIT, 0x3b02, 0x00}, + {SC132GS_8BIT, 0x3b03, 0x00}, + {SC132GS_8BIT, 0x3b04, 0x00}, + {SC132GS_8BIT, 0x3b05, 0x00}, + {SC132GS_8BIT, 0x3e07, 0x20}, + {SC132GS_8BIT, 0x4000, 0x08}, + {SC132GS_8BIT, 0x4001, 0x04}, + {SC132GS_8BIT, 0x4002, 0x45}, + {SC132GS_8BIT, 0x4004, 0x08}, + {SC132GS_8BIT, 0x4005, 0x18}, + {SC132GS_8BIT, 0x4006, 0x20}, + {SC132GS_8BIT, 0x4008, 0x24}, + {SC132GS_8BIT, 0x4009, 0x10}, + {SC132GS_8BIT, 0x400c, 0x00}, + {SC132GS_8BIT, 0x400d, 0x00}, + {SC132GS_8BIT, 0x4058, 0x00}, + {SC132GS_8BIT, 0x404e, 0x37}, + {SC132GS_8BIT, 0x404f, 0x8f}, + {SC132GS_8BIT, 0x4058, 0x00}, + {SC132GS_8BIT, 0x4101, 0xb2}, + {SC132GS_8BIT, 0x4303, 0x00}, + {SC132GS_8BIT, 0x4304, 0x08}, + {SC132GS_8BIT, 0x4307, 0x31}, + {SC132GS_8BIT, 0x4311, 0x04}, + {SC132GS_8BIT, 0x4315, 0x01}, + {SC132GS_8BIT, 0x4511, 0x05}, + {SC132GS_8BIT, 0x4512, 0x01}, + {SC132GS_8BIT, 0x4806, 0x00}, + {SC132GS_8BIT, 0x4816, 0x52}, + {SC132GS_8BIT, 0x481f, 0x30}, + {SC132GS_8BIT, 0x4826, 0x2c}, + {SC132GS_8BIT, 0x4831, 0x64}, + {SC132GS_8BIT, 0x4d00, 0x04}, + {SC132GS_8BIT, 0x4d01, 0x71}, + {SC132GS_8BIT, 0x4d02, 0xfd}, + {SC132GS_8BIT, 0x4d03, 0xf5}, + {SC132GS_8BIT, 0x4d04, 0x0c}, + {SC132GS_8BIT, 0x4d05, 0xcc}, + {SC132GS_8BIT, 0x4837, 0x0a}, + {SC132GS_8BIT, 0x5000, 0x06}, + {SC132GS_8BIT, 0x5001, 0x01}, + {SC132GS_8BIT, 0x5003, 0x20}, + {SC132GS_8BIT, 0x5046, 0x0a}, + {SC132GS_8BIT, 0x5013, 0x00}, + {SC132GS_8BIT, 0x5046, 0x0a}, + {SC132GS_8BIT, 0x5780, 0x1c}, + {SC132GS_8BIT, 0x5786, 0x20}, + {SC132GS_8BIT, 0x5787, 0x10}, + {SC132GS_8BIT, 0x5788, 0x18}, + {SC132GS_8BIT, 0x578a, 0x04}, + {SC132GS_8BIT, 0x578b, 0x02}, + {SC132GS_8BIT, 0x578c, 0x02}, + {SC132GS_8BIT, 0x578e, 0x06}, + {SC132GS_8BIT, 0x578f, 0x02}, + {SC132GS_8BIT, 0x5790, 0x02}, + {SC132GS_8BIT, 0x5791, 0xff}, + {SC132GS_8BIT, 0x5842, 0x01}, + {SC132GS_8BIT, 0x5843, 0x2b}, + {SC132GS_8BIT, 0x5844, 0x01}, + {SC132GS_8BIT, 0x5845, 0x92}, + {SC132GS_8BIT, 0x5846, 0x01}, + {SC132GS_8BIT, 0x5847, 0x8f}, + {SC132GS_8BIT, 0x5848, 0x01}, + {SC132GS_8BIT, 0x5849, 0x0c}, + {SC132GS_8BIT, 0x5e00, 0x00}, + {SC132GS_8BIT, 0x5e10, 0x0c}, + {SC132GS_8BIT, 0x0100, 0x00}, + {SC132GS_TOK_TERM, 0, 0} +}; + +/* + * 654x496 30fps 17ms VBlanking 2lane 10Bit (Scaling) + */ +static struct sc132gs_reg const sc132gs_654x496[] = { + {SC132GS_8BIT, 0x3501, 0x3d}, + {SC132GS_8BIT, 0x3502, 0x00}, + {SC132GS_8BIT, 0x3708, 0xe6}, + {SC132GS_8BIT, 0x3709, 0xc7}, + {SC132GS_8BIT, 0x3803, 0x00}, + {SC132GS_8BIT, 0x3806, 0x07}, + {SC132GS_8BIT, 0x3807, 0xa3}, + {SC132GS_8BIT, 0x3808, 0x02}, + {SC132GS_8BIT, 0x3809, 0x90}, + {SC132GS_8BIT, 0x380a, 0x01}, + {SC132GS_8BIT, 0x380b, 0xf0}, + {SC132GS_8BIT, 0x380c, 0x0a}, + {SC132GS_8BIT, 0x380d, 0x80}, + {SC132GS_8BIT, 0x380e, 0x07}, + {SC132GS_8BIT, 0x380f, 0xc0}, + {SC132GS_8BIT, 0x3811, 0x08}, + {SC132GS_8BIT, 0x3813, 0x02}, + {SC132GS_8BIT, 0x3814, 0x31}, + {SC132GS_8BIT, 0x3815, 0x31}, + {SC132GS_8BIT, 0x3820, 0x04}, + {SC132GS_8BIT, 0x3821, 0x1f}, + {SC132GS_8BIT, 0x5002, 0x80}, + {SC132GS_8BIT, 0x0100, 0x01}, + {SC132GS_TOK_TERM, 0, 0} +}; + +/* + * 1296x976 30fps 17ms VBlanking 2lane 10Bit (Scaling) +*DS from 2592x1952 +*/ +static struct sc132gs_reg const sc132gs_1296x976[] = { + {SC132GS_8BIT, 0x3501, 0x7b}, + {SC132GS_8BIT, 0x3502, 0x00}, + {SC132GS_8BIT, 0x3708, 0xe2}, + {SC132GS_8BIT, 0x3709, 0xc3}, + + {SC132GS_8BIT, 0x3800, 0x00}, + {SC132GS_8BIT, 0x3801, 0x00}, + {SC132GS_8BIT, 0x3802, 0x00}, + {SC132GS_8BIT, 0x3803, 0x00}, + + {SC132GS_8BIT, 0x3804, 0x0a}, + {SC132GS_8BIT, 0x3805, 0x3f}, + {SC132GS_8BIT, 0x3806, 0x07}, + {SC132GS_8BIT, 0x3807, 0xA3}, + + {SC132GS_8BIT, 0x3808, 0x05}, + {SC132GS_8BIT, 0x3809, 0x10}, + {SC132GS_8BIT, 0x380a, 0x03}, + {SC132GS_8BIT, 0x380b, 0xD0}, + + {SC132GS_8BIT, 0x380c, 0x0a}, + {SC132GS_8BIT, 0x380d, 0x80}, + {SC132GS_8BIT, 0x380e, 0x07}, + {SC132GS_8BIT, 0x380f, 0xc0}, + + {SC132GS_8BIT, 0x3810, 0x00}, + {SC132GS_8BIT, 0x3811, 0x10}, + {SC132GS_8BIT, 0x3812, 0x00}, + {SC132GS_8BIT, 0x3813, 0x02}, + + {SC132GS_8BIT, 0x3814, 0x11}, /*X subsample control*/ + {SC132GS_8BIT, 0x3815, 0x11}, /*Y subsample control*/ + {SC132GS_8BIT, 0x3820, 0x00}, + {SC132GS_8BIT, 0x3821, 0x1e}, + {SC132GS_8BIT, 0x5002, 0x00}, + {SC132GS_8BIT, 0x5041, 0x84}, /* scale is auto enabled */ + {SC132GS_8BIT, 0x0100, 0x01}, + {SC132GS_TOK_TERM, 0, 0} + +}; + + +/* + * 336x256 30fps 17ms VBlanking 2lane 10Bit (Scaling) + DS from 2564x1956 + */ +static struct sc132gs_reg const sc132gs_336x256[] = { + {SC132GS_8BIT, 0x3501, 0x3d}, + {SC132GS_8BIT, 0x3502, 0x00}, + {SC132GS_8BIT, 0x3708, 0xe6}, + {SC132GS_8BIT, 0x3709, 0xc7}, + {SC132GS_8BIT, 0x3806, 0x07}, + {SC132GS_8BIT, 0x3807, 0xa3}, + {SC132GS_8BIT, 0x3808, 0x01}, + {SC132GS_8BIT, 0x3809, 0x50}, + {SC132GS_8BIT, 0x380a, 0x01}, + {SC132GS_8BIT, 0x380b, 0x00}, + {SC132GS_8BIT, 0x380c, 0x0a}, + {SC132GS_8BIT, 0x380d, 0x80}, + {SC132GS_8BIT, 0x380e, 0x07}, + {SC132GS_8BIT, 0x380f, 0xc0}, + {SC132GS_8BIT, 0x3811, 0x1E}, + {SC132GS_8BIT, 0x3814, 0x31}, + {SC132GS_8BIT, 0x3815, 0x31}, + {SC132GS_8BIT, 0x3820, 0x04}, + {SC132GS_8BIT, 0x3821, 0x1f}, + {SC132GS_8BIT, 0x5002, 0x80}, + {SC132GS_8BIT, 0x0100, 0x01}, + {SC132GS_TOK_TERM, 0, 0} +}; + +/* + * 336x256 30fps 17ms VBlanking 2lane 10Bit (Scaling) + DS from 2368x1956 + */ +static struct sc132gs_reg const sc132gs_368x304[] = { + {SC132GS_8BIT, 0x3501, 0x3d}, + {SC132GS_8BIT, 0x3502, 0x00}, + {SC132GS_8BIT, 0x3708, 0xe6}, + {SC132GS_8BIT, 0x3709, 0xc7}, + {SC132GS_8BIT, 0x3808, 0x01}, + {SC132GS_8BIT, 0x3809, 0x70}, + {SC132GS_8BIT, 0x380a, 0x01}, + {SC132GS_8BIT, 0x380b, 0x30}, + {SC132GS_8BIT, 0x380c, 0x0a}, + {SC132GS_8BIT, 0x380d, 0x80}, + {SC132GS_8BIT, 0x380e, 0x07}, + {SC132GS_8BIT, 0x380f, 0xc0}, + {SC132GS_8BIT, 0x3811, 0x80}, + {SC132GS_8BIT, 0x3814, 0x31}, + {SC132GS_8BIT, 0x3815, 0x31}, + {SC132GS_8BIT, 0x3820, 0x04}, + {SC132GS_8BIT, 0x3821, 0x1f}, + {SC132GS_8BIT, 0x5002, 0x80}, + {SC132GS_8BIT, 0x0100, 0x01}, + {SC132GS_TOK_TERM, 0, 0} +}; + +/* + * sc132gs_192x160 30fps 17ms VBlanking 2lane 10Bit (Scaling) + DS from 2460x1956 + */ +static struct sc132gs_reg const sc132gs_192x160[] = { + {SC132GS_8BIT, 0x3501, 0x7b}, + {SC132GS_8BIT, 0x3502, 0x80}, + {SC132GS_8BIT, 0x3708, 0xe2}, + {SC132GS_8BIT, 0x3709, 0xc3}, + {SC132GS_8BIT, 0x3804, 0x0a}, + {SC132GS_8BIT, 0x3805, 0x3f}, + {SC132GS_8BIT, 0x3806, 0x07}, + {SC132GS_8BIT, 0x3807, 0xA3}, + {SC132GS_8BIT, 0x3808, 0x00}, + {SC132GS_8BIT, 0x3809, 0xC0}, + {SC132GS_8BIT, 0x380a, 0x00}, + {SC132GS_8BIT, 0x380b, 0xA0}, + {SC132GS_8BIT, 0x380c, 0x0a}, + {SC132GS_8BIT, 0x380d, 0x80}, + {SC132GS_8BIT, 0x380e, 0x07}, + {SC132GS_8BIT, 0x380f, 0xc0}, + {SC132GS_8BIT, 0x3811, 0x40}, + {SC132GS_8BIT, 0x3813, 0x00}, + {SC132GS_8BIT, 0x3814, 0x31}, + {SC132GS_8BIT, 0x3815, 0x31}, + {SC132GS_8BIT, 0x3820, 0x04}, + {SC132GS_8BIT, 0x3821, 0x1f}, + {SC132GS_8BIT, 0x5002, 0x80}, + {SC132GS_8BIT, 0x0100, 0x01}, + {SC132GS_TOK_TERM, 0, 0} +}; + + +static struct sc132gs_reg const sc132gs_736x496[] = { + {SC132GS_8BIT, 0x3501, 0x3d}, + {SC132GS_8BIT, 0x3502, 0x00}, + {SC132GS_8BIT, 0x3708, 0xe6}, + {SC132GS_8BIT, 0x3709, 0xc7}, + {SC132GS_8BIT, 0x3803, 0x68}, + {SC132GS_8BIT, 0x3806, 0x07}, + {SC132GS_8BIT, 0x3807, 0x3b}, + {SC132GS_8BIT, 0x3808, 0x02}, + {SC132GS_8BIT, 0x3809, 0xe0}, + {SC132GS_8BIT, 0x380a, 0x01}, + {SC132GS_8BIT, 0x380b, 0xf0}, + {SC132GS_8BIT, 0x380c, 0x0a}, /*hts*/ + {SC132GS_8BIT, 0x380d, 0x80}, + {SC132GS_8BIT, 0x380e, 0x07}, /*vts*/ + {SC132GS_8BIT, 0x380f, 0xc0}, + {SC132GS_8BIT, 0x3811, 0x08}, + {SC132GS_8BIT, 0x3813, 0x02}, + {SC132GS_8BIT, 0x3814, 0x31}, + {SC132GS_8BIT, 0x3815, 0x31}, + {SC132GS_8BIT, 0x3820, 0x04}, + {SC132GS_8BIT, 0x3821, 0x1f}, + {SC132GS_8BIT, 0x5002, 0x80}, + {SC132GS_8BIT, 0x0100, 0x01}, + {SC132GS_TOK_TERM, 0, 0} +}; + +/* +static struct sc132gs_reg const sc132gs_736x496[] = { + {SC132GS_8BIT, 0x3501, 0x7b}, + {SC132GS_8BIT, 0x3502, 0x00}, + {SC132GS_8BIT, 0x3708, 0xe6}, + {SC132GS_8BIT, 0x3709, 0xc3}, + {SC132GS_8BIT, 0x3803, 0x00}, + {SC132GS_8BIT, 0x3806, 0x07}, + {SC132GS_8BIT, 0x3807, 0xa3}, + {SC132GS_8BIT, 0x3808, 0x02}, + {SC132GS_8BIT, 0x3809, 0xe0}, + {SC132GS_8BIT, 0x380a, 0x01}, + {SC132GS_8BIT, 0x380b, 0xf0}, + {SC132GS_8BIT, 0x380c, 0x0d}, + {SC132GS_8BIT, 0x380d, 0xb0}, + {SC132GS_8BIT, 0x380e, 0x05}, + {SC132GS_8BIT, 0x380f, 0xf2}, + {SC132GS_8BIT, 0x3811, 0x08}, + {SC132GS_8BIT, 0x3813, 0x02}, + {SC132GS_8BIT, 0x3814, 0x31}, + {SC132GS_8BIT, 0x3815, 0x31}, + {SC132GS_8BIT, 0x3820, 0x01}, + {SC132GS_8BIT, 0x3821, 0x1f}, + {SC132GS_8BIT, 0x5002, 0x00}, + {SC132GS_8BIT, 0x0100, 0x01}, + {SC132GS_TOK_TERM, 0, 0} +}; +*/ +/* + * 976x556 30fps 8.8ms VBlanking 2lane 10Bit (Scaling) + */ +static struct sc132gs_reg const sc132gs_976x556[] = { + {SC132GS_8BIT, 0x3501, 0x7b}, + {SC132GS_8BIT, 0x3502, 0x00}, + {SC132GS_8BIT, 0x3708, 0xe2}, + {SC132GS_8BIT, 0x3709, 0xc3}, + {SC132GS_8BIT, 0x3803, 0xf0}, + {SC132GS_8BIT, 0x3806, 0x06}, + {SC132GS_8BIT, 0x3807, 0xa7}, + {SC132GS_8BIT, 0x3808, 0x03}, + {SC132GS_8BIT, 0x3809, 0xd0}, + {SC132GS_8BIT, 0x380a, 0x02}, + {SC132GS_8BIT, 0x380b, 0x2C}, + {SC132GS_8BIT, 0x380c, 0x0a}, + {SC132GS_8BIT, 0x380d, 0x80}, + {SC132GS_8BIT, 0x380e, 0x07}, + {SC132GS_8BIT, 0x380f, 0xc0}, + {SC132GS_8BIT, 0x3811, 0x10}, + {SC132GS_8BIT, 0x3813, 0x02}, + {SC132GS_8BIT, 0x3814, 0x11}, + {SC132GS_8BIT, 0x3815, 0x11}, + {SC132GS_8BIT, 0x3820, 0x00}, + {SC132GS_8BIT, 0x3821, 0x1e}, + {SC132GS_8BIT, 0x5002, 0x80}, + {SC132GS_8BIT, 0x0100, 0x01}, + {SC132GS_TOK_TERM, 0, 0} +}; + +/*DS from 2624x1492*/ +static struct sc132gs_reg const sc132gs_1296x736[] = { + {SC132GS_8BIT, 0x3501, 0x7b}, + {SC132GS_8BIT, 0x3502, 0x00}, + {SC132GS_8BIT, 0x3708, 0xe2}, + {SC132GS_8BIT, 0x3709, 0xc3}, + + {SC132GS_8BIT, 0x3800, 0x00}, + {SC132GS_8BIT, 0x3801, 0x00}, + {SC132GS_8BIT, 0x3802, 0x00}, + {SC132GS_8BIT, 0x3803, 0x00}, + + {SC132GS_8BIT, 0x3804, 0x0a}, + {SC132GS_8BIT, 0x3805, 0x3f}, + {SC132GS_8BIT, 0x3806, 0x07}, + {SC132GS_8BIT, 0x3807, 0xA3}, + + {SC132GS_8BIT, 0x3808, 0x05}, + {SC132GS_8BIT, 0x3809, 0x10}, + {SC132GS_8BIT, 0x380a, 0x02}, + {SC132GS_8BIT, 0x380b, 0xe0}, + + {SC132GS_8BIT, 0x380c, 0x0a}, + {SC132GS_8BIT, 0x380d, 0x80}, + {SC132GS_8BIT, 0x380e, 0x07}, + {SC132GS_8BIT, 0x380f, 0xc0}, + + {SC132GS_8BIT, 0x3813, 0xE8}, + + {SC132GS_8BIT, 0x3814, 0x11}, /*X subsample control*/ + {SC132GS_8BIT, 0x3815, 0x11}, /*Y subsample control*/ + {SC132GS_8BIT, 0x3820, 0x00}, + {SC132GS_8BIT, 0x3821, 0x1e}, + {SC132GS_8BIT, 0x5002, 0x00}, + {SC132GS_8BIT, 0x5041, 0x84}, /* scale is auto enabled */ + {SC132GS_8BIT, 0x0100, 0x01}, + {SC132GS_TOK_TERM, 0, 0} +}; + +static struct sc132gs_reg const sc132gs_1636p_30fps[] = { + {SC132GS_8BIT, 0x3501, 0x7b}, + {SC132GS_8BIT, 0x3502, 0x00}, + {SC132GS_8BIT, 0x3708, 0xe2}, + {SC132GS_8BIT, 0x3709, 0xc3}, + {SC132GS_8BIT, 0x3803, 0xf0}, + {SC132GS_8BIT, 0x3806, 0x06}, + {SC132GS_8BIT, 0x3807, 0xa7}, + {SC132GS_8BIT, 0x3808, 0x06}, + {SC132GS_8BIT, 0x3809, 0x64}, + {SC132GS_8BIT, 0x380a, 0x04}, + {SC132GS_8BIT, 0x380b, 0x48}, + {SC132GS_8BIT, 0x380c, 0x0a}, /*hts*/ + {SC132GS_8BIT, 0x380d, 0x80}, + {SC132GS_8BIT, 0x380e, 0x07}, /*vts*/ + {SC132GS_8BIT, 0x380f, 0xc0}, + {SC132GS_8BIT, 0x3811, 0x02}, + {SC132GS_8BIT, 0x3813, 0x02}, + {SC132GS_8BIT, 0x3814, 0x11}, + {SC132GS_8BIT, 0x3815, 0x11}, + {SC132GS_8BIT, 0x3820, 0x00}, + {SC132GS_8BIT, 0x3821, 0x1e}, + {SC132GS_8BIT, 0x5002, 0x80}, + {SC132GS_8BIT, 0x0100, 0x01}, + {SC132GS_TOK_TERM, 0, 0} +}; + +static struct sc132gs_reg const sc132gs_1616x1216_30fps[] = { + {SC132GS_8BIT, 0x3501, 0x7b}, + {SC132GS_8BIT, 0x3502, 0x80}, + {SC132GS_8BIT, 0x3708, 0xe2}, + {SC132GS_8BIT, 0x3709, 0xc3}, + {SC132GS_8BIT, 0x3800, 0x00}, /*{3800,3801} Array X start*/ + {SC132GS_8BIT, 0x3801, 0x08}, /* 04 //{3800,3801} Array X start*/ + {SC132GS_8BIT, 0x3802, 0x00}, /*{3802,3803} Array Y start*/ + {SC132GS_8BIT, 0x3803, 0x04}, /* 00 //{3802,3803} Array Y start*/ + {SC132GS_8BIT, 0x3804, 0x0a}, /*{3804,3805} Array X end*/ + {SC132GS_8BIT, 0x3805, 0x37}, /* 3b //{3804,3805} Array X end*/ + {SC132GS_8BIT, 0x3806, 0x07}, /*{3806,3807} Array Y end*/ + {SC132GS_8BIT, 0x3807, 0x9f}, /* a3 //{3806,3807} Array Y end*/ + {SC132GS_8BIT, 0x3808, 0x06}, /*{3808,3809} Final output H size*/ + {SC132GS_8BIT, 0x3809, 0x50}, /*{3808,3809} Final output H size*/ + {SC132GS_8BIT, 0x380a, 0x04}, /*{380a,380b} Final output V size*/ + {SC132GS_8BIT, 0x380b, 0xc0}, /*{380a,380b} Final output V size*/ + {SC132GS_8BIT, 0x380c, 0x0a}, /*{380c,380d} HTS*/ + {SC132GS_8BIT, 0x380d, 0x80}, /*{380c,380d} HTS*/ + {SC132GS_8BIT, 0x380e, 0x07}, /*{380e,380f} VTS*/ + {SC132GS_8BIT, 0x380f, 0xc0}, /* bc //{380e,380f} VTS*/ + {SC132GS_8BIT, 0x3810, 0x00}, /*{3810,3811} windowing X offset*/ + {SC132GS_8BIT, 0x3811, 0x10}, /*{3810,3811} windowing X offset*/ + {SC132GS_8BIT, 0x3812, 0x00}, /*{3812,3813} windowing Y offset*/ + {SC132GS_8BIT, 0x3813, 0x06}, /*{3812,3813} windowing Y offset*/ + {SC132GS_8BIT, 0x3814, 0x11}, /*X subsample control*/ + {SC132GS_8BIT, 0x3815, 0x11}, /*Y subsample control*/ + {SC132GS_8BIT, 0x3820, 0x00}, /*FLIP/Binnning control*/ + {SC132GS_8BIT, 0x3821, 0x1e}, /*MIRROR control*/ + {SC132GS_8BIT, 0x5002, 0x00}, + {SC132GS_8BIT, 0x5041, 0x84}, + {SC132GS_8BIT, 0x0100, 0x01}, + {SC132GS_TOK_TERM, 0, 0} +}; + + +/* + * 1940x1096 30fps 8.8ms VBlanking 2lane 10bit (Scaling) + */ +static struct sc132gs_reg const sc132gs_1940x1096[] = { + {SC132GS_8BIT, 0x3501, 0x7b}, + {SC132GS_8BIT, 0x3502, 0x00}, + {SC132GS_8BIT, 0x3708, 0xe2}, + {SC132GS_8BIT, 0x3709, 0xc3}, + {SC132GS_8BIT, 0x3803, 0xf0}, + {SC132GS_8BIT, 0x3806, 0x06}, + {SC132GS_8BIT, 0x3807, 0xa7}, + {SC132GS_8BIT, 0x3808, 0x07}, + {SC132GS_8BIT, 0x3809, 0x94}, + {SC132GS_8BIT, 0x380a, 0x04}, + {SC132GS_8BIT, 0x380b, 0x48}, + {SC132GS_8BIT, 0x380c, 0x0a}, + {SC132GS_8BIT, 0x380d, 0x80}, + {SC132GS_8BIT, 0x380e, 0x07}, + {SC132GS_8BIT, 0x380f, 0xc0}, + {SC132GS_8BIT, 0x3811, 0x02}, + {SC132GS_8BIT, 0x3813, 0x02}, + {SC132GS_8BIT, 0x3814, 0x11}, + {SC132GS_8BIT, 0x3815, 0x11}, + {SC132GS_8BIT, 0x3820, 0x00}, + {SC132GS_8BIT, 0x3821, 0x1e}, + {SC132GS_8BIT, 0x5002, 0x80}, + {SC132GS_8BIT, 0x0100, 0x01}, + {SC132GS_TOK_TERM, 0, 0} +}; + +static struct sc132gs_reg const sc132gs_2592x1456_30fps[] = { + {SC132GS_8BIT, 0x3501, 0x7b}, + {SC132GS_8BIT, 0x3502, 0x00}, + {SC132GS_8BIT, 0x3708, 0xe2}, + {SC132GS_8BIT, 0x3709, 0xc3}, + {SC132GS_8BIT, 0x3800, 0x00}, + {SC132GS_8BIT, 0x3801, 0x00}, + {SC132GS_8BIT, 0x3802, 0x00}, + {SC132GS_8BIT, 0x3803, 0xf0}, + {SC132GS_8BIT, 0x3804, 0x0a}, + {SC132GS_8BIT, 0x3805, 0x3f}, + {SC132GS_8BIT, 0x3806, 0x06}, + {SC132GS_8BIT, 0x3807, 0xa4}, + {SC132GS_8BIT, 0x3808, 0x0a}, + {SC132GS_8BIT, 0x3809, 0x20}, + {SC132GS_8BIT, 0x380a, 0x05}, + {SC132GS_8BIT, 0x380b, 0xb0}, + {SC132GS_8BIT, 0x380c, 0x0a}, + {SC132GS_8BIT, 0x380d, 0x80}, + {SC132GS_8BIT, 0x380e, 0x07}, + {SC132GS_8BIT, 0x380f, 0xc0}, + {SC132GS_8BIT, 0x3811, 0x10}, + {SC132GS_8BIT, 0x3813, 0x00}, + {SC132GS_8BIT, 0x3814, 0x11}, + {SC132GS_8BIT, 0x3815, 0x11}, + {SC132GS_8BIT, 0x3820, 0x00}, + {SC132GS_8BIT, 0x3821, 0x1e}, + {SC132GS_8BIT, 0x5002, 0x00}, + {SC132GS_TOK_TERM, 0, 0} +}; + +static struct sc132gs_reg const sc132gs_2576x1456_30fps[] = { + {SC132GS_8BIT, 0x3501, 0x7b}, + {SC132GS_8BIT, 0x3502, 0x00}, + {SC132GS_8BIT, 0x3708, 0xe2}, + {SC132GS_8BIT, 0x3709, 0xc3}, + {SC132GS_8BIT, 0x3800, 0x00}, + {SC132GS_8BIT, 0x3801, 0x00}, + {SC132GS_8BIT, 0x3802, 0x00}, + {SC132GS_8BIT, 0x3803, 0xf0}, + {SC132GS_8BIT, 0x3804, 0x0a}, + {SC132GS_8BIT, 0x3805, 0x3f}, + {SC132GS_8BIT, 0x3806, 0x06}, + {SC132GS_8BIT, 0x3807, 0xa4}, + {SC132GS_8BIT, 0x3808, 0x0a}, + {SC132GS_8BIT, 0x3809, 0x10}, + {SC132GS_8BIT, 0x380a, 0x05}, + {SC132GS_8BIT, 0x380b, 0xb0}, + {SC132GS_8BIT, 0x380c, 0x0a}, + {SC132GS_8BIT, 0x380d, 0x80}, + {SC132GS_8BIT, 0x380e, 0x07}, + {SC132GS_8BIT, 0x380f, 0xc0}, + {SC132GS_8BIT, 0x3811, 0x18}, + {SC132GS_8BIT, 0x3813, 0x00}, + {SC132GS_8BIT, 0x3814, 0x11}, + {SC132GS_8BIT, 0x3815, 0x11}, + {SC132GS_8BIT, 0x3820, 0x00}, + {SC132GS_8BIT, 0x3821, 0x1e}, + {SC132GS_8BIT, 0x5002, 0x00}, + {SC132GS_TOK_TERM, 0, 0} +}; + +/* + * 2592x1944 30fps 0.6ms VBlanking 2lane 10Bit + */ +static struct sc132gs_reg const sc132gs_2592x1944_30fps[] = { + {SC132GS_8BIT, 0x3501, 0x7b}, + {SC132GS_8BIT, 0x3502, 0x00}, + {SC132GS_8BIT, 0x3708, 0xe2}, + {SC132GS_8BIT, 0x3709, 0xc3}, + {SC132GS_8BIT, 0x3803, 0x00}, + {SC132GS_8BIT, 0x3806, 0x07}, + {SC132GS_8BIT, 0x3807, 0xa3}, + {SC132GS_8BIT, 0x3808, 0x0a}, + {SC132GS_8BIT, 0x3809, 0x20}, + {SC132GS_8BIT, 0x380a, 0x07}, + {SC132GS_8BIT, 0x380b, 0x98}, + {SC132GS_8BIT, 0x380c, 0x0a}, + {SC132GS_8BIT, 0x380d, 0x80}, + {SC132GS_8BIT, 0x380e, 0x07}, + {SC132GS_8BIT, 0x380f, 0xc0}, + {SC132GS_8BIT, 0x3811, 0x10}, + {SC132GS_8BIT, 0x3813, 0x00}, + {SC132GS_8BIT, 0x3814, 0x11}, + {SC132GS_8BIT, 0x3815, 0x11}, + {SC132GS_8BIT, 0x3820, 0x00}, + {SC132GS_8BIT, 0x3821, 0x1e}, + {SC132GS_8BIT, 0x5002, 0x00}, + {SC132GS_8BIT, 0x0100, 0x01}, + {SC132GS_TOK_TERM, 0, 0} +}; + +/* + * 11:9 Full FOV Output, expected FOV Res: 2346x1920 + * ISP Effect Res: 1408x1152 + * Sensor out: 1424x1168, DS From: 2380x1952 + * + * WA: Left Offset: 8, Hor scal: 64 + */ +static struct sc132gs_reg const sc132gs_1424x1168_30fps[] = { + {SC132GS_8BIT, 0x3501, 0x3b}, /* long exposure[15:8] */ + {SC132GS_8BIT, 0x3502, 0x80}, /* long exposure[7:0] */ + {SC132GS_8BIT, 0x3708, 0xe2}, + {SC132GS_8BIT, 0x3709, 0xc3}, + {SC132GS_8BIT, 0x3800, 0x00}, /* TIMING_X_ADDR_START */ + {SC132GS_8BIT, 0x3801, 0x50}, /* 80 */ + {SC132GS_8BIT, 0x3802, 0x00}, /* TIMING_Y_ADDR_START */ + {SC132GS_8BIT, 0x3803, 0x02}, /* 2 */ + {SC132GS_8BIT, 0x3804, 0x09}, /* TIMING_X_ADDR_END */ + {SC132GS_8BIT, 0x3805, 0xdd}, /* 2525 */ + {SC132GS_8BIT, 0x3806, 0x07}, /* TIMING_Y_ADDR_END */ + {SC132GS_8BIT, 0x3807, 0xa1}, /* 1953 */ + {SC132GS_8BIT, 0x3808, 0x05}, /* TIMING_X_OUTPUT_SIZE */ + {SC132GS_8BIT, 0x3809, 0x90}, /* 1424 */ + {SC132GS_8BIT, 0x380a, 0x04}, /* TIMING_Y_OUTPUT_SIZE */ + {SC132GS_8BIT, 0x380b, 0x90}, /* 1168 */ + {SC132GS_8BIT, 0x380c, 0x0a}, /* TIMING_HTS */ + {SC132GS_8BIT, 0x380d, 0x80}, + {SC132GS_8BIT, 0x380e, 0x07}, /* TIMING_VTS */ + {SC132GS_8BIT, 0x380f, 0xc0}, + {SC132GS_8BIT, 0x3810, 0x00}, /* TIMING_ISP_X_WIN */ + {SC132GS_8BIT, 0x3811, 0x02}, /* 2 */ + {SC132GS_8BIT, 0x3812, 0x00}, /* TIMING_ISP_Y_WIN */ + {SC132GS_8BIT, 0x3813, 0x00}, /* 0 */ + {SC132GS_8BIT, 0x3814, 0x11}, /* TIME_X_INC */ + {SC132GS_8BIT, 0x3815, 0x11}, /* TIME_Y_INC */ + {SC132GS_8BIT, 0x3820, 0x00}, + {SC132GS_8BIT, 0x3821, 0x1e}, + {SC132GS_8BIT, 0x5002, 0x00}, + {SC132GS_8BIT, 0x5041, 0x84}, /* scale is auto enabled */ + {SC132GS_8BIT, 0x0100, 0x01}, + {SC132GS_TOK_TERM, 0, 0} +}; + +/* + * 3:2 Full FOV Output, expected FOV Res: 2560x1706 + * ISP Effect Res: 720x480 + * Sensor out: 736x496, DS From 2616x1764 + */ +static struct sc132gs_reg const sc132gs_736x496_30fps[] = { + {SC132GS_8BIT, 0x3501, 0x3b}, /* long exposure[15:8] */ + {SC132GS_8BIT, 0x3502, 0x80}, /* long exposure[7:0] */ + {SC132GS_8BIT, 0x3708, 0xe2}, + {SC132GS_8BIT, 0x3709, 0xc3}, + {SC132GS_8BIT, 0x3800, 0x00}, /* TIMING_X_ADDR_START */ + {SC132GS_8BIT, 0x3801, 0x02}, /* 2 */ + {SC132GS_8BIT, 0x3802, 0x00}, /* TIMING_Y_ADDR_START */ + {SC132GS_8BIT, 0x3803, 0x62}, /* 98 */ + {SC132GS_8BIT, 0x3804, 0x0a}, /* TIMING_X_ADDR_END */ + {SC132GS_8BIT, 0x3805, 0x3b}, /* 2619 */ + {SC132GS_8BIT, 0x3806, 0x07}, /* TIMING_Y_ADDR_END */ + {SC132GS_8BIT, 0x3807, 0x43}, /* 1859 */ + {SC132GS_8BIT, 0x3808, 0x02}, /* TIMING_X_OUTPUT_SIZE */ + {SC132GS_8BIT, 0x3809, 0xe0}, /* 736 */ + {SC132GS_8BIT, 0x380a, 0x01}, /* TIMING_Y_OUTPUT_SIZE */ + {SC132GS_8BIT, 0x380b, 0xf0}, /* 496 */ + {SC132GS_8BIT, 0x380c, 0x0a}, /* TIMING_HTS */ + {SC132GS_8BIT, 0x380d, 0x80}, + {SC132GS_8BIT, 0x380e, 0x07}, /* TIMING_VTS */ + {SC132GS_8BIT, 0x380f, 0xc0}, + {SC132GS_8BIT, 0x3810, 0x00}, /* TIMING_ISP_X_WIN */ + {SC132GS_8BIT, 0x3811, 0x02}, /* 2 */ + {SC132GS_8BIT, 0x3812, 0x00}, /* TIMING_ISP_Y_WIN */ + {SC132GS_8BIT, 0x3813, 0x00}, /* 0 */ + {SC132GS_8BIT, 0x3814, 0x11}, /* TIME_X_INC */ + {SC132GS_8BIT, 0x3815, 0x11}, /* TIME_Y_INC */ + {SC132GS_8BIT, 0x3820, 0x00}, + {SC132GS_8BIT, 0x3821, 0x1e}, + {SC132GS_8BIT, 0x5002, 0x00}, + {SC132GS_8BIT, 0x5041, 0x84}, /* scale is auto enabled */ + {SC132GS_8BIT, 0x0100, 0x01}, + {SC132GS_TOK_TERM, 0, 0} +}; + +static struct sc132gs_reg const sc132gs_2576x1936_30fps[] = { + {SC132GS_8BIT, 0x3501, 0x7b}, + {SC132GS_8BIT, 0x3502, 0x00}, + {SC132GS_8BIT, 0x3708, 0xe2}, + {SC132GS_8BIT, 0x3709, 0xc3}, + {SC132GS_8BIT, 0x3803, 0x00}, + {SC132GS_8BIT, 0x3806, 0x07}, + {SC132GS_8BIT, 0x3807, 0xa3}, + {SC132GS_8BIT, 0x3808, 0x0a}, + {SC132GS_8BIT, 0x3809, 0x10}, + {SC132GS_8BIT, 0x380a, 0x07}, + {SC132GS_8BIT, 0x380b, 0x90}, + {SC132GS_8BIT, 0x380c, 0x0a}, + {SC132GS_8BIT, 0x380d, 0x80}, + {SC132GS_8BIT, 0x380e, 0x07}, + {SC132GS_8BIT, 0x380f, 0xc0}, + {SC132GS_8BIT, 0x3811, 0x18}, + {SC132GS_8BIT, 0x3813, 0x00}, + {SC132GS_8BIT, 0x3814, 0x11}, + {SC132GS_8BIT, 0x3815, 0x11}, + {SC132GS_8BIT, 0x3820, 0x00}, + {SC132GS_8BIT, 0x3821, 0x1e}, + {SC132GS_8BIT, 0x5002, 0x00}, + {SC132GS_8BIT, 0x0100, 0x01}, + {SC132GS_TOK_TERM, 0, 0} +}; + +struct sc132gs_resolution sc132gs_res_preview[] = { + { + .desc = "sc132gs_736x496_30fps", + .width = 736, + .height = 496, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc132gs_736x496_30fps, + }, + { + .desc = "sc132gs_1616x1216_30fps", + .width = 1616, + .height = 1216, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc132gs_1616x1216_30fps, + }, + { + .desc = "sc132gs_5M_30fps", + .width = 2576, + .height = 1456, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc132gs_2576x1456_30fps, + }, + { + .desc = "sc132gs_5M_30fps", + .width = 2576, + .height = 1936, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc132gs_2576x1936_30fps, + }, +}; +#define N_RES_PREVIEW (ARRAY_SIZE(sc132gs_res_preview)) + +struct sc132gs_resolution sc132gs_res_still[] = { + { + .desc = "sc132gs_736x496_30fps", + .width = 736, + .height = 496, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc132gs_736x496_30fps, + }, + { + .desc = "sc132gs_1424x1168_30fps", + .width = 1424, + .height = 1168, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc132gs_1424x1168_30fps, + }, + { + .desc = "sc132gs_1616x1216_30fps", + .width = 1616, + .height = 1216, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc132gs_1616x1216_30fps, + }, + { + .desc = "sc132gs_5M_30fps", + .width = 2592, + .height = 1456, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc132gs_2592x1456_30fps, + }, + { + .desc = "sc132gs_5M_30fps", + .width = 2592, + .height = 1944, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc132gs_2592x1944_30fps, + }, +}; +#define N_RES_STILL (ARRAY_SIZE(sc132gs_res_still)) + +struct sc132gs_resolution sc132gs_res_video[] = { + { + .desc = "sc132gs_736x496_30fps", + .width = 736, + .height = 496, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 1, + .regs = sc132gs_736x496, + }, + { + .desc = "sc132gs_336x256_30fps", + .width = 336, + .height = 256, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 1, + .regs = sc132gs_336x256, + }, + { + .desc = "sc132gs_368x304_30fps", + .width = 368, + .height = 304, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 1, + .regs = sc132gs_368x304, + }, + { + .desc = "sc132gs_192x160_30fps", + .width = 192, + .height = 160, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 1, + .regs = sc132gs_192x160, + }, + { + .desc = "sc132gs_1296x736_30fps", + .width = 1296, + .height = 736, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 0, + .regs = sc132gs_1296x736, + }, + { + .desc = "sc132gs_1296x976_30fps", + .width = 1296, + .height = 976, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 0, + .regs = sc132gs_1296x976, + }, + { + .desc = "sc132gs_1636P_30fps", + .width = 1636, + .height = 1096, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc132gs_1636p_30fps, + }, + { + .desc = "sc132gs_1080P_30fps", + .width = 1940, + .height = 1096, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc132gs_1940x1096, + }, + { + .desc = "sc132gs_5M_30fps", + .width = 2592, + .height = 1456, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc132gs_2592x1456_30fps, + }, + { + .desc = "sc132gs_5M_30fps", + .width = 2592, + .height = 1944, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc132gs_2592x1944_30fps, + }, +}; + +#define N_RES_VIDEO (ARRAY_SIZE(sc132gs_res_video)) + +static struct sc132gs_resolution *sc132gs_res = sc132gs_res_preview; +static unsigned long N_RES = N_RES_PREVIEW; +#endif +#endif diff --git a/drivers/SC2310/3aconfig_SC2310.json b/drivers/SC2310/3aconfig_SC2310.json new file mode 100644 index 0000000..3817d99 --- /dev/null +++ b/drivers/SC2310/3aconfig_SC2310.json @@ -0,0 +1,518 @@ + { + "root" : [ + { + "classname" : "Aev1", + "enable" : false + }, + { + "classname" : "Aev2", + "enable" : false, + "motionThreshold" : 0.5, + "roiWeight" : 0.6, + "motionFilter" : 0.5, + "maxSensorAgain" : 15.5, + "maxSensorDgain" : 1, + "maxIspDgain" : 2.6, + "setPoint" : 30, + "roi_start" : 12, + "roi_end" : 20, + "roi_weight" : 1 + }, + { + "classname" : "Aehdr", + "enable" : false, + "motionThreshold" : 0.5, + "roi_start" : 8, + "roi_end" : 24, + "roi_weight" : 0.5, + "faceWeight" : 0.6, + "motionFilter" : 0.5, + "maxSensorAgain" : 15.5, + "maxSensorDgain" : 1, + "maxIspDgain" : 12, + "setPoint" : 30 + }, + { + "classname" : "AdaptiveAe", + "enable" : true, + "motionThreshold" : 0.7, + "roi_start" : 7, + "roi_end" : 20, + "roi_weight" : 1, + "faceWeight" : 0.6, + "motionFilter" : 0.5, + "targetFilter" : 0.5, + "wdrContrast.min" : 150, + "wdrContrast.max" : 150, + "lowlight" : { + "linear_repress" : [0.8, 0.7, 0.5, 0.5, 0.4], + "linear_gain" : [4, 8, 16, 32, 100], + "hdr_repress" : [1, 0.8, 0.8, 0.8, 0.8], + "hdr_gain" : [4, 8, 16, 32, 100] + }, + "maxSensorAgain" : 15.5, + "maxSensorDgain" : 1, + "maxIspDgain" : 1, + "setPoint" : 60 + }, + { + "classname" : "Awbv2", + "enable" : true, + "illuorder" : "A, D50, D65, D75, TL84, F12, CWF", + "indoor" : [1, 1, 1, 1, 1, 1, 1], + "outdoor" : [1, 1, 1, 1, 1, 1, 1], + "transition" : [1, 1, 1, 1, 1, 1, 1], + "avg" : 0.0 + }, + { + "classname" : "IspController", + "enable" : true + }, + { + "classname" : "AutoHdr", + "enable" : false + }, + { + "classname" : "DciHist", + "enable" : false, + "gaussMeanPos" : 64, + "gaussSigmaPos" : 128, + "gaussAmpPos" : 1.0, + "gaussMeanNeg" : 0, + "gaussSigmaNeg" : 128, + "gaussAmpNeg" : 1.0 + }, + { + "classname" : "SensorController", + "enable" : true + }, + { + "classname" : "AGamma64", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "curve" : [ + [93, 135, 176, 221, 267, 305, 343, 374, 398, 421, 444, 464, 484, 501, 521, 541, 558, 575, 591, 608, 624, 638, 650, 662, 675, 686, 697, 708, 719, 730, 741, 751, 761, 772, 782, 791, 801, 810, 819, 829, 837, 847, 856, 864, 873, 882, 890, 898, 907, 914, 923, 930, 939, 946, 954, 962, 969, 976, 985, 992, 999, 1006, 1014, 1023], + [93, 135, 176, 221, 267, 305, 343, 374, 398, 421, 444, 464, 484, 501, 521, 541, 558, 575, 591, 608, 624, 638, 650, 662, 675, 686, 697, 708, 719, 730, 741, 751, 761, 772, 782, 791, 801, 810, 819, 829, 837, 847, 856, 864, 873, 882, 890, 898, 907, 914, 923, 930, 939, 946, 954, 962, 969, 976, 985, 992, 999, 1006, 1014, 1023], + [93, 135, 176, 221, 267, 305, 343, 374, 398, 421, 444, 464, 484, 501, 521, 541, 558, 575, 591, 608, 624, 638, 650, 662, 675, 686, 697, 708, 719, 730, 741, 751, 761, 772, 782, 791, 801, 810, 819, 829, 837, 847, 856, 864, 873, 882, 890, 898, 907, 914, 923, 930, 939, 946, 954, 962, 969, 976, 985, 992, 999, 1006, 1014, 1023], + [93, 135, 176, 221, 267, 305, 343, 374, 398, 421, 444, 464, 484, 501, 521, 541, 558, 575, 591, 608, 624, 638, 650, 662, 675, 686, 697, 708, 719, 730, 741, 751, 761, 772, 782, 791, 801, 810, 819, 829, 837, 847, 856, 864, 873, 882, 890, 898, 907, 914, 923, 930, 939, 946, 954, 962, 969, 976, 985, 992, 999, 1006, 1014, 1023], + [93, 135, 176, 221, 267, 305, 343, 374, 398, 421, 444, 464, 484, 501, 521, 541, 558, 575, 591, 608, 624, 638, 650, 662, 675, 686, 697, 708, 719, 730, 741, 751, 761, 772, 782, 791, 801, 810, 819, 829, 837, 847, 856, 864, 873, 882, 890, 898, 907, 914, 923, 930, 939, 946, 954, 962, 969, 976, 985, 992, 999, 1006, 1014, 1023], + [18, 35, 53, 70, 86, 103, 120, 136, 153, 169, 186, 202, 219, 235, 251, 267, 283, 300, 316, 332, 348, 364, 380, 396, 412, 428, 444, 460, 476, 491, 507, 523, 539, 555, 571, 586, 602, 618, 634, 649, 665, 681, 696, 712, 728, 743, 759, 775, 790, 806, 821, 837, 853, 868, 884, 899, 914, 930, 945, 961, 977, 992, 1008, 1023] + ] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "curve" : [ + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [98, 159, 225, 274, 314, 342, 367, 391, 413, 433, 453, 471, 489, 506, 522, 538, 554, 568, 583, 597, 610, 624, 637, 649, 662, 674, 685, 697, 708, 720, 731, 741, 752, 763, 773, 783, 793, 803, 812, 822, 831, 841, 850, 859, 868, 877, 886, 894, 903, 911, 920, 928, 936, 944, 952, 960, 968, 976, 984, 991, 999, 1006, 1014, 1023], + [73, 113, 147, 176, 203, 228, 251, 273, 295, 315, 335, 354, 372, 390, 407, 425, 441, 457, 473, 489, 504, 519, 534, 549, 563, 577, 591, 605, 619, 632, 646, 659, 672, 685, 697, 710, 722, 735, 747, 759, 771, 783, 794, 806, 818, 829, 840, 852, 863, 874, 885, 896, 907, 918, 928, 939, 950, 960, 971, 981, 991, 1002, 1012, 1023], + [73, 113, 147, 176, 203, 228, 251, 273, 295, 315, 335, 354, 372, 390, 407, 425, 441, 457, 473, 489, 504, 519, 534, 549, 563, 577, 591, 605, 619, 632, 646, 659, 672, 685, 697, 710, 722, 735, 747, 759, 771, 783, 794, 806, 818, 829, 840, 852, 863, 874, 885, 896, 907, 918, 928, 939, 950, 960, 971, 981, 991, 1002, 1012, 1023] + ] + } + ] + }, + { + "classname" : "ACproc", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "contrast" : [1.2, 1.1, 1, 1, 1, 1], + "brightness" : [0, 0, 0, 0, 0, 0], + "saturation" : [1.2, 1.05, 0.92, 0.80, 0.75, 0.6], + "hue" : [0, 0, 0, 0, 0, 0], + "chromaout" : [2, 2, 2, 2, 2, 2], + "lumain" : [2, 2, 2, 2, 2, 2], + "lumaout" : [2, 2, 2, 2, 2, 2] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "contrast" : [1.0, 1.0, 1.3, 1.3, 1.5, 1.85], + "brightness" : [-12, -12, -24, -30, -16, 0], + "saturation" : [1.25, 1.0, 0.9, 0.8, 0.7, 0.6], + "hue" : [0, 0, 0, 0, 0, 0], + "chromaout" : [2, 2, 2, 2, 2, 2], + "lumain" : [2, 2, 2, 2, 2, 2], + "lumaout" : [2, 2, 2, 2, 2, 2] + } + ] + }, + { + "classname" : "Aee", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "strength" : [100, 100, 100, 100, 100, 100], + "srcStrength" : [1, 1, 1, 1, 1, 1], + "yup" : [1024, 1024, 1024, 1024, 1024, 1024], + "ydown" : [1024, 1024, 1024, 1024, 1024, 1024], + "uvgain" : [0, 0, 0, 0, 0, 0], + "edgegain" : [1000, 1000, 1000, 1000, 500, 200] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "strength" : [100, 100, 100, 100, 100, 100], + "srcStrength" : [1, 1, 1, 1, 1, 1], + "yup" : [5000, 5000, 5000, 5000, 5000, 5000], + "ydown" : [8000, 8000, 5000, 5000, 5000, 5000], + "uvgain" : [0, 0, 0, 0, 0, 0], + "edgegain" : [2000, 2000, 2000, 1500, 600, 200] + } + ] + }, + { + "classname" : "ACa", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enableCA" : [1, 1, 1, 1, 1, 1], + "enableDCI" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "curveCA" : [ + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024] + ], + "curveDCI" : [ + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1023, 1023], + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1028, 1023], + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1028, 1023], + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1028, 1023], + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1028, 1023], + [0, 0, 0, 0, 15, 35, 56, 76, 97, 122, 143, 163, 184, 199, 219, 240, 260, 276, 296, 312, 332, 347, 368, 383, 398, 414, 429, 439, 455, 470, 480, 491, 496, 501, 511, 521, 531, 547, 557, 572, 588, 598, 613, 634, 649, 664, 680, 695, 716, 731, 751, 772, 787, 808, 828, 843, 864, 884, 905, 925, 946, 966, 987, 1007, 1028, 1023] + ] + }, + { + "hdr" : true, + "enableCA" : [0, 0, 1, 1, 1, 1], + "enableDCI" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "curveCA" : [ + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024], + [0, 0, 0, 48, 378, 600, 747, 845, 909, 950, 977, 995, 1006, 1012, 1017, 1019, 1021, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024] + ], + "curveDCI" : [ + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022], + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022], + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022], + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022], + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022], + [0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 14, 20, 27, 34, 43, 53, 64, 76, 90, 105, 121, 139, 158, 178, 199, 221, 244, 268, 292, 317, 343, 368, 394, 420, 445, 471, 495, 520, 544, 568, 592, 615, 638, 659, 681, 702, 722, 742, 762, 780, 799, 817, 834, 852, 868, 885, 901, 917, 933, 948, 963, 979, 995, 1010, 1022] + ] + } + ] + }, + { + "classname" : "ADmsc2", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "demoire_enable" : true, + "demoire_area_thr" : 16, + "demoire_sat_shrink" : 8, + "demoire_r2" : 256, + "demoire_r1" : 0, + "demoire_t2_shift" : 2, + "demoire_t1" : 180, + "demoire_edge_r2" : 256, + "demoire_edge_r1" : 20, + "demoire_edge_t2_shift" : 4, + "demoire_edge_t1" :20, + "depurple_enable" : true, + "depurple_red_sat" : true, + "depurple_blue_sat" : true, + "depurple_sat_shrink" : 8, + "depurple_thr" : 40, + "skin_enable" : true, + "cb_thr_max_2047" : 10, + "cb_thr_min_2047" : 8, + "cr_thr_max_2047" : 10, + "cr_thr_min_2047" : 8, + "y_thr_max_2047" : 10, + "y_thr_min_2047" : 8, + "tables" : [ + { + "hdr" : false, + "gains" : [1, 2, 4, 8, 16, 32], + "enableSharpen" : [1, 1, 1, 1, 1, 1], + "enableSharpenLine" : [0, 0, 0, 0, 0, 0], + "facblack" : [70, 60, 40, 20, 20, 0], + "facwhite" : [70, 60, 60, 40, 20, 0], + "maxblack" : [100, 100, 100, 100, 100, 100], + "maxwhite" : [100, 100, 100, 100, 100, 100], + "t1" : [0, 0, 0, 0, 0, 0], + "t2" : [0, 0, 0, 0, 0, 0], + "t3" : [0, 0, 0, 0, 0, 0], + "t4" : [0, 0, 0, 0, 0, 0], + "r1" : [0, 0, 0, 0, 0, 0], + "r2" : [128, 128, 128, 128, 128, 128], + "r3" : [256, 256, 256, 256, 256, 256], + "gdenoise" : [5, 5, 5, 5, 5, 5], + "gsharpen" : [8, 8, 8, 8, 8, 8], + "sharpen_line_shift2" : [6, 6, 6, 6, 6, 6], + "sharpen_line_shift1" : [5, 5, 5, 5, 5, 5], + "sharpen_line_t1" : [1000, 1000, 1000, 1000, 1000, 1000], + "sharpen_line_strength" : [100, 100, 100, 100, 100, 100], + "sharpen_line_r2" : [200, 200, 200, 200, 200, 200], + "sharpen_line_r1" : [5, 5, 5, 5, 5, 5] + }, + { + "hdr" : true, + "gains" : [1, 2, 4, 8, 16, 32], + "enableSharpen" : [0, 0, 0, 0, 0, 0], + "enableSharpenLine" : [0, 0, 0, 0, 0, 0], + "facblack" : [200, 200, 100, 50, 20, 20], + "facwhite" : [200, 200, 150, 80, 40, 20], + "maxblack" : [200, 200, 100, 100, 100, 100], + "maxwhite" : [200, 200, 200, 200, 200, 200], + "t1" : [0, 0, 0, 0, 0, 0], + "t2" : [0, 0, 0, 0, 0, 0], + "t3" : [0, 0, 0, 0, 0, 0], + "t4" : [0, 0, 0, 0, 0, 0], + "r1" : [0, 0, 0, 0, 0, 0], + "r2" : [128, 128, 128, 128, 128, 128], + "r3" : [256, 256, 256, 256, 256, 256], + "gdenoise" : [0, 0, 0, 0, 0, 0], + "gsharpen" : [16, 16, 16, 16, 16, 16], + "sharpen_line_shift2" : [6, 6, 6, 6, 6, 6], + "sharpen_line_shift1" : [5, 5, 5, 5, 5, 5], + "sharpen_line_t1" : [1000, 1000, 1000, 1000, 1000, 1000], + "sharpen_line_strength" : [100, 100, 100, 100, 100, 100], + "sharpen_line_r2" : [200, 200, 200, 200, 200, 200], + "sharpen_line_r1" : [5, 5, 5, 5, 5, 5] + } + ] + }, + { + "classname" : "AWdr4", + "forcecreate" : true, + "enable" : false, + "disable" : true, + "backlight" : true, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "backlight" : [0, 0.1, 0.2, 0.3, 0.4, 0.45], + "strength" : [128, 128, 128, 128, 128, 128], + "highStrength" : [20, 20, 20, 90, 90, 90], + "lowStrength" : [4, 8, 16, 24, 45, 64], + "globalStrength" : [0, 0, 0, 0, 0, 0], + "contrast" : [800, 800, 800, 800, 800, 800], + "flatStrength" : [0, 0, 0, 0, 0, 0], + "flatThreshold" : [0, 0, 0, 0, 0, 0] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 16, 32], + "backlight" : [0, 0.1, 0.2, 0.3, 0.4, 0.45], + "strength" : [128, 128, 128, 128, 128, 128], + "highStrength" : [20, 20, 20, 90, 90, 90], + "lowStrength" : [4, 8, 16, 24, 45, 64], + "globalStrength" : [0, 0, 0, 0, 0, 0], + "contrast" : [800, 800, 800, 800, 800, 800], + "flatStrength" : [0, 0, 0, 0, 0, 0], + "flatThreshold" : [0, 0, 0, 0, 0, 0] + } + ], + "entropy_slope": 200, + "entropy_base": 700, + "entropy" : [0, 0, 0, 2, 3, 6, 11, 22, 39, 67, 111, 177, 227, 266, 321, 355, 377, 355, 221, 0], + "gamma_down" : [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 9, 16, 36, 64, 136, 256, 576, 1023], + "gamma_up" : [0, 283121, 330313, 377512, 424723, 471961, 519250, 566650, 614235, 662241, 711077, 761540, 792420, 815280, 849436, 875575, 913530, 948975, 1002792, 1048575], + "?gamma_up" : [0, 1024, 34837, 56737, 82912, 116814, 162079, 223337, 306767, 420749, 576707, 735048, 745499, 755950, 776852, 797754, 839557, 881361, 964968, 1048575], + "gamma_pre" : [0, 31514, 36815, 42173, 47646, 53350, 59514, 66602, 75530, 88145, 108135, 142869, 175428, 207095, 269144, 330303, 442139, 571475, 810472, 1048575] + }, + { + + "classname" : "A3dnrv3", + "forcecreate" : false, + "enable" : false, + "disable" : false, + "autonoiseLevel": true, + "tnr_en" : false, + "nlm_en" : true, + "tables" : [ + { + "hdr" : false, + "enable" : [0, 0, 0, 0, 0, 0, 0], + "gains" : [1, 2, 4, 8, 16, 32], + "filterLen" : [100, 150, 200, 300, 400, 500], + "filterLen2" : [10, 10, 10, 10, 10, 10], + "motionSlope" : [1, 1, 1, 1, 1, 1], + "noiseLevel" : [25, 40, 60, 80, 100, 120], + "sadweight" : [8, 8, 8, 8, 8, 8], + "motionInvFactor" : [20000, 20000, 20000, 20000, 20000, 20000], + "noisemodel_a" : [0.45071, 0.85596, 1.561850, 2.219000, 3.9409, 5.2362], + "noisemodel_b" : [0.000065, 9.7098, 140.351654, 219.965805, 284.8835, 344.9119], + "autoStrength" : [1.5, 1.5, 1.5, 1.5, 1.5, 1.5], + "motion_dilate_en" : [1, 1, 1, 1, 1, 1], + "motion_erode_en" : [1, 1, 1, 1, 1, 1], + "pregamma_en" : [1, 1, 1, 1, 1, 1], + "strength" : [120, 120, 120, 120, 120, 120], + "range_h" : [7, 7, 7, 7, 7, 7], + "range_v" : [3, 3, 3, 3, 3, 3], + "dialte_h" : [3, 3, 3, 3, 3, 3], + "preweight" : [8, 8, 8, 8, 8, 8], + "noise_thresh_factor" : [2, 2, 2, 2, 2, 2], + "moving_pixel_thresh" : [0.6, 0.6, 0.6, 0.6, 0.6, 0.6] + }, + { + "hdr" : true, + "enable" : [0, 0, 0, 0, 0, 0, 0], + "gains" : [1, 2, 4, 8, 16, 32], + "filterLen" : [100, 150, 200, 300, 400, 500], + "filterLen2" : [10, 10, 10, 10, 10, 10], + "motionSlope" : [1, 1, 1, 1, 1, 1], + "noiseLevel" : [25, 40, 60, 80, 100, 120], + "sadweight" : [8, 8, 8, 8, 8, 8], + "motionInvFactor" : [20000, 20000, 20000, 20000, 20000, 20000], + "noisemodel_a" : [0.45071, 0.85596, 1.561850, 2.219000, 3.9409, 5.2362], + "noisemodel_b" : [0.000065, 9.7098, 140.351654, 219.965805, 284.8835, 344.9119], + "autoStrength" : [1.5, 1.5, 1.5, 1.5, 1.5, 1.5], + "motion_dilate_en" : [1, 1, 1, 1, 1, 1], + "motion_erode_en" : [1, 1, 1, 1, 1, 1], + "pregamma_en" : [1, 1, 1, 1, 1, 1], + "strength" : [120, 120, 120, 120, 120, 120], + "range_h" : [7, 7, 7, 7, 7, 7], + "range_v" : [3, 3, 3, 3, 3, 3], + "dialte_h" : [3, 3, 3, 3, 3, 3], + "preweight" : [8, 8, 8, 8, 8, 8], + "noise_thresh_factor" : [2, 2, 2, 2, 2, 2], + "moving_pixel_thresh" : [1, 1, 1, 1, 1, 1] + } + ] + }, + { + "classname" : "A2dnrv5", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 12, 16, 20, 24, 32, 40], + "strength" : [2, 2, 2, 2, 2, 2, 2, 2, 2, 2], + "sigma" : [2, 2, 2, 5, 6, 6, 11, 11, 11, 14], + "blendstatic" : [100, 100, 100, 100, 100, 90, 90, 35, 35, 40], + "blendmotion" : [100, 100, 100, 100, 100, 90, 90, 100, 100, 100] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 12, 16, 20, 24, 32, 40], + "strength" : [1, 1, 1, 1, 1, 1, 2, 2, 2, 2], + "sigma" : [5, 5, 5, 8, 8, 8, 11, 11, 11, 14], + "blendstatic" : [100, 100, 100, 100, 100, 100, 100, 35, 35, 40], + "blendmotion" : [100, 100, 100, 100, 100, 100, 100, 100, 100, 100] + } + ] + }, + { + "classname" : "ADpf", + "forcecreate" : true, + "enable" : true, + "disable" : false, + "tables" : [ + { + "hdr" : false, + "enable" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 12, 16, 20, 24, 32, 40], + "gradient" : [0.1, 0.2, 0.4, 0.7, 1, 1.5, 2, 2.5, 3, 3.5], + "offset" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "Min" : [1, 1, 1, 1, 1, 1, 1, 2, 4, 16], + "Div" : [64, 64, 64, 65, 65, 65, 65, 65, 65, 65], + "sigma_g" : [2, 2, 3, 3, 3, 3, 4, 4, 4, 4], + "sigma_rb" : [2, 2, 3, 3, 3, 3, 4, 4, 4, 4], + "curve" : [ + [4095, 4095, 3677, 3068, 2686, 2219, 1933, 1735, 1587, 1379, 1235, 1129, 979, 877, 801, 742, 695], + [4095, 4056, 2910, 2388, 2073, 1697, 1471, 1317, 1203, 1042, 933, 852, 738, 660, 603, 558, 523], + [3688, 2169, 1687, 1428, 1260, 1050, 918, 827, 758, 660, 592, 542, 470, 421, 385, 357, 335], + [2254, 1553, 1258, 1085, 968, 816, 718, 649, 597, 521, 469, 430, 374, 335, 307, 284, 267], + [1060, 883, 772, 695, 637, 555, 498, 455, 422, 373, 338, 311, 272, 245, 225, 209, 196], + [580, 524, 481, 448, 420, 378, 346, 321, 301, 270, 247, 229, 202, 183, 168, 157, 148], + [368, 346, 328, 312, 298, 276, 257, 242, 230, 209, 193, 181, 162, 147, 136, 127, 120], + [214, 206, 199, 192, 186, 175, 166, 159, 152, 141, 132, 124, 112, 103, 96, 91, 86], + [158, 152, 147, 142, 138, 130, 124, 118, 113, 105, 99, 93, 84, 78, 72, 68, 64], + [127, 124, 121, 118, 115, 110, 106, 103, 99, 93, 88, 84, 77, 72, 68, 64, 61] + ] + }, + { + "hdr" : true, + "enable" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "gains" : [1, 2, 4, 8, 12, 16, 20, 24, 32, 40], + "gradient" : [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], + "offset" : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "Min" : [16, 16, 16, 16, 16, 16, 16, 16, 16, 16], + "Div" : [64, 64, 64, 64, 64, 64, 64, 64, 64, 64], + "sigma_g" : [4, 4, 4, 4, 4, 4, 4, 4, 4, 4], + "sigma_rb" : [4, 4, 4, 4, 4, 4, 4, 4, 4, 4], + "curve" : [ + [4095, 4095, 3677, 3068, 2686, 2219, 1933, 1735, 1587, 1379, 1235, 1129, 979, 877, 801, 742, 695], + [4095, 4056, 2910, 2388, 2073, 1697, 1471, 1317, 1203, 1042, 933, 852, 738, 660, 603, 558, 523], + [3688, 2169, 1687, 1428, 1260, 1050, 918, 827, 758, 660, 592, 542, 470, 421, 385, 357, 335], + [2254, 1553, 1258, 1085, 968, 816, 718, 649, 597, 521, 469, 430, 374, 335, 307, 284, 267], + [1060, 883, 772, 695, 637, 555, 498, 455, 422, 373, 338, 311, 272, 245, 225, 209, 196], + [580, 524, 481, 448, 420, 378, 346, 321, 301, 270, 247, 229, 202, 183, 168, 157, 148], + [368, 346, 328, 312, 298, 276, 257, 242, 230, 209, 193, 181, 162, 147, 136, 127, 120], + [214, 206, 199, 192, 186, 175, 166, 159, 152, 141, 132, 124, 112, 103, 96, 91, 86], + [158, 152, 147, 142, 138, 130, 124, 118, 113, 105, 99, 93, 84, 78, 72, 68, 64], + [127, 124, 121, 118, 115, 110, 106, 103, 99, 93, 88, 84, 77, 72, 68, 64, 61] + ] + } + ] + }, + { + "classname" : "ABlc", + "forcecreate" : true, + "enable" : true, + "tables" : [ + { + "hdr" : false, + "gains" : [1, 16], + "blc" : [256, 256] + }, + { + "hdr" : true, + "gains" : [1, 16], + "blc" : [256, 256] + } + ] + } + ] +} diff --git a/drivers/SC2310/CMakeLists.txt b/drivers/SC2310/CMakeLists.txt new file mode 100644 index 0000000..ae10818 --- /dev/null +++ b/drivers/SC2310/CMakeLists.txt @@ -0,0 +1,35 @@ +cmake_minimum_required(VERSION 3.1.0) + +# define module name & interface version +set (module sc2310) +string(TOUPPER ${module} SENSOR_NAME) + +# we want to compile all .c files as default +file(GLOB libsources ${SENSOR_NAME}.c ) + +# set public headers, these get installed +#file(GLOB pub_headers include/*.h) + +#include_directories() + +add_library(${module} SHARED ${libsources}) + +add_custom_target(${module}.drv + ALL + COMMAND ${CMAKE_COMMAND} -E copy lib${module}.so ${LIB_ROOT}/rootfs/usr/share/vi/tuningtool/bin/${module}.drv + COMMAND ${CMAKE_COMMAND} -E copy lib${module}.so ${LIB_ROOT}/rootfs/usr/lib/lib${module}.so + COMMAND ${CMAKE_COMMAND} -E make_directory ${LIB_ROOT}/rootfs/usr/share/vi/isp/test/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/*.xml ${LIB_ROOT}/rootfs/usr/share/vi/isp/test/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/${SENSOR_NAME}*.txt ${LIB_ROOT}/rootfs/usr/share/vi/isp/test/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/*.json ${LIB_ROOT}/rootfs/usr/share/vi/isp/test/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/*.xml ${LIB_ROOT}/rootfs/usr/share/vi/tuningtool/bin/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/${SENSOR_NAME}*.txt ${LIB_ROOT}/rootfs/usr/share/vi/tuningtool/bin/ + COMMAND ${CMAKE_COMMAND} -E copy ${LIB_ROOT}/../drivers/${SENSOR_NAME}/*.json ${LIB_ROOT}/rootfs/usr/share/vi/tuningtool/bin/ + DEPENDS ${module} + COMMENT "Copying ${module} driver module" + ) + +#install(FILES ${LIB_ROOT}/${CMAKE_BUILD_TYPE}/lib/lib${module}.so.${${module}_INTERFACE_CURRENT} +# DESTINATION ${CMAKE_INSTALL_PREFIX}/bin +# RENAME ${module}.drv +# ) \ No newline at end of file diff --git a/drivers/SC2310/SC2310.c b/drivers/SC2310/SC2310.c new file mode 100644 index 0000000..d90315f --- /dev/null +++ b/drivers/SC2310/SC2310.c @@ -0,0 +1,1882 @@ +/******************************************************************************\ |* Copyright (c) 2020 by VeriSilicon Holdings Co., Ltd. ("VeriSilicon") *| |* All Rights Reserved. *| |* *| |* The material in this file is confidential and contains trade secrets of *| |* of VeriSilicon. This is proprietary information owned or licensed by *| |* VeriSilicon. No part of this work may be disclosed, reproduced, copied, *| |* transmitted, or used in any way for any purpose, without the express *| |* written permission of VeriSilicon. *| |* *| +\******************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "SC2310_priv.h" +#include "sc2310.h" + +CREATE_TRACER( SC2310_INFO , "SC2310: ", INFO, 0); +CREATE_TRACER( SC2310_WARN , "SC2310: ", WARNING, 1); +CREATE_TRACER( SC2310_ERROR, "SC2310: ", ERROR, 1); +CREATE_TRACER( SC2310_DEBUG, "SC2310: ", INFO, 1); +CREATE_TRACER( SC2310_REG_INFO , "SC2310: ", INFO, 1); +CREATE_TRACER( SC2310_REG_DEBUG, "SC2310: ", INFO, 1); + +#ifdef SUBDEV_V4L2 +#include +#include +#include +#include +#include +#undef TRACE +#define TRACE(x, ...) +#endif + +#define SC2310_MIN_GAIN_STEP ( 1.0f ) /**< min gain step size used by GUI (hardware min = 1/16; 1/16..32/16 depending on actual gain ) */ +#define SC2310_MAX_GAIN_AEC ( 35.0f ) /**< max. gain used by the AEC (arbitrarily chosen, hardware limit = 62.0, driver limit = 32.0 ) */ +#define SC2310_VS_MAX_INTEGRATION_TIME (0.0018) + +/***************************************************************************** + *Sensor Info +*****************************************************************************/ +static const char SensorName[16] = "SC2310"; + +static struct vvcam_mode_info psc2310_mode_info[] = { + { + .index = 0, + .width = 640, + .height = 480, + .fps = 26, + .hdr_mode = SENSOR_MODE_LINEAR, + .bit_width = 12, + .bayer_pattern = BAYER_BGGR, //BAYER_RGGB, //BAYER_BGGR, //BAYER_GBRG, //, // BAYER_GRBG, + .mipi_phy_freq = 395, //mbps + .mipi_line_num = 2, + .preg_data = (void *)"sc2310 sensor liner mode, raw12, img resolution is 640*480", + }, + { + .index = 1, + .width = 1920, + .height = 1088, + .fps = 26, + .hdr_mode = SENSOR_MODE_LINEAR, + .bit_width = 12, + .bayer_pattern = BAYER_BGGR, //BAYER_RGGB, //BAYER_BGGR, //, //, // BAYER_GRBG, + .mipi_phy_freq = 395, //mbps + .mipi_line_num = 2, + .preg_data = (void *)"sc2310 sensor liner mode, raw12, img resolution is 1920*1088", + }, + { + .index = 2, + .width = 1920, + .height = 1080, + .fps = 30, + .hdr_mode = SENSOR_MODE_LINEAR, + .bit_width = 10, + .bayer_pattern = BAYER_BGGR, + .mipi_phy_freq = 371, //mbps + .mipi_line_num = 2, + .preg_data = (void *)"sc2310 sensor liner mode, raw10, img resolution is 1920*1080", + }, + /* + { + .index = 3, + .width = 1920, + .height = 1088, + .fps = 30, + .hdr_mode = SENSOR_MODE_LINEAR, + .bit_width = 10, + .bayer_pattern = BAYER_BGGR, + .mipi_phy_freq = 445, //mbps + .mipi_line_num = 2, + .preg_data = (void *)"sc2310 sensor liner mode, raw10, img resolution is 1920*1080", + }, + */ +}; + +static RESULT SC2310_IsiRegisterWriteIss(IsiSensorHandle_t handle, const uint32_t address, const uint32_t value); + +//gain is dst value, set_gain is actual value + +typedef struct { + int ana_reg_val; + float step; + float max_val; +} sc2310_gain_map_t; + +static sc2310_gain_map_t sc2310_gain_map[] = { + {0x03, 0.015, 1}, + {0x03, 0.015, 1.984}, + {0x07, 0.031, 2.688}, + {0x023, 0.043, 5.398}, + {0x027, 0.085, 10.795}, + {0x02f, 0.170, 21.590}, + {0x03f, 0.340, 35.360}, +}; + +static int sc2310_set_gain(IsiSensorHandle_t handle, float gain, float *set_gain) +{ +//Normal 模式/ HDR 模式下的长曝光数据 +#define ANA_GAIN 0x3e08 +#define ANA_FINE 0x3e09 +//HDR 模式下的短曝光数据 +#define ANA_VS_GAIN 0x3e08 +#define ANA_VS_FINE 0x3e09 + + int ret = 0; + int i = 0; + uint32_t ana_gain_val = 0; + uint32_t ana_fine_val = 0; + + if (gain <= 1.0) { + ana_gain_val = 0x3; + ana_fine_val = 0x40; + *set_gain = 1; + } else if (gain >= 35.360) { + ana_gain_val = 0x3f; + ana_fine_val = 0x7f; + *set_gain = 35.360; + } else { + for(i = 0; i < sizeof(sc2310_gain_map) / sizeof(sc2310_gain_map[0]); i++) { + if (sc2310_gain_map[i].max_val > gain) { + ana_gain_val = sc2310_gain_map[i].ana_reg_val; + ana_fine_val = 0x40 + (gain - sc2310_gain_map[i - 1].max_val) / sc2310_gain_map[i].step; + *set_gain = sc2310_gain_map[i - 1].max_val + (gain - sc2310_gain_map[i - 1].max_val) / sc2310_gain_map[i].step; + break; + } + } + } + + + ret |= SC2310_IsiRegisterWriteIss(handle, ANA_GAIN, ana_gain_val); + ret |= SC2310_IsiRegisterWriteIss(handle, ANA_FINE, ana_fine_val); + + if (ret != 0) { + return -1; + } + + return ret; +} + + +long __sc2310_set_exposure(IsiSensorHandle_t handle, int coarse_itg, + int gain, int digitgain, SC2310_EXPOSURE_SETTING_t type) +{ + + return 0; +} + +static RESULT SC2310_IsiSensorSetPowerIss(IsiSensorHandle_t handle, bool_t on) { + RESULT result = RET_SUCCESS; + + int ret = 0; + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + if (pSC2310Ctx == NULL || pSC2310Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pSC2310Ctx->IsiCtx.HalHandle; + + TRACE(SC2310_INFO, "%s (enter)\n", __func__); + + int32_t enable = on; + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_POWER, &enable); + if (ret != 0) { + // to do + //TRACE(SC2310_ERROR, "%s: sensor set power error!\n", __func__); + //return (RET_FAILURE); + } + + TRACE(SC2310_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT SC2310_IsiResetSensorIss(IsiSensorHandle_t handle) { + RESULT result = RET_SUCCESS; + int ret = 0; + + + TRACE(SC2310_INFO, "%s (enter)\n", __func__); + + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + if (pSC2310Ctx == NULL || pSC2310Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pSC2310Ctx->IsiCtx.HalHandle; + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_RESET, NULL); + if (ret != 0) { + TRACE(SC2310_ERROR, "%s: sensor reset error!\n", __func__); + return (RET_FAILURE); + } + sleep(0.01); + + ret = SC2310_IsiRegisterWriteIss(handle, 0x103, 1); + if (ret != 0) { + TRACE(SC2310_ERROR, "%s: sensor reset error!\n", __func__); + return (RET_FAILURE); + } + + sleep(0.01); + + ret = SC2310_IsiRegisterWriteIss(handle, 0x100, 0); + if (ret != 0) { + TRACE(SC2310_ERROR, "%s: sensor reset error!\n", __func__); + return (RET_FAILURE); + } + + TRACE(SC2310_INFO, "%s (exit)\n", __func__); + return (result); +} + +#ifdef SUBDEV_CHAR +static RESULT SC2310_IsiSensorSetClkIss(IsiSensorHandle_t handle, uint32_t clk) { + RESULT result = RET_SUCCESS; + int32_t ret = 0; + + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + if (pSC2310Ctx == NULL || pSC2310Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pSC2310Ctx->IsiCtx.HalHandle; + + TRACE(SC2310_INFO, "%s (enter)\n", __func__); + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_CLK, &clk); + if (ret != 0) { + // to do + //TRACE(SC2310_ERROR, "%s: sensor set clk error!\n", __func__); + //return (RET_FAILURE); + } + + TRACE(SC2310_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT SC2310_IsiSensorGetClkIss + (IsiSensorHandle_t handle, uint32_t * pclk) { + RESULT result = RET_SUCCESS; + int ret = 0; + + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + if (pSC2310Ctx == NULL || pSC2310Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pSC2310Ctx->IsiCtx.HalHandle; + + TRACE(SC2310_INFO, "%s (enter)\n", __func__); + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_CLK, pclk); + if (ret != 0) { + // to do + //TRACE(SC2310_ERROR, "%s: sensor get clk error!\n", __func__); + //return (RET_FAILURE); + } + + TRACE(SC2310_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT SC2310_IsiConfigSensorSCCBIss(IsiSensorHandle_t handle) +{ + RESULT result = RET_SUCCESS; + int ret = 0; + TRACE(SC2310_INFO, "%s (enter)\n", __func__); + + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + if (pSC2310Ctx == NULL || pSC2310Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pSC2310Ctx->IsiCtx.HalHandle; + + static const IsiSccbInfo_t SensorSccbInfo = { + .slave_addr = (0x30), //0x30 or 0x32 + .addr_byte = 2, + .data_byte = 1, + }; + + struct vvcam_sccb_cfg_s sensor_sccb_config; + sensor_sccb_config.slave_addr = SensorSccbInfo.slave_addr; + sensor_sccb_config.addr_byte = SensorSccbInfo.addr_byte; + sensor_sccb_config.data_byte = SensorSccbInfo.data_byte; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_SENSOR_SCCB_CFG, + &sensor_sccb_config); + if (ret != 0) { + TRACE(SC2310_ERROR, "%s: sensor config sccb info error!\n", + __func__); + return (RET_FAILURE); + } + + TRACE(SC2310_INFO, "%s (exit) result = %d\n", __func__, result); + return (result); + + return RET_SUCCESS; +} +#endif + +static RESULT SC2310_IsiRegisterReadIss + (IsiSensorHandle_t handle, const uint32_t address, uint32_t * p_value) { + RESULT result = RET_SUCCESS; + int32_t ret = 0; + TRACE(SC2310_INFO, "%s (enter)\n", __func__); + + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + if (pSC2310Ctx == NULL || pSC2310Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pSC2310Ctx->IsiCtx.HalHandle; + + struct vvcam_sccb_data sccb_data; + sccb_data.addr = address; + sccb_data.data = 0; + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_READ_REG, &sccb_data); + if (ret != 0) { + TRACE(SC2310_ERROR, "%s: read sensor register error!\n", + __func__); + return (RET_FAILURE); + } + + *p_value = sccb_data.data; + + TRACE(SC2310_INFO, "%s (exit) result = %d\n", __func__, result); + return (result); +} + +static RESULT SC2310_IsiRegisterWriteIss + (IsiSensorHandle_t handle, const uint32_t address, const uint32_t value) { + RESULT result = RET_SUCCESS; + int ret = 0; + TRACE(SC2310_INFO, "%s (enter)\n", __func__); + + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + if (pSC2310Ctx == NULL || pSC2310Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pSC2310Ctx->IsiCtx.HalHandle; + + struct vvcam_sccb_data sccb_data; + sccb_data.addr = address; + sccb_data.data = value; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_WRITE_REG, &sccb_data); + if (ret != 0) { + TRACE(SC2310_ERROR, "%s: write sensor register error!\n", + __func__); + return (RET_FAILURE); + } + + TRACE(SC2310_INFO, "%s (exit) result = %d\n", __func__, result); + return (result); +} + +static RESULT SC2310_IsiQuerySensorSupportIss(HalHandle_t HalHandle, vvcam_mode_info_array_t *pSensorSupportInfo) +{ + //int ret = 0; + struct vvcam_mode_info_array *psensor_mode_info_arry; + + HalContext_t *pHalCtx = HalHandle; + if ( pHalCtx == NULL ) { + return RET_NULL_POINTER; + } + + psensor_mode_info_arry = pSensorSupportInfo; + psensor_mode_info_arry->count = sizeof(psc2310_mode_info) / sizeof(struct vvcam_mode_info); + memcpy(psensor_mode_info_arry->modes, psc2310_mode_info, sizeof(psc2310_mode_info)); + return RET_SUCCESS; +} + +static RESULT SC2310_IsiQuerySensorIss(IsiSensorHandle_t handle, vvcam_mode_info_array_t *pSensorInfo) +{ + RESULT result = RET_SUCCESS; + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + if (pSC2310Ctx == NULL || pSC2310Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pSC2310Ctx->IsiCtx.HalHandle; + SC2310_IsiQuerySensorSupportIss(pHalCtx,pSensorInfo); + + return result; +} + +static RESULT SC2310_IsiGetSensorModeIss(IsiSensorHandle_t handle,void *mode) +{ + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + if (pSC2310Ctx == NULL) { + return (RET_WRONG_HANDLE); + } + memcpy(mode,&(pSC2310Ctx->SensorMode), sizeof(pSC2310Ctx->SensorMode)); + + return ( RET_SUCCESS ); +} + +static RESULT SC2310_IsiCreateSensorIss(IsiSensorInstanceConfig_t * pConfig) { + RESULT result = RET_SUCCESS; + SC2310_Context_t *pSC2310Ctx; + + TRACE(SC2310_INFO, "%s (enter)\n", __func__); + + if (!pConfig || !pConfig->pSensor) + return (RET_NULL_POINTER); + + pSC2310Ctx = (SC2310_Context_t *) malloc(sizeof(SC2310_Context_t)); + if (!pSC2310Ctx) { + TRACE(SC2310_ERROR, "%s: Can't allocate sc2310 context\n", + __func__); + return (RET_OUTOFMEM); + } + + MEMSET(pSC2310Ctx, 0, sizeof(SC2310_Context_t)); + + result = HalAddRef(pConfig->HalHandle); + if (result != RET_SUCCESS) { + free(pSC2310Ctx); + return (result); + } + + pSC2310Ctx->IsiCtx.HalHandle = pConfig->HalHandle; + pSC2310Ctx->IsiCtx.pSensor = pConfig->pSensor; + pSC2310Ctx->GroupHold = BOOL_FALSE; + pSC2310Ctx->OldGain = 0; + pSC2310Ctx->OldIntegrationTime = 0; + pSC2310Ctx->Configured = BOOL_FALSE; + pSC2310Ctx->Streaming = BOOL_FALSE; + pSC2310Ctx->TestPattern = BOOL_FALSE; + pSC2310Ctx->isAfpsRun = BOOL_FALSE; + pSC2310Ctx->SensorMode.index = pConfig->SensorModeIndex; + pConfig->hSensor = (IsiSensorHandle_t)pSC2310Ctx; +#ifdef SUBDEV_CHAR + struct vvcam_mode_info *SensorDefaultMode = NULL; + for (int i=0; i < sizeof(psc2310_mode_info)/ sizeof(struct vvcam_mode_info); i++) + { + if (psc2310_mode_info[i].index == pSC2310Ctx->SensorMode.index) + { + SensorDefaultMode = &(psc2310_mode_info[i]); + break; + } + } + + if (SensorDefaultMode != NULL) + { + strcpy(pSC2310Ctx->SensorRegCfgFile, get_vi_config_path()); + switch(SensorDefaultMode->index) + { + case 0: + strcat(pSC2310Ctx->SensorRegCfgFile, + "SC2310_mipi2lane_640x480_raw12_30fps_init.txt"); + break; + case 1: + strcat(pSC2310Ctx->SensorRegCfgFile, + "SC2310_mipi2lane_1920x1088_raw12_30fps_init.txt"); + break; + case 2: + strcat(pSC2310Ctx->SensorRegCfgFile, + "SC2310_mipi2lane_1920x1080_raw10_30fps_init.txt"); + break; + + default: + break; + } + + if (access(pSC2310Ctx->SensorRegCfgFile, F_OK) == 0) { + pSC2310Ctx->KernelDriverFlag = 0; + memcpy(&(pSC2310Ctx->SensorMode),SensorDefaultMode,sizeof(struct vvcam_mode_info)); + } else { + pSC2310Ctx->KernelDriverFlag = 1; + } + }else + { + pSC2310Ctx->KernelDriverFlag = 1; + } + + result = SC2310_IsiSensorSetPowerIss(pSC2310Ctx, BOOL_TRUE); + + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + + uint32_t SensorClkIn = 0; + if (pSC2310Ctx->KernelDriverFlag) { + result = SC2310_IsiSensorGetClkIss(pSC2310Ctx, &SensorClkIn); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + } + + result = SC2310_IsiSensorSetClkIss(pSC2310Ctx, SensorClkIn); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + + if (!pSC2310Ctx->KernelDriverFlag) { + result = SC2310_IsiConfigSensorSCCBIss(pSC2310Ctx); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + + result = SC2310_IsiResetSensorIss(pSC2310Ctx); + RETURN_RESULT_IF_DIFFERENT(RET_SUCCESS, result); + + pSC2310Ctx->pattern = ISI_BPAT_BGBGGRGR; + + } +#endif + + TRACE(SC2310_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT SC2310_IsiGetRegCfgIss(const char *registerFileName, + struct vvcam_sccb_array *arry) +{ + if (NULL == registerFileName) { + TRACE(SC2310_ERROR, "%s:registerFileName is NULL\n", __func__); + return (RET_NULL_POINTER); + } +#ifdef SUBDEV_CHAR + FILE *fp = NULL; + fp = fopen(registerFileName, "rb"); + if (!fp) { + TRACE(SC2310_ERROR, "%s:load register file %s error!\n", + __func__, registerFileName); + return (RET_FAILURE); + } + + char LineBuf[512]; + uint32_t FileTotalLine = 0; + while (!feof(fp)) { + fgets(LineBuf, 512, fp); + FileTotalLine++; + } + + arry->sccb_data = + malloc(FileTotalLine * sizeof(struct vvcam_sccb_data)); + if (arry->sccb_data == NULL) { + TRACE(SC2310_ERROR, "%s:malloc failed NULL Point!\n", __func__, + registerFileName); + return (RET_FAILURE); + } + rewind(fp); + + arry->count = 0; + while (!feof(fp)) { + memset(LineBuf, 0, sizeof(LineBuf)); + fgets(LineBuf, 512, fp); + + int result = + sscanf(LineBuf, "0x%x 0x%x", + &(arry->sccb_data[arry->count].addr), + &(arry->sccb_data[arry->count].data)); + if (result != 2) + continue; + arry->count++; + + } +#endif + + return 0; +} + +static RESULT SC2310_IsiInitSensorIss(IsiSensorHandle_t handle) { + RESULT result = RET_SUCCESS; + + int ret = 0; + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + + HalContext_t *pHalCtx = (HalContext_t *) pSC2310Ctx->IsiCtx.HalHandle; + TRACE(SC2310_INFO, "%s (enter)\n", __func__); + + if (pSC2310Ctx == NULL) { + return (RET_WRONG_HANDLE); + } + + if (pSC2310Ctx->KernelDriverFlag) { + ; + } else { + struct vvcam_sccb_array arry; + result = SC2310_IsiGetRegCfgIss(pSC2310Ctx->SensorRegCfgFile, &arry); + if (result != 0) { + TRACE(SC2310_ERROR, + "%s:SC2310_IsiGetRegCfgIss error!\n", __func__); + return (RET_FAILURE); + } + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_WRITE_ARRAY, &arry); + if (ret != 0) { + TRACE(SC2310_ERROR, "%s:Sensor Write Reg arry error!\n", + __func__); + return (RET_FAILURE); + } + + switch(pSC2310Ctx->SensorMode.index) + { + case 0: + pSC2310Ctx->one_line_exp_time = 1.0 / (2.0 * 0x465 - 6.0) / 26.0; + pSC2310Ctx->FrameLengthLines = 2 * 0x465; + pSC2310Ctx->CurFrameLengthLines = pSC2310Ctx->FrameLengthLines; + pSC2310Ctx->MaxIntegrationLine = pSC2310Ctx->CurFrameLengthLines - 6; + pSC2310Ctx->MinIntegrationLine = 3; + pSC2310Ctx->AecMaxGain = 35; + pSC2310Ctx->AecMinGain = 1; + break; + case 1: + pSC2310Ctx->one_line_exp_time = 1.0 / (2 * 0x465 - 6.0) / 26.0; + pSC2310Ctx->FrameLengthLines = 2 * 0x465; + pSC2310Ctx->CurFrameLengthLines = pSC2310Ctx->FrameLengthLines; + pSC2310Ctx->MaxIntegrationLine = pSC2310Ctx->CurFrameLengthLines - 6; + pSC2310Ctx->MinIntegrationLine = 3; + pSC2310Ctx->AecMaxGain = 35; + pSC2310Ctx->AecMinGain = 1; + break; + case 2: + pSC2310Ctx->one_line_exp_time = 1.0 / (2 * 0x465 - 6.0) / 30.0; + pSC2310Ctx->FrameLengthLines = 2 * 0x465; + pSC2310Ctx->CurFrameLengthLines = pSC2310Ctx->FrameLengthLines; + pSC2310Ctx->MaxIntegrationLine = pSC2310Ctx->CurFrameLengthLines - 6; + pSC2310Ctx->MinIntegrationLine = 3; + pSC2310Ctx->AecMaxGain = 35; + pSC2310Ctx->AecMinGain = 1; + break; + + default: + return ( RET_NOTAVAILABLE ); + } + printf("pSC2310Ctx->one_line_exp_time %f\n", pSC2310Ctx->one_line_exp_time); + pSC2310Ctx->AecIntegrationTimeIncrement = pSC2310Ctx->one_line_exp_time; + pSC2310Ctx->AecMinIntegrationTime = + pSC2310Ctx->one_line_exp_time * pSC2310Ctx->MinIntegrationLine; + pSC2310Ctx->AecMaxIntegrationTime = + pSC2310Ctx->one_line_exp_time * pSC2310Ctx->FrameLengthLines; + + + pSC2310Ctx->MaxFps = pSC2310Ctx->SensorMode.fps; + pSC2310Ctx->MinFps = 1; + pSC2310Ctx->CurrFps = pSC2310Ctx->MaxFps; + } + + TRACE(SC2310_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT SC2310_IsiReleaseSensorIss(IsiSensorHandle_t handle) { + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(SC2310_INFO, "%s (enter)\n", __func__); + + if (pSC2310Ctx == NULL) + return (RET_WRONG_HANDLE); + + (void)SC2310_IsiSensorSetStreamingIss(pSC2310Ctx, BOOL_FALSE); + (void)SC2310_IsiSensorSetPowerIss(pSC2310Ctx, BOOL_FALSE); + (void)HalDelRef(pSC2310Ctx->IsiCtx.HalHandle); + + MEMSET(pSC2310Ctx, 0, sizeof(SC2310_Context_t)); + free(pSC2310Ctx); + TRACE(SC2310_INFO, "%s (exit)\n", __func__); + return (result); +} + +struct sc2310_fmt { + int width; + int height; + int fps; +}; + +static RESULT SC2310_IsiSetupSensorIss + (IsiSensorHandle_t handle, const IsiSensorConfig_t * pConfig) { + + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + HalContext_t *pHalCtx = (HalContext_t *) pSC2310Ctx->IsiCtx.HalHandle; + + RESULT result = RET_SUCCESS; + + TRACE(SC2310_INFO, "%s: (enter)\n", __func__); + + if (!pSC2310Ctx) { + TRACE(SC2310_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pConfig) { + TRACE(SC2310_ERROR, + "%s: Invalid configuration (NULL pointer detected)\n", + __func__); + return (RET_NULL_POINTER); + } + + if (pSC2310Ctx->Streaming != BOOL_FALSE) { + return RET_WRONG_STATE; + } + + memcpy(&pSC2310Ctx->Config, pConfig, sizeof(IsiSensorConfig_t)); + + /* 1.) SW reset of image sensor (via I2C register interface) be careful, bits 6..0 are reserved, reset bit is not sticky */ + TRACE(SC2310_DEBUG, "%s: SC2310 System-Reset executed\n", __func__); + osSleep(100); + + //SC2310_AecSetModeParameters not defined yet as of 2021/8/9. + //result = SC2310_AecSetModeParameters(pSC2310Ctx, pConfig); + //if (result != RET_SUCCESS) { + // TRACE(SC2310_ERROR, "%s: SetupOutputWindow failed.\n", + // __func__); + // return (result); + //} +#if 1 + struct sc2310_fmt fmt; + fmt.width = pConfig->Resolution.width; + fmt.height = pConfig->Resolution.height; + + ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_FPS, &fmt);//result = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_FPS, &fmt); +#endif + pSC2310Ctx->Configured = BOOL_TRUE; + TRACE(SC2310_INFO, "%s: (exit) ret=0x%x \n", __func__, result); + return result; +} + +static RESULT SC2310_IsiChangeSensorResolutionIss(IsiSensorHandle_t handle, uint16_t width, uint16_t height) { + RESULT result = RET_SUCCESS; +#if 0 + struct sc2310_fmt fmt; + fmt.width = width; + fmt.height = height; + + int ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_FPS, &fmt); +#endif + TRACE(SC2310_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT SC2310_IsiSensorSetStreamingIss + (IsiSensorHandle_t handle, bool_t on) { + RESULT result = RET_SUCCESS; + int ret = 0; + TRACE(SC2310_INFO, "%s (enter)\n", __func__); + + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + if (pSC2310Ctx == NULL || pSC2310Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pSC2310Ctx->IsiCtx.HalHandle; + + if (pSC2310Ctx->Configured != BOOL_TRUE) + return RET_WRONG_STATE; + + ret = SC2310_IsiRegisterWriteIss(handle, 0x3812, 0); + if (ret != 0) { + return (RET_FAILURE); + } + + ret = SC2310_IsiRegisterWriteIss(handle, 0x100, on); + if (ret != 0) { + return (RET_FAILURE); + } + + ret = SC2310_IsiRegisterWriteIss(handle, 0x3812, 0x30); + if (ret != 0) { + return (RET_FAILURE); + } + + pSC2310Ctx->Streaming = on; + + TRACE(SC2310_INFO, "%s (exit)\n", __func__); + return (result); +} + +static int32_t sensor_get_chip_id(IsiSensorHandle_t handle, uint32_t *chip_id) +{ + RESULT result = RET_SUCCESS; + int32_t ret = 0; + int32_t chip_id_high = 0; + int32_t chip_id_low = 0; + + ret = SC2310_IsiRegisterReadIss(handle, 0x3107, &chip_id_high); + if (ret != 0) { + TRACE(SC2310_ERROR, + "%s: Read Sensor correct ID Error! \n", __func__); + return (RET_FAILURE); + } + + ret = SC2310_IsiRegisterReadIss(handle, 0x3108, &chip_id_low); + if (ret != 0) { + TRACE(SC2310_ERROR, + "%s: Read Sensor correct ID Error! \n", __func__); + return (RET_FAILURE); + } + + *chip_id = ((chip_id_high & 0xff)<<8) | (chip_id_low & 0xff); + printf("sc2310 chip id is %d\n", *chip_id); + + return 0; +} + +static RESULT SC2310_IsiCheckSensorConnectionIss(IsiSensorHandle_t handle) { + RESULT result = RET_SUCCESS; + int ret = 0; + uint32_t correct_id = 0x2311; + uint32_t sensor_id = 0; + + TRACE(SC2310_INFO, "%s (enter)\n", __func__); + + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + if (pSC2310Ctx == NULL || pSC2310Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pSC2310Ctx->IsiCtx.HalHandle; + + ret = sensor_get_chip_id(handle, &sensor_id); + if (ret != 0) { + TRACE(SC2310_ERROR, + "%s: Read Sensor chip ID Error! \n", __func__); + return (RET_FAILURE); + } + + if (correct_id != sensor_id) { + TRACE(SC2310_ERROR, "%s:ChipID =0x%x sensor_id=%x error! \n", + __func__, correct_id, sensor_id); + return (RET_FAILURE); + } + + TRACE(SC2310_INFO, + "%s ChipID = 0x%08x, sensor_id = 0x%08x, success! \n", __func__, + correct_id, sensor_id); + TRACE(SC2310_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT SC2310_IsiGetSensorRevisionIss + (IsiSensorHandle_t handle, uint32_t * p_value) { + RESULT result = RET_SUCCESS; + TRACE(SC2310_INFO, "%s (enter)\n", __func__); + + *p_value = 0X2311; + TRACE(SC2310_INFO, "%s (exit)\n", __func__); + return (result); +} + +static RESULT SC2310_IsiGetGainLimitsIss + (IsiSensorHandle_t handle, float *pMinGain, float *pMaxGain) { + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + RESULT result = RET_SUCCESS; + + /*TODO*/ + + TRACE(SC2310_INFO, "%s: (enter)\n", __func__); + + if (pSC2310Ctx == NULL) { + TRACE(SC2310_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if ((pMinGain == NULL) || (pMaxGain == NULL)) { + TRACE(SC2310_ERROR, "%s: NULL pointer received!!\n"); + return (RET_NULL_POINTER); + } + + *pMinGain = pSC2310Ctx->AecMinGain; + *pMaxGain = pSC2310Ctx->AecMaxGain; + + TRACE(SC2310_INFO, "%s: (enter)\n", __func__); + return (result); +} + +static RESULT SC2310_IsiGetIntegrationTimeLimitsIss + (IsiSensorHandle_t handle, + float *pMinIntegrationTime, float *pMaxIntegrationTime) { + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + RESULT result = RET_SUCCESS; + + /*TODO*/ + + TRACE(SC2310_INFO, "%s: (enter)\n", __func__); + if (pSC2310Ctx == NULL) { + TRACE(SC2310_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if ((pMinIntegrationTime == NULL) || (pMaxIntegrationTime == NULL)) { + TRACE(SC2310_ERROR, "%s: NULL pointer received!!\n"); + return (RET_NULL_POINTER); + } + + *pMinIntegrationTime = pSC2310Ctx->AecMinIntegrationTime; + *pMaxIntegrationTime = pSC2310Ctx->AecMaxIntegrationTime; + + TRACE(SC2310_INFO, "%s: (enter)\n", __func__); + return (result); +} + +RESULT SC2310_IsiGetGainIss(IsiSensorHandle_t handle, float *pSetGain) { + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(SC2310_INFO, "%s: (enter)\n", __func__); + + if (pSC2310Ctx == NULL) { + TRACE(SC2310_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (pSetGain == NULL) { + return (RET_NULL_POINTER); + } + + *pSetGain = pSC2310Ctx->AecCurGain; + + TRACE(SC2310_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT SC2310_IsiGetLongGainIss(IsiSensorHandle_t handle, float *gain) +{ + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + + TRACE(SC2310_INFO, "%s: (enter)\n", __func__); + + if (pSC2310Ctx == NULL) { + TRACE(SC2310_ERROR,"%s: Invalid sensor handle (NULL pointer detected)\n",__func__); + return (RET_WRONG_HANDLE); + } + + if (gain == NULL) { + return (RET_NULL_POINTER); + } + + *gain = pSC2310Ctx->AecCurLongGain; + + TRACE(SC2310_INFO, "%s: (exit)\n", __func__); + + return (RET_SUCCESS); +} + +RESULT SC2310_IsiGetVSGainIss(IsiSensorHandle_t handle, float *pSetGain) { + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + RESULT result = RET_SUCCESS; + + TRACE(SC2310_INFO, "%s: (enter)\n", __func__); + + if (pSC2310Ctx == NULL) { + TRACE(SC2310_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (pSetGain == NULL) { + return (RET_NULL_POINTER); + } + + *pSetGain = pSC2310Ctx->AecCurVSGain; + + TRACE(SC2310_INFO, "%s: (exit)\n", __func__); + + return (result); +} + +RESULT SC2310_IsiGetGainIncrementIss(IsiSensorHandle_t handle, float *pIncr) { + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(SC2310_INFO, "%s: (enter)\n", __func__); + + if (pSC2310Ctx == NULL) { + TRACE(SC2310_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (pIncr == NULL) + return (RET_NULL_POINTER); + + *pIncr = pSC2310Ctx->AecGainIncrement; + + TRACE(SC2310_INFO, "%s: (exit)\n", __func__); + + return (result); +} + +RESULT SC2310_IsiSetGainIss + (IsiSensorHandle_t handle, + float NewGain, float *pSetGain, float *hdr_ratio) { + + RESULT result = RET_SUCCESS; + int32_t ret = 0; + + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + if (pSC2310Ctx == NULL || pSC2310Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + HalContext_t *pHalCtx = (HalContext_t *) pSC2310Ctx->IsiCtx.HalHandle; + + sc2310_set_gain(handle, NewGain, pSetGain); + pSC2310Ctx->AecCurGain = *pSetGain; + + TRACE(SC2310_DEBUG, "%s: g=%f\n", __func__, *pSetGain); + return (result); +} + +RESULT SC2310_IsiSetLongGainIss(IsiSensorHandle_t handle, float gain) +{ + int ret = 0; + TRACE(SC2310_INFO, "%s: (enter)\n", __func__); + + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + + if (!pSC2310Ctx || !pSC2310Ctx->IsiCtx.HalHandle) + { + TRACE(SC2310_ERROR,"%s: Invalid sensor handle (NULL pointer detected)\n",__func__); + return (RET_WRONG_HANDLE); + } + + HalContext_t *pHalCtx = (HalContext_t *) pSC2310Ctx->IsiCtx.HalHandle; + + uint32_t SensorGain = 0; + SensorGain = gain * pSC2310Ctx->gain_accuracy; + if (pSC2310Ctx->LastLongGain != SensorGain) + { + + /*TODO*/ +#if 0 + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_LONG_GAIN, &SensorGain); + if (ret != 0) + { + return (RET_FAILURE); + TRACE(SC2310_ERROR,"%s: set long gain failed\n"); + + } +#endif + pSC2310Ctx->LastLongGain = SensorGain; + pSC2310Ctx->AecCurLongGain = gain; + } + + TRACE(SC2310_INFO, "%s: (exit)\n", __func__); + return (RET_SUCCESS); +} + +RESULT SC2310_IsiSetVSGainIss + (IsiSensorHandle_t handle, + float NewIntegrationTime, + float NewGain, float *pSetGain, float *hdr_ratio) { + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + HalContext_t *pHalCtx = (HalContext_t *) pSC2310Ctx->IsiCtx.HalHandle; + RESULT result = RET_SUCCESS; +#if 0 + float Gain = 0.0f; + + uint32_t ucGain = 0U; + uint32_t again = 0U; +#endif + + TRACE(SC2310_INFO, "%s: (enter)\n", __func__); + + if (!pSC2310Ctx) { + TRACE(SC2310_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pSetGain || !hdr_ratio) + return (RET_NULL_POINTER); + + uint32_t SensorGain = 0; + SensorGain = NewGain * pSC2310Ctx->gain_accuracy; + + /*TODO*/ + //ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_VSGAIN, &SensorGain); + + pSC2310Ctx->AecCurVSGain = NewGain; + *pSetGain = pSC2310Ctx->AecCurGain; + TRACE(SC2310_DEBUG, "%s: g=%f\n", __func__, *pSetGain); + TRACE(SC2310_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT SC2310_IsiSetBayerPattern(IsiSensorHandle_t handle, uint8_t pattern) +{ + + RESULT result = RET_SUCCESS; +#if 0 + uint8_t h_shift = 0, v_shift = 0; + uint32_t val_h = 0, val_l = 0; + uint16_t val = 0; + uint8_t Start_p = 0; + bool_t streaming_status; + TRACE(SC2310_INFO, "%s: (enter)\n", __func__); + + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + if (pSC2310Ctx == NULL || pSC2310Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + // pattern 0:B 1:GB 2:GR 3:R + streaming_status = pSC2310Ctx->Streaming; + result = SC2310_IsiSensorSetStreamingIss(handle, 0); + switch (pattern) { + case BAYER_BGGR: + Start_p = 0; + break; + case BAYER_GBRG: + Start_p = 1; + break; + case BAYER_GRBG: + Start_p = 2; + break; + case BAYER_RGGB: + Start_p = 3; + break; + } + + h_shift = Start_p % 2; + v_shift = Start_p / 2; + + SC2310_IsiRegisterReadIss(handle, 0x30a0, &val_h); + SC2310_IsiRegisterReadIss(handle, 0x30a1, &val_l); + val = (((val_h << 8) & 0xff00) | (val_l & 0x00ff)) + h_shift; + val_h = (val >> 8) & 0xff; + val_l = val & 0xff; + SC2310_IsiRegisterWriteIss(handle, 0x30a0, (uint8_t)val_h); + SC2310_IsiRegisterWriteIss(handle, 0x30a1, (uint8_t)val_l); + + SC2310_IsiRegisterReadIss(handle, 0x30a2, &val_h); + SC2310_IsiRegisterReadIss(handle, 0x30a3, &val_l); + val = (((val_h << 8) & 0xff00) | (val_l & 0x00ff)) + v_shift; + val_h = (val >> 8) & 0xff; + val_l = val & 0xff; + SC2310_IsiRegisterWriteIss(handle, 0x30a2, (uint8_t)val_h); + SC2310_IsiRegisterWriteIss(handle, 0x30a3, (uint8_t)val_l); + + SC2310_IsiRegisterReadIss(handle, 0x30a4, &val_h); + SC2310_IsiRegisterReadIss(handle, 0x30a5, &val_l); + val = (((val_h << 8) & 0xff00) | (val_l & 0x00ff)) + h_shift; + val_h = (val >> 8) & 0xff; + val_l = val & 0xff; + SC2310_IsiRegisterWriteIss(handle, 0x30a4, (uint8_t)val_h); + SC2310_IsiRegisterWriteIss(handle, 0x30a5, (uint8_t)val_l); + + SC2310_IsiRegisterReadIss(handle, 0x30a6, &val_h); + SC2310_IsiRegisterReadIss(handle, 0x30a7, &val_l); + val = (((val_h << 8) & 0xff00) | (val_l & 0x00ff)) + v_shift; + val_h = (val >> 8) & 0xff; + val_l = val & 0xff; + SC2310_IsiRegisterWriteIss(handle, 0x30a6, (uint8_t)val_h); + SC2310_IsiRegisterWriteIss(handle, 0x30a7, (uint8_t)val_l); + + pSC2310Ctx->pattern = pattern; + result = SC2310_IsiSensorSetStreamingIss(handle, streaming_status); +#endif + + return (result); +} + +RESULT SC2310_IsiGetIntegrationTimeIss + (IsiSensorHandle_t handle, float *pSetIntegrationTime) +{ + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(SC2310_INFO, "%s: (enter)\n", __func__); + + if (!pSC2310Ctx) { + TRACE(SC2310_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pSetIntegrationTime) + return (RET_NULL_POINTER); + *pSetIntegrationTime = pSC2310Ctx->AecCurIntegrationTime; + TRACE(SC2310_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT SC2310_IsiGetLongIntegrationTimeIss(IsiSensorHandle_t handle, float *pIntegrationTime) +{ + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + TRACE(SC2310_INFO, "%s: (enter)\n", __func__); + + if (!pSC2310Ctx) { + TRACE(SC2310_ERROR,"%s: Invalid sensor handle (NULL pointer detected)\n",__func__); + return (RET_WRONG_HANDLE); + } + if (!pIntegrationTime) + return (RET_NULL_POINTER); + + pSC2310Ctx->AecCurLongIntegrationTime = pSC2310Ctx->AecCurIntegrationTime; + + *pIntegrationTime = pSC2310Ctx->AecCurLongIntegrationTime; + TRACE(SC2310_INFO, "%s: (exit)\n", __func__); + return (RET_SUCCESS); +} + +RESULT SC2310_IsiGetVSIntegrationTimeIss + (IsiSensorHandle_t handle, float *pSetIntegrationTime) +{ + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(SC2310_INFO, "%s: (enter)\n", __func__); + + if (!pSC2310Ctx) { + TRACE(SC2310_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + if (!pSetIntegrationTime) + return (RET_NULL_POINTER); + + *pSetIntegrationTime = pSC2310Ctx->AecCurVSIntegrationTime; + TRACE(SC2310_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT SC2310_IsiGetIntegrationTimeIncrementIss + (IsiSensorHandle_t handle, float *pIncr) +{ + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + RESULT result = RET_SUCCESS; + TRACE(SC2310_INFO, "%s: (enter)\n", __func__); + + if (!pSC2310Ctx) { + TRACE(SC2310_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pIncr) + return (RET_NULL_POINTER); + + //_smallest_ increment the sensor/driver can handle (e.g. used for sliders in the application) + *pIncr = pSC2310Ctx->AecIntegrationTimeIncrement; + TRACE(SC2310_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT SC2310_IsiSetIntegrationTimeIss + (IsiSensorHandle_t handle, + float NewIntegrationTime, + float *pSetIntegrationTime, + uint8_t * pNumberOfFramesToSkip, float *hdr_ratio) +{ + RESULT result = RET_SUCCESS; + uint32_t exp_lines = 0; + + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + HalContext_t *pHalCtx = (HalContext_t *) pSC2310Ctx->IsiCtx.HalHandle; + + exp_lines = NewIntegrationTime / pSC2310Ctx->one_line_exp_time; + if (exp_lines > pSC2310Ctx->MaxIntegrationLine) { + exp_lines = pSC2310Ctx->MaxIntegrationLine; + } else if (exp_lines < 3) { + exp_lines = 3; + } + + //行长 = 寄存器{16‘h320c, 16′h320d}值*2 + //2*{16’h320e,16’h320f}-6:h320e,h320f为帧长 + uint32_t hval_time = (exp_lines & 0xff0) >> 4; + uint32_t lval_time = (exp_lines & 0x0f) << 4; + + result = SC2310_IsiRegisterWriteIss(handle, 0x3e01, hval_time); + result = SC2310_IsiRegisterWriteIss(handle, 0x3e02, lval_time); + + pSC2310Ctx->AecCurIntegrationTime = exp_lines * pSC2310Ctx->one_line_exp_time; + *pNumberOfFramesToSkip = 1U; + *pSetIntegrationTime = pSC2310Ctx->AecCurIntegrationTime; + +#if 0 + uint32_t exp_line = 0; + uint32_t exp_line_old = 0; + + TRACE(SC2310_INFO, "%s: (enter)\n", __func__); + + if (!pSC2310Ctx) { + TRACE(SC2310_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pSetIntegrationTime || !pNumberOfFramesToSkip) { + TRACE(SC2310_ERROR, + "%s: Invalid parameter (NULL pointer detected)\n", + __func__); + return (RET_NULL_POINTER); + } + + exp_line = NewIntegrationTime / pSC2310Ctx->one_line_exp_time; + exp_line_old = exp_line; + exp_line = + MIN(pSC2310Ctx->MaxIntegrationLine, + MAX(pSC2310Ctx->MinIntegrationLine, exp_line)); + + TRACE(SC2310_DEBUG, "%s: set AEC_PK_EXPO=0x%05x\n", __func__, exp_line); + + if (exp_line != pSC2310Ctx->OldIntegrationTime) { + + /*TODO*/ + //ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_EXP, &exp_line); + pSC2310Ctx->OldIntegrationTime = exp_line; // remember current integration time + pSC2310Ctx->AecCurIntegrationTime = + exp_line * pSC2310Ctx->one_line_exp_time; + + *pNumberOfFramesToSkip = 1U; //skip 1 frame + } else { + *pNumberOfFramesToSkip = 0U; //no frame skip + } + + if (NewIntegrationTime > pSC2310Ctx->FrameLengthLines * pSC2310Ctx->one_line_exp_time) + NewIntegrationTime = pSC2310Ctx->FrameLengthLines * pSC2310Ctx->one_line_exp_time; + float exp_t = NewIntegrationTime * 16.0f / pSC2310Ctx->one_line_exp_time; + __sc2310_set_exposure(handle, (int)exp_t, + 0, 0, SC2310_INTEGRATION_TIME); + + if (exp_line_old != exp_line) { + *pSetIntegrationTime = pSC2310Ctx->AecCurIntegrationTime; + } else { + *pSetIntegrationTime = NewIntegrationTime; + } +#endif + + TRACE(SC2310_DEBUG, "%s: Ti=%f\n", __func__, *pSetIntegrationTime); + TRACE(SC2310_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT SC2310_IsiSetLongIntegrationTimeIss(IsiSensorHandle_t handle,float IntegrationTime) +{ + int ret; + uint32_t exp_lines; + TRACE(SC2310_INFO, "%s: (enter)\n", __func__); + + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + if (!handle || !pSC2310Ctx->IsiCtx.HalHandle) + { + TRACE(SC2310_ERROR,"%s: Invalid sensor handle (NULL pointer detected)\n",__func__); + return (RET_WRONG_HANDLE); + } + + HalContext_t *pHalCtx = (HalContext_t *) pSC2310Ctx->IsiCtx.HalHandle; + + exp_lines = IntegrationTime / pSC2310Ctx->one_line_exp_time; + if (exp_lines > pSC2310Ctx->MaxIntegrationLine) { + exp_lines = pSC2310Ctx->MaxIntegrationLine; + } else if (exp_lines < 1) { + exp_lines = 1; + } + + uint32_t hval_time = (exp_lines & 0xf00) >> 4; + uint32_t lval_time = exp_lines & 0xff; + + SC2310_IsiRegisterWriteIss(handle, 0x3e01, lval_time); + SC2310_IsiRegisterWriteIss(handle, 0x3e02, hval_time); + + pSC2310Ctx->AecCurIntegrationTime = exp_lines * pSC2310Ctx->one_line_exp_time; + pSC2310Ctx->AecCurLongIntegrationTime = exp_lines * pSC2310Ctx->one_line_exp_time; + + TRACE(SC2310_INFO, "%s: (exit)\n", __func__); + return (RET_SUCCESS); +} + +RESULT SC2310_IsiSetVSIntegrationTimeIss + (IsiSensorHandle_t handle, + float NewIntegrationTime, + float *pSetVSIntegrationTime, + uint8_t * pNumberOfFramesToSkip, float *hdr_ratio) +{ + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + RESULT result = RET_SUCCESS; + uint32_t exp_line = 0; + + TRACE(SC2310_INFO, "%s: (enter)\n", __func__); + + if (!pSC2310Ctx) { + TRACE(SC2310_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if (!pSetVSIntegrationTime || !pNumberOfFramesToSkip) { + TRACE(SC2310_ERROR, + "%s: Invalid parameter (NULL pointer detected)\n", + __func__); + return (RET_NULL_POINTER); + } + + TRACE(SC2310_INFO, + "%s: maxIntegrationTime-=%f minIntegrationTime = %f\n", __func__, + pSC2310Ctx->AecMaxIntegrationTime, + pSC2310Ctx->AecMinIntegrationTime); +/* + uint32_t hval_time = (((uint32_t)NewIntegrationTime) & 0xf00) >> 4; + uint32_t lval_time = ((uint32_t)NewIntegrationTime) & 0xff; + + SC2310_IsiRegisterWriteIss(handle, 0x3e04, lval_time); + SC2310_IsiRegisterWriteIss(handle, 0x3e05, hval_time); + */ + + + + exp_line = NewIntegrationTime / pSC2310Ctx->one_line_exp_time; + exp_line = + MIN(pSC2310Ctx->MaxIntegrationLine, + MAX(pSC2310Ctx->MinIntegrationLine, exp_line)); + + if (exp_line != pSC2310Ctx->OldVsIntegrationTime) { + /*TODO*/ + // ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_VSEXP, &exp_line); + } else if (1){ + + pSC2310Ctx->OldVsIntegrationTime = exp_line; + pSC2310Ctx->AecCurVSIntegrationTime = exp_line * pSC2310Ctx->one_line_exp_time; //remember current integration time + *pNumberOfFramesToSkip = 1U; //skip 1 frame + } else { + *pNumberOfFramesToSkip = 0U; //no frame skip + } + + *pSetVSIntegrationTime = pSC2310Ctx->AecCurVSIntegrationTime; + + TRACE(SC2310_DEBUG, "%s: NewIntegrationTime=%f\n", __func__, + NewIntegrationTime); + TRACE(SC2310_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT SC2310_IsiExposureControlIss + (IsiSensorHandle_t handle, + float NewGain, + float NewIntegrationTime, + uint8_t * pNumberOfFramesToSkip, + float *pSetGain, float *pSetIntegrationTime, float *hdr_ratio) +{ + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + RESULT result = RET_SUCCESS; + + TRACE(SC2310_INFO, "%s: (enter)\n", __func__); + + if (pSC2310Ctx == NULL) { + TRACE(SC2310_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if ((pNumberOfFramesToSkip == NULL) || (pSetGain == NULL) + || (pSetIntegrationTime == NULL)) { + TRACE(SC2310_ERROR, + "%s: Invalid parameter (NULL pointer detected)\n", + __func__); + return (RET_NULL_POINTER); + } + + if (NewGain >= 35) { // More than 35 will not take effect + NewGain = 35; + } + + TRACE(SC2310_DEBUG, "%s: g=%f, Ti=%f\n", __func__, NewGain, + NewIntegrationTime); + + if (NewIntegrationTime > pSC2310Ctx->MaxIntegrationLine * pSC2310Ctx->one_line_exp_time) + NewIntegrationTime = pSC2310Ctx->MaxIntegrationLine * pSC2310Ctx->one_line_exp_time; + + + sc2310_set_gain(handle, NewGain, pSetGain); + SC2310_IsiSetIntegrationTimeIss(handle, NewIntegrationTime, pSetIntegrationTime, pNumberOfFramesToSkip, hdr_ratio); + pSC2310Ctx->AecCurGain = NewGain; + pSC2310Ctx->AecCurIntegrationTime = *pSetIntegrationTime; + + + TRACE(SC2310_DEBUG, "%s: set: vsg=%f, vsTi=%f, vsskip=%d\n", __func__, + NewGain, NewIntegrationTime, *pNumberOfFramesToSkip); + TRACE(SC2310_INFO, "%s: (exit)\n", __func__); + + return result; +} + +RESULT SC2310_IsiGetCurrentExposureIss + (IsiSensorHandle_t handle, float *pSetGain, float *pSetIntegrationTime, float *hdr_ratio) { + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + RESULT result = RET_SUCCESS; + + TRACE(SC2310_INFO, "%s: (enter)\n", __func__); + + if (pSC2310Ctx == NULL) { + TRACE(SC2310_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + if ((pSetGain == NULL) || (pSetIntegrationTime == NULL)) + return (RET_NULL_POINTER); + + *pSetGain = pSC2310Ctx->AecCurGain; + *pSetIntegrationTime = pSC2310Ctx->AecCurIntegrationTime; + *hdr_ratio = pSC2310Ctx->CurHdrRatio; + + TRACE(SC2310_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT SC2310_IsiGetResolutionIss(IsiSensorHandle_t handle, uint16_t *pwidth, uint16_t *pheight) { + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + RESULT result = RET_SUCCESS; + + TRACE(SC2310_INFO, "%s: (enter)\n", __func__); + + if (pSC2310Ctx == NULL) { + TRACE(SC2310_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + + *pwidth = pSC2310Ctx->SensorMode.width; + *pheight = pSC2310Ctx->SensorMode.height; + + TRACE(SC2310_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT SC2310_IsiGetSensorFpsIss(IsiSensorHandle_t handle, uint32_t * pfps) +{ + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + RESULT result = RET_SUCCESS; + + + TRACE(SC2310_INFO, "%s: (enter)\n", __func__); + + if (pSC2310Ctx == NULL) { + TRACE(SC2310_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + HalContext_t *pHalCtx = (HalContext_t *) pSC2310Ctx->IsiCtx.HalHandle; + + if (pSC2310Ctx->KernelDriverFlag) { + /*TODO*/ + ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_FPS, pfps); + pSC2310Ctx->CurrFps = *pfps; + } + + *pfps = pSC2310Ctx->CurrFps; + + TRACE(SC2310_INFO, "%s: (exit)\n", __func__); + return (result); +} + +RESULT SC2310_IsiSetSensorFpsIss(IsiSensorHandle_t handle, uint32_t fps) +{ + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + RESULT result = RET_SUCCESS; + int32_t ret = 0; + TRACE(SC2310_INFO, "%s: (enter)\n", __func__); + + if (pSC2310Ctx == NULL) { + TRACE(SC2310_ERROR, + "%s: Invalid sensor handle (NULL pointer detected)\n", + __func__); + return (RET_WRONG_HANDLE); + } + HalContext_t *pHalCtx = (HalContext_t *) pSC2310Ctx->IsiCtx.HalHandle; + + if (fps > pSC2310Ctx->MaxFps) { + TRACE(SC2310_ERROR, + "%s: set fps(%d) out of range, correct to %d (%d, %d)\n", + __func__, fps, pSC2310Ctx->MaxFps, pSC2310Ctx->MinFps, + pSC2310Ctx->MaxFps); + fps = pSC2310Ctx->MaxFps; + } + if (fps < pSC2310Ctx->MinFps) { + TRACE(SC2310_ERROR, + "%s: set fps(%d) out of range, correct to %d (%d, %d)\n", + __func__, fps, pSC2310Ctx->MinFps, pSC2310Ctx->MinFps, + pSC2310Ctx->MaxFps); + fps = pSC2310Ctx->MinFps; + } + + TRACE(SC2310_INFO, "%s: set sensor fps = %d\n", __func__, + pSC2310Ctx->CurrFps); + + TRACE(SC2310_INFO, "%s: (exit)\n", __func__); + return (result); +} + +static RESULT SC2310_IsiActivateTestPattern(IsiSensorHandle_t handle, + const bool_t enable) +{ + RESULT result = RET_SUCCESS; + uint32_t reg_val; + + + TRACE(SC2310_INFO, "%s: (enter)\n", __func__); + + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + if (pSC2310Ctx == NULL || pSC2310Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + + if (pSC2310Ctx->Configured != BOOL_TRUE) + return RET_WRONG_STATE; + + result = SC2310_IsiRegisterReadIss(handle, 0x4501, ®_val); + if (result != RET_SUCCESS) { + return result; + } + reg_val &= ~8; + + if (BOOL_TRUE == enable) { + reg_val |= 8; + } + + result = SC2310_IsiRegisterWriteIss(handle, 0x4501, reg_val); + if (result != RET_SUCCESS) { + return result; + } + + pSC2310Ctx->TestPattern = enable; + + TRACE(SC2310_INFO, "%s: (exit)\n", __func__); + + return (result); +} + +static RESULT SC2310_IsiSensorSetBlcIss(IsiSensorHandle_t handle, sensor_blc_t * pblc) +{ + int32_t ret = 0; + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + if (pSC2310Ctx == NULL || pSC2310Ctx->IsiCtx.HalHandle == NULL) { + return RET_WRONG_HANDLE; + } + + if (pblc == NULL) + return RET_NULL_POINTER; + + HalContext_t *pHalCtx = (HalContext_t *) pSC2310Ctx->IsiCtx.HalHandle; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_BLC, pblc); + if (ret != 0) + { + TRACE(SC2310_ERROR, "%s: set wb error\n", __func__); + } + + return RET_SUCCESS; +} + +static RESULT SC2310_IsiSensorSetWBIss(IsiSensorHandle_t handle, sensor_white_balance_t * pwb) +{ + int32_t ret = 0; + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + if (pSC2310Ctx == NULL || pSC2310Ctx->IsiCtx.HalHandle == NULL) { + return RET_WRONG_HANDLE; + } + HalContext_t *pHalCtx = (HalContext_t *) pSC2310Ctx->IsiCtx.HalHandle; + + if (pwb == NULL) + return RET_NULL_POINTER; + + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_S_WB, pwb); + if (ret != 0) + { + TRACE(SC2310_ERROR, "%s: set wb error\n", __func__); + } + + return RET_SUCCESS; +} + +static RESULT SC2310_IsiGetSensorAWBModeIss(IsiSensorHandle_t handle, IsiSensorAwbMode_t *pawbmode) +{ + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + if (pSC2310Ctx == NULL || pSC2310Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + if (pSC2310Ctx->SensorMode.hdr_mode == SENSOR_MODE_HDR_NATIVE){ + *pawbmode = ISI_SENSOR_AWB_MODE_SENSOR; + }else{ + *pawbmode = ISI_SENSOR_AWB_MODE_NORMAL; + } + return RET_SUCCESS; +} + +static RESULT SC2310_IsiSensorGetExpandCurveIss(IsiSensorHandle_t handle, sensor_expand_curve_t * pexpand_curve) +{ + int32_t ret = 0; + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + if (pSC2310Ctx == NULL || pSC2310Ctx->IsiCtx.HalHandle == NULL) { + return RET_NULL_POINTER; + } + HalContext_t *pHalCtx = (HalContext_t *) pSC2310Ctx->IsiCtx.HalHandle; + +/* + ret = ioctl(pHalCtx->sensor_fd, VVSENSORIOC_G_EXPAND_CURVE, pexpand_curve); + if (ret != 0) + { + TRACE(SC2310_ERROR, "%s: get expand cure error\n", __func__); + return RET_FAILURE; + } + */ + + return RET_FAILURE; +} + +static RESULT SC2310_IsiGetCapsIss(IsiSensorHandle_t handle, + IsiSensorCaps_t * pIsiSensorCaps) +{ + SC2310_Context_t *pSC2310Ctx = (SC2310_Context_t *) handle; + + RESULT result = RET_SUCCESS; + + TRACE(SC2310_INFO, "%s (enter)\n", __func__); + + if (pSC2310Ctx == NULL) { + return (RET_WRONG_HANDLE); + } + + if (pIsiSensorCaps == NULL) { + return (RET_NULL_POINTER); + } + + pIsiSensorCaps->BusWidth = pSC2310Ctx->SensorMode.bit_width; + pIsiSensorCaps->Mode = ISI_MODE_BAYER; + pIsiSensorCaps->FieldSelection = ISI_FIELDSEL_BOTH; + pIsiSensorCaps->YCSequence = ISI_YCSEQ_YCBYCR; + pIsiSensorCaps->Conv422 = ISI_CONV422_NOCOSITED; + pIsiSensorCaps->BPat = pSC2310Ctx->SensorMode.bayer_pattern; + pIsiSensorCaps->HPol = ISI_HPOL_REFPOS; + pIsiSensorCaps->VPol = ISI_VPOL_NEG; + pIsiSensorCaps->Edge = ISI_EDGE_RISING; + pIsiSensorCaps->Resolution.width = pSC2310Ctx->SensorMode.width; + pIsiSensorCaps->Resolution.height = pSC2310Ctx->SensorMode.height; + pIsiSensorCaps->SmiaMode = ISI_SMIA_OFF; + pIsiSensorCaps->MipiLanes = ISI_MIPI_2LANES; + + if (pIsiSensorCaps->BusWidth == 10) { + pIsiSensorCaps->MipiMode = ISI_MIPI_MODE_RAW_10; + }else if (pIsiSensorCaps->BusWidth == 12){ + pIsiSensorCaps->MipiMode = ISI_MIPI_MODE_RAW_12; + }else{ + pIsiSensorCaps->MipiMode = ISI_MIPI_OFF; + } + + TRACE(SC2310_INFO, "%s (exit)\n", __func__); + return result; +} + +RESULT SC2310_IsiGetSensorIss(IsiSensor_t *pIsiSensor) +{ + RESULT result = RET_SUCCESS; + TRACE( SC2310_INFO, "%s (enter)\n", __func__); + + if ( pIsiSensor != NULL ) { + pIsiSensor->pszName = SensorName; + pIsiSensor->pIsiCreateSensorIss = SC2310_IsiCreateSensorIss; + + pIsiSensor->pIsiInitSensorIss = SC2310_IsiInitSensorIss; + pIsiSensor->pIsiGetSensorModeIss = SC2310_IsiGetSensorModeIss; + pIsiSensor->pIsiResetSensorIss = SC2310_IsiResetSensorIss; + pIsiSensor->pIsiReleaseSensorIss = SC2310_IsiReleaseSensorIss; + pIsiSensor->pIsiGetCapsIss = SC2310_IsiGetCapsIss; + pIsiSensor->pIsiSetupSensorIss = SC2310_IsiSetupSensorIss; + pIsiSensor->pIsiChangeSensorResolutionIss = SC2310_IsiChangeSensorResolutionIss; + pIsiSensor->pIsiSensorSetStreamingIss = SC2310_IsiSensorSetStreamingIss; + pIsiSensor->pIsiSensorSetPowerIss = SC2310_IsiSensorSetPowerIss; + pIsiSensor->pIsiCheckSensorConnectionIss = SC2310_IsiCheckSensorConnectionIss; + pIsiSensor->pIsiGetSensorRevisionIss = SC2310_IsiGetSensorRevisionIss; + pIsiSensor->pIsiRegisterReadIss = SC2310_IsiRegisterReadIss; + pIsiSensor->pIsiRegisterWriteIss = SC2310_IsiRegisterWriteIss; + + /* AEC functions */ + pIsiSensor->pIsiExposureControlIss = SC2310_IsiExposureControlIss; + pIsiSensor->pIsiGetGainLimitsIss = SC2310_IsiGetGainLimitsIss; + pIsiSensor->pIsiGetIntegrationTimeLimitsIss = SC2310_IsiGetIntegrationTimeLimitsIss; + pIsiSensor->pIsiGetCurrentExposureIss = SC2310_IsiGetCurrentExposureIss; + pIsiSensor->pIsiGetVSGainIss = SC2310_IsiGetVSGainIss; + pIsiSensor->pIsiGetGainIss = SC2310_IsiGetGainIss; + pIsiSensor->pIsiGetLongGainIss = SC2310_IsiGetLongGainIss; + pIsiSensor->pIsiGetGainIncrementIss = SC2310_IsiGetGainIncrementIss; + pIsiSensor->pIsiSetGainIss = SC2310_IsiSetGainIss; + pIsiSensor->pIsiGetIntegrationTimeIss = SC2310_IsiGetIntegrationTimeIss; + pIsiSensor->pIsiGetVSIntegrationTimeIss = SC2310_IsiGetVSIntegrationTimeIss; + pIsiSensor->pIsiGetLongIntegrationTimeIss = SC2310_IsiGetLongIntegrationTimeIss; + pIsiSensor->pIsiGetIntegrationTimeIncrementIss = SC2310_IsiGetIntegrationTimeIncrementIss; + pIsiSensor->pIsiSetIntegrationTimeIss = SC2310_IsiSetIntegrationTimeIss; + pIsiSensor->pIsiQuerySensorIss = SC2310_IsiQuerySensorIss; + pIsiSensor->pIsiGetResolutionIss = SC2310_IsiGetResolutionIss; + pIsiSensor->pIsiGetSensorFpsIss = SC2310_IsiGetSensorFpsIss; + pIsiSensor->pIsiSetSensorFpsIss = SC2310_IsiSetSensorFpsIss; + pIsiSensor->pIsiSensorGetExpandCurveIss = SC2310_IsiSensorGetExpandCurveIss; + + /* AWB specific functions */ + + /* Testpattern */ + pIsiSensor->pIsiActivateTestPattern = SC2310_IsiActivateTestPattern; + pIsiSensor->pIsiSetBayerPattern = SC2310_IsiSetBayerPattern; + + pIsiSensor->pIsiSensorSetBlcIss = SC2310_IsiSensorSetBlcIss; + pIsiSensor->pIsiSensorSetWBIss = SC2310_IsiSensorSetWBIss; + pIsiSensor->pIsiGetSensorAWBModeIss = SC2310_IsiGetSensorAWBModeIss; + + } else { + result = RET_NULL_POINTER; + } + + TRACE( SC2310_INFO, "%s (exit)\n", __func__); + return ( result ); +} + +/***************************************************************************** +* each sensor driver need declare this struct for isi load +*****************************************************************************/ +IsiCamDrvConfig_t SC2310_IsiCamDrvConfig = { + 0, + SC2310_IsiQuerySensorSupportIss, + SC2310_IsiGetSensorIss, + { + SensorName, /**< IsiSensor_t.pszName */ + 0, /**< IsiSensor_t.pIsiInitIss>*/ + 0, /**< IsiSensor_t.pIsiResetSensorIss>*/ + 0, /**< IsiSensor_t.pRegisterTable */ + 0, /**< IsiSensor_t.pIsiSensorCaps */ + 0, /**< IsiSensor_t.pIsiCreateSensorIss */ + 0, /**< IsiSensor_t.pIsiReleaseSensorIss */ + 0, /**< IsiSensor_t.pIsiGetCapsIss */ + 0, /**< IsiSensor_t.pIsiSetupSensorIss */ + 0, /**< IsiSensor_t.pIsiChangeSensorResolutionIss */ + 0, /**< IsiSensor_t.pIsiSensorSetStreamingIss */ + 0, /**< IsiSensor_t.pIsiSensorSetPowerIss */ + 0, /**< IsiSensor_t.pIsiCheckSensorConnectionIss */ + 0, /**< IsiSensor_t.pIsiGetSensorRevisionIss */ + 0, /**< IsiSensor_t.pIsiRegisterReadIss */ + 0, /**< IsiSensor_t.pIsiRegisterWriteIss */ + + 0, /**< IsiSensor_t.pIsiExposureControlIss */ + 0, /**< IsiSensor_t.pIsiGetGainLimitsIss */ + 0, /**< IsiSensor_t.pIsiGetIntegrationTimeLimitsIss */ + 0, /**< IsiSensor_t.pIsiGetCurrentExposureIss */ + 0, /**< IsiSensor_t.pIsiGetGainIss */ + 0, /**< IsiSensor_t.pIsiGetVSGainIss */ + 0, /**< IsiSensor_t.pIsiGetGainIncrementIss */ + 0, /**< IsiSensor_t.pIsiGetGainIncrementIss */ + 0, /**< IsiSensor_t.pIsiSetGainIss */ + 0, /**< IsiSensor_t.pIsiGetIntegrationTimeIss */ + 0, /**< IsiSensor_t.pIsiGetIntegrationTimeIncrementIss */ + 0, /**< IsiSensor_t.pIsiSetIntegrationTimeIss */ + 0, /**< IsiSensor_t.pIsiGetResolutionIss */ + 0, /**< IsiSensor_t.pIsiGetAfpsInfoIss */ + + 0, /**< IsiSensor_t.pIsiMdiInitMotoDriveMds */ + 0, /**< IsiSensor_t.pIsiMdiSetupMotoDrive */ + 0, /**< IsiSensor_t.pIsiMdiFocusSet */ + 0, /**< IsiSensor_t.pIsiMdiFocusGet */ + 0, /**< IsiSensor_t.pIsiMdiFocusCalibrate */ + 0, /**< IsiSensor_t.pIsiGetSensorMipiInfoIss */ + 0, /**< IsiSensor_t.pIsiActivateTestPattern */ + 0, /**< IsiSensor_t.pIsiSetBayerPattern */ + } +}; diff --git a/drivers/SC2310/SC2310_1920x1080.xml b/drivers/SC2310/SC2310_1920x1080.xml new file mode 100644 index 0000000..4cc0969 --- /dev/null +++ b/drivers/SC2310/SC2310_1920x1080.xml @@ -0,0 +1,1539 @@ + + +
+ + 18-Apr-2022 + + + hong + + + sc2310 + + + 2MLens_01 + + + v2.1.1 + + + + + 1920x1080 + + + 0x00000001 + + + [ 1920] + + + [ 1080] + + + + + FPS_15 + + + [ 14.9916] + + + + + FPS_10 + + + [ 9.9944] + + + + + FPS_05 + + + [ 4.9972] + + + + + +
+ + + + + + 1920x1080 + + + 1920x1080 + + + [0.312492 0.450819 0.23669] + + + [-0.724832 0.0368947 0.687937 0.37588 -0.815663 0.43978] + + + [-0.698185 -0.715917 -2.6846] + + + [0.72987 1.02285 1.13695 1.24683 1.31496 1.35767 1.45439 1.5369 1.64558 1.71541 1.79445 1.87454 2.07129 2.14548 2.2422 2.4245] + + + [0.0657726 0.0677932 0.0735421 0.0731924 0.0475689 0.0583696 0.0637825 0.128803 0.261043 0.324589 0.250642 0.122849 0.122391 0.120809 0.126222 0.096834] + + + [0.72987 1.01148 1.08907 1.25409 1.35856 1.45544 1.54699 1.63249 1.71839 1.83295 1.93621 2.04787 2.14911 2.23816 2.3587 2.4257] + + + [0.00597659 0.113159 0.165397 0.264352 0.374724 0.448055 0.441784 0.459555 0.44519 0.439161 0.416943 0.367495 0.276959 0.195134 0.125691 0.058098] + + + [0.72987 0.904299 1.0086 1.13259 1.21381 1.30164 1.42089 1.54716 1.64356 1.72793 1.83151 1.89504 2.00258 2.10633 2.24672 2.4645] + + + [0.155932 0.136891 0.120078 0.138671 0.146657 0.132076 0.144484 0.16646 0.329361 0.404808 0.269537 0.198162 0.194623 0.209604 0.211345 0.15793] + + + [0.72987 0.904299 1.00971 1.0906 1.17521 1.28291 1.43533 1.55183 1.64387 1.72791 1.83028 1.97811 2.11366 2.20691 2.29645 2.4645] + + + [0.0440677 0.0631094 0.162957 0.226479 0.269148 0.351432 0.491233 0.51415 0.515116 0.511177 0.513858 0.470414 0.396308 0.300867 0.226278 0.10018] + + + [ 0.82987] + + + [ 2.4245] + + + [ 2.4645] + + + [ 1.9666] + + + D50 + + + [ 4.5676] + + + [0.75 1.28836 1.77672 2.164 2.6 3.0618] + + + [114 114 105 95 95 90] + + + [83 83 110 120 122 128] + + + [28 27 18 16 9 9] + + + [123 123 123 123 123 120] + + + [123 123 123 123 123 126] + + + [5 5 5 5 5 5] + + + [ 1] + + + [ 0.8] + + + [ 0.05] + + + + [ 0.05] + + + [ 0.05] + + + [ 0.4] + + + [ 0.5] + + + [ 0.9] + + + [ 0.5] + + + [ 50] + + + [ 1] + + + [ 0.5] + + + + + + + + A + + + Indoor + + + + [1347.4 1726.24 1726.24 4003.8289] + + + [ 247.3246] + + + [1 1] + + + [-0.06878 -0.0086179] + + + + + + 1920x1080 + + + 1920x1080_A_100 + + + + + [1.2679 1 1 2.4534] + + + [1.62147 -0.0445277 -0.546563 -0.261854 1.52127 -0.211003 0.0194952 -1.45836 2.4966] + + + [-124.39 -122.251 -145.4412] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + A_100 + + + + + + D50 + + + Indoor + + + + [335.851 88.6556 88.6556 1623.8527] + + + [ 116.6849] + + + [1 1] + + + [0.0945804 -0.024001] + + + + + + 1920x1080 + + + 1920x1080_D50_100 + + + + + [2.01726 1 1 1.6274] + + + [1.5183 -0.341669 -0.150056 -0.23618 1.63938 -0.35403 -0.0308324 -0.524599 1.5759] + + + [-81.0317 -71.6168 -83.757] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D50_100 + + + + + + D65 + + + Indoor + + + + [320.95 -133.945 -133.945 1347.0332] + + + [ 102.4529] + + + [1 1] + + + [0.151314 -0.019672] + + + + + + 1920x1080 + + + 1920x1080_D65_100 + + + + + [2.41759 1 1 1.4225] + + + [1.74788 -0.562271 -0.124172 -0.189096 1.66277 -0.416313 0.0171408 -0.552856 1.5549] + + + [-84.4486 -70.1682 -78.446] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D65_100 + + + + + + D75 + + + Outdoor + + + + [339.206 -212.042 -212.042 1277.9017] + + + [ 99.2022] + + + [1 1] + + + [0.166569 -0.0086179] + + + + + + 1920x1080 + + + 1920x1080_D75_100 + + + + + [2.46127 1 1 1.3353] + + + [1.84441 -0.649995 -0.151423 -0.17172 1.61099 -0.39653 0.0218805 -0.506897 1.5048] + + + [-87.0209 -74.4697 -80.8341] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D75_100 + + + + + + F2 (CWF) + + + Outdoor + + + + [494.308 -273.035 -273.035 1194.4883] + + + [ 114.3146] + + + [1 1] + + + [0.0471957 -0.070826] + + + + + + 1920x1080 + + + 1920x1080_F2_100 + + + + + [2.02785 1 1 2.1442] + + + [2.06572 -0.770765 -0.278229 -0.301217 1.49376 -0.146116 -0.0191357 -0.55147 1.6208] + + + [-68.4901 -66.8725 -80.6516] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F2_100 + + + + + + F11 (TL84) + + + Indoor + + + + [389.613 -16.1852 -16.1852 1181.5596] + + + [ 107.9546] + + + [1 1] + + + [0.0308104 -0.046652] + + + + + + 1920x1080 + + + 1920x1080_F11_100 + + + + + [1.79738 1 1 2.0643] + + + [1.52028 -0.278563 -0.200712 -0.305258 1.64403 -0.267838 -0.00796981 -0.719295 1.7485] + + + [-73.4915 -72.5498 -86.9231] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F11_100 + + + + + + F12 + + + Indoor + + + + [575.53 344.076 344.076 1606.1192] + + + [ 142.8837] + + + [1 1] + + + [-0.149398 0.019848] + + + + + + 1920x1080 + + + 1920x1080_F12_100 + + + + + [1.00205 1 1 3.0084] + + + [1.43944 0.0309125 -0.463539 -0.338943 1.6164 -0.231193 -0.0812989 -1.41021 2.5269] + + + [-27.8837 -30.4929 -71.3504] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F12_100 + + + + + + + + + 1920x1080_A_100 + + + 1920x1080 + + + A + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [41 53 63 79 101 138 200 285] + + + [47 53 59 66 73 79 83 84] + + + [ 100] + + + [7627 7073 6443 5706 4906 4079 3300 2588 2234 2653 3419 4300 5211 6057 6839 7419 8779 7251 6774 6072 5357 4611 3803 3061 2370 2013 2425 3197 3997 4892 5728 6596 7107 7757 6928 6414 5774 5046 4296 3566 2830 2141 1785 2204 2956 3725 4556 5380 6044 6892 7279 6611 6047 5421 4717 3997 3307 2608 1920 1567 1978 2726 3482 4245 5033 5786 6434 6996 6290 5731 5092 4422 3746 3077 2392 1707 1360 1761 2504 3248 3960 4719 5411 6122 6630 5979 5448 4807 4161 3513 2886 2197 1519 1185 1573 2318 3035 3733 4433 5138 5813 6317 5785 5202 4603 3971 3352 2724 2048 1376 1069 1421 2160 2881 3549 4246 4899 5548 6058 5591 5078 4467 3846 3236 2624 1945 1281 1024 1332 2052 2778 3426 4120 4733 5424 5906 5537 5010 4401 3793 3194 2583 1907 1242 1024 1288 2010 2726 3382 4030 4710 5327 5887 5592 5031 4445 3833 3225 2607 1930 1267 1024 1315 2034 2751 3413 4064 4733 5370 5888 5743 5202 4566 3928 3318 2703 2023 1351 1054 1401 2130 2848 3516 4183 4868 5526 6033 5958 5413 4772 4122 3473 2848 2162 1488 1153 1538 2271 2994 3666 4379 5086 5734 6271 6263 5698 5038 4355 3671 3039 2341 1663 1308 1717 2451 3173 3890 4636 5332 6030 6470 6589 6041 5349 4658 3940 3261 2550 1859 1510 1916 2665 3410 4156 4961 5676 6337 6911 6944 6392 5696 5002 4220 3503 2775 2076 1720 2136 2885 3660 4462 5250 6018 6679 7252 7289 6749 6032 5331 4517 3750 3006 2294 1940 2360 3118 3926 4772 5619 6313 7008 7489 7582 7049 6362 5647 4807 3991 3226 2503 2143 2565 3334 4173 5097 5944 6675 7240 8453] + + + [5761 5328 4841 4290 3705 3074 2527 2061 1841 2104 2604 3224 3888 4510 5095 5615 6678 5489 5112 4589 4049 3469 2895 2370 1931 1711 1967 2451 3014 3660 4268 4921 5290 5838 5239 4814 4354 3811 3246 2716 2227 1785 1568 1822 2292 2821 3418 4041 4550 5159 5499 4964 4588 4080 3569 3038 2545 2074 1649 1418 1682 2146 2655 3189 3784 4321 4809 5257 4719 4315 3843 3352 2850 2390 1937 1510 1274 1543 2003 2487 2996 3541 4085 4563 4960 4484 4107 3643 3159 2697 2260 1823 1382 1146 1415 1885 2358 2827 3352 3846 4338 4726 4318 3957 3488 3028 2587 2161 1728 1285 1058 1313 1791 2245 2714 3189 3703 4172 4555 4218 3836 3387 2938 2513 2097 1668 1218 1024 1248 1726 2180 2626 3095 3590 4065 4470 4164 3792 3345 2899 2482 2067 1642 1189 1024 1216 1694 2146 2588 3063 3527 4007 4387 4206 3827 3368 2918 2500 2082 1654 1204 1024 1235 1712 2161 2604 3064 3566 4037 4395 4316 3916 3465 3011 2560 2146 1711 1266 1047 1295 1768 2227 2682 3169 3664 4142 4527 4454 4096 3609 3131 2664 2235 1792 1358 1118 1389 1859 2313 2782 3302 3821 4297 4699 4692 4284 3787 3298 2809 2353 1902 1470 1236 1507 1963 2438 2936 3479 4016 4501 4909 4918 4519 4035 3518 2982 2497 2032 1599 1378 1630 2098 2597 3141 3692 4257 4748 5147 5209 4769 4288 3744 3185 2665 2177 1730 1517 1767 2240 2769 3347 3967 4502 5007 5451 5475 5035 4541 3985 3410 2841 2324 1874 1652 1912 2388 2953 3586 4187 4745 5278 5706 5807 5293 4757 4231 3602 3009 2465 1998 1787 2035 2539 3144 3794 4431 5019 5468 6389] + + + [5745 5384 4858 4296 3703 3081 2528 2061 1832 2101 2613 3226 3906 4549 5091 5629 6732 5483 5073 4602 4066 3474 2892 2375 1928 1705 1963 2463 3033 3674 4270 4948 5313 5881 5297 4849 4349 3811 3252 2716 2220 1789 1558 1825 2296 2836 3440 4066 4574 5172 5552 4977 4573 4092 3569 3040 2549 2081 1646 1415 1680 2150 2664 3204 3795 4367 4852 5286 4732 4342 3841 3349 2855 2391 1942 1510 1271 1543 2010 2495 3010 3559 4098 4597 5030 4496 4108 3655 3170 2696 2271 1821 1382 1143 1418 1892 2369 2846 3373 3879 4380 4753 4365 3970 3488 3041 2592 2170 1734 1287 1055 1319 1801 2259 2733 3219 3735 4204 4608 4225 3858 3407 2950 2528 2107 1671 1221 1024 1250 1741 2198 2646 3120 3618 4098 4496 4204 3800 3359 2918 2489 2083 1652 1192 1024 1223 1710 2161 2610 3078 3573 4045 4431 4237 3847 3394 2943 2510 2094 1663 1208 1024 1240 1724 2185 2621 3108 3596 4073 4476 4327 3930 3477 3011 2580 2157 1720 1268 1048 1303 1785 2246 2697 3184 3700 4177 4575 4498 4100 3626 3143 2678 2244 1801 1361 1119 1395 1867 2331 2808 3323 3842 4331 4754 4700 4292 3820 3304 2816 2359 1902 1477 1234 1510 1974 2446 2960 3509 4032 4545 4935 4950 4504 4038 3515 2987 2507 2039 1602 1373 1634 2102 2602 3146 3723 4264 4762 5187 5217 4815 4295 3753 3186 2672 2177 1737 1512 1772 2247 2780 3364 3964 4530 5032 5481 5465 5074 4527 3992 3409 2842 2334 1872 1652 1914 2399 2960 3586 4219 4760 5288 5711 5789 5343 4780 4202 3628 3020 2469 2000 1779 2037 2543 3167 3825 4435 5009 5525 6515] + + + [5847 5365 4959 4387 3813 3150 2608 2114 1883 2138 2664 3274 3941 4544 5112 5593 6737 5612 5189 4709 4157 3553 3002 2442 1985 1743 2010 2509 3092 3722 4352 4956 5315 5847 5324 4883 4456 3941 3356 2807 2288 1838 1597 1864 2354 2879 3512 4122 4592 5180 5535 5083 4691 4213 3674 3123 2629 2142 1685 1446 1711 2198 2725 3261 3860 4401 4838 5314 4832 4425 3963 3449 2946 2469 1991 1543 1294 1568 2057 2547 3062 3619 4117 4607 4990 4606 4236 3752 3270 2781 2329 1866 1407 1159 1436 1928 2415 2897 3403 3916 4394 4765 4498 4062 3610 3138 2673 2234 1784 1307 1066 1335 1832 2311 2784 3264 3757 4211 4588 4373 3967 3511 3043 2597 2165 1711 1239 1024 1263 1766 2238 2690 3167 3655 4106 4502 4351 3932 3468 3009 2562 2131 1688 1207 1024 1232 1741 2198 2651 3131 3590 4045 4423 4338 3968 3488 3037 2588 2154 1702 1226 1024 1249 1750 2223 2659 3133 3618 4090 4472 4441 4059 3598 3114 2664 2215 1758 1291 1059 1316 1809 2282 2739 3236 3707 4184 4574 4633 4242 3736 3236 2760 2306 1849 1384 1132 1410 1891 2367 2853 3364 3885 4335 4701 4833 4383 3932 3392 2905 2418 1955 1506 1254 1533 2008 2488 2986 3546 4048 4535 4884 5041 4640 4173 3611 3083 2590 2093 1640 1401 1662 2142 2649 3192 3746 4282 4784 5130 5335 4896 4418 3865 3295 2765 2253 1779 1556 1811 2291 2823 3401 3953 4511 4971 5411 5602 5161 4659 4133 3513 2936 2414 1925 1696 1958 2456 3026 3638 4228 4699 5183 5734 5888 5427 4948 4334 3762 3135 2555 2085 1846 2113 2627 3229 3897 4485 5021 5404 6265] + + + + + 1920x1080_D50_100 + + + 1920x1080 + + + D50 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [40 53 62 80 105 141 203 276] + + + [46 53 60 66 72 78 84 85] + + + [ 100] + + + [7079 6549 5987 5301 4517 3742 3029 2395 2107 2457 3122 3933 4794 5602 6313 6986 8095 6744 6197 5616 4945 4223 3489 2800 2201 1922 2258 2917 3632 4484 5272 6067 6532 7234 6412 5894 5301 4661 3950 3267 2611 2006 1714 2061 2706 3407 4158 4985 5564 6342 6764 6067 5532 4987 4344 3677 3018 2399 1811 1524 1858 2497 3175 3878 4633 5310 5896 6468 5764 5273 4686 4068 3446 2834 2219 1630 1334 1669 2310 2966 3630 4343 4996 5630 6105 5528 4996 4415 3841 3249 2664 2054 1463 1180 1509 2148 2797 3438 4093 4733 5350 5827 5321 4800 4260 3672 3101 2523 1924 1337 1071 1372 2018 2649 3270 3929 4504 5142 5642 5125 4650 4074 3545 2991 2430 1831 1246 1024 1284 1916 2554 3163 3772 4387 4964 5448 5103 4601 4049 3509 2956 2392 1800 1210 1024 1248 1883 2518 3107 3719 4334 4897 5409 5132 4627 4084 3539 2986 2421 1822 1234 1024 1273 1911 2539 3150 3752 4353 4971 5464 5276 4764 4208 3628 3069 2500 1898 1310 1058 1352 1987 2625 3233 3858 4470 5084 5592 5437 4973 4402 3808 3204 2624 2022 1430 1145 1475 2104 2746 3378 4031 4673 5302 5764 5759 5234 4641 4018 3399 2799 2178 1587 1293 1630 2266 2906 3580 4295 4917 5565 6084 6056 5561 4916 4287 3619 2989 2356 1762 1473 1805 2460 3106 3820 4563 5227 5887 6322 6406 5827 5255 4574 3898 3204 2556 1948 1660 2000 2642 3337 4092 4838 5578 6184 6740 6842 6166 5600 4927 4167 3437 2757 2151 1850 2199 2856 3581 4400 5191 5834 6471 7062 7035 6536 5842 5150 4426 3655 2944 2324 2038 2370 3041 3822 4669 5434 6191 6691 7699] + + + [5752 5225 4773 4232 3618 2986 2449 1998 1804 2038 2523 3137 3809 4463 5006 5527 6654 5414 5026 4509 3997 3406 2824 2301 1873 1676 1905 2377 2937 3591 4215 4867 5235 5802 5131 4774 4279 3743 3178 2641 2148 1734 1538 1767 2221 2742 3357 3975 4471 5084 5436 4876 4489 4015 3505 2973 2473 2009 1601 1395 1629 2075 2571 3124 3720 4255 4727 5167 4636 4249 3766 3286 2792 2327 1883 1472 1260 1498 1945 2420 2934 3490 4017 4500 4911 4400 4056 3584 3129 2654 2210 1772 1354 1142 1383 1829 2297 2779 3303 3810 4308 4688 4253 3886 3435 2972 2537 2114 1685 1260 1056 1287 1743 2196 2662 3156 3647 4132 4520 4120 3766 3322 2900 2464 2045 1622 1191 1024 1217 1675 2121 2574 3052 3542 4009 4390 4104 3720 3298 2851 2435 2019 1601 1167 1024 1192 1652 2090 2541 3019 3491 3966 4353 4128 3761 3322 2884 2454 2041 1615 1184 1024 1208 1666 2111 2559 3038 3512 3988 4384 4223 3857 3406 2957 2521 2091 1663 1239 1044 1269 1719 2168 2623 3118 3610 4104 4485 4379 4023 3540 3079 2613 2176 1743 1327 1113 1354 1802 2252 2736 3256 3760 4248 4640 4576 4220 3738 3249 2758 2294 1850 1437 1224 1466 1909 2375 2889 3443 3961 4476 4839 4830 4450 3978 3455 2922 2440 1972 1559 1357 1587 2032 2524 3077 3654 4190 4711 5093 5091 4718 4211 3689 3132 2592 2110 1687 1493 1717 2171 2699 3280 3908 4442 4953 5375 5409 4979 4455 3930 3344 2768 2253 1814 1623 1849 2320 2870 3523 4147 4679 5218 5706 5706 5200 4690 4131 3545 2923 2383 1946 1740 1975 2448 3049 3727 4350 4945 5440 6430] + + + [5697 5237 4752 4227 3615 2985 2449 1997 1802 2037 2526 3136 3817 4441 5012 5594 6704 5438 5023 4501 3989 3399 2822 2300 1874 1680 1909 2374 2944 3600 4210 4850 5222 5798 5113 4749 4263 3742 3175 2637 2154 1738 1535 1768 2221 2748 3345 3976 4461 5082 5447 4857 4485 3986 3493 2963 2465 2008 1599 1395 1629 2076 2565 3122 3714 4258 4734 5181 4600 4239 3760 3276 2789 2313 1883 1469 1258 1498 1943 2416 2931 3482 4009 4496 4894 4378 4044 3575 3106 2641 2207 1768 1354 1139 1383 1831 2294 2776 3305 3794 4303 4671 4242 3862 3419 2967 2530 2107 1682 1259 1055 1285 1737 2191 2656 3151 3652 4103 4534 4110 3767 3318 2880 2460 2039 1621 1190 1024 1217 1675 2117 2577 3048 3519 4014 4369 4070 3714 3275 2850 2433 2014 1600 1165 1024 1192 1651 2090 2543 3011 3491 3962 4338 4096 3747 3315 2876 2449 2034 1614 1186 1024 1210 1666 2114 2557 3041 3508 3996 4372 4226 3849 3388 2947 2515 2089 1663 1241 1046 1269 1721 2170 2626 3117 3620 4092 4471 4362 3998 3539 3066 2607 2177 1743 1329 1113 1357 1799 2253 2732 3256 3757 4245 4644 4573 4194 3733 3234 2749 2289 1849 1440 1225 1467 1913 2367 2891 3435 3954 4465 4857 4801 4443 3951 3456 2913 2438 1977 1562 1359 1591 2035 2526 3074 3656 4186 4694 5091 5103 4697 4200 3684 3120 2588 2110 1691 1496 1723 2173 2692 3281 3894 4445 4952 5382 5382 4966 4463 3914 3341 2758 2254 1824 1624 1856 2321 2876 3518 4139 4692 5227 5700 5633 5212 4676 4153 3538 2927 2395 1947 1744 1977 2457 3056 3730 4381 4915 5422 6438] + + + [5557 5075 4639 4070 3524 2919 2391 1949 1761 1978 2455 3025 3685 4296 4842 5373 6587 5307 4867 4382 3893 3321 2754 2243 1832 1646 1857 2310 2859 3489 4078 4688 5060 5683 4986 4634 4123 3641 3091 2576 2098 1703 1513 1728 2158 2662 3246 3853 4289 4916 5230 4707 4374 3892 3423 2890 2408 1968 1569 1383 1595 2021 2490 3027 3590 4132 4584 4997 4491 4126 3666 3194 2723 2265 1841 1451 1253 1473 1892 2348 2840 3382 3849 4383 4748 4286 3923 3472 3032 2571 2156 1737 1345 1141 1365 1789 2218 2691 3186 3679 4122 4531 4143 3762 3339 2893 2474 2052 1658 1256 1062 1273 1698 2126 2573 3051 3511 3985 4370 3981 3655 3220 2798 2397 1994 1594 1192 1024 1211 1637 2052 2486 2952 3399 3869 4259 3982 3607 3191 2771 2368 1968 1572 1170 1024 1185 1615 2028 2451 2911 3370 3836 4187 3989 3648 3221 2800 2397 1986 1587 1185 1024 1200 1631 2049 2469 2934 3396 3852 4217 4113 3745 3301 2874 2455 2045 1634 1239 1052 1260 1675 2103 2541 3002 3484 3965 4317 4230 3894 3439 2995 2540 2126 1712 1319 1115 1339 1751 2176 2645 3145 3624 4096 4480 4474 4083 3625 3151 2682 2233 1811 1420 1222 1444 1856 2292 2786 3327 3831 4303 4670 4672 4298 3851 3365 2848 2380 1933 1536 1346 1558 1977 2435 2960 3520 4036 4569 4914 4954 4574 4100 3588 3051 2536 2065 1656 1476 1680 2112 2607 3171 3734 4279 4755 5234 5203 4822 4328 3826 3258 2706 2205 1787 1601 1809 2259 2790 3407 3995 4501 5001 5515 5551 5102 4608 4062 3493 2878 2361 1910 1716 1938 2395 2976 3613 4249 4734 5219 6203] + + + + + 1920x1080_D65_100 + + + 1920x1080 + + + D65 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [41 55 65 81 103 141 201 273] + + + [46 56 61 66 72 78 83 82] + + + [ 100] + + + [6950 6457 5836 5156 4377 3620 2953 2361 2081 2407 3040 3812 4663 5495 6126 6868 8013 6650 6091 5474 4779 4069 3378 2719 2157 1882 2203 2826 3523 4309 5055 5945 6407 7124 6230 5680 5087 4437 3769 3114 2498 1944 1665 1984 2596 3253 3977 4750 5366 6146 6557 5882 5336 4771 4107 3493 2879 2296 1747 1475 1782 2388 3015 3668 4377 5089 5702 6213 5615 5103 4525 3888 3290 2728 2139 1585 1313 1626 2234 2859 3486 4175 4834 5452 6020 5373 4896 4282 3699 3133 2580 1999 1439 1169 1480 2084 2706 3313 3953 4597 5219 5759 5153 4628 4063 3494 2969 2426 1852 1302 1060 1336 1943 2543 3137 3730 4357 4978 5477 4971 4474 3912 3373 2848 2323 1764 1211 1024 1253 1841 2443 3003 3608 4210 4819 5330 4955 4476 3922 3372 2844 2321 1752 1196 1024 1233 1834 2442 3006 3590 4208 4819 5345 5059 4523 3972 3421 2878 2345 1777 1219 1024 1258 1857 2460 3044 3622 4274 4864 5364 5103 4615 4015 3459 2926 2399 1818 1274 1041 1311 1908 2515 3082 3693 4295 4926 5419 5298 4765 4198 3606 3057 2508 1944 1385 1126 1428 2021 2629 3218 3856 4490 5133 5586 5599 5092 4485 3868 3269 2705 2104 1549 1274 1591 2196 2812 3454 4127 4801 5467 5969 5963 5374 4775 4128 3488 2893 2283 1722 1443 1760 2376 3000 3680 4373 5109 5733 6278 6229 5661 5037 4378 3721 3069 2449 1886 1616 1937 2532 3213 3890 4644 5367 6001 6585 6545 5980 5363 4678 3962 3293 2654 2067 1802 2116 2741 3438 4194 4958 5623 6292 6868 6943 6243 5682 4960 4244 3519 2832 2256 1970 2305 2942 3654 4507 5281 6037 6555 7685] + + + [5822 5306 4794 4212 3611 2998 2447 2012 1817 2046 2529 3133 3808 4449 5039 5627 6675 5450 5035 4506 3962 3369 2799 2296 1876 1679 1906 2367 2926 3565 4169 4863 5253 5848 5121 4690 4206 3662 3106 2594 2115 1712 1519 1742 2183 2696 3267 3901 4396 5062 5401 4822 4440 3936 3421 2895 2420 1970 1575 1376 1601 2038 2524 3057 3630 4196 4676 5166 4626 4227 3743 3237 2753 2298 1865 1461 1254 1490 1927 2391 2897 3452 3991 4525 4907 4453 4054 3589 3091 2632 2199 1769 1355 1146 1384 1827 2290 2756 3280 3808 4326 4733 4213 3870 3383 2928 2495 2079 1660 1248 1052 1272 1717 2161 2618 3101 3613 4112 4493 4087 3728 3270 2823 2407 2003 1594 1175 1024 1202 1645 2079 2520 2980 3489 3989 4383 4097 3733 3281 2829 2415 2012 1592 1168 1024 1194 1646 2087 2519 2992 3500 3989 4364 4156 3766 3310 2859 2440 2029 1611 1188 1024 1212 1663 2105 2542 3018 3528 4029 4434 4191 3814 3351 2889 2462 2053 1633 1225 1037 1250 1688 2135 2568 3053 3563 4077 4464 4346 3962 3485 3013 2555 2139 1716 1309 1104 1336 1771 2214 2676 3187 3710 4214 4640 4622 4212 3713 3214 2727 2278 1837 1431 1224 1462 1898 2363 2859 3406 3952 4484 4898 4821 4449 3950 3423 2887 2422 1962 1555 1356 1585 2022 2508 3043 3628 4198 4715 5143 5036 4656 4150 3622 3052 2547 2078 1664 1478 1696 2136 2649 3223 3818 4397 4938 5354 5359 4886 4398 3846 3267 2712 2218 1794 1602 1831 2280 2822 3451 4070 4640 5213 5674 5616 5196 4610 4073 3481 2884 2358 1926 1728 1953 2417 3007 3659 4291 4917 5431 6379] + + + [5746 5293 4758 4191 3597 2992 2453 2016 1819 2055 2533 3147 3812 4460 5041 5623 6794 5444 5019 4502 3967 3368 2796 2294 1882 1684 1913 2367 2923 3563 4169 4869 5252 5866 5100 4704 4188 3647 3101 2592 2115 1715 1517 1747 2183 2696 3277 3898 4406 5055 5395 4799 4418 3917 3413 2889 2415 1971 1573 1378 1601 2035 2516 3049 3618 4190 4666 5108 4588 4207 3734 3222 2743 2287 1861 1460 1254 1488 1928 2391 2884 3428 3986 4484 4940 4423 4048 3558 3070 2624 2198 1763 1358 1146 1384 1826 2285 2761 3265 3801 4322 4708 4204 3829 3371 2914 2485 2074 1660 1248 1052 1272 1717 2156 2608 3094 3602 4091 4517 4068 3706 3257 2808 2399 1999 1590 1177 1024 1202 1645 2078 2515 2982 3476 3963 4362 4086 3711 3260 2819 2408 2006 1592 1170 1024 1194 1642 2083 2514 2982 3479 3987 4367 4124 3762 3298 2856 2427 2024 1608 1190 1024 1215 1662 2106 2538 3019 3511 4022 4420 4161 3790 3328 2882 2456 2050 1634 1225 1040 1253 1691 2131 2568 3046 3550 4064 4445 4314 3960 3478 2998 2556 2135 1715 1311 1106 1341 1769 2212 2679 3181 3705 4214 4626 4579 4197 3706 3202 2714 2275 1836 1437 1226 1465 1901 2360 2850 3409 3957 4468 4890 4816 4432 3942 3403 2888 2421 1964 1559 1361 1589 2025 2507 3041 3616 4176 4707 5132 5056 4656 4147 3606 3051 2555 2079 1674 1483 1704 2143 2651 3217 3823 4402 4941 5367 5325 4899 4387 3826 3269 2709 2226 1800 1613 1830 2285 2825 3445 4079 4632 5200 5666 5668 5149 4642 4070 3461 2892 2361 1931 1736 1964 2429 3008 3667 4291 4888 5424 6421] + + + [5612 5066 4578 4049 3467 2882 2352 1935 1754 1963 2435 2997 3622 4260 4811 5327 6648 5230 4841 4335 3807 3237 2699 2208 1814 1626 1838 2260 2797 3418 3982 4627 5008 5628 4897 4503 4024 3519 2981 2498 2030 1660 1477 1681 2095 2579 3121 3733 4192 4846 5177 4581 4229 3762 3271 2765 2316 1901 1527 1344 1545 1949 2402 2903 3462 4000 4476 4906 4401 4045 3583 3095 2638 2205 1795 1426 1237 1447 1850 2292 2762 3288 3804 4296 4695 4262 3891 3403 2962 2518 2116 1711 1330 1138 1353 1758 2193 2631 3134 3623 4146 4520 4036 3671 3238 2793 2389 1996 1611 1232 1049 1249 1656 2061 2496 2946 3435 3895 4307 3896 3547 3115 2690 2305 1921 1545 1164 1024 1183 1586 1984 2395 2840 3314 3794 4145 3917 3572 3135 2708 2315 1932 1547 1161 1024 1178 1587 1992 2398 2848 3320 3808 4194 3968 3587 3167 2741 2341 1953 1566 1176 1024 1193 1609 2010 2425 2868 3356 3844 4214 4003 3644 3189 2760 2356 1976 1581 1208 1038 1228 1624 2032 2446 2909 3386 3873 4246 4142 3797 3328 2875 2447 2049 1656 1286 1097 1307 1698 2113 2554 3024 3536 4006 4420 4418 4036 3547 3077 2617 2194 1776 1403 1209 1428 1820 2245 2719 3255 3777 4285 4659 4619 4253 3787 3275 2774 2329 1894 1518 1331 1538 1940 2397 2893 3458 3990 4510 4904 4857 4475 3982 3454 2939 2460 2004 1618 1441 1640 2052 2530 3059 3623 4191 4691 5156 5107 4708 4215 3674 3146 2617 2142 1736 1558 1763 2187 2696 3287 3857 4380 4906 5452 5433 4970 4419 3946 3356 2791 2289 1860 1682 1888 2333 2889 3523 4119 4687 5152 6229] + + + + + 1920x1080_D75_100 + + + 1920x1080 + + + D75 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [39 53 66 81 106 143 197 275] + + + [45 53 59 67 73 78 84 85] + + + [ 100] + + + [6772 6237 5693 5013 4287 3533 2869 2308 2052 2354 2962 3698 4531 5329 5911 6649 7832 6412 5900 5377 4684 4010 3290 2669 2135 1864 2182 2760 3461 4232 4955 5789 6210 6861 6116 5636 5083 4391 3727 3085 2479 1949 1682 1996 2561 3210 3937 4687 5327 6025 6417 5819 5298 4763 4125 3493 2875 2292 1770 1499 1804 2380 2999 3670 4389 5085 5645 6121 5549 5020 4463 3836 3262 2687 2122 1595 1325 1634 2207 2815 3442 4108 4743 5372 5806 5313 4780 4234 3642 3082 2542 1971 1442 1173 1482 2054 2650 3248 3881 4511 5081 5563 5067 4562 4041 3465 2943 2394 1848 1318 1070 1354 1930 2515 3094 3699 4304 4897 5319 4881 4440 3911 3359 2835 2315 1760 1234 1024 1269 1836 2426 2995 3566 4153 4750 5215 4882 4400 3881 3330 2807 2282 1736 1202 1024 1239 1810 2391 2956 3531 4132 4716 5138 4880 4440 3895 3340 2833 2305 1751 1225 1024 1258 1830 2416 2981 3540 4147 4735 5163 4994 4555 4003 3436 2916 2382 1818 1292 1055 1331 1898 2489 3060 3641 4268 4868 5326 5180 4746 4194 3596 3028 2494 1938 1407 1143 1446 2011 2607 3200 3824 4447 5014 5484 5506 5012 4428 3818 3229 2645 2085 1554 1284 1602 2160 2754 3382 4064 4713 5310 5813 5762 5274 4730 4057 3433 2841 2250 1718 1455 1760 2335 2955 3603 4316 4975 5587 6024 6083 5596 4997 4364 3684 3040 2434 1887 1627 1939 2516 3150 3869 4574 5302 5878 6365 6389 5918 5315 4655 3944 3255 2625 2071 1811 2121 2697 3387 4163 4900 5566 6173 6629 6696 6195 5572 4892 4198 3446 2791 2240 1966 2288 2885 3585 4413 5159 5879 6388 7594] + + + [5686 5308 4753 4188 3587 2956 2414 1990 1791 2023 2493 3091 3765 4435 4995 5555 6624 5364 4995 4539 3949 3372 2780 2275 1866 1672 1898 2350 2899 3552 4177 4851 5210 5810 5123 4742 4259 3710 3152 2609 2122 1729 1531 1759 2187 2705 3310 3921 4472 5073 5400 4881 4470 4017 3474 2940 2441 1986 1596 1397 1623 2049 2542 3088 3685 4251 4735 5150 4614 4244 3776 3258 2769 2302 1859 1468 1260 1495 1921 2388 2903 3461 4012 4518 4877 4396 4045 3576 3089 2618 2180 1750 1350 1142 1381 1803 2269 2747 3271 3799 4280 4680 4234 3881 3421 2946 2509 2083 1657 1257 1057 1280 1716 2160 2627 3118 3636 4121 4508 4114 3760 3318 2862 2434 2015 1598 1190 1024 1215 1652 2090 2545 3012 3531 4001 4372 4076 3726 3290 2822 2418 1991 1581 1166 1024 1191 1630 2070 2516 2982 3495 3954 4346 4113 3754 3307 2856 2429 2012 1591 1185 1024 1207 1642 2085 2533 3008 3509 3998 4357 4198 3843 3393 2914 2484 2064 1640 1235 1046 1263 1694 2134 2594 3080 3606 4081 4476 4358 4003 3544 3042 2588 2148 1717 1324 1113 1352 1772 2227 2699 3221 3755 4244 4617 4579 4205 3737 3216 2726 2268 1825 1435 1225 1463 1881 2347 2856 3406 3955 4450 4852 4812 4441 3975 3423 2898 2408 1951 1555 1359 1584 2013 2493 3042 3622 4202 4689 5077 5067 4678 4203 3648 3089 2557 2081 1674 1486 1708 2138 2658 3243 3855 4425 4948 5355 5375 4941 4459 3874 3306 2724 2222 1809 1613 1842 2287 2831 3470 4110 4667 5219 5666 5664 5176 4665 4099 3507 2889 2350 1930 1731 1959 2416 3011 3705 4306 4937 5391 6449] + + + [5676 5210 4751 4175 3570 2948 2411 1991 1799 2027 2491 3086 3780 4422 4983 5546 6641 5375 4998 4499 3943 3356 2779 2269 1866 1672 1902 2346 2900 3552 4156 4848 5205 5805 5079 4723 4218 3697 3129 2594 2122 1731 1532 1757 2185 2705 3295 3924 4443 5038 5428 4827 4468 3985 3453 2932 2435 1979 1596 1394 1622 2046 2531 3075 3669 4245 4731 5116 4564 4207 3758 3232 2749 2287 1854 1464 1260 1489 1916 2380 2890 3438 3986 4489 4892 4358 4026 3551 3067 2605 2173 1743 1351 1138 1377 1802 2256 2737 3254 3777 4279 4642 4196 3847 3391 2923 2492 2069 1654 1255 1053 1279 1709 2150 2610 3100 3617 4097 4483 4081 3737 3284 2832 2417 2005 1594 1185 1024 1212 1643 2087 2535 2997 3514 3994 4344 4035 3701 3266 2809 2395 1990 1571 1165 1024 1189 1624 2058 2504 2968 3469 3937 4324 4097 3720 3289 2838 2414 2001 1587 1182 1024 1206 1640 2076 2517 2997 3487 3981 4360 4161 3832 3359 2899 2470 2053 1634 1236 1045 1264 1687 2129 2586 3064 3581 4079 4441 4353 3964 3517 3029 2572 2139 1716 1324 1113 1350 1772 2217 2688 3207 3747 4222 4611 4552 4191 3721 3199 2713 2261 1823 1435 1226 1464 1885 2335 2850 3384 3936 4449 4804 4782 4418 3939 3410 2885 2400 1948 1556 1359 1586 2011 2484 3034 3605 4182 4666 5086 5057 4664 4178 3640 3075 2556 2081 1681 1491 1712 2136 2650 3235 3836 4432 4930 5331 5378 4926 4431 3860 3293 2722 2225 1807 1620 1845 2286 2832 3466 4097 4663 5187 5638 5598 5181 4655 4092 3484 2881 2362 1933 1736 1967 2418 3011 3677 4315 4907 5427 6449] + + + [5321 4917 4437 3925 3365 2770 2268 1876 1701 1909 2331 2892 3519 4125 4687 5161 6388 5058 4649 4253 3702 3156 2624 2142 1770 1593 1793 2198 2714 3323 3893 4518 4863 5499 4806 4444 3971 3471 2954 2448 2000 1647 1471 1665 2056 2535 3081 3671 4143 4725 5011 4514 4191 3749 3250 2751 2289 1878 1524 1352 1549 1926 2376 2878 3431 3979 4407 4820 4285 3965 3526 3056 2585 2156 1763 1418 1235 1436 1811 2231 2704 3219 3724 4207 4536 4097 3763 3333 2875 2455 2050 1661 1316 1130 1334 1709 2122 2565 3032 3535 3986 4363 3938 3590 3185 2759 2345 1957 1582 1233 1056 1249 1623 2021 2443 2901 3372 3827 4169 3834 3500 3089 2661 2278 1894 1529 1174 1024 1190 1566 1954 2368 2804 3276 3716 4058 3786 3473 3059 2644 2256 1877 1510 1156 1024 1170 1549 1934 2339 2770 3238 3677 4037 3825 3491 3093 2653 2280 1892 1522 1169 1024 1183 1561 1947 2354 2785 3265 3706 4046 3905 3590 3155 2733 2332 1948 1562 1215 1048 1232 1603 1999 2410 2864 3339 3795 4141 4067 3724 3301 2840 2423 2020 1637 1290 1105 1309 1673 2074 2517 2986 3480 3934 4286 4253 3933 3486 3015 2554 2139 1728 1384 1205 1410 1773 2187 2648 3180 3682 4144 4521 4509 4145 3709 3197 2716 2267 1846 1495 1321 1514 1890 2329 2824 3363 3894 4356 4753 4713 4391 3930 3423 2897 2417 1968 1600 1434 1623 2008 2482 3019 3563 4105 4578 5039 4997 4635 4161 3637 3101 2575 2098 1718 1547 1744 2149 2652 3243 3807 4317 4816 5318 5371 4889 4374 3866 3301 2739 2243 1829 1657 1859 2272 2818 3460 4018 4583 5021 6008] + + + + + 1920x1080_F11_100 + + + 1920x1080 + + + F11 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [40 54 65 83 104 143 199 272] + + + [46 54 59 66 73 78 82 86] + + + [ 100] + + + [6267 5726 5152 4544 3871 3213 2612 2129 1898 2163 2706 3376 4106 4879 5459 6125 7170 5890 5425 4889 4282 3620 3008 2442 1968 1752 2006 2526 3160 3858 4540 5325 5730 6416 5569 5127 4572 3995 3372 2803 2268 1813 1592 1844 2350 2924 3565 4267 4868 5545 5952 5305 4843 4291 3730 3145 2619 2106 1659 1439 1695 2187 2739 3338 4006 4608 5196 5631 4969 4558 4048 3480 2952 2445 1958 1520 1289 1550 2030 2562 3109 3735 4326 4906 5364 4764 4324 3805 3290 2777 2310 1830 1387 1156 1421 1902 2419 2946 3523 4100 4681 5117 4559 4146 3643 3136 2659 2193 1728 1282 1065 1311 1793 2303 2807 3367 3926 4481 4931 4430 3993 3518 3048 2574 2118 1659 1208 1024 1239 1727 2225 2721 3258 3809 4359 4782 4383 3966 3481 3009 2540 2092 1633 1178 1024 1209 1695 2200 2680 3223 3771 4322 4761 4426 3991 3510 3021 2556 2109 1650 1196 1024 1229 1714 2216 2705 3227 3771 4346 4731 4543 4106 3604 3108 2632 2175 1703 1261 1049 1291 1774 2273 2779 3329 3910 4458 4902 4713 4300 3787 3250 2742 2279 1801 1357 1125 1390 1870 2383 2900 3484 4058 4643 5073 4937 4498 4000 3454 2899 2417 1924 1483 1251 1513 1999 2523 3070 3699 4309 4896 5319 5218 4830 4256 3688 3107 2586 2067 1619 1400 1654 2144 2699 3283 3946 4571 5153 5691 5575 5048 4552 3926 3320 2757 2226 1763 1544 1799 2307 2890 3523 4201 4861 5480 5912 5891 5374 4830 4245 3570 2958 2403 1913 1696 1960 2476 3104 3775 4514 5151 5805 6275 6245 5698 5128 4457 3830 3136 2552 2069 1833 2100 2643 3293 4041 4779 5447 5933 7072] + + + [5702 5246 4752 4163 3577 2950 2418 1997 1805 2034 2493 3090 3741 4437 4981 5547 6632 5415 5010 4494 3943 3346 2774 2270 1874 1681 1905 2349 2889 3539 4158 4849 5237 5801 5138 4708 4229 3683 3112 2595 2122 1731 1540 1760 2186 2702 3269 3927 4437 5095 5435 4865 4476 3989 3464 2917 2438 1987 1600 1402 1626 2050 2530 3065 3668 4237 4732 5194 4587 4227 3741 3239 2732 2291 1859 1468 1268 1495 1920 2380 2882 3436 3984 4493 4896 4382 4018 3545 3063 2600 2172 1752 1353 1140 1381 1808 2256 2719 3252 3777 4281 4695 4192 3863 3375 2931 2484 2078 1661 1258 1057 1281 1718 2156 2607 3107 3616 4115 4492 4126 3727 3302 2840 2421 2014 1604 1190 1024 1215 1654 2091 2528 3002 3515 4009 4388 4053 3703 3251 2808 2389 1992 1579 1163 1024 1189 1629 2057 2493 2972 3462 3940 4329 4082 3720 3273 2826 2409 2006 1592 1179 1024 1204 1643 2080 2506 2989 3486 3988 4393 4163 3812 3371 2892 2460 2058 1640 1234 1046 1263 1694 2131 2567 3072 3572 4076 4467 4347 3974 3508 3020 2560 2139 1720 1322 1114 1350 1776 2214 2682 3196 3732 4224 4634 4569 4166 3696 3188 2696 2256 1824 1434 1227 1463 1884 2338 2829 3392 3943 4450 4870 4812 4409 3934 3401 2856 2399 1946 1554 1360 1584 2007 2491 3011 3607 4183 4690 5102 5086 4691 4167 3626 3069 2548 2079 1681 1494 1713 2139 2641 3221 3842 4418 4969 5398 5415 4941 4429 3877 3274 2716 2227 1812 1626 1848 2284 2831 3460 4109 4684 5265 5760 5660 5176 4685 4098 3488 2891 2353 1944 1747 1966 2428 3008 3681 4324 4957 5458 6490] + + + [5713 5219 4729 4172 3574 2945 2417 1993 1802 2032 2488 3087 3762 4419 5018 5592 6731 5388 5014 4490 3944 3339 2773 2268 1872 1677 1901 2346 2893 3543 4176 4868 5248 5825 5131 4726 4235 3682 3115 2588 2124 1727 1533 1760 2189 2698 3286 3923 4444 5083 5455 4866 4453 3962 3446 2911 2431 1979 1597 1399 1625 2050 2535 3063 3669 4257 4743 5189 4586 4218 3738 3237 2736 2289 1860 1467 1261 1497 1920 2385 2879 3449 3981 4510 4910 4379 4010 3534 3058 2590 2170 1748 1350 1138 1377 1807 2261 2726 3255 3792 4277 4691 4204 3849 3384 2933 2486 2078 1664 1257 1055 1283 1719 2161 2611 3111 3625 4131 4524 4097 3745 3293 2841 2417 2018 1607 1189 1024 1215 1660 2097 2530 3022 3530 4027 4415 4057 3693 3249 2814 2387 1998 1581 1163 1024 1190 1635 2069 2504 2977 3488 3974 4342 4076 3732 3283 2829 2408 2006 1593 1182 1024 1208 1646 2088 2512 3000 3500 4006 4392 4191 3817 3361 2906 2462 2061 1643 1236 1045 1265 1699 2139 2584 3076 3594 4091 4490 4339 3991 3497 3027 2563 2141 1723 1321 1114 1353 1780 2222 2688 3210 3744 4254 4653 4577 4169 3702 3192 2699 2255 1827 1434 1225 1466 1884 2343 2832 3399 3951 4467 4866 4814 4420 3939 3387 2859 2400 1945 1557 1358 1584 2008 2487 3013 3614 4168 4714 5113 5062 4694 4158 3640 3053 2550 2080 1683 1491 1714 2142 2651 3228 3853 4441 4961 5396 5395 4945 4428 3867 3279 2720 2227 1818 1622 1847 2290 2838 3458 4114 4708 5257 5728 5665 5220 4677 4098 3484 2882 2361 1936 1739 1970 2425 3012 3692 4337 4972 5497 6483] + + + [5813 5265 4746 4192 3565 2962 2406 1985 1792 2016 2490 3088 3745 4455 4962 5602 6872 5407 5034 4512 3958 3354 2787 2267 1867 1674 1887 2328 2885 3522 4167 4845 5224 5887 5102 4745 4249 3690 3118 2590 2116 1727 1541 1755 2173 2689 3279 3938 4429 5066 5430 4906 4504 4004 3459 2921 2434 1986 1597 1405 1622 2035 2517 3054 3659 4247 4775 5268 4610 4203 3756 3239 2743 2283 1855 1475 1274 1496 1907 2376 2867 3431 3991 4508 4919 4379 4023 3546 3053 2592 2171 1745 1360 1150 1382 1800 2247 2706 3239 3772 4300 4697 4232 3856 3398 2932 2482 2077 1663 1267 1068 1287 1711 2141 2597 3091 3632 4100 4545 4067 3744 3285 2834 2416 2008 1605 1202 1024 1223 1646 2077 2511 3003 3496 4011 4407 4099 3680 3264 2806 2379 1980 1586 1178 1024 1197 1627 2048 2468 2956 3469 3953 4362 4091 3733 3276 2835 2409 2001 1599 1195 1024 1210 1639 2060 2495 2972 3476 3980 4443 4167 3830 3353 2891 2461 2059 1641 1247 1056 1270 1683 2120 2549 3063 3561 4078 4477 4336 3972 3513 3026 2561 2138 1724 1332 1129 1354 1760 2192 2675 3196 3723 4250 4652 4610 4180 3721 3203 2693 2260 1823 1440 1239 1466 1871 2312 2804 3393 3950 4449 4920 4781 4419 3939 3407 2877 2405 1949 1564 1368 1586 1991 2475 2998 3601 4172 4735 5152 5107 4678 4208 3649 3063 2570 2082 1682 1505 1705 2132 2641 3194 3819 4425 4951 5430 5357 5001 4456 3911 3315 2730 2239 1820 1639 1845 2284 2836 3481 4107 4670 5226 5792 5830 5217 4723 4143 3532 2924 2372 1954 1758 1980 2426 3026 3692 4363 4961 5462 6485] + + + + + 1920x1080_F12_100 + + + 1920x1080 + + + F12 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [42 52 64 80 99 136 200 287] + + + [45 55 58 66 72 79 83 86] + + + [ 100] + + + [7677 7160 6553 5823 4986 4181 3370 2633 2253 2712 3515 4358 5285 6179 6888 7547 8661 7366 6842 6200 5470 4691 3895 3146 2421 2043 2485 3258 4099 4964 5788 6696 7153 7763 7050 6493 5881 5117 4368 3632 2897 2174 1796 2241 3022 3799 4626 5477 6164 6925 7416 6720 6145 5543 4819 4074 3390 2661 1949 1573 2007 2793 3552 4309 5131 5875 6541 7044 6405 5845 5210 4512 3808 3156 2451 1727 1361 1788 2563 3313 4040 4784 5531 6199 6682 6119 5586 4925 4270 3602 2956 2249 1539 1184 1594 2371 3119 3798 4530 5240 5862 6410 5946 5337 4716 4062 3437 2790 2095 1384 1060 1436 2210 2940 3620 4316 4979 5617 6141 5749 5182 4575 3942 3316 2686 1985 1286 1024 1335 2097 2836 3511 4173 4858 5472 6016 5695 5158 4516 3903 3271 2644 1947 1247 1024 1297 2048 2789 3445 4121 4794 5399 5929 5783 5198 4573 3941 3307 2675 1975 1277 1024 1324 2084 2822 3495 4153 4827 5471 5991 5916 5362 4732 4049 3417 2781 2075 1365 1051 1419 2185 2929 3584 4286 4966 5608 6130 6140 5586 4941 4251 3582 2935 2230 1511 1156 1566 2336 3075 3775 4494 5202 5835 6361 6489 5882 5214 4507 3799 3137 2416 1695 1324 1753 2534 3267 4009 4751 5488 6133 6653 6760 6204 5522 4807 4056 3370 2638 1908 1531 1970 2751 3517 4258 5074 5798 6458 6964 7144 6536 5912 5139 4352 3617 2867 2133 1748 2196 2974 3774 4559 5383 6149 6749 7318 7516 6905 6253 5467 4663 3889 3119 2370 1991 2438 3240 4046 4923 5735 6475 7108 7656 7838 7240 6539 5794 4968 4134 3340 2584 2193 2646 3447 4300 5201 6084 6775 7311 8403] + + + [5790 5305 4813 4287 3684 3077 2541 2078 1853 2114 2620 3222 3847 4483 5037 5510 6518 5442 5021 4572 4038 3459 2911 2395 1950 1719 1981 2471 3021 3646 4229 4876 5217 5759 5196 4791 4322 3797 3247 2715 2236 1796 1574 1829 2306 2821 3389 4012 4491 5064 5402 4957 4555 4090 3565 3036 2562 2093 1657 1428 1690 2158 2653 3179 3741 4294 4757 5166 4694 4314 3850 3355 2846 2403 1958 1521 1278 1549 2026 2500 2985 3529 4045 4519 4873 4506 4109 3665 3184 2697 2284 1844 1394 1147 1427 1904 2367 2825 3333 3832 4289 4696 4340 3956 3498 3038 2599 2177 1747 1292 1054 1322 1807 2260 2708 3186 3679 4124 4513 4229 3842 3406 2944 2522 2111 1686 1222 1024 1249 1738 2190 2621 3089 3567 4015 4386 4192 3809 3371 2921 2495 2090 1661 1193 1024 1223 1715 2161 2587 3047 3526 3968 4333 4231 3849 3399 2944 2521 2103 1678 1215 1024 1245 1731 2182 2604 3077 3536 4008 4399 4343 3952 3498 3023 2580 2172 1735 1277 1049 1306 1793 2247 2682 3167 3657 4120 4491 4514 4109 3647 3155 2696 2262 1820 1376 1126 1406 1885 2338 2802 3307 3815 4261 4646 4697 4317 3835 3339 2832 2392 1938 1494 1249 1527 1996 2472 2945 3495 4017 4469 4894 4999 4543 4077 3553 3011 2544 2071 1628 1395 1660 2134 2625 3152 3722 4248 4721 5086 5215 4810 4318 3782 3213 2703 2218 1764 1539 1797 2275 2799 3354 3942 4491 4942 5372 5530 5089 4582 4025 3448 2882 2374 1910 1687 1947 2435 2992 3604 4212 4738 5214 5674 5758 5324 4815 4248 3647 3054 2508 2043 1812 2079 2585 3178 3800 4406 5018 5418 6273] + + + [5667 5285 4806 4269 3693 3080 2531 2063 1837 2110 2625 3224 3883 4507 5044 5554 6568 5483 5050 4593 4050 3457 2914 2392 1942 1708 1977 2473 3040 3655 4261 4894 5245 5847 5219 4799 4330 3804 3241 2722 2234 1792 1556 1827 2305 2832 3406 4023 4509 5102 5465 4947 4567 4088 3572 3038 2555 2091 1653 1415 1691 2165 2666 3199 3767 4332 4780 5202 4710 4345 3862 3369 2862 2412 1957 1517 1269 1549 2030 2506 3004 3548 4071 4536 4935 4533 4116 3679 3186 2712 2290 1845 1394 1142 1430 1914 2384 2851 3367 3864 4328 4726 4357 3993 3523 3057 2609 2190 1754 1291 1049 1327 1818 2279 2733 3219 3716 4167 4536 4284 3876 3432 2971 2540 2128 1693 1224 1024 1255 1754 2215 2650 3123 3609 4062 4444 4249 3819 3403 2939 2510 2104 1672 1198 1024 1230 1731 2181 2623 3086 3575 4019 4388 4263 3877 3436 2972 2535 2128 1684 1219 1024 1251 1750 2205 2637 3109 3600 4035 4450 4371 3986 3523 3049 2603 2181 1743 1279 1048 1314 1804 2269 2713 3198 3692 4166 4551 4551 4145 3669 3176 2705 2276 1834 1375 1121 1413 1896 2356 2830 3340 3850 4312 4694 4749 4344 3863 3346 2848 2398 1942 1495 1242 1530 2007 2484 2972 3523 4040 4529 4864 4977 4577 4089 3557 3025 2547 2073 1627 1388 1661 2140 2637 3172 3730 4283 4735 5150 5250 4815 4324 3790 3216 2703 2217 1758 1527 1801 2283 2812 3365 3979 4517 4995 5391 5515 5096 4594 4037 3453 2891 2373 1907 1676 1939 2445 2995 3607 4213 4738 5242 5681 5836 5332 4831 4253 3662 3053 2506 2036 1798 2076 2581 3189 3832 4443 4993 5417 6330] + + + [5628 5333 4858 4420 3859 3241 2703 2195 1947 2216 2753 3366 3929 4547 5031 5377 6331 5490 5021 4717 4209 3635 3067 2540 2054 1803 2090 2593 3158 3764 4341 4886 5191 5631 5244 4931 4476 3958 3402 2905 2376 1891 1638 1920 2424 2967 3532 4119 4522 5016 5303 5059 4698 4255 3757 3229 2705 2219 1738 1482 1769 2279 2792 3303 3878 4363 4763 5088 4857 4487 4054 3562 3037 2560 2084 1584 1318 1618 2139 2639 3132 3657 4123 4510 4883 4739 4321 3859 3366 2891 2437 1950 1448 1169 1480 2006 2505 2954 3467 3916 4298 4625 4604 4189 3742 3271 2779 2331 1853 1334 1063 1365 1903 2402 2847 3320 3754 4153 4465 4521 4091 3636 3161 2698 2258 1782 1261 1024 1289 1831 2312 2758 3214 3671 4017 4381 4487 4079 3617 3132 2671 2232 1759 1229 1024 1257 1806 2290 2720 3171 3636 4005 4309 4511 4096 3648 3160 2696 2256 1769 1253 1024 1276 1826 2306 2743 3198 3618 4024 4303 4638 4233 3742 3233 2775 2316 1841 1320 1066 1351 1877 2371 2812 3284 3728 4119 4456 4786 4356 3897 3377 2864 2416 1929 1433 1147 1458 1974 2447 2943 3394 3885 4238 4588 4909 4525 4073 3534 3018 2542 2057 1563 1286 1590 2101 2584 3052 3601 4049 4420 4741 5171 4762 4300 3736 3202 2707 2193 1715 1447 1733 2238 2739 3237 3751 4243 4627 4908 5369 4952 4504 3980 3400 2874 2347 1856 1608 1886 2389 2926 3428 3981 4435 4808 5110 5649 5208 4710 4207 3614 3063 2513 2020 1781 2037 2564 3081 3661 4184 4547 4937 5277 5798 5449 4972 4417 3872 3242 2688 2180 1936 2211 2705 3328 3892 4407 4844 5064 5799] + + + + + 1920x1080_F2_100 + + + 1920x1080 + + + F2 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [41 51 66 80 103 142 201 276] + + + [47 54 58 65 71 79 84 86] + + + [ 100] + + + [6230 5791 5254 4630 3960 3280 2661 2148 1903 2195 2753 3440 4191 4956 5562 6166 7258 5984 5463 4949 4322 3688 3047 2466 1985 1752 2023 2560 3198 3935 4590 5380 5784 6403 5611 5177 4674 4046 3430 2857 2299 1825 1589 1863 2386 2987 3635 4341 4944 5622 6051 5361 4883 4399 3769 3215 2669 2134 1670 1438 1710 2225 2794 3416 4067 4730 5256 5797 5066 4611 4117 3553 3014 2499 1996 1526 1289 1561 2071 2625 3184 3810 4434 4980 5475 4827 4367 3902 3348 2837 2367 1861 1392 1154 1430 1941 2477 3015 3601 4202 4753 5209 4648 4196 3719 3188 2707 2237 1747 1283 1064 1317 1832 2348 2872 3412 3998 4538 5022 4493 4045 3606 3079 2625 2157 1684 1209 1024 1245 1752 2269 2773 3310 3894 4378 4871 4442 4005 3538 3043 2587 2127 1652 1178 1024 1214 1723 2239 2739 3272 3829 4379 4808 4501 4055 3587 3078 2602 2148 1668 1198 1024 1230 1743 2250 2766 3284 3868 4381 4849 4583 4155 3682 3154 2687 2216 1724 1260 1050 1296 1802 2328 2826 3383 3952 4523 4964 4764 4366 3857 3316 2800 2323 1828 1366 1128 1402 1904 2437 2973 3549 4145 4715 5188 5013 4566 4073 3509 2964 2471 1951 1488 1248 1526 2033 2575 3127 3761 4394 4934 5425 5308 4858 4359 3726 3156 2630 2103 1627 1396 1663 2187 2737 3358 4001 4682 5218 5697 5602 5085 4600 3985 3378 2802 2257 1770 1539 1817 2340 2943 3578 4255 4943 5513 6030 5951 5402 4938 4261 3632 3016 2425 1932 1700 1967 2518 3147 3849 4566 5205 5806 6327 6289 5800 5167 4540 3864 3203 2589 2086 1832 2131 2690 3360 4115 4834 5524 6058 7057] + + + [5749 5275 4755 4189 3591 2964 2428 2004 1801 2034 2508 3113 3772 4434 4983 5538 6626 5380 4975 4495 3937 3355 2794 2277 1867 1677 1902 2352 2904 3551 4154 4853 5220 5808 5116 4702 4254 3685 3134 2615 2129 1730 1534 1759 2202 2712 3304 3934 4451 5065 5412 4876 4457 4009 3461 2935 2449 1997 1601 1403 1632 2058 2553 3089 3675 4252 4718 5181 4601 4218 3772 3248 2760 2310 1874 1475 1267 1503 1941 2402 2907 3457 4001 4490 4923 4394 4011 3573 3077 2621 2192 1765 1360 1148 1390 1826 2285 2745 3263 3806 4285 4675 4198 3845 3404 2930 2500 2093 1674 1263 1059 1289 1731 2171 2623 3115 3635 4099 4504 4098 3728 3308 2843 2435 2026 1614 1196 1024 1222 1668 2105 2548 3012 3527 3992 4388 4065 3682 3263 2810 2402 2004 1595 1168 1024 1196 1645 2080 2511 2981 3485 3937 4345 4082 3710 3296 2832 2421 2017 1602 1186 1024 1211 1655 2094 2521 2998 3500 3981 4373 4182 3811 3367 2907 2481 2075 1651 1241 1048 1270 1707 2152 2590 3083 3594 4074 4475 4344 3987 3531 3036 2583 2161 1737 1330 1118 1360 1794 2238 2711 3219 3763 4241 4629 4567 4180 3717 3202 2716 2279 1837 1438 1229 1468 1897 2362 2857 3404 3957 4449 4850 4788 4408 3943 3407 2886 2414 1955 1559 1357 1585 2018 2501 3030 3606 4181 4696 5108 5068 4653 4167 3630 3068 2564 2081 1677 1487 1709 2148 2663 3238 3848 4449 4952 5373 5339 4932 4451 3872 3305 2724 2233 1805 1622 1844 2293 2847 3472 4100 4680 5210 5724 5645 5165 4681 4090 3506 2906 2357 1940 1735 1966 2436 3031 3691 4326 4940 5422 6479] + + + [5669 5212 4729 4155 3561 2969 2419 1988 1796 2027 2510 3091 3796 4422 5007 5557 6713 5373 4981 4479 3930 3340 2788 2277 1864 1666 1896 2352 2916 3555 4149 4862 5230 5771 5095 4689 4231 3674 3123 2598 2126 1726 1528 1757 2199 2709 3298 3925 4448 5066 5460 4855 4432 3985 3448 2924 2446 1992 1597 1396 1626 2059 2550 3086 3673 4261 4737 5151 4573 4215 3749 3242 2752 2306 1866 1474 1261 1500 1935 2400 2910 3449 4019 4503 4928 4380 4009 3570 3054 2610 2188 1763 1356 1144 1387 1825 2279 2750 3262 3801 4300 4684 4204 3830 3388 2930 2501 2086 1671 1260 1056 1285 1733 2172 2626 3118 3644 4097 4537 4079 3730 3291 2840 2428 2028 1614 1192 1024 1221 1667 2110 2551 3018 3524 4014 4371 4033 3672 3266 2806 2397 2002 1595 1167 1024 1196 1646 2085 2518 2981 3488 3962 4355 4073 3704 3282 2831 2422 2019 1599 1187 1024 1211 1661 2097 2532 3000 3516 3977 4372 4175 3801 3368 2904 2473 2072 1654 1240 1046 1269 1712 2155 2599 3088 3604 4100 4480 4347 3971 3531 3029 2582 2163 1732 1333 1116 1361 1796 2240 2708 3227 3765 4240 4666 4570 4159 3711 3201 2710 2270 1835 1437 1226 1468 1896 2354 2861 3406 3963 4459 4875 4796 4395 3940 3394 2876 2411 1956 1559 1356 1586 2017 2502 3037 3621 4178 4698 5122 5067 4646 4165 3614 3066 2556 2087 1675 1484 1708 2146 2656 3243 3836 4443 4926 5419 5340 4918 4433 3873 3284 2724 2233 1808 1613 1846 2290 2845 3480 4104 4693 5203 5723 5570 5149 4669 4074 3508 2889 2367 1936 1734 1967 2443 3037 3681 4338 4976 5442 6491] + + + [5642 5150 4715 4151 3557 2930 2397 1964 1777 1992 2464 3066 3754 4363 4934 5484 6775 5326 4937 4449 3905 3315 2771 2246 1844 1648 1871 2314 2872 3503 4113 4803 5162 5765 5064 4678 4213 3633 3106 2579 2103 1707 1520 1734 2162 2672 3244 3885 4383 4985 5435 4813 4431 3946 3440 2899 2423 1973 1585 1388 1611 2022 2511 3059 3627 4211 4710 5121 4532 4178 3724 3215 2735 2276 1856 1470 1266 1491 1904 2367 2849 3413 3947 4441 4901 4368 3959 3524 3021 2581 2168 1743 1355 1149 1375 1796 2242 2713 3206 3751 4227 4642 4160 3765 3361 2896 2460 2066 1661 1260 1064 1282 1703 2134 2572 3073 3575 4054 4479 4031 3683 3256 2807 2391 2002 1600 1198 1024 1221 1645 2064 2497 2960 3468 3925 4334 4009 3623 3234 2761 2369 1971 1579 1175 1024 1194 1625 2039 2458 2926 3431 3887 4300 4035 3665 3233 2802 2379 1990 1587 1190 1024 1207 1630 2052 2475 2939 3432 3936 4348 4132 3761 3332 2858 2444 2049 1636 1246 1053 1264 1679 2107 2545 3015 3561 4029 4407 4305 3913 3489 2991 2553 2131 1721 1331 1126 1352 1764 2188 2669 3171 3723 4199 4598 4491 4132 3673 3169 2683 2252 1817 1433 1230 1459 1862 2313 2797 3346 3899 4392 4807 4771 4349 3897 3364 2849 2387 1930 1549 1357 1568 1983 2460 2977 3544 4124 4656 5088 5003 4599 4159 3578 3038 2546 2067 1668 1480 1689 2121 2619 3182 3766 4384 4876 5363 5277 4861 4410 3828 3274 2718 2213 1795 1611 1816 2263 2809 3436 4015 4593 5111 5674 5685 5199 4667 4125 3485 2918 2370 1927 1736 1965 2419 3006 3665 4305 4857 5357 6429] + + + + + + + A_100 + + + [ 100] + + + [1.62147 -0.0445277 -0.546563 -0.261854 1.52127 -0.211003 0.0194952 -1.45836 2.4966] + + + [-124.39 -122.251 -145.4412] + + + [1.2679 1 1 2.4534] + + + + + D50_100 + + + [ 100] + + + [1.5183 -0.341669 -0.150056 -0.23618 1.63938 -0.35403 -0.0308324 -0.524599 1.5759] + + + [-81.0317 -71.6168 -83.757] + + + [2.01726 1 1 1.6274] + + + + + D65_100 + + + [ 100] + + + [1.74788 -0.562271 -0.124172 -0.189096 1.66277 -0.416313 0.0171408 -0.552856 1.5549] + + + [-84.4486 -70.1682 -78.446] + + + [2.41759 1 1 1.4225] + + + + + D75_100 + + + [ 100] + + + [1.84441 -0.649995 -0.151423 -0.17172 1.61099 -0.39653 0.0218805 -0.506897 1.5048] + + + [-87.0209 -74.4697 -80.8341] + + + [2.46127 1 1 1.3353] + + + + + F11_100 + + + [ 100] + + + [1.52028 -0.278563 -0.200712 -0.305258 1.64403 -0.267838 -0.00796981 -0.719295 1.7485] + + + [-73.4915 -72.5498 -86.9231] + + + [1.79738 1 1 2.0643] + + + + + F12_100 + + + [ 100] + + + [1.43944 0.0309125 -0.463539 -0.338943 1.6164 -0.231193 -0.0812989 -1.41021 2.5269] + + + [-27.8837 -30.4929 -71.3504] + + + [1.00205 1 1 3.0084] + + + + + F2_100 + + + [ 100] + + + [2.06572 -0.770765 -0.278229 -0.301217 1.49376 -0.146116 -0.0191357 -0.55147 1.6208] + + + [-68.4901 -66.8725 -80.6516] + + + [2.02785 1 1 2.1442] + + + + + + [ -1] + + + + + [ 80] + + + [ 20] + + + [ 0.7] + + + [ 0.7] + + + [ 0.7] + + + [ 0.9] + + + + + 1920x1080_FPS_15 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 1920x1080_FPS_10 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 1920x1080_FPS_05 + + + + + fast + + + [ 1] + + + [ 1] + + + + + normal + + + [ 2] + + + [ 0.9] + + + + + slow + + + [ 4] + + + [ 0.9] + + + + + + + [ 8] + + + + + + 1920x1080 + + + 1920x1080 + + + [256 256 256 256] + + + + + + + linear + + + [256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4096] + + + [0 256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4095] + + + + + + [ -1] + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + + + 1920x1080 + + + 1920x1080 + + + [ 6] + + + [ 29] + + + [ 6] + + + [ 29] + + + [ 0] + + + [ 0] + + + [-0.625 1.5625 -1.625] + + + [-0.3125 -0.125 0.375] + + + + + + + 1920x1080 + + + 1920x1080 + + + [ 1] + + + [555 338 265 225 199 166 146 131 120 105 94 86 75 67 61 57 53] + + + [ 4] + + + [ 4] + + + [ 0.15] + + + [ 0] + + + [1 1 1 1] + + + + + + + 1920x1080 + + + 1920x1080 + + + + + ISP_DPCC_MODE + + + 0x0005 + + + + + ISP_DPCC_OUT_MODE + + + 0x0003 + + + + + ISP_DPCC_SET_USE + + + 0x0007 + + + + + ISP_DPCC_METHODS_SET1 + + + 0x1D1D + + + + + ISP_DPCC_METHODS_SET2 + + + 0x0707 + + + + + ISP_DPCC_METHODS_SET3 + + + 0x1F1F + + + + + ISP_DPCC_LINE_THRESH_1 + + + 0x0808 + + + + + ISP_DPCC_LINE_MAD_FAC_1 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_1 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_1 + + + 0x0A0A + + + + + ISP_DPCC_RG_FAC_1 + + + 0x2020 + + + + + ISP_DPCC_LINE_THRESH_2 + + + 0x100C + + + + + ISP_DPCC_LINE_MAD_FAC_2 + + + 0x1810 + + + + + ISP_DPCC_PG_FAC_2 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_2 + + + 0x0808 + + + + + ISP_DPCC_RG_FAC_2 + + + 0x0808 + + + + + ISP_DPCC_LINE_THRESH_3 + + + 0x2020 + + + + + ISP_DPCC_LINE_MAD_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_3 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_3 + + + 0x0806 + + + + + ISP_DPCC_RG_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_RO_LIMITS + + + 0x0A0A + + + + + ISP_DPCC_RND_OFFS + + + 0x0FFF + + + + + + + + + + on + + + +
diff --git a/drivers/SC2310/SC2310_1920x1088.xml b/drivers/SC2310/SC2310_1920x1088.xml new file mode 100644 index 0000000..ee24438 --- /dev/null +++ b/drivers/SC2310/SC2310_1920x1088.xml @@ -0,0 +1,1539 @@ + + +
+ + 15-Jul-2022 + + + hong + + + sc2310 + + + 2MLens_0715 + + + v2.1.1 + + + + + 1920x1088 + + + 0x00000001 + + + [ 1920] + + + [ 1088] + + + + + FPS_15 + + + [ 14.9916] + + + + + FPS_10 + + + [ 9.9944] + + + + + FPS_05 + + + [ 4.9972] + + + + + +
+ + + + + + 1920x1088 + + + 1920x1088 + + + [0.312492 0.450819 0.23669] + + + [-0.7399 0.0709331 0.668967 0.345275 -0.81341 0.46813] + + + [-0.74481 -0.667276 -2.7153] + + + [0.930564 1.0265 1.12244 1.21838 1.31432 1.41026 1.5062 1.6195 1.65613 1.74979 1.87815 1.95299 2.08183 2.17777 2.27371 2.4696] + + + [0.0594494 0.0548923 0.0512294 0.0472492 0.0446306 0.0425199 0.0410322 0.177014 0.310302 0.340953 0.168608 0.113754 0.0466876 0.0503825 0.0544594 0.063584] + + + [0.930564 1.02079 1.10262 1.1934 1.33019 1.41902 1.48294 1.60213 1.71432 1.79667 1.89229 2.01745 2.11657 2.20776 2.29061 2.4696] + + + [0.0405506 0.0683495 0.0934971 0.130669 0.144892 0.140332 0.141432 0.158091 0.204458 0.210744 0.221824 0.246499 0.242726 0.189205 0.17663 0.036416] + + + [0.8 0.90731 1.01462 1.12193 1.22924 1.33655 1.53212 1.57122 1.61331 1.68792 1.78386 1.97841 2.04665 2.24005 2.39897 2.5096] + + + [0.11674 0.110633 0.105483 0.101224 0.096918 0.0940591 0.111862 0.222281 0.328691 0.417498 0.379934 0.138274 0.144405 0.12586 0.16665 0.11686] + + + [0.8 0.90731 1.05178 1.14174 1.24796 1.33411 1.43406 1.53184 1.68057 1.74397 1.85555 1.9593 2.07767 2.23092 2.39086 2.5096] + + + [0.0832596 0.0893669 0.142538 0.172086 0.210436 0.228354 0.232203 0.239668 0.269923 0.289884 0.283281 0.298762 0.307798 0.285477 0.206964 0.083142] + + + [ 0.93056] + + + [ 2.4696] + + + [ 2.5096] + + + [ 1.794] + + + D50 + + + [ 44.5676] + + + [0.75 1.28836 1.77672 2.164 2.6 3.0618] + + + [114 114 105 95 95 90] + + + [83 83 110 120 122 128] + + + [28 27 18 16 9 9] + + + [123 123 123 123 123 120] + + + [123 123 123 123 123 126] + + + [5 5 5 5 5 5] + + + [ 1] + + + [ 0.8] + + + [ 0.05] + + + + [ 0.05] + + + [ 0.05] + + + [ 0.4] + + + [ 0.5] + + + [ 0.9] + + + [ 0.5] + + + [ 50] + + + [ 1] + + + [ 0.5] + + + + + + + + A + + + Indoor + + + + [1207.95 1609.35 1609.35 4143.2801] + + + [ 247.3246] + + + [1 1] + + + [-0.0687979 -0.012008] + + + + + + 1920x1088 + + + 1920x1088_A_100 + + + + + [1.2679 1 1 2.4534] + + + [1.62147 -0.0445277 -0.546563 -0.261854 1.52127 -0.211003 0.0194952 -1.45836 2.4966] + + + [-124.39 -122.251 -145.4412] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + A_100 + + + + + + D50 + + + Indoor + + + + [330.699 34.5927 34.5927 1629.0054] + + + [ 116.6849] + + + [1 1] + + + [0.050113 -0.068793] + + + + + + 1920x1088 + + + 1920x1088_D50_100 + + + + + [2.01726 1 1 1.6274] + + + [1.5183 -0.341669 -0.150056 -0.23618 1.63938 -0.35403 -0.0308324 -0.524599 1.5759] + + + [-81.0317 -71.6168 -83.757] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D50_100 + + + + + + D65 + + + Outdoor + + + + [333.92 -176.3 -176.3 1334.0628] + + + [ 102.4529] + + + [1 1] + + + [0.0955004 -0.020029] + + + + + + 1920x1088 + + + 1920x1088_D65_100 + + + + + [2.41759 1 1 1.4225] + + + [1.74788 -0.562271 -0.124172 -0.189096 1.66277 -0.416313 0.0171408 -0.552856 1.5549] + + + [-84.4486 -70.1682 -78.446] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D65_100 + + + + + + D75 + + + Outdoor + + + + [358.543 -250.477 -250.477 1258.5652] + + + [ 99.2022] + + + [1 1] + + + [0.152003 -0.013334] + + + + + + 1920x1088 + + + 1920x1088_D75_100 + + + + + [2.46127 1 1 1.3353] + + + [1.84441 -0.649995 -0.151423 -0.17172 1.61099 -0.39653 0.0218805 -0.506897 1.5048] + + + [-87.0209 -74.4697 -80.8341] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + D75_100 + + + + + + F2 (CWF) + + + Indoor + + + + [518.32 -301.304 -301.304 1170.4769] + + + [ 114.3146] + + + [1 1] + + + [0.166784 -0.0016528] + + + + + + 1920x1088 + + + 1920x1088_F2_100 + + + + + [2.02785 1 1 2.1442] + + + [2.06572 -0.770765 -0.278229 -0.301217 1.49376 -0.146116 -0.0191357 -0.55147 1.6208] + + + [-68.4901 -66.8725 -80.6516] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F2_100 + + + + + + F11 (TL84) + + + Indoor + + + + [392.346 -49.1799 -49.1799 1178.8269] + + + [ 107.9546] + + + [1 1] + + + [-0.150241 0.01294] + + + + + + 1920x1088 + + + 1920x1088_F11_100 + + + + + [1.79738 1 1 2.0643] + + + [1.52028 -0.278563 -0.200712 -0.305258 1.64403 -0.267838 -0.00796981 -0.719295 1.7485] + + + [-73.4915 -72.5498 -86.9231] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F11_100 + + + + + + F12 + + + Indoor + + + + [548.609 299.864 299.864 1633.0404] + + + [ 142.8837] + + + [1 1] + + + [0.0327322 -0.045325] + + + + + + 1920x1088 + + + 1920x1088_F12_100 + + + + + [1.00205 1 1 3.0084] + + + [1.43944 0.0309125 -0.463539 -0.338943 1.6164 -0.231193 -0.0812989 -1.41021 2.5269] + + + [-27.8837 -30.4929 -71.3504] + + + AUTO + + + + [1 2 4 8] + + + [100 95 90 74] + + + + + [1 2 4 8] + + + [100 95 90 70] + + + + + F12_100 + + + + + + + + + 1920x1088_A_100 + + + 1920x1088 + + + A + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [154 115 115 115 115 116 115 115] + + + [87 65 66 65 65 65 66 65] + + + [ 100] + + + [6996 5246 4193 3468 2940 2567 2317 2178 2138 2201 2367 2648 3056 3596 4461 5522 7657 6411 4679 3744 3061 2583 2230 1983 1841 1794 1855 2018 2305 2674 3196 3921 5008 6785 6011 4356 3443 2828 2361 2012 1765 1623 1575 1637 1803 2080 2452 2956 3628 4640 6414 5749 4060 3237 2627 2174 1829 1579 1435 1387 1452 1617 1883 2263 2756 3397 4341 6088 5479 3849 3059 2487 2017 1678 1430 1281 1242 1300 1463 1739 2113 2595 3226 4111 5827 5293 3689 2933 2356 1907 1557 1313 1179 1142 1191 1343 1618 1998 2469 3089 3950 5611 5142 3577 2827 2265 1813 1472 1228 1104 1074 1116 1258 1529 1896 2380 2986 3811 5481 5019 3498 2777 2203 1761 1414 1173 1064 1036 1080 1202 1471 1842 2315 2919 3737 5365 5013 3477 2752 2184 1746 1390 1157 1050 1024 1062 1182 1451 1822 2296 2889 3691 5335 5023 3500 2771 2197 1752 1407 1165 1059 1029 1073 1197 1460 1836 2305 2917 3703 5389 5113 3546 2821 2245 1799 1454 1210 1092 1066 1107 1243 1510 1879 2367 2952 3773 5456 5244 3650 2899 2325 1874 1526 1284 1154 1122 1166 1317 1588 1956 2438 3050 3876 5599 5430 3815 3016 2447 1987 1642 1392 1248 1207 1263 1432 1696 2072 2545 3167 4057 5769 5730 4006 3190 2597 2131 1786 1536 1391 1345 1412 1571 1846 2214 2695 3346 4287 6027 6004 4282 3400 2783 2309 1964 1715 1571 1526 1590 1753 2030 2411 2898 3580 4557 6359 6405 4635 3684 3018 2533 2171 1927 1779 1735 1798 1966 2242 2616 3133 3850 4895 6728 6990 5146 4135 3379 2881 2512 2248 2104 2062 2125 2293 2576 2966 3529 4361 5407 7331] + + + [5658 4216 3382 2789 2408 2132 1955 1860 1829 1873 1982 2185 2481 2897 3574 4400 6206 5171 3790 3021 2502 2141 1898 1723 1627 1594 1636 1748 1945 2210 2593 3174 4020 5463 4880 3521 2809 2325 1984 1745 1571 1471 1438 1484 1595 1785 2046 2415 2934 3742 5151 4625 3298 2635 2186 1856 1619 1438 1333 1303 1345 1466 1653 1916 2269 2763 3500 4899 4423 3145 2509 2079 1754 1513 1331 1222 1191 1235 1353 1549 1810 2159 2623 3327 4691 4271 3011 2416 1998 1672 1427 1245 1141 1115 1151 1267 1464 1732 2069 2525 3189 4550 4139 2926 2345 1931 1614 1365 1180 1087 1061 1096 1198 1404 1667 2001 2448 3096 4416 4076 2873 2305 1888 1577 1322 1141 1055 1035 1064 1158 1359 1625 1958 2398 3027 4351 4047 2844 2285 1880 1562 1308 1125 1042 1024 1053 1145 1344 1612 1942 2374 3011 4308 4077 2859 2300 1888 1570 1319 1133 1051 1030 1060 1153 1352 1617 1954 2385 3022 4325 4124 2910 2331 1918 1598 1351 1169 1078 1053 1088 1187 1386 1650 1987 2423 3060 4402 4244 2978 2393 1974 1648 1403 1219 1121 1099 1128 1244 1445 1699 2042 2483 3152 4491 4392 3100 2475 2048 1723 1485 1301 1193 1162 1203 1324 1519 1779 2117 2581 3277 4655 4571 3262 2601 2155 1823 1579 1405 1298 1265 1311 1429 1621 1879 2224 2707 3460 4848 4852 3467 2763 2294 1944 1705 1532 1432 1399 1442 1554 1744 2006 2369 2888 3673 5104 5135 3736 2970 2460 2102 1845 1674 1576 1549 1587 1699 1891 2156 2543 3111 3951 5379 5638 4118 3318 2730 2342 2080 1895 1799 1767 1808 1923 2120 2408 2832 3486 4309 6071] + + + [5639 4199 3382 2786 2399 2133 1952 1855 1829 1874 1980 2190 2477 2913 3575 4386 6248 5164 3786 3011 2497 2145 1892 1726 1627 1592 1636 1747 1945 2211 2592 3173 4017 5442 4859 3506 2794 2320 1982 1745 1569 1467 1438 1480 1597 1784 2046 2410 2926 3730 5168 4603 3285 2627 2178 1855 1613 1439 1332 1299 1345 1463 1652 1911 2266 2754 3489 4890 4392 3130 2500 2073 1748 1510 1327 1222 1189 1231 1352 1548 1807 2156 2618 3323 4677 4251 2994 2410 1990 1670 1425 1242 1140 1110 1150 1265 1461 1726 2067 2515 3188 4541 4122 2911 2343 1925 1609 1364 1178 1084 1060 1094 1197 1402 1662 2000 2445 3085 4401 4059 2857 2297 1887 1574 1319 1139 1056 1032 1062 1158 1357 1625 1956 2393 3024 4339 4028 2838 2283 1872 1562 1306 1125 1043 1024 1053 1144 1344 1610 1940 2378 2999 4300 4051 2851 2291 1883 1569 1317 1134 1050 1029 1060 1153 1353 1618 1954 2386 3015 4328 4111 2906 2328 1914 1598 1350 1168 1078 1055 1088 1190 1388 1649 1986 2420 3068 4388 4222 2970 2382 1970 1646 1404 1220 1122 1099 1129 1245 1444 1701 2042 2483 3147 4488 4367 3086 2470 2044 1721 1485 1300 1194 1162 1205 1326 1521 1776 2114 2578 3273 4645 4566 3245 2593 2151 1821 1580 1406 1299 1266 1312 1430 1623 1881 2225 2703 3453 4841 4814 3468 2746 2295 1952 1705 1535 1432 1400 1444 1556 1747 2005 2365 2887 3668 5098 5119 3724 2962 2449 2100 1851 1675 1579 1548 1592 1701 1891 2163 2543 3102 3938 5382 5596 4127 3308 2728 2349 2079 1902 1798 1768 1810 1928 2125 2410 2830 3494 4313 6049] + + + [5475 4058 3292 2707 2333 2072 1895 1804 1780 1817 1918 2117 2396 2800 3452 4209 6064 5008 3666 2931 2432 2082 1847 1686 1596 1562 1599 1703 1887 2144 2511 3063 3872 5236 4697 3421 2717 2262 1935 1703 1539 1444 1416 1454 1557 1740 1984 2331 2829 3599 4975 4467 3191 2559 2117 1810 1584 1416 1320 1286 1330 1433 1612 1859 2195 2663 3367 4718 4262 3031 2436 2023 1710 1490 1312 1212 1184 1222 1333 1516 1756 2085 2528 3196 4520 4145 2908 2341 1938 1637 1405 1238 1138 1110 1146 1251 1435 1684 1997 2433 3069 4350 4002 2826 2275 1878 1582 1350 1176 1086 1060 1093 1191 1376 1619 1935 2360 2967 4257 3940 2764 2234 1839 1542 1311 1135 1055 1037 1062 1150 1338 1584 1892 2309 2914 4160 3915 2749 2216 1825 1533 1293 1128 1045 1024 1053 1136 1324 1571 1880 2284 2887 4152 3925 2769 2236 1831 1540 1303 1131 1054 1030 1059 1146 1327 1580 1891 2298 2905 4150 3991 2817 2260 1865 1567 1339 1165 1079 1058 1087 1179 1364 1605 1920 2336 2937 4215 4110 2871 2332 1919 1615 1387 1215 1118 1098 1126 1230 1416 1653 1967 2401 3025 4333 4210 3013 2394 1994 1684 1459 1289 1188 1155 1196 1309 1484 1723 2035 2480 3152 4453 4442 3142 2520 2098 1773 1553 1384 1285 1257 1296 1405 1581 1824 2143 2600 3322 4662 4647 3368 2682 2232 1903 1665 1509 1411 1378 1422 1523 1697 1941 2281 2779 3512 4931 4956 3612 2885 2398 2045 1803 1638 1550 1521 1555 1660 1832 2097 2455 2989 3774 5173 5443 4030 3240 2674 2294 2037 1862 1759 1739 1769 1878 2072 2334 2754 3377 4155 5801] + + + + + 1920x1088_D50_100 + + + 1920x1088 + + + D50 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [154 115 115 115 115 116 115 115] + + + [87 65 66 65 65 65 66 65] + + + [ 100] + + + [6996 5246 4193 3468 2940 2567 2317 2178 2138 2201 2367 2648 3056 3596 4461 5522 7657 6411 4679 3744 3061 2583 2230 1983 1841 1794 1855 2018 2305 2674 3196 3921 5008 6785 6011 4356 3443 2828 2361 2012 1765 1623 1575 1637 1803 2080 2452 2956 3628 4640 6414 5749 4060 3237 2627 2174 1829 1579 1435 1387 1452 1617 1883 2263 2756 3397 4341 6088 5479 3849 3059 2487 2017 1678 1430 1281 1242 1300 1463 1739 2113 2595 3226 4111 5827 5293 3689 2933 2356 1907 1557 1313 1179 1142 1191 1343 1618 1998 2469 3089 3950 5611 5142 3577 2827 2265 1813 1472 1228 1104 1074 1116 1258 1529 1896 2380 2986 3811 5481 5019 3498 2777 2203 1761 1414 1173 1064 1036 1080 1202 1471 1842 2315 2919 3737 5365 5013 3477 2752 2184 1746 1390 1157 1050 1024 1062 1182 1451 1822 2296 2889 3691 5335 5023 3500 2771 2197 1752 1407 1165 1059 1029 1073 1197 1460 1836 2305 2917 3703 5389 5113 3546 2821 2245 1799 1454 1210 1092 1066 1107 1243 1510 1879 2367 2952 3773 5456 5244 3650 2899 2325 1874 1526 1284 1154 1122 1166 1317 1588 1956 2438 3050 3876 5599 5430 3815 3016 2447 1987 1642 1392 1248 1207 1263 1432 1696 2072 2545 3167 4057 5769 5730 4006 3190 2597 2131 1786 1536 1391 1345 1412 1571 1846 2214 2695 3346 4287 6027 6004 4282 3400 2783 2309 1964 1715 1571 1526 1590 1753 2030 2411 2898 3580 4557 6359 6405 4635 3684 3018 2533 2171 1927 1779 1735 1798 1966 2242 2616 3133 3850 4895 6728 6990 5146 4135 3379 2881 2512 2248 2104 2062 2125 2293 2576 2966 3529 4361 5407 7331] + + + [5658 4216 3382 2789 2408 2132 1955 1860 1829 1873 1982 2185 2481 2897 3574 4400 6206 5171 3790 3021 2502 2141 1898 1723 1627 1594 1636 1748 1945 2210 2593 3174 4020 5463 4880 3521 2809 2325 1984 1745 1571 1471 1438 1484 1595 1785 2046 2415 2934 3742 5151 4625 3298 2635 2186 1856 1619 1438 1333 1303 1345 1466 1653 1916 2269 2763 3500 4899 4423 3145 2509 2079 1754 1513 1331 1222 1191 1235 1353 1549 1810 2159 2623 3327 4691 4271 3011 2416 1998 1672 1427 1245 1141 1115 1151 1267 1464 1732 2069 2525 3189 4550 4139 2926 2345 1931 1614 1365 1180 1087 1061 1096 1198 1404 1667 2001 2448 3096 4416 4076 2873 2305 1888 1577 1322 1141 1055 1035 1064 1158 1359 1625 1958 2398 3027 4351 4047 2844 2285 1880 1562 1308 1125 1042 1024 1053 1145 1344 1612 1942 2374 3011 4308 4077 2859 2300 1888 1570 1319 1133 1051 1030 1060 1153 1352 1617 1954 2385 3022 4325 4124 2910 2331 1918 1598 1351 1169 1078 1053 1088 1187 1386 1650 1987 2423 3060 4402 4244 2978 2393 1974 1648 1403 1219 1121 1099 1128 1244 1445 1699 2042 2483 3152 4491 4392 3100 2475 2048 1723 1485 1301 1193 1162 1203 1324 1519 1779 2117 2581 3277 4655 4571 3262 2601 2155 1823 1579 1405 1298 1265 1311 1429 1621 1879 2224 2707 3460 4848 4852 3467 2763 2294 1944 1705 1532 1432 1399 1442 1554 1744 2006 2369 2888 3673 5104 5135 3736 2970 2460 2102 1845 1674 1576 1549 1587 1699 1891 2156 2543 3111 3951 5379 5638 4118 3318 2730 2342 2080 1895 1799 1767 1808 1923 2120 2408 2832 3486 4309 6071] + + + [5639 4199 3382 2786 2399 2133 1952 1855 1829 1874 1980 2190 2477 2913 3575 4386 6248 5164 3786 3011 2497 2145 1892 1726 1627 1592 1636 1747 1945 2211 2592 3173 4017 5442 4859 3506 2794 2320 1982 1745 1569 1467 1438 1480 1597 1784 2046 2410 2926 3730 5168 4603 3285 2627 2178 1855 1613 1439 1332 1299 1345 1463 1652 1911 2266 2754 3489 4890 4392 3130 2500 2073 1748 1510 1327 1222 1189 1231 1352 1548 1807 2156 2618 3323 4677 4251 2994 2410 1990 1670 1425 1242 1140 1110 1150 1265 1461 1726 2067 2515 3188 4541 4122 2911 2343 1925 1609 1364 1178 1084 1060 1094 1197 1402 1662 2000 2445 3085 4401 4059 2857 2297 1887 1574 1319 1139 1056 1032 1062 1158 1357 1625 1956 2393 3024 4339 4028 2838 2283 1872 1562 1306 1125 1043 1024 1053 1144 1344 1610 1940 2378 2999 4300 4051 2851 2291 1883 1569 1317 1134 1050 1029 1060 1153 1353 1618 1954 2386 3015 4328 4111 2906 2328 1914 1598 1350 1168 1078 1055 1088 1190 1388 1649 1986 2420 3068 4388 4222 2970 2382 1970 1646 1404 1220 1122 1099 1129 1245 1444 1701 2042 2483 3147 4488 4367 3086 2470 2044 1721 1485 1300 1194 1162 1205 1326 1521 1776 2114 2578 3273 4645 4566 3245 2593 2151 1821 1580 1406 1299 1266 1312 1430 1623 1881 2225 2703 3453 4841 4814 3468 2746 2295 1952 1705 1535 1432 1400 1444 1556 1747 2005 2365 2887 3668 5098 5119 3724 2962 2449 2100 1851 1675 1579 1548 1592 1701 1891 2163 2543 3102 3938 5382 5596 4127 3308 2728 2349 2079 1902 1798 1768 1810 1928 2125 2410 2830 3494 4313 6049] + + + [5475 4058 3292 2707 2333 2072 1895 1804 1780 1817 1918 2117 2396 2800 3452 4209 6064 5008 3666 2931 2432 2082 1847 1686 1596 1562 1599 1703 1887 2144 2511 3063 3872 5236 4697 3421 2717 2262 1935 1703 1539 1444 1416 1454 1557 1740 1984 2331 2829 3599 4975 4467 3191 2559 2117 1810 1584 1416 1320 1286 1330 1433 1612 1859 2195 2663 3367 4718 4262 3031 2436 2023 1710 1490 1312 1212 1184 1222 1333 1516 1756 2085 2528 3196 4520 4145 2908 2341 1938 1637 1405 1238 1138 1110 1146 1251 1435 1684 1997 2433 3069 4350 4002 2826 2275 1878 1582 1350 1176 1086 1060 1093 1191 1376 1619 1935 2360 2967 4257 3940 2764 2234 1839 1542 1311 1135 1055 1037 1062 1150 1338 1584 1892 2309 2914 4160 3915 2749 2216 1825 1533 1293 1128 1045 1024 1053 1136 1324 1571 1880 2284 2887 4152 3925 2769 2236 1831 1540 1303 1131 1054 1030 1059 1146 1327 1580 1891 2298 2905 4150 3991 2817 2260 1865 1567 1339 1165 1079 1058 1087 1179 1364 1605 1920 2336 2937 4215 4110 2871 2332 1919 1615 1387 1215 1118 1098 1126 1230 1416 1653 1967 2401 3025 4333 4210 3013 2394 1994 1684 1459 1289 1188 1155 1196 1309 1484 1723 2035 2480 3152 4453 4442 3142 2520 2098 1773 1553 1384 1285 1257 1296 1405 1581 1824 2143 2600 3322 4662 4647 3368 2682 2232 1903 1665 1509 1411 1378 1422 1523 1697 1941 2281 2779 3512 4931 4956 3612 2885 2398 2045 1803 1638 1550 1521 1555 1660 1832 2097 2455 2989 3774 5173 5443 4030 3240 2674 2294 2037 1862 1759 1739 1769 1878 2072 2334 2754 3377 4155 5801] + + + + + 1920x1088_D65_100 + + + 1920x1088 + + + D65 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [154 115 115 115 115 116 115 115] + + + [87 65 66 65 65 65 66 65] + + + [ 100] + + + [6996 5246 4193 3468 2940 2567 2317 2178 2138 2201 2367 2648 3056 3596 4461 5522 7657 6411 4679 3744 3061 2583 2230 1983 1841 1794 1855 2018 2305 2674 3196 3921 5008 6785 6011 4356 3443 2828 2361 2012 1765 1623 1575 1637 1803 2080 2452 2956 3628 4640 6414 5749 4060 3237 2627 2174 1829 1579 1435 1387 1452 1617 1883 2263 2756 3397 4341 6088 5479 3849 3059 2487 2017 1678 1430 1281 1242 1300 1463 1739 2113 2595 3226 4111 5827 5293 3689 2933 2356 1907 1557 1313 1179 1142 1191 1343 1618 1998 2469 3089 3950 5611 5142 3577 2827 2265 1813 1472 1228 1104 1074 1116 1258 1529 1896 2380 2986 3811 5481 5019 3498 2777 2203 1761 1414 1173 1064 1036 1080 1202 1471 1842 2315 2919 3737 5365 5013 3477 2752 2184 1746 1390 1157 1050 1024 1062 1182 1451 1822 2296 2889 3691 5335 5023 3500 2771 2197 1752 1407 1165 1059 1029 1073 1197 1460 1836 2305 2917 3703 5389 5113 3546 2821 2245 1799 1454 1210 1092 1066 1107 1243 1510 1879 2367 2952 3773 5456 5244 3650 2899 2325 1874 1526 1284 1154 1122 1166 1317 1588 1956 2438 3050 3876 5599 5430 3815 3016 2447 1987 1642 1392 1248 1207 1263 1432 1696 2072 2545 3167 4057 5769 5730 4006 3190 2597 2131 1786 1536 1391 1345 1412 1571 1846 2214 2695 3346 4287 6027 6004 4282 3400 2783 2309 1964 1715 1571 1526 1590 1753 2030 2411 2898 3580 4557 6359 6405 4635 3684 3018 2533 2171 1927 1779 1735 1798 1966 2242 2616 3133 3850 4895 6728 6990 5146 4135 3379 2881 2512 2248 2104 2062 2125 2293 2576 2966 3529 4361 5407 7331] + + + [5658 4216 3382 2789 2408 2132 1955 1860 1829 1873 1982 2185 2481 2897 3574 4400 6206 5171 3790 3021 2502 2141 1898 1723 1627 1594 1636 1748 1945 2210 2593 3174 4020 5463 4880 3521 2809 2325 1984 1745 1571 1471 1438 1484 1595 1785 2046 2415 2934 3742 5151 4625 3298 2635 2186 1856 1619 1438 1333 1303 1345 1466 1653 1916 2269 2763 3500 4899 4423 3145 2509 2079 1754 1513 1331 1222 1191 1235 1353 1549 1810 2159 2623 3327 4691 4271 3011 2416 1998 1672 1427 1245 1141 1115 1151 1267 1464 1732 2069 2525 3189 4550 4139 2926 2345 1931 1614 1365 1180 1087 1061 1096 1198 1404 1667 2001 2448 3096 4416 4076 2873 2305 1888 1577 1322 1141 1055 1035 1064 1158 1359 1625 1958 2398 3027 4351 4047 2844 2285 1880 1562 1308 1125 1042 1024 1053 1145 1344 1612 1942 2374 3011 4308 4077 2859 2300 1888 1570 1319 1133 1051 1030 1060 1153 1352 1617 1954 2385 3022 4325 4124 2910 2331 1918 1598 1351 1169 1078 1053 1088 1187 1386 1650 1987 2423 3060 4402 4244 2978 2393 1974 1648 1403 1219 1121 1099 1128 1244 1445 1699 2042 2483 3152 4491 4392 3100 2475 2048 1723 1485 1301 1193 1162 1203 1324 1519 1779 2117 2581 3277 4655 4571 3262 2601 2155 1823 1579 1405 1298 1265 1311 1429 1621 1879 2224 2707 3460 4848 4852 3467 2763 2294 1944 1705 1532 1432 1399 1442 1554 1744 2006 2369 2888 3673 5104 5135 3736 2970 2460 2102 1845 1674 1576 1549 1587 1699 1891 2156 2543 3111 3951 5379 5638 4118 3318 2730 2342 2080 1895 1799 1767 1808 1923 2120 2408 2832 3486 4309 6071] + + + [5639 4199 3382 2786 2399 2133 1952 1855 1829 1874 1980 2190 2477 2913 3575 4386 6248 5164 3786 3011 2497 2145 1892 1726 1627 1592 1636 1747 1945 2211 2592 3173 4017 5442 4859 3506 2794 2320 1982 1745 1569 1467 1438 1480 1597 1784 2046 2410 2926 3730 5168 4603 3285 2627 2178 1855 1613 1439 1332 1299 1345 1463 1652 1911 2266 2754 3489 4890 4392 3130 2500 2073 1748 1510 1327 1222 1189 1231 1352 1548 1807 2156 2618 3323 4677 4251 2994 2410 1990 1670 1425 1242 1140 1110 1150 1265 1461 1726 2067 2515 3188 4541 4122 2911 2343 1925 1609 1364 1178 1084 1060 1094 1197 1402 1662 2000 2445 3085 4401 4059 2857 2297 1887 1574 1319 1139 1056 1032 1062 1158 1357 1625 1956 2393 3024 4339 4028 2838 2283 1872 1562 1306 1125 1043 1024 1053 1144 1344 1610 1940 2378 2999 4300 4051 2851 2291 1883 1569 1317 1134 1050 1029 1060 1153 1353 1618 1954 2386 3015 4328 4111 2906 2328 1914 1598 1350 1168 1078 1055 1088 1190 1388 1649 1986 2420 3068 4388 4222 2970 2382 1970 1646 1404 1220 1122 1099 1129 1245 1444 1701 2042 2483 3147 4488 4367 3086 2470 2044 1721 1485 1300 1194 1162 1205 1326 1521 1776 2114 2578 3273 4645 4566 3245 2593 2151 1821 1580 1406 1299 1266 1312 1430 1623 1881 2225 2703 3453 4841 4814 3468 2746 2295 1952 1705 1535 1432 1400 1444 1556 1747 2005 2365 2887 3668 5098 5119 3724 2962 2449 2100 1851 1675 1579 1548 1592 1701 1891 2163 2543 3102 3938 5382 5596 4127 3308 2728 2349 2079 1902 1798 1768 1810 1928 2125 2410 2830 3494 4313 6049] + + + [5475 4058 3292 2707 2333 2072 1895 1804 1780 1817 1918 2117 2396 2800 3452 4209 6064 5008 3666 2931 2432 2082 1847 1686 1596 1562 1599 1703 1887 2144 2511 3063 3872 5236 4697 3421 2717 2262 1935 1703 1539 1444 1416 1454 1557 1740 1984 2331 2829 3599 4975 4467 3191 2559 2117 1810 1584 1416 1320 1286 1330 1433 1612 1859 2195 2663 3367 4718 4262 3031 2436 2023 1710 1490 1312 1212 1184 1222 1333 1516 1756 2085 2528 3196 4520 4145 2908 2341 1938 1637 1405 1238 1138 1110 1146 1251 1435 1684 1997 2433 3069 4350 4002 2826 2275 1878 1582 1350 1176 1086 1060 1093 1191 1376 1619 1935 2360 2967 4257 3940 2764 2234 1839 1542 1311 1135 1055 1037 1062 1150 1338 1584 1892 2309 2914 4160 3915 2749 2216 1825 1533 1293 1128 1045 1024 1053 1136 1324 1571 1880 2284 2887 4152 3925 2769 2236 1831 1540 1303 1131 1054 1030 1059 1146 1327 1580 1891 2298 2905 4150 3991 2817 2260 1865 1567 1339 1165 1079 1058 1087 1179 1364 1605 1920 2336 2937 4215 4110 2871 2332 1919 1615 1387 1215 1118 1098 1126 1230 1416 1653 1967 2401 3025 4333 4210 3013 2394 1994 1684 1459 1289 1188 1155 1196 1309 1484 1723 2035 2480 3152 4453 4442 3142 2520 2098 1773 1553 1384 1285 1257 1296 1405 1581 1824 2143 2600 3322 4662 4647 3368 2682 2232 1903 1665 1509 1411 1378 1422 1523 1697 1941 2281 2779 3512 4931 4956 3612 2885 2398 2045 1803 1638 1550 1521 1555 1660 1832 2097 2455 2989 3774 5173 5443 4030 3240 2674 2294 2037 1862 1759 1739 1769 1878 2072 2334 2754 3377 4155 5801] + + + + + 1920x1088_D75_100 + + + 1920x1088 + + + D75 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [154 115 115 115 115 116 115 115] + + + [87 65 66 65 65 65 66 65] + + + [ 100] + + + [6996 5246 4193 3468 2940 2567 2317 2178 2138 2201 2367 2648 3056 3596 4461 5522 7657 6411 4679 3744 3061 2583 2230 1983 1841 1794 1855 2018 2305 2674 3196 3921 5008 6785 6011 4356 3443 2828 2361 2012 1765 1623 1575 1637 1803 2080 2452 2956 3628 4640 6414 5749 4060 3237 2627 2174 1829 1579 1435 1387 1452 1617 1883 2263 2756 3397 4341 6088 5479 3849 3059 2487 2017 1678 1430 1281 1242 1300 1463 1739 2113 2595 3226 4111 5827 5293 3689 2933 2356 1907 1557 1313 1179 1142 1191 1343 1618 1998 2469 3089 3950 5611 5142 3577 2827 2265 1813 1472 1228 1104 1074 1116 1258 1529 1896 2380 2986 3811 5481 5019 3498 2777 2203 1761 1414 1173 1064 1036 1080 1202 1471 1842 2315 2919 3737 5365 5013 3477 2752 2184 1746 1390 1157 1050 1024 1062 1182 1451 1822 2296 2889 3691 5335 5023 3500 2771 2197 1752 1407 1165 1059 1029 1073 1197 1460 1836 2305 2917 3703 5389 5113 3546 2821 2245 1799 1454 1210 1092 1066 1107 1243 1510 1879 2367 2952 3773 5456 5244 3650 2899 2325 1874 1526 1284 1154 1122 1166 1317 1588 1956 2438 3050 3876 5599 5430 3815 3016 2447 1987 1642 1392 1248 1207 1263 1432 1696 2072 2545 3167 4057 5769 5730 4006 3190 2597 2131 1786 1536 1391 1345 1412 1571 1846 2214 2695 3346 4287 6027 6004 4282 3400 2783 2309 1964 1715 1571 1526 1590 1753 2030 2411 2898 3580 4557 6359 6405 4635 3684 3018 2533 2171 1927 1779 1735 1798 1966 2242 2616 3133 3850 4895 6728 6990 5146 4135 3379 2881 2512 2248 2104 2062 2125 2293 2576 2966 3529 4361 5407 7331] + + + [5658 4216 3382 2789 2408 2132 1955 1860 1829 1873 1982 2185 2481 2897 3574 4400 6206 5171 3790 3021 2502 2141 1898 1723 1627 1594 1636 1748 1945 2210 2593 3174 4020 5463 4880 3521 2809 2325 1984 1745 1571 1471 1438 1484 1595 1785 2046 2415 2934 3742 5151 4625 3298 2635 2186 1856 1619 1438 1333 1303 1345 1466 1653 1916 2269 2763 3500 4899 4423 3145 2509 2079 1754 1513 1331 1222 1191 1235 1353 1549 1810 2159 2623 3327 4691 4271 3011 2416 1998 1672 1427 1245 1141 1115 1151 1267 1464 1732 2069 2525 3189 4550 4139 2926 2345 1931 1614 1365 1180 1087 1061 1096 1198 1404 1667 2001 2448 3096 4416 4076 2873 2305 1888 1577 1322 1141 1055 1035 1064 1158 1359 1625 1958 2398 3027 4351 4047 2844 2285 1880 1562 1308 1125 1042 1024 1053 1145 1344 1612 1942 2374 3011 4308 4077 2859 2300 1888 1570 1319 1133 1051 1030 1060 1153 1352 1617 1954 2385 3022 4325 4124 2910 2331 1918 1598 1351 1169 1078 1053 1088 1187 1386 1650 1987 2423 3060 4402 4244 2978 2393 1974 1648 1403 1219 1121 1099 1128 1244 1445 1699 2042 2483 3152 4491 4392 3100 2475 2048 1723 1485 1301 1193 1162 1203 1324 1519 1779 2117 2581 3277 4655 4571 3262 2601 2155 1823 1579 1405 1298 1265 1311 1429 1621 1879 2224 2707 3460 4848 4852 3467 2763 2294 1944 1705 1532 1432 1399 1442 1554 1744 2006 2369 2888 3673 5104 5135 3736 2970 2460 2102 1845 1674 1576 1549 1587 1699 1891 2156 2543 3111 3951 5379 5638 4118 3318 2730 2342 2080 1895 1799 1767 1808 1923 2120 2408 2832 3486 4309 6071] + + + [5639 4199 3382 2786 2399 2133 1952 1855 1829 1874 1980 2190 2477 2913 3575 4386 6248 5164 3786 3011 2497 2145 1892 1726 1627 1592 1636 1747 1945 2211 2592 3173 4017 5442 4859 3506 2794 2320 1982 1745 1569 1467 1438 1480 1597 1784 2046 2410 2926 3730 5168 4603 3285 2627 2178 1855 1613 1439 1332 1299 1345 1463 1652 1911 2266 2754 3489 4890 4392 3130 2500 2073 1748 1510 1327 1222 1189 1231 1352 1548 1807 2156 2618 3323 4677 4251 2994 2410 1990 1670 1425 1242 1140 1110 1150 1265 1461 1726 2067 2515 3188 4541 4122 2911 2343 1925 1609 1364 1178 1084 1060 1094 1197 1402 1662 2000 2445 3085 4401 4059 2857 2297 1887 1574 1319 1139 1056 1032 1062 1158 1357 1625 1956 2393 3024 4339 4028 2838 2283 1872 1562 1306 1125 1043 1024 1053 1144 1344 1610 1940 2378 2999 4300 4051 2851 2291 1883 1569 1317 1134 1050 1029 1060 1153 1353 1618 1954 2386 3015 4328 4111 2906 2328 1914 1598 1350 1168 1078 1055 1088 1190 1388 1649 1986 2420 3068 4388 4222 2970 2382 1970 1646 1404 1220 1122 1099 1129 1245 1444 1701 2042 2483 3147 4488 4367 3086 2470 2044 1721 1485 1300 1194 1162 1205 1326 1521 1776 2114 2578 3273 4645 4566 3245 2593 2151 1821 1580 1406 1299 1266 1312 1430 1623 1881 2225 2703 3453 4841 4814 3468 2746 2295 1952 1705 1535 1432 1400 1444 1556 1747 2005 2365 2887 3668 5098 5119 3724 2962 2449 2100 1851 1675 1579 1548 1592 1701 1891 2163 2543 3102 3938 5382 5596 4127 3308 2728 2349 2079 1902 1798 1768 1810 1928 2125 2410 2830 3494 4313 6049] + + + [5475 4058 3292 2707 2333 2072 1895 1804 1780 1817 1918 2117 2396 2800 3452 4209 6064 5008 3666 2931 2432 2082 1847 1686 1596 1562 1599 1703 1887 2144 2511 3063 3872 5236 4697 3421 2717 2262 1935 1703 1539 1444 1416 1454 1557 1740 1984 2331 2829 3599 4975 4467 3191 2559 2117 1810 1584 1416 1320 1286 1330 1433 1612 1859 2195 2663 3367 4718 4262 3031 2436 2023 1710 1490 1312 1212 1184 1222 1333 1516 1756 2085 2528 3196 4520 4145 2908 2341 1938 1637 1405 1238 1138 1110 1146 1251 1435 1684 1997 2433 3069 4350 4002 2826 2275 1878 1582 1350 1176 1086 1060 1093 1191 1376 1619 1935 2360 2967 4257 3940 2764 2234 1839 1542 1311 1135 1055 1037 1062 1150 1338 1584 1892 2309 2914 4160 3915 2749 2216 1825 1533 1293 1128 1045 1024 1053 1136 1324 1571 1880 2284 2887 4152 3925 2769 2236 1831 1540 1303 1131 1054 1030 1059 1146 1327 1580 1891 2298 2905 4150 3991 2817 2260 1865 1567 1339 1165 1079 1058 1087 1179 1364 1605 1920 2336 2937 4215 4110 2871 2332 1919 1615 1387 1215 1118 1098 1126 1230 1416 1653 1967 2401 3025 4333 4210 3013 2394 1994 1684 1459 1289 1188 1155 1196 1309 1484 1723 2035 2480 3152 4453 4442 3142 2520 2098 1773 1553 1384 1285 1257 1296 1405 1581 1824 2143 2600 3322 4662 4647 3368 2682 2232 1903 1665 1509 1411 1378 1422 1523 1697 1941 2281 2779 3512 4931 4956 3612 2885 2398 2045 1803 1638 1550 1521 1555 1660 1832 2097 2455 2989 3774 5173 5443 4030 3240 2674 2294 2037 1862 1759 1739 1769 1878 2072 2334 2754 3377 4155 5801] + + + + + 1920x1088_F11_100 + + + 1920x1088 + + + F11 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [154 115 115 115 115 116 115 115] + + + [87 65 66 65 65 65 66 65] + + + [ 100] + + + [6996 5246 4193 3468 2940 2567 2317 2178 2138 2201 2367 2648 3056 3596 4461 5522 7657 6411 4679 3744 3061 2583 2230 1983 1841 1794 1855 2018 2305 2674 3196 3921 5008 6785 6011 4356 3443 2828 2361 2012 1765 1623 1575 1637 1803 2080 2452 2956 3628 4640 6414 5749 4060 3237 2627 2174 1829 1579 1435 1387 1452 1617 1883 2263 2756 3397 4341 6088 5479 3849 3059 2487 2017 1678 1430 1281 1242 1300 1463 1739 2113 2595 3226 4111 5827 5293 3689 2933 2356 1907 1557 1313 1179 1142 1191 1343 1618 1998 2469 3089 3950 5611 5142 3577 2827 2265 1813 1472 1228 1104 1074 1116 1258 1529 1896 2380 2986 3811 5481 5019 3498 2777 2203 1761 1414 1173 1064 1036 1080 1202 1471 1842 2315 2919 3737 5365 5013 3477 2752 2184 1746 1390 1157 1050 1024 1062 1182 1451 1822 2296 2889 3691 5335 5023 3500 2771 2197 1752 1407 1165 1059 1029 1073 1197 1460 1836 2305 2917 3703 5389 5113 3546 2821 2245 1799 1454 1210 1092 1066 1107 1243 1510 1879 2367 2952 3773 5456 5244 3650 2899 2325 1874 1526 1284 1154 1122 1166 1317 1588 1956 2438 3050 3876 5599 5430 3815 3016 2447 1987 1642 1392 1248 1207 1263 1432 1696 2072 2545 3167 4057 5769 5730 4006 3190 2597 2131 1786 1536 1391 1345 1412 1571 1846 2214 2695 3346 4287 6027 6004 4282 3400 2783 2309 1964 1715 1571 1526 1590 1753 2030 2411 2898 3580 4557 6359 6405 4635 3684 3018 2533 2171 1927 1779 1735 1798 1966 2242 2616 3133 3850 4895 6728 6990 5146 4135 3379 2881 2512 2248 2104 2062 2125 2293 2576 2966 3529 4361 5407 7331] + + + [5658 4216 3382 2789 2408 2132 1955 1860 1829 1873 1982 2185 2481 2897 3574 4400 6206 5171 3790 3021 2502 2141 1898 1723 1627 1594 1636 1748 1945 2210 2593 3174 4020 5463 4880 3521 2809 2325 1984 1745 1571 1471 1438 1484 1595 1785 2046 2415 2934 3742 5151 4625 3298 2635 2186 1856 1619 1438 1333 1303 1345 1466 1653 1916 2269 2763 3500 4899 4423 3145 2509 2079 1754 1513 1331 1222 1191 1235 1353 1549 1810 2159 2623 3327 4691 4271 3011 2416 1998 1672 1427 1245 1141 1115 1151 1267 1464 1732 2069 2525 3189 4550 4139 2926 2345 1931 1614 1365 1180 1087 1061 1096 1198 1404 1667 2001 2448 3096 4416 4076 2873 2305 1888 1577 1322 1141 1055 1035 1064 1158 1359 1625 1958 2398 3027 4351 4047 2844 2285 1880 1562 1308 1125 1042 1024 1053 1145 1344 1612 1942 2374 3011 4308 4077 2859 2300 1888 1570 1319 1133 1051 1030 1060 1153 1352 1617 1954 2385 3022 4325 4124 2910 2331 1918 1598 1351 1169 1078 1053 1088 1187 1386 1650 1987 2423 3060 4402 4244 2978 2393 1974 1648 1403 1219 1121 1099 1128 1244 1445 1699 2042 2483 3152 4491 4392 3100 2475 2048 1723 1485 1301 1193 1162 1203 1324 1519 1779 2117 2581 3277 4655 4571 3262 2601 2155 1823 1579 1405 1298 1265 1311 1429 1621 1879 2224 2707 3460 4848 4852 3467 2763 2294 1944 1705 1532 1432 1399 1442 1554 1744 2006 2369 2888 3673 5104 5135 3736 2970 2460 2102 1845 1674 1576 1549 1587 1699 1891 2156 2543 3111 3951 5379 5638 4118 3318 2730 2342 2080 1895 1799 1767 1808 1923 2120 2408 2832 3486 4309 6071] + + + [5639 4199 3382 2786 2399 2133 1952 1855 1829 1874 1980 2190 2477 2913 3575 4386 6248 5164 3786 3011 2497 2145 1892 1726 1627 1592 1636 1747 1945 2211 2592 3173 4017 5442 4859 3506 2794 2320 1982 1745 1569 1467 1438 1480 1597 1784 2046 2410 2926 3730 5168 4603 3285 2627 2178 1855 1613 1439 1332 1299 1345 1463 1652 1911 2266 2754 3489 4890 4392 3130 2500 2073 1748 1510 1327 1222 1189 1231 1352 1548 1807 2156 2618 3323 4677 4251 2994 2410 1990 1670 1425 1242 1140 1110 1150 1265 1461 1726 2067 2515 3188 4541 4122 2911 2343 1925 1609 1364 1178 1084 1060 1094 1197 1402 1662 2000 2445 3085 4401 4059 2857 2297 1887 1574 1319 1139 1056 1032 1062 1158 1357 1625 1956 2393 3024 4339 4028 2838 2283 1872 1562 1306 1125 1043 1024 1053 1144 1344 1610 1940 2378 2999 4300 4051 2851 2291 1883 1569 1317 1134 1050 1029 1060 1153 1353 1618 1954 2386 3015 4328 4111 2906 2328 1914 1598 1350 1168 1078 1055 1088 1190 1388 1649 1986 2420 3068 4388 4222 2970 2382 1970 1646 1404 1220 1122 1099 1129 1245 1444 1701 2042 2483 3147 4488 4367 3086 2470 2044 1721 1485 1300 1194 1162 1205 1326 1521 1776 2114 2578 3273 4645 4566 3245 2593 2151 1821 1580 1406 1299 1266 1312 1430 1623 1881 2225 2703 3453 4841 4814 3468 2746 2295 1952 1705 1535 1432 1400 1444 1556 1747 2005 2365 2887 3668 5098 5119 3724 2962 2449 2100 1851 1675 1579 1548 1592 1701 1891 2163 2543 3102 3938 5382 5596 4127 3308 2728 2349 2079 1902 1798 1768 1810 1928 2125 2410 2830 3494 4313 6049] + + + [5475 4058 3292 2707 2333 2072 1895 1804 1780 1817 1918 2117 2396 2800 3452 4209 6064 5008 3666 2931 2432 2082 1847 1686 1596 1562 1599 1703 1887 2144 2511 3063 3872 5236 4697 3421 2717 2262 1935 1703 1539 1444 1416 1454 1557 1740 1984 2331 2829 3599 4975 4467 3191 2559 2117 1810 1584 1416 1320 1286 1330 1433 1612 1859 2195 2663 3367 4718 4262 3031 2436 2023 1710 1490 1312 1212 1184 1222 1333 1516 1756 2085 2528 3196 4520 4145 2908 2341 1938 1637 1405 1238 1138 1110 1146 1251 1435 1684 1997 2433 3069 4350 4002 2826 2275 1878 1582 1350 1176 1086 1060 1093 1191 1376 1619 1935 2360 2967 4257 3940 2764 2234 1839 1542 1311 1135 1055 1037 1062 1150 1338 1584 1892 2309 2914 4160 3915 2749 2216 1825 1533 1293 1128 1045 1024 1053 1136 1324 1571 1880 2284 2887 4152 3925 2769 2236 1831 1540 1303 1131 1054 1030 1059 1146 1327 1580 1891 2298 2905 4150 3991 2817 2260 1865 1567 1339 1165 1079 1058 1087 1179 1364 1605 1920 2336 2937 4215 4110 2871 2332 1919 1615 1387 1215 1118 1098 1126 1230 1416 1653 1967 2401 3025 4333 4210 3013 2394 1994 1684 1459 1289 1188 1155 1196 1309 1484 1723 2035 2480 3152 4453 4442 3142 2520 2098 1773 1553 1384 1285 1257 1296 1405 1581 1824 2143 2600 3322 4662 4647 3368 2682 2232 1903 1665 1509 1411 1378 1422 1523 1697 1941 2281 2779 3512 4931 4956 3612 2885 2398 2045 1803 1638 1550 1521 1555 1660 1832 2097 2455 2989 3774 5173 5443 4030 3240 2674 2294 2037 1862 1759 1739 1769 1878 2072 2334 2754 3377 4155 5801] + + + + + 1920x1088_F12_100 + + + 1920x1088 + + + F12 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [154 115 115 115 115 116 115 115] + + + [87 65 66 65 65 65 66 65] + + + [ 100] + + + [6996 5246 4193 3468 2940 2567 2317 2178 2138 2201 2367 2648 3056 3596 4461 5522 7657 6411 4679 3744 3061 2583 2230 1983 1841 1794 1855 2018 2305 2674 3196 3921 5008 6785 6011 4356 3443 2828 2361 2012 1765 1623 1575 1637 1803 2080 2452 2956 3628 4640 6414 5749 4060 3237 2627 2174 1829 1579 1435 1387 1452 1617 1883 2263 2756 3397 4341 6088 5479 3849 3059 2487 2017 1678 1430 1281 1242 1300 1463 1739 2113 2595 3226 4111 5827 5293 3689 2933 2356 1907 1557 1313 1179 1142 1191 1343 1618 1998 2469 3089 3950 5611 5142 3577 2827 2265 1813 1472 1228 1104 1074 1116 1258 1529 1896 2380 2986 3811 5481 5019 3498 2777 2203 1761 1414 1173 1064 1036 1080 1202 1471 1842 2315 2919 3737 5365 5013 3477 2752 2184 1746 1390 1157 1050 1024 1062 1182 1451 1822 2296 2889 3691 5335 5023 3500 2771 2197 1752 1407 1165 1059 1029 1073 1197 1460 1836 2305 2917 3703 5389 5113 3546 2821 2245 1799 1454 1210 1092 1066 1107 1243 1510 1879 2367 2952 3773 5456 5244 3650 2899 2325 1874 1526 1284 1154 1122 1166 1317 1588 1956 2438 3050 3876 5599 5430 3815 3016 2447 1987 1642 1392 1248 1207 1263 1432 1696 2072 2545 3167 4057 5769 5730 4006 3190 2597 2131 1786 1536 1391 1345 1412 1571 1846 2214 2695 3346 4287 6027 6004 4282 3400 2783 2309 1964 1715 1571 1526 1590 1753 2030 2411 2898 3580 4557 6359 6405 4635 3684 3018 2533 2171 1927 1779 1735 1798 1966 2242 2616 3133 3850 4895 6728 6990 5146 4135 3379 2881 2512 2248 2104 2062 2125 2293 2576 2966 3529 4361 5407 7331] + + + [5658 4216 3382 2789 2408 2132 1955 1860 1829 1873 1982 2185 2481 2897 3574 4400 6206 5171 3790 3021 2502 2141 1898 1723 1627 1594 1636 1748 1945 2210 2593 3174 4020 5463 4880 3521 2809 2325 1984 1745 1571 1471 1438 1484 1595 1785 2046 2415 2934 3742 5151 4625 3298 2635 2186 1856 1619 1438 1333 1303 1345 1466 1653 1916 2269 2763 3500 4899 4423 3145 2509 2079 1754 1513 1331 1222 1191 1235 1353 1549 1810 2159 2623 3327 4691 4271 3011 2416 1998 1672 1427 1245 1141 1115 1151 1267 1464 1732 2069 2525 3189 4550 4139 2926 2345 1931 1614 1365 1180 1087 1061 1096 1198 1404 1667 2001 2448 3096 4416 4076 2873 2305 1888 1577 1322 1141 1055 1035 1064 1158 1359 1625 1958 2398 3027 4351 4047 2844 2285 1880 1562 1308 1125 1042 1024 1053 1145 1344 1612 1942 2374 3011 4308 4077 2859 2300 1888 1570 1319 1133 1051 1030 1060 1153 1352 1617 1954 2385 3022 4325 4124 2910 2331 1918 1598 1351 1169 1078 1053 1088 1187 1386 1650 1987 2423 3060 4402 4244 2978 2393 1974 1648 1403 1219 1121 1099 1128 1244 1445 1699 2042 2483 3152 4491 4392 3100 2475 2048 1723 1485 1301 1193 1162 1203 1324 1519 1779 2117 2581 3277 4655 4571 3262 2601 2155 1823 1579 1405 1298 1265 1311 1429 1621 1879 2224 2707 3460 4848 4852 3467 2763 2294 1944 1705 1532 1432 1399 1442 1554 1744 2006 2369 2888 3673 5104 5135 3736 2970 2460 2102 1845 1674 1576 1549 1587 1699 1891 2156 2543 3111 3951 5379 5638 4118 3318 2730 2342 2080 1895 1799 1767 1808 1923 2120 2408 2832 3486 4309 6071] + + + [5639 4199 3382 2786 2399 2133 1952 1855 1829 1874 1980 2190 2477 2913 3575 4386 6248 5164 3786 3011 2497 2145 1892 1726 1627 1592 1636 1747 1945 2211 2592 3173 4017 5442 4859 3506 2794 2320 1982 1745 1569 1467 1438 1480 1597 1784 2046 2410 2926 3730 5168 4603 3285 2627 2178 1855 1613 1439 1332 1299 1345 1463 1652 1911 2266 2754 3489 4890 4392 3130 2500 2073 1748 1510 1327 1222 1189 1231 1352 1548 1807 2156 2618 3323 4677 4251 2994 2410 1990 1670 1425 1242 1140 1110 1150 1265 1461 1726 2067 2515 3188 4541 4122 2911 2343 1925 1609 1364 1178 1084 1060 1094 1197 1402 1662 2000 2445 3085 4401 4059 2857 2297 1887 1574 1319 1139 1056 1032 1062 1158 1357 1625 1956 2393 3024 4339 4028 2838 2283 1872 1562 1306 1125 1043 1024 1053 1144 1344 1610 1940 2378 2999 4300 4051 2851 2291 1883 1569 1317 1134 1050 1029 1060 1153 1353 1618 1954 2386 3015 4328 4111 2906 2328 1914 1598 1350 1168 1078 1055 1088 1190 1388 1649 1986 2420 3068 4388 4222 2970 2382 1970 1646 1404 1220 1122 1099 1129 1245 1444 1701 2042 2483 3147 4488 4367 3086 2470 2044 1721 1485 1300 1194 1162 1205 1326 1521 1776 2114 2578 3273 4645 4566 3245 2593 2151 1821 1580 1406 1299 1266 1312 1430 1623 1881 2225 2703 3453 4841 4814 3468 2746 2295 1952 1705 1535 1432 1400 1444 1556 1747 2005 2365 2887 3668 5098 5119 3724 2962 2449 2100 1851 1675 1579 1548 1592 1701 1891 2163 2543 3102 3938 5382 5596 4127 3308 2728 2349 2079 1902 1798 1768 1810 1928 2125 2410 2830 3494 4313 6049] + + + [5475 4058 3292 2707 2333 2072 1895 1804 1780 1817 1918 2117 2396 2800 3452 4209 6064 5008 3666 2931 2432 2082 1847 1686 1596 1562 1599 1703 1887 2144 2511 3063 3872 5236 4697 3421 2717 2262 1935 1703 1539 1444 1416 1454 1557 1740 1984 2331 2829 3599 4975 4467 3191 2559 2117 1810 1584 1416 1320 1286 1330 1433 1612 1859 2195 2663 3367 4718 4262 3031 2436 2023 1710 1490 1312 1212 1184 1222 1333 1516 1756 2085 2528 3196 4520 4145 2908 2341 1938 1637 1405 1238 1138 1110 1146 1251 1435 1684 1997 2433 3069 4350 4002 2826 2275 1878 1582 1350 1176 1086 1060 1093 1191 1376 1619 1935 2360 2967 4257 3940 2764 2234 1839 1542 1311 1135 1055 1037 1062 1150 1338 1584 1892 2309 2914 4160 3915 2749 2216 1825 1533 1293 1128 1045 1024 1053 1136 1324 1571 1880 2284 2887 4152 3925 2769 2236 1831 1540 1303 1131 1054 1030 1059 1146 1327 1580 1891 2298 2905 4150 3991 2817 2260 1865 1567 1339 1165 1079 1058 1087 1179 1364 1605 1920 2336 2937 4215 4110 2871 2332 1919 1615 1387 1215 1118 1098 1126 1230 1416 1653 1967 2401 3025 4333 4210 3013 2394 1994 1684 1459 1289 1188 1155 1196 1309 1484 1723 2035 2480 3152 4453 4442 3142 2520 2098 1773 1553 1384 1285 1257 1296 1405 1581 1824 2143 2600 3322 4662 4647 3368 2682 2232 1903 1665 1509 1411 1378 1422 1523 1697 1941 2281 2779 3512 4931 4956 3612 2885 2398 2045 1803 1638 1550 1521 1555 1660 1832 2097 2455 2989 3774 5173 5443 4030 3240 2674 2294 2037 1862 1759 1739 1769 1878 2072 2334 2754 3377 4155 5801] + + + + + 1920x1088_F2_100 + + + 1920x1088 + + + F2 + + + [ 16] + + + [ 10] + + + [ 15] + + + [ 15] + + + [154 115 115 115 115 116 115 115] + + + [87 65 66 65 65 65 66 65] + + + [ 100] + + + [6996 5246 4193 3468 2940 2567 2317 2178 2138 2201 2367 2648 3056 3596 4461 5522 7657 6411 4679 3744 3061 2583 2230 1983 1841 1794 1855 2018 2305 2674 3196 3921 5008 6785 6011 4356 3443 2828 2361 2012 1765 1623 1575 1637 1803 2080 2452 2956 3628 4640 6414 5749 4060 3237 2627 2174 1829 1579 1435 1387 1452 1617 1883 2263 2756 3397 4341 6088 5479 3849 3059 2487 2017 1678 1430 1281 1242 1300 1463 1739 2113 2595 3226 4111 5827 5293 3689 2933 2356 1907 1557 1313 1179 1142 1191 1343 1618 1998 2469 3089 3950 5611 5142 3577 2827 2265 1813 1472 1228 1104 1074 1116 1258 1529 1896 2380 2986 3811 5481 5019 3498 2777 2203 1761 1414 1173 1064 1036 1080 1202 1471 1842 2315 2919 3737 5365 5013 3477 2752 2184 1746 1390 1157 1050 1024 1062 1182 1451 1822 2296 2889 3691 5335 5023 3500 2771 2197 1752 1407 1165 1059 1029 1073 1197 1460 1836 2305 2917 3703 5389 5113 3546 2821 2245 1799 1454 1210 1092 1066 1107 1243 1510 1879 2367 2952 3773 5456 5244 3650 2899 2325 1874 1526 1284 1154 1122 1166 1317 1588 1956 2438 3050 3876 5599 5430 3815 3016 2447 1987 1642 1392 1248 1207 1263 1432 1696 2072 2545 3167 4057 5769 5730 4006 3190 2597 2131 1786 1536 1391 1345 1412 1571 1846 2214 2695 3346 4287 6027 6004 4282 3400 2783 2309 1964 1715 1571 1526 1590 1753 2030 2411 2898 3580 4557 6359 6405 4635 3684 3018 2533 2171 1927 1779 1735 1798 1966 2242 2616 3133 3850 4895 6728 6990 5146 4135 3379 2881 2512 2248 2104 2062 2125 2293 2576 2966 3529 4361 5407 7331] + + + [5658 4216 3382 2789 2408 2132 1955 1860 1829 1873 1982 2185 2481 2897 3574 4400 6206 5171 3790 3021 2502 2141 1898 1723 1627 1594 1636 1748 1945 2210 2593 3174 4020 5463 4880 3521 2809 2325 1984 1745 1571 1471 1438 1484 1595 1785 2046 2415 2934 3742 5151 4625 3298 2635 2186 1856 1619 1438 1333 1303 1345 1466 1653 1916 2269 2763 3500 4899 4423 3145 2509 2079 1754 1513 1331 1222 1191 1235 1353 1549 1810 2159 2623 3327 4691 4271 3011 2416 1998 1672 1427 1245 1141 1115 1151 1267 1464 1732 2069 2525 3189 4550 4139 2926 2345 1931 1614 1365 1180 1087 1061 1096 1198 1404 1667 2001 2448 3096 4416 4076 2873 2305 1888 1577 1322 1141 1055 1035 1064 1158 1359 1625 1958 2398 3027 4351 4047 2844 2285 1880 1562 1308 1125 1042 1024 1053 1145 1344 1612 1942 2374 3011 4308 4077 2859 2300 1888 1570 1319 1133 1051 1030 1060 1153 1352 1617 1954 2385 3022 4325 4124 2910 2331 1918 1598 1351 1169 1078 1053 1088 1187 1386 1650 1987 2423 3060 4402 4244 2978 2393 1974 1648 1403 1219 1121 1099 1128 1244 1445 1699 2042 2483 3152 4491 4392 3100 2475 2048 1723 1485 1301 1193 1162 1203 1324 1519 1779 2117 2581 3277 4655 4571 3262 2601 2155 1823 1579 1405 1298 1265 1311 1429 1621 1879 2224 2707 3460 4848 4852 3467 2763 2294 1944 1705 1532 1432 1399 1442 1554 1744 2006 2369 2888 3673 5104 5135 3736 2970 2460 2102 1845 1674 1576 1549 1587 1699 1891 2156 2543 3111 3951 5379 5638 4118 3318 2730 2342 2080 1895 1799 1767 1808 1923 2120 2408 2832 3486 4309 6071] + + + [5639 4199 3382 2786 2399 2133 1952 1855 1829 1874 1980 2190 2477 2913 3575 4386 6248 5164 3786 3011 2497 2145 1892 1726 1627 1592 1636 1747 1945 2211 2592 3173 4017 5442 4859 3506 2794 2320 1982 1745 1569 1467 1438 1480 1597 1784 2046 2410 2926 3730 5168 4603 3285 2627 2178 1855 1613 1439 1332 1299 1345 1463 1652 1911 2266 2754 3489 4890 4392 3130 2500 2073 1748 1510 1327 1222 1189 1231 1352 1548 1807 2156 2618 3323 4677 4251 2994 2410 1990 1670 1425 1242 1140 1110 1150 1265 1461 1726 2067 2515 3188 4541 4122 2911 2343 1925 1609 1364 1178 1084 1060 1094 1197 1402 1662 2000 2445 3085 4401 4059 2857 2297 1887 1574 1319 1139 1056 1032 1062 1158 1357 1625 1956 2393 3024 4339 4028 2838 2283 1872 1562 1306 1125 1043 1024 1053 1144 1344 1610 1940 2378 2999 4300 4051 2851 2291 1883 1569 1317 1134 1050 1029 1060 1153 1353 1618 1954 2386 3015 4328 4111 2906 2328 1914 1598 1350 1168 1078 1055 1088 1190 1388 1649 1986 2420 3068 4388 4222 2970 2382 1970 1646 1404 1220 1122 1099 1129 1245 1444 1701 2042 2483 3147 4488 4367 3086 2470 2044 1721 1485 1300 1194 1162 1205 1326 1521 1776 2114 2578 3273 4645 4566 3245 2593 2151 1821 1580 1406 1299 1266 1312 1430 1623 1881 2225 2703 3453 4841 4814 3468 2746 2295 1952 1705 1535 1432 1400 1444 1556 1747 2005 2365 2887 3668 5098 5119 3724 2962 2449 2100 1851 1675 1579 1548 1592 1701 1891 2163 2543 3102 3938 5382 5596 4127 3308 2728 2349 2079 1902 1798 1768 1810 1928 2125 2410 2830 3494 4313 6049] + + + [5475 4058 3292 2707 2333 2072 1895 1804 1780 1817 1918 2117 2396 2800 3452 4209 6064 5008 3666 2931 2432 2082 1847 1686 1596 1562 1599 1703 1887 2144 2511 3063 3872 5236 4697 3421 2717 2262 1935 1703 1539 1444 1416 1454 1557 1740 1984 2331 2829 3599 4975 4467 3191 2559 2117 1810 1584 1416 1320 1286 1330 1433 1612 1859 2195 2663 3367 4718 4262 3031 2436 2023 1710 1490 1312 1212 1184 1222 1333 1516 1756 2085 2528 3196 4520 4145 2908 2341 1938 1637 1405 1238 1138 1110 1146 1251 1435 1684 1997 2433 3069 4350 4002 2826 2275 1878 1582 1350 1176 1086 1060 1093 1191 1376 1619 1935 2360 2967 4257 3940 2764 2234 1839 1542 1311 1135 1055 1037 1062 1150 1338 1584 1892 2309 2914 4160 3915 2749 2216 1825 1533 1293 1128 1045 1024 1053 1136 1324 1571 1880 2284 2887 4152 3925 2769 2236 1831 1540 1303 1131 1054 1030 1059 1146 1327 1580 1891 2298 2905 4150 3991 2817 2260 1865 1567 1339 1165 1079 1058 1087 1179 1364 1605 1920 2336 2937 4215 4110 2871 2332 1919 1615 1387 1215 1118 1098 1126 1230 1416 1653 1967 2401 3025 4333 4210 3013 2394 1994 1684 1459 1289 1188 1155 1196 1309 1484 1723 2035 2480 3152 4453 4442 3142 2520 2098 1773 1553 1384 1285 1257 1296 1405 1581 1824 2143 2600 3322 4662 4647 3368 2682 2232 1903 1665 1509 1411 1378 1422 1523 1697 1941 2281 2779 3512 4931 4956 3612 2885 2398 2045 1803 1638 1550 1521 1555 1660 1832 2097 2455 2989 3774 5173 5443 4030 3240 2674 2294 2037 1862 1759 1739 1769 1878 2072 2334 2754 3377 4155 5801] + + + + + + + A_100 + + + [ 100] + + + [1.62147 -0.0445277 -0.546563 -0.261854 1.52127 -0.211003 0.0194952 -1.45836 2.4966] + + + [-124.39 -122.251 -145.4412] + + + [1.2679 1 1 2.4534] + + + + + D50_100 + + + [ 100] + + + [1.5183 -0.341669 -0.150056 -0.23618 1.63938 -0.35403 -0.0308324 -0.524599 1.5759] + + + [-81.0317 -71.6168 -83.757] + + + [2.01726 1 1 1.6274] + + + + + D65_100 + + + [ 100] + + + [1.74788 -0.562271 -0.124172 -0.189096 1.66277 -0.416313 0.0171408 -0.552856 1.5549] + + + [-84.4486 -70.1682 -78.446] + + + [2.41759 1 1 1.4225] + + + + + D75_100 + + + [ 100] + + + [1.84441 -0.649995 -0.151423 -0.17172 1.61099 -0.39653 0.0218805 -0.506897 1.5048] + + + [-87.0209 -74.4697 -80.8341] + + + [2.46127 1 1 1.3353] + + + + + F11_100 + + + [ 100] + + + [1.52028 -0.278563 -0.200712 -0.305258 1.64403 -0.267838 -0.00796981 -0.719295 1.7485] + + + [-73.4915 -72.5498 -86.9231] + + + [1.79738 1 1 2.0643] + + + + + F12_100 + + + [ 100] + + + [1.43944 0.0309125 -0.463539 -0.338943 1.6164 -0.231193 -0.0812989 -1.41021 2.5269] + + + [-27.8837 -30.4929 -71.3504] + + + [1.00205 1 1 3.0084] + + + + + F2_100 + + + [ 100] + + + [2.06572 -0.770765 -0.278229 -0.301217 1.49376 -0.146116 -0.0191357 -0.55147 1.6208] + + + [-68.4901 -66.8725 -80.6516] + + + [2.02785 1 1 2.1442] + + + + + + [ -1] + + + + + [ 80] + + + [ 20] + + + [ 0.7] + + + [ 0.7] + + + [ 0.7] + + + [ 0.9] + + + + + 1920x1088_FPS_15 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 1920x1088_FPS_10 + + + + + fast + + + [ 1] + + + [ 2] + + + + + normal + + + [ 1] + + + [ 1] + + + + + slow + + + [ 2] + + + [ 1] + + + + + + + 1920x1088_FPS_05 + + + + + fast + + + [ 1] + + + [ 1] + + + + + normal + + + [ 2] + + + [ 0.9] + + + + + slow + + + [ 4] + + + [ 0.9] + + + + + + + [ 8] + + + + + + 1920x1088 + + + 1920x1088 + + + [256 256 256 256] + + + + + + + linear + + + [256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4096] + + + [0 256 512 768 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4095] + + + + + + [ -1] + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] + + + + + + + 1920x1088 + + + 1920x1088 + + + [ 6] + + + [ 29] + + + [ 6] + + + [ 29] + + + [ 0] + + + [ 0] + + + [-0.625 1.5625 -1.625] + + + [-0.3125 -0.125 0.375] + + + + + + + 1920x1088 + + + 1920x1088 + + + [ 1] + + + [555 338 265 225 199 166 146 131 120 105 94 86 75 67 61 57 53] + + + [ 4] + + + [ 4] + + + [ 0.15] + + + [ 0] + + + [1 1 1 1] + + + + + + + 1920x1088 + + + 1920x1088 + + + + + ISP_DPCC_MODE + + + 0x0005 + + + + + ISP_DPCC_OUT_MODE + + + 0x0003 + + + + + ISP_DPCC_SET_USE + + + 0x0007 + + + + + ISP_DPCC_METHODS_SET1 + + + 0x1D1D + + + + + ISP_DPCC_METHODS_SET2 + + + 0x0707 + + + + + ISP_DPCC_METHODS_SET3 + + + 0x1F1F + + + + + ISP_DPCC_LINE_THRESH_1 + + + 0x0808 + + + + + ISP_DPCC_LINE_MAD_FAC_1 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_1 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_1 + + + 0x0A0A + + + + + ISP_DPCC_RG_FAC_1 + + + 0x2020 + + + + + ISP_DPCC_LINE_THRESH_2 + + + 0x100C + + + + + ISP_DPCC_LINE_MAD_FAC_2 + + + 0x1810 + + + + + ISP_DPCC_PG_FAC_2 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_2 + + + 0x0808 + + + + + ISP_DPCC_RG_FAC_2 + + + 0x0808 + + + + + ISP_DPCC_LINE_THRESH_3 + + + 0x2020 + + + + + ISP_DPCC_LINE_MAD_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_PG_FAC_3 + + + 0x0403 + + + + + ISP_DPCC_RND_THRESH_3 + + + 0x0806 + + + + + ISP_DPCC_RG_FAC_3 + + + 0x0404 + + + + + ISP_DPCC_RO_LIMITS + + + 0x0A0A + + + + + ISP_DPCC_RND_OFFS + + + 0x0FFF + + + + + + + + + + on + + + +
diff --git a/drivers/SC2310/SC2310_mipi2lane_1920x1080_raw10_30fps_init.txt b/drivers/SC2310/SC2310_mipi2lane_1920x1080_raw10_30fps_init.txt new file mode 100644 index 0000000..1cef62f --- /dev/null +++ b/drivers/SC2310/SC2310_mipi2lane_1920x1080_raw10_30fps_init.txt @@ -0,0 +1,173 @@ +0x0103 0x01 +0x0100 0x00 +0x36e9 0x80 +0x36f9 0x80 +0x3001 0xfe +0x3018 0x33 +0x3019 0x0c +0x301c 0x78 +0x301f 0x40 +0x3031 0x0a +0x3037 0x22 +0x3038 0x22 +0x303f 0x01 +0x3200 0x00 +0x3201 0x04 +0x3202 0x00 +0x3203 0x04 +0x3204 0x07 +0x3205 0x8b +0x3206 0x04 +0x3207 0x43 +0x3208 0x07 +0x3209 0x80 +0x320a 0x04 +0x320b 0x38 +0x320c 0x04 +0x320d 0x4c +0x3210 0x00 +0x3211 0x04 +0x3212 0x00 +0x3213 0x04 +0x3301 0x10 +0x3302 0x10 +0x3303 0x18 +0x3306 0x60 +0x3308 0x08 +0x3309 0x30 +0x330a 0x00 +0x330b 0xc8 +0x330e 0x28 +0x3314 0x04 +0x331b 0x83 +0x331e 0x11 +0x331f 0x29 +0x3320 0x01 +0x3324 0x02 +0x3325 0x02 +0x3326 0x00 +0x3333 0x30 +0x3334 0x40 +0x333d 0x08 +0x3341 0x07 +0x3343 0x03 +0x3364 0x1d +0x3366 0x80 +0x3367 0x08 +0x3368 0x04 +0x3369 0x00 +0x336a 0x00 +0x336b 0x00 +0x336c 0x42 +0x337f 0x03 +0x3380 0x1b +0x33aa 0x00 +0x33b6 0x07 +0x33b7 0x07 +0x33b8 0x10 +0x33b9 0x10 +0x33ba 0x10 +0x33bb 0x07 +0x33bc 0x07 +0x33bd 0x20 +0x33be 0x20 +0x33bf 0x20 +0x360f 0x05 +0x3621 0xac +0x3622 0xe6 +0x3623 0x18 +0x3624 0x47 +0x3630 0xc8 +0x3631 0x88 +0x3632 0x18 +0x3633 0x22 +0x3634 0x44 +0x3635 0x40 +0x3636 0x65 +0x3637 0x17 +0x3638 0x25 +0x363b 0x08 +0x363c 0x05 +0x363d 0x05 +0x3640 0x00 +0x366e 0x04 +0x3670 0x4a +0x3671 0xf6 +0x3672 0x16 +0x3673 0x16 +0x3674 0xc8 +0x3675 0x54 +0x3676 0x18 +0x3677 0x22 +0x3678 0x33 +0x3679 0x44 +0x367a 0x40 +0x367b 0x40 +0x367c 0x40 +0x367d 0x58 +0x367e 0x40 +0x367f 0x58 +0x3696 0x83 +0x3697 0x87 +0x3698 0x9f +0x36a0 0x58 +0x36a1 0x78 +0x36ea 0x9f +0x36eb 0x0e +0x36ec 0x1e +0x36ed 0x03 +0x36fa 0xf8 +0x36fb 0x10 +0x3802 0x00 +0x3907 0x01 +0x3908 0x01 +0x391e 0x00 +0x391f 0xc0 +0x3933 0x28 +0x3934 0x0a +0x3940 0x1b +0x3941 0x40 +0x3942 0x08 +0x3943 0x0e +0x3e00 0x00 +0x3e01 0x01 +0x3e02 0x40 +0x3e03 0x0b +0x3e06 0x00 +0x3e07 0x80 +0x3e08 0x03 +0x3e09 0x40 +0x3e0e 0x66 +0x3e14 0xb0 +0x3e1e 0x35 +0x3e25 0x03 +0x3e26 0x40 +0x3f00 0x0d +0x3f04 0x02 +0x3f05 0x1e +0x3f08 0x04 +0x4500 0x59 +0x4501 0xb4 +0x4509 0x20 +0x4603 0x00 +0x4809 0x01 +0x4837 0x35 +0x5000 0x06 +0x5780 0x7f +0x5781 0x06 +0x5782 0x04 +0x5783 0x02 +0x5784 0x01 +0x5785 0x16 +0x5786 0x12 +0x5787 0x08 +0x5788 0x02 +0x57a0 0x00 +0x57a1 0x74 +0x57a2 0x01 +0x57a3 0xf4 +0x57a4 0xf0 +0x6000 0x00 +0x6002 0x00 +0x36e9 0x51 +0x36f9 0x04 diff --git a/drivers/SC2310/SC2310_mipi2lane_1920x1088_raw12_30fps_init.txt b/drivers/SC2310/SC2310_mipi2lane_1920x1088_raw12_30fps_init.txt new file mode 100644 index 0000000..735171a --- /dev/null +++ b/drivers/SC2310/SC2310_mipi2lane_1920x1088_raw12_30fps_init.txt @@ -0,0 +1,166 @@ +0x36e9 0x80 +0x36f9 0x80 +0x3001 0xfe +0x3018 0x33 +0x301c 0x78 +0x301f 0x77 +0x3031 0x0c +0x3037 0x42 +0x3038 0x22 +0x303f 0x01 +0x3200 0x00 +0x3201 0x04 +0x3202 0x00 +0x3203 0x00 +0x3204 0x07 +0x3205 0x8b +0x3206 0x04 +0x3207 0x47 +0x3208 0x07 +0x3209 0x80 +0x320a 0x04 +0x320b 0x40 +0x320c 0x04 +0x320d 0x4c +0x3211 0x04 +0x3213 0x04 +0x3301 0x10 +0x3302 0x10 +0x3303 0x18 +0x3306 0x60 +0x3308 0x08 +0x3309 0x30 +0x330a 0x00 +0x330b 0xc8 +0x330e 0x28 +0x3314 0x04 +0x331b 0x83 +0x331e 0x11 +0x331f 0x29 +0x3320 0x01 +0x3324 0x02 +0x3325 0x02 +0x3326 0x00 +0x3333 0x30 +0x3334 0x40 +0x333d 0x08 +0x3341 0x07 +0x3343 0x03 +0x3364 0x1d +0x3366 0x80 +0x3367 0x08 +0x3368 0x04 +0x3369 0x00 +0x336a 0x00 +0x336b 0x00 +0x336c 0x42 +0x337f 0x03 +0x3380 0x1b +0x33aa 0x00 +0x33b6 0x07 +0x33b7 0x07 +0x33b8 0x10 +0x33b9 0x10 +0x33ba 0x10 +0x33bb 0x07 +0x33bc 0x07 +0x33bd 0x20 +0x33be 0x20 +0x33bf 0x20 +0x360f 0x05 +0x3621 0xac +0x3622 0xe6 +0x3623 0x18 +0x3624 0x47 +0x3630 0xc8 +0x3631 0x88 +0x3632 0x18 +0x3633 0x22 +0x3634 0x44 +0x3635 0x40 +0x3636 0x65 +0x3637 0x17 +0x3638 0x25 +0x363b 0x08 +0x363c 0x05 +0x363d 0x05 +0x3640 0x00 +0x366e 0x04 +0x3670 0x4a +0x3671 0xf6 +0x3672 0x16 +0x3673 0x16 +0x3674 0xc8 +0x3675 0x54 +0x3676 0x18 +0x3677 0x22 +0x3678 0x33 +0x3679 0x44 +0x367a 0x40 +0x367b 0x40 +0x367c 0x40 +0x367d 0x58 +0x367e 0x40 +0x367f 0x58 +0x3696 0x83 +0x3697 0x87 +0x3698 0x9f +0x36a0 0x58 +0x36a1 0x78 +0x36eb 0x0b +0x36ec 0x0f +0x36fa 0xa8 +0x3802 0x00 +0x3907 0x01 +0x3908 0x01 +0x391e 0x00 +0x391f 0xc0 +0x3933 0x28 +0x3934 0x0a +0x3940 0x1b +0x3941 0x40 +0x3942 0x08 +0x3943 0x0e +0x3e00 0x00 +0x3e01 0x01 +0x3e02 0x40 +0x3e03 0x0b +0x3e06 0x00 +0x3e07 0x80 +0x3e08 0x03 +0x3e09 0x40 +0x3e0e 0x66 +0x3e14 0xb0 +0x3e1e 0x35 +0x3e25 0x03 +0x3e26 0x40 +0x3f00 0x0d +0x3f04 0x02 +0x3f05 0x1e +0x3f08 0x04 +0x4500 0x59 +0x4501 0xb4 +0x4509 0x20 +0x4603 0x00 +0x4809 0x01 +0x4837 0x35 +0x5000 0x06 +0x5780 0x7f +0x5781 0x06 +0x5782 0x04 +0x5783 0x02 +0x5784 0x01 +0x5785 0x16 +0x5786 0x12 +0x5787 0x08 +0x5788 0x02 +0x57a0 0x00 +0x57a1 0x74 +0x57a2 0x01 +0x57a3 0xf4 +0x57a4 0xf0 +0x6000 0x00 +0x6002 0x00 +0x36e9 0x23 +0x36f9 0x05 + diff --git a/drivers/SC2310/SC2310_mipi2lane_640x480_raw12_30fps_init.txt b/drivers/SC2310/SC2310_mipi2lane_640x480_raw12_30fps_init.txt new file mode 100644 index 0000000..ac9839f --- /dev/null +++ b/drivers/SC2310/SC2310_mipi2lane_640x480_raw12_30fps_init.txt @@ -0,0 +1,168 @@ +0x0100 0x00 +0x36e9 0x80 +0x36f9 0x80 +0x3001 0xfe +0x3018 0x33 +0x301c 0x78 +0x301f 0x77 +0x3031 0x0c +0x3037 0x42 +0x3038 0x22 +0x303f 0x01 +0x3200 0x02 +0x3201 0x80 +0x3202 0x01 +0x3203 0x2c +0x3204 0x05 +0x3205 0x07 +0x3206 0x03 +0x3207 0x13 +0x3208 0x02 +0x3209 0x80 +0x320a 0x01 +0x320b 0xe0 +0x320c 0x04 +0x320d 0x4c +0x3210 0x00 +0x3211 0x04 +0x3212 0x00 +0x3213 0x04 +0x3301 0x10 +0x3302 0x10 +0x3303 0x18 +0x3306 0x60 +0x3308 0x08 +0x3309 0x30 +0x330a 0x00 +0x330b 0xc8 +0x330e 0x28 +0x3314 0x04 +0x331b 0x83 +0x331e 0x11 +0x331f 0x29 +0x3320 0x01 +0x3324 0x02 +0x3325 0x02 +0x3326 0x00 +0x3333 0x30 +0x3334 0x40 +0x333d 0x08 +0x3341 0x07 +0x3343 0x03 +0x3364 0x1d +0x3366 0x80 +0x3367 0x08 +0x3368 0x04 +0x3369 0x00 +0x336a 0x00 +0x336b 0x00 +0x336c 0x42 +0x337f 0x03 +0x3380 0x1b +0x33aa 0x00 +0x33b6 0x07 +0x33b7 0x07 +0x33b8 0x10 +0x33b9 0x10 +0x33ba 0x10 +0x33bb 0x07 +0x33bc 0x07 +0x33bd 0x20 +0x33be 0x20 +0x33bf 0x20 +0x360f 0x05 +0x3621 0xac +0x3622 0xe6 +0x3623 0x18 +0x3624 0x47 +0x3630 0xc8 +0x3631 0x88 +0x3632 0x18 +0x3633 0x22 +0x3634 0x44 +0x3635 0x40 +0x3636 0x65 +0x3637 0x17 +0x3638 0x25 +0x363b 0x08 +0x363c 0x05 +0x363d 0x05 +0x3640 0x00 +0x366e 0x04 +0x3670 0x4a +0x3671 0xf6 +0x3672 0x16 +0x3673 0x16 +0x3674 0xc8 +0x3675 0x54 +0x3676 0x18 +0x3677 0x22 +0x3678 0x33 +0x3679 0x44 +0x367a 0x40 +0x367b 0x40 +0x367c 0x40 +0x367d 0x58 +0x367e 0x40 +0x367f 0x58 +0x3696 0x83 +0x3697 0x87 +0x3698 0x9f +0x36a0 0x58 +0x36a1 0x78 +0x36eb 0x0b +0x36ec 0x0f +0x36fa 0xa8 +0x3802 0x00 +0x3907 0x01 +0x3908 0x01 +0x391e 0x00 +0x391f 0xc0 +0x3933 0x28 +0x3934 0x0a +0x3940 0x1b +0x3941 0x40 +0x3942 0x08 +0x3943 0x0e +0x3e00 0x00 +0x3e01 0x01 +0x3e02 0x40 +0x3e03 0x0b +0x3e06 0x00 +0x3e07 0x80 +0x3e08 0x03 +0x3e09 0x40 +0x3e0e 0x66 +0x3e14 0xb0 +0x3e1e 0x35 +0x3e25 0x03 +0x3e26 0x40 +0x3f00 0x0d +0x3f04 0x02 +0x3f05 0x1e +0x3f08 0x04 +0x4500 0x59 +0x4501 0xb4 +0x4509 0x20 +0x4603 0x00 +0x4809 0x01 +0x4837 0x35 +0x5000 0x06 +0x5780 0x7f +0x5781 0x06 +0x5782 0x04 +0x5783 0x02 +0x5784 0x01 +0x5785 0x16 +0x5786 0x12 +0x5787 0x08 +0x5788 0x02 +0x57a0 0x00 +0x57a1 0x74 +0x57a2 0x01 +0x57a3 0xf4 +0x57a4 0xf0 +0x6000 0x00 +0x6002 0x00 +0x36e9 0x23 +0x36f9 0x05 diff --git a/drivers/SC2310/SC2310_priv.h b/drivers/SC2310/SC2310_priv.h new file mode 100644 index 0000000..8826c0a --- /dev/null +++ b/drivers/SC2310/SC2310_priv.h @@ -0,0 +1,241 @@ +/******************************************************************************\ +|* Copyright (c) 2020 by VeriSilicon Holdings Co., Ltd. ("VeriSilicon") *| +|* All Rights Reserved. *| +|* *| +|* The material in this file is confidential and contains trade secrets of *| +|* of VeriSilicon. This is proprietary information owned or licensed by *| +|* VeriSilicon. No part of this work may be disclosed, reproduced, copied, *| +|* transmitted, or used in any way for any purpose, without the express *| +|* written permission of VeriSilicon. *| +|* *| +\******************************************************************************/ +/** + * @file SC2310_priv.h + * + * @brief Interface description for image sensor specific implementation (iss). + * + *****************************************************************************/ +/** + * @page module_name_page Module Name + * Describe here what this module does. + * + * For a detailed list of functions and implementation detail refer to: + * - @ref module_name + * + * @defgroup sc2310_priv + * @{ + * + */ +#ifndef __SC2310_PRIV_H__ +#define __SC2310_PRIV_H__ + +#include +#include +#include +#include +#include "vvsensor.h" + + + +#ifdef __cplusplus +extern "C" +{ +#endif + + + +/***************************************************************************** + * SC control registers + *****************************************************************************/ +#define SC2310_PIDH (0x300A) //R - Product ID High Byte MSBs +#define SC2310_PIDL (0x300B) //R - Product ID Low Byte LSBs + +/***************************************************************************** + * Default values + *****************************************************************************/ + + // Make sure that these static settings are reflecting the capabilities defined +// in IsiGetCapsIss (further dynamic setup may alter these default settings but +// often does not if there is no choice available). + +/***************************************************************************** + * SC control registers + *****************************************************************************/ +#define SC2310_PIDH_DEFAULT (0x27) //read only +#define SC2310_PIDL_DEFAULT (0x70) //read only + +typedef struct SC2310_Context_s +{ + IsiSensorContext_t IsiCtx; /**< common context of ISI and ISI driver layer; @note: MUST BE FIRST IN DRIVER CONTEXT */ + + struct vvcam_mode_info SensorMode; + uint32_t KernelDriverFlag; + char SensorRegCfgFile[128]; + + uint32_t HdrMode; + uint32_t Resolution; + uint32_t MaxFps; + uint32_t MinFps; + uint32_t CurrFps; + //// modify below here //// + + IsiSensorConfig_t Config; /**< sensor configuration */ + bool_t Configured; /**< flags that config was applied to sensor */ + bool_t Streaming; /**< flags that csensor is streaming data */ + bool_t TestPattern; /**< flags that sensor is streaming test-pattern */ + + bool_t isAfpsRun; /**< if true, just do anything required for Afps parameter calculation, but DON'T access SensorHW! */ + + float one_line_exp_time; + uint16_t MaxIntegrationLine; + uint16_t MinIntegrationLine; + uint32_t gain_accuracy; + + uint16_t FrameLengthLines; /**< frame line length */ + uint16_t CurFrameLengthLines; + + float AecMinGain; + float AecMaxGain; + float AecMinIntegrationTime; + float AecMaxIntegrationTime; + + float AecIntegrationTimeIncrement; /**< _smallest_ increment the sensor/driver can handle (e.g. used for sliders in the application) */ + float AecGainIncrement; /**< _smallest_ increment the sensor/driver can handle (e.g. used for sliders in the application) */ + + float AecCurIntegrationTime; + float AecCurVSIntegrationTime; + float AecCurLongIntegrationTime; + float AecCurGain; + float AecCurVSGain; + float AecCurLongGain; + + uint32_t LastExpLine; + uint32_t LastVsExpLine; + uint32_t LastLongExpLine; + + uint32_t LastGain; + uint32_t LastVsGain; + uint32_t LastLongGain; + + bool GroupHold; + uint32_t OldGain; + uint32_t OldVsGain; + uint32_t OldIntegrationTime; + uint32_t OldVsIntegrationTime; + uint32_t OldGainHcg; + uint32_t OldAGainHcg; + uint32_t OldGainLcg; + uint32_t OldAGainLcg; + int subdev; + uint8_t pattern; + + float CurHdrRatio; +} SC2310_Context_t; + +static RESULT SC2310_IsiCreateSensorIss(IsiSensorInstanceConfig_t * + pConfig); + +static RESULT SC2310_IsiInitSensorIss(IsiSensorHandle_t handle); + +static RESULT SC2310_IsiReleaseSensorIss(IsiSensorHandle_t handle); + +static RESULT SC2310_IsiGetCapsIss(IsiSensorHandle_t handle, + IsiSensorCaps_t * pIsiSensorCaps); + +static RESULT SC2310_IsiSetupSensorIss(IsiSensorHandle_t handle, + const IsiSensorConfig_t * + pConfig); + +static RESULT SC2310_IsiSensorSetStreamingIss(IsiSensorHandle_t handle, + bool_t on); + +static RESULT SC2310_IsiSensorSetPowerIss(IsiSensorHandle_t handle, + bool_t on); + +static RESULT SC2310_IsiGetSensorRevisionIss(IsiSensorHandle_t handle, + uint32_t * p_value); + +static RESULT SC2310_IsiSetBayerPattern(IsiSensorHandle_t handle, + uint8_t pattern); + +static RESULT SC2310_IsiGetGainLimitsIss(IsiSensorHandle_t handle, + float *pMinGain, + float *pMaxGain); + +static RESULT SC2310_IsiGetIntegrationTimeLimitsIss(IsiSensorHandle_t + handle, + float + *pMinIntegrationTime, + float + *pMaxIntegrationTime); + +static RESULT SC2310_IsiExposureControlIss(IsiSensorHandle_t handle, + float NewGain, + float NewIntegrationTime, + uint8_t * + pNumberOfFramesToSkip, + float *pSetGain, + float *pSetIntegrationTime, + float *hdr_ratio); + +static RESULT SC2310_IsiGetGainIss(IsiSensorHandle_t handle, + float *pSetGain); + +static RESULT SC2310_IsiGetVSGainIss(IsiSensorHandle_t handle, + float *pSetGain); + +static RESULT SC2310_IsiGetGainIncrementIss(IsiSensorHandle_t handle, + float *pIncr); + +static RESULT SC2310_IsiSetGainIss(IsiSensorHandle_t handle, + float NewGain, float *pSetGain, + float *hdr_ratio); + +static RESULT SC2310_IsiSetVSGainIss(IsiSensorHandle_t handle, + float NewIntegrationTime, + float NewGain, float *pSetGain, + float *hdr_ratio); + +static RESULT SC2310_IsiGetIntegrationTimeIss(IsiSensorHandle_t handle, + float + *pSetIntegrationTime); + +static RESULT SC2310_IsiGetVSIntegrationTimeIss(IsiSensorHandle_t + handle, + float + *pSetIntegrationTime); + +static RESULT SC2310_IsiGetIntegrationTimeIncrementIss(IsiSensorHandle_t handle, + float *pIncr); + +static RESULT SC2310_IsiSetIntegrationTimeIss(IsiSensorHandle_t handle, + float NewIntegrationTime, + float + *pSetIntegrationTime, + uint8_t * + pNumberOfFramesToSkip, + float *hdr_ratio); + +static RESULT SC2310_IsiSetVSIntegrationTimeIss(IsiSensorHandle_t + handle, + float + NewIntegrationTime, + float + *pSetIntegrationTime, + uint8_t * + pNumberOfFramesToSkip, + float *hdr_ratio); + +RESULT SC2310_IsiGetResolutionIss(IsiSensorHandle_t handle, uint16_t *pwidth, uint16_t *pheight); + +static RESULT SC2310_IsiResetSensorIss(IsiSensorHandle_t handle); + + +#ifdef __cplusplus +} +#endif + +/* @} sc2310priv */ + +#endif /* __SC2310PRIV_H__ */ + diff --git a/drivers/SC2310/sc2310.h b/drivers/SC2310/sc2310.h new file mode 100644 index 0000000..f460ba2 --- /dev/null +++ b/drivers/SC2310/sc2310.h @@ -0,0 +1,1377 @@ +/* + * Support for OmniVision SC2310 5M camera sensor. + * + * Copyright (c) 2013 Intel Corporation. All Rights Reserved. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License version + * 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + * + */ + +#ifndef __SC2310_H__ +#define __SC2310_H__ + +#define SC2310_NAME "sc2310" + +#define SC2310_POWER_UP_RETRY_NUM 5 + +/* Defines for register writes and register array processing */ +#define I2C_MSG_LENGTH 0x2 +#define I2C_RETRY_COUNT 5 + +#define SC2310_FOCAL_LENGTH_NUM 334 /*3.34mm*/ +#define SC2310_FOCAL_LENGTH_DEM 100 +#define SC2310_F_NUMBER_DEFAULT_NUM 24 +#define SC2310_F_NUMBER_DEM 10 + +#define MAX_FMTS 1 + +/* sensor_mode_data read_mode adaptation */ +#define SC2310_READ_MODE_BINNING_ON 0x0400 +#define SC2310_READ_MODE_BINNING_OFF 0x00 +#define SC2310_INTEGRATION_TIME_MARGIN 8 + +#define SC2310_MAX_EXPOSURE_VALUE 0xFFF1 +#define SC2310_MAX_GAIN_VALUE 0xFF + +/* + * focal length bits definition: + * bits 31-16: numerator, bits 15-0: denominator + */ +#define SC2310_FOCAL_LENGTH_DEFAULT 0x1B70064 + +/* + * current f-number bits definition: + * bits 31-16: numerator, bits 15-0: denominator + */ +#define SC2310_F_NUMBER_DEFAULT 0x18000a + +/* + * f-number range bits definition: + * bits 31-24: max f-number numerator + * bits 23-16: max f-number denominator + * bits 15-8: min f-number numerator + * bits 7-0: min f-number denominator + */ +#define SC2310_F_NUMBER_RANGE 0x180a180a +#define SC2310_ID 0x5690 + +#define SC2310_FINE_INTG_TIME_MIN 0 +#define SC2310_FINE_INTG_TIME_MAX_MARGIN 0 +#define SC2310_COARSE_INTG_TIME_MIN 1 +#define SC2310_COARSE_INTG_TIME_MAX_MARGIN 6 + +#define SC2310_BIN_FACTOR_MAX 4 +/* + * SC2310 System control registers + */ +#define SC2310_SW_SLEEP 0x0100 +#define SC2310_SW_RESET 0x0103 +#define SC2310_SW_STREAM 0x0100 + +#define SC2310_SC_CMMN_CHIP_ID_H 0x300A +#define SC2310_SC_CMMN_CHIP_ID_L 0x300B +#define SC2310_SC_CMMN_SCCB_ID 0x300C +#define SC2310_SC_CMMN_SUB_ID 0x302A /* process, version*/ +/*Bit[7:4] Group control, Bit[3:0] Group ID*/ +#define SC2310_GROUP_ACCESS 0x3208 +/* +*Bit[3:0] Bit[19:16] of exposure, +*remaining 16 bits lies in Reg0x3501&Reg0x3502 +*/ +#define SC2310_EXPOSURE_H 0x3500 +#define SC2310_EXPOSURE_M 0x3501 +#define SC2310_EXPOSURE_L 0x3502 +/*Bit[1:0] means Bit[9:8] of gain*/ +#define SC2310_AGC_H 0x350A +#define SC2310_AGC_L 0x350B /*Bit[7:0] of gain*/ + +#define SC2310_HORIZONTAL_START_H 0x3800 /*Bit[11:8]*/ +#define SC2310_HORIZONTAL_START_L 0x3801 /*Bit[7:0]*/ +#define SC2310_VERTICAL_START_H 0x3802 /*Bit[11:8]*/ +#define SC2310_VERTICAL_START_L 0x3803 /*Bit[7:0]*/ +#define SC2310_HORIZONTAL_END_H 0x3804 /*Bit[11:8]*/ +#define SC2310_HORIZONTAL_END_L 0x3805 /*Bit[7:0]*/ +#define SC2310_VERTICAL_END_H 0x3806 /*Bit[11:8]*/ +#define SC2310_VERTICAL_END_L 0x3807 /*Bit[7:0]*/ +#define SC2310_HORIZONTAL_OUTPUT_SIZE_H 0x3808 /*Bit[3:0]*/ +#define SC2310_HORIZONTAL_OUTPUT_SIZE_L 0x3809 /*Bit[7:0]*/ +#define SC2310_VERTICAL_OUTPUT_SIZE_H 0x380a /*Bit[3:0]*/ +#define SC2310_VERTICAL_OUTPUT_SIZE_L 0x380b /*Bit[7:0]*/ +/*High 8-bit, and low 8-bit HTS address is 0x380d*/ +#define SC2310_TIMING_HTS_H 0x380C +/*High 8-bit, and low 8-bit HTS address is 0x380d*/ +#define SC2310_TIMING_HTS_L 0x380D +/*High 8-bit, and low 8-bit HTS address is 0x380f*/ +#define SC2310_TIMING_VTS_H 0x380e +/*High 8-bit, and low 8-bit HTS address is 0x380f*/ +#define SC2310_TIMING_VTS_L 0x380f + +#define SC2310_MWB_RED_GAIN_H 0x3400 +#define SC2310_MWB_GREEN_GAIN_H 0x3402 +#define SC2310_MWB_BLUE_GAIN_H 0x3404 +#define SC2310_MWB_GAIN_MAX 0x0fff + +#define SC2310_START_STREAMING 0x01 +#define SC2310_STOP_STREAMING 0x00 + +#define VCM_ADDR 0x0c +#define VCM_CODE_MSB 0x04 + +#define SC2310_INVALID_CONFIG 0xffffffff + +#define SC2310_VCM_SLEW_STEP 0x30F0 +#define SC2310_VCM_SLEW_STEP_MAX 0x7 +#define SC2310_VCM_SLEW_STEP_MASK 0x7 +#define SC2310_VCM_CODE 0x30F2 +#define SC2310_VCM_SLEW_TIME 0x30F4 +#define SC2310_VCM_SLEW_TIME_MAX 0xffff +#define SC2310_VCM_ENABLE 0x8000 + +#define SC2310_VCM_MAX_FOCUS_NEG -1023 +#define SC2310_VCM_MAX_FOCUS_POS 1023 + +#define DLC_ENABLE 1 +#define DLC_DISABLE 0 +#define VCM_PROTECTION_OFF 0xeca3 +#define VCM_PROTECTION_ON 0xdc51 +#define VCM_DEFAULT_S 0x0 +#define vcm_step_s(a) (u8)(a & 0xf) +#define vcm_step_mclk(a) (u8)((a >> 4) & 0x3) +#define vcm_dlc_mclk(dlc, mclk) (u16)((dlc << 3) | mclk | 0xa104) +#define vcm_tsrc(tsrc) (u16)(tsrc << 3 | 0xf200) +#define vcm_val(data, s) (u16)(data << 4 | s) +#define DIRECT_VCM vcm_dlc_mclk(0, 0) + +/* Defines for OTP Data Registers */ +#define SC2310_FRAME_OFF_NUM 0x4202 +#define SC2310_OTP_BYTE_MAX 32 //change to 32 as needed by otpdata +#define SC2310_OTP_SHORT_MAX 16 +#define SC2310_OTP_START_ADDR 0x3D00 +#define SC2310_OTP_END_ADDR 0x3D0F +#define SC2310_OTP_DATA_SIZE 320 +#define SC2310_OTP_PROGRAM_REG 0x3D80 +#define SC2310_OTP_READ_REG 0x3D81 // 1:Enable 0:disable +#define SC2310_OTP_BANK_REG 0x3D84 //otp bank and mode +#define SC2310_OTP_READY_REG_DONE 1 +#define SC2310_OTP_BANK_MAX 28 +#define SC2310_OTP_BANK_SIZE 16 //16 bytes per bank +#define SC2310_OTP_READ_ONETIME 16 +#define SC2310_OTP_MODE_READ 1 + +typedef enum SC2310_EXPOSURE_SETTING_e { + SC2310_ANALOG_GAIN = 1 << 0, + SC2310_INTEGRATION_TIME = 1 << 1, + SC2310_DIGITAL_GAIN = 1 << 2, +}SC2310_EXPOSURE_SETTING_t; + +#if 0 +struct regval_list { + u16 reg_num; + u8 value; +}; + +struct sc2310_resolution { + u8 *desc; + const struct sc2310_reg *regs; + int res; + int width; + int height; + int fps; + int pix_clk_freq; + u16 pixels_per_line; + u16 lines_per_frame; + u8 bin_factor_x; + u8 bin_factor_y; + u8 bin_mode; + bool used; +}; + +struct sc2310_format { + u8 *desc; + u32 pixelformat; + struct sc2310_reg *regs; +}; + +enum vcm_type { + VCM_UNKNOWN, + VCM_AD5823, + VCM_DW9714, +}; + +/* + * sc2310 device structure. + */ +struct sc2310_device { + struct v4l2_subdev sd; + struct media_pad pad; + struct v4l2_mbus_framefmt format; + struct mutex input_lock; + struct v4l2_ctrl_handler ctrl_handler; + + struct camera_sensor_platform_data *platform_data; + struct timespec timestamp_t_focus_abs; + int vt_pix_clk_freq_mhz; + int fmt_idx; + int run_mode; + int otp_size; + u8 *otp_data; + u32 focus; + s16 number_of_steps; + u8 res; + u8 type; + bool vcm_update; + enum vcm_type vcm; +}; + +enum sc2310_tok_type { + SC2310_8BIT = 0x0001, + SC2310_16BIT = 0x0002, + SC2310_32BIT = 0x0004, + SC2310_TOK_TERM = 0xf000, /* terminating token for reg list */ + SC2310_TOK_DELAY = 0xfe00, /* delay token for reg list */ + SC2310_TOK_MASK = 0xfff0 +}; + +/** + * struct sc2310_reg - MI sensor register format + * @type: type of the register + * @reg: 16-bit offset to register + * @val: 8/16/32-bit register value + * + * Define a structure for sensor register initialization values + */ +struct sc2310_reg { + enum sc2310_tok_type type; + u16 reg; + u32 val; /* @set value for read/mod/write, @mask */ +}; + +#define to_sc2310_sensor(x) container_of(x, struct sc2310_device, sd) + +#define SC2310_MAX_WRITE_BUF_SIZE 30 + +struct sc2310_write_buffer { + u16 addr; + u8 data[SC2310_MAX_WRITE_BUF_SIZE]; +}; + +struct sc2310_write_ctrl { + int index; + struct sc2310_write_buffer buffer; +}; + +static const struct i2c_device_id sc2310_id[] = { + {SC2310_NAME, 0}, + {} +}; + +static struct sc2310_reg const sc2310_global_setting[] = { + {SC2310_8BIT, 0x0103, 0x01}, + {SC2310_8BIT, 0x3001, 0x0a}, + {SC2310_8BIT, 0x3002, 0x80}, + {SC2310_8BIT, 0x3006, 0x00}, + {SC2310_8BIT, 0x3011, 0x21}, + {SC2310_8BIT, 0x3012, 0x09}, + {SC2310_8BIT, 0x3013, 0x10}, + {SC2310_8BIT, 0x3014, 0x00}, + {SC2310_8BIT, 0x3015, 0x08}, + {SC2310_8BIT, 0x3016, 0xf0}, + {SC2310_8BIT, 0x3017, 0xf0}, + {SC2310_8BIT, 0x3018, 0xf0}, + {SC2310_8BIT, 0x301b, 0xb4}, + {SC2310_8BIT, 0x301d, 0x02}, + {SC2310_8BIT, 0x3021, 0x00}, + {SC2310_8BIT, 0x3022, 0x01}, + {SC2310_8BIT, 0x3028, 0x44}, + {SC2310_8BIT, 0x3098, 0x02}, + {SC2310_8BIT, 0x3099, 0x19}, + {SC2310_8BIT, 0x309a, 0x02}, + {SC2310_8BIT, 0x309b, 0x01}, + {SC2310_8BIT, 0x309c, 0x00}, + {SC2310_8BIT, 0x30a0, 0xd2}, + {SC2310_8BIT, 0x30a2, 0x01}, + {SC2310_8BIT, 0x30b2, 0x00}, + {SC2310_8BIT, 0x30b3, 0x7d}, + {SC2310_8BIT, 0x30b4, 0x03}, + {SC2310_8BIT, 0x30b5, 0x04}, + {SC2310_8BIT, 0x30b6, 0x01}, + {SC2310_8BIT, 0x3104, 0x21}, + {SC2310_8BIT, 0x3106, 0x00}, + {SC2310_8BIT, 0x3400, 0x04}, + {SC2310_8BIT, 0x3401, 0x00}, + {SC2310_8BIT, 0x3402, 0x04}, + {SC2310_8BIT, 0x3403, 0x00}, + {SC2310_8BIT, 0x3404, 0x04}, + {SC2310_8BIT, 0x3405, 0x00}, + {SC2310_8BIT, 0x3406, 0x01}, + {SC2310_8BIT, 0x3500, 0x00}, + {SC2310_8BIT, 0x3503, 0x07}, + {SC2310_8BIT, 0x3504, 0x00}, + {SC2310_8BIT, 0x3505, 0x00}, + {SC2310_8BIT, 0x3506, 0x00}, + {SC2310_8BIT, 0x3507, 0x02}, + {SC2310_8BIT, 0x3508, 0x00}, + {SC2310_8BIT, 0x3509, 0x10}, + {SC2310_8BIT, 0x350a, 0x00}, + {SC2310_8BIT, 0x350b, 0x40}, + {SC2310_8BIT, 0x3601, 0x0a}, + {SC2310_8BIT, 0x3602, 0x38}, + {SC2310_8BIT, 0x3612, 0x80}, + {SC2310_8BIT, 0x3620, 0x54}, + {SC2310_8BIT, 0x3621, 0xc7}, + {SC2310_8BIT, 0x3622, 0x0f}, + {SC2310_8BIT, 0x3625, 0x10}, + {SC2310_8BIT, 0x3630, 0x55}, + {SC2310_8BIT, 0x3631, 0xf4}, + {SC2310_8BIT, 0x3632, 0x00}, + {SC2310_8BIT, 0x3633, 0x34}, + {SC2310_8BIT, 0x3634, 0x02}, + {SC2310_8BIT, 0x364d, 0x0d}, + {SC2310_8BIT, 0x364f, 0xdd}, + {SC2310_8BIT, 0x3660, 0x04}, + {SC2310_8BIT, 0x3662, 0x10}, + {SC2310_8BIT, 0x3663, 0xf1}, + {SC2310_8BIT, 0x3665, 0x00}, + {SC2310_8BIT, 0x3666, 0x20}, + {SC2310_8BIT, 0x3667, 0x00}, + {SC2310_8BIT, 0x366a, 0x80}, + {SC2310_8BIT, 0x3680, 0xe0}, + {SC2310_8BIT, 0x3681, 0x00}, + {SC2310_8BIT, 0x3700, 0x42}, + {SC2310_8BIT, 0x3701, 0x14}, + {SC2310_8BIT, 0x3702, 0xa0}, + {SC2310_8BIT, 0x3703, 0xd8}, + {SC2310_8BIT, 0x3704, 0x78}, + {SC2310_8BIT, 0x3705, 0x02}, + {SC2310_8BIT, 0x370a, 0x00}, + {SC2310_8BIT, 0x370b, 0x20}, + {SC2310_8BIT, 0x370c, 0x0c}, + {SC2310_8BIT, 0x370d, 0x11}, + {SC2310_8BIT, 0x370e, 0x00}, + {SC2310_8BIT, 0x370f, 0x40}, + {SC2310_8BIT, 0x3710, 0x00}, + {SC2310_8BIT, 0x371a, 0x1c}, + {SC2310_8BIT, 0x371b, 0x05}, + {SC2310_8BIT, 0x371c, 0x01}, + {SC2310_8BIT, 0x371e, 0xa1}, + {SC2310_8BIT, 0x371f, 0x0c}, + {SC2310_8BIT, 0x3721, 0x00}, + {SC2310_8BIT, 0x3724, 0x10}, + {SC2310_8BIT, 0x3726, 0x00}, + {SC2310_8BIT, 0x372a, 0x01}, + {SC2310_8BIT, 0x3730, 0x10}, + {SC2310_8BIT, 0x3738, 0x22}, + {SC2310_8BIT, 0x3739, 0xe5}, + {SC2310_8BIT, 0x373a, 0x50}, + {SC2310_8BIT, 0x373b, 0x02}, + {SC2310_8BIT, 0x373c, 0x41}, + {SC2310_8BIT, 0x373f, 0x02}, + {SC2310_8BIT, 0x3740, 0x42}, + {SC2310_8BIT, 0x3741, 0x02}, + {SC2310_8BIT, 0x3742, 0x18}, + {SC2310_8BIT, 0x3743, 0x01}, + {SC2310_8BIT, 0x3744, 0x02}, + {SC2310_8BIT, 0x3747, 0x10}, + {SC2310_8BIT, 0x374c, 0x04}, + {SC2310_8BIT, 0x3751, 0xf0}, + {SC2310_8BIT, 0x3752, 0x00}, + {SC2310_8BIT, 0x3753, 0x00}, + {SC2310_8BIT, 0x3754, 0xc0}, + {SC2310_8BIT, 0x3755, 0x00}, + {SC2310_8BIT, 0x3756, 0x1a}, + {SC2310_8BIT, 0x3758, 0x00}, + {SC2310_8BIT, 0x3759, 0x0f}, + {SC2310_8BIT, 0x376b, 0x44}, + {SC2310_8BIT, 0x375c, 0x04}, + {SC2310_8BIT, 0x3774, 0x10}, + {SC2310_8BIT, 0x3776, 0x00}, + {SC2310_8BIT, 0x377f, 0x08}, + {SC2310_8BIT, 0x3780, 0x22}, + {SC2310_8BIT, 0x3781, 0x0c}, + {SC2310_8BIT, 0x3784, 0x2c}, + {SC2310_8BIT, 0x3785, 0x1e}, + {SC2310_8BIT, 0x378f, 0xf5}, + {SC2310_8BIT, 0x3791, 0xb0}, + {SC2310_8BIT, 0x3795, 0x00}, + {SC2310_8BIT, 0x3796, 0x64}, + {SC2310_8BIT, 0x3797, 0x11}, + {SC2310_8BIT, 0x3798, 0x30}, + {SC2310_8BIT, 0x3799, 0x41}, + {SC2310_8BIT, 0x379a, 0x07}, + {SC2310_8BIT, 0x379b, 0xb0}, + {SC2310_8BIT, 0x379c, 0x0c}, + {SC2310_8BIT, 0x37c5, 0x00}, + {SC2310_8BIT, 0x37c6, 0x00}, + {SC2310_8BIT, 0x37c7, 0x00}, + {SC2310_8BIT, 0x37c9, 0x00}, + {SC2310_8BIT, 0x37ca, 0x00}, + {SC2310_8BIT, 0x37cb, 0x00}, + {SC2310_8BIT, 0x37de, 0x00}, + {SC2310_8BIT, 0x37df, 0x00}, + {SC2310_8BIT, 0x3800, 0x00}, + {SC2310_8BIT, 0x3801, 0x00}, + {SC2310_8BIT, 0x3802, 0x00}, + {SC2310_8BIT, 0x3804, 0x0a}, + {SC2310_8BIT, 0x3805, 0x3f}, + {SC2310_8BIT, 0x3810, 0x00}, + {SC2310_8BIT, 0x3812, 0x00}, + {SC2310_8BIT, 0x3823, 0x00}, + {SC2310_8BIT, 0x3824, 0x00}, + {SC2310_8BIT, 0x3825, 0x00}, + {SC2310_8BIT, 0x3826, 0x00}, + {SC2310_8BIT, 0x3827, 0x00}, + {SC2310_8BIT, 0x382a, 0x04}, + {SC2310_8BIT, 0x3a04, 0x06}, + {SC2310_8BIT, 0x3a05, 0x14}, + {SC2310_8BIT, 0x3a06, 0x00}, + {SC2310_8BIT, 0x3a07, 0xfe}, + {SC2310_8BIT, 0x3b00, 0x00}, + {SC2310_8BIT, 0x3b02, 0x00}, + {SC2310_8BIT, 0x3b03, 0x00}, + {SC2310_8BIT, 0x3b04, 0x00}, + {SC2310_8BIT, 0x3b05, 0x00}, + {SC2310_8BIT, 0x3e07, 0x20}, + {SC2310_8BIT, 0x4000, 0x08}, + {SC2310_8BIT, 0x4001, 0x04}, + {SC2310_8BIT, 0x4002, 0x45}, + {SC2310_8BIT, 0x4004, 0x08}, + {SC2310_8BIT, 0x4005, 0x18}, + {SC2310_8BIT, 0x4006, 0x20}, + {SC2310_8BIT, 0x4008, 0x24}, + {SC2310_8BIT, 0x4009, 0x10}, + {SC2310_8BIT, 0x400c, 0x00}, + {SC2310_8BIT, 0x400d, 0x00}, + {SC2310_8BIT, 0x4058, 0x00}, + {SC2310_8BIT, 0x404e, 0x37}, + {SC2310_8BIT, 0x404f, 0x8f}, + {SC2310_8BIT, 0x4058, 0x00}, + {SC2310_8BIT, 0x4101, 0xb2}, + {SC2310_8BIT, 0x4303, 0x00}, + {SC2310_8BIT, 0x4304, 0x08}, + {SC2310_8BIT, 0x4307, 0x31}, + {SC2310_8BIT, 0x4311, 0x04}, + {SC2310_8BIT, 0x4315, 0x01}, + {SC2310_8BIT, 0x4511, 0x05}, + {SC2310_8BIT, 0x4512, 0x01}, + {SC2310_8BIT, 0x4806, 0x00}, + {SC2310_8BIT, 0x4816, 0x52}, + {SC2310_8BIT, 0x481f, 0x30}, + {SC2310_8BIT, 0x4826, 0x2c}, + {SC2310_8BIT, 0x4831, 0x64}, + {SC2310_8BIT, 0x4d00, 0x04}, + {SC2310_8BIT, 0x4d01, 0x71}, + {SC2310_8BIT, 0x4d02, 0xfd}, + {SC2310_8BIT, 0x4d03, 0xf5}, + {SC2310_8BIT, 0x4d04, 0x0c}, + {SC2310_8BIT, 0x4d05, 0xcc}, + {SC2310_8BIT, 0x4837, 0x0a}, + {SC2310_8BIT, 0x5000, 0x06}, + {SC2310_8BIT, 0x5001, 0x01}, + {SC2310_8BIT, 0x5003, 0x20}, + {SC2310_8BIT, 0x5046, 0x0a}, + {SC2310_8BIT, 0x5013, 0x00}, + {SC2310_8BIT, 0x5046, 0x0a}, + {SC2310_8BIT, 0x5780, 0x1c}, + {SC2310_8BIT, 0x5786, 0x20}, + {SC2310_8BIT, 0x5787, 0x10}, + {SC2310_8BIT, 0x5788, 0x18}, + {SC2310_8BIT, 0x578a, 0x04}, + {SC2310_8BIT, 0x578b, 0x02}, + {SC2310_8BIT, 0x578c, 0x02}, + {SC2310_8BIT, 0x578e, 0x06}, + {SC2310_8BIT, 0x578f, 0x02}, + {SC2310_8BIT, 0x5790, 0x02}, + {SC2310_8BIT, 0x5791, 0xff}, + {SC2310_8BIT, 0x5842, 0x01}, + {SC2310_8BIT, 0x5843, 0x2b}, + {SC2310_8BIT, 0x5844, 0x01}, + {SC2310_8BIT, 0x5845, 0x92}, + {SC2310_8BIT, 0x5846, 0x01}, + {SC2310_8BIT, 0x5847, 0x8f}, + {SC2310_8BIT, 0x5848, 0x01}, + {SC2310_8BIT, 0x5849, 0x0c}, + {SC2310_8BIT, 0x5e00, 0x00}, + {SC2310_8BIT, 0x5e10, 0x0c}, + {SC2310_8BIT, 0x0100, 0x00}, + {SC2310_TOK_TERM, 0, 0} +}; + +/* + * 654x496 30fps 17ms VBlanking 2lane 10Bit (Scaling) + */ +static struct sc2310_reg const sc2310_654x496[] = { + {SC2310_8BIT, 0x3501, 0x3d}, + {SC2310_8BIT, 0x3502, 0x00}, + {SC2310_8BIT, 0x3708, 0xe6}, + {SC2310_8BIT, 0x3709, 0xc7}, + {SC2310_8BIT, 0x3803, 0x00}, + {SC2310_8BIT, 0x3806, 0x07}, + {SC2310_8BIT, 0x3807, 0xa3}, + {SC2310_8BIT, 0x3808, 0x02}, + {SC2310_8BIT, 0x3809, 0x90}, + {SC2310_8BIT, 0x380a, 0x01}, + {SC2310_8BIT, 0x380b, 0xf0}, + {SC2310_8BIT, 0x380c, 0x0a}, + {SC2310_8BIT, 0x380d, 0x80}, + {SC2310_8BIT, 0x380e, 0x07}, + {SC2310_8BIT, 0x380f, 0xc0}, + {SC2310_8BIT, 0x3811, 0x08}, + {SC2310_8BIT, 0x3813, 0x02}, + {SC2310_8BIT, 0x3814, 0x31}, + {SC2310_8BIT, 0x3815, 0x31}, + {SC2310_8BIT, 0x3820, 0x04}, + {SC2310_8BIT, 0x3821, 0x1f}, + {SC2310_8BIT, 0x5002, 0x80}, + {SC2310_8BIT, 0x0100, 0x01}, + {SC2310_TOK_TERM, 0, 0} +}; + +/* + * 1296x976 30fps 17ms VBlanking 2lane 10Bit (Scaling) +*DS from 2592x1952 +*/ +static struct sc2310_reg const sc2310_1296x976[] = { + {SC2310_8BIT, 0x3501, 0x7b}, + {SC2310_8BIT, 0x3502, 0x00}, + {SC2310_8BIT, 0x3708, 0xe2}, + {SC2310_8BIT, 0x3709, 0xc3}, + + {SC2310_8BIT, 0x3800, 0x00}, + {SC2310_8BIT, 0x3801, 0x00}, + {SC2310_8BIT, 0x3802, 0x00}, + {SC2310_8BIT, 0x3803, 0x00}, + + {SC2310_8BIT, 0x3804, 0x0a}, + {SC2310_8BIT, 0x3805, 0x3f}, + {SC2310_8BIT, 0x3806, 0x07}, + {SC2310_8BIT, 0x3807, 0xA3}, + + {SC2310_8BIT, 0x3808, 0x05}, + {SC2310_8BIT, 0x3809, 0x10}, + {SC2310_8BIT, 0x380a, 0x03}, + {SC2310_8BIT, 0x380b, 0xD0}, + + {SC2310_8BIT, 0x380c, 0x0a}, + {SC2310_8BIT, 0x380d, 0x80}, + {SC2310_8BIT, 0x380e, 0x07}, + {SC2310_8BIT, 0x380f, 0xc0}, + + {SC2310_8BIT, 0x3810, 0x00}, + {SC2310_8BIT, 0x3811, 0x10}, + {SC2310_8BIT, 0x3812, 0x00}, + {SC2310_8BIT, 0x3813, 0x02}, + + {SC2310_8BIT, 0x3814, 0x11}, /*X subsample control*/ + {SC2310_8BIT, 0x3815, 0x11}, /*Y subsample control*/ + {SC2310_8BIT, 0x3820, 0x00}, + {SC2310_8BIT, 0x3821, 0x1e}, + {SC2310_8BIT, 0x5002, 0x00}, + {SC2310_8BIT, 0x5041, 0x84}, /* scale is auto enabled */ + {SC2310_8BIT, 0x0100, 0x01}, + {SC2310_TOK_TERM, 0, 0} + +}; + + +/* + * 336x256 30fps 17ms VBlanking 2lane 10Bit (Scaling) + DS from 2564x1956 + */ +static struct sc2310_reg const sc2310_336x256[] = { + {SC2310_8BIT, 0x3501, 0x3d}, + {SC2310_8BIT, 0x3502, 0x00}, + {SC2310_8BIT, 0x3708, 0xe6}, + {SC2310_8BIT, 0x3709, 0xc7}, + {SC2310_8BIT, 0x3806, 0x07}, + {SC2310_8BIT, 0x3807, 0xa3}, + {SC2310_8BIT, 0x3808, 0x01}, + {SC2310_8BIT, 0x3809, 0x50}, + {SC2310_8BIT, 0x380a, 0x01}, + {SC2310_8BIT, 0x380b, 0x00}, + {SC2310_8BIT, 0x380c, 0x0a}, + {SC2310_8BIT, 0x380d, 0x80}, + {SC2310_8BIT, 0x380e, 0x07}, + {SC2310_8BIT, 0x380f, 0xc0}, + {SC2310_8BIT, 0x3811, 0x1E}, + {SC2310_8BIT, 0x3814, 0x31}, + {SC2310_8BIT, 0x3815, 0x31}, + {SC2310_8BIT, 0x3820, 0x04}, + {SC2310_8BIT, 0x3821, 0x1f}, + {SC2310_8BIT, 0x5002, 0x80}, + {SC2310_8BIT, 0x0100, 0x01}, + {SC2310_TOK_TERM, 0, 0} +}; + +/* + * 336x256 30fps 17ms VBlanking 2lane 10Bit (Scaling) + DS from 2368x1956 + */ +static struct sc2310_reg const sc2310_368x304[] = { + {SC2310_8BIT, 0x3501, 0x3d}, + {SC2310_8BIT, 0x3502, 0x00}, + {SC2310_8BIT, 0x3708, 0xe6}, + {SC2310_8BIT, 0x3709, 0xc7}, + {SC2310_8BIT, 0x3808, 0x01}, + {SC2310_8BIT, 0x3809, 0x70}, + {SC2310_8BIT, 0x380a, 0x01}, + {SC2310_8BIT, 0x380b, 0x30}, + {SC2310_8BIT, 0x380c, 0x0a}, + {SC2310_8BIT, 0x380d, 0x80}, + {SC2310_8BIT, 0x380e, 0x07}, + {SC2310_8BIT, 0x380f, 0xc0}, + {SC2310_8BIT, 0x3811, 0x80}, + {SC2310_8BIT, 0x3814, 0x31}, + {SC2310_8BIT, 0x3815, 0x31}, + {SC2310_8BIT, 0x3820, 0x04}, + {SC2310_8BIT, 0x3821, 0x1f}, + {SC2310_8BIT, 0x5002, 0x80}, + {SC2310_8BIT, 0x0100, 0x01}, + {SC2310_TOK_TERM, 0, 0} +}; + +/* + * sc2310_192x160 30fps 17ms VBlanking 2lane 10Bit (Scaling) + DS from 2460x1956 + */ +static struct sc2310_reg const sc2310_192x160[] = { + {SC2310_8BIT, 0x3501, 0x7b}, + {SC2310_8BIT, 0x3502, 0x80}, + {SC2310_8BIT, 0x3708, 0xe2}, + {SC2310_8BIT, 0x3709, 0xc3}, + {SC2310_8BIT, 0x3804, 0x0a}, + {SC2310_8BIT, 0x3805, 0x3f}, + {SC2310_8BIT, 0x3806, 0x07}, + {SC2310_8BIT, 0x3807, 0xA3}, + {SC2310_8BIT, 0x3808, 0x00}, + {SC2310_8BIT, 0x3809, 0xC0}, + {SC2310_8BIT, 0x380a, 0x00}, + {SC2310_8BIT, 0x380b, 0xA0}, + {SC2310_8BIT, 0x380c, 0x0a}, + {SC2310_8BIT, 0x380d, 0x80}, + {SC2310_8BIT, 0x380e, 0x07}, + {SC2310_8BIT, 0x380f, 0xc0}, + {SC2310_8BIT, 0x3811, 0x40}, + {SC2310_8BIT, 0x3813, 0x00}, + {SC2310_8BIT, 0x3814, 0x31}, + {SC2310_8BIT, 0x3815, 0x31}, + {SC2310_8BIT, 0x3820, 0x04}, + {SC2310_8BIT, 0x3821, 0x1f}, + {SC2310_8BIT, 0x5002, 0x80}, + {SC2310_8BIT, 0x0100, 0x01}, + {SC2310_TOK_TERM, 0, 0} +}; + + +static struct sc2310_reg const sc2310_736x496[] = { + {SC2310_8BIT, 0x3501, 0x3d}, + {SC2310_8BIT, 0x3502, 0x00}, + {SC2310_8BIT, 0x3708, 0xe6}, + {SC2310_8BIT, 0x3709, 0xc7}, + {SC2310_8BIT, 0x3803, 0x68}, + {SC2310_8BIT, 0x3806, 0x07}, + {SC2310_8BIT, 0x3807, 0x3b}, + {SC2310_8BIT, 0x3808, 0x02}, + {SC2310_8BIT, 0x3809, 0xe0}, + {SC2310_8BIT, 0x380a, 0x01}, + {SC2310_8BIT, 0x380b, 0xf0}, + {SC2310_8BIT, 0x380c, 0x0a}, /*hts*/ + {SC2310_8BIT, 0x380d, 0x80}, + {SC2310_8BIT, 0x380e, 0x07}, /*vts*/ + {SC2310_8BIT, 0x380f, 0xc0}, + {SC2310_8BIT, 0x3811, 0x08}, + {SC2310_8BIT, 0x3813, 0x02}, + {SC2310_8BIT, 0x3814, 0x31}, + {SC2310_8BIT, 0x3815, 0x31}, + {SC2310_8BIT, 0x3820, 0x04}, + {SC2310_8BIT, 0x3821, 0x1f}, + {SC2310_8BIT, 0x5002, 0x80}, + {SC2310_8BIT, 0x0100, 0x01}, + {SC2310_TOK_TERM, 0, 0} +}; + +/* +static struct sc2310_reg const sc2310_736x496[] = { + {SC2310_8BIT, 0x3501, 0x7b}, + {SC2310_8BIT, 0x3502, 0x00}, + {SC2310_8BIT, 0x3708, 0xe6}, + {SC2310_8BIT, 0x3709, 0xc3}, + {SC2310_8BIT, 0x3803, 0x00}, + {SC2310_8BIT, 0x3806, 0x07}, + {SC2310_8BIT, 0x3807, 0xa3}, + {SC2310_8BIT, 0x3808, 0x02}, + {SC2310_8BIT, 0x3809, 0xe0}, + {SC2310_8BIT, 0x380a, 0x01}, + {SC2310_8BIT, 0x380b, 0xf0}, + {SC2310_8BIT, 0x380c, 0x0d}, + {SC2310_8BIT, 0x380d, 0xb0}, + {SC2310_8BIT, 0x380e, 0x05}, + {SC2310_8BIT, 0x380f, 0xf2}, + {SC2310_8BIT, 0x3811, 0x08}, + {SC2310_8BIT, 0x3813, 0x02}, + {SC2310_8BIT, 0x3814, 0x31}, + {SC2310_8BIT, 0x3815, 0x31}, + {SC2310_8BIT, 0x3820, 0x01}, + {SC2310_8BIT, 0x3821, 0x1f}, + {SC2310_8BIT, 0x5002, 0x00}, + {SC2310_8BIT, 0x0100, 0x01}, + {SC2310_TOK_TERM, 0, 0} +}; +*/ +/* + * 976x556 30fps 8.8ms VBlanking 2lane 10Bit (Scaling) + */ +static struct sc2310_reg const sc2310_976x556[] = { + {SC2310_8BIT, 0x3501, 0x7b}, + {SC2310_8BIT, 0x3502, 0x00}, + {SC2310_8BIT, 0x3708, 0xe2}, + {SC2310_8BIT, 0x3709, 0xc3}, + {SC2310_8BIT, 0x3803, 0xf0}, + {SC2310_8BIT, 0x3806, 0x06}, + {SC2310_8BIT, 0x3807, 0xa7}, + {SC2310_8BIT, 0x3808, 0x03}, + {SC2310_8BIT, 0x3809, 0xd0}, + {SC2310_8BIT, 0x380a, 0x02}, + {SC2310_8BIT, 0x380b, 0x2C}, + {SC2310_8BIT, 0x380c, 0x0a}, + {SC2310_8BIT, 0x380d, 0x80}, + {SC2310_8BIT, 0x380e, 0x07}, + {SC2310_8BIT, 0x380f, 0xc0}, + {SC2310_8BIT, 0x3811, 0x10}, + {SC2310_8BIT, 0x3813, 0x02}, + {SC2310_8BIT, 0x3814, 0x11}, + {SC2310_8BIT, 0x3815, 0x11}, + {SC2310_8BIT, 0x3820, 0x00}, + {SC2310_8BIT, 0x3821, 0x1e}, + {SC2310_8BIT, 0x5002, 0x80}, + {SC2310_8BIT, 0x0100, 0x01}, + {SC2310_TOK_TERM, 0, 0} +}; + +/*DS from 2624x1492*/ +static struct sc2310_reg const sc2310_1296x736[] = { + {SC2310_8BIT, 0x3501, 0x7b}, + {SC2310_8BIT, 0x3502, 0x00}, + {SC2310_8BIT, 0x3708, 0xe2}, + {SC2310_8BIT, 0x3709, 0xc3}, + + {SC2310_8BIT, 0x3800, 0x00}, + {SC2310_8BIT, 0x3801, 0x00}, + {SC2310_8BIT, 0x3802, 0x00}, + {SC2310_8BIT, 0x3803, 0x00}, + + {SC2310_8BIT, 0x3804, 0x0a}, + {SC2310_8BIT, 0x3805, 0x3f}, + {SC2310_8BIT, 0x3806, 0x07}, + {SC2310_8BIT, 0x3807, 0xA3}, + + {SC2310_8BIT, 0x3808, 0x05}, + {SC2310_8BIT, 0x3809, 0x10}, + {SC2310_8BIT, 0x380a, 0x02}, + {SC2310_8BIT, 0x380b, 0xe0}, + + {SC2310_8BIT, 0x380c, 0x0a}, + {SC2310_8BIT, 0x380d, 0x80}, + {SC2310_8BIT, 0x380e, 0x07}, + {SC2310_8BIT, 0x380f, 0xc0}, + + {SC2310_8BIT, 0x3813, 0xE8}, + + {SC2310_8BIT, 0x3814, 0x11}, /*X subsample control*/ + {SC2310_8BIT, 0x3815, 0x11}, /*Y subsample control*/ + {SC2310_8BIT, 0x3820, 0x00}, + {SC2310_8BIT, 0x3821, 0x1e}, + {SC2310_8BIT, 0x5002, 0x00}, + {SC2310_8BIT, 0x5041, 0x84}, /* scale is auto enabled */ + {SC2310_8BIT, 0x0100, 0x01}, + {SC2310_TOK_TERM, 0, 0} +}; + +static struct sc2310_reg const sc2310_1636p_30fps[] = { + {SC2310_8BIT, 0x3501, 0x7b}, + {SC2310_8BIT, 0x3502, 0x00}, + {SC2310_8BIT, 0x3708, 0xe2}, + {SC2310_8BIT, 0x3709, 0xc3}, + {SC2310_8BIT, 0x3803, 0xf0}, + {SC2310_8BIT, 0x3806, 0x06}, + {SC2310_8BIT, 0x3807, 0xa7}, + {SC2310_8BIT, 0x3808, 0x06}, + {SC2310_8BIT, 0x3809, 0x64}, + {SC2310_8BIT, 0x380a, 0x04}, + {SC2310_8BIT, 0x380b, 0x48}, + {SC2310_8BIT, 0x380c, 0x0a}, /*hts*/ + {SC2310_8BIT, 0x380d, 0x80}, + {SC2310_8BIT, 0x380e, 0x07}, /*vts*/ + {SC2310_8BIT, 0x380f, 0xc0}, + {SC2310_8BIT, 0x3811, 0x02}, + {SC2310_8BIT, 0x3813, 0x02}, + {SC2310_8BIT, 0x3814, 0x11}, + {SC2310_8BIT, 0x3815, 0x11}, + {SC2310_8BIT, 0x3820, 0x00}, + {SC2310_8BIT, 0x3821, 0x1e}, + {SC2310_8BIT, 0x5002, 0x80}, + {SC2310_8BIT, 0x0100, 0x01}, + {SC2310_TOK_TERM, 0, 0} +}; + +static struct sc2310_reg const sc2310_1616x1216_30fps[] = { + {SC2310_8BIT, 0x3501, 0x7b}, + {SC2310_8BIT, 0x3502, 0x80}, + {SC2310_8BIT, 0x3708, 0xe2}, + {SC2310_8BIT, 0x3709, 0xc3}, + {SC2310_8BIT, 0x3800, 0x00}, /*{3800,3801} Array X start*/ + {SC2310_8BIT, 0x3801, 0x08}, /* 04 //{3800,3801} Array X start*/ + {SC2310_8BIT, 0x3802, 0x00}, /*{3802,3803} Array Y start*/ + {SC2310_8BIT, 0x3803, 0x04}, /* 00 //{3802,3803} Array Y start*/ + {SC2310_8BIT, 0x3804, 0x0a}, /*{3804,3805} Array X end*/ + {SC2310_8BIT, 0x3805, 0x37}, /* 3b //{3804,3805} Array X end*/ + {SC2310_8BIT, 0x3806, 0x07}, /*{3806,3807} Array Y end*/ + {SC2310_8BIT, 0x3807, 0x9f}, /* a3 //{3806,3807} Array Y end*/ + {SC2310_8BIT, 0x3808, 0x06}, /*{3808,3809} Final output H size*/ + {SC2310_8BIT, 0x3809, 0x50}, /*{3808,3809} Final output H size*/ + {SC2310_8BIT, 0x380a, 0x04}, /*{380a,380b} Final output V size*/ + {SC2310_8BIT, 0x380b, 0xc0}, /*{380a,380b} Final output V size*/ + {SC2310_8BIT, 0x380c, 0x0a}, /*{380c,380d} HTS*/ + {SC2310_8BIT, 0x380d, 0x80}, /*{380c,380d} HTS*/ + {SC2310_8BIT, 0x380e, 0x07}, /*{380e,380f} VTS*/ + {SC2310_8BIT, 0x380f, 0xc0}, /* bc //{380e,380f} VTS*/ + {SC2310_8BIT, 0x3810, 0x00}, /*{3810,3811} windowing X offset*/ + {SC2310_8BIT, 0x3811, 0x10}, /*{3810,3811} windowing X offset*/ + {SC2310_8BIT, 0x3812, 0x00}, /*{3812,3813} windowing Y offset*/ + {SC2310_8BIT, 0x3813, 0x06}, /*{3812,3813} windowing Y offset*/ + {SC2310_8BIT, 0x3814, 0x11}, /*X subsample control*/ + {SC2310_8BIT, 0x3815, 0x11}, /*Y subsample control*/ + {SC2310_8BIT, 0x3820, 0x00}, /*FLIP/Binnning control*/ + {SC2310_8BIT, 0x3821, 0x1e}, /*MIRROR control*/ + {SC2310_8BIT, 0x5002, 0x00}, + {SC2310_8BIT, 0x5041, 0x84}, + {SC2310_8BIT, 0x0100, 0x01}, + {SC2310_TOK_TERM, 0, 0} +}; + + +/* + * 1940x1096 30fps 8.8ms VBlanking 2lane 10bit (Scaling) + */ +static struct sc2310_reg const sc2310_1940x1096[] = { + {SC2310_8BIT, 0x3501, 0x7b}, + {SC2310_8BIT, 0x3502, 0x00}, + {SC2310_8BIT, 0x3708, 0xe2}, + {SC2310_8BIT, 0x3709, 0xc3}, + {SC2310_8BIT, 0x3803, 0xf0}, + {SC2310_8BIT, 0x3806, 0x06}, + {SC2310_8BIT, 0x3807, 0xa7}, + {SC2310_8BIT, 0x3808, 0x07}, + {SC2310_8BIT, 0x3809, 0x94}, + {SC2310_8BIT, 0x380a, 0x04}, + {SC2310_8BIT, 0x380b, 0x48}, + {SC2310_8BIT, 0x380c, 0x0a}, + {SC2310_8BIT, 0x380d, 0x80}, + {SC2310_8BIT, 0x380e, 0x07}, + {SC2310_8BIT, 0x380f, 0xc0}, + {SC2310_8BIT, 0x3811, 0x02}, + {SC2310_8BIT, 0x3813, 0x02}, + {SC2310_8BIT, 0x3814, 0x11}, + {SC2310_8BIT, 0x3815, 0x11}, + {SC2310_8BIT, 0x3820, 0x00}, + {SC2310_8BIT, 0x3821, 0x1e}, + {SC2310_8BIT, 0x5002, 0x80}, + {SC2310_8BIT, 0x0100, 0x01}, + {SC2310_TOK_TERM, 0, 0} +}; + +static struct sc2310_reg const sc2310_2592x1456_30fps[] = { + {SC2310_8BIT, 0x3501, 0x7b}, + {SC2310_8BIT, 0x3502, 0x00}, + {SC2310_8BIT, 0x3708, 0xe2}, + {SC2310_8BIT, 0x3709, 0xc3}, + {SC2310_8BIT, 0x3800, 0x00}, + {SC2310_8BIT, 0x3801, 0x00}, + {SC2310_8BIT, 0x3802, 0x00}, + {SC2310_8BIT, 0x3803, 0xf0}, + {SC2310_8BIT, 0x3804, 0x0a}, + {SC2310_8BIT, 0x3805, 0x3f}, + {SC2310_8BIT, 0x3806, 0x06}, + {SC2310_8BIT, 0x3807, 0xa4}, + {SC2310_8BIT, 0x3808, 0x0a}, + {SC2310_8BIT, 0x3809, 0x20}, + {SC2310_8BIT, 0x380a, 0x05}, + {SC2310_8BIT, 0x380b, 0xb0}, + {SC2310_8BIT, 0x380c, 0x0a}, + {SC2310_8BIT, 0x380d, 0x80}, + {SC2310_8BIT, 0x380e, 0x07}, + {SC2310_8BIT, 0x380f, 0xc0}, + {SC2310_8BIT, 0x3811, 0x10}, + {SC2310_8BIT, 0x3813, 0x00}, + {SC2310_8BIT, 0x3814, 0x11}, + {SC2310_8BIT, 0x3815, 0x11}, + {SC2310_8BIT, 0x3820, 0x00}, + {SC2310_8BIT, 0x3821, 0x1e}, + {SC2310_8BIT, 0x5002, 0x00}, + {SC2310_TOK_TERM, 0, 0} +}; + +static struct sc2310_reg const sc2310_2576x1456_30fps[] = { + {SC2310_8BIT, 0x3501, 0x7b}, + {SC2310_8BIT, 0x3502, 0x00}, + {SC2310_8BIT, 0x3708, 0xe2}, + {SC2310_8BIT, 0x3709, 0xc3}, + {SC2310_8BIT, 0x3800, 0x00}, + {SC2310_8BIT, 0x3801, 0x00}, + {SC2310_8BIT, 0x3802, 0x00}, + {SC2310_8BIT, 0x3803, 0xf0}, + {SC2310_8BIT, 0x3804, 0x0a}, + {SC2310_8BIT, 0x3805, 0x3f}, + {SC2310_8BIT, 0x3806, 0x06}, + {SC2310_8BIT, 0x3807, 0xa4}, + {SC2310_8BIT, 0x3808, 0x0a}, + {SC2310_8BIT, 0x3809, 0x10}, + {SC2310_8BIT, 0x380a, 0x05}, + {SC2310_8BIT, 0x380b, 0xb0}, + {SC2310_8BIT, 0x380c, 0x0a}, + {SC2310_8BIT, 0x380d, 0x80}, + {SC2310_8BIT, 0x380e, 0x07}, + {SC2310_8BIT, 0x380f, 0xc0}, + {SC2310_8BIT, 0x3811, 0x18}, + {SC2310_8BIT, 0x3813, 0x00}, + {SC2310_8BIT, 0x3814, 0x11}, + {SC2310_8BIT, 0x3815, 0x11}, + {SC2310_8BIT, 0x3820, 0x00}, + {SC2310_8BIT, 0x3821, 0x1e}, + {SC2310_8BIT, 0x5002, 0x00}, + {SC2310_TOK_TERM, 0, 0} +}; + +/* + * 2592x1944 30fps 0.6ms VBlanking 2lane 10Bit + */ +static struct sc2310_reg const sc2310_2592x1944_30fps[] = { + {SC2310_8BIT, 0x3501, 0x7b}, + {SC2310_8BIT, 0x3502, 0x00}, + {SC2310_8BIT, 0x3708, 0xe2}, + {SC2310_8BIT, 0x3709, 0xc3}, + {SC2310_8BIT, 0x3803, 0x00}, + {SC2310_8BIT, 0x3806, 0x07}, + {SC2310_8BIT, 0x3807, 0xa3}, + {SC2310_8BIT, 0x3808, 0x0a}, + {SC2310_8BIT, 0x3809, 0x20}, + {SC2310_8BIT, 0x380a, 0x07}, + {SC2310_8BIT, 0x380b, 0x98}, + {SC2310_8BIT, 0x380c, 0x0a}, + {SC2310_8BIT, 0x380d, 0x80}, + {SC2310_8BIT, 0x380e, 0x07}, + {SC2310_8BIT, 0x380f, 0xc0}, + {SC2310_8BIT, 0x3811, 0x10}, + {SC2310_8BIT, 0x3813, 0x00}, + {SC2310_8BIT, 0x3814, 0x11}, + {SC2310_8BIT, 0x3815, 0x11}, + {SC2310_8BIT, 0x3820, 0x00}, + {SC2310_8BIT, 0x3821, 0x1e}, + {SC2310_8BIT, 0x5002, 0x00}, + {SC2310_8BIT, 0x0100, 0x01}, + {SC2310_TOK_TERM, 0, 0} +}; + +/* + * 11:9 Full FOV Output, expected FOV Res: 2346x1920 + * ISP Effect Res: 1408x1152 + * Sensor out: 1424x1168, DS From: 2380x1952 + * + * WA: Left Offset: 8, Hor scal: 64 + */ +static struct sc2310_reg const sc2310_1424x1168_30fps[] = { + {SC2310_8BIT, 0x3501, 0x3b}, /* long exposure[15:8] */ + {SC2310_8BIT, 0x3502, 0x80}, /* long exposure[7:0] */ + {SC2310_8BIT, 0x3708, 0xe2}, + {SC2310_8BIT, 0x3709, 0xc3}, + {SC2310_8BIT, 0x3800, 0x00}, /* TIMING_X_ADDR_START */ + {SC2310_8BIT, 0x3801, 0x50}, /* 80 */ + {SC2310_8BIT, 0x3802, 0x00}, /* TIMING_Y_ADDR_START */ + {SC2310_8BIT, 0x3803, 0x02}, /* 2 */ + {SC2310_8BIT, 0x3804, 0x09}, /* TIMING_X_ADDR_END */ + {SC2310_8BIT, 0x3805, 0xdd}, /* 2525 */ + {SC2310_8BIT, 0x3806, 0x07}, /* TIMING_Y_ADDR_END */ + {SC2310_8BIT, 0x3807, 0xa1}, /* 1953 */ + {SC2310_8BIT, 0x3808, 0x05}, /* TIMING_X_OUTPUT_SIZE */ + {SC2310_8BIT, 0x3809, 0x90}, /* 1424 */ + {SC2310_8BIT, 0x380a, 0x04}, /* TIMING_Y_OUTPUT_SIZE */ + {SC2310_8BIT, 0x380b, 0x90}, /* 1168 */ + {SC2310_8BIT, 0x380c, 0x0a}, /* TIMING_HTS */ + {SC2310_8BIT, 0x380d, 0x80}, + {SC2310_8BIT, 0x380e, 0x07}, /* TIMING_VTS */ + {SC2310_8BIT, 0x380f, 0xc0}, + {SC2310_8BIT, 0x3810, 0x00}, /* TIMING_ISP_X_WIN */ + {SC2310_8BIT, 0x3811, 0x02}, /* 2 */ + {SC2310_8BIT, 0x3812, 0x00}, /* TIMING_ISP_Y_WIN */ + {SC2310_8BIT, 0x3813, 0x00}, /* 0 */ + {SC2310_8BIT, 0x3814, 0x11}, /* TIME_X_INC */ + {SC2310_8BIT, 0x3815, 0x11}, /* TIME_Y_INC */ + {SC2310_8BIT, 0x3820, 0x00}, + {SC2310_8BIT, 0x3821, 0x1e}, + {SC2310_8BIT, 0x5002, 0x00}, + {SC2310_8BIT, 0x5041, 0x84}, /* scale is auto enabled */ + {SC2310_8BIT, 0x0100, 0x01}, + {SC2310_TOK_TERM, 0, 0} +}; + +/* + * 3:2 Full FOV Output, expected FOV Res: 2560x1706 + * ISP Effect Res: 720x480 + * Sensor out: 736x496, DS From 2616x1764 + */ +static struct sc2310_reg const sc2310_736x496_30fps[] = { + {SC2310_8BIT, 0x3501, 0x3b}, /* long exposure[15:8] */ + {SC2310_8BIT, 0x3502, 0x80}, /* long exposure[7:0] */ + {SC2310_8BIT, 0x3708, 0xe2}, + {SC2310_8BIT, 0x3709, 0xc3}, + {SC2310_8BIT, 0x3800, 0x00}, /* TIMING_X_ADDR_START */ + {SC2310_8BIT, 0x3801, 0x02}, /* 2 */ + {SC2310_8BIT, 0x3802, 0x00}, /* TIMING_Y_ADDR_START */ + {SC2310_8BIT, 0x3803, 0x62}, /* 98 */ + {SC2310_8BIT, 0x3804, 0x0a}, /* TIMING_X_ADDR_END */ + {SC2310_8BIT, 0x3805, 0x3b}, /* 2619 */ + {SC2310_8BIT, 0x3806, 0x07}, /* TIMING_Y_ADDR_END */ + {SC2310_8BIT, 0x3807, 0x43}, /* 1859 */ + {SC2310_8BIT, 0x3808, 0x02}, /* TIMING_X_OUTPUT_SIZE */ + {SC2310_8BIT, 0x3809, 0xe0}, /* 736 */ + {SC2310_8BIT, 0x380a, 0x01}, /* TIMING_Y_OUTPUT_SIZE */ + {SC2310_8BIT, 0x380b, 0xf0}, /* 496 */ + {SC2310_8BIT, 0x380c, 0x0a}, /* TIMING_HTS */ + {SC2310_8BIT, 0x380d, 0x80}, + {SC2310_8BIT, 0x380e, 0x07}, /* TIMING_VTS */ + {SC2310_8BIT, 0x380f, 0xc0}, + {SC2310_8BIT, 0x3810, 0x00}, /* TIMING_ISP_X_WIN */ + {SC2310_8BIT, 0x3811, 0x02}, /* 2 */ + {SC2310_8BIT, 0x3812, 0x00}, /* TIMING_ISP_Y_WIN */ + {SC2310_8BIT, 0x3813, 0x00}, /* 0 */ + {SC2310_8BIT, 0x3814, 0x11}, /* TIME_X_INC */ + {SC2310_8BIT, 0x3815, 0x11}, /* TIME_Y_INC */ + {SC2310_8BIT, 0x3820, 0x00}, + {SC2310_8BIT, 0x3821, 0x1e}, + {SC2310_8BIT, 0x5002, 0x00}, + {SC2310_8BIT, 0x5041, 0x84}, /* scale is auto enabled */ + {SC2310_8BIT, 0x0100, 0x01}, + {SC2310_TOK_TERM, 0, 0} +}; + +static struct sc2310_reg const sc2310_2576x1936_30fps[] = { + {SC2310_8BIT, 0x3501, 0x7b}, + {SC2310_8BIT, 0x3502, 0x00}, + {SC2310_8BIT, 0x3708, 0xe2}, + {SC2310_8BIT, 0x3709, 0xc3}, + {SC2310_8BIT, 0x3803, 0x00}, + {SC2310_8BIT, 0x3806, 0x07}, + {SC2310_8BIT, 0x3807, 0xa3}, + {SC2310_8BIT, 0x3808, 0x0a}, + {SC2310_8BIT, 0x3809, 0x10}, + {SC2310_8BIT, 0x380a, 0x07}, + {SC2310_8BIT, 0x380b, 0x90}, + {SC2310_8BIT, 0x380c, 0x0a}, + {SC2310_8BIT, 0x380d, 0x80}, + {SC2310_8BIT, 0x380e, 0x07}, + {SC2310_8BIT, 0x380f, 0xc0}, + {SC2310_8BIT, 0x3811, 0x18}, + {SC2310_8BIT, 0x3813, 0x00}, + {SC2310_8BIT, 0x3814, 0x11}, + {SC2310_8BIT, 0x3815, 0x11}, + {SC2310_8BIT, 0x3820, 0x00}, + {SC2310_8BIT, 0x3821, 0x1e}, + {SC2310_8BIT, 0x5002, 0x00}, + {SC2310_8BIT, 0x0100, 0x01}, + {SC2310_TOK_TERM, 0, 0} +}; + +struct sc2310_resolution sc2310_res_preview[] = { + { + .desc = "sc2310_736x496_30fps", + .width = 736, + .height = 496, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc2310_736x496_30fps, + }, + { + .desc = "sc2310_1616x1216_30fps", + .width = 1616, + .height = 1216, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc2310_1616x1216_30fps, + }, + { + .desc = "sc2310_5M_30fps", + .width = 2576, + .height = 1456, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc2310_2576x1456_30fps, + }, + { + .desc = "sc2310_5M_30fps", + .width = 2576, + .height = 1936, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc2310_2576x1936_30fps, + }, +}; +#define N_RES_PREVIEW (ARRAY_SIZE(sc2310_res_preview)) + +struct sc2310_resolution sc2310_res_still[] = { + { + .desc = "sc2310_736x496_30fps", + .width = 736, + .height = 496, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc2310_736x496_30fps, + }, + { + .desc = "sc2310_1424x1168_30fps", + .width = 1424, + .height = 1168, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc2310_1424x1168_30fps, + }, + { + .desc = "sc2310_1616x1216_30fps", + .width = 1616, + .height = 1216, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc2310_1616x1216_30fps, + }, + { + .desc = "sc2310_5M_30fps", + .width = 2592, + .height = 1456, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc2310_2592x1456_30fps, + }, + { + .desc = "sc2310_5M_30fps", + .width = 2592, + .height = 1944, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc2310_2592x1944_30fps, + }, +}; +#define N_RES_STILL (ARRAY_SIZE(sc2310_res_still)) + +struct sc2310_resolution sc2310_res_video[] = { + { + .desc = "sc2310_736x496_30fps", + .width = 736, + .height = 496, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 1, + .regs = sc2310_736x496, + }, + { + .desc = "sc2310_336x256_30fps", + .width = 336, + .height = 256, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 1, + .regs = sc2310_336x256, + }, + { + .desc = "sc2310_368x304_30fps", + .width = 368, + .height = 304, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 1, + .regs = sc2310_368x304, + }, + { + .desc = "sc2310_192x160_30fps", + .width = 192, + .height = 160, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 1, + .regs = sc2310_192x160, + }, + { + .desc = "sc2310_1296x736_30fps", + .width = 1296, + .height = 736, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 0, + .regs = sc2310_1296x736, + }, + { + .desc = "sc2310_1296x976_30fps", + .width = 1296, + .height = 976, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 2, + .bin_factor_y = 2, + .bin_mode = 0, + .regs = sc2310_1296x976, + }, + { + .desc = "sc2310_1636P_30fps", + .width = 1636, + .height = 1096, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc2310_1636p_30fps, + }, + { + .desc = "sc2310_1080P_30fps", + .width = 1940, + .height = 1096, + .fps = 30, + .pix_clk_freq = 160, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc2310_1940x1096, + }, + { + .desc = "sc2310_5M_30fps", + .width = 2592, + .height = 1456, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc2310_2592x1456_30fps, + }, + { + .desc = "sc2310_5M_30fps", + .width = 2592, + .height = 1944, + .pix_clk_freq = 160, + .fps = 30, + .used = 0, + .pixels_per_line = 2688, + .lines_per_frame = 1984, + .bin_factor_x = 1, + .bin_factor_y = 1, + .bin_mode = 0, + .regs = sc2310_2592x1944_30fps, + }, +}; + +#define N_RES_VIDEO (ARRAY_SIZE(sc2310_res_video)) + +static struct sc2310_resolution *sc2310_res = sc2310_res_preview; +static unsigned long N_RES = N_RES_PREVIEW; +#endif +#endif