summaryrefslogtreecommitdiff
path: root/include/ia_imaging/shd_public.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/ia_imaging/shd_public.h')
-rw-r--r--include/ia_imaging/shd_public.h160
1 files changed, 160 insertions, 0 deletions
diff --git a/include/ia_imaging/shd_public.h b/include/ia_imaging/shd_public.h
new file mode 100644
index 0000000..0fbaae9
--- /dev/null
+++ b/include/ia_imaging/shd_public.h
@@ -0,0 +1,160 @@
+/*
+ * Copyright (C) 2015 - 2017 Intel Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _SHD_PUBLIC_H_
+#define _SHD_PUBLIC_H_
+
+/** @file
+* CSS-API header file for 2500/Skycam Shading correction (SHD) kernel/accelerator.
+*/
+//#include <type_support.h>
+
+enum {
+ SHD_MIN_GRID_WIDTH = 8,
+ SHD_MIN_GRID_HEIGHT = 8,
+ SHD_MAX_GRID_WIDTH = 73,
+ SHD_MAX_GRID_HEIGHT = 55,
+ SHD_MAX_GRID_SIZE = SHD_MAX_GRID_WIDTH * SHD_MAX_GRID_HEIGHT
+};
+
+struct shd_public_config {
+ /** description: enable shading correction fixed function processing
+ * range: [0 - disable,1 - enable] */
+ unsigned int shd_enable;
+ /** description: gain factor (aka 'gf')
+ * range: U2 [0,1,2] */
+ unsigned int gain_factor;
+};
+
+/**
+* Config struct for 2500/Skycam Shading correction (SHD) kernel/accelerator.
+*
+* general grid limitation:
+* grid total size is larger than (or equal to) frame size
+*/
+struct shd_grid_public_config {
+ /** description: number of grid vertices on the horizontal axis
+ range: [8..73] */
+ unsigned int grid_width;
+ /** description: number of grid vertices on the vertical axis
+ range: [8..56] */
+ unsigned int grid_height;
+ /** description: log2 of each grid cell width
+ range: [3..7] (cell width values [8,16,32,64,128]) */
+ unsigned int block_width;
+ /** description: log2 of each grid cell height
+ range: [3..7] (cell height values [8,16,32,64,128]) */
+ unsigned int block_height;
+ /** description: horizontal offset of the grid in relation to the frame
+ range: [-4096..0] (grid starts left to the frame start)
+ other limitations: x_start%2=0 */
+ signed int x_start;
+ /** description: vertical offset of the grid in relation to the frame
+ range: [-4096..0] (grid starts above the frame start)
+ other limitations: y_start%2=0 */
+ signed int y_start;
+};
+
+struct shd_black_level_public_config {
+ /** description: black level bias value
+ range: S12 [-2048..2047] */
+ signed int bl_R;
+ /** description: black level bias value
+ range: S12 [-2048..2047] */
+ signed int bl_Gr;
+ /** description: black level bias value
+ range: S12 [-2048..2047] */
+ signed int bl_Gb;
+ /** description: black level bias value
+ range: S12 [-2048..2047] */
+ signed int bl_B;
+ /** description: shift-left value for normaliztion factor (aka 'nf')
+ range: [0,1,3,5] */
+ unsigned int normalization_shift;
+};
+
+struct shd_luts_public_config {
+ /**
+ * description: shading factor
+ * range: U12
+ * note 1: refer to shd HAS doc for internal interpretation
+ * note 2: range is not enforced (too much overhead)
+ */
+ unsigned short R[SHD_MAX_GRID_SIZE];
+ /**
+ * description: shading factor
+ * range: U12
+ * note 1: refer to shd HAS doc for internal interpretation
+ * note 2: range is not enforced (too much overhead)
+ */
+ unsigned short Gr[SHD_MAX_GRID_SIZE];
+ /**
+ * description: shading factor
+ * range: U12
+ * note 1: refer to shd HAS doc for internal interpretation
+ * note 2: range is not enforced (too much overhead)
+ */
+ unsigned short Gb[SHD_MAX_GRID_SIZE];
+ /**
+ * description: shading factor
+ * range: U12
+ * note 1: refer to shd HAS doc for internal interpretation
+ * note 2: range is not enforced (too much overhead)
+ */
+ unsigned short B[SHD_MAX_GRID_SIZE];
+};
+
+// OPEN - what about the enable?
+struct shd_kernel_config {
+
+ struct shd_public_config general;
+
+ struct shd_grid_public_config grid;
+
+ struct shd_black_level_public_config black_level;
+
+ struct shd_luts_public_config luts;
+};
+
+struct ia_css_2500_shd_kernel_config {
+ struct shd_kernel_config shd;
+};
+
+/** @brief Print SHD public configuration
+ *
+ * @param cfg The pointer to configuration data
+ * @return None
+ *
+ * Print SHD public configuration.
+ */
+void ia_css_shd_public_cfg_dump(const struct ia_css_2500_shd_kernel_config *cfg);
+
+/** @brief Compare two SHD public configurations
+ *
+ * @param cfg1 The pointer to first configuration data
+ * @param cfg2 The pointer to second configuration data
+ * @param cfg_dump Configurations are printed in case of
+ * mismatch
+ * @return true - match, false - not match
+ *
+ * Compare two SHD public configurations
+ */
+bool ia_css_shd_public_cfg_compare(
+ const struct ia_css_2500_shd_kernel_config *cfg1,
+ const struct ia_css_2500_shd_kernel_config *cfg2,
+ bool cfg_dump);
+
+#endif // _SHD_PUBLIC_H_