1f5fbb83fSMauro Carvalho Chehab /* SPDX-License-Identifier: GPL-2.0 */ 29d4fa1a1SMauro Carvalho Chehab /** 39d4fa1a1SMauro Carvalho Chehab Support for Intel Camera Imaging ISP subsystem. 49d4fa1a1SMauro Carvalho Chehab Copyright (c) 2010 - 2015, Intel Corporation. 59d4fa1a1SMauro Carvalho Chehab 69d4fa1a1SMauro Carvalho Chehab This program is free software; you can redistribute it and/or modify it 79d4fa1a1SMauro Carvalho Chehab under the terms and conditions of the GNU General Public License, 89d4fa1a1SMauro Carvalho Chehab version 2, as published by the Free Software Foundation. 99d4fa1a1SMauro Carvalho Chehab 109d4fa1a1SMauro Carvalho Chehab This program is distributed in the hope it will be useful, but WITHOUT 119d4fa1a1SMauro Carvalho Chehab ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 129d4fa1a1SMauro Carvalho Chehab FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 139d4fa1a1SMauro Carvalho Chehab more details. 149d4fa1a1SMauro Carvalho Chehab */ 159d4fa1a1SMauro Carvalho Chehab 169d4fa1a1SMauro Carvalho Chehab #ifndef _IA_CSS_TNR3_TYPES_H 179d4fa1a1SMauro Carvalho Chehab #define _IA_CSS_TNR3_TYPES_H 189d4fa1a1SMauro Carvalho Chehab 199d4fa1a1SMauro Carvalho Chehab /* @file 209d4fa1a1SMauro Carvalho Chehab * CSS-API header file for Temporal Noise Reduction v3 (TNR3) kernel 219d4fa1a1SMauro Carvalho Chehab */ 229d4fa1a1SMauro Carvalho Chehab 239d4fa1a1SMauro Carvalho Chehab /** 249d4fa1a1SMauro Carvalho Chehab * \brief Number of piecewise linear segments. 259d4fa1a1SMauro Carvalho Chehab * \details The parameters to TNR3 are specified as a piecewise linear segment. 269d4fa1a1SMauro Carvalho Chehab * The number of such segments is fixed at 3. 279d4fa1a1SMauro Carvalho Chehab */ 289d4fa1a1SMauro Carvalho Chehab #define TNR3_NUM_SEGMENTS 3 299d4fa1a1SMauro Carvalho Chehab 309d4fa1a1SMauro Carvalho Chehab /* Temporal Noise Reduction v3 (TNR3) configuration. 319d4fa1a1SMauro Carvalho Chehab * The parameter to this kernel is fourfold 329d4fa1a1SMauro Carvalho Chehab * 1. Three piecewise linear graphs (one for each plane) with three segments 339d4fa1a1SMauro Carvalho Chehab * each. Each line graph has Luma values on the x axis and sigma values for 349d4fa1a1SMauro Carvalho Chehab * each plane on the y axis. The three linear segments may have a different 359d4fa1a1SMauro Carvalho Chehab * slope and the point of Luma value which where the slope may change is called 369d4fa1a1SMauro Carvalho Chehab * a "Knee" point. As there are three such segments, four points need to be 379d4fa1a1SMauro Carvalho Chehab * specified each on the Luma axis and the per plane Sigma axis. On the Luma 389d4fa1a1SMauro Carvalho Chehab * axis two points are fixed (namely 0 and maximum luma value - depending on 399d4fa1a1SMauro Carvalho Chehab * ISP bit depth). The other two points are the points where the slope may 409d4fa1a1SMauro Carvalho Chehab * change its value. These two points are called knee points. The four points on 419d4fa1a1SMauro Carvalho Chehab * the per plane sigma axis are also specified at the interface. 429d4fa1a1SMauro Carvalho Chehab * 2. One rounding adjustment parameter for each plane 439d4fa1a1SMauro Carvalho Chehab * 3. One maximum feedback threshold value for each plane 449d4fa1a1SMauro Carvalho Chehab * 4. Selection of the reference frame buffer to be used for noise reduction. 459d4fa1a1SMauro Carvalho Chehab */ 469d4fa1a1SMauro Carvalho Chehab struct ia_css_tnr3_kernel_config { 479d4fa1a1SMauro Carvalho Chehab unsigned int maxfb_y; /** Maximum Feedback Gain for Y */ 489d4fa1a1SMauro Carvalho Chehab unsigned int maxfb_u; /** Maximum Feedback Gain for U */ 499d4fa1a1SMauro Carvalho Chehab unsigned int maxfb_v; /** Maximum Feedback Gain for V */ 509d4fa1a1SMauro Carvalho Chehab unsigned int round_adj_y; /** Rounding Adjust for Y */ 519d4fa1a1SMauro Carvalho Chehab unsigned int round_adj_u; /** Rounding Adjust for U */ 529d4fa1a1SMauro Carvalho Chehab unsigned int round_adj_v; /** Rounding Adjust for V */ 539d4fa1a1SMauro Carvalho Chehab unsigned int knee_y[TNR3_NUM_SEGMENTS - 1]; /** Knee points */ 549d4fa1a1SMauro Carvalho Chehab unsigned int sigma_y[TNR3_NUM_SEGMENTS + 559d4fa1a1SMauro Carvalho Chehab 1]; /** Standard deviation for Y at points Y0, Y1, Y2, Y3 */ 569d4fa1a1SMauro Carvalho Chehab unsigned int sigma_u[TNR3_NUM_SEGMENTS + 579d4fa1a1SMauro Carvalho Chehab 1]; /** Standard deviation for U at points U0, U1, U2, U3 */ 589d4fa1a1SMauro Carvalho Chehab unsigned int sigma_v[TNR3_NUM_SEGMENTS + 599d4fa1a1SMauro Carvalho Chehab 1]; /** Standard deviation for V at points V0, V1, V2, V3 */ 609d4fa1a1SMauro Carvalho Chehab unsigned int 619d4fa1a1SMauro Carvalho Chehab ref_buf_select; /** Selection of the reference buffer */ 629d4fa1a1SMauro Carvalho Chehab }; 639d4fa1a1SMauro Carvalho Chehab 649d4fa1a1SMauro Carvalho Chehab #endif 65