////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
// All rights reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file  iqcommondefs.h
/// @brief IQ Interface Input declarations
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef IQCOMMONDEFS_H
#define IQCOMMONDEFS_H

#include "camxincs.h"
#include "chivendortag.h"
#include "abf_3_4_0.h"
#include "abf_3_4_1.h"
#include "abf_4_0_0.h"
#include "abf_4_0_1.h"
#include "aicontrol_1_0_1.h"
#include "aicontrol_1_1_1.h"
#include "aidenoiser_1_0_0.h"
#include "aidenoiser_2_0_0.h"
#include "aidenoiser_2_0_1.h"
#include "aidenoiser_2_1_1.h"
#include "anr_1_0_0.h"
#include "anr_1_0_1.h"
#include "anr_1_2_1.h"
#include "anr_1_4_1.h"
#include "asf_3_0_0.h"
#include "asf_3_2_0.h"
#include "asf_3_3_1.h"
#include "asf_3_4_1.h"
#include "asf_3_5_1.h"
#include "asf_3_0_1.h"
#include "lcac_1_1_0.h"
#include "lcac_1_1_1.h"
#include "bds_1_0.h"
#include "bincorr_1_0_0.h"
#include "bincorr_1_0_1.h"
#include "jbu_1_0_1.h"
#include "bayerhdr_5_1_1.h"
#include "blur_1_0_1.h"
#include "bls_1_2_0.h"
#include "bls_1_2_1.h"
#include "bpcbcc_5_0_0.h"
#include "bpcbcc_5_0_1.h"
#include "bpcabf_4_1_0.h"
#include "bpcabf_4_1_1.h"
#include "eis_1_6_0.h"
#include "cac_2_2_0.h"
#include "cac_2_3_0.h"
#include "cac_2_3_1.h"
#include "cc_1_2_0.h"
#include "cc_1_2_1.h"
#include "cc_1_3_0.h"
#include "compand_2_0_0.h"
#include "csmce_1_1_0.h"
#include "dpp_1_1_1.h"
#include "csmce_1_1_1.h"
#include "cst_1_2_0.h"
#include "cs_2_0_0.h"
#include "cs_2_0_1.h"
#include "cv_1_2_0.h"
#include "cv_1_2_1.h"
#include "cvp_1_0_0.h"
#include "cvp_2_0_0.h"
#include "cvp_2_0_1.h"
#include "decompand_2_0_0.h"
#include "demosaic_3_6_0.h"
#include "demosaic_3_6_1.h"
#include "demosaic_3_7_0.h"
#include "demosaic_3_7_1.h"
#include "demux_1_3_0.h"
#include "demuxblklevel_1_4_0.h"
#include "demuxblklevel_1_4_1.h"
#include "depth_1_0_1.h"
#include "dme_3_0_0.h"
#include "dme_3_0_1.h"
#include "dme_3_1_1.h"
#include "dfssgm_1_2_1.h"
#include "dmmsgm_1_1_1.h"
#include "ds4to1_1_0_0.h"
#include "ds4to1_1_1_0.h"
#include "dsx_1_0_0.h"
#include "dsx_1_0_1.h"
#include "eis_1_5_0.h"
#include "hdr_2_0_0.h"
#include "hdr_3_0_0.h"
#include "hdr_3_0_1.h"
#include "ica_1_0_0.h"
#include "ica_1_0_1.h"
#include "ica_2_0_0.h"
#include "ica_2_0_1.h"
#include "ica_3_0_0.h"
#include "ica_3_3_0.h"
#include "ica_3_2_0.h"
#include "gamma_1_5_0.h"
#include "gamma_1_5_1.h"
#include "gamma_1_6_0.h"
#include "gamma_1_6_1.h"
#include "gce_1_1_0.h"
#include "gce_1_2_0.h"
#include "gce_1_2_1.h"
#include "gic_3_0_0.h"
#include "gic_3_1_0.h"
#include "gic_3_1_1.h"
#include "gic_3_0_1.h"
#include "globalalign_1_1_1.h"
#include "globalalign_1_2_1.h"
#include "gra_1_0_0.h"
#include "gra_1_0_1.h"
#include "gtm_1_0_0.h"
#include "gtm_1_0_1.h"
#include "gtm_1_2_0.h"
#include "gtm_1_2_1.h"
#include "gtm_1_3_0.h"
#include "gtm_1_3_1.h"
#include "gtm_1_3_2.h"
#include "gtmfd_1_3_1.h"
#include "gtmfd_1_3_2.h"
#include "hdr_2_2_0.h"
#include "hdr_2_3_0.h"
#include "hdr_2_2_1.h"
#include "hdr_2_3_1.h"
#include "hdr_4_0_0.h"
#include "hdr_4_0_1.h"
#include "hdr_5_0_0.h"
#include "hdr_5_0_1.h"
#include "hdr10p_1_0_1.h"
#include "ica_4_0_1.h"
#include "ica_4_1_1.h"
#include "ica_4_3_1.h"
#include "ldc_1_1_0.h"
#include "ldc_1_1_1.h"
#include "hnr_1_0_0.h"
#include "hnr_1_0_1.h"
#include "hnr_1_1_1.h"
#include "hme_1_0_1.h"
#include "lenr_1_0_0.h"
#include "lenr_1_0_1.h"
#include "linearization_3_3_0.h"
#include "linearization_3_3_1.h"
#include "linearization_3_4_0.h"
#include "linearization_3_4_1.h"
#include "lsc_3_4_0.h"
#include "lsc_3_4_1.h"
#include "lsc_3_5_0.h"
#include "lsc_3_6_0.h"
#include "lsc_3_6_1.h"
#include "lsc_3_7_1.h"
#include "lsc_4_0_0.h"
#include "lsc_4_1_0.h"
#include "lsc_4_1_1.h"
#include "lscgolden_3_5_1.h"
#include "lsc_4_0_1.h"
#include "lsc_5_0_1.h"
#include "lscgolden_4_0_1.h"
#include "lscgolden_3_6_1.h"
#include "lscgolden_3_7_1.h"
#include "lscgolden_5_0_1.h"
#include "lscgolden_4_1_1.h"
#include "lscgolden_4_2_1.h"
#include "lsc_4_2_1.h"
#include "ltm_1_3_0.h"
#include "ltm_1_3_1.h"
#include "ltm_1_4_0.h"
#include "ltm_1_5_0.h"
#include "ltm_1_5_1.h"
#include "ltm_1_6_0.h"
#include "ltm_1_6_1.h"
#include "ltm_2_0_1.h"
#include "ltm_2_0_2.h"
#include "ltm_1_4_1.h"
#include "nrm_1_0_0.h"
#include "nrm_1_0_1.h"
#include "nrm_1_1_1.h"
#include "video_1_0_0.h"
#include "mf_1_0_1.h"
#include "mf_1_1_0.h"
#include "mf_1_3_1.h"
#include "mrc_1_0_1.h"
#include "nradj_1_0_0.h"
#include "nradj_1_1_0.h"
#include "pdpc_1_1_0.h"
#include "pdpc_1_1_1.h"
#include "pdpc_2_0_0.h"
#include "pdpc_2_0_1.h"
#include "pdpc_3_0_0.h"
#include "pdpc_3_1_0.h"
#include "pdpc_3_1_1.h"
#include "pdpc_3_2_1.h"
#include "pdpc_1_5_1.h"
#include "pdpc_3_0_1.h"
#include "pedestal_1_3_0.h"
#include "pedestal_1_3_1.h"
#include "ppm_1_0_1.h"
#include "qpdpc_1_0_0.h"
#include "qpdpc_1_0_1.h"
#include "qll_1_0_0.h"
#include "qll_2_0_1.h"
#include "qll_1_0_1.h"
#include "qsegnet_1_1_1.h"
#include "rgbhdr_5_0_1.h"
#include "rgbhdr_5_1_1.h"
#include "rgbcompand_2_0_0.h"
#include "rgbdecompand_2_0_0.h"
#include "sblur_1_0_1.h"
#include "sce_1_1_0.h"
#include "sce_1_1_1.h"
#include "sgm_1_0_0.h"
#include "sgm_1_0_1.h"
#include "shdr_1_1_1.h"
#include "shdr_1_2_1.h"
#include "swmfnr_2_0_0.h"
#include "swmfnr_3_0_0.h"
#include "swmctf_1_0_0.h"
#include "swmctf_2_0_0.h"
#include "tdl_1_0_0.h"
#include "tdl_1_0_1.h"
#include "tdl_1_1_1.h"
#include "tintless_2_0_0.h"
#include "tintless_2_3_1.h"
#include "tintless_2_0_1.h"
#include "tf_1_0_0.h"
#include "tf_1_0_1.h"
#include "tf_1_2_1.h"
#include "tf_2_0_0.h"
#include "tf_2_2_1.h"
#include "tf_2_3_1.h"
#include "tf_2_0_1.h"
#include "tf_2_1_1.h"
#include "tmc_1_0_0.h"
#include "tmc_1_1_0.h"
#include "tmc_1_1_1.h"
#include "tmc_1_2_0.h"
#include "tmc_1_3_0.h"
#include "tmc_1_4_1.h"
#include "tmc_1_4_2.h"
#include "upscale_2_0_0.h"
#include "upscale_2_0_1.h"
#include "wb_2_0_0.h"
#include "wb_2_0_1.h"
#include "wb_2_1_1.h"
#include "wnr_2_4_0.h"

#include "remosaic_1_0_0.h"
#include "remosaic_1_0_1.h"
#include "mlremosaic_1_0_1.h"
#include "bgtm_1_0_1.h"
#include "uvg_1_0_1.h"
#include "vse_1_0_1.h"
#include "GeoLib.h"
#include "bltm_1_0_1.h"
#include "bltm_1_1_1.h"
#include "bltm_1_2_1.h"
#include "hdr_5_0_0.h"
#include "demuxblklevel_1_4_0.h"
#include "bds_1_0.h"
#include "bayerhdr_5_3_1.h"
#include "gtm_1_2_0.h"
#include "decompand_2_1_0.h"
#include "csmce_1_1_0.h"
#include "sat_1_0_0.h"
#include "video_1_1_0.h"
#include "video_1_2_1.h"
#include "video_1_1_1.h"
#include "video_1_3_1.h"
#include "videoretouch_1_0_1.h"
#include "dmm_1_0_0.h"
#include "dmm_1_0_1.h"
#include "tf_2_3_1.h"
#include "bayerhdr_5_2_1.h"
#include "chitintlessinterface.h"
#include "chiispstatsdefs.h"
#include "Process_ICA.h"
#include "iqsettingutil.h"
#include "NcLibEva.h"

// Trigger 2.0 header files
#include "cc_1_3_1.h"
#include "cc_1_4_1.h"
#include "abf_2_1_1.h"
#include "demosaic_3_8_1.h"
#include "bdsfour_1_0_1.h"
#include "bds_1_1_1.h"
#include "lsc_3_5_1.h"
#include "bayergamma_1_0_1.h"
#include "demuxblklevel_1_5_1.h"
#include "demuxblklevel_1_6_1.h"
#include "xcfademux_3_0_1.h"
#include "xcfapdpc_2_0_1.h"
#include "xcfaremosaic_2_0_1.h"
#include "xcfabinning_2_0_1.h"
#include "chivendortag.h"
#include "preference_1_0_1.h"

// Kailua
#include "cmc_1_0_0.h"

// Common Definiation
static const UINT32 ROLLOFF_MESH_H_V34                  = 16;  // Note: VFE4 HW is 16
static const UINT32 ROLLOFF_MESH_V_V34                  = 12;  // Note: VFE4 HW is 12
static const UINT32 ROLLOFF_MESH_PT_H_V34               = 17;  // MESH_PT_H = MESH_H + 1
static const UINT32 ROLLOFF_MESH_PT_V_V34               = 13;  // MESH_PT_V = MESH_V + 1
static const UINT32 MESH_ROLLOFF_SIZE = ROLLOFF_MESH_PT_H_V34 * ROLLOFF_MESH_PT_V_V34;
static const UINT32 ROLLOFF_MESH_CHANNEL_COUNT          = 4;   // for 4 channels: 0->R, 1->Gr, 2->Gb, 3->B
static const UINT32 LSC_INTERMEDIATE_DUMP_CH_COUNT      = 256; // intermediate mesh table dump char count

/// @brief: This enumerator is for gamma look up tables
enum GammaLUTChannel
{
    GammaLUTChannel0 = 0, ///< G channel
    GammaLUTChannel1 = 1, ///< B channel
    GammaLUTChannel2 = 2, ///< R channel
    GammaLUTMax      = 3, ///< Max LUTs
};

/// @brief Camera Titan family Information
enum ISPVersion
{
    ISP175 = 0x00010705,    ///< Titan version
    ISP170 = 0x00010700,    ///< Titan version
    ISP160 = 0x00010600,    ///< Titan version
    ISP150 = 0x00010500,    ///< Titan version
    ISP345 = 0x00030405,    ///< Spectrum 345
    ISP480 = 0x00040800,    ///< Spectrum 480
    ISP520 = 0x00050200,    ///< Spectrum 520
    ISP540 = 0x00050400,    ///< Spectrum 540
    ISP570 = 0x00050700,    ///< Spectrum 570
    ISP580 = 0x00050800,    ///< Spectrum 580
    ISP640 = 0x00060400,    ///< Spectrum 640
    ISP650 = 0x00060500,    ///< Spectrum 650
    ISP660 = 0x00060600,    ///< Spectrum 660
    ISP670 = 0x00070700,    ///< Spectrum 670
    ISP680 = 0x00060800,    ///< Spectrum 680
    ISP690 = 0x00060900,    ///< Spectrum 690
    ISP692 = 0x00060902,    ///< Spectrum 692
    ISP780 = 0x00070800,    ///< Spectrum 780
    ISP880 = 0x00080800,    ///< Spectrum 880
    ISP980 = 0x00090800,    ///< Spectrum 980
};

enum FlashStatus
{
    NonFlash  = 0,      ///< No Flash
    PreFlash  = 1,      ///< PreFlash
    MainFlash = 2,      ///< MainFlash
};

static const UINT32 MaxTrigger2dimension             = 6;
static const UINT32 LinearizationMaxLUT              = 1;
static const UINT32 BPSLinearization34LUTEntries     = 36;    ///< 9 slopes for each of the 4 channels (R/RG/BG/B)
static const UINT32 BPSLinearization34LUTLengthDword = (BPSLinearization34LUTEntries);
static const UINT32 BPSLinearization34LUTLengthBytes = BPSLinearization34LUTLengthDword * sizeof(UINT32);

static const UINT32 BPSLinearization341LUTEntries     = 36;    ///< 9 slopes for each of the 4 channels (R/RG/BG/B)
static const UINT32 BPSLinearization341LUTLengthDword = (BPSLinearization34LUTEntries);
static const UINT32 BPSLinearization341LUTLengthBytes = BPSLinearization34LUTLengthDword * sizeof(UINT32);

static const UINT32 RedLUTPedestal  = 0x1;
static const UINT32 BlueLUTPedestal = 0x2;
static const UINT32 MaxPedestalLUT  = 2;

static const UINT32 NumberOfGammaEntriesPerLUT   = 64;   // Number of Gamma entries per LUT
static const UINT32 NumberOfUVGammaEntriesPerLUT = 128;  // Number of UVGamma entries per LUT

static const UINT32 GammaSizeLUTInBytes    = NumberOfGammaEntriesPerLUT * sizeof(UINT32);
static const UINT32 GammalLUTBufferSize    = GammaSizeLUTInBytes * GammaLUTMax;

static const UINT32 GAMMA15LUT_NUM_ENTRIES_PER_CHANNEL = 256;
static const UINT32 Gamma15LUTNumEntriesPerChannelSize = GAMMA15LUT_NUM_ENTRIES_PER_CHANNEL* sizeof(UINT32);
static const UINT32 MaxGamma15LUTNumEntries            = GAMMA15LUT_NUM_ENTRIES_PER_CHANNEL* GammaLUTMax;
static const UINT32 Gamma15LUTEntrySize                = sizeof(UINT32);
static const UINT32 Gamma15LUTBufferSize               = (MaxGamma15LUTNumEntries * Gamma15LUTEntrySize);
static const UINT32 Gamma15LUTBufferDWordSize          = Gamma15LUTBufferSize / sizeof(UINT32);

static const UINT32 ALSC_BG_GRID_H                       = 64;
static const UINT32 ALSC_BG_GRID_V                       = 48;
static const UINT32 ALSC_SCRATCH_BUFFER_SIZE_IN_DWORD    = (ALSC_BG_GRID_H * ALSC_BG_GRID_V * ALSC_BUFFER_LIST_SIZE);
static const FLOAT  ALSC_TRACE_PERCENTAGE                = 0.4f;

// Common IQ shared const values
static const UINT16 LTM15_LUT3D_W = 13;
static const UINT16 LTM15_LUT3D_H = 10;

static const UINT32 UVGamma101LUTMax             = 1;
static const UINT32 UVGamma101LUTNumEntries      = 128;
static const UINT32 UVGamma101LUTEntrySize       = sizeof(UINT32);
static const UINT32 UVGamma101LUTBufferSize      = (UVGamma101LUTMax        *
                                                    UVGamma101LUTNumEntries *
                                                    UVGamma101LUTEntrySize);
static const UINT32 UVGamma101LUTBufferDWordSize = UVGamma101LUTBufferSize / sizeof(UINT32);

const  UINT8 MaxNumLUT                       = 2;
const  UINT8 NumAnchorBase                   = 6;
const  UINT8 NumSlopeShift                   = 6;
const  UINT8 NumNoiseScale                   = 4;

static const UINT32 MaxGICNoiseLUT           = 1;
static const UINT32 BPSGIC30DMILengthDword   = 64;
static const UINT32 BPSGICNoiseLUTBufferSize = BPSGIC30DMILengthDword * sizeof(UINT32);

static const UINT32 BPSGIC301DMILengthDword   = 64;
static const UINT32 BPSGIC301NoiseLUTBufferSize = BPSGIC301DMILengthDword * sizeof(UINT32);

static const UINT32 MaxGIC311NoiseLUT        = 1;
static const UINT32 GIC311LUTNumEntries      = 64;
static const UINT32 GIC311DMILengthDword     = (GIC311LUTNumEntries * sizeof(INT64)) / sizeof(UINT32);
static const UINT32 GIC311NoiseLUTBufferSize = GIC311DMILengthDword * sizeof(UINT32);

static const UINT32 GTM10LUT                 = 0x1;
static const UINT32 MaxGTM10LUT              = 1;
static const UINT32 BPSGTM10LUTTableSize     = 64; // DMI table size
static const UINT32 BPSGTM10DMILengthDword   = (BPSGTM10LUTTableSize * sizeof(UINT64)) / sizeof(UINT32);
static const UINT32 BPSGTM10DMILengthInBytes = (BPSGTM10DMILengthDword * sizeof(UINT32));

static const UINT32 GTM101LUT                 = 0x1;
static const UINT32 MaxGTM101LUT              = 1;
static const UINT32 BPSGTM101LUTTableSize     = 64; // DMI table size
static const UINT32 BPSGTM101DMILengthDword   = (BPSGTM101LUTTableSize * sizeof(UINT64)) / sizeof(UINT32);
static const UINT32 BPSGTM101DMILengthInBytes = (BPSGTM101DMILengthDword * sizeof(UINT32));


static const UINT32 GTM131LUT                = 0x1;
static const UINT32 MaxGTM131LUT             = 1;
static const UINT32 GTM131LUTTableSize       = 256; // DMI table size
static const UINT32 GTM131DMILengthDword     = (GTM131LUTTableSize * sizeof(UINT64)) / sizeof(UINT32);
static const UINT32 GTM131DMILengthInBytes   = (GTM131DMILengthDword * sizeof(UINT32));

static const UINT32 GTM132LUT                = 0x1;
static const UINT32 MaxGTM132LUT             = 1;
static const UINT32 GTM132LUTTableSize       = 256; // DMI table size
static const UINT32 GTM132DMILengthDword     = (GTM132LUTTableSize * sizeof(UINT64)) / sizeof(UINT32);
static const UINT32 GTM132DMILengthInBytes   = (GTM132DMILengthDword * sizeof(UINT32));

static const UINT32 MaxABFLUT                    = 4;
static const UINT32 BPSABF40NoiseLUTSizeDword    = 64;  // 64 entries in the DMI table
static const UINT32 BPSABF40NoiseLUTSize         = (BPSABF40NoiseLUTSizeDword * sizeof(UINT32));
static const UINT32 BPSABF40ActivityLUTSizeDword = 32;  // 32 entries in the DMI table
static const UINT32 BPSABF40ActivityLUTSize      = (BPSABF40ActivityLUTSizeDword * sizeof(UINT32));
static const UINT32 BPSABF40DarkLUTSizeDword     = 42;  // 48 entries in the DMI table
static const UINT32 BPSABF40DarkLUTSize          = (BPSABF40DarkLUTSizeDword * sizeof(UINT32));

static const UINT32 BPSABF401NoiseLUTSizeDword    = 64;  // 64 entries in the DMI table
static const UINT32 BPSABF401NoiseLUTSize         = (BPSABF401NoiseLUTSizeDword * sizeof(UINT32));
static const UINT32 BPSABF401ActivityLUTSizeDword = 32;  // 32 entries in the DMI table
static const UINT32 BPSABF401ActivityLUTSize      = (BPSABF401ActivityLUTSizeDword * sizeof(UINT32));
static const UINT32 BPSABF401DarkLUTSizeDword     = 42;  // 48 entries in the DMI table
static const UINT32 BPSABF401DarkLUTSize          = (BPSABF401DarkLUTSizeDword * sizeof(UINT32));


static const UINT32 H_GRID                  = 25;
static const UINT32 S_GRID                  = 16;
static const UINT32 GammaMask               = 0x3FF; // last 10 bits are 1s
static const UINT32 MAX_NUM_PASSES          = 4;

static const UINT32 MAX_CAMIF_PDAF_PIXELS   = 64*64;
static const UINT32 BPSPDPC20DMILengthDword = 64;

static const UINT32 MAX_NR_Y_ADJUST_RANGE               = 4096; // max auto noise reduction ajust Y range
static const UINT32 MAX_NR_CBCR_ADJUST_RANGE            = 1024; // max auto noise reduction ajust CbCr range

// CC Default Saturation
static const UINT32 DefaultSaturation           = 5;
static const UINT32 ANRMaxNonLeafNode           = 255;
static const UINT32 TFMaxNonLeafNode            = 255;

static const UINT32 QPDPC10InterpolationLevel   = 4;
static const UINT32 QPDPC10MaximumNode          = 15;
static const UINT32 QPDPC10MaxNonLeafNode       = 7;

static const UINT32 REMOSAIC10InterpolationLevel = 4;
static const UINT32 REMOSAIC10MaximumNode        = 15;
static const UINT32 REMOSAIC10MaxNonLeafNode     = 7;

static const UINT32 HDR50InterpolationLevel = 4;
static const UINT32 HDR50MaximumNode        = 15;
static const UINT32 HDR50MaximumNonLeafNode = 7;

static const UINT32 HDR10P10InterpolationLevel = 4;
static const UINT32 HDR10P10MaximumNode = 15;
static const UINT32 HDR10P10MaximumNonLeafNode = 7;

static const UINT16 HDR_MAC_HIGHLIGHT_DTH_LOG2_MIN      = 2;
static const UINT16 HDR_MAC_HIGHLIGHT_DTH_LOG2_MAX      = 14;
static const UINT16 HDR_MAC_MOTION_DTH_LOG2_MIN         = 2;
static const UINT16 HDR_MAC_MOTION_DTH_LOG2_MAX         = 14;
static const UINT16 HDR_MAC_MOTION_G2_W_MIN_MIN         = 0;
static const UINT16 HDR_MAC_MOTION_G2_W_MIN_MAX         = 16;
static const UINT16 HDR_MAC_MOTION_G2_W_MAX_MIN         = 0;
static const UINT16 HDR_MAC_MOTION_G2_W_MAX_MAX         = 16;

static const UINT16 HDR_REC_BLENDING_W_MIN_MIN          = 0;
static const UINT16 HDR_REC_BLENDING_W_MIN_MAX          = 16;
static const UINT16 HDR_REC_BLENDING_W_MAX_MIN          = 0;
static const UINT16 HDR_REC_BLENDING_W_MAX_MAX          = 16;

static const UINT32 Linearization33MaxmiumNode          = 91; // (1 + 1 * 2 + 2 * 2 + 4 * 3 + 12 * 2 + 24 * 2)
static const UINT32 Linearization33MaxmiumNonLeafNode   = 43; // (1 + 1 * 2 + 2 * 2 + 4 * 3 + 12 * 2)
static const UINT32 Linearization33InterpolationLevel   = 6;

static const UINT32 ABF34MaxmiumNode                    = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2);
static const UINT32 ABF34MaxmiumNonLeafNode             = 7;  // (1 + 1 * 2 + 2 * 2);
static const UINT32 ABF34InterpolationLevel             = 4;

static const UINT32 BPCABF41MaxmiumNode                 = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2);
static const UINT32 BPCABF41MaxmiumNonLeafNode          = 7;  // (1 + 1 * 2 + 2 * 2);
static const UINT32 BPCABF41InterpolationLevel          = 4;

static const UINT32 BPCBCC50MaxmiumNode                 = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2);
static const UINT32 BPCBCC50MaxmiumNonLeafNode          = 7;  // (1 + 1 * 2 + 2 * 2);
static const UINT32 BPCBCC50InterpolationLevel          = 4;

static const UINT32 CC12MaxmiumNode                     = 91; // (1 + 1 * 2 + 2 * 2 +  4 * 3 + 12 * 2 + 24 * 2)
static const UINT32 CC12MaxmiumNonLeafNode              = 43; // (1 + 1 * 2 + 2 * 2 +  4 * 3 + 12 * 2)
static const UINT32 CC12InterpolationLevel              = 6;

static const UINT32 HDR20MaxmiumNode                    = 7;  // (1 + 1 * 2 + 2 * 2);
static const UINT32 HDR20MaxmiumNoNLeafNode             = 3;  // (1 + 1 * 2);
static const UINT32 HDR20InterpolationLevel             = 3;

static const UINT32 HDR23MaxmiumNode                    = 7;  // (1 + 1 * 2 + 2 * 2)
static const UINT32 HDR23MaxmiumNonLeafNode             = 3;  // (1 + 1 * 2)
static const UINT32 HDR23InterpolationLevel             = 3;

static const UINT32 MAX_ADRC_LUT_KNEE_LENGTH_TMC10      = 4;
static const UINT32 MAX_ADRC_LUT_KNEE_LENGTH_TMC11      = 5;
static const UINT32 MAX_ADRC_LUT_KNEE_LENGTH_TMC12      = 5;
static const UINT32 MAX_ADRC_LUT_KNEE_LENGTH_TMC13      = 5;
static const UINT32 MAX_ADRC_LUT_KNEE_LENGTH_TMC141     = 7;
static const UINT32 MAX_ADRC_LUT_PCHIP_COEF_SIZE_TMC141 = 15;

static const UINT32 MAX_ADRC_LUT_PCHIP_COEF_SIZE_OEM_TMC = 64 * 3;
static const UINT32 MAX_TMC_KNEE_POINTS_NUM              = 64;

static const UINT32 MAX_ADRC_LUT_COEF_SIZE              = 6;
static const UINT32 MAX_ADRC_LUT_PCHIP_COEF_SIZE        = 9;
static const UINT32 MAX_ADRC_CONTRAST_CURVE             = 1024;
static const UINT32 MAX_ADRC_HIST_BIN_NUM               = 1024;
static const UINT32 TMC14_HIST_BIN_NUM                  = 1024;
static const UINT32 TMC142_HIST_BIN_NUM                 = 1024;
static const UINT32 TMC14_HIST_BIN_NUM_MIMAS            = 256;

static const UINT32 TMC13MaxInputs                      = 2;

static const UINT32 PDPC11MaxmiumNode                   = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2)
static const UINT32 PDPC11MaxmiumNonLeafNode            = 7;  // (1 + 1 * 2 + 2 * 2)
static const UINT32 PDPC11InterpolationLevel            = 4;

static const UINT32 TDL10MaxNode                        = 91; // (1 + 1 * 2 + 2 * 2 + 4 * 3 + 12 * 2 + 24 * 2)
static const UINT32 TDL10MaxNonLeafNode                 = 43; // (1 + 1 * 2 + 2 * 2 + 4 * 3 + 12 * 2)
static const UINT32 TDL10InterpolationLevel             = 6;

static const UINT32 CS20MaxmiumNode                     = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2)
static const UINT32 CS20MaxmiumNonLeafNode              = 7;  // (1 + 1 * 2 + 2 * 2)
static const UINT32 CS20InterpolationLevel              = 4;

static const UINT32 ASF30MaxNode                        = 31; // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 2)
static const UINT32 ASF30MaxNoLeafNode                  = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2)
static const UINT32 ASF30InterpolationLevel             = 5;  // Core->TotalScaleRatio->DRCGAIN->HDRAEC->AEC

static const UINT32 ASF32MaxNode                        = 31; // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 2)
static const UINT32 ASF32MaxNoLeafNode                  = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2)
static const UINT32 ASF32InterpolationLevel             = 5;  // Core->TotalScaleRatio->DRCGAIN->HDRAEC->AEC

static const UINT32 BLS12MaxmiumNode                    = 91; // (1 + 1 * 2 + 2 * 2 + 4 * 3 + 12 * 2 + 24 * 2);
static const UINT32 BLS12MaxmiumNonLeafNode             = 43; // (1 + 1 * 2 + 2 * 2 + 4 * 3 + 12 * 2);
static const UINT32 BLS12InterpolationLevel             = 6;

static const UINT32 ABF40MaxmiumNode                    = 15; // (1 + 1 * 2 +  2 * 2 + 4 * 2);
static const UINT32 ABF40MaxmiumNoLeafNode              = 7;  // (1 + 1 * 2 +  2 * 2);
static const UINT32 ABF40InterpolationLevel             = 4;

static const UINT32 CVP10MaxmiumNode                    = 15; // (1 + 1 * 2 +  2 * 2 + 4 * 2);
static const UINT32 CVP10MaxmiumNonLeafNode             = 7;  // (1 + 1 * 2 +  2 * 2);
static const UINT32 CVP10InterpolationLevel             = 4;

static const UINT32 CVP20MaxmiumNode                    = 15; // (1 + 1 * 2 +  2 * 2 + 4 * 2);
static const UINT32 CVP20MaxmiumNonLeafNode             = 7;  // (1 + 1 * 2 +  2 * 2);
static const UINT32 CVP20InterpolationLevel             = 4;

static const UINT32 DMM10InterpolationLevel             = 4;
static const UINT32 DMM10MaximumNode                    = 15;
static const UINT32 DMM10MaximumNonLeafNode             = 7;

static const UINT32 DMM11MaximumNonLeafNode             = 7;

static const UINT32 DMM12MaximumNonLeafNode             = 7;

static const UINT32 DME30MaximumNode                    = 15; // (1 + 1 * 2 +  2 * 2 + 4 * 2);
static const UINT32 DME30MaximumNonLeafNode                 = 7;  // (1 + 1 * 2 +  2 * 2);
static const UINT32 DME30InterpolationLevel             = 4;

static const UINT32 DME31MaximumNode                    = 15; // (1 + 1 * 2 +  2 * 2 + 4 * 2);
static const UINT32 DME31MaximumNonLeafNode             = 7;  // (1 + 1 * 2 +  2 * 2);
static const UINT32 DME31InterpolationLevel             = 4;

static const UINT32 GCE12MaximumNode                    = 3;  // (1 + 1 * 2 );
static const UINT32 GCE12MaximumNonLeafNode             = 3;  // (1 + 1 * 2);
static const UINT32 GCE12InterpolationLevel             = 2;

static const UINT32 GIC30MaxmiumNode                    = 7;  // (1 + 1 * 2 + 2 * 2);
static const UINT32 GIC30MaxmiumNonLeafNode             = 3;  // (1 + 1 * 2);
static const UINT32 GIC30InterpolationLevel             = 3;

static const UINT32 SGM10MaximumNode                    = 15; // (1 + 1 * 2 +  2 * 2 + 4 * 2);
static const UINT32 SGM10MaximumNonLeafNode             = 7;  // (1 + 1 * 2 +  2 * 2);
static const UINT32 SGM10InterpolationLevel             = 4;

static const UINT32 SGM11MaximumNonLeafNode             = 7;  // (1 + 1 * 2 +  2 * 2);
static const UINT32 SGM11InterpolationLevel             = 4;

// @agumma to check
static const UINT32 DFSSGM11MaximumNonLeafNode          = 7;  // (1 + 1 * 2 +  2 * 2);
static const UINT32 DFSSGM11InterpolationLevel          = 4;

// @agumma to check
static const UINT32 DPP111MaximumNonLeafNode            = 7;  // (1 + 1 * 2 +  2 * 2);
static const UINT32 DPP111InterpolationLevel            = 4;

// @agumma to check
static const UINT32 DEPTH101MaximumNonLeafNode          = 7;  // (1 + 1 * 2 +  2 * 2);
static const UINT32 DEPTH101InterpolationLevel          = 4;

static const UINT32 HDR22MaxmiumNode                    = 7;  // (1 + 1 * 2 + 2 * 2)
static const UINT32 HDR22MaxmiumNonLeafNode             = 3;  // (1 + 1 * 2)
static const UINT32 HDR22InterpolationLevel             = 3;

static const UINT32 HDR30MaxmiumNode                    = 7;  // (1 + 1 * 2 + 2 * 2)
static const UINT32 HDR30MaxmiumNonLeafNode             = 3;  // (1 + 1 * 2)
static const UINT32 HDR30InterpolationLevel             = 3;
static const UINT32 HDR40MaxmiumNode                    = 15; // (1 + 1 * 2 + 2 * 2)
static const UINT32 HDR40MaxmiumNonLeafNode             = 7;  // (1 + 1 * 2)
static const UINT32 HDR40InterpolationLevel             = 4;  // core->t1t2->t2t3->aec

static const UINT32 BC10MaxmiumNode                     = 7;  // (1 + 1 * 2 + 2 * 2);
static const UINT32 BC10MaxmiumNonLeafNode              = 3;  // (1 + 1 * 2);
static const UINT32 BC10InterpolationLevel              = 3;

static const UINT32 Linearization34MaxmiumNode          = 91; // (1 + 1 * 2 + 2 * 2 + 4 * 3 + 12 * 2 + 24 * 2)
static const UINT32 Linearization34MaxmiumNonLeafNode   = 43; // (1 + 1 * 2 + 2 * 2 + 4 * 3 + 12 * 2)
static const UINT32 Linearization34InterpolationLevel   = 6;

static const UINT32 PDPC20MaxNode                       = 15; // (1 + 1 * 2 + 2 * 2 +  4 * 2)
static const UINT32 PDPC20MaxNonLeafNode                = 7;  // (1 + 1 * 2 +  2 * 2)
static const UINT32 PDPC20InterpolationLevel            = 4;

static const UINT32 PDPC30MaxNode                       = 15; // (1 + 1 * 2 + 2 * 2 +  4 * 2)
static const UINT32 PDPC30MaxNonLeafNode                = 7;  // (1 + 1 * 2 +  2 * 2)
static const UINT32 PDPC30InterpolationLevel            = 4;

static const UINT32 CAC22MaxNode                        = 7;  // (1 + 1 * 2 + 2 * 2);
static const UINT32 CAC22MaxNoLeafNode                  = 3;  // (1 + 1 * 2);
static const UINT32 CAC22InterpolationLevel             = 3;  // Core->TotalScaleRatio->AEC

static const UINT32 CAC23MaxNode                        = 7;  // (1 + 1 * 2 + 2 * 2);
static const UINT32 CAC23MaxNoLeafNode                  = 3;  // (1 + 1 * 2);
static const UINT32 CAC23InterpolationLevel             = 3;  // Core->TotalScaleRatio->AEC

static const UINT32 CC13MaxNode                         = 91; // (1 + 1 * 2 + 2 * 2 + 4 * 3 + 12 * 2 + 24 * 2)
static const UINT32 CC13MaxNonLeafNode                  = 43; // (1 + 1 * 2 + 2 * 2 + 4 * 3 + 12 * 2)
static const UINT32 CC13InterpolationLevel              = 6;

static const UINT32 CV12MaxNode                         = 91; // (1 + 1 * 2 + 2 * 2 + 4 * 3 + 12 * 2 + 24 * 2)
static const UINT32 CV12MaxNonLeafNode                  = 43; // (1 + 1 * 2 + 2 * 2 + 4 * 3 + 12 * 2)
static const UINT32 CV12InterpolationLevel              = 6;  // Core->DRCGain->HDRAEC->LED->AEC->CCT

static const UINT32 Demosaic36MaximumNode               = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2)
static const UINT32 Demosaic36MaximumNonLeafNode        = 7;  // (1 + 1 * 2 + 2 * 2)
static const UINT32 Demosaic36InterpolationLevel        = 4;

static const UINT32 Demosaic37MaximumNode               = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2)
static const UINT32 Demosaic37MaximumNonLeafNode        = 7;  // (1 + 1 * 2 + 2 * 2)
static const UINT32 Demosaic37InterpolationLevel        = 4;

static const UINT32 Demosaic38MaximumNode               = 15;
static const UINT32 Demosaic38MaximumNonLeafNode        = 7;
static const UINT32 Demosaic38InterpolationLevel        = 4;

static const UINT32 DSX10MaxmiumNode                    = 3; ///< (1 + 1 * 2)
static const UINT32 DSX10MaxmiumNonLeafNode             = 1;
static const UINT32 DSX10InterpolationLevel             = 2;

static const UINT32 DSX10MaxNonLeafNode                 = 3; // (1 + 1*2) Core -> Sr Scale ratio
static const UINT32 DSX_LUMA_PADDING_WEIGHTS            = 24;
static const UINT32 DSX_CHROMA_PADDING_WEIGHTS          = 8;
static const UINT32 DSX_LUMA_KERNAL_WEIGHTS             = 192;
static const UINT32 DSX_CHROMA_KERNAL_WEIGHTS           = 96;

static const UINT32 Gamma15MaxNode                      = 91; // (1 + 1 * 2 + 2 * 2 + 4 * 3 + 12 * 2 + 24 * 2)
static const UINT32 Gamma15MaxNonLeafNode               = 43; // (1 + 1 * 2 + 2 * 2 + 4 * 3 + 12 * 2)
static const UINT32 Gamma15InterpolationLevel           = 6;  // Core->DRCGain->HDRAEC->LED->AEC->CCT

static const UINT32 Gamma16MaxNode                      = 91; // (1 + 1 * 2 + 2 * 2 + 4 * 3 + 12 * 2 + 24 * 2)
static const UINT32 Gamma16MaxNonLeafNode               = 43; // (1 + 1 * 2 + 2 * 2 + 4 * 3 + 12 * 2)
static const UINT32 Gamma16InterpolationLevel           = 6;  // Core->DRCGain->HDRAEC->LED->AEC->CCT

static const UINT32 GRA10MaxNode                        = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2)
static const UINT32 GRA10MaxNonLeafNode                 = 7;  // (1 + 1 * 2 + 2 * 2)
static const UINT32 GRA10InterpolationLevel             = 4;

static const UINT32 GTM10MaxmiumNode                    = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2);
static const UINT32 GTM10MaxmiumNonLeafNode             = 7;  // (1 + 2 + 4);
static const UINT32 GTM10InterpolationLevel             = 4;

static const UINT32 GTM101MaxmiumNode                    = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2);
static const UINT32 GTM101MaxmiumNonLeafNode             = 7;  // (1 + 2 + 4);
static const UINT32 GTM101InterpolationLevel             = 4;


static const UINT32 GTM12MaxmiumNode                    = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2);
static const UINT32 GTM12MaxmiumNonLeafNode             = 7;  // (1 + 2 + 4);
static const UINT32 GTM12InterpolationLevel             = 4;

static const UINT32 GTM13MaxmiumNode                    = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2);
static const UINT32 GTM13MaxmiumNonLeafNode             = 7;  // (1 + 2 + 4);
static const UINT32 GTM13InterpolationLevel             = 4;

static const UINT32 GTMFD13MaxmiumNode                  = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2);
static const UINT32 GTMFD13MaxmiumNonLeafNode           = 7;  // (1 + 2 + 4);
static const UINT32 GTMFD13InterpolationLevel           = 4;

static const UINT32 HME10MaxmiumNode                    = 31; // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 2)
static const UINT32 HME10MaxmiumNonLeafNode             = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2)
static const UINT32 HME10InterpolationLevel             = 5;

static const UINT32 HNR10MaxmiumNode                    = 31; // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 2);
static const UINT32 HNR10MaxmiumNonLeafNode             = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2)
static const UINT32 HNR10InterpolationLevel             = 5;

static const UINT32 ICAMaxNode                          = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2);
static const UINT32 ICAMaxNoLeafNode                    = 7;  // (1 + 1 * 2 + 2 * 2);
static const UINT32 ICAInterpolationLevel               = 4;  // Core->LensPosition->LensZoom->AEC

static const UINT32 LENR10MaxmiumNode                   = 31; // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 2);
static const UINT32 LENR10MaxmiumNonLeafNode            = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2)
static const UINT32 LENR10InterpolationLevel            = 5;

static const UINT32 LDC11MaximumNode                    = 7;
static const UINT32 LDC11MaximumNonLeafNode             = 3;
static const UINT32 LDC11InterpolationLevel             = 3;

static const UINT32 LSC34MaxmiumNode                    = 183; // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 3 + 24 * 2 + 48 * 2)
static const UINT32 LSC34MaxmiumNonLeafNode             = 87;  // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 3 + 24 * 2)
static const UINT32 LSC34InterpolationLevel             = 7;

static const UINT32 LSC35MaxmiumNode                    = 183; // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 3 + 24 * 2 + 48 * 2)
static const UINT32 LSC35MaxmiumNonLeafNode             = 87;  // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 3 + 24 * 2)
static const UINT32 LSC35InterpolationLevel             = 7;

static const UINT32 LSC36MaxmiumNode                    = 183; // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 3 + 24 * 2 + 48 * 2)
static const UINT32 LSC36MaxmiumNonLeafNode             = 87;  // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 3 + 24 * 2)
static const UINT32 LSC36InterpolationLevel             = 7;

static const UINT32 LSC40MaxmiumNode                    = 183; // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 3 + 24 * 2 + 48 * 2)
static const UINT32 LSC40MaxmiumNonLeafNode             = 87;  // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 3 + 24 * 2)
static const UINT32 LSC40InterpolationLevel             = 7;

static const UINT32 LSC41MaxmiumNode                    = 183; // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 3 + 24 * 2 + 48 * 2)
static const UINT32 LSC41MaxmiumNonLeafNode             = 87;  // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 3 + 24 * 2)
static const UINT32 LSC41InterpolationLevel             = 7;

static const UINT32 LTM13MaxNode                        = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2)
static const UINT32 LTM13MaxNoLeafNode                  = 7;  // (1 + 1 * 2 + 2 * 2)
static const UINT32 LTM13InterpolationLevel             = 4;

static const UINT32 LTM131MaxNode                       = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2)
static const UINT32 LTM131MaxNoLeafNode                 = 7;  // (1 + 1 * 2 + 2 * 2)
static const UINT32 LTM131InterpolationLevel            = 4;

static const UINT32 LTM14MaxNode                        = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2)
static const UINT32 LTM14MaxNoLeafNode                  = 7;  // (1 + 1 * 2 + 2 * 2)
static const UINT32 LTM14InterpolationLevel             = 4;

static const UINT32 LTM15MaxNode                        = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2)
static const UINT32 LTM15MaxNoLeafNode                  = 7;  // (1 + 1 * 2 + 2 * 2)
static const UINT32 LTM15InterpolationLevel             = 4;

static const UINT32 LTM16MaxNode                        = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2)
static const UINT32 LTM16MaxNoLeafNode                  = 7;  // (1 + 1 * 2 + 2 * 2)
static const UINT32 LTM16InterpolationLevel             = 4;

static const UINT32 Pedestal13MaxmiumNode               = 63; // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 2 + 16 * 2)
static const UINT32 Pedestal13MaxmiumNonLeafNode        = 31; // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 2)
static const UINT32 Pedestal13InterpolationLevel        = 6;

static const UINT32 SCE11MaxNode                        = 7;  // (1 + 1 * 2 + 2 * 2)
static const UINT32 SCE11MaxNoLeafNode                  = 3;  // (1 + 1 * 2)
static const UINT32 SCE11InterpolationLevel             = 3;

static const UINT32 TF10MaxNode                         = 511; // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 2 + 32 + 64 + 128 + 256)
static const UINT32 TF10MaxNonLeafNode                  = 255; // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 2 + 16 * 2 + 32 * 2 + 64 * 2)
static const UINT32 TF10InterpolationLevel              = 9;   // Root->LensPos->LensZoom->PostScaleRatio->PreScaleRatio
                                                               // ->DRCGain->HDRAEC->AEC->CCT

static const UINT32 TF20MaxNode                         = 511; // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 2 + 32 + 64 + 128 + 256)
static const UINT32 TF20MaxNonLeafNode                  = 255; // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 2 + 16 * 2 + 32 * 2 + 64 * 2)
static const UINT32 TF20InterpolationLevel              = 9;   // Root->LensPos->LensZoom->PostScaleRatio->PreScaleRatio
                                                               // ->DRCGain->HDRAEC->AEC->CCT

static const UINT32 TMC11MaximumNode                    = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2)
static const UINT32 TMC11MaximumNonLeafNode             = 7;  // (1 + 1 * 2 + 2 * 2)
static const UINT32 TMC11InterpolationLevel             = 4;  // Root->DRC->HDRAEC->AEC

static const UINT32 TMC12MaximumNode                    = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2)
static const UINT32 TMC12MaximumNonLeafNode             = 7;  // (1 + 1 * 2 + 2 * 2)
static const UINT32 TMC12InterpolationLevel             = 4;  // Root->DRC->HDRAEC->AEC

static const UINT32 TMC13MaximumNode                    = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2)
static const UINT32 TMC13MaximumNonLeafNode             = 7;  // (1 + 1 * 2 + 2 * 2)
static const UINT32 TMC13InterpolationLevel             = 4;  // Root->DRC->HDRAEC->AEC

static const UINT32 NRM10MaximumNode                    = 7;  // (1 + 1 * 2 + 2 * 2)
static const UINT32 NRM10MaximumNonLeafNode             = 3;  // (1 + 1 * 2)
static const UINT32 NRM10InterpolationLevel             = 3;  // Root->HDRAEC->AEC

static const UINT32 Upscale20MaxNode                    = 7;   // (1 + 1 * 2 + 2 * 2)
static const UINT32 Upscale20MaxNoLeafNode              = 3;   // (1 + 1 * 2)
static const UINT32 Upscale20InterpolationLevel         = 3;   // Core->TotalScaleRatio->AEC

// constants for table sizes
static const UINT32 NOISE_PARAM_YTB_SIZE   = 17;  ///< Noise parameter YTB table size of Y / CB / CR Channels
static const UINT32 NOISE_PARAM_CTB_SIZE   = 8;   ///< Noise parameter CTB table size of Y / CB / CR channels
static const UINT32 FS_TO_A1_A4_MAP_SIZE   = 9;   ///< Sparse mapping between FS values [0:8:64] and a1/a4 blending factors
static const UINT32 LNR_LUT_SIZE           = 16;  ///< LNR LUT size for Luma / Chroma channels
static const UINT32 FS_DECISION_PARAM_SIZE = 9;   ///< Multiplication factor used in Luma/Chroma thresholds calculation to
                                                  ///< form weak threshold (multiplies basic noise threshold).
static const UINT32 VIDEO11InterpolationLevel           = 6;
static const UINT32 VIDEO11MaximumNode                  = 63; // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 2 + 16 * 2)
static const UINT32 VIDEO11MaximumNonLeafNode           = 31; // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 *2

static const UINT32 VideoRetouch10MaxmiumNode           = 31; // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 2)
static const UINT32 VideoRetouch10MaxmiumNonLeafNode    = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2)
static const UINT32 VideoRetouch10InterpolationLevel    = 5;

static const UINT32 WNR24MaximumNode                    = 127; // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 2 + 32 + 64)
static const UINT32 WNR24MaximumNonLeafNode             = 63;  // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 2 + 32 )
static const UINT32 WNR24InterpolationLevel             = 7;   // (Root->PostScaleRatio->Prescaleratio->TotalScaleRatio->
                                                               //    DRCGain->HDRAEC->AEC)

static const UINT32 BDS10MaxmiumNode        = 31; // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 2);
static const UINT32 BDS10MaxmiumNonLeafNode = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2);
static const UINT32 BDS10InterpolationLevel = 5;  // (Root->Pre Scale Ratio-> DRCGain-> HDRAEC-> AEC)

static const UINT32 DemuxBlkLevel14MaxmiumNode          = 91;  // (1 + 1 * 2 + 2 * 2 + 4 * 3 + 12 * 2 + 24 * 2);
static const UINT32 DemuxBlkLevel14MaxmiumNonLeafNode   = 43;  // (1 + 1 * 2 + 2 * 2 + 4 * 3 + 12 * 2);
static const UINT32 DemuxBlkLevel14InterpolationLevel   = 6;

static const UINT32 CSMCE11MaximumNode                  = 15;  // (1 + 1 * 2 + 2 * 2 + 4 * 2)
static const UINT32 CSMCE11MaximumNonLeafNode           = 7;   // (1 + 1 * 2 + 2 * 2)
static const UINT32 CSMCE11InterpolationLevel           = 4;   // Root->DRC->HDRAEC->AEC

static const UINT32 SWMFNR20MaxmiumNode                 = 31;  // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 2);
static const UINT32 SWMFNR20MaxmiumNonLeafNode          = 15;  // (1 + 1 * 2 + 2 * 2 + 4 * 2)
static const UINT32 SWMFNR20InterpolationLevel          = 5;   // Root->Scaleratio->DRC->AEC->GAIN

static const UINT32 SWMFNR30MaximumNode                 = 31;
static const UINT32 SWMFNR30MaximumNonLeafNode          = 15;
static const UINT32 SWMFNR30InterpolationLevel          = 5;

static const UINT32 Preference101InterpolationLevel      = 5;
static const UINT32 Preference101MaximumNode             = 31;
static const UINT32 Preference101MaximumNonLeafNode      = 15;

static const UINT32 SWMCTF10MaxmiumNode                 = 31; // (1 + 1 * 2 + 2 * 2 + 4 * 2 + 8 * 2);
static const UINT32 SWMCTF10MaxmiumNonLeafNode          = 15; // (1 + 1 * 2 + 2 * 2 + 4 * 2)
static const UINT32 SWMCTF10InterpolationLevel          = 5;// Root->Scaleratio->DRC->AEC->GAIN

static const UINT32 SWMCTF20MaximumNode                 = 31;
static const UINT32 SWMCTF20MaximumNonLeafNode          = 15;
static const UINT32 SWMCTF20InterpolationLevel          = 5;

static const UINT32 SWGD10SFEMaximumRatio               = 2;
static const UINT32 SWGD10IPEMaximumRatio               = 5;

static const UINT32 AIDENOISER10MaximumNode             = 31;
static const UINT32 AIDENOISER10MaximumNonLeafNode      = 15;
static const UINT32 AIDENOISER10InterpolationLevel      = 5;

static const UINT32 AIDENOISER20MaximumNode             = 31;
static const UINT32 AIDENOISER20MaximumNonLeafNode      = 15;
static const UINT32 AIDENOISER20InterpolationLevel      = 5;
static const UINT32 IPEICAUsecaseMCTF               = 1 << 0;
static const UINT32 IPEICAUsecaseMCTFLookahead      = 1 << 1;
static const UINT32 IPEICAUsecaseSLDC               = 1 << 2;
static const UINT32 IPEICAUsecaseSAT                = 1 << 3;
static const UINT32 IPEICAUsecaseEIS2               = 1 << 4;
static const UINT32 IPEICAUsecaseEIS3               = 1 << 5;
static const UINT32 IPEICAUsecaseMFNR               = 1 << 6;
static const UINT32 IPEICAUsecaseMFHDR1EXP          = 1 << 7;
static const UINT32 IPEICAUsecaseMFHDR2EXP          = 1 << 8;
static const UINT32 IPEICAUsecaseMFHDR3EXP          = 1 << 9;
static const UINT32 IPEICAUsecaseMFHDR2EXPSnapshot  = 1 << 10;
static const UINT32 IPEICAUsecaseMFHDR3EXPSnapshot  = 1 << 11;
static const UINT32 IPEICAUsecaseOEMSETTING         = 1 << 12;
static const UINT32 IPEICAUsecasePrefusionAlignmnet = 1 << 13;

static const UINT32 WB20MaximumNode          = 15;
static const UINT32 WB20MaximumNonLeafNode   = 7;
static const UINT32 WB20InterpolationLevel   = 4;

static const UINT32 BLTM10MaximumNode        = 15;
static const UINT32 BLTM10MaximumNonLeafNode = 7;
static const UINT32 BLTM10InterpolationLevel = 4;

static const UINT32 ANRThresholdPerY  = 17;  // Number of ANR parameter threshold per Y
static const UINT32 TFParamYtabSize   = 17;  // Number of TF Noise parameter YTB table size of Y/CB/CR Channels
static const UINT32 YRatioGTMSizeMax  = 256; // Max Number of GTM Y ratio
static const UINT32 IPEPassesMax      = 4;   // Number of multi pass

static const UINT32 SHDR11InterpolationLevel        = 4;
static const UINT32 SHDR11MaximumNode               = 15;
static const UINT32 SHDR11MaximumNonLeafNode        = 7;

// Constant values that are used by TMC
static const UINT32 Gamma15TableSize  = 257;
static const FLOAT  GAMMA15_MAX_VALUE = 1024.0f;

// Constant values that are used by TMC
static const UINT32 Gamma151TableSize  = 257;
static const FLOAT  GAMMA151_MAX_VALUE = 1023.0f;
static const UINT32 Gamma161TableSize = 65;
static const UINT32 WBCHGainSize    = 3;    ///< WB green/blue/red channel gain

static const UINT16 AI_CATMAP_G1R0_MAX_CATEGORY_SIZE = 32;
static const UINT16 AI_CATMAP_G1R0_MAX_CONFIDENCE_SIZE = 8;
static const UINT8  AI_GLOBAL_CONFIDENCE_MAP_LUT_SIZE = 129;

static const UINT16 BLUR_FILTER_DATA_PSF_LUT_MAX_SIZE = 896;
static const UINT16 BLUR_FILTER_PSF_MAX_SIZE          = 112;

static const UINT32 CATMAP_G1R0_CONF_LUT_MIN = 0;
static const UINT32 CATMAP_G1R0_CONF_LUT_MAX = 32;
static const UINT32 CATMAP_G1R0_CAT_LUT_MIN = 0;
static const UINT32 CATMAP_G1R0_CAT_LUT_MAX = 255;
static const UINT32 LUT_ACTIVITY_NORM_Q_BITS     = 8;
static const UINT32 LUT_WEIGHT_MOD_Q_BITS        = 8;
static const UINT32 LUT_GAIN_POSNEG_Q_BITS       = 5;
static const UINT32 LUT_GAIN_WEIGHT_Q_BITS       = 8;
static const UINT32 LUT_GAIN_CONTRAST_Q_BITS     = 8;
static const UINT32 LUT_GAIN_CHROMA_Q_BITS       = 8;
static const UINT32 LUT_SKIN_Q_BITS              = 8;
static const UINT32 RADIAL_CF_Q_BITS             = 8;
static const UINT32 FACE_Q_BITS                  = 8;
static const UINT32 NORM_SCALE_Q_BITS            = 6;
static const UINT32 GAIN_CAP_Q_BITS              = 5;
static const UINT32 SP_Q_BITS                    = 4;
static const UINT32 MEDIAN_BLEND_OFFSET_Q_BITS   = 4;
static const UINT32 CORNER_THRESHOLD_Q_BITS      = 10;
static const UINT32 SMOOTHING_STRENGTH_Q_BITS    = 10;
static const UINT32 NUM_OF_NZ_ENTRIES            = 8;
static const UINT32 LUT_LAYER1_FILTER_SIZE       = 10;
static const UINT32 LUT_ACTIVITY_BPF_SIZE        = 6;
static const UINT32 LUT_LAYER2_FILTER_SIZE       = 6;
static const UINT32 LUT_ACTIVITY_NORM_SIZE       = 64;
static const UINT32 LUT_WEIGHT_MOD_SIZE          = 64;
static const UINT32 LUT_SOFT_THRESHOLD_SIZE      = 64;
static const UINT32 LUT_GAINPOSNEG_SIZE          = 64;
static const UINT32 LUT_GAINWEIGHT_SIZE          = 64;
static const UINT32 LUT_GAINCONTRAST_SIZE        = 32;
static const UINT32 LUT_GAINCHROMA_SIZE          = 32;
static const UINT32 LUT_SKIN_SIZE                = 17;

static const UINT32 R_SQAURE_Q_FACTOR            = 12;
static const UINT32 R_SQUARE_SCALE_FACTOR        = 6;
static const UINT32 RADIAL_GAIN_SLOPE_Q_FACTOR   = 11;
static const UINT32 RADIAL_ACT_SLOPE_Q_FACTOR    = 11;
static const UINT32 SKIN_SATURATIN_Q_FACTOR      = 8;
static const UINT32 NUM_LUMA_R_SQUARE_ENTRIES    = 4;
static const UINT32 NUM_ASF_RADIAL_ENTRIES       = 4;
static const UINT32 EA_CONV_FACTOR               = 25;
static const UINT32 FLAT_THR_MIN                 = 0;
static const UINT32 FLAT_THR_MAX                 = (1 << 13) - 1;
static const UINT32 MAX_SMOOTH_MIN               = 0;
static const UINT32 MAX_SMOOTH_MAX               = (1 << 8) - 1;
static const UINT32 CORNER_THR_MIN               = 0;
static const UINT32 CORNER_THR_MAX               = (1 << 16) - 1;
static const UINT32 SMOOTH_STR_MIN               = 0;
static const UINT32 SMOOTH_STR_MAX               = (1 << 10) - 1;
static const UINT32 MEDIAN_BLEND_OFFSET_MIN      = 0;
static const UINT32 MEDIAN_BLEND_OFFSET_MAX      = 15;
static const UINT32 DMI_GAINPOSNEG_SIZE          = 256;
static const UINT32 DMI_GAINWEIGHT_SIZE          = 256;
static const UINT32 DMI_SOFT_SIZE                = 256;
static const UINT32 DMI_ACT_NORM_SIZE            = 256;
static const UINT32 DMI_WEIGHT_MOD_SIZE          = 256;
static const UINT32 DMI_GAINCHROMA_SIZE          = 256;
static const UINT32 DMI_GAINCONTRAST_SIZE        = 256;
static const UINT32 DMI_SKIN_SIZE                = 17;
static const UINT32 RNR_CONTROL_POINTS           = 3;
static const UINT32 SKIN_Q_NONQ_MIN              = 0;
static const UINT32 SKIN_Q_NONQ_MAX              = 128;
static const UINT32 MAX_FRACTION_WITH_Q          = 2048;
static const FLOAT  SP_FLOAT_MIN                 = 0.0f;
static const FLOAT  SP_FLOAT_MAX                 = 1.0f;
static const FLOAT  CATMAP_MAX                   = 8;
static const FLOAT  CONF_MAX                     = 1;
static const UINT32 EXPOSURE_MAX_COUNT           = 3;
static const UINT32 GTM121LUTTableSize = 64; // DMI table size
static const UINT32 GTM121DMILengthDword = (GTM121LUTTableSize * sizeof(UINT64)) / sizeof(UINT32);
static const UINT32 GTM121DMILengthInBytes = (GTM121DMILengthDword * sizeof(UINT32));

static const INT16 L1_CORNER_FILTER_MIN[LUT_LAYER1_FILTER_SIZE]  =
{
    MIN_INT10, MIN_INT10, MIN_INT10, MIN_INT10, MIN_INT10, MIN_INT10, MIN_INT10, MIN_INT10, MIN_INT11, MIN_INT12
};

static const INT16 L1_CORNER_FILTER_MAX[LUT_LAYER1_FILTER_SIZE]  =
{
    MAX_INT10, MAX_INT10, MAX_INT10, MAX_INT10, MAX_INT10, MAX_INT10, MAX_INT10, MAX_INT10, MAX_INT11, MAX_INT12
};

static const INT16 L1_LOWPASS_FILTER_MIN[LUT_LAYER1_FILTER_SIZE] =
{
    MIN_INT10, MIN_INT10, MIN_INT10, MIN_INT10, MIN_INT10, MIN_INT10, MIN_INT10, MIN_INT10, MIN_INT11, MIN_INT12
};

static const INT16 L1_LOWPASS_FILTER_MAX[LUT_LAYER1_FILTER_SIZE] =
{
    MAX_INT10, MAX_INT10, MAX_INT10, MAX_INT10, MAX_INT10, MAX_INT10, MAX_INT10, MAX_INT10, MAX_INT11, MAX_INT12
};

static const INT16 L1_ACTIVITY_BPF_MIN[LUT_ACTIVITY_BPF_SIZE]    =
{
    MIN_INT8, MIN_INT8, MIN_INT8, MIN_INT8, MIN_INT9, MIN_INT10
};

static const INT16 L1_ACTIVITY_BPF_MAX[LUT_ACTIVITY_BPF_SIZE]    =
{
    MAX_INT8, MAX_INT8, MAX_INT8, MAX_INT8, MAX_INT9, MAX_INT10
};

static const INT16 L2_CORNER_FILTER_MIN[LUT_LAYER2_FILTER_SIZE]  =
{
    MIN_INT8, MIN_INT8, MIN_INT8, MIN_INT8, MIN_INT9, MIN_INT10
};

static const INT16 L2_CORNER_FILTER_MAX[LUT_LAYER2_FILTER_SIZE]  =
{
    MAX_INT8, MAX_INT8, MAX_INT8, MAX_INT8, MAX_INT9, MAX_INT10
};

static const INT16 L2_LOWPASS_FILTER_MIN[LUT_LAYER2_FILTER_SIZE] =
{
    MIN_INT8, MIN_INT8, MIN_INT8, MIN_INT8, MIN_INT9, MIN_INT10
};

static const INT16 L2_LOWPASS_FILTER_MAX[LUT_LAYER2_FILTER_SIZE] =
{
    MAX_INT8, MAX_INT8, MAX_INT8, MAX_INT8, MAX_INT9, MAX_INT10
};

static const INT16 L2_ACTIVITY_BPF_MIN[LUT_ACTIVITY_BPF_SIZE]    =
{
    MIN_INT8, MIN_INT8, MIN_INT8, MIN_INT8, MIN_INT9, MIN_INT10
};

static const INT16 L2_ACTIVITY_BPF_MAX[LUT_ACTIVITY_BPF_SIZE]    =
{
    MAX_INT8, MAX_INT8, MAX_INT8, MAX_INT8, MAX_INT9, MAX_INT10
};

/// @brief ISP TMC Version
enum SWTMCVersion
{
    TMCDisabled, ///< TMC version invalid
    TMC10,       ///< TMC version 1.0
    TMC11,       ///< TMC version 1.1
    TMC12,       ///< TMC version 1.2
    TMC13,       ///< TMC version 1.3
    TMC14,       ///< TMC version 1.4
    TMC142,      ///< TMC version 1.4.2
};

/// @brief SWAIDenoiser Version
enum SWAIDenoiserVersion
{
    AIDenoiserInvalid, ///< AIDenoiser version invalid
    AIDenoiser10,      ///< AIDenoiser version 1.0
    AIDenoiser20,      ///< AIDenoiser version 2.0
    AIDenoiser201,     ///< AIDenoiser version 2.0.1
    AIDenoiser211,     ///< AIDenoiser version 2.1.1
};

/// @brief: Enumerator to map optimized Look Up Tables indices with DMI LUT_SEL in ASF module HPG/SWI
enum ASFDMILUTConfigLUTSelIndex
{
    NoLUTSelected                               = 0x0,    ///< No LUT
    Layer1ActivityNormalGainPosGainNegSoftThLUT = 0x1,    ///< L1 LUTs-Activity Clamp Th, Normal Scale, Gain +/-, Soft Th
    Layer1GainWeightLUT                         = 0x2,    ///< L1 LUT-Gain Weight
    Layer1SoftThresholdWeightLUT                = 0x3,    ///< L1 LUT-Soft Threshold Weight
    Layer2ActivityNormalGainPosGainNegSoftThLUT = 0x4,    ///< L2 LUTs-Activity Clamp Th, Normal Scale, Gain +/-, Soft Th
    Layer2GainWeightLUT                         = 0x5,    ///< L2 LUT-Gain Weight
    Layer2SoftThresholdWeightLUT                = 0x6,    ///< L2 LUT-Soft Threshold Weight
    ChromaGradientPosNegLUT                     = 0x7,    ///< Chroma Gradient +/- LUT
    ContrastPosNegLUT                           = 0x8,    ///< Contrast +/- LUT
    SkinActivityGainLUT                         = 0x9,    ///< Skit Weight, Activity Gain LUT
    MaxASFLUT                                   = 0xA,    ///< MAX LUT
};


/// @brief: This structure has information of number of entries for each LUT.
static const UINT IPEASFLUTNumEntries[MaxASFLUT] =
{
    0,      ///< NoLUTSelected
    256,    ///< Layer1ActivityNormalGainPosGainNegSoftThLUT
    256,    ///< Layer1GainWeightLUT
    256,    ///< Layer1SoftThresholdWeightLUT
    256,    ///< Layer2ActivityNormalGainPosGainNegSoftThLUT
    256,    ///< Layer2GainWeightLUT
    256,    ///< Layer2SoftThresholdWeightLUT
    256,    ///< ChromaGradientPosNegLUT
    256,    ///< ContrastPosNegLUT
    17,     ///< SkinActivityGainLUT
};

static const UINT MaxASF30LUTNumEntries =
    IPEASFLUTNumEntries[Layer1ActivityNormalGainPosGainNegSoftThLUT] +
    IPEASFLUTNumEntries[Layer1GainWeightLUT] +
    IPEASFLUTNumEntries[Layer1SoftThresholdWeightLUT] +
    IPEASFLUTNumEntries[Layer2ActivityNormalGainPosGainNegSoftThLUT] +
    IPEASFLUTNumEntries[Layer2GainWeightLUT] +
    IPEASFLUTNumEntries[Layer2SoftThresholdWeightLUT] +
    IPEASFLUTNumEntries[ChromaGradientPosNegLUT] +
    IPEASFLUTNumEntries[ContrastPosNegLUT] +
    IPEASFLUTNumEntries[SkinActivityGainLUT];

static const UINT32 IPEASFLUTBufferSize        = MaxASF30LUTNumEntries * sizeof(UINT32);
static const UINT32 IPEASFLUTBufferSizeInDWord = MaxASF30LUTNumEntries;


/// @brief ISP NRM Version
enum SWNRMVersion
{
    NRMInvalid, ///< NRM version invalid
    NRM10,      ///< NRM version 1.0
    NRM11,      ///< NRM version 1.1
};

/// @brief SW MFNR Version
enum SWMFNRVersion
{
    SWMFNRInvalid, ///< SWMFNR version invalid
    SWMFNR20,      ///< SWMFNR version 2.0
    SWMFNR30,      ///< SWMFNR version 3.0
};

/// @brief SW MCTF Version
enum SWMCTFVersion
{
    SWMCTFInvalid, ///< SWMCTF version invalid
    SWMCTF10,      ///< SWCTF version 1.0
    SWMCTF20,      ///< SWCTF version 2.0
};

/// @brief ISP Use Case
enum UseCaseMode
{
    CONFIG_STILL = 0,     ///< Use Case STILL Image
    CONFIG_PREVIEW,       ///< Use Case Preview
    CONFIG_VIDEO,         ///< Use Case Video
};

/// @brief ISP Multi-Frame Config
enum ConfigMFMode
{
    MF_CONFIG_NONE = 0,       ///< MF Case: Config None
    MF_CONFIG_PREFILT,        ///< MF Case: Config Prefiltering
    MF_CONFIG_TEMPORAL,       ///< MF Case: Config Temporal Filtering
    MF_CONFIG_NOISE_EQ,       ///< MF Case: Config Noise Equalization
    MF_CONFIG_POSTPROCESS,    ///< MF Case: Config Post Processing
    MF_CONFIG_QLLPOSTFUSION,  ///< MF Case: Config QLL Post Fusion
};

/// @brief: This enumerator is for Upscale12 Vertical pixel offset
enum UpscaleVericalPixelOffset
{
    UpscaleVericalPixelOffsetPaddingTop   = 0,     ///< HW will do vertical padding at the top
    UpscaleVericalPixelOffsetNoPaddingTop,         ///< HW will not do vertical padding at the top
};

/// @brief: This enumerator is for Upscale12 Horizontal pixel offset
enum UpscaleHorizontalPixelOffset
{
    UpscaleHorizontalPixelOffsetPaddingTop = 0,     ///< HW will do horizontal padding at the left edge
    UpscaleHorizontalPixelOffsetNoPaddingTop,       ///< HW will not do horizontal padding at the left edge
};

/// @brief: This enumerator is for Upscale12 Dithering Mode
enum UpscaleInputDitheringDisable
{
    UpscaleDitheringDisable = 0,  ///< dithering is enabled,conversion happens based on dithering mode
    UpscaleDitheringEnable,       ///< dithering is disabled,truncation will happen, MSB 8bit will be sent
};

/// @brief: This enumerator is for Upscale12 Dithering mode
enum UpscaleInputDitheringMode
{
    UpscaleRegularRound     = 0, ///< Regular Rounding
    UpscaleCheckerBoardABBA,     ///< checkerboard ABBA Pattern
    UpscaleCheckerBoardBAAB,     ///< checkerboard BAAB Pattern
    UpscaleRoundHalfToEven,      ///< Round to Nearest Even
};

/// @brief: This enumerator is for Upscale12 FIR scale algorithm
enum UpscaleFirAlgoInterpolationMode
{
    UpscaleBiLinearInterpolation = 0, ///< bilinear interoplation
    UpscaleBiCubicInterpolation,      ///< bicubic interoplation
    UpscaleNearestNeighbourhood,      ///< nearest neighborhood interoplation
};

/// @brief ISP ICA Config Mode
enum ConfigICAMode
{
    ICA_CONFIG_NONE = 0,                                ///< Config None
    ICA_CONFIG_MFNR_TEMPORAL,                           ///< MFNR temporal mode with aggrgated matrix
    ICA_CONFIG_MFNR_TEMPORAL_ANCHOR_AGGREGATE,          ///< MFNR with  indivdual frame alignment
    ICA_CONFIG_MCTF,                                    ///< MCTF usecase without ICA1 activaltion
    ICA_CONFIG_MFHDR,                                   ///< MFHDR usecase
    ICA_CONFIG_POST_MFHDR,                              ///< Post MFHDR mode
    ICA_CONFIG_POST_MFHDR_MCTF,                         ///< Post MFHDR MCTF activation
    ICA_CONFIG_POST_ICA1_MCTF,                          ///< Post ICA1 MCTF
};

/// @brief ICA401 Allocation Mode selection
enum ICAAllocationModeSelect
{
    ICA_COMMONLIB_SEL  = 0,  ///< For ICA in AllocateCommonLibraryData
    LDC_COMMONLIB_SEL  = 1,  ///< For LDC in AllocateCommonLibraryData
    DSX_COMMONLIB_SEL  = 2,  ///< For DSX in AllocateCommonLibraryData
    GCE_COMMONLIB_SEL  = 3,  ///< For GCE in AllocateCommonLibraryData
};

/// @brief HDR40 two exposure combination
enum TwoExposureHDRCombination
{
    T2T3 = 0,   ///< Med/Short
    T1T3,       ///< Long/Shot
};

/// @brief: This enumeration maps Look Up Tables indices with DMI LUT_SEL in LTM module SWI.
enum LTM10LUTIndex
{
    BLTM10IndexWeight = 0,  ///< Weight Curve
    BLTM10IndexLA,          ///< LA Curve
    BLTM10IndexCurve,       ///< Curve
    BLTM10IndexScale,       ///< Scale Curve
    BLTM10IndexMask,        ///< Mask Curve
    BLTM10IndexLCEPositive, ///< LCE positive Curve
    BLTM10IndexLCENegative, ///< LCE Negative Curve
    BLTM10IndexAverage,     ///< Average Curve
    BLTM10IndexMax          ///< Max LUTs
};

/// @brief: This enumeration maps Look Up Tables indices with DMI LUT_SEL in LTM module SWI.
enum LTM12LUTIndex
{
    BLTM12IndexWeight = 0,  ///< Weight Curve
    BLTM12IndexLA,          ///< LA Curve
    BLTM12IndexCurve,       ///< Curve
    BLTM12IndexScale,       ///< Scale Curve
    BLTM12IndexMask,        ///< Mask Curve
    BLTM12IndexLCEPositive, ///< LCE positive Curve
    BLTM12IndexLCENegative, ///< LCE Negative Curve
    BLTM12IndexMax          ///< Max LUTs
};

enum MCTFAlignmentMode
{
    MCTFAlignmentModeNone      = 0x0000,        ///< Invalid none alignment mode
    MCTFAlignmentModeTransform = 0x0001,        ///< Use DME to store transform vector
    MCTFAlignmentModeMotionMap = 0x0002,        ///< Use DMM to store dense motion map vector, 8x8 pixels per vector
};

/// @brief: This enumeration maps Look Up Tables indices with DMI LUT_SEL in LTM module SWI.
enum LTM11LUTIndex
{
   BLTM11IndexWeight = 0,  ///< Weight Curve
   BLTM11IndexLA,          ///< LA Curve
   BLTM11IndexCurve,       ///< Curve
   BLTM11IndexScale,       ///< Scale Curve
   BLTM11IndexMask,        ///< Mask Curve
   BLTM11IndexLCEPositive, ///< LCE positive Curve
   BLTM11IndexLCENegative, ///< LCE Negative Curve
   BLTM11IndexAverage,     ///< Average Curve
   BLTM11IndexHistogram,   ///< Histogram Curve
   BLTM11IndexMax          ///< Max LUTs
};

/// @brief: This structure has information of number of entries of each LUT.
static const UINT BLTM10LUTNumEntries[BLTM10IndexMax] =
{
    24,     ///< Weight Curve
    64,     ///< LA0 Curve
    64,     ///< Curve
    64,     ///< Scale Curve
    64,     ///< Mask Curve
    16,     ///< LCE positive Curve
    16,     ///< LCE Negative Curve
    130     ///< Average Curve
};

/// @brief: This structure has information of number of entries of each LUT.
static const UINT BLTM12LUTNumEntries[BLTM12IndexMax] =
{
    24,     ///< Weight Curve
    64,     ///< LA0 Curve
    64,     ///< Curve
    64,     ///< Scale Curve
    64,     ///< Mask Curve
    16,     ///< LCE positive Curve
    16,     ///< LCE Negative Curve
};

/// @brief: This structure has information of number of entries of each LUT.
static const UINT BLTM11LUTNumEntries[BLTM11IndexMax] =
{
    24,     ///< Weight Curve
    64,     ///< LA0 Curve
    64,     ///< Curve
    64,     ///< Scale Curve
    64,     ///< Mask Curve
    16,     ///< LCE positive Curve
    16,     ///< LCE Negative Curve
    130,    ///< Average Curve
    475     ///< Histogram stats
};

/// @brief Sensor PDAF Coordinates
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct PDPixelCoordinates
{
    INT32  PDXCoordinate;  ///< PD pixel X coordinate
    INT32  PDYCoordinate;  ///< PD pixel Y coordinate
};

/// @ brief enumeration defining IPE path
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
enum class IPEGammaPath : UINT
{
    INPUT = 0,    ///< Input
    REFERENCE,    ///< Reference
    CVPICA,       ///< CVP ICA
    MFHDR_0,      ///< MFHDR_0
    MFHDR_1,      ///< MFHDR_1
    MFHDR_2,      ///< MFHDR_2
    MFHDR_3,      ///< MFHDR_3
};

/// @brief Curve model used to generate tone mapping model
enum CurveModel
{
    SIGMOID       = 0,  ///< Sigmoid
    EXPONENTIAL,        ///< Exponential
    PCHIP,              ///< PCHIP
    BEZIER,             ///< Bezier
    OTHERS,             ///< others 4 - 7
    CURVEMODELMAX = 7,  ///< others 7
};

/// @ Input FD Data to IQ modules
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct FDData
{
    UINT32 numberOfFace;                                           ///< Number of faces
    UINT32 faceCenterX[MAX_FACE_NUM];                              ///< Face cordinates X
    UINT32 faceCenterY[MAX_FACE_NUM];                              ///< Face coordinates Y
    UINT32 faceRadius[MAX_FACE_NUM];                               ///< Face Radius
};

/// @brief Union of Knee points for ADRC.
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
union KneePoints
{
    struct KneePoints10
    {
        FLOAT  kneeX[MAX_ADRC_LUT_KNEE_LENGTH_TMC10];                ///< kneex TMC10
        FLOAT  kneeY[MAX_ADRC_LUT_KNEE_LENGTH_TMC10];                ///< kneey TMC10
    } KneePointsTMC10;

    struct KneePoints11
    {
        FLOAT  kneeX[MAX_ADRC_LUT_KNEE_LENGTH_TMC11];                ///< kneex TMC11
        FLOAT  kneeY[MAX_ADRC_LUT_KNEE_LENGTH_TMC11];                ///< kneey TMC11
    } KneePointsTMC11;

    struct KneePoints12
    {
        FLOAT  kneeX[MAX_ADRC_LUT_KNEE_LENGTH_TMC12];                ///< kneex TMC12
        FLOAT  kneeY[MAX_ADRC_LUT_KNEE_LENGTH_TMC12];                ///< kneey TMC12
    } KneePointsTMC12;

    struct KneePoints13
    {
        FLOAT  kneeX[MAX_ADRC_LUT_KNEE_LENGTH_TMC13];                ///< kneex TMC13
        FLOAT  kneeY[MAX_ADRC_LUT_KNEE_LENGTH_TMC13];                ///< kneey TMC13
    } KneePointsTMC13;
    struct KneePoints141
    {
        FLOAT  kneeX[MAX_ADRC_LUT_KNEE_LENGTH_TMC141];                ///< kneex TMC14
        FLOAT  kneeY[MAX_ADRC_LUT_KNEE_LENGTH_TMC141];                ///< kneey TMC14
    } KneePointsTMC141;
};

/// @brief Define the struct for AI modifiers
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct AIMapDecode101UnpackedField
{
    UINT8  enable; ///< 1u
    UINT8  lpf_c0; ///< 7u
    UINT8  lpf_c1; ///< 7u
    UINT8  lpf_c2; ///< 7u
    UINT8  lpf_c3; ///< 8u
    UINT8  cat_LUT[AI_CATMAP_G1R0_MAX_CATEGORY_SIZE]; ///< LUT for converting category to modifier strength
    UINT8  conf_LUT[AI_CATMAP_G1R0_MAX_CONFIDENCE_SIZE]; ///< LUT for mapping conf index to conf impact
    UINT8  nop; ///< 8u
    UINT8  us_Enable; ///< 1u
    UINT16 us_In_SizeX; ///< 10u
    UINT16 us_In_SizeY; ///< 16u
    UINT16 us_Out_SizeX; ///< 10u
    UINT16 us_Out_SizeY; ///< 16u
    INT32  us_Out_StartX; ///< 25s
    INT32  us_Out_StartY; ///< 25s
    UINT32 us_Step_X; ///< 17u
    UINT32 us_Step_Y; ///< 17u
    UINT8  post_Crop_Enable; ///< 1u
    UINT16 post_Crop_First_Line; ///< 14u
    UINT16 post_Crop_Last_Line; ///< 14u
    UINT16 post_Crop_First_Pixel; ///< 14u
    UINT16 post_Crop_Last_Pixel; ///< 14u
};

// Define the struct for ADRC debug
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct ADRCDebugData
{
    FLOAT        anchorKneeX[7];           ///<
    FLOAT        anchorKneeY[7];           ///<
    FLOAT        anchorKneeX_GTM[7];       ///<
    FLOAT        anchorKneeY_GTM[7];       ///<
    FLOAT        anchorKneeX_LTM[7];       ///<
    FLOAT        anchorKneeY_LTM[7];       ///<
    FLOAT        pKneeX[7];                ///<
    FLOAT        pKneeY[7];                ///<
    FLOAT        pKneeX_GTM[7];            ///<
    FLOAT        pKneeY_GTM[7];            ///<
    FLOAT        pKneeX_LTM[7];            ///<
    FLOAT        pKneeY_LTM[7];            ///<
};

/// @brief IQ settings config base on Init/PerFrame/AlternateFrame.
enum IQConfigTimes
{
    ConfigOnce           = 0,      ///< IQ setting is configured once on Init
    ConfigPerFrame       = 1,      ///< IQ setting is configured Per-frame
    ConfigAlternateFrame = 2,      ///< IQ setting is configured alternate-frame
    ConfigMaxFrame,                ///< Others
};

/// @brief Input Data to all GTM and LTM Module for ADRC.
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct ADRCData
{
    UINT32     enable;                                              ///< global enable
    UINT32     isChanged;                                           ///< Indicates if the outout has changed
    UINT32     version;                                             ///< TMC version
    UINT32     chipsetVersion;                                      ///< Titan version
    UINT32     gtmEnable;                                           ///< gtm enable
    UINT32     ltmEnable;                                           ///< ltm enable
    KneePoints kneePoints;                                          ///< knee points
    FLOAT      drcGainDark;                                         ///< drcGainDark
    FLOAT      gtmPercentage;                                       ///< GtmPercentage
    FLOAT      ltmPercentage;                                       ///< LtmPercentage
    // Valid for TMC version 1.0
    FLOAT      coefficient[MAX_ADRC_LUT_COEF_SIZE];                 ///< coefficient

    // Valid for TMC version 1.1 / 1.2
    // TMC1.1 and 1.2 support to calculate the enhance curve with input stats and two curve models.
    // In addition, TMC1.2 also supports to have its calculated output from previous frame for interpolation
    // and have more smoooth curve.
    UINT32     curveModel;                                          ///< curve model
    FLOAT      pchipCoefficient[MAX_ADRC_LUT_PCHIP_COEF_SIZE];     ///< PCHIP curve
    FLOAT      contrastEnhanceCurve[MAX_ADRC_CONTRAST_CURVE];       ///< contrast enhance Curve
    FLOAT      contrastHEBright;                                    ///< contrast HE bright
    FLOAT      contrastHEDark;                                      ///< contrast HE Dark

    // Valid for TMC version 1.2
    FLOAT      currentCalculatedHistogram[MAX_ADRC_HIST_BIN_NUM];   ///< Output histogram of current frame
    FLOAT      currentCalculatedCDF[MAX_ADRC_HIST_BIN_NUM];         ///< Output CDF of current frame
    FLOAT      previousCalculatedHistogram[MAX_TMC_HIST_BIN_NUM];   ///< Output histogram of previous frame
    FLOAT      previousCalculatedCDF[MAX_TMC_HIST_BIN_NUM];         ///< Output CDF of previous frame

    // Valid for TMC version 1.3
    FLOAT      currentCalculatedFaceLevel;                          ///< Output facelevel of current frame

    FLOAT      BGMidStatsSatRatio;                                  ///< AWB BG Stats Sat Ratio
    FLOAT      BGMidStatsDarkRatio;                                 ///< AWB BG Stats Dark Ratio

    // Valid for TMC version 1.4
    FLOAT      gtmPercentage_TMC[MAX_TMC_CURVES];                                ///< GtmPercentage
    FLOAT      ltmPercentage_TMC[MAX_TMC_CURVES];                                ///< LtmPercentage
    FLOAT      contrastHEBright_TMC[MAX_TMC_CURVES];                             ///< contrast HE bright
    FLOAT      contrastHEDark_TMC[MAX_TMC_CURVES];                               ///< contrast HE Dark
    KneePoints kneePoints_TMC141;                                              ///< knee points
    KneePoints kneePoints_TMC141_GTM;                                          ///< knee points
    KneePoints kneePoints_TMC141_LTM;                                          ///< knee points
    FLOAT      pchipCoefficient_TMC141[MAX_ADRC_LUT_PCHIP_COEF_SIZE_TMC141];      ///< pchip co-efficient for 1.4
    FLOAT      pchipCoefficient_TMC141_GTM[MAX_ADRC_LUT_PCHIP_COEF_SIZE_TMC141];  ///< pchip co-efficient for GTM 1.4
    FLOAT      pchipCoefficient_TMC141_LTM[MAX_ADRC_LUT_PCHIP_COEF_SIZE_TMC141];  ///< pchip co-efficient for LTM 1.4
    FLOAT      contrastEnhanceCurve_TMC141[MAX_ADRC_CONTRAST_CURVE];              ///< contrast enhance Curve
    FLOAT      contrastEnhanceCurve_TMC141_GTM[MAX_ADRC_CONTRAST_CURVE];          ///< contrast enhance Curve
    FLOAT      contrastEnhanceCurve_TMC141_LTM[MAX_ADRC_CONTRAST_CURVE];          ///< contrast enhance Curve
    FLOAT      faceAdjRatioPrev;                                                  ///< Face Adjust Ratio
    UINT32     enableHistFusion;                                                  ///< Enable Histogram fusion
    UINT32     bypassHistogram;                                                   ///< Bypass histogram
    UINT32     bypassLTM;                                                         ///< Bypass LTM
    UINT32     bypassRefinement;                                                  ///< Bypass Refinement
    FLOAT      subLTMPercentage;                                                  ///< Sub LTM Percentage
    FLOAT      sceneChangeLevel;                                                  ///< Flag for scene change

    UINT8      highlightKeepEnable;                                 ///< Hightlight keep enable
    UINT8      GTMCompensationEnable;                               ///< Enable GTM Compensation from WB
    FLOAT      GTMRatioKnee;                                        ///< Ratio for GTM Knee ponts from WB
    FLOAT      scaleRatioWB_prev;                                   ///< WB prev Ratio
    FLOAT      scaleRatioWB_current;                                ///< WB current Ratio
    UINT32     overideKneeX;                                        ///< override Knee X
    // ADRC debug Data
    ADRCDebugData debugData;                        ///< ADRC debug Data

    // these were added for tmc142
    UINT32     en_tmc_refinement;                   ///< enable tmc refinement
    FLOAT      LTM_LA_curve[65];                    ///< ltm luma adaption curve
    FLOAT      LTM_scale_curve[65];                 ///< ltm scale curve
    FLOAT      LTM_LCE_curve[65];                   ///< ltm lce curve
    FLOAT      tmc_reserve_lut[65];                 ///< reserve lut
    // Add new members at the end of the struct and to TMCOutputData
};

/// @brief Input Data to TMC141 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct TMC141InputData
{
    tmc_1_4_1::chromatix_tmc14Type* pChromatix;                          ///< Input Chromatix tunning data
    UINT32                          chipsetVersion;                      ///< Chipset version
    FLOAT                           DRCGain;                             ///< Input trigger value:  DRCGain
    FLOAT                           luxIndex;                            ///< Input trigger value:  Lux index
    FLOAT                           prevluxIndex;                        ///< Lux index of previous frame
    FLOAT                           DRCGainDark;                         ///< Input trigger value:  drcGainDarkFLOAT
    FLOAT*                          pPreviousCalculatedHistogram;        ///< calculated histogram for next frame
    FLOAT*                          pPreviousCalculatedCDF;              ///< calculated CDF for next frame
    FLOAT                           previousCalculatedFacelevel;         ///< calculated facelevel for next frame
    UINT32                          frameNumber;                         ///< Frame number
    UINT32*                         pGRHist;                             ///< BHIST GR stats
    ADRCData*                       pAdrcOutputData;                     ///< Pointer to the input data for adrc calculation
    // NOWHINE NC008: Share code with system team
    FLOAT                           GammaInput[Gamma151TableSize];       ///< IPE gamma output from IPE gamma15 module
    struct FDData*                  pFDData_tmc;                         ///< Face data
    UINT32                          imageWidth;                          ///< Current Sensor Image Output Width
    UINT32                          imageHeight;                         ///< Current Sensor Image Output Height
    FLOAT                           face_level;                          ///< face_level
    FLOAT                           out_stats_fusion_long_range;         ///< out_stats_fusion_long_range
    FLOAT                           out_stats_fusion_long_str;           ///< out_stats_fusion_long_str
    FLOAT                           out_stats_fusion_medium_range;       ///< out_stats_fusion_medium_range
    FLOAT                           out_stats_fusion_medium_str;         ///< out_stats_fusion_medium_str
    FLOAT                           out_stats_fusion_short_range;        ///< out_stats_fusion_short_range
    BOOL                            adrcGTMEnable;                       ///< GTM is enabled or not for ADRC
    BOOL                            adrcLTMEnable;                       ///< LTM is enabled or not for ADRC
    FLOAT                           scaleRatioWB_current;                ///< Scale Ratio current
    FLOAT                           faceAdjRatioPrev;                    ///< Face Adjust Ratio Prev
    FLOAT                           scaleRatioWB_prev;                   ///< Scale Ratio WB prev
    FLOAT                           faceLuma;                            ///< Face Luma CDF for the frame
    FLOAT                           faceConfidence;                      ///< Face Confidence for the frame
    // TMC 1.4 onwards
    VOID*                           pInterpolationData;                  ///< input memory for interpolation data
    BOOL                            isRealtimePipeline;                  ///< indicate realtime pipeline

    FLOAT                           tone_slider_add;                     ///< Slider Based Tuning
};

/// @brief output Data to AIDenoise IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct AIDenoiserOutputData
{
    FLOAT  denoisingStrength;                    ///< Denoise strength for noise reduction. Default 0.5
    FLOAT  colorSaturation;                      ///< Control color saturation. Default value 0
    FLOAT  tone;                                 ///< Control contrast enhancement. Default value 0.0
    FLOAT  detailEnhancement;                    ///< Control details enhancement. Default value 0
    FLOAT  vrt_enhance_factor;                   ///< Control VRT enhancement. Default value 0
    UINT8  vrt_gain_modulation_threshold_y;      ///< Control VRT gain modulation threshold for Y plane. Default value 0
    UINT8  vrt_gain_modulation_threshold_uv;     ///< Control VRT gain modulation threshold for UV plane. Default value 0
};

/// @brief output Data to HME IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct HMEOutputData
{
    uint32_t hcd_kappa;            ///< Lower value  recognize less significant corner
    uint32_t fpx_threshold;        ///< Corner with Harris measure value
    int32_t  robustness_threshold; ///< Robustness value above indicate valid Motion vector
    uint32_t transform_model;      ///< Defines which transform model to use during transform
    float    model_match_thr;      ///< L2 distacne between model estimation and measured motion vector
};

const UINT32 GeoLibFrameConfigQueueDepth = 2;
const UINT32 IQSettingCurrentIndex = 0;
const UINT32 IQSettingPrevIndex = 1;


/// @brief mask for identifying node for dumping geo lib  output
enum GeoLibMaskForNode
{
    GeoLibIPE   = 0x1,    ///< Mask for IPE
    GeoLibBPS   = 0x2,    ///< Mask for BPS
    GeoLibCVP   = 0x4,    ///< Mask for CVP
};

/// @brief data represeting pre ai geolib perframe and init outputs
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct preaiConfigGeolibdata
{
    GeoLibImageSize inSize;          ///< Video: max{video, display} IFE buffer size
                                     ///  Still: Post-filter stage output (BPS regOut as input not supported)
    BOOL            isStillFlow;     ///< Snapshot flow
    NcLibAiNspCfg   preIPEOutCfg;    ///< IPE output config
};

/// @brief data represeting ai Init geolib and init outputs
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct aiInitConfigGeolibdata
{
    NcLibAiIpeInitIn            ipeInitIn;                                      ///< ipe one-time inputs
    NcLibAiIpeCfg               ipeOutConfig;                                   ///< ipe one-time output configuration
};

/// @brief data represeting realtime geolib perframe and init outputs
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct realtimeGeolibdata
{
    GeoLibVideoFlowMode         flowMode;                                       ///< geolib flow mode
    GeoLib2InitIn               ipeInitIn;                                      ///< ipe one-time inputs
    GeoLib2StreamCfg            ipeOutConfig;                                   ///< ipe one-time output configuration
    GeoLib2CalcFrameIn          calcFrameIn;                                    ///< calc Frame inputs for VSR and MCTF IPE
    GeoLib2EvaCalcFrameIn       evaCalcFrameIn;                                 ///< calc Frame inputs for EVA
    GeoLib2FrameCfg             frameConfig[GeoLibFrameConfigQueueDepth];       ///< Output IPE VSR and MCTF configurations
    GeoLib2IcaMapping           icaMapping[GeoLibFrameConfigQueueDepth];        ///< EVA ICA (GCE) VSR configuration
    GeoLib2Eva31CalcFrameOut    vsrGce;                                         ///< EVA ICA (GCE) VSR out
};

/// @brief data represeting non realtime geolib perframe and init outputs
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct nonrealtimeGeolibdata
{
    GeoLibStillFrameConfigWrapper stillFrameConfig;    ///< geo lib still frame configuration
};

/// @brief data represeting geolib perframe and init outputs  in realtime and non realtime
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct GeoLibParameters
{
    BOOL modeRealtime;         ///< real time or non realtime 1 is realtime 0 is non realtime
    BOOL srEnable;             ///< srEnable flag
    BOOL isVSR;                ///< Flag indicationg vsr context
    union GeolibStreamData
    {
        realtimeGeolibdata        rtGeolibdata;         ///< realtime geolib data
        nonrealtimeGeolibdata     nonRTgeolibData;      ///< non realtime geolib data
    } geoLibStreamData;
    preaiConfigGeolibdata         preaiGeolibData;      ///< pre-AI config geolib data
    aiInitConfigGeolibdata        aiInitGeolibData;     ///< AI Init config geolib data for warp and scale pass
};

static const UINT32 MaxOEMTriggers = 4; ///< Max number of OEM trigger sections

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @brief Structure for Preference config data
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct PreferenceConfigData
{
    FLOAT   bad_pixel_correction;
    FLOAT   Luma_noise_correction;
    FLOAT   chroma_noise_correction;
    FLOAT   multiframe_denoising;
    FLOAT   ghost_reduction;
    FLOAT   brightness;
    FLOAT   contrast;
    FLOAT   color;
    FLOAT   sharpness;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @brief Structure for Preference Configurations
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct  PreferenceConfigs
{
    BOOL                   preferenceModuleEnable;
    BOOL                   preferenceDataChanged;
    PreferenceConfigData   preferenceCfgData;
};

/// @brief Input Data to all ISP IQ Module
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct ISPIQTriggerData
{
    FLOAT                       AECexposureTime;                          ///< Input trigger value:  exposure time ratio
    FLOAT                       AECexposureGainRatio;                     ///< Input trigger value:  exposure gain ratio
    FLOAT                       AECexposureGainRatioT1T2;                 ///< Input trigger value:  L/M exposure gain ratio
    FLOAT                       AECexposureGainRatioT2T3;                 ///< Input trigger value:  M/S exposure gain ratio
    FLOAT                       AECexposureGainRatioT1T3;                 ///< Input trigger value:  L/S exposure gain ratio
    FLOAT                       AECexposureTimeRatioT1T2;                 ///< Input trigger value:  L/M exposure time ratio
    FLOAT                       AECexposureTimeRatioT2T3;                 ///< Input trigger value:  M/S exposure time ratio
    FLOAT                       AECexposureTimeRatioT1T3;                 ///< Input trigger value:  L/S exposure time ratio
    FLOAT                       AECexposureSensitivityRatioT1T2;          ///< Input trigger value:  L/M sensitivity ratio
    FLOAT                       AECexposureSensitivityRatioT2T3;          ///< Input trigger value:  M/S sensitivity ratio
    FLOAT                       AECexposureSensitivityRatioT1T3;          ///< Input trigger value:  L/S sensitivity ratio
    FLOAT                       AECSensitivity;                           ///< Input trigger value:  AEC sensitivity data
    FLOAT                       AECGain;                                  ///< Input trigger value:  AEC Gain Value
    FLOAT                       AECShortGain;                             ///< Input trigger value:  AEC Short Gain Value
    FLOAT                       AECLuxIndex;                              ///< Input trigger value:  Lux index
    FLOAT                       AWBleftGGainWB;                           ///< Input trigger value:  AWB G channel gain
    FLOAT                       AWBleftBGainWB;                           ///< Input trigger value:  AWB B channel gain
    FLOAT                       AWBleftRGainWB;                           ///< Input trigger value:  AWB R channel gain
    FLOAT                       AWBColorTemperature;                      ///< Input Trigger value:  AWB CCT value
    FLOAT                       AWBSAOuptutConf[AWBAlgoSAOutputConfSize]; ///< Input Trigger value:  AWB SA output confidence
    FLOAT                       DRCGain;                                  ///< Input trigger value:  DRCGain
    FLOAT                       DRCGainDark;                              ///< Input trigger value:  DRCGainDark
    FLOAT                       lensPosition;                             ///< Input trigger value:  Lens position
    FLOAT                       lensZoom;                                 ///< Input trigger value:  Lens Zoom
    FLOAT                       instance;                                 ///< Input trigger value:  Cascade IQ instance ID
    FLOAT                       colorFormat;                              ///< Input trigger value:  Color format
    FLOAT                       postScaleRatio;                           ///< Input trigger value:  Post scale ratio
    FLOAT                       preScaleRatio;                            ///< Input trigger value:  Pre scale ratio
    FLOAT                       dsxSRScaleRatio;                          ///< Input trigger value:  DSX Super Resolution
    FLOAT                       totalScaleRatio;                          ///< Input trigger value:  Total scale ratio
    FLOAT                       AECPrevLuxIndex;                          ///< Lux index of previous frame
    FLOAT                       LEDSensitivity;                           ///< LED Sensitivity
    FLOAT                       LEDFirstEntryRatio;                       ///< Dual LED First Entry Ratio
    FLOAT                       AECYHistStretchClampOffset;               ///< Y Hist Clamp Offset
    FLOAT                       AECYHistStretchScaleFactor;               ///< Y Hist Scale Factor
    FLOAT                       overrideDarkBoostOffset;                  ///< Override dark boost offset for user control
    FLOAT                       overrideFourthToneAnchor;                 ///< Override fourth tone anchor for user control
    FLOAT                       previousCalculatedFaceLevel;              ///< Previous calculated face level for TMC13
    FLOAT                       predictiveGain;                           ///< digital gain from predictive convergence
                                                                          ///  algorithm, to be applied to ISP module (AWB)
    UINT8                       bayerPattern;                             ///< Bayer pattern
    UINT32                      sensorImageWidth;                         ///< Current Sensor Image Output Width
    UINT32                      sensorImageHeight;                        ///< Current Sensor Image Output Height
    UINT32                      CAMIFWidth;                               ///< Width of CAMIF Output
    UINT32                      CAMIFHeight;                              ///< Height of CAMIF Output
    UINT32                      sensorFullResolutionWidth;                ///< Sensor active array width
    UINT32                      sensorFullResolutionHeight;               ///< Sensor active array height
    UINT32                      fullInputWidth;                           ///< full input width, HNR input stream width
    UINT32                      fullInputHeight;                          ///< full input height, HNR input stream height
    UINT32                      ds4InputWidth;                            ///< LENR input stream width
    UINT32                      ds4InputHeight;                           ///< LENR input stream height
    UINT16                      numberOfLED;                              ///< Number of LED
    UINT32                      sensorOffsetX;                            ///< Current Sensor Image Output horizontal offset
    UINT32                      sensorOffsetY;                            ///< Current Sensor Image Output vertical offset
    UINT32                      blackLevelOffset;                         ///< Black level offset
    UINT32                      maxPipelineDelay;                         ///< Maximum pipeline delay
    UINT32                      MFHDRNumExposures;                        ///< Input number of exposures
    UINT32                      scale;                                    ///< Include Sensor scalei*Binning*CSID&SFE Binning
    BOOL                        zzHDRModeEnable;                          ///< Indicates if BPS HDR is enabled
    BOOL                        enableAECYHistStretching;                 ///< Enable/Disable AEC Y Histogram Stretching
    SWTMCVersion                enabledTMCversion;                        ///< Indicates which version of TMC is enabled.
                                                                          ///  Default is TMC10
    SWNRMVersion                enabledNRMversion;                        ///< Indicates which version of NRM is enabled.
                                                                          ///  Default is NRM10
    VOID*                       pOEMTrigger[MaxOEMTriggers];              ///< OEM Trigger Pointer Array, Place Holder
                                                                          ///  Element 0: OEM_AEC_IQTrigger
                                                                          ///  Element 1: OEM_AWB_IQTrigger
                                                                          ///  Element 2: OEM_AF_IQTrigger
                                                                          ///  Element 3: OEM_Reserve_IQTrigger
    VOID*                       pLibInitialData;                          ///< Customtized Library initial data block
    ParsedBHistStatsOutput*     pParsedBHISTStats;                        ///< Pointer to parsed BHIST stats
    ParsedHDRBHistStatsOutput*  pParsedHDRBHISTStats;                     ///< Pointer to parsed HDR BHIST stats
    ParsedHDRBEStatsOutput*     pParsedHDRBEStats;                        ///< Pointer to parsed HDR BE stats
    ParsedIHistStatsOutput*     pParsedIHISTStats;                        ///< Pointer to parsed iHIST stats
    ADRCData*                   pADRCData;                                ///< Pointer to ADRC data
    NRMConfigs*                 pNRMConfigs;                              ///< NRM (noise reduction module) configurations
    VOID*                       pNRMReserveData;                          ///< NRM Reserve Data
    VOID*                       pNRMInterpolationData;                    ///< NRM Interpolation Data

    FLOAT*                      pPreviousCalculatedHistogram;             ///< Pointer to previous calculated histogram
                                                                          ///  for TMC12
    FLOAT*                      pPreviousCalculatedCDF;                   ///< Pointer to previous calculated CDF for TMC12
    FLOAT                       shortBlendRatio;                          ///< Short Blend Ratio
    UINT8                       GTMCompensationEnable;                    ///< Enable GTM Compensation from WB
    UINT8                       highlightKeepEnable;                      ///< Enable GTM hight light enable
    FLOAT                       GTMRatioKnee;                             ///< Ratio for GTM Knee ponts from WB
    FLOAT                       WBScaleRatio;                             ///< WB scale Ratio
    FLOAT                       WBScaleRatioPrevious;                     ///< WB scale Ratio Prev
    FLOAT                       faceLuma;                                 ///< Face Luma from 3A
    FLOAT                       predictiveGainsSFE[EXPOSURE_MAX_COUNT];   ///< AEC predictive gains for SFE
    FLOAT                       faceConfidence;                           ///< Face Confidence for the frame
    UINT32                      colorFormatTrigger;                       ///< Indicates color format
    PreferenceConfigs*          pPrefConfigs;                             ///< Preference configurations
};

// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct ICANcLibOutputData
{
    UINT32 ICARegSize;          ///< ICA register size for NClib
    UINT32 ICAChromatixSize;    ///< ICA chromatix size for nclib
};

// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct ANRNcLibOutputData
{
    UINT32 ANR10ChromatixSize;    ///< ANR chromatix size for nclib
};

// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct SGMNcLibOutputData
{
    UINT32 sgm10ChromatixSize;    ///< SGM chromatix size for nclib
};

// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct BLURNcLibOutputData
{
    UINT32 blur10ChromatixSize;    ///< BLUR chromatix size for nclib
};

// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LCACNcLibOutputData
{
    UINT32 lcac11ChromatixSize;    ///< LCAC chromatix size for nclib
};

// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LCACNcLib111OutputData
{
    UINT32 lcac111ChromatixSize;   ///< LCAC chromatix size for nclib
};

// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct JBUNcLibOutputData
{
    UINT32 jbu10ChromatixSize;    ///< BLUR chromatix size for nclib
};

// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct VSENcLibOutputData
{
    UINT32 vse10ChromatixSize;    ///< BLUR chromatix size for nclib
};

// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct TFNcLibOutputData
{
    UINT32 TFChromatixSize;    ///< TF chromatix size for nclib
};

// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct DMMNcLibOutputData
{
    UINT32 dmm10ChromatixSize;    ///< DMM chromatix size for nclib
};

// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct DSXNcLibOutputData
{
    UINT32 DSX10OutputDataSize;  ///< DSX Output data size
    UINT32 DSX10ChromatixSize;   ///< Dsx NC lib chromatix size
};

// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct DSX101NcLibOutputData
{
    UINT32 DSX101OutputDataSize;  ///< DSX Output data size
    UINT32 DSX101ChromatixSize;   ///< Dsx NC lib chromatix size
};

struct _ImageDimension;
struct _WindowRegion;
struct _WindowRegionF;

/// @brief IQ OEM Custom tuning data
const UINT32 ISPOEMTuningData    = 256;

/// @brief Structure to encapsulate custom OEM data from IQ modules
/// NOWHINE NC004c: OEM data
struct ISPOEMTuningMetadata
{
    FLOAT ISPOEMTuningData[ISPOEMTuningData];          ///< OEM data
};

/// @brief Structure to hold generic data buffer information
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct ISPIQTuningDataBuffer
{
    SIZE_T  size;       ///< Size of the buffer
    VOID*   pBuffer;    ///< Buffer pointer
};

/// @brief Input Data to AIDENOISER10 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct AIDENOISER10InputData
{
    aidenoiser_1_0_0::chromatix_aidenoiser10Type*   pChromatix;         //< Input Chromatix tunning data
    BOOL                                            moduleEnable;       ///< Module enable flag
    FLOAT                                           totalScaleRatio;    ///< Input trigger value:  totalScaleRatio
    FLOAT                                           exposureTime;       ///< Input trigger value:  exposureTime
    FLOAT                                           AECSensitivity;     ///< Input trigger value:  AECSensitivity
    FLOAT                                           exposureGainRatio;  ///< Input trigger value:  exposureGainRatio
    FLOAT                                           luxIndex;           ///< Input trigger value:  luxIndex
    FLOAT                                           AECGain;            ///< Input trigger value:  AECGain
    FLOAT                                           DRCGain;            ///< Input trigger value:  DRCGain
};

/// @brief Input Data to AIDENOISER20 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct AIDENOISER20InputData
{
    aidenoiser_2_0_0::chromatix_aidenoiser20Type*   pChromatix;         ///< Input Chromatix tunning data
    BOOL                                            moduleEnable;       ///< Module enable flag
    FLOAT                                           totalScaleRatio;    ///< Input trigger value:  totalScaleRatio
    FLOAT                                           exposureTime;       ///< Input trigger value:  exposureTime
    FLOAT                                           AECSensitivity;     ///< Input trigger value:  AECSensitivity
    FLOAT                                           exposureGainRatio;  ///< Input trigger value:  exposureGainRatio
    FLOAT                                           luxIndex;           ///< Input trigger value:  luxIndex
    FLOAT                                           AECGain;            ///< Input trigger value:  AECGain
    FLOAT                                           DRCGain;            ///< Input trigger value:  DRCGain
};

/// @brief Input Data to AIDENOISER201 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct AIDENOISER201InputData
{
    aidenoiser_2_0_1::chromatix_aidenoiser20Type* pChromatix;                      ///< Input Chromatix tunning data
    BOOL                                          moduleEnable;                    ///< Module enable flag
    VOID*                                         pAIDENOISER201InterpolationData; ///< input memory for interpolation data
    FLOAT                                         out_denoisingStrength;           ///< denoise strength
    FLOAT                                         out_tone;                        ///< tone, color contrast enhancement
    FLOAT                                         out_colorSaturation;             ///< color saturation
    FLOAT                                         out_detailEnhancement;           ///< detail enhancement
};

/// @brief Input Data to AIDENOISER211 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct AIDENOISER211InputData
{
    aidenoiser_2_1_1::chromatix_aidenoiser21Type*   pChromatix;             ///< Input Chromatix tunning data
    BOOL                            moduleEnable;           ///< Module enable flag
    VOID*                           pAIDENOISER211InterpolationData;           ///< input memory for interpolation data
    FLOAT                           color_saturation;       ///< color_saturation
    FLOAT                           denoising_strength;     ///< denoising_strength
    FLOAT                           tone;                  ///< tone value to calculate gammacurve
    FLOAT                           detail_enhancement;    ///< detail_enhancement
    FLOAT                           vrt_enhance_factor;     ///< vrt_enhance_factor
    UINT8                           vrt_gain_modulation_threshold_y;    ///< vrt_gain_modulation_threshold_y
    UINT8                           vrt_gain_modulation_threshold_uv;   ///< vrt_gain_modulation_threshold_uv
};

/// @brief This structures encapsulate noise adjustment configure type
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct NRAdjustConfigureType
{
    BOOL   anr_adj_enable;              ///< Enable flag for ANR adjustment
    BOOL   hnr_adj_enable;              ///< Enable flag for HNR adjustment
    BOOL   tf_adj_enable;               ///< Enable flag for TF adjustment
};

/// @brief This structures encapsulate noise adjustment for ANR
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct NRAdjust_anr
{
    FLOAT luma_y_threshold_per_y[ANRThresholdPerY];   ///< luma_y_threshold_per_y array used by IQ calculation
    FLOAT luma_u_threshold_per_y[ANRThresholdPerY];   ///< luma_u_threshold_per_y array used by IQ calculation
    FLOAT luma_v_threshold_per_y[ANRThresholdPerY];   ///< luma_v_threshold_per_y array used by IQ calculation
    FLOAT chroma_y_threshold_per_y[ANRThresholdPerY]; ///< chroma_y_threshold_per_y array used by IQ calculation
    FLOAT chroma_u_threshold_per_y[ANRThresholdPerY]; ///< chroma_u_threshold_per_y array used by IQ calculation
    FLOAT chroma_v_threshold_per_y[ANRThresholdPerY]; ///< chroma_v_threshold_per_y array used by IQ calculation
};

/// @brief This structures encapsulate noise adjustment for TF
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct NRAdjust_tf
{
    FLOAT noise_params_y_ytb[TFParamYtabSize];        ///< noise_params_y_ytb array used by IQ calculation
    FLOAT noise_params_cb_ytb[TFParamYtabSize];       ///< noise_params_cb_ytb array used by IQ calculation
    FLOAT noise_params_cr_ytb[TFParamYtabSize];       ///< noise_params_cr_ytb array used by IQ calculation
};

/// @brief This structures encapsulate ANR noise adjustment data array
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct NRAdjust_ANRData
{
    NRAdjust_anr anr_adj_data[IPEPassesMax];          ///< ANR adjustment data
};

/// @brief This structures encapsulate TF noise adjustment data array
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct NRAdjust_TFData
{
    NRAdjust_tf tf_adj_data[IPEPassesMax];            ///< TF adjustment data
};

/// @brief This structures encapsulate IFE /BPS GTM Info output
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct GTMInfo
{
    UINT64  yRatioGtm[YRatioGTMSizeMax];        ///< Max yRatioGtm array data used by IQ calculation
    UINT32  yRatioBase[YRatioGTMSizeMax];       ///< Max yRatioBase array data used by IQ calculation
    INT32   yRatioSlope[YRatioGTMSizeMax];      ///< Max yRatioSlope array data used by IQ calculation
    UINT8   yRatioSlopeQ[YRatioGTMSizeMax];     ///< Max yRatioSlopeQ array data used by IQ calculation
    BOOL    enabledIFEGTMAdjust;                ///< Enable flag for noise adjustment based on IFE GTM
    BOOL    enabledBPSGTMAdjust;                ///< Enable flag for noise adjustment based on BPS GTM
    BOOL    enabledOPEGTMAdjust;                ///< Enable flag for noise adjustment based on OPE GTM
    UINT32  calculatedYRatioGTMSize;            ///< Actual size of calculated yRatioGtm array
};

/// @brief This structures encapsulate SFE/IPE SW ghost detection Info output
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct SWGDOutput {
    BOOL    isEnabled;                                      ///< If this module is enabled
    FLOAT   MACMotionAdjustScale1[SWGD10SFEMaximumRatio];   ///< SFE HDR MAC motion threshold1 adjust scale
    FLOAT   MACMotionAdjustScale2[SWGD10SFEMaximumRatio];   ///< SFE HDR MAC motion threshold2 adjust scale
    FLOAT   IPEMacMotionScale[SWGD10IPEMaximumRatio];       ///< IPE HDR MAC motion C1/C2/C3/C4/NoiseLut adjust scale
};

/// @brief Qsegnet111 OutputData
struct Qsegnet111OutputData
{
    VOID*                   pQSegInterpolationOutput;     ///< Qsegnet interpolation output
};

/// @brief Input Data to BPCBCC50 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct BPCBCC50InputData
{
    VOID*                                 pHWSetting;          ///< Pointer to the HW Setting Object
    bpcbcc_5_0_0::chromatix_bpcbcc50Type* pChromatix;          ///< Input Chromatix tunning data
    BOOL                                  moduleEnable;        ///< Module enable flag
    BOOL                                  symbolIDChanged;     ///< Symbol IOD changed, reload triggers
    UINT32                                blackLevelOffset;    ///< Black Level Offset
    FLOAT                                 DRCGain;             ///< Input trigger value:  DRCGain
    FLOAT                                 exposureTime;        ///< Input trigger value:  exposure time
    FLOAT                                 exposureGainRatio;   ///< Input trigger value:  exposure gain ratio
    FLOAT                                 AECSensitivity;      ///< Input trigger value:  AEC sensitivity data
    FLOAT                                 luxIndex;            ///< Input trigger value:  Lux index
    FLOAT                                 realGain;            ///< Input trigger value:  Real Gain Value
    FLOAT                                 digitalGain;         ///< Input trigger value:  Digital Gain Value
    FLOAT                                 leftGGainWB;         ///< G channel gain to adjust white balance
    FLOAT                                 leftBGainWB;         ///< B channel gain to adjust white balance
    FLOAT                                 leftRGainWB;         ///< R channel gain to adjust white balance
    FLOAT                                 nonHdrMultFactor;    ///< Non HDR MultFactor
    VOID*                                 pInterpolationData;  ///< input memory for interpolation data
    FLOAT                                 bad_pixel_correction;///< Slider Based Tuning
};

/// @brief Input Data to BPCBCC50 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct BPCBCC501InputData
{
    VOID*                                 pHWSetting;          ///< Pointer to the HW Setting Object
    bpcbcc_5_0_1::chromatix_bpcbcc50Type* pChromatix;          ///< Input Chromatix tunning data
    BOOL                                  moduleEnable;        ///< Module enable flag
    BOOL                                  symbolIDChanged;     ///< Symbol IOD changed, reload triggers
    UINT32                                blackLevelOffset;    ///< Black Level Offset
    FLOAT                                 DRCGain;             ///< Input trigger value:  DRCGain
    FLOAT                                 exposureTime;        ///< Input trigger value:  exposure time
    FLOAT                                 exposureGainRatio;   ///< Input trigger value:  exposure gain ratio
    FLOAT                                 AECSensitivity;      ///< Input trigger value:  AEC sensitivity data
    FLOAT                                 luxIndex;            ///< Input trigger value:  Lux index
    FLOAT                                 realGain;            ///< Input trigger value:  Real Gain Value
    FLOAT                                 digitalGain;         ///< Input trigger value:  Digital Gain Value
    FLOAT                                 leftGGainWB;         ///< G channel gain to adjust white balance
    FLOAT                                 leftBGainWB;         ///< B channel gain to adjust white balance
    FLOAT                                 leftRGainWB;         ///< R channel gain to adjust white balance
    FLOAT                                 nonHdrMultFactor;    ///< Non HDR MultFactor
    VOID*                                 pInterpolationData;  ///< input memory for interpolation data
    FLOAT                                 bad_pixel_correction;///< Slider Based Tuning
};
/// @brief Input Data to CC12 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct CC12InputData
{
    VOID*                         pHWSetting;         ///< Pointer to the HW Setting Object
    cc_1_2_0::chromatix_cc12Type* pChromatix;         ///< Chromatix data for CC12 module
    FLOAT                         DRCGain;            ///< Input trigger value:  DRCGain
    FLOAT                         exposureTime;       ///< Input trigger value:  exposure time
    FLOAT                         exposureGainRatio;  ///< Input trigger value:  exposure gain ratio
    FLOAT                         AECSensitivity;     ///< Input trigger value:  AEC sensitivity data
    FLOAT                         luxIndex;           ///< Input trigger value:  Lux index
    FLOAT                         AECGain;            ///< Input trigger value:  Aec Gain Value
    FLOAT                         colorTemperature;   ///< Input trigger value:  AWB colorTemperature
    FLOAT                         LEDTrigger;         ///< Input trigger value:  LED Index
    FLOAT                         LEDFirstEntryRatio; ///< Ratio of Dual LED
    UINT16                        numberOfLED;        ///< Number of LED
    VOID*                         pInterpolationData; ///< input memory for interpolation data
};

/// @brief Input Data to CC12 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct CC121InputData
{
    VOID*                         pHWSetting;         ///< Pointer to the HW Setting Object
    cc_1_2_1::chromatix_cc12Type* pChromatix;         ///< Chromatix data for CC12 module
    FLOAT                         DRCGain;            ///< Input trigger value:  DRCGain
    FLOAT                         exposureTime;       ///< Input trigger value:  exposure time
    FLOAT                         exposureGainRatio;  ///< Input trigger value:  exposure gain ratio
    FLOAT                         AECSensitivity;     ///< Input trigger value:  AEC sensitivity data
    FLOAT                         luxIndex;           ///< Input trigger value:  Lux index
    FLOAT                         AECGain;            ///< Input trigger value:  Aec Gain Value
    FLOAT                         colorTemperature;   ///< Input trigger value:  AWB colorTemperature
    FLOAT                         LEDTrigger;         ///< Input trigger value:  LED Index
    FLOAT                         LEDFirstEntryRatio; ///< Ratio of Dual LED
    UINT16                        numberOfLED;        ///< Number of LED
    VOID*                         pInterpolationData; ///< input memory for interpolation data
};
/// @brief CCM Manual Setting Data
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct ManualSetting
{
    BOOL                          manualCCMEnable;        ///< Enable Manual Control CCM
    BOOL                          manualAWBCCMEnable;     ///< Enable AWB CCM
    FLOAT*                        pManualCCM;             ///< Manual CCM Buffer
    UINT                          arraySize;              ///< Used to convert ManualCCM from 2D Array to 1D Array
    AWBCCMParams*                 pAWBCCM;                ///< AWB CCM Buffer
    cc_1_3_0::chromatix_cc13Type* pChromatix;             ///< Chromatix pointer to handle the q factor
};

/// @brief CCM131 Manual Setting Data
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct CC131ManualSetting
{
    BOOL                          manualCCMEnable;        ///< Enable Manual Control CCM
    BOOL                          manualAWBCCMEnable;     ///< Enable AWB CCM
    FLOAT*                        pManualCCM;             ///< Manual CCM Buffer
    UINT                          arraySize;              ///< Used to convert ManualCCM from 2D Array to 1D Array
    AWBCCMParams*                 pAWBCCM;                ///< AWB CCM Buffer
    cc_1_3_1::chromatix_cc13Type* pChromatix;             ///< Chromatix pointer to handle the q factor
};

/// @brief CCM131 Manual Setting Data
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct CC141ManualSetting
{
    BOOL                          manualCCMEnable;        ///< Enable Manual Control CCM
    BOOL                          manualAWBCCMEnable;     ///< Enable AWB CCM
    FLOAT*                        pManualCCM;             ///< Manual CCM Buffer
    UINT                          arraySize;              ///< Used to convert ManualCCM from 2D Array to 1D Array
    AWBCCMParams*                 pAWBCCM;                ///< AWB CCM Buffer
    cc_1_4_1::chromatix_cc14Type* pChromatix;             ///< Chromatix pointer to handle the q factor
};

static const UINT32 QPDPC10DMILengthDword = 64;

/// @brief Input Data to QPDPC10 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct QPDPC10InputData
{
    VOID*                               pHWSetting;                             ///< Pointer to the HW Setting Object
    qpdpc_1_0_0::chromatix_qpdpc10Type* pChromatix;                             ///< Chromatix data for QPDPC10 module
    BOOL                                BPCEnable;                              ///< BPC Module enable flag
    BOOL                                PDPCEnable;                             ///< PDPC Module enable flag
    FLOAT                               DRCGain;                                ///< trigger value:  drcGain
    FLOAT                               exposureTime;                           ///< trigger value:  exporsure time
    FLOAT                               AECSensitivity;                         ///< trigger value:  AEC sensitivity data
    FLOAT                               exposureGainRatio;                      ///< trigger value: exposure gain ratio
    FLOAT                               luxIndex;                               ///< trigger value: Lux index
    FLOAT                               AECGain;                                ///< trigger value: Digital Gain Value
    FLOAT                               rGainWB;                                ///< R channel gain to adjust white balance
    FLOAT                               bGainWB;                                ///< B channel gain to adjust white balance
    FLOAT                               gGainWB;                                ///< G channel gain to adjust white balance
    UINT8                               lutBankSel;                             ///< LUT bank need for this frame
    UINT16                              pipelineId;                             ///< Pipeline Id
    UINT16                              PDAFGlobaloffsetX;                      ///< PDAF Global Offset X
    UINT16                              PDAFGlobaloffsetY;                      ///< PDAF Global Offset Y
    UINT32                              PDAFBlockWidth;                         ///< PDAF Block Width
    UINT32                              PDAFBlockHeight;                        ///< PDAF Block Height
    UINT32                              PDAFPixelCount;                         ///< PD Pixel Count
    UINT32                              blackLevelOffset;                       ///< Black Level Offset
    UINT32                              imageWidth;                             ///< Current Sensor Image Output Width
    UINT32                              imageHeight;                            ///< Current Sensor Image Output Height
    SensorType                          sensorType;                             ///< Sensor type
    PDPixelCoordinates                  PDAFPixelCoords[MAX_CAMIF_PDAF_PIXELS]; ///< Pixel Coordinates
    VOID*                               pInterpolationData;                     ///< input memory for interpolation data
    VOID*                               pUnpackedData;                          ///< Pointer to the Unpacked Data
};
static const UINT32 QPDPC101DMILengthDword = 64;

/// @brief Input Data to QPDPC101 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct QPDPC101InputData
{
    VOID*                               pHWSetting;                             ///< Pointer to the HW Setting Object
    qpdpc_1_0_1::chromatix_qpdpc10Type* pChromatix;                             ///< Chromatix data for QPDPC101 module
    BOOL                                BPCEnable;                              ///< BPC Module enable flag
    BOOL                                PDPCEnable;                             ///< PDPC Module enable flag
    FLOAT                               rGainWB;                                ///< R channel gain to adjust white balance
    FLOAT                               bGainWB;                                ///< B channel gain to adjust white balance
    FLOAT                               gGainWB;                                ///< G channel gain to adjust white balance
    UINT8                               lutBankSel;                             ///< LUT bank need for this frame
    UINT16                              pipelineId;                             ///< Pipeline Id
    UINT16                              PDAFGlobaloffsetX;                      ///< PDAF Global Offset X
    UINT16                              PDAFGlobaloffsetY;                      ///< PDAF Global Offset Y
    UINT32                              PDAFBlockWidth;                         ///< PDAF Block Width
    UINT32                              PDAFBlockHeight;                        ///< PDAF Block Height
    UINT32                              PDAFPixelCount;                         ///< PD Pixel Count
    UINT32                              blackLevelOffset;                       ///< Black Level Offset
    UINT32                              imageWidth;                             ///< Current Sensor Image Output Width
    UINT32                              imageHeight;                            ///< Current Sensor Image Output Height
    SensorType                          sensorType;                             ///< Sensor type
    PDPixelCoordinates                  PDAFPixelCoords[MAX_CAMIF_PDAF_PIXELS]; ///< Pixel Coordinates
    VOID*                               pInterpolationData;                     ///< input memory for interpolation data
    VOID*                               pUnpackedData;                          ///< Pointer to the Unpacked Data
};

/// @brief XCFA Input Data
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct XCFAInputData
{
    UINT8    cfaArray[64];          ///< input CFA
    UINT8    cfaPatternOffsetX;     ///< cfa pattern offset x
    UINT8    cfaPatternOffsetY;     ///< cfa pattern offset y
    UINT8    repeatCycle;           ///< repeat cycle in input frame
};

/// @brief XCFA Input Data
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct XCFAPDPC201Stripe
{
    UINT16    PDAFTableXOffset;       ///< pdaf_table_x_offset
    UINT16    CFAPatternOffsetX;      ///< CFA_pattern_offset_x
    UINT16    PDAFGlobalOffsetX;      ///< pdaf_global_offset_x
    UINT16    PDAFXEnd;               ///< pdaf_x_end
};

/// @brief Input Data to XCFAPDPC201 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct XCFAPDPC201InputData
{
    xcfapdpc_2_0_1::chromatix_xcfapdpc20Type* pChromatix;                              ///< Chromatix data
    cmc_1_0_0::chromatix_cmc10Type*           pCmcChromatix;                           ///< Input CMC Chromatix tuning data
    BOOL                                      BPCEnable;                               ///< BPC Module enable flag
    BOOL                                      PDPCEnable;                              ///< PDPC Module enable flag
    UINT32                                    imageWidth;                              ///< Current Sensor Image Output Width
    UINT32                                    imageHeight;                             ///< Current Sensor Image Output Height
    SensorType                                sensorType;                              ///< Sensor type
    UINT8                                     lutBankSel;                              ///< LUT bank need for this frame
    UINT32                                    blackLevelOffset;                        ///< Black Level Offset
    FLOAT                                     rGainWB;                                 ///< R channel gain to adjust WB
    FLOAT                                     bGainWB;                                 ///< B channel gain to adjust WB
    FLOAT                                     gGainWB;                                 ///< G channel gain to adjust WB
    UINT16                                    PDAFGlobaloffsetX;                       ///< PDAF Global Offset X
    UINT16                                    PDAFGlobaloffsetY;                       ///< PDAF Global Offset Y
    UINT32                                    PDAFBlockWidth;                          ///< PDAF Block Width
    UINT32                                    PDAFBlockHeight;                         ///< PDAF Block Height
    UINT32                                    PDAFPixelCount;                          ///< PD Pixel Count
    PDPixelCoordinates                        PDAFPixelCoords[MAX_CAMIF_PDAF_PIXELS];  ///< Pixel Coordinates
    XCFAInputData                             cFAInput;                                ///< XCFA Input Data
    VOID*                                     pInterpolationData;                      ///< input memory for interpolation data
    UINT16                                    pipelineId;                              ///< Pipeline Id
};

/// @brief Input Data to CFABIN12 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct CFABIN12InputData
{
    VOID*               pHWSetting;                             ///< Pointer to the HW Setting Object
    UINT8               QCFABinningEnable;                      ///< Flag for module enable
    UINT8               PDAwareEn;                              ///< Flag for PDAware Enable
    UINT32              imageWidth;                             ///< Current Sensor Image Output Width
    UINT32              imageHeight;                            ///< Current Sensor Image Output Height
    SensorType          sensorType;                             ///< Sensor type
    UINT8               lutBankSel;                             ///< LUT bank need for this frame
    UINT16              PDAFGlobaloffsetX;                      ///< PDAF Global Offset X
    UINT16              PDAFGlobaloffsetY;                      ///< PDAF Global Offset Y
    UINT32              PDAFBlockWidth;                         ///< PDAF Block Width
    UINT32              PDAFBlockHeight;                        ///< PDAF Block Height
    UINT32              PDAFPixelCount;                         ///< PD Pixel Count
    PDPixelCoordinates  PDAFPixelCoords[MAX_CAMIF_PDAF_PIXELS]; ///< Pixel Coordinates
};

/// @brief Input Data to XCFABIN20 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct XCFABIN201InputData
{
    xcfabinning_2_0_1::chromatix_xcfabinning20Type* pChromatix;     ///< Chromatix data for XCFABIN201 module
    cmc_1_0_0::chromatix_cmc10Type*         pCmcChromatix;  ///< Input CMC Chromatix tuning data

    UINT32                                  imageWidth;                             ///< Current Sensor Image Output Width
    UINT32                                  imageHeight;                            ///< Current Sensor Image Output Height
    SensorType                              sensorType;                             ///< Sensor type
    UINT8                                   lutBankSel;                             ///< LUT bank need for this frame
    FLOAT                                   rGainWB;                                ///< R channel gain to adjust white balance
    FLOAT                                   bGainWB;                                ///< B channel gain to adjust white balance
    FLOAT                                   gGainWB;                                ///< G channel gain to adjust white balance
    BOOL                                    PDAwareEn;                              ///< PD aware enable flag
    UINT16                                  PDAFGlobaloffsetX;                      ///< PDAF Global Offset X
    UINT16                                  PDAFGlobaloffsetY;                      ///< PDAF Global Offset Y
    UINT32                                  PDAFBlockWidth;                         ///< PDAF Block Width
    UINT32                                  PDAFBlockHeight;                        ///< PDAF Block Height
    UINT32                                  PDAFPixelCount;                         ///< PD Pixel Count
    PDPixelCoordinates                      PDAFPixelCoords[MAX_CAMIF_PDAF_PIXELS]; ///< Pixel Coordinates
    UINT8                                   numColors;                              ///< number of colors in input frame
    UINT32                                  blackLevelOff;                          ///< Pixel Black Level
    UINT8                                   bayerPattern;                           ///< Bayer Pattern
    XCFAInputData                           cFAInput;                               ///< XCFA Input Data
    UINT8                                   binOutputPattern[16];                   ///< binning output pattern
    UINT8                                   binning_mode_4x4;                       ///< binning mode for 4x4 CFA,
                                                                                    ///< 0: 4x4 binning, 1: 2x2 binning
    UINT8                                   roiXY[16][2];                           ///< ROI x,y for binning
    VOID*                                   pInterpolationData;                     ///< input memory for interpolation data
};

/// @brief Input Data to QCFADEMUX20 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct QCFADEMUX20InputData
{
    UINT32                              imageWidth;         ///< Current Sensor Image Output Width
    UINT32                              imageHeight;        ///< Current Sensor Image Output Height
    SensorType                          sensorType;         ///< Sensor type
    UINT8                               lutBankSel;         ///< LUT bank need for this frame
    UINT16                              PDAFGlobaloffsetX;  ///< PDAF Global Offset X
    UINT16                              PDAFGlobaloffsetY;  ///< PDAF Global Offset Y
    UINT32                              PDAFBlockWidth;     ///< PDAF Block Width
    UINT32                              PDAFBlockHeight;    ///< PDAF Block Height
    UINT32                              PDAFPixelCount;     ///< PD Pixel Count
    UINT8                               expCount;           ///< expCount
    PDPixelCoordinates                  PDAFPixelCoords[MAX_CAMIF_PDAF_PIXELS];  ///< Pixel Coordinates
    UINT64                              expMask[2 * 64];    ///< quad exposure mask
};

/// @brief Input Data to XCFADEMUX30 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct XCFADEMUX301InputData
{
    xcfademux_3_0_1::chromatix_xcfademux30Type* pChromatix;           ///< Chromatix data for XCFADEMUX301 module
    cmc_1_0_0::chromatix_cmc10Type*             pCmcChromatix;        ///< Input CMC Chromatix tuning data
    UINT32                                      imageWidth;           ///< Current Sensor Image Output Width
    UINT32                                      imageHeight;          ///< Current Sensor Image Output Height
    SensorType                                  sensorType;           ///< Sensor type
    UINT8                                       lutBankSel;           ///< LUT bank need for this frame
    FLOAT                                       rGainWB;              ///< R channel gain to adjust white balance
    FLOAT                                       bGainWB;              ///< B channel gain to adjust white balance
    FLOAT                                       gGainWB;              ///< G channel gain to adjust white balance
    UINT16                                      PDAFGlobaloffsetX;    ///< PDAF Global Offset X
    UINT16                                      PDAFGlobaloffsetY;    ///< PDAF Global Offset Y
    UINT32                                      PDAFBlockWidth;       ///< PDAF Block Width
    UINT32                                      PDAFBlockHeight;      ///< PDAF Block Height
    UINT8                                       PDAFPatternSize;      ///< Pattern size
    UINT32                                      PDAFPixelCount;       ///< PD Pixel Count
    UINT8                                       expCount;             ///< expCount
    UINT32                                      blackLevelOff;        ///< Pixel Black Level
    UINT8                                       bayerPattern;         ///< Bayer Pattern
    XCFAInputData                               cFAInput;             ///< XCFA Input Data
    PDPixelCoordinates                          PDAFPixelCoords[MAX_CAMIF_PDAF_PIXELS];  ///< Pixel Coordinates
    UINT64                                      expMask[2 * 64];      ///< quad exposure mask
    UINT8                                       binOutputPattern[16]; ///< binning output pattern
    UINT8                                       roiXY[16][2];         ///< ROI x,y for binning
    VOID*                                       pInterpolationData;   ///< input memory for interpolation data
};

/// @brief Input Data to COMPAND20 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct COMPAND20InputData
{
    VOID*                                       pHWSetting;    ///< Pointer to the HW Setting Object
    compand_2_0_0::chromatix_compand20Type*     pChromatix;    ///< Chromatix data for COMPAND20 module
    UINT16                                      pipelineId;    ///< Pipeline Id
    UINT32                                      outputBPP;     ///< Required O/p Bpp of SFE pipeline
    VOID*                                       pUnpackedData; ///< Pointer to the Unpacked Data
};

/// @brief Input Data to DECOMPAND20 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct DECOMPAND20InputData
{
    VOID*                                       pHWSetting;    ///< Pointer to the HW Setting Object
    decompand_2_0_0::chromatix_decompand20Type* pChromatix;    ///< Chromatix data for DECOMPAND20 module
    UINT16                                      pipelineId;    ///< Pipeline Id
    UINT32                                      inputBPP;      ///<  Input Bpp of BPS pipeline
    VOID*                                       pUnpackedData; ///< Pointer to the Unpacked Data
};

/// @brief Input Data to DECOMPAND21 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct DECOMPAND21InputData
{
    decompand_2_1_0::chromatix_decompand21Type* pChromatix;         ///< Chromatix data for DECOMPAND21 module
    UINT16                                      pipelineId;         ///< Pipeline Id
    VOID*                                       pUnpackedData;      ///< Pointer to the Unpacked Data
};

/// @brief Input Data to RGBCOMPAND20 IQ Algorithm
//// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct RGBCOMPAND20InputData
{
    VOID*                                             pHWSetting;         ///< Pointer to the HW Setting Object
    rgbcompand_2_0_0::chromatix_rgbcompand20Type*     pChromatix;         ///< Chromatix data for COMPAND20 module
    UINT16                                            pipelineId;         ///< Pipeline Id
    UINT32                                            outputBPP;          ///< Required O/p Bpp of IPE pipeline
    VOID*                                             pUnpackedData;      ///< Pointer to the Unpacked Data
};

/// @brief Input Data to RGBDECOMPAND20 IQ Algorithm
//// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct RGBDECOMPAND20InputData
{
    VOID*                                                 pHWSetting;         ///< Pointer to the HW Setting Object
    rgbdecompand_2_0_0::chromatix_rgbdecompand20Type*     pChromatix;         ///< Chromatix data for DECOMPAND20 module
    UINT16                                                pipelineId;         ///< Pipeline Id
    UINT32                                                inputBPP;           ///< Input Bpp of IPE pipeline
    VOID*                                                 pUnpackedData;      ///< Pointer to the Unpacked Data
};

/// @brief Input Data to REMOSAIC10 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct REMOSAIC10InputData
{
    remosaic_1_0_0::chromatix_remosaic10Type*   pChromatix;         ///< Chromatix data for REMOSAIC10 module
    SensorType                                  sensorType;         ///< sensor type info
    UINT32                                      imageWidth;         ///< sensor image width
    UINT32                                      imageHeight;        ///< sensor image height
    FLOAT                                       DRCGain;            ///< Input trigger value: drcgain
    FLOAT                                       exposureTime;       ///< Input trigger value: exposure time
    FLOAT                                       AECGain;            ///< Input trigger value: AEC Gain
    FLOAT                                       AECSensitivity;     ///< Input trigger value: AEC sensitivity
    FLOAT                                       luxIndex;           ///< Input trigger value: lux index
    FLOAT                                       exposureGainRatio;  ///< Input trigger value: exposure gain ratio
    FLOAT                                       rGainWB;            ///< R channel gain to adjust white balance
    FLOAT                                       bGainWB;            ///< B channel gain to adjust white balance
    FLOAT                                       gGainWB;            ///< G channel gain to adjust white balance
    UINT32                                      blackLevelOff;      ///< Pixel Black Level
    VOID*                                       pInterpolationData; ///< input memory for interpolation data
    UINT16                                      pipelineId;         ///< Pipeline Id
};

/// @brief Input Data to REMOSAIC101 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct REMOSAIC101InputData
{
    remosaic_1_0_1::chromatix_remosaic10Type*   pChromatix;         ///< Chromatix data for REMOSAIC10 module
    SensorType                                  sensorType;         ///< sensor type info
    UINT32                                      imageWidth;         ///< sensor image width
    UINT32                                      imageHeight;        ///< sensor image height
    FLOAT                                       DRCGain;            ///< Input trigger value: drcgain
    FLOAT                                       exposureTime;       ///< Input trigger value: exposure time
    FLOAT                                       AECGain;            ///< Input trigger value: AEC Gain
    FLOAT                                       AECSensitivity;     ///< Input trigger value: AEC sensitivity
    FLOAT                                       luxIndex;           ///< Input trigger value: lux index
    FLOAT                                       exposureGainRatio;  ///< Input trigger value: exposure gain ratio
    FLOAT                                       rGainWB;            ///< R channel gain to adjust white balance
    FLOAT                                       bGainWB;            ///< B channel gain to adjust white balance
    FLOAT                                       gGainWB;            ///< G channel gain to adjust white balance
    UINT32                                      blackLevelOff;      ///< Pixel Black Level
    VOID*                                       pInterpolationData; ///< input memory for interpolation data
    UINT16                                      pipelineId;         ///< Pipeline Id
    UINT8                                       bayerPattern;       ///< Bayer pattern
};

/// @brief Input Data to mlremosaic10 and IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct MLREMOSAIC101InputData
{
    mlremosaic_1_0_1::chromatix_mlremosaic10Type* pChromatix;       ///< Input Chromatix tunning data
    BOOL                                        moduleEnable;       ///< Module enable flag
    VOID*                                       pInterpolationData; ///< input memory for interpolation data
    SensorType                                  sensorType;         ///< sensor type info
    UINT32                                      imageWidth;         ///< sensor image width
    UINT32                                      imageHeight;        ///< sensor image height
    UINT32                                      remosaic_denoising; ///< remosaic denoising 0 or 1
    FLOAT                                       denoising_strength; ///< denoising_strength
    UINT32                                      blackLevelOff;      ///< Pixel Black Level
    UINT8                                       bayerPattern;       ///< Bayer Pattern
    UINT32                                      chipsetVersion;     ///< chipset version
    UINT16                                      pipelineId;         ///< Pipeline Id
};

/// @brief Input Data to XCFAREMOSAIC201 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct XCFAREMOSAIC201InputData
{
    xcfaremosaic_2_0_1::chromatix_xcfaremosaic20Type*   pChromatix;          ///< Chromatix data for XCFAREMOSAIC201 module
    cmc_1_0_0::chromatix_cmc10Type*                     pCmcChromatix;       ///< Input CMC Chromatix tuning data
    SensorType                                          sensorType;          ///< sensor type info
    FLOAT                                               rGainWB;             ///< R channel gain to adjust white balance
    FLOAT                                               bGainWB;             ///< B channel gain to adjust white balance
    FLOAT                                               gGainWB;             ///< G channel gain to adjust white balance
    UINT32                                              blackLevelOff;       ///< Pixel Black Level
    UINT8                                               bayerPattern;        ///< Bayer Pattern
    UINT8                                               lutBankSel;          ///< LUT bank need for this frame
    UINT8                                               numColors;           ///< number of colors in input frame
    XCFAInputData                                       cFAInput;            ///< XCFA Input Data
    UINT16                                              pipelineId;          ///< Pipeline Id
    VOID*                                               pInterpolationData;  ///< input memory for interpolation data
};


/// @brief Input Data to HDR50 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct HDR50InputData
{
    hdr_5_0_0::chromatix_hdr50Type* pChromatix;                     ///< Chromatix Data for HDR50
    FLOAT                           AECGain;                        ///< Input trigger value: aec gain
    FLOAT                           luxIndex;                       ///< Input trigger value: lux index
    FLOAT                           exposureTimeRatioT1T2;          ///< Trigger exp time ratio
    FLOAT                           exposureTimeRatioT2T3;          ///< Trigger exp time ratio
    FLOAT                           exposureGainRatioT1T2;          ///< Trigger exp gain ratio
    FLOAT                           exposureGainRatioT2T3;          ///< Trigger exp gain ratio
    FLOAT                           exposureSensitivityRatioT1T2;   ///< Trigger exp sensitivity ratio
    FLOAT                           exposureSensitivityRatioT2T3;   ///< Trigger exp sensitivity ratio
    UINT8                           expCount;                       ///< expCount
    UINT32                          sensorBitWidth;                 ///< sensor bit depth
    SensorType                      sensorType;                     ///< sensor type info
    UINT32                          CAMIFWidth;                     ///< Input CAMIF width
    UINT32                          CAMIFHeight;                    ///< Input CAMIF Height
    FLOAT                           rGainWB;                        ///< R channel gain to adjust white balance
    FLOAT                           bGainWB;                        ///< B channel gain to adjust white balance
    FLOAT                           gGainWB;                        ///< G channel gain to adjust white balance
    UINT32                          sensorOffsetX;                  ///< Current Sensor Image O/P horizontal offset
    UINT32                          sensorOffsetY;                  ///< Current Sensor Image O/P vertical offset
    UINT32                          blackResidueOffset;             ///< Black Level Offset
    UINT8                           lutBankSel;                     ///< Lut bank
    VOID*                           pInterpolationData;             ///< input memory for interpolation data
};

/// @brief Input Data to HDR501 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct HDR501InputData
{
    hdr_5_0_1::chromatix_hdr50Type* pChromatix;                             ///< Chromatix Data for HDR50
    FLOAT                           AECGain;                                ///< Input trigger value: aec gain
    FLOAT                           luxIndex;                               ///< Input trigger value: lux index
    FLOAT                           exposureTimeRatioT1T2;                  ///< Trigger exp time ratio
    FLOAT                           exposureTimeRatioT2T3;                  ///< Trigger exp time ratio
    FLOAT                           exposureGainRatioT1T2;                  ///< Trigger exp gain ratio
    FLOAT                           exposureGainRatioT2T3;                  ///< Trigger exp gain ratio
    FLOAT                           exposureSensitivityRatioT1T2;           ///< Trigger exp sensitivity ratio
    FLOAT                           exposureSensitivityRatioT2T3;           ///< Trigger exp sensitivity ratio
    UINT8                           expCount;                               ///< expCount
    UINT32                          sensorBitWidth;                         ///< sensor bit depth
    SensorType                      sensorType;                             ///< sensor type info
    UINT32                          CAMIFWidth;                             ///< Input CAMIF width
    UINT32                          CAMIFHeight;                            ///< Input CAMIF Height
    FLOAT                           rGainWB;                                ///< R channel gain to adjust white balance
    FLOAT                           bGainWB;                                ///< B channel gain to adjust white balance
    FLOAT                           gGainWB;                                ///< G channel gain to adjust white balance
    UINT32                          sensorOffsetX;                          ///< Current Sensor Image O/P horizontal offset
    UINT32                          sensorOffsetY;                          ///< Current Sensor Image O/P vertical offset
    UINT32                          blackResidueOffset;                     ///< Black Level Offset
    UINT8                           lutBankSel;                             ///< Lut bank
    VOID*                           pInterpolationData;                     ///< input memory for interpolation data
    FLOAT                           shortBlendRatio;                        ///< Short Blend Ratio
    FLOAT                           MACMotionAdjustScale1[2];               ///< SFE HDR MAC motion threshold1 adjust scale
    FLOAT                           MACMotionAdjustScale2[2];               ///< SFE HDR MAC motion threshold2 adjust scale
};

/// @brief Input Data to HDR531 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct BAYERHDR531InputData
{
    bayerhdr_5_3_1::chromatix_bayerhdr53Type*   pChromatix;                     ///< Chromatix Data for HDR50
    FLOAT                                       exposureTimeRatioT1T2;          ///< Trigger exp time ratio
    FLOAT                                       exposureTimeRatioT2T3;          ///< Trigger exp time ratio
    FLOAT                                       exposureGainRatioT1T2;          ///< Trigger exp gain ratio
    FLOAT                                       exposureGainRatioT2T3;          ///< Trigger exp gain ratio
    FLOAT                                       exposureSensitivityRatioT1T2;   ///< Trigger exp sensitivity ratio
    FLOAT                                       exposureSensitivityRatioT2T3;   ///< Trigger exp sensitivity ratio
    UINT8                                       expCount;                       ///< expCount
    UINT32                                      sensorBitWidth;                 ///< sensor bit depth
    SensorType                                  sensorType;                     ///< sensor type info
    UINT32                                      CAMIFWidth;                     ///< Input CAMIF width
    UINT32                                      CAMIFHeight;                    ///< Input CAMIF Height
    FLOAT                                       rGainWB;                        ///< R channel gain to adjust white balance
    FLOAT                                       bGainWB;                        ///< B channel gain to adjust white balance
    FLOAT                                       gGainWB;                        ///< G channel gain to adjust white balance
    UINT32                                      horizontalOffset;               ///< Horizontal Offset
    UINT32                                      verticalOffset;                 ///< Vertical Offset
    UINT32                                      sensorOffsetX;                  ///< Current Sensor Image O/P horizontal offset
    UINT32                                      sensorOffsetY;                  ///< Current Sensor Image O/P vertical offset
    UINT32                                      blackResidueOffset;             ///< Black Level Offset
    UINT8                                       lutBankSel;                     ///< Lut bank
    FLOAT                                       BGMidStatsSatRatio;             ///< Saturated Stats Ratio
    FLOAT                                       BGMidStatsDarkRatio;            ///< Dark Stats Ratio
    FLOAT                                       motion_lowlight_th1_adjust[2];  ///< lowlight_th1 and  motion_th1 adjust scale
    FLOAT                                       motion_lowlight_th2_adjust[2];  ///< lowlight_th2 and  motion_th2 adjust scale
    FLOAT                                       shortBlendRatio;                ///< Short Blend Ratio
    VOID*                                       pInterpolationData;             ///< input memory for interpolation data
};
/// @brief Input Data to HDR511 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct BAYERHDR511InputData
{
    bayerhdr_5_1_1::chromatix_bayerhdr51Type*   pChromatix;                     ///< Chromatix Data for HDR51
    FLOAT                                       exposureTimeRatioT1T2;          ///< Trigger exp time ratio
    FLOAT                                       exposureTimeRatioT2T3;          ///< Trigger exp time ratio
    FLOAT                                       exposureGainRatioT1T2;          ///< Trigger exp gain ratio
    FLOAT                                       exposureGainRatioT2T3;          ///< Trigger exp gain ratio
    FLOAT                                       exposureSensitivityRatioT1T2;   ///< Trigger exp sensitivity ratio
    FLOAT                                       exposureSensitivityRatioT2T3;   ///< Trigger exp sensitivity ratio
    UINT8                                       expCount;                       ///< expCount
    UINT32                                      sensorBitWidth;                 ///< sensor bit depth
    SensorType                                  sensorType;                     ///< sensor type info
    UINT32                                      CAMIFWidth;                     ///< Input CAMIF width
    UINT32                                      CAMIFHeight;                    ///< Input CAMIF Height
    FLOAT                                       rGainWB;                        ///< R channel gain to adjust white balance
    FLOAT                                       bGainWB;                        ///< B channel gain to adjust white balance
    FLOAT                                       gGainWB;                        ///< G channel gain to adjust white balance
    UINT32                                      sensorOffsetX;                  ///< Current Sensor Image O/P horizontal offset
    UINT32                                      sensorOffsetY;                  ///< Current Sensor Image O/P vertical offset
    UINT32                                      blackResidueOffset;             ///< Black Level Offset
    UINT8                                       lutBankSel;                     ///< Lut bank
    FLOAT                                       BGMidStatsSatRatio;             ///< Saturated Stats Ratio
    FLOAT                                       BGMidStatsDarkRatio;            ///< Dark Stats Ratio
    FLOAT                                       motion_lowlight_th1_adjust[2];  ///< lowlight_th1 and  motion_th1 adjust scale
    FLOAT                                       motion_lowlight_th2_adjust[2];  ///< lowlight_th2 and  motion_th2 adjust scale
    VOID*                                       pInterpolationData;             ///< input memory for interpolation data
    FLOAT                                       predictiveGains[EXPOSURE_MAX_COUNT];    ///< AEC predictive gain
    FLOAT                                       shortBlendRatio;                        ///< Short Blend Ratio
};

/// @brief Input Data to HDR521 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct BAYERHDR521InputData
{
    VOID*                                       pHWSetting;                     ///< Pointer to the HW Setting Object
    bayerhdr_5_2_1::chromatix_bayerhdr52Type*   pChromatix;                     ///< Chromatix Data for HDR51
    FLOAT                                       exposureTimeRatioT1T2;          ///< Trigger exp time ratio
    FLOAT                                       exposureTimeRatioT2T3;          ///< Trigger exp time ratio
    FLOAT                                       exposureGainRatioT1T2;          ///< Trigger exp gain ratio
    FLOAT                                       exposureGainRatioT2T3;          ///< Trigger exp gain ratio
    FLOAT                                       exposureSensitivityRatioT1T2;   ///< Trigger exp sensitivity ratio
    FLOAT                                       exposureSensitivityRatioT2T3;   ///< Trigger exp sensitivity ratio
    UINT8                                       expCount;                       ///< expCount
    ChiHDRFeatureMode                           hdrMode;                        ///< HDR Mode
    UINT32                                      sensorBitWidth;                 ///< sensor bit depth
    SensorType                                  sensorType;                     ///< sensor type info
    UINT32                                      CAMIFWidth;                     ///< Input CAMIF width
    UINT32                                      CAMIFHeight;                    ///< Input CAMIF Height
    FLOAT                                       rGainWB;                        ///< R channel gain to adjust white balance
    FLOAT                                       bGainWB;                        ///< B channel gain to adjust white balance
    FLOAT                                       gGainWB;                        ///< G channel gain to adjust white balance
    UINT32                                      sensorOffsetX;                  ///< Current Sensor Image O/P horizontal offset
    UINT32                                      sensorOffsetY;                  ///< Current Sensor Image O/P vertical offset
    UINT32                                      blackResidueOffset;             ///< Black Level Offset
    UINT8                                       lutBankSel;                     ///< Lut bank
    FLOAT                                       BGMidStatsSatRatio;             ///< Saturated Stats Ratio
    FLOAT                                       BGMidStatsDarkRatio;            ///< Dark Stats Ratio
    FLOAT                                       motion_lowlight_th1_adjust[2];  ///< lowlight_th1 and  motion_th1 adjust scale
    FLOAT                                       motion_lowlight_th2_adjust[2];  ///< lowlight_th2 and  motion_th2 adjust scale
    FLOAT                                       predictiveGains[EXPOSURE_MAX_COUNT]; ///< AEC predictive gain
    VOID*                                       pInterpolationData;             ///< input memory for interpolation data
    FLOAT                                       shortBlendRatio;                ///< Short Blend Ratio
};

/// @brief Input Data to HDR10p101 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct HDR10P101InputData
{
    VOID*                                   pHWSetting;         ///< Pointer to the HW Setting Object
    hdr10p_1_0_1::chromatix_hdr10p10Type*   pChromatix;         ///< Chromatix Data for hdr101p
    VOID*                                   pInterpolationData; ///< input memory for interpolation data
};

/// @brief Input Data to CC13 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct CC13InputData
{
    VOID*                         pHWSetting;           ///< Pointer to the HW Setting Object
    cc_1_3_0::chromatix_cc13Type* pChromatix;           ///< Chromatix data for CC12 module
    FLOAT                         DRCGain;              ///< Input trigger value:  drcGain
    FLOAT                         exposureTime;         ///< Input trigger value:  exposure time
    FLOAT                         exposureGainRatio;    ///< Input trigger value:  exposure gain ratio
    FLOAT                         AECSensitivity;       ///< Input trigger value:  AEC sensitivity data
    FLOAT                         luxIndex;             ///< Input trigger value:  Lux index
    FLOAT                         AECGain;              ///< Input trigger value:  AEC Gain Value
    FLOAT                         CCTTrigger;           ///< Input trigger value:  AWB colorTemperature
    FLOAT                         LEDTrigger;           ///< Input trigger value:  LED Index
    FLOAT                         LEDFirstEntryRatio;   ///< Ratio of Dual LED
    UINT16                        numberOfLED;          ///< Number of LED
    FLOAT                         effectsMatrix[3][3];  ///< Matrix to hold effects values
    INT32                         saturation;           ///< Saturation effect value
    VOID*                         pInterpolationData;   ///< input memory for interpolation data
};

/// @brief Input Data to CC131 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct CC131InputData
{
    VOID*                         pHWSetting;           ///< Pointer to the HW Setting Object
    cc_1_3_1::chromatix_cc13Type* pChromatix;           ///< Chromatix data for CC131 module
    FLOAT                         effectsMatrix[3][3];  ///< Matrix to hold effects values
    INT32                         saturation;           ///< Saturation effect value
    VOID*                         pInterpolationData;   ///< input memory for interpolation data
    VOID*                         pOnlineTuningSetting; ///< OnlineTuningSettings
};

/// @brief Input Data to CC141 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct CC141InputData
{
    VOID*                         pHWSetting;           ///< Pointer to the HW Setting Object
    cc_1_4_1::chromatix_cc14Type* pChromatix;           ///< Chromatix data for CC131 module
    FLOAT                         effectsMatrix[3][3];  ///< Matrix to hold effects values
    INT32                         saturation;           ///< Saturation effect value
    VOID*                         pInterpolationData;   ///< input memory for interpolation data
    BOOL                          aIEnable;             ///< To enable AI modifiers
    UINT32                        imageWidth;           ///< image width
    UINT32                        imageHeight;          ///< image height
    UINT32                        stmpInWidth;          ///< stmp in width
    UINT32                        stmpInHeight;         ///< stmp in height
    UINT32                        stmpUS;               ///< stmp upscale factor to configure us params
    UINT8                         final_DAS;            ///< Dynamic AI strength
    VOID*                         pOnlineTuningSetting; ///< OnlineTuningSettings
};

/// @brief Input Data to CST12 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct CST12InputData
{
    VOID*                           pHWSetting;      ///< Pointer to the HW Setting Object
    cst_1_2_0::chromatix_cst12Type* pChromatix;      ///< Input Chromatix tunning data
    cst_1_2_0::chromatix_cst12Type* pChromatix_exp1; ///< Input Chromatix tunning data for exp1
    cst_1_2_0::chromatix_cst12Type* pChromatix_exp2; ///< Input Chromatix tunning data for exp2
    cst_1_2_0::chromatix_cst12Type* pChromatix_exp3; ///< Input Chromatix tunning data for exp3
    cst_1_2_0::chromatix_cst12Type* pChromatix_fuse; ///< Input Chromatix tunning data for fuse
    UINT32                          chipsetVersion;  ///< Titan version
    UINT16                          pipelineId;      ///< Pipeline Id
    UINT16                          outputpath;      ///< output path
};

/// @brief Input Data to Linearization33 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct Linearization33InputData
{
    VOID*                                                pHWSetting;         ///< Pointer to the HW Setting Object
    linearization_3_3_0::chromatix_linearization33Type*  pChromatix;         ///< Input Chromatix tunning data
    BOOL                                                 symbolIDChanged;    ///< Symbol IOD changed, reload triggers
    FLOAT                                                LEDTrigger;         ///< LED Value
    FLOAT                                                LEDFirstEntryRatio; ///< Ratio of Dual LED
    UINT16                                               numberOfLED;        ///< Number of LED
    FLOAT                                                CCTTrigger;         ///< CCT Value
    FLOAT                                                DRCGain;            ///< DRCGain
    FLOAT                                                exposureTime;       ///< exposure time
    FLOAT                                                exposureGainRatio;  ///< Input trigger value:  exposure gain ratio
    FLOAT                                                AECSensitivity;     ///< AEC sensitivity data
    FLOAT                                                luxIndex;           ///< Lux index
    FLOAT                                                realGain;           ///< Linear Gain Value
    UINT16                                               lutBankSel;         ///< LUT bank need for this frame.
    BOOL                                                 pedestalEnable;     ///< pedestal is enabled or not
    UINT8                                                bayerPattern;       ///< Bayer Pattern
    VOID*                                                pInterpolationData; ///< input memory for interpolation data
};


/// @brief Input Data to Linearization33 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct Linearization331InputData
{
    VOID*                                                pHWSetting;         ///< Pointer to the HW Setting Object
    linearization_3_3_1::chromatix_linearization33Type*  pChromatix;         ///< Input Chromatix tunning data
    BOOL                                                 symbolIDChanged;    ///< Symbol IOD changed, reload triggers
    FLOAT                                                LEDTrigger;         ///< LED Value
    FLOAT                                                LEDFirstEntryRatio; ///< Ratio of Dual LED
    UINT16                                               numberOfLED;        ///< Number of LED
    FLOAT                                                CCTTrigger;         ///< CCT Value
    FLOAT                                                DRCGain;            ///< DRCGain
    FLOAT                                                exposureTime;       ///< exposure time
    FLOAT                                                exposureGainRatio;  ///< Input trigger value:  exposure gain ratio
    FLOAT                                                AECSensitivity;     ///< AEC sensitivity data
    FLOAT                                                luxIndex;           ///< Lux index
    FLOAT                                                realGain;           ///< Linear Gain Value
    UINT16                                               lutBankSel;         ///< LUT bank need for this frame.
    BOOL                                                 pedestalEnable;     ///< pedestal is enabled or not
    UINT8                                                bayerPattern;       ///< Bayer Pattern
    VOID*                                                pInterpolationData; ///< input memory for interpolation data
};
/// @brief Input Data to BLS12 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct BLS12InputData
{
    VOID*                           pHWSetting;         ///< Pointer to the HW Setting Object
    bls_1_2_0::chromatix_bls12Type* pChromatix;         ///< Input Chromatix tunning data
    BOOL                            symbolIDChanged;    ///< Symbol IOD changed, reload triggers
    FLOAT                           DRCGain;            ///< Input trigger value:  DRCGain
    FLOAT                           exposureTime;       ///< Input trigger value:  exposure time
    FLOAT                           exposureGainRatio;  ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;     ///< Input trigger value:  AEC sensitivity data
    FLOAT                           realGain;           ///< Input trigger value:  Digital Gain Value
    FLOAT                           LEDTrigger;         ///< Input trigger value:  Led Index
    FLOAT                           LEDFirstEntryRatio; ///< Ratio of Dual LED
    UINT16                          numberOfLED;        ///< Number of LED
    FLOAT                           CCTTrigger;         ///< Input trigger value:  CCT
    FLOAT                           digitalGain;        ///< Digital gain from Sensor
    FLOAT                           luxIndex;           ///< Input trigger value:  Lux index
    UINT8                           bayerPattern;       ///< Bayer Pattern
    UINT32                          blackResOffset;     ///< Black Residual Offset
    VOID*                           pInterpolationData; ///< input memory for interpolation data
    UINT32                          chipsetVersion;     ///< Titan version
    UINT16                          pipelineId;    ///< Pipeline Id
};

// @brief Input Data to BLS121 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct BLS121InputData
{
    VOID*                           pHWSetting;         ///< Pointer to the HW Setting Object
    bls_1_2_1::chromatix_bls12Type* pChromatix;         ///< Input Chromatix tunning data
    BOOL                            symbolIDChanged;    ///< Symbol IOD changed, reload triggers
    UINT8                           bayerPattern;       ///< Bayer Pattern
    UINT16                          blackResOffset;     ///< Black Residual Offset
    VOID*                           pInterpolationData; ///< input memory for interpolation data
    UINT32                          chipsetVersion;     ///< Titan version
    UINT16                          pipelineId;    ///< Pipeline Id
};

/// @brief Input Data to HME101 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct HME101InputData
{
    hme_1_0_1::chromatix_hme10Type* pChromatix;               ///< Input Chromatix tunning data
    UINT32                          moduleEnable;             ///< Enable flag
    VOID*                           pHME101InterpolationData; ///< input memory for interpolation data
};

/// @brief LSC Calibration Table from EEPROM
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LSC34CalibrationDataTable
{
    FLOAT* pRGain;    ///< R gain table
    FLOAT* pGRGain;   ///< GR gain table
    FLOAT* pGBGain;   ///< GB gain table
    FLOAT* pBGain;    ///< B gain table
};

/// @brief LSC stripe output
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LSC34Stripe
{
    UINT32   lx_start;         ///< Start block x index, 6u
    UINT32   bx_start;         ///< Start subgrid x index within start block, 3u
    UINT32   bx_d1;            ///< x coordinate of top left pixel in start block/subgrid, 9u
};

/// @brief LSC Tintles ratio
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LSC34TintlessRatio
{
    UINT32 isValid;   ///< Indicates if contents are valid
    FLOAT* pRGain;    ///< rgain tintless ratio
    FLOAT* pGrGain;   ///< grgain tintless ratio
    FLOAT* pGbGain;   ///< gbgain tintless ratio
    FLOAT* pBGain;    ///< bgain tintless ratio
};

struct LSC341TintlessRatio
{
    UINT32 isValid;   ///< Indicates if contents are valid
    FLOAT* pRGain;    ///< rgain tintless ratio
    FLOAT* pGrGain;   ///< grgain tintless ratio
    FLOAT* pGbGain;   ///< gbgain tintless ratio
    FLOAT* pBGain;    ///< bgain tintless ratio
};

/// @brief Input Data to LSC34 IQ Algorithem
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LSC34InputData
{
    VOID*                                     pHWSetting;           ///< Pointer to the HW Setting Object
    lsc_3_4_0::chromatix_lsc34Type*           pChromatix;           ///< Input Chromatix tunning data
    BOOL                                      symbolIDChanged;      ///< Symbol IOD changed, reload triggers
    UINT32                                    fullResWidth;         ///< Current Sensor Image Max Output Width
    UINT32                                    fullResHeight;        ///< Current Sensor Image Max Output Height
    UINT32                                    imageWidth;           ///< Current Sensor Image Output Width
    UINT32                                    imageHeight;          ///< Current Sensor Image Output Height
    UINT32                                    offsetX;              ///< Current Sensor Image Output Width
    UINT32                                    offsetY;              ///< Current Sensor Image Output Height
    UINT32                                    scalingFactor;        ///< Scaling factor from sensor
    FLOAT                                     DRCGain;              ///< Input trigger value:  DRCGain
    FLOAT                                     exposureTime;         ///< Input trigger value:  exposure time
    FLOAT                                     exposureGainRatio;    ///< Input trigger value:  exposure gain ratio
    FLOAT                                     AECSensitivity;       ///< Input trigger value:  AEC sensitivity data
    FLOAT                                     luxIndex;             ///< Input trigger value:  Lux index
    FLOAT                                     realGain;             ///< Input trigger value:  real Gain Value
    FLOAT                                     LEDTrigger;           ///< Input trigger value:  LED Value
    FLOAT                                     LEDFirstEntryRatio;   ///< Ratio of Dual LED
    UINT16                                    numberOfLED;          ///< Number of LED
    FLOAT                                     lensPosTrigger;       ///< Input trigger value:  LensPosition Value
    FLOAT                                     CCTTrigger;           ///< Input trigger value:  CCT Value
    FLOAT                                     leftGGainWB;          ///< G channel gain to adjust white balance
    FLOAT                                     leftBGainWB;          ///< B channel gain to adjust white balance
    FLOAT                                     leftRGainWB;          ///< R channel gain to adjust white balance
    UINT16                                    bankSelect;           ///< Bank select for LUT table
    UINT8                                     numTables;            ///< Number of calibration tables
    LSC34CalibrationDataTable*                pCalibrationTable;    ///< pointer to the Calibration tables
    UINT32                                    numberOfEEPROMTable;  ///< number of tables in EEPROM
    BOOL                                      toCalibrate;          ///< Indicates we need to calibrate
    LSC34Stripe                               stripeOut;            ///< LSC changed values from striping lib
    BOOL                                      fetchSettingOnly;     ///< Flag to indicate to fetch settings for striping lib
    BOOL                                      enableCalibration;    ///< Indicates if calibration should be enabled or not
    tintless_2_0_0::chromatix_tintless20Type* pTintlessChromatix;   ///< Pointer to tintless Chromatix
    TintlessConfig*                           pTintlessConfig;      ///< Pointer to the Tintless Algo Configurations
    ParsedTintlessBGStatsOutput*              pTintlessStats;       ///< Pointer to Parsed Tintless data
    CHITintlessAlgorithm*                     pTintlessAlgo;        ///< Pointer to the Tintless Algo resource
    VOID*                                     pInterpolationData;   ///< input memory for interpolation data
    BOOL                                      enableTintless;       ///< Indicates if tintless algo
    LSC34TintlessRatio*                       pTintlessRatio;       ///< Store tintless ratio, this will be used if tinless
                                                                    ///  algo is skipped
    BOOL                                      isTLBGStatsBinned;    ///< TinglessBG Stats is generated using CSID binned frame
};

/// @brief Input Data to LSC34 IQ Algorithem
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LSC341InputData
{
    VOID*                                     pHWSetting;           ///< Pointer to the HW Setting Object
    lsc_3_4_1::chromatix_lsc34Type*           pChromatix;           ///< Input Chromatix tunning data
    BOOL                                      symbolIDChanged;      ///< Symbol IOD changed, reload triggers
    UINT32                                    fullResWidth;         ///< Current Sensor Image Max Output Width
    UINT32                                    fullResHeight;        ///< Current Sensor Image Max Output Height
    UINT32                                    imageWidth;           ///< Current Sensor Image Output Width
    UINT32                                    imageHeight;          ///< Current Sensor Image Output Height
    UINT32                                    offsetX;              ///< Current Sensor Image Output Width
    UINT32                                    offsetY;              ///< Current Sensor Image Output Height
    UINT32                                    scalingFactor;        ///< Scaling factor from sensor
    FLOAT                                     DRCGain;              ///< Input trigger value:  DRCGain
    FLOAT                                     exposureTime;         ///< Input trigger value:  exposure time
    FLOAT                                     exposureGainRatio;    ///< Input trigger value:  exposure gain ratio
    FLOAT                                     AECSensitivity;       ///< Input trigger value:  AEC sensitivity data
    FLOAT                                     luxIndex;             ///< Input trigger value:  Lux index
    FLOAT                                     realGain;             ///< Input trigger value:  real Gain Value
    FLOAT                                     LEDTrigger;           ///< Input trigger value:  LED Value
    FLOAT                                     LEDFirstEntryRatio;   ///< Ratio of Dual LED
    UINT16                                    numberOfLED;          ///< Number of LED
    FLOAT                                     lensPosTrigger;       ///< Input trigger value:  LensPosition Value
    FLOAT                                     CCTTrigger;           ///< Input trigger value:  CCT Value
    FLOAT                                     leftGGainWB;          ///< G channel gain to adjust white balance
    FLOAT                                     leftBGainWB;          ///< B channel gain to adjust white balance
    FLOAT                                     leftRGainWB;          ///< R channel gain to adjust white balance
    UINT16                                    bankSelect;           ///< Bank select for LUT table
    UINT8                                     numTables;            ///< Number of calibration tables
    LSC34CalibrationDataTable*                pCalibrationTable;    ///< pointer to the Calibration tables
    UINT32                                    numberOfEEPROMTable;  ///< number of tables in EEPROM
    BOOL                                      toCalibrate;          ///< Indicates we need to calibrate
    LSC34Stripe                               stripeOut;            ///< LSC changed values from striping lib
    BOOL                                      fetchSettingOnly;     ///< Flag to indicate to fetch settings for striping lib
    BOOL                                      enableCalibration;    ///< Indicates if calibration should be enabled or not
    tintless_2_0_1::chromatix_tintless20Type* pTintlessChromatix;   ///< Pointer to tintless Chromatix
    TintlessConfig*                           pTintlessConfig;      ///< Pointer to the Tintless Algo Configurations
    ParsedTintlessBGStatsOutput*              pTintlessStats;       ///< Pointer to Parsed Tintless data
    CHITintlessAlgorithm*                     pTintlessAlgo;        ///< Pointer to the Tintless Algo resource
    VOID*                                     pInterpolationData;   ///< input memory for interpolation data
    BOOL                                      enableTintless;       ///< Indicates if tintless algo
    LSC34TintlessRatio*                       pTintlessRatio;       ///< Store tintless ratio, this will be used if tinless
                                                                    ///  algo is skipped
    BOOL                                      isTLBGStatsBinned;    ///< TinglessBG Stats is generated using CSID binned frame
};

// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LSC35CalibrationDataTable
{
    FLOAT* pRGain;    ///< R gain table
    FLOAT* pGRGain;   ///< GR gain table
    FLOAT* pGBGain;   ///< GB gain table
    FLOAT* pBGain;    ///< B gain table
};

/// @brief LSC stripe output
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LSC35Stripe
{
    UINT32   lx_start_l;         ///< Start block x index, 6u
    UINT32   bx_start_l;         ///< Start subgrid x index within start block, 3u
    UINT32   bx_d1_l;            ///< x coordinate of top left pixel in start block/subgrid, 9u
};


typedef LSC34TintlessRatio LSC35TintlessRatio;
/// @brief Input Data to LSC35 IQ Algorithem
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LSC35InputData
{
    VOID*                                     pHWSetting;           ///< Pointer to the HW Setting Object
    lsc_3_5_0::chromatix_lsc35Type*           pChromatix;           ///< Input Chromatix tunning data
    BOOL                                      symbolIDChanged;      ///< Symbol IOD changed, reload triggers
    UINT32                                    fullResWidth;         ///< Current Sensor Image Max Output Width
    UINT32                                    fullResHeight;        ///< Current Sensor Image Max Output Height
    UINT32                                    imageWidth;           ///< Current Sensor Image Output Width
    UINT32                                    imageHeight;          ///< Current Sensor Image Output Height
    UINT32                                    offsetX;              ///< Current Sensor Image Output Width
    UINT32                                    offsetY;              ///< Current Sensor Image Output Height
    UINT32                                    scalingFactor;        ///< Scaling factor from sensor
    FLOAT                                     DRCGain;              ///< Input trigger value:  DRCGain
    FLOAT                                     exposureTime;         ///< Input trigger value:  exposure time
    FLOAT                                     exposureGainRatio;         ///< Input trigger value:  exposure Gain Ratio
    FLOAT                                     AECSensitivity;       ///< Input trigger value:  AEC sensitivity data
    FLOAT                                     luxIndex;             ///< Input trigger value:  Lux index
    FLOAT                                     realGain;             ///< Input trigger value:  real Gain Value
    FLOAT                                     LEDTrigger;           ///< Input trigger value:  LED Value
    FLOAT                                     LEDFirstEntryRatio;   ///< Ratio of Dual LED
    UINT16                                    numberOfLED;          ///< Number of LED
    FLOAT                                     lensPosTrigger;       ///< Input trigger value:  LensPosition Value
    FLOAT                                     CCTTrigger;           ///< Input trigger value:  CCT Value
    FLOAT                                     leftGGainWB;          ///< G channel gain to adjust white balance
    FLOAT                                     leftBGainWB;          ///< B channel gain to adjust white balance
    FLOAT                                     leftRGainWB;          ///< R channel gain to adjust white balance
    UINT16                                    bankSelect;           ///< Bank select for LUT table
    UINT8                                     numTables;            ///< Number of calibration tables
    LSC35CalibrationDataTable*                pCalibrationTable;    ///< pointer to the Calibration tables
    UINT32                                    numberOfEEPROMTable;  ///< number of tables in EEPROM
    BOOL                                      toCalibrate;          ///< Indicates we need to calibrate
    LSC35Stripe                               stripeOut;            ///< LSC changed values from striping lib
    BOOL                                      fetchSettingOnly;     ///< Flag to indicate to fetch settings for striping lib
    BOOL                                      enableCalibration;    ///< Indicates if calibration should be enabled or not
    tintless_2_0_0::chromatix_tintless20Type* pTintlessChromatix;   ///< Pointer to tintless Chromatix
    TintlessConfig*                           pTintlessConfig;      ///< Pointer to the Tintless Algo Configurations
    ParsedTintlessBGStatsOutput*              pTintlessStats;       ///< Pointer to Parsed Tintless data
    CHITintlessAlgorithm*                     pTintlessAlgo;        ///< Pointer to the Tintless Algo resource
    VOID*                                     pInterpolationData;   ///< input memory for interpolation data
    BOOL                                      enableTintless;       ///< Indicates if tintless algo
    LSC35TintlessRatio                        tintlessConfig;       ///< Store tintless ratio, this will be used if tinless
                                                                    ///< algo is skipped
    UINT8                                      bayerPattern;         ///< Bayer Pattern
    UINT32                                     blackLevelOffsetIn;  ///< Black level Offset to be Subracted before processing
    UINT32                                     blackLevelOffsetOut; ///< Black Level Offset to be Added after processing
    BOOL                                       enableTableScaling;  ///< To scale LSC table after tintless in case of input crop
};

typedef LSC34TintlessRatio          LSC40TintlessRatio;
typedef LSC34CalibrationDataTable   LSC40CalibrationDataTable;
typedef LSC34Stripe                 LSC40Stripe;
typedef LSC34TintlessRatio          LSC411TintlessRatio;
typedef LSC34CalibrationDataTable   LSC411CalibrationDataTable;
typedef LSC34Stripe                 LSC411Stripe;
typedef LSC411TintlessRatio         LSC421TintlessRatio;
typedef LSC411TintlessRatio         LSC501TintlessRatio;
typedef LSC411CalibrationDataTable  LSC421CalibrationDataTable;
typedef LSC411Stripe                LSC421Stripe;
typedef LSC421CalibrationDataTable  LSC501CalibrationDataTable;
typedef LSC421Stripe                LSC501Stripe;
typedef LSC34CalibrationDataTable   LSC36CalibrationDataTable;
typedef LSC34Stripe                 LSC36Stripe;
typedef LSC34CalibrationDataTable   LSC361CalibrationDataTable;
typedef LSC34Stripe                 LSC361Stripe;
typedef LSC34CalibrationDataTable   LSC371CalibrationDataTable;

typedef LSC34TintlessRatio          LSC401TintlessRatio;
typedef LSC34CalibrationDataTable   LSC401CalibrationDataTable;
typedef LSC34Stripe                 LSC401Stripe;

// @brief Input Data to LSC35 IQ Algorithem
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LSC36InputData
{
    lsc_3_6_0::chromatix_lsc36Type*           pChromatix;           ///< Input Chromatix tunning data
    BOOL                                      symbolIDChanged;      ///< Symbol IOD changed, reload triggers
    UINT32                                    fullResWidth;         ///< Current Sensor Image Max Output Width
    UINT32                                    fullResHeight;        ///< Current Sensor Image Max Output Height
    UINT32                                    imageWidth;           ///< Current Sensor Image Output Width
    UINT32                                    imageHeight;          ///< Current Sensor Image Output Height
    UINT32                                    offsetX;              ///< Current Sensor Image Output Width
    UINT32                                    offsetY;              ///< Current Sensor Image Output Height
    UINT32                                    scalingFactor;        ///< Scaling factor from sensor
    FLOAT                                     DRCGain;              ///< Input trigger value:  DRCGain
    FLOAT                                     exposureTime;         ///< Input trigger value:  exposure time
    FLOAT                                     exposureGainRatio;    ///< Input trigger value:  exposure Gain Ratio
    FLOAT                                     AECSensitivity;       ///< Input trigger value:  AEC sensitivity data
    FLOAT                                     luxIndex;             ///< Input trigger value:  Lux index
    FLOAT                                     realGain;             ///< Input trigger value:  real Gain Value
    FLOAT                                     LEDTrigger;           ///< Input trigger value:  LED Value
    FLOAT                                     LEDFirstEntryRatio;   ///< Ratio of Dual LED
    UINT16                                    numberOfLED;          ///< Number of LED
    FLOAT                                     lensPosTrigger;       ///< Input trigger value:  LensPosition Value
    FLOAT                                     CCTTrigger;           ///< Input trigger value:  CCT Value
    FLOAT                                     leftGGainWB;          ///< G channel gain to adjust white balance
    FLOAT                                     leftBGainWB;          ///< B channel gain to adjust white balance
    FLOAT                                     leftRGainWB;          ///< R channel gain to adjust white balance
    UINT16                                    bankSelect;           ///< Bank select for LUT table
    UINT8                                     numTables;            ///< Number of calibration tables
    LSC361CalibrationDataTable*               pCalibrationTable;    ///< pointer to the Calibration tables
    UINT32                                    numberOfEEPROMTable;  ///< number of tables in EEPROM
    BOOL                                      toCalibrate;          ///< Indicates we need to calibrate
    LSC361Stripe                              stripeOut;            ///< LSC changed values from striping lib
    BOOL                                      enableCalibration;    ///< Indicates if calibration should be enabled or not
    VOID*                                     pInterpolationData;   ///< input memory for interpolation data
    UINT8                                     bayerPattern;         ///< Bayer Pattern
    UINT32                                    blackLevelOffsetIn;   ///< Black level Offset to be Subracted before processing
    UINT32                                    blackLevelOffsetOut;  ///< Black Level Offset to be Added after processing
};

/// @brief: Rollof table type
enum RollOffTables
{
    MeshTable = 0, ///< MeshTable
    GridGain,      ///< GridGain
    GridMean,      ///< GridGain
};

// @brief Input Data to LSC361 IQ Algorithem
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LSC361InputData
{
    lsc_3_6_1::chromatix_lsc36Type*             pChromatix;           ///< Input Chromatix tunning data
    lscgolden_3_6_1::chromatix_lscgolden36Type* pGoldenChromatix;     ///< Input Chromatix tunning data
    BOOL                                        symbolIDChanged;      ///< Symbol IOD changed, reload triggers
    UINT32                                      fullResWidth;         ///< Current Sensor Image Max Output Width
    UINT32                                      fullResHeight;        ///< Current Sensor Image Max Output Height
    UINT32                                      imageWidth;           ///< Current Sensor Image Output Width
    UINT32                                      imageHeight;          ///< Current Sensor Image Output Height
    UINT32                                      offsetX;              ///< Current Sensor Image Output Width
    UINT32                                      offsetY;              ///< Current Sensor Image Output Height
    UINT32                                      scalingFactor;        ///< Scaling factor from sensor
    FLOAT                                       CCTTrigger;           ///< Input trigger value:  CCT Value
    FLOAT                                       leftGGainWB;          ///< G channel gain to adjust white balance
    FLOAT                                       leftBGainWB;          ///< B channel gain to adjust white balance
    FLOAT                                       leftRGainWB;          ///< R channel gain to adjust white balance
    UINT16                                      bankSelect;           ///< Bank select for LUT table
    UINT8                                       numTables;            ///< Number of calibration tables
    LSC36CalibrationDataTable*                  pCalibrationTable;    ///< pointer to the Calibration tables
    UINT32                                      numberOfEEPROMTable;  ///< number of tables in EEPROM
    BOOL                                        toCalibrate;          ///< Indicates we need to calibrate
    LSC36Stripe                                 stripeOut;            ///< LSC changed values from striping lib
    BOOL                                        enableCalibration;    ///< Indicates if calibration should be enabled or not
    VOID*                                       pInterpolationData;   ///< input memory for interpolation data
    UINT8                                       bayerPattern;         ///< Bayer Pattern
    UINT32                                      blackLevelOffsetIn;   ///< Black level Offset to be Subracted before processing
    UINT32                                      blackLevelOffsetOut;  ///< Black Level Offset to be Added after processing
};

// @brief Input Data to LSC371 IQ Algorithem
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LSC371InputData
{
    lsc_3_7_1::chromatix_lsc37Type*             pChromatix;           ///< Input Chromatix tunning data
    lscgolden_3_7_1::chromatix_lscgolden37Type* pGoldenChromatix;     ///< Input Chromatix tunning data
    BOOL                                        symbolIDChanged;      ///< Symbol IOD changed, reload triggers
    UINT32                                      fullResWidth;         ///< Current Sensor Image Max Output Width
    UINT32                                      fullResHeight;        ///< Current Sensor Image Max Output Height
    UINT32                                      imageWidth;           ///< Current Sensor Image Output Width
    UINT32                                      imageHeight;          ///< Current Sensor Image Output Height
    UINT32                                      offsetX;              ///< Current Sensor Image Output Width
    UINT32                                      offsetY;              ///< Current Sensor Image Output Height
    UINT32                                      scalingFactor;        ///< Scaling factor from sensor
    FLOAT                                       CCTTrigger;           ///< Input trigger value:  CCT Value
    FLOAT                                       leftGGainWB;          ///< G channel gain to adjust white balance
    FLOAT                                       leftBGainWB;          ///< B channel gain to adjust white balance
    FLOAT                                       leftRGainWB;          ///< R channel gain to adjust white balance
    UINT16                                      bankSelect;           ///< Bank select for LUT table
    UINT8                                       numTables;            ///< Number of calibration tables
    LSC361CalibrationDataTable*                 pCalibrationTable;    ///< pointer to the Calibration tables
    UINT32                                      numberOfEEPROMTable;  ///< number of tables in EEPROM
    BOOL                                        toCalibrate;          ///< Indicates we need to calibrate
    LSC361Stripe                                stripeOut;            ///< LSC changed values from striping lib
    BOOL                                        fetchSettingOnly;     ///< Flag to indicate to fetch settings for striping lib
    BOOL                                        enableCalibration;    ///< Indicates if calibration should be enabled or not
    VOID*                                       pInterpolationData;   ///< input memory for interpolation data
    UINT8                                       bayerPattern;         ///< Bayer Pattern
    UINT32                                      blackLevelOffsetIn;   ///< Black level Offset to be Subracted before processing
    UINT32                                      blackLevelOffsetOut;  ///< Black Level Offset to be Added after processing
};

/// @brief Input Data to LSC40 IQ Algorithem
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LSC40InputData
{
    VOID*                                     pHWSetting;           ///< Pointer to the HW Setting Object
    lsc_4_0_0::chromatix_lsc40Type*           pChromatix;           ///< Input Chromatix tunning data
    BOOL                                      symbolIDChanged;      ///< Symbol IOD changed, reload triggers
    UINT32                                    fullResWidth;         ///< Current Sensor Image Max Output Width
    UINT32                                    fullResHeight;        ///< Current Sensor Image Max Output Height
    UINT32                                    imageWidth;           ///< Current Sensor Image Output Width
    UINT32                                    imageHeight;          ///< Current Sensor Image Output Height
    UINT32                                    offsetX;              ///< Current Sensor Image Output Width
    UINT32                                    offsetY;              ///< Current Sensor Image Output Height
    UINT32                                    scalingFactor;        ///< Scaling factor from sensor
    FLOAT                                     DRCGain;              ///< Input trigger value:  DRCGain
    FLOAT                                     exposureTime;         ///< Input trigger value:  exposure time
    FLOAT                                     exposureGainRatio;    ///< Input trigger value:  exposure gain ratio
    FLOAT                                     AECSensitivity;       ///< Input trigger value:  AEC sensitivity data
    FLOAT                                     luxIndex;             ///< Input trigger value:  Lux index
    FLOAT                                     realGain;             ///< Input trigger value:  real Gain Value
    FLOAT                                     LEDTrigger;           ///< Input trigger value:  LED Value
    FLOAT                                     LEDFirstEntryRatio;   ///< Ratio of Dual LED
    UINT16                                    numberOfLED;          ///< Number of LED
    FLOAT                                     lensPosTrigger;       ///< Input trigger value:  LensPosition Value
    FLOAT                                     CCTTrigger;           ///< Input trigger value:  CCT Value
    UINT16                                    bankSelect;           ///< Bank select for LUT table
    UINT8                                     numTables;            ///< Number of calibration tables
    LSC40CalibrationDataTable*                pCalibrationTable;    ///< pointer to the Calibration tables
    UINT32                                    numberOfEEPROMTable;  ///< number of tables in EEPROM
    BOOL                                      toCalibrate;          ///< Indicates we need to calibrate
    LSC40Stripe                               stripeOut;            ///< LSC changed values from striping lib
    BOOL                                      fetchSettingOnly;     ///< Flag to indicate to fetch settings for striping lib
    BOOL                                      enableCalibration;    ///< Indicates if calibration should be enabled or not
    UINT16                                    first_pixel;          ///< From crc1.1 module
    UINT16                                    last_pixel;           ///< From crc1.1 module
    UINT16                                    first_line;           ///< From crc1.1 module
    UINT16                                    last_line;            ///< From crc1.1 module
    tintless_2_0_0::chromatix_tintless20Type* pTintlessChromatix;   ///< Pointer to tintless Chromatix
    TintlessConfig*                           pTintlessConfig;      ///< Pointer to the Tintless Algo Configurations
    ParsedTintlessBGStatsOutput*              pTintlessStats;       ///< Pointer to Parsed Tintless data
    ParsedAWBBGStatsOutput*                   pAWBBGStats;          ///< AWB BG stats output pointer
    CHITintlessAlgorithm*                     pTintlessAlgo;        ///< Pointer to the Tintless Algo resource
    CHIALSCAlgorithm*                         pALSCAlgo;            ///< ALSC algorithm pointer
    VOID*                                     pInterpolationData;   ///< input memory for interpolation data
    BOOL                                      enableTintless;       ///< Indicates if tintless algo
    BOOL                                      enableALSC;           ///< Indicates if ALSC algo
    LSC40TintlessRatio                        tintlessConfig;       ///< Store tintless ratio, this will be used if tinless
                                                                    ///< algo is skipped
    UINT8                                     bayerPattern;         ///< Bayer pattern
    UINT64*                                   pALSCBuffer;          ///< ALSC Scratch Buffer
    UINT32                                    ALSCBufferSize;       ///< ALSC Scratch Buffer size in DWord
    BOOL                                      enableTableScaling;   ///< MFSR/InSensor 2x zoom, to scale tintless
                                                                    ///< tables/ALSC tables
    BOOL                                      isTLBGStatsBinned;    ///< TinglessBG Stats is generated using CSID binned frame
    UINT32                                    totalPixelCount;      ///< total Count of Pixel in the stat region
    UINT32                                    statLowThresholdR;    ///< Stats low threshold for REd
    UINT32                                    statLowThresholdB;    ///< Stats low threshold for Blue
    UINT32                                    statLowThresholdGr;   ///< Stats low threshold for GR
    UINT32                                    statLowThresholdGb;   ///< Stats low threshold for GB
    UINT16                                    pipelineBitDepth;     ///< Pipeline bit Depth
    UINT16                                    statBitDepth;         ///< Stat bit depth
};


/// @brief Input Data to LSC401 IQ Algorithem
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LSC401InputData
{
    VOID*                                     pHWSetting;            ///< Pointer to the HW Setting Object
    lsc_4_0_1::chromatix_lsc40Type*           pChromatix;            ///< Input Chromatix tunning data
    lscgolden_4_0_1::chromatix_lscgolden40Type* pGoldenChromatix;    ///< Input Chromatix tunning data
    BOOL                                      symbolIDChanged;       ///< Symbol IOD changed, reload triggers
    UINT32                                    fullResWidth;          ///< Current Sensor Image Max Output Width
    UINT32                                    fullResHeight;         ///< Current Sensor Image Max Output Height
    UINT32                                    imageWidth;            ///< Current Sensor Image Output Width
    UINT32                                    imageHeight;           ///< Current Sensor Image Output Height
    UINT32                                    offsetX;               ///< Current Sensor Image Output Width
    UINT32                                    offsetY;               ///< Current Sensor Image Output Height
    UINT32                                    bpsCropOffsetX;        ///< Crop Offset X for BPS Crop
    UINT32                                    bpsCropOffsetY;        ///< Crop Offset Y for BPS Crop
    UINT32                                    scalingFactor;         ///< Scaling factor from sensor
    FLOAT                                     exposureTime;          ///< Input trigger value:  exposure time
    FLOAT                                     AECSensitivity;        ///< Input trigger value:  AEC sensitivity data
    FLOAT                                     luxIndex;              ///< Input trigger value:  Lux index
    FLOAT                                     realGain;              ///< Input trigger value:  real Gain Value
    UINT16                                    gGainWB;               ///< G channel gain to adjust white balance
    UINT16                                    bGainWB;               ///< B channel gain to adjust white balance
    UINT16                                    rGainWB;               ///< R channel gain to adjust white balance
    UINT16                                    bankSelect;            ///< Bank select for LUT table
    UINT8                                     numTables;             ///< Number of calibration tables
    LSC401CalibrationDataTable*               pCalibrationTable;     ///< pointer to the Calibration tables
    UINT32                                    numberOfEEPROMTable;   ///< number of tables in EEPROM
    BOOL                                      toCalibrate;           ///< Indicates we need to calibrate
    LSC401Stripe                              stripeOut;             ///< LSC changed values from striping lib
    BOOL                                      fetchSettingOnly;      ///< Flag to indicate to fetch settings for striping lib
    BOOL                                      enableCalibration;     ///< Indicates if calibration should be enabled or not
    UINT16                                    first_pixel;           ///< From crc1.1 module
    UINT16                                    last_pixel;            ///< From crc1.1 module
    UINT16                                    first_line;            ///< From crc1.1 module
    UINT16                                    last_line;             ///< From crc1.1 module
    tintless_2_3_1::chromatix_tintless23Type* pTintlessChromatix;    ///< Pointer to tintless Chromatix
    TintlessConfig*                           pTintlessConfig;       ///< Pointer to the Tintless Algo Configurations
    ParsedTintlessBGStatsOutput*              pTintlessStats;        ///< Pointer to Parsed Tintless data
    ParsedAWBBGStatsOutput*                   pAWBBGStats;           ///< AWB BG stats output pointer
    CHITintlessAlgorithm*                     pTintlessAlgo;         ///< Pointer to the Tintless Algo resource
    CHIALSCAlgorithm*                         pALSCAlgo;             ///< ALSC algorithm pointer
    VOID*                                     pInterpolationData;    ///< input memory for interpolation data
    VOID*                                     pTintlessInterpolationData; ///< Input memory for tintless interpolation data
    BOOL                                      enableALSC;           ///< Indicates if ALSC algo
    BOOL                                      enableTintless;        ///< Indicates if tintless algo
    LSC401TintlessRatio                       tintlessConfig;        ///< Store tintless ratio, this will be used if tinless
    BOOL                                      isTLBGStatsBinned;    ///< TinglessBG Stats is generated using CSID binned frame
    UINT8                                     bayerPattern;          ///< Bayer pattern
    UINT64*                                   pALSCBuffer;           ///< ALSC Scratch Buffer
    UINT32                                    ALSCBufferSize;        ///< ALSC Scratch Buffer size in DWord
    BOOL                                      enableTableScaling;    ///< MFSR 2x zoom, to scale tintless tables/ALSC tables
    UINT32                                    totalPixelCount;       ///< total Count of Pixel in the stat region
    UINT32                                    statLowThresholdR;     ///< Stats low threshold for REd
    UINT32                                    statLowThresholdB;     ///< Stats low threshold for Blue
    UINT32                                    statLowThresholdGr;     ///< Stats low threshold for GR
    UINT32                                    statLowThresholdGb;     ///< Stats low threshold for GB
    UINT8                                     flashStatus;          ///< To indicate Flash Off/Pre Flash/ Flash
    UINT32                                    cameraID;             ///< Sensor ID Number
    UINT32                                    sensorAR;             ///< for 4:3 senosr mode is FULLMODE(0)
                                                                    ///  other mode NON_FULLMODE(1)
    UINT32                                    expCount;             ///< Number of valid stat counts
    NRMConfigData                             nrmCfgData;           ///< NRM config data
    UINT16                                    pipelineBitDepth;     ///< Pipeline bit depth
    UINT16                                    statBitDepth;         ///< STAT bit depth
};

/// @brief Input Data to LSC411 IQ Algorithem
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LSC411InputData
{
    VOID*                                       pHWSetting;           ///< Pointer to the HW Setting Object
    lsc_4_1_1::chromatix_lsc41Type*             pChromatix;           ///< Input Chromatix tunning data
    lscgolden_4_1_1::chromatix_lscgolden41Type* pGoldenChromatix;     ///< Input Chromatix tunning data
    BOOL                                        symbolIDChanged;      ///< Symbol IOD changed, reload triggers
    UINT32                                      fullResWidth;         ///< Current Sensor Image Max Output Width
    UINT32                                      fullResHeight;        ///< Current Sensor Image Max Output Height
    UINT32                                      imageWidth;           ///< Current Sensor Image Output Width
    UINT32                                      imageHeight;          ///< Current Sensor Image Output Height
    UINT32                                      offsetX;              ///< Current Sensor Image Output Width
    UINT32                                      offsetY;              ///< Current Sensor Image Output Height
    UINT32                                      bpsCropOffsetX;       ///< Crop Offset X for BPS Crop
    UINT32                                      bpsCropOffsetY;       ///< Crop Offset Y for BPS Crop
    UINT32                                      scalingFactor;        ///< Scaling factor from sensor
    FLOAT                                       exposureTime;         ///< Input trigger value:  exposure time
    FLOAT                                       AECSensitivity;       ///< Input trigger value:  AEC sensitivity data
    FLOAT                                       luxIndex;             ///< Input trigger value:  Lux index
    FLOAT                                       realGain;             ///< Input trigger value:  real Gain Value
    UINT16                                      gGainWB;              ///< G channel gain to adjust white balance
    UINT16                                      bGainWB;              ///< B channel gain to adjust white balance
    UINT16                                      rGainWB;              ///< R channel gain to adjust white balance
    UINT16                                      bankSelect;           ///< Bank select for LUT table
    UINT8                                       numTables;            ///< Number of calibration tables
    LSC411CalibrationDataTable*                 pCalibrationTable;    ///< pointer to the Calibration tables
    UINT32                                      numberOfEEPROMTable;  ///< number of tables in EEPROM
    BOOL                                        toCalibrate;          ///< Indicates we need to calibrate
    LSC411Stripe                                stripeOut;            ///< LSC changed values from striping lib
    BOOL                                        fetchSettingOnly;     ///< Flag to indicate to fetch settings for striping lib
    BOOL                                        enableCalibration;    ///< Indicates if calibration should be enabled or not
    UINT16                                      first_pixel;          ///< From crc1.1 module
    UINT16                                      last_pixel;           ///< From crc1.1 module
    UINT16                                      first_line;           ///< From crc1.1 module
    UINT16                                      last_line;            ///< From crc1.1 module
    tintless_2_3_1::chromatix_tintless23Type*   pTintlessChromatix;   ///< Pointer to tintless Chromatix
    TintlessConfig*                             pTintlessConfig;      ///< Pointer to the Tintless Algo Configurations
    ParsedTintlessBGStatsOutput*                pTintlessStats;       ///< Pointer to Parsed Tintless data
    ParsedAWBBGStatsOutput*                     pAWBBGStats;          ///< AWB BG stats output pointer
    CHITintlessAlgorithm*                       pTintlessAlgo;        ///< Pointer to the Tintless Algo resource
    CHIALSCAlgorithm*                           pALSCAlgo;            ///< ALSC algorithm pointer
    BOOL                                        enableTintless;       ///< Indicates if tintless algo
    LSC411TintlessRatio                         tintlessConfig;       ///< Store tintless ratio, this will be used if tinless
    UINT8                                       bayerPattern;         ///< Bayer pattern
    UINT64*                                     pALSCBuffer;          ///< ALSC Scratch Buffer
    UINT32                                      ALSCBufferSize;       ///< ALSC Scratch Buffer size in DWord
    UINT32                                      blackLevelResOffset;  ///< Black Level Residual Offset
    BOOL                                        enableTableScaling;   ///< Indicates if table scaling enable
    BOOL                                        enableALSC;           ///< Indicates if ALSC algo
    UINT32                                      totalPixelCount;      ///< total Count of Pixel in the stat region
    UINT32                                      statLowThresholdR;    ///< Stats low threshold for Red
    UINT32                                      statLowThresholdB;    ///< Stats low threshold for Blue
    UINT32                                      statLowThresholdGr;   ///< Stats low threshold for GR
    UINT32                                      statLowThresholdGb;   ///< Stats low threshold for GB
    UINT32                                      expCount;             ///< Number of valid stat counts
    UINT16                                      pipelineBitDepth;     ///< Pipeline bit depth
    UINT16                                      statBitDepth;         ///< STAT bit depth
    NRMConfigData                               nrmCfgData;           ///< NRM config data

    VOID*                                       pInterpolationData;         ///< Input memory for LSC interpolation data
    VOID*                                       pTintlessInterpolationData; ///< Input memory for tintless interpolation data
    UINT8                                       flashStatus;                ///< To indicate Flash Off/Pre Flash/ Flash
    UINT32                                      cameraID;                   ///< Sensor ID Number
    UINT32                                      sensorAR;                   ///< for 4:3 senosr mode is FULLMODE(0)
                                                                            ///  other mode NON_FULLMODE(1)
    BOOL                                        isTLBGStatsBinned;          ///< TinglessBG Stats is generated using
                                                                            ///  CSID binned frame
};

/// @brief Input Data to LSC42 IQ Algorithem
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LSC421InputData
{
    VOID*                                       pHWSetting;                 ///< Pointer to the HW Setting Object
    lsc_4_2_1::chromatix_lsc42Type*             pChromatix;                 ///< Input Chromatix tunning data
    lscgolden_4_2_1::chromatix_lscgolden42Type* pGoldenChromatix;           ///< Input Chromatix tunning data
    BOOL                                        symbolIDChanged;            ///< Symbol IOD changed, reload triggers
    UINT32                                      fullResWidth;               ///< Current Sensor Image Max Output Width
    UINT32                                      fullResHeight;              ///< Current Sensor Image Max Output Height
    UINT32                                      imageWidth;                 ///< Current Sensor Image Output Width
    UINT32                                      imageHeight;                ///< Current Sensor Image Output Height
    UINT32                                      offsetX;                    ///< Current Sensor Image Output Width
    UINT32                                      offsetY;                    ///< Current Sensor Image Output Height
    UINT32                                      bpsCropOffsetX;             ///< Crop Offset X for BPS Crop
    UINT32                                      bpsCropOffsetY;             ///< Crop Offset Y for BPS Crop
    UINT32                                      scalingFactor;              ///< Scaling factor from sensor
    FLOAT                                       exposureTime;               ///< Input trigger value:  exposure time
    FLOAT                                       AECSensitivity;             ///< Input trigger value:  AEC sensitivity data
    FLOAT                                       luxIndex;                   ///< Input trigger value:  Lux index
    FLOAT                                       realGain;                   ///< Input trigger value:  real Gain Value
    UINT16                                      gGainWB;                    ///< G channel gain to adjust white balance
    UINT16                                      bGainWB;                    ///< B channel gain to adjust white balance
    UINT16                                      rGainWB;                    ///< R channel gain to adjust white balance
    UINT16                                      bankSelect;                 ///< Bank select for LUT table
    UINT8                                       numTables;                  ///< Number of calibration tables
    LSC411CalibrationDataTable*                 pCalibrationTable;          ///< pointer to the Calibration tables
    UINT32                                      numberOfEEPROMTable;        ///< number of tables in EEPROM
    BOOL                                        toCalibrate;                ///< Indicates we need to calibrate
    LSC411Stripe                                stripeOut;                  ///< LSC changed values from striping lib
    BOOL                                        fetchSettingOnly;           ///< Flag to fetch settings for striping lib
    BOOL                                        enableCalibration;          ///< Indicates if calibration should be enabled
    UINT16                                      first_pixel;                ///< From crc1.1 module
    UINT16                                      last_pixel;                 ///< From crc1.1 module
    UINT16                                      first_line;                 ///< From crc1.1 module
    UINT16                                      last_line;                  ///< From crc1.1 module
    tintless_2_3_1::chromatix_tintless23Type*   pTintlessChromatix;         ///< Pointer to tintless Chromatix
    TintlessConfig*                             pTintlessConfig;            ///< Pointer to the Tintless Algo Configurations
    ParsedTintlessBGStatsOutput*                pTintlessStats;             ///< Pointer to Parsed Tintless data
    ParsedAWBBGStatsOutput*                     pAWBBGStats;                ///< AWB BG stats output pointer
    CHITintlessAlgorithm*                       pTintlessAlgo;              ///< Pointer to the Tintless Algo resource
    CHIALSCAlgorithm*                           pALSCAlgo;                  ///< ALSC algorithm pointer
    BOOL                                        enableTintless;             ///< Indicates if tintless algo
    LSC411TintlessRatio                         tintlessConfig;             ///< Store tintless ratio, used if tinless
                                                                            ///< algo is skipped
    UINT8                                       bayerPattern;               ///< Bayer pattern
    UINT64*                                     pALSCBuffer;                ///< ALSC Scratch Buffer
    BOOL                                        enableALSC;                 ///< Indicates if ALSC algo
    UINT32                                      ALSCBufferSize;             ///< ALSC Scratch Buffer size in DWord
    UINT32                                      blackLevelResOffset;        ///< Black Level Residual Ofset
    BOOL                                        enableTableScaling;         ///< MFSR 2x zoom, to scale tintless/ALSC tables
    UINT32                                      totalPixelCount;            ///< total Count of Pixel in the stat region
    UINT32                                      statLowThresholdR;          ///< Stats low threshold for REd
    UINT32                                      statLowThresholdB;          ///< Stats low threshold for Blue
    UINT32                                      statLowThresholdGr;         ///< Stats low threshold for GR
    UINT32                                      statLowThresholdGb;         ///< Stats low threshold for GB
    UINT32                                      expCount;                   ///< Number of Exp for a HDR scene (2 Exp or 3 Exp)
    UINT16                                      pipelineBitDepth;           ///< Pipeline bit depth
    UINT16                                      statBitDepth;               ///< STAT bit depth
    NRMConfigData                               nrmCfgData;                 ///< NRM config data
    VOID*                                       pNRM11InterpolationData;    ///< NRM Interpolation data
    VOID*                                       pNRM11ReserveData;          ///< NRM Reserve data

    VOID*                                       pInterpolationData;         ///< input memory for interpolation data
    VOID*                                       pTintlessInterpolationData; ///< Input memory for tintless interpolation data
    UINT8                                       flashStatus;                ///< To indicate Flash Off/Pre Flash/ Flash
    UINT32                                      cameraID;                   ///< Sensor ID Number
    UINT32                                      sensorAR;                   ///< for 4:3 senosr mode is FULLMODE(0)
                                                                            ///  other mode NON_FULLMODE(1)
    UINT32                                      chipsetVersion;             ///< Titan Version
    CHILLSCAlgorithm*                           pLLSCAlgo;                  ///< LLSC Algorithm pointer
    LocalGainAdjustData*                        pLocalGainAdjustData;       ///< Local AWB Gain data
    BOOL                                        isTLBGSatLimitClear;        ///< if TintlessBG saturation limit should be set 0
};

/// @brief LSC Intermediate Data for debug
struct LSCIntermediateData
{
    FLOAT               lscMeshTableBeforeScale[ROLLOFF_MESH_CHANNEL_COUNT][MESH_ROLLOFF_SIZE];
    FLOAT               lscMeshTableAfterScale[ROLLOFF_MESH_CHANNEL_COUNT][MESH_ROLLOFF_SIZE];
    FLOAT               lscMeshTableBeforeTintless[ROLLOFF_MESH_CHANNEL_COUNT][MESH_ROLLOFF_SIZE];
    FLOAT               lscMeshTableAfterTintless[ROLLOFF_MESH_CHANNEL_COUNT][MESH_ROLLOFF_SIZE];
    FLOAT               lscMeshTableBeforeGolden[ROLLOFF_MESH_CHANNEL_COUNT][MESH_ROLLOFF_SIZE];
    FLOAT               lscMeshTableAfterGolden[ROLLOFF_MESH_CHANNEL_COUNT][MESH_ROLLOFF_SIZE];
};

/// @brief Input Data to LSC51 IQ Algorithem
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LSC501InputData
{
    VOID*                                       pHWSetting;             ///< Pointer to the HW Setting Object
    lsc_5_0_1::chromatix_lsc50Type*             pChromatix;             ///< Input Chromatix tunning data
    lscgolden_5_0_1::chromatix_lscgolden50Type* pGoldenChromatix;       ///< Input Chromatix tunning data
    BOOL                                        symbolIDChanged;        ///< Symbol IOD changed, reload triggers
    UINT32                                      fullResWidth;           ///< Current Sensor Image Max Output Width
    UINT32                                      fullResHeight;          ///< Current Sensor Image Max Output Height
    UINT32                                      imageWidth;             ///< Current Sensor Image Output Width
    UINT32                                      imageHeight;            ///< Current Sensor Image Output Height
    UINT32                                      offsetX;                ///< Current Sensor Image Output Width
    UINT32                                      offsetY;                ///< Current Sensor Image Output Height
    UINT32                                      bpsCropOffsetX;         ///< Crop Offset X for BPS Crop
    UINT32                                      bpsCropOffsetY;         ///< Crop Offset Y for BPS Crop
    UINT32                                      scalingFactor;          ///< Scaling factor from sensor
    FLOAT                                       exposureTime;           ///< Input trigger value:  exposure time
    FLOAT                                       AECSensitivity;         ///< Input trigger value:  AEC sensitivity data
    FLOAT                                       luxIndex;               ///< Input trigger value:  Lux index
    FLOAT                                       realGain;               ///< Input trigger value:  real Gain Value
    FLOAT                                       gGainWB;                ///< G channel gain to adjust white balance
    FLOAT                                       bGainWB;                ///< B channel gain to adjust white balance
    FLOAT                                       rGainWB;                ///< R channel gain to adjust white balance
    FLOAT                                       predictiveGain;         ///< Predictive Gain
    UINT16                                      bankSelect;             ///< Bank select for LUT table
    UINT8                                       numTables;              ///< Number of calibration tables
    LSC411CalibrationDataTable*                 pCalibrationTable;      ///< pointer to the Calibration tables
    UINT32                                      numberOfEEPROMTable;    ///< number of tables in EEPROM
    BOOL                                        toCalibrate;            ///< Indicates we need to calibrate
    LSC411Stripe                                stripeOut;              ///< LSC changed values from striping lib
    BOOL                                        fetchSettingOnly;       ///< Flag to indicate to fetch settings for strip lib
    BOOL                                        enableCalibration;      ///< Indicates if calibration should be enabled or not
    UINT16                                      first_pixel;            ///< From crc1.1 module
    UINT16                                      last_pixel;             ///< From crc1.1 module
    UINT16                                      first_line;             ///< From crc1.1 module
    UINT16                                      last_line;              ///< From crc1.1 module
    UINT8                                       highlight_keep_en;       ///< highlight keep enable flag
    UINT8                                       gtm_comp_en;        ///< gtm compensate flag [0: comp in tmc, 1: comp in gtm]
    tintless_2_3_1::chromatix_tintless23Type*   pTintlessChromatix;     ///< Pointer to tintless Chromatix
    TintlessConfig*                             pTintlessConfig;        ///< Pointer to the Tintless Algo Configurations
    ParsedTintlessBGStatsOutput*                pTintlessStats;         ///< Pointer to Parsed Tintless data
    ParsedALSCBGStatsOutput*                    pALSCBGStats;           ///< ALSC BG stats output pointer
    CHITintlessAlgorithm*                       pTintlessAlgo;          ///< Pointer to the Tintless Algo resource
    CHIALSCAlgorithm*                           pALSCAlgo;              ///< ALSC algorithm pointer
    VOID*                                       pInterpolationData;     ///< input memory for interpolation data
    VOID*                                       pTintlessInterpolationData; ///< Input memory for tintless interpolation data
    BOOL                                        enableTintless;         ///< Indicates if tintless algo
    LSC501TintlessRatio                         tintlessConfig;         ///< Store tintless ratio, this will be used if tinless
                                                                        ///  algo is skipped
    UINT8                                       bayerPattern;           ///< Bayer pattern
    BOOL                                        enableALSC;             ///< Indicates if ALSC algo
    UINT64*                                     pALSCBuffer;            ///< ALSC Scratch Buffer
    UINT32                                      ALSCBufferSize;         ///< ALSC Scratch Buffer size in DWord
    UINT32                                      blackLevelResOffset;    ///< Black Level Residual Ofset
    BOOL                                        enableTableScaling;     ///< MFSR 2x zoom, to scale tintless tables/ALSC tables
    UINT32                                      totalPixelCount;        ///< total Count of Pixel in the stat region
    UINT32                                      statLowThresholdR;      ///< Stats low threshold for REd
    UINT32                                      statLowThresholdB;      ///< Stats low threshold for Blue
    UINT32                                      statLowThresholdGr;     ///< Stats low threshold for GR
    UINT32                                      statLowThresholdGb;     ///< Stats low threshold for GB
    UINT32                                      expCount;               ///< Number of Exp for a HDR scene ( 2 Exp or 3 Exp )
    UINT16                                      pipelineBitDepth;       ///< Pipeline bit depth
    UINT16                                      statBitDepth;           ///< STAT bit depth
    VOID*                                       pNRM11InterpolationData;///< NRM Interpolation data
    VOID*                                       pNRM11ReserveData;      ///< NRM Reserve data
    UINT8                                       channelRecovery;        ///< channel to Recover 0: G 1: B 2: R 3: Disabled
    UINT32                                      chipsetVersion;         ///< Titan Version
    UINT8                                       flashStatus;            ///< To indicate Flash Status
    UINT32                                      cameraID;               ///< camera sensor Id
    UINT32                                      sensorAR;               ///< sensorAspect ratio
    BOOL                                        isALSCBGStatsBinned;    ///< ALSCBG Stats is generated using
                                                                        ///  CSID binned frame
    BOOL                                        isTLBGSatLimitClear;    ///< if TintlessBG saturation limit should be set 0
    CHILLSCAlgorithm*                           pLLSCAlgo;              ///< LLSC Algorithm pointer
    LocalGainAdjustData*                        pLocalGainAdjustData;   ///< Local AWB Gain data
    FLOAT                                       gtm_ratio_knee;         ///< gtm ratio Knee
    FLOAT                                       wb_scale_ratio;         ///< wb scale ratio
    BOOL                                        bAWBGainChanged;        ///< bAWBGainChanged
    LSCIntermediateData*                        pLSCIntermediateData;   ///< Store LSC intermediate data for debug.
};

/// @brief Tintless20 Interpolation Input
// NOWHINE NC004c: Share code with system team
struct Tintless20InterpolationInput
{
    tintless_2_0_0::chromatix_tintless20Type* pTintlessChromatix;   ///< Pointer to tintless Chromatix
    FLOAT                                     exposureTime;         ///< Input trigger value:  exposure time
    FLOAT                                     exposureGainRatio;    ///< Input trigger value:  exposure gain ratio
    FLOAT                                     AECSensitivity;       ///< Input trigger value:  AEC sensitivity data
    FLOAT                                     luxIndex;             ///< Input trigger value:  Lux index
    FLOAT                                     realGain;             ///< Input trigger value:  real Gain Value
};

/// @brief Tintless20 Interpolation Input
// NOWHINE NC004c: Share code with system team
struct Tintless231InterpolationInput
{
    tintless_2_3_1::chromatix_tintless23Type* pTintlessChromatix;   ///< Pointer to tintless Chromatix
    FLOAT                                     exposureTime;         ///< Input trigger value:  exposure time
    FLOAT                                     exposureGainRatio;    ///< Input trigger value:  exposure gain ratio
    FLOAT                                     AECSensitivity;       ///< Input trigger value:  AEC sensitivity data
    FLOAT                                     luxIndex;             ///< Input trigger value:  Lux index
    FLOAT                                     realGain;             ///< Input trigger value:  real Gain Value
};

/// @brief Input Data to Gamma16 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct Gamma16InputData
{
    VOID*                               pHWSetting;         ///< Pointer to the HW Setting Object
    gamma_1_6_0::chromatix_gamma16Type* pChromatix;         ///< Input Chromatix tunning data
    gamma_1_6_0::chromatix_gamma16Type* pChromatix_exp1;    ///< Input Chromatix tunning data
    gamma_1_6_0::chromatix_gamma16Type* pChromatix_exp2;    ///< Input Chromatix tunning data
    gamma_1_6_0::chromatix_gamma16Type* pChromatix_exp3;    ///< Input Chromatix tunning data
    gamma_1_6_0::chromatix_gamma16Type* pChromatix_fuse;    ///< Input Chromatix tunning data
    BOOL                                symbolIDChanged;    ///< Symbol ID changed, reload triggers
    FLOAT                               DRCGain;            ///< Input trigger value:  DRCGain
    FLOAT                               exposureTime;       ///< Input trigger value:  exposure time
    FLOAT                               exposureGainRatio;  ///< Input trigger value:  exposure gain ratio
    FLOAT                               AECSensitivity;     ///< Input trigger value:  AEC sensitivity data
    FLOAT                               LEDTrigger;         ///< Input trigger value:  Led Index
    FLOAT                               LEDFirstEntryRatio; ///< Ratio of Dual LED
    FLOAT                               luxIndex;           ///< Input trigger value:  Lux index
    FLOAT                               realGain;           ///< Input trigger value:  Real Gain Value
    FLOAT                               CCTTrigger;         ///< Input trigger value:  CCT
    FLOAT                               AECGain;            ///< Input trigger value:  Digital Gain Value
    UINT8                               contrastLevel;      ///< contrast level pass down by APP
    UINT16                              LUTBankSel;         ///< LUT bank used for the frame
    UINT16                              numberOfLED;        ///< Number of LED
    VOID*                               pLibData;           ///< Pointer to the library specific data
    VOID*                               pInterpolationData; ///< input memory for interpolation data
    UINT                                MFHDRIPEPath;       ///< IPE path if MFHDR pre hdr/ post HDR gamma for inv gamma calc
};

/// @brief Input Data to Gamma161 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct Gamma161InputData
{
    VOID*                               pHWSetting;         ///< Pointer to the HW Setting Object
    gamma_1_6_1::chromatix_gamma16Type* pChromatix;         ///< Input Chromatix tunning data
    gamma_1_6_1::chromatix_gamma16Type* pChromatix_exp1;    ///< Input Chromatix tunning data
    gamma_1_6_1::chromatix_gamma16Type* pChromatix_exp2;    ///< Input Chromatix tunning data
    gamma_1_6_1::chromatix_gamma16Type* pChromatix_exp3;    ///< Input Chromatix tunning data
    gamma_1_6_1::chromatix_gamma16Type* pChromatix_fuse;    ///< Input Chromatix tunning data
    BOOL                                symbolIDChanged;    ///< Symbol ID changed, reload triggers
    UINT8                               contrastLevel;      ///< contrast level pass down by APP
    UINT16                              LUTBankSel;         ///< LUT bank used for the frame
    UINT16                              numberOfLED;        ///< Number of LED
    VOID*                               pLibData;           ///< Pointer to the library specific data
    VOID*                               pInterpolationData; ///< input memory for interpolation data
    UINT                                MFHDRIPEPath;       ///< IPE path if MFHDR pre hdr/ post HDR gamma for inv gamma calc
    UINT32                              chipsetVersion;     ///< Titan version
    UINT16                              pipelineType;       ///< Pipeline type
};

/// @brief Input Data to ABF34 IQ Algorithem
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct ABF34InputData
{
    VOID*                            pHWSetting;          ///< Pointer to the HW Setting Object
    abf_3_4_0::chromatix_abf34Type*  pChromatix;          ///< Input Chromatix tunning data
    BOOL                             moduleEnable;        ///< Module enable flag
    FLOAT                            DRCGain;             ///< Input trigger value:  DRCGain
    FLOAT                            exposureTime;        ///< Input trigger value:  exposure time
    FLOAT                            exposureGainRatio;   ///< Input trigger value:  exposure gain ratio
    FLOAT                            AECSensitivity;      ///< Input trigger value:  AEC sensitivity data
    FLOAT                            luxIndex;            ///< Input trigger value:  Lux index
    FLOAT                            realGain;            ///< Input trigger value:  Digital Gain Value
    UINT8                            LUTBankSel;          ///< Lut bank
    UINT32                           CAMIFWidth;          ///< Input CAMIF width
    UINT32                           CAMIFHeight;         ///< Input CAMIF Height
    UINT32                           blackResidueOffset;  ///< Black Level Offset
    UINT32                           sensorOffsetX;       ///< Current Sensor Image Output horizontal offset
    UINT32                           sensorOffsetY;       ///< Current Sensor Image Output vertical offset
    VOID*                            pInterpolationData;  ///< input memory for chromatix interpolation data
    FLOAT                            luma_denoising;	  ///< Slider Based Tuning
};

/// @brief Input Data to ABF341 IQ Algorithem
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct ABF341InputData
{
    VOID*                            pHWSetting;          ///< Pointer to the HW Setting Object
    abf_3_4_1::chromatix_abf34Type*  pChromatix;          ///< Input Chromatix tunning data
    BOOL                             moduleEnable;        ///< Module enable flag
    FLOAT                            DRCGain;             ///< Input trigger value:  DRCGain
    FLOAT                            exposureTime;        ///< Input trigger value:  exposure time
    FLOAT                            exposureGainRatio;   ///< Input trigger value:  exposure gain ratio
    FLOAT                            AECSensitivity;      ///< Input trigger value:  AEC sensitivity data
    FLOAT                            luxIndex;            ///< Input trigger value:  Lux index
    FLOAT                            realGain;            ///< Input trigger value:  Digital Gain Value
    UINT8                            LUTBankSel;          ///< Lut bank
    UINT32                           CAMIFWidth;          ///< Input CAMIF width
    UINT32                           CAMIFHeight;         ///< Input CAMIF Height
    UINT32                           blackResidueOffset;  ///< Black Level Offset
    UINT32                           sensorOffsetX;       ///< Current Sensor Image Output horizontal offset
    UINT32                           sensorOffsetY;       ///< Current Sensor Image Output vertical offset
    VOID*                            pInterpolationData;  ///< input memory for chromatix interpolation data
    FLOAT                            luma_denoising;	  ///< Slider Based Tuning
};
/// @brief Input Data to ABF41 IQ Algorithem
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct BPCABF41InputData
{
    VOID*                                 pHWSetting;          ///< Pointer to the HW Setting Object
    bpcabf_4_1_0::chromatix_bpcabf41Type* pChromatix;          ///< Input Chromatix tunning data
    BOOL                                  moduleEnable;        ///< Module enable flag
    BOOL                                  abfEnable;           ///< ABF enable flag
    BOOL                                  bpcbccEnable;        ///< BPC BCC enable flag
    BOOL                                  sbpcEnable;          ///< Single BPC enable flag
    BOOL                                  prevStateEnable;     ///< Previous enable flag
    FLOAT                                 DRCGain;             ///< Input trigger value:  DRCGain
    FLOAT                                 exposureTime;        ///< Input trigger value:  exposure time
    FLOAT                                 AECSensitivity;      ///< Input trigger value:  AEC sensitivity data
    FLOAT                                 luxIndex;            ///< Input trigger value:  Lux index
    FLOAT                                 realGain;            ///< Input trigger value:  Digital Gain Value
    UINT8                                 LUTBankSel;          ///< Lut bank
    UINT32                                CAMIFWidth;          ///< Input CAMIF width
    UINT32                                CAMIFHeight;         ///< Input CAMIF Height
    UINT32                                blackResidueOffset;  ///< Black Level Offset
    UINT32                                sensorOffsetX;       ///< Current Sensor Image Output horizontal offset
    UINT32                                sensorOffsetY;       ///< Current Sensor Image Output vertical offset
    BOOL                                  symbolIDChanged;     ///< Symbol IOD changed, reload triggers
    UINT32                                blackLevelOffset;    ///< Black Level Offset
    FLOAT                                 digitalGain;         ///< Input trigger value:  Digital Gain Value
    FLOAT                                 nonHdrMultFactor;    ///< Non HDR MultFactor
    VOID*                                 pInterpolationData;  ///< input memory for chromatix interpolation data
    UINT8                                 bayerPattern;        ///< bayer Pattern
    FLOAT                                 exposureGainRatio;   ///< exposure Gain Ratio
    UINT32                                chipsetVersion;      ///< chipset Version
    BLS12InputData                        BLSData;             ///< Black Level is clubbed with ABF40 in BPS
};

/// @brief Input Data to ABF411 IQ Algorithem
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct BPCABF411InputData
{
    VOID*                                 pHWSetting;          ///< Pointer to the HW Setting Object
    bpcabf_4_1_1::chromatix_bpcabf41Type* pChromatix;          ///< Input Chromatix tunning data
    BOOL                                  moduleEnable;        ///< Module enable flag
    BOOL                                  abfEnable;           ///< ABF enable flag
    BOOL                                  bpcbccEnable;        ///< BPC BCC enable flag
    BOOL                                  sbpcEnable;          ///< Single BPC enable flag
    BOOL                                  prevStateEnable;     ///< Previous enable flag
    UINT8                                 LUTBankSel;          ///< Lut bank
    UINT32                                CAMIFWidth;          ///< Input CAMIF width
    UINT32                                CAMIFHeight;         ///< Input CAMIF Height
    UINT32                                blackResidueOffset;  ///< Black Level Offset
    UINT32                                offsetX;             ///< Current horizontal offset
    UINT32                                offsetY;             ///< Current vertical offset
    BOOL                                  symbolIDChanged;     ///< Symbol IOD changed, reload triggers
    UINT32                                blackLevelOffset;    ///< Black Level Offset
    FLOAT                                 digitalGain;         ///< Input trigger value:  Digital Gain Value
    FLOAT                                 nonHdrMultFactor;    ///< Non HDR MultFactor
    VOID*                                 pInterpolationData;  ///< input memory for chromatix interpolation data
    UINT8                                 bayerPattern;        ///< bayer Pattern
    FLOAT                                 exposureGainRatio;   ///< exposure Gain Ratio
    UINT32                                chipsetVersion;      ///< chipset Version
    BLS12InputData                        BLSData;             ///< Black Level is clubbed with ABF40 in BPS

    // NRM Config data
    NRMConfigData                         nrmCfgData;               ///< NRM config data
    VOID*                                 pNRM11InterpolationData;  ///< NRM InterpolationData
    VOID*                                 pNRM11ReserveData;        ///< NRM ReserveData

    VOID*                                 pOnlineTuningSetting;     ///< OnlineTuningSettings
    FLOAT                                 luma_denoising_factor;      ///< Slider Based Tuning
    FLOAT                                 badpixel_correction_factor; ///< Slider Based Tuning
};

/// @ bried Input Data to BDS10 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct BDS10InputData
{
    VOID*                               pHWSetting;           ///< Pointer to the HW Setting Object
    bds_1_0::chromatix_bds10Type*       pChromatix;
    BOOL                                moduleEnable;         ///< Enable BDS Module
    FLOAT                               DRCGain;              ///< Input Trigger Value: DRC Gain
    FLOAT                               exposureTime;         ///< Input Trigger Value: Exposure Time
    FLOAT                               exposureGainRatio;    ///< Input Trigger Value: Exposure gain Ratio
    FLOAT                               AECSensitivity;       ///< Input Trigger Value: AecSensitivity
    FLOAT                               luxIndex;             ///< Input Trigger Value: Lux Index
    FLOAT                               digitalGain;          ///< Input Trigger Value: Digital Gain Value
    BOOL                                symbolIDChanged;      ///< Symbol ID changed, reload Triggers
    FLOAT                               leftGGainWB;          ///< G channel gain to adjust white balance
    FLOAT                               leftBGainWB;          ///< B channel gain to adjust white balance
    FLOAT                               leftRGainWB;          ///< R channel gain to adjust white balance
    UINT8                               bayerPattern;         ///< Bayer pattern
    FLOAT                               predictiveGain;       ///< Predictive Gain
    UINT32                              blackLevelResOffset;  ///< Black Level Residual Ofset
    UINT16                              inputWidth;           ///< Input Width
    VOID*                               pInterpolationData;   ///< input Memory for Chromatix Interpolation Data
    FLOAT                               preScaleRatio;        ///< Pre Scale Ratio
};

/// @ bried Input Data to WNR24 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct WNR24InputData
{
    VOID*                               pHWSetting;           ///< Pointer to the HW Setting Object
    wnr_2_4_0::chromatix_wnr24Type*     pChromatix;           ///< Input Chromatix Tuning Data
    BOOL                                moduleEnable;         ///< Enable WNR Module
    FLOAT                               DRCGain;              ///< Input Trigger Value: DRC Gain
    FLOAT                               exposureTime;         ///< Input Trigger Value: Exposure Time
    FLOAT                               exposureGainRatio;         ///< Input Trigger Value: Exposure Gain Ratio
    FLOAT                               AECSensitivity;       ///< Input Trigger Value: AecSensitivity
    FLOAT                               luxIndex;             ///< Input Trigger Value: Lux Index
    FLOAT                               totalScaleRatio;      ///< Input Trigger Value: Total Scale Ratio
    FLOAT                               preScaleRatio;       ///< Input Trigger Value: PreScale Ratio
    FLOAT                               postScaleRatio;       ///< Input Trigger Value: PostScale Ratio
    FLOAT                               realGain;             ///< Input Trigger Value: Digital Gain Value
    INT32                               imageWidth;           ///< Image Width
    INT32                               imageHeight;          ///< Image Height
    UINT8                               LUTBankSel;           ///< LUT bank
    BOOL                                symbolIDChanged;      ///< Symbol ID changed, reload Triggers
    VOID*                               pInterpolationData;   ///< input Memory for Chromatix Interpolation Data
    UINT8                               bayerPattern;         ///< Bayer Pattern
    FLOAT                               blendConfidence;      ///< Blend confidence to account for failure case of MFNR
    FLOAT                               adjustmentFactor;     ///< Adjustment factor to account for denoising strength in MFNR
    INT                                 opeCds;               ///< opeCDS enabled or disabled
};

/// @brief Input Data to pdpc11 Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct PDPC11InputData
{
    VOID*                             pHWSetting;                             ///< Pointer to the HW Setting Object
    pdpc_1_1_0::chromatix_pdpc11Type* pChromatix;                             ///< Input Chromatix tunning data
    SensorType                        sensorType;                             ///< Sensor type
    UINT32                            imageWidth;                             ///< Current Sensor Image Output Width
    UINT32                            imageHeight;                            ///< Current Sensor Image Output Height
    UINT32                            PDAFPixelCount;                         ///< PD pixel count
    UINT32                            PDAFBlockWidth;                         ///< Current Sensor PDAF block Width
    UINT32                            PDAFBlockHeight;                        ///< Current Sensor PDAF block Height
    UINT16                            PDAFGlobaloffsetX;                      ///< Current Sensor PDAF horizontal offset
    UINT16                            PDAFGlobaloffsetY;                      ///< Current Sensor PDAF vertical offset
    UINT16                            blackLevelOffset;                       ///< Black Level Offset
    UINT16                            zzHDRFirstRBEXP;                        ///< HDR First RB Exposure
    UINT16                            zzHDRPattern;                           ///< ZZ HDR pattern
    UINT8                             HDRMode;                                ///< ISP or Sensor HDR mode
    FLOAT                             DRCGain;                                ///< Input trigger value:  DRCGain
    FLOAT                             exposureTime;                           ///< Input trigger value:  exposure time
    FLOAT                             exposureGainRatio;                      ///< Input trigger value:  exposure gain ratio
    FLOAT                             AECSensitivity;                         ///< Input trigger value:  AEC sensitivity data
    FLOAT                             luxIndex;                               ///< Input trigger value:  Lux index
    FLOAT                             realGain;                               ///< Input trigger value:  AEC Gain Value
    FLOAT                             leftGGainWB;                            ///< G channel gain to adjust white balance
    FLOAT                             leftBGainWB;                            ///< B channel gain to adjust white balance
    FLOAT                             leftRGainWB;                            ///< R channel gain to adjust white balance
    PDPixelCoordinates                PDAFPixelCoords[MAX_CAMIF_PDAF_PIXELS]; ///< Pixel coordinates
    VOID*                             pInterpolationData;                     ///< input memory for interpolation data
    BOOL                              isPrepareStripeInputContext;            ///< Flag to indicate if prepare striping context
};

/// @brief Input Data to pdpc11 Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct PDPC111InputData
{
    VOID*                             pHWSetting;                             ///< Pointer to the HW Setting Object
    pdpc_1_1_1::chromatix_pdpc11Type* pChromatix;                             ///< Input Chromatix tunning data
    SensorType                        sensorType;                             ///< Sensor type
    UINT32                            imageWidth;                             ///< Current Sensor Image Output Width
    UINT32                            imageHeight;                            ///< Current Sensor Image Output Height
    UINT32                            PDAFPixelCount;                         ///< PD pixel count
    UINT32                            PDAFBlockWidth;                         ///< Current Sensor PDAF block Width
    UINT32                            PDAFBlockHeight;                        ///< Current Sensor PDAF block Height
    UINT16                            PDAFGlobaloffsetX;                      ///< Current Sensor PDAF horizontal offset
    UINT16                            PDAFGlobaloffsetY;                      ///< Current Sensor PDAF vertical offset
    UINT16                            blackLevelOffset;                       ///< Black Level Offset
    UINT16                            zzHDRFirstRBEXP;                        ///< HDR First RB Exposure
    UINT16                            zzHDRPattern;                           ///< ZZ HDR pattern
    UINT8                             HDRMode;                                ///< ISP or Sensor HDR mode
    FLOAT                             DRCGain;                                ///< Input trigger value:  DRCGain
    FLOAT                             exposureTime;                           ///< Input trigger value:  exposure time
    FLOAT                             exposureGainRatio;                      ///< Input trigger value:  exposure gain ratio
    FLOAT                             AECSensitivity;                         ///< Input trigger value:  AEC sensitivity data
    FLOAT                             luxIndex;                               ///< Input trigger value:  Lux index
    FLOAT                             realGain;                               ///< Input trigger value:  AEC Gain Value
    FLOAT                             leftGGainWB;                            ///< G channel gain to adjust white balance
    FLOAT                             leftBGainWB;                            ///< B channel gain to adjust white balance
    FLOAT                             leftRGainWB;                            ///< R channel gain to adjust white balance
    PDPixelCoordinates                PDAFPixelCoords[MAX_CAMIF_PDAF_PIXELS]; ///< Pixel coordinates
    VOID*                             pInterpolationData;                     ///< input memory for interpolation data
    BOOL                              isPrepareStripeInputContext;            ///< Flag to indicate if prepare striping context
};

/// @brief Input Data to GTM10 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct GTM10InputData
{
    VOID*                           pHWSetting;             ///< Pointer to the HW Setting Object
    gtm_1_0_0::chromatix_gtm10Type* pChromatix;             ///< Input Chromatix tunning data
    BOOL                            symbolIDChanged;        ///< Symbol IOD changed, reload triggers
    FLOAT                           DRCGain;                ///< Input trigger value:  drcGain
    FLOAT                           exposureTime;           ///< Input trigger value:  exposure time
    FLOAT                           exposureGainRatio;      ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;         ///< Input trigger value:  AEC sensitivity data
    FLOAT                           AECSensitivityShort;    ///< Input trigger value:  AEC sensitivity data
    FLOAT                           realGain;               ///< Input trigger value:  Digital Gain Value
    FLOAT                           digitalGain;            ///< Digital gain from Sensor
    FLOAT                           luxIndex;               ///< Input trigger value:  Lux index
    UINT8                           LUTBankSel;             ///< LUT bank need for this frame
    /// @todo (CAMX-1843) Need to populate below parameters from Meta data/calculated values
    UINT32*                         pGRHist;                ///< BHIST GR stats
    FLOAT                           HDRExpTimeRatio;        ///< HDR exposure time ratio
    UINT16                          HDRMSBAlign;            ///< HDR MSB alignment
    UINT16                          HDRExpRatio;            ///< HDR exposure ratio
    UINT16                          HDRBlackIn;             ///< Black level input
    UINT32                          totalNumFrames;         ///< Total number of frames
    UINT32                          frameNum;               ///< Current frame number
    FLOAT                           keyPrevious;            ///< Key from previous frame
    FLOAT                           alphaPrevious;          ///< Alpha from previous frame
    INT32                           maxVHistPrevious;       ///< Maximum value in histogram from previous frame
    INT32                           minVHistPrevious;       ///< Minimum value in histogram from previous frame
    VOID*                           pLibData;               ///< Pointer to the library specific data
    ADRCData*                       pAdrcInputData;         ///< Pointer to the input data for adrc algo calculation
    UINT64                          BHistRequestID;         ///< RequestID to which the BHIST stats correspond to
    UINT32                          maxPipelineDelay;       ///< Maximum pipeline delay
    VOID*                           pInterpolationData;     ///< input memory for interpolation data
    BOOL                            tmc13Disable;           ///< Disable tmc13 incase of mfhdr
    FLOAT                           gamma15Output[257];     ///< Gamma output from gamma15 module
    ParsedHDRBHistStatsOutput*      pParsedHDRBHistStats;   ///< HDR BHIST stats
    ParsedHDRBEStatsOutput*         pParsedHDRBEStats;      ///< HDR BE stats
};


/// @brief Input Data to GTM101 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct GTM101InputData
{
    VOID*                           pHWSetting;             ///< Pointer to the HW Setting Object
    gtm_1_0_1::chromatix_gtm10Type* pChromatix;             ///< Input Chromatix tunning data
    BOOL                            symbolIDChanged;        ///< Symbol IOD changed, reload triggers
    FLOAT                           AECSensitivity;         ///< Input trigger value:  AEC sensitivity data
    UINT8                           LUTBankSel;             ///< LUT bank need for this frame
/// @todo (CAMX-1843) Need to populate below parameters from Meta data/calculated values
    UINT32*                         pGRHist;                ///< BHIST GR stats
    FLOAT                           HDRExpTimeRatio;        ///< HDR exposure time ratio
    UINT16                          HDRMSBAlign;            ///< HDR MSB alignment
    UINT16                          HDRExpRatio;            ///< HDR exposure ratio
    UINT16                          HDRBlackIn;             ///< Black level input
    UINT32                          totalNumFrames;         ///< Total number of frames
    UINT32                          frameNum;               ///< Current frame number
    FLOAT                           keyPrevious;            ///< Key from previous frame
    FLOAT                           alphaPrevious;          ///< Alpha from previous frame
    INT32                           maxVHistPrevious;       ///< Maximum value in histogram from previous frame
    INT32                           minVHistPrevious;       ///< Minimum value in histogram from previous frame
    VOID*                           pLibData;               ///< Pointer to the library specific data
    ADRCData*                       pAdrcInputData;         ///< Pointer to the input data for adrc algo calculation
    UINT64                          BHistRequestID;         ///< RequestID to which the BHIST stats correspond to
    UINT32                          maxPipelineDelay;       ///< Maximum pipeline delay
    VOID*                           pInterpolationData;     ///< input memory for interpolation data
    BOOL                            tmc13Disable;           ///< Disable tmc13 incase of mfhdr
    FLOAT                           gamma15Output[257];     ///< Gamma output from gamma15 module
};


/// @brief Input Data to GTM12 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct GTM12InputData
{
    VOID*                           pHWSetting;             ///< Pointer to the HW Setting Object
    gtm_1_2_0::chromatix_gtm12Type* pChromatix;             ///< Input Chromatix tunning data
    BOOL                            symbolIDChanged;        ///< Symbol IOD changed, reload triggers
    FLOAT                           DRCGain;                ///< Input trigger value:  drcGain
    FLOAT                           exposureTime;           ///< Input trigger value:  exposure time
    FLOAT                           exposureGainRatio;           ///< Input trigger value:  exposure gain Ratio
    FLOAT                           AECSensitivity;         ///< Input trigger value:  AEC sensitivity data
    FLOAT                           AECSensitivityShort;    ///< Input trigger value:  AEC sensitivity data
    FLOAT                           realGain;               ///< Input trigger value:  Digital Gain Value
    FLOAT                           digitalGain;            ///< Digital gain from Sensor
    FLOAT                           luxIndex;               ///< Input trigger value:  Lux index
    UINT8                           LUTBankSel;             ///< LUT bank need for this frame
                                                            /// @todo (CAMX-1843) Need to populate below parameters
                                                            ///        from Meta data/calculated values
    UINT32*                         pGRHist;                ///< BHIST GR stats
    FLOAT                           HDRExpTimeRatio;        ///< HDR exposure time ratio
    UINT16                          HDRMSBAlign;            ///< HDR MSB alignment
    UINT16                          HDRExpRatio;            ///< HDR exposure ratio
    UINT16                          HDRBlackIn;             ///< Black level input
    UINT32                          totalNumFrames;         ///< Total number of frames
    UINT32                          frameNum;               ///< Current frame number
    FLOAT                           keyPrevious;            ///< Key from previous frame
    FLOAT                           alphaPrevious;          ///< Alpha from previous frame
    INT32                           maxVHistPrevious;       ///< Maximum value in histogram from previous frame
    INT32                           minVHistPrevious;       ///< Minimum value in histogram from previous frame
    VOID*                           pLibData;               ///< Pointer to the library specific data
    ADRCData*                       pAdrcInputData;         ///< Pointer to the input data for adrc algo calculation
    UINT64                          BHistRequestID;         ///< RequestID to which the BHIST stats correspond to
    UINT32                          maxPipelineDelay;       ///< Maximum pipeline delay
    VOID*                           pInterpolationData;     ///< input memory for interpolation data
    UINT32                          chipsetVersion;         ///< Titan version
};

/// @brief Input Data to GTM13 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct GTM13InputData
{
    VOID*                           pHWSetting;             ///< Pointer to the HW Setting Object
    gtm_1_3_0::chromatix_gtm13Type* pChromatix;             ///< Input Chromatix tunning data
    BOOL                            symbolIDChanged;        ///< Symbol IOD changed, reload triggers
    FLOAT                           DRCGain;                ///< Input trigger value:  drcGain
    FLOAT                           exposureTime;           ///< Input trigger value:  exposure time
    FLOAT                           exposureGainRatio;      ///< Input trigger value:  exposure gain Ratio
    FLOAT                           AECSensitivity;         ///< Input trigger value:  AEC sensitivity data
    FLOAT                           AECSensitivityShort;    ///< Input trigger value:  AEC sensitivity data
    FLOAT                           realGain;               ///< Input trigger value:  Digital Gain Value
    FLOAT                           digitalGain;            ///< Digital gain from Sensor
    FLOAT                           luxIndex;               ///< Input trigger value:  Lux index
    UINT8                           LUTBankSel;             ///< LUT bank need for this frame
    /// @todo (CAMX-1843) Need to populate below parameters from Meta data/calculated values
    UINT32*                         pGRHist;                ///< BHIST GR stats
    FLOAT                           HDRExpTimeRatio;        ///< HDR exposure time ratio
    UINT16                          HDRMSBAlign;            ///< HDR MSB alignment
    UINT16                          HDRExpRatio;            ///< HDR exposure ratio
    UINT16                          HDRBlackIn;             ///< Black level input
    UINT16                          pipelineId;             ///< Pipeline Id
    UINT32                          totalNumFrames;         ///< Total number of frames
    UINT32                          frameNum;               ///< Current frame number
    UINT32                          chipsetVersion;         ///< for maintaining chipset version
    FLOAT                           keyPrevious;            ///< Key from previous frame
    FLOAT                           alphaPrevious;          ///< Alpha from previous frame
    INT32                           maxVHistPrevious;       ///< Maximum value in histogram from previous frame
    INT32                           minVHistPrevious;       ///< Minimum value in histogram from previous frame
    VOID*                           pLibData;               ///< Pointer to the library specific data
    ADRCData*                       pAdrcInputData;         ///< Pointer to the input data for adrc algo calculation
    UINT64                          BHistRequestID;         ///< RequestID to which the BHIST stats correspond to
    UINT32                          maxPipelineDelay;       ///< Maximum pipeline delay
    VOID*                           pInterpolationData;     ///< input memory for interpolation data
};

/// @brief Input Data to GTM12 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct GTM132InputData
{
    VOID*                            pHWSetting;             ///< Pointer to the HW Setting Object
    gtm_1_3_2::chromatix_gtm132Type* pChromatix;             ///< Input Chromatix tunning data
    BOOL                             symbolIDChanged;        ///< Symbol IOD changed, reload triggers
    UINT8                            LUTBankSel;             ///< LUT bank need for this frame
    /// @todo (CAMX-1843) Need to populate below parameters from Meta data/calculated values
    UINT32*                          pGRHist;                ///< BHIST GR stats
    FLOAT                            HDRExpTimeRatio;        ///< HDR exposure time ratio
    UINT16                           HDRMSBAlign;            ///< HDR MSB alignment
    UINT16                           HDRExpRatio;            ///< HDR exposure ratio
    UINT16                           HDRBlackIn;             ///< Black level input
    UINT32                           totalNumFrames;         ///< Total number of frames
    UINT32                           frameNum;               ///< Current frame number
    FLOAT                            keyPrevious;            ///< Key from previous frame
    FLOAT                            alphaPrevious;          ///< Alpha from previous frame
    INT32                            maxVHistPrevious;       ///< Maximum value in histogram from previous frame
    INT32                            minVHistPrevious;       ///< Minimum value in histogram from previous frame
    VOID*                            pLibData;               ///< Pointer to the library specific data
    ADRCData*                        pAdrcInputData;         ///< Pointer to the input data for adrc algo calculation
    UINT64                           BHistRequestID;         ///< RequestID to which the BHIST stats correspond to
    UINT32                           maxPipelineDelay;       ///< Maximum pipeline delay
    VOID*                            pInterpolationData;     ///< input memory for interpolation data
    UINT32                           chipsetVersion;         ///< Chipset Version
    UINT16                           pipelineId;             ///< Pipeline Id
    UINT8                            highlightKeepEnable;    ///< Highlight Keep Enable
    UINT8                            GTMCompensationEnable;  ///< Enable GTM Compensation from WB
    FLOAT                            GTMRatioKnee;           ///< Ratio for GTM Knee ponts from WB
    FLOAT                            WBScaleRatio;           ///< WB scale Ratio
    DOUBLE*                          pApplyManualCurve;      ///< OEM manual curve applied & saved for the next
    FLOAT*                           pApplyCurveStrength;    ///< OEM manual curve strength applied & saved for the next
    BOOL                             isManualCurve;          ///< OEM manual curve is enabled
    BOOL                             enableModuleLog;        ///< OEM manual curve GTM module log
};

/// @brief Input Data to GTM131 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct GTM131InputData
{
    VOID*                           pHWSetting;             ///< Pointer to the HW Setting Object
    gtm_1_3_1::chromatix_gtm13Type* pChromatix;             ///< Input Chromatix tunning data
    BOOL                            symbolIDChanged;        ///< Symbol IOD changed, reload triggers
    UINT8                           LUTBankSel;             ///< LUT bank need for this frame
    /// @todo (CAMX-1843) Need to populate below parameters from Meta data/calculated values
    UINT32*                         pGRHist;                ///< BHIST GR stats
    FLOAT                           HDRExpTimeRatio;        ///< HDR exposure time ratio
    UINT16                          HDRMSBAlign;            ///< HDR MSB alignment
    UINT16                          HDRExpRatio;            ///< HDR exposure ratio
    UINT16                          HDRBlackIn;             ///< Black level input
    UINT16                          pipelineId;             ///< Pipeline Id
    UINT32                          totalNumFrames;         ///< Total number of frames
    UINT32                          frameNum;               ///< Current frame number
    UINT32                          chipsetVersion;         ///< for maintaining chipset version
    FLOAT                           keyPrevious;            ///< Key from previous frame
    FLOAT                           alphaPrevious;          ///< Alpha from previous frame
    INT32                           maxVHistPrevious;       ///< Maximum value in histogram from previous frame
    INT32                           minVHistPrevious;       ///< Minimum value in histogram from previous frame
    VOID*                           pLibData;               ///< Pointer to the library specific data
    ADRCData*                       pAdrcInputData;         ///< Pointer to the input data for adrc algo calculation
    UINT64                          BHistRequestID;         ///< RequestID to which the BHIST stats correspond to
    UINT32                          maxPipelineDelay;       ///< Maximum pipeline delay
    VOID*                           pInterpolationData;     ///< input memory for interpolation data
    UINT8                           GTMCompensationEnable;  ///< Enable GTM Compensation from WB
    FLOAT                           GTMRatioKnee;           ///< Ratio for GTM Knee ponts from WB
    FLOAT                           WBScaleRatio;           ///< WB scale Ratio
    DOUBLE*                         pApplyManualCurve;      ///< OEM manual curve applied & saved for the next
    BOOL                            isManualCurve;          ///< OEM manual curve is enabled
    BOOL                            enableModuleLog;        ///< OEM manual curve GTM module log
};


/// @brief Input Data to GTMFD131 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct GTMFD131InputData
{
    gtmfd_1_3_1::chromatix_gtmfd13Type* pChromatix;             ///< Input Chromatix tunning data
    BOOL                                symbolIDChanged;        ///< Symbol IOD changed, reload triggers
    FLOAT                               digitalGain;            ///< Digital gain from Sensor
    FLOAT                               luxIndex;               ///< Input trigger value:  Lux index
    UINT8                               LUTBankSel;             ///< LUT bank need for this frame
    UINT32*                             pGRHist;                ///< BHIST GR stats
    UINT32                              totalNumFrames;         ///< Total number of frames
    UINT32                              frameNum;               ///< Current frame number
    FLOAT                               keyPrevious;            ///< Key from previous frame
    FLOAT                               alphaPrevious;          ///< Alpha from previous frame
    INT32                               maxVHistPrevious;       ///< Maximum value in histogram from previous frame
    INT32                               minVHistPrevious;       ///< Minimum value in histogram from previous frame
    VOID*                               pLibData;               ///< Pointer to the library specific data
    ADRCData*                           pAdrcInputData;         ///< Pointer to the input data for adrc algo calculation
    UINT64                              BHistRequestID;         ///< RequestID to which the BHIST stats correspond to
    UINT32                              maxPipelineDelay;       ///< Maximum pipeline delay
    VOID*                               pInterpolationData;     ///< input memory for interpolation data
    UINT32                              chipsetVersion;         ///< Chipset Version
    UINT16                              pipelineId;             ///< Pipeline Id
};

/// @brief Input Data to GTMFD132 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct GTMFD132InputData
{
    gtmfd_1_3_2::chromatix_gtmfd132Type* pChromatix;             ///< Input Chromatix tunning data
    BOOL                                 symbolIDChanged;        ///< Symbol IOD changed, reload triggers
    FLOAT                                digitalGain;            ///< Digital gain from Sensor
    FLOAT                                luxIndex;               ///< Input trigger value:  Lux index
    UINT8                                LUTBankSel;             ///< LUT bank need for this frame
    UINT32*                              pGRHist;                ///< BHIST GR stats
    UINT32                               totalNumFrames;         ///< Total number of frames
    UINT32                               frameNum;               ///< Current frame number
    FLOAT                                keyPrevious;            ///< Key from previous frame
    FLOAT                                alphaPrevious;          ///< Alpha from previous frame
    INT32                                maxVHistPrevious;       ///< Maximum value in histogram from previous frame
    INT32                                minVHistPrevious;       ///< Minimum value in histogram from previous frame
    VOID*                                pLibData;               ///< Pointer to the library specific data
    ADRCData*                            pAdrcInputData;         ///< Pointer to the input data for adrc algo calculation
    UINT64                               BHistRequestID;         ///< RequestID to which the BHIST stats correspond to
    UINT32                               maxPipelineDelay;       ///< Maximum pipeline delay
    VOID*                                pInterpolationData;     ///< input memory for interpolation data
    UINT32                               chipsetVersion;         ///< Chipset Version
    UINT16                               pipelineId;             ///< Pipeline Id
};

/// @brief Input Data to BGTM101 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct BGTM101InputData
{
    VOID*                             pHWSetting;             ///< Pointer to the HW Setting Object
    bgtm_1_0_1::chromatix_bgtm10Type* pChromatix;             ///< Input Chromatix tunning data
    BOOL                              symbolIDChanged;        ///< Symbol IOD changed, reload triggers
    UINT8                             LUTBankSel;             ///< LUT bank need for this frame
    UINT32*                           pGRHist;                ///< BHIST GR stats
    FLOAT                             HDRExpTimeRatio;        ///< HDR exposure time ratio
    UINT16                            HDRMSBAlign;            ///< HDR MSB alignment
    UINT16                            HDRExpRatio;            ///< HDR exposure ratio
    UINT16                            HDRBlackIn;             ///< Black level input
    UINT32                            totalNumFrames;         ///< Total number of frames
    UINT32                            frameNum;               ///< Current frame number
    FLOAT                             keyPrevious;            ///< Key from previous frame
    FLOAT                             alphaPrevious;          ///< Alpha from previous frame
    INT32                             maxVHistPrevious;       ///< Maximum value in histogram from previous frame
    INT32                             minVHistPrevious;       ///< Minimum value in histogram from previous frame
    VOID*                             pLibData;               ///< Pointer to the library specific data
    ADRCData*                         pAdrcInputData;         ///< Pointer to the input data for adrc algo calculation
    UINT64                            BHistRequestID;         ///< RequestID to which the BHIST stats correspond to
    UINT32                            maxPipelineDelay;       ///< Maximum pipeline delay
    VOID*                             pInterpolationData;     ///< input memory for interpolation data
    UINT32                            chipsetVersion;         ///< Chipset Version
    UINT16                            pipelineId;             ///< Pipeline Id
    UINT8                             bayerPattern;           ///< Bayer pattern
};

/// @brief Input Data to HNR10 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct HNR10InputData
{
    VOID*                               pHWSetting;                ///< Pointer to the HW Setting Object
    hnr_1_0_0::chromatix_hnr10Type*     pChromatix;                ///< Input Chromatix tunning data
    nradj_1_0_0::chromatix_nradj10Type* pNRAjust10Chromatix;       ///< Input Chromatix tunning data for NR adjust
    BOOL                                moduleEnable;              ///< Module enable flag
    FLOAT                               totalScaleRatio;           ///< Input trigger value:  TotalScaleRatio
    FLOAT                               DRCGain;                   ///< Input trigger value:  drcGain
    FLOAT                               exposureTime;              ///< Input trigger value:  exporsure time
    FLOAT                               exposureGainRatio;         ///< Input trigger value:  exposure gain ratio
    FLOAT                               AECSensitivity;            ///< Input trigger value:  AEC sensitivity data
    FLOAT                               luxIndex;                  ///< Input trigger value:  Lux index
    FLOAT                               realGain;                  ///< Input trigger value:  Digital Gain Value
    UINT32                              streamWidth;               ///< Stream Width
    UINT32                              streamHeight;              ///< Stream height
    UINT32                              horizontalOffset;          ///< Horizontal Offset
    UINT32                              verticalOffset;            ///< Vertical Offset
    struct FDData*                      pFDData;                   ///< Face data
    UINT8                               LUTBankSel;                ///< LUT bank need for this frame
    VOID*                               pInterpolationData;        ///< input memory for interpolation data
    BOOL                                enableNRAdjust;            ///< Enable NR adjust flag from Chromatix
    VOID*                               pGTMInfo;                  ///< Pointer to GTM info from IFE/BPS
};

/// @brief Input Data to HNR101 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct HNR101InputData
{
    VOID*                               pHWSetting;                ///< Pointer to the HW Setting Object
    hnr_1_0_1::chromatix_hnr10Type*     pChromatix;                ///< Input Chromatix tunning data
    nradj_1_0_0::chromatix_nradj10Type* pNRAjust10Chromatix;       ///< Input Chromatix tunning data for NR adjust
    BOOL                                moduleEnable;              ///< Module enable flag
    UINT32                              streamWidth;               ///< Stream Width
    UINT32                              streamHeight;              ///< Stream height
    UINT32                              horizontalOffset;          ///< Horizontal Offset
    UINT32                              verticalOffset;            ///< Vertical Offset
    struct FDData*                      pFDData;                   ///< Face data
    UINT8                               LUTBankSel;                ///< LUT bank need for this frame
    VOID*                               pInterpolationData;        ///< input memory for interpolation data
    BOOL                                enableNRAdjust;            ///< Enable NR adjust flag from Chromatix
    VOID*                               pGTMInfo;                  ///< Pointer to GTM info from IFE/BPS
    UINT32                              chipsetVersion;            ///< Titan version
};

/// @brief Input Data to HNR111 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct HNR111InputData
{
    VOID*                               pHWSetting;                ///< Pointer to the HW Setting Object
    hnr_1_1_1::chromatix_hnr11Type*     pChromatix;                ///< Input Chromatix tunning data
    nradj_1_0_0::chromatix_nradj10Type* pNRAjust10Chromatix;       ///< Input Chromatix tunning data for NR adjust
    BOOL                                moduleEnable;              ///< Module enable flag
    BOOL                            prevStateEnable;           ///< Previous enable flag
    UINT32                              streamWidth;               ///< Stream Width
    UINT32                              streamHeight;              ///< Stream height
    UINT32                              horizontalOffset;          ///< Horizontal Offset
    UINT32                              verticalOffset;            ///< Vertical Offset
    UINT32                              cmusOutWidth;              ///< for cat map upsclaing
    UINT32                              cmusOutHeight;             ///< for cat map upscaling
    struct FDData*                      pFDData;                   ///< Face data
    UINT8                               LUTBankSel;                ///< LUT bank need for this frame
    VOID*                               pInterpolationData;        ///< input memory for interpolation data
    FLOAT                               ica_zoom_factor;           ///< ICA Zoom Factor
    FLOAT                               sensorScaling;             ///< Sensor scaling factor
    BOOL                                enableNRAdjust;            ///< Enable NR adjust flag from Chromatix
    VOID*                               pGTMInfo;                  ///< Pointer to GTM info from IFE/BPS
    BOOL                                aIEnable;                  ///< To enable AI modifiers
    UINT8                               final_DAS;                 ///< Dynamic AI strength
    UINT32                              chipsetVersion;            ///< Titan version
    VOID*                               pOnlineTuningSetting;      ///< OnlineTuningSettings
};

/// @brief Input Data to Demux13 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct Demux13InputData
{
    VOID*                               pHWSetting;            ///< Pointer to the HW Setting Object
    demux_1_3_0::chromatix_demux13Type* pChromatixInput;       ///< Input Chromatix tuning data
    UINT8                               bayerPattern;          ///< Bayer pattern
    UINT32                              demuxInConfigPeriod;   ///< Configration period
    UINT32                              demuxInConfigConfig;   ///< Determine config for even or odd channel
    FLOAT                               digitalGain;           ///< Digital Gain of in the input stream
    FLOAT                               stretchGainRed;        ///< Stretch Gain of Red Channel
    FLOAT                               stretchGainGreenEven;  ///< Stretch Gain of Green Channel (Even)
    FLOAT                               stretchGainGreenOdd;   ///< Stretch Gain of Green Channel (Odd)
    FLOAT                               stretchGainBlue;       ///< Stretch Gain of Blue Channel
    UINT32                              blackLevelOffset;      ///< Black Level Offset
};

/// @brief Input Data to Demux14 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct Demux14InputData
{
    VOID*                                                 pHWSetting;            ///< Pointer to the HW Setting Object
    demuxblklevel_1_4_0::chromatix_demuxblklevel14Type*   pChromatixInput;       ///< Input Chromatix tuning data
    UINT8                                                 bayerPattern;          ///< Bayer pattern
    UINT32                                                demuxInConfigPeriod;   ///< Configration period
    UINT32                                                demuxInConfigConfig;   ///< Determine config for even or odd channel
    FLOAT                                                 luxIndex;              ///< Lux Index
    FLOAT                                                 realGain;              ///< Real Gain
    FLOAT                                                 AECSensitivity;        ///< AEC Sensitivity
    FLOAT                                                 exposureTime;          ///< Exposure Time
    FLOAT                                                 exposureGainRatio;     ///< Exposure Gain Ratio
    FLOAT                                                 CCTTrigger;            ///< CCT Trigger
    FLOAT                                                 LEDFirstEntryRatio;    ///< First Entry Ratio
    FLOAT                                                 LEDTrigger;            ///< LED Trigger
    UINT32                                                numberOfLED;           ///< Number of LED
    FLOAT                                                 digitalGain;           ///< Digital Gain of in the input stream
    FLOAT                                                 DRCGain;               ///< DRC Gain
    FLOAT                                                 blackLevelOffset;      ///< Black level offset
    FLOAT                                                 stretchGainRed;        ///< Stretch Gain Red
    FLOAT                                                 stretchGainGreenEven;  ///< Stretch Gain Green
    FLOAT                                                 stretchGainGreenOdd;   ///< Stretch Gain Green
    FLOAT                                                 stretchGainBlue;       ///< stretch Gain Blue
    VOID*                                                 pInterpolationData;    ///< input memory for interpolation data
    VOID*                                                 pBLSInterpolationData; ///< input memory for BLS interpolation data
    UINT32                                                chipsetVersion;        ///< Titan version
};

/// @brief Input Data to Demux141 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct Demux141InputData
{
    VOID*                                                 pHWSetting;            ///< Pointer to the HW Setting Object
    demuxblklevel_1_4_1::chromatix_demuxblklevel14Type*   pChromatix;            ///< Input Chromatix tuning data
    UINT8                                                 bayerPattern;          ///< Bayer pattern
    UINT32                                                demuxInConfigPeriod;   ///< Configration period
    UINT32                                                demuxInConfigConfig;   ///< Determine config for even or odd channel
    FLOAT                                                 digitalGain;           ///< Digital Gain of in the input stream
    FLOAT                                                 DRCGain;               ///< DRC Gain
    FLOAT                                                 blackLevelOffset;      ///< Black level offset
    FLOAT                                                 stretchGainRed;        ///< Stretch Gain Red
    FLOAT                                                 stretchGainGreenEven;  ///< Stretch Gain Green
    FLOAT                                                 stretchGainGreenOdd;   ///< Stretch Gain Green
    FLOAT                                                 stretchGainBlue;       ///< stretch Gain Blue
    VOID*                                                 pInterpolationData;    ///< input memory for interpolation data
    VOID*                                                 pBLSInterpolationData; ///< input memory for BLS interpolation data
    UINT32                                                chipsetVersion;        ///< Titan version
    UINT16                                                type;                  ///< Identifies the pipeline Type
};

/// @brief Input Data to Demux151 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct Demux151InputData
{
    demuxblklevel_1_5_1::chromatix_demuxblklevel15Type* pChromatix;       ///< Input Chromatix tuning data
    cmc_1_0_0::chromatix_cmc10Type*                     pCmcChromatix;    ///< Input CMC Chromatix tuning data

    UINT8                               bayerPattern;                     ///< Bayer pattern
    FLOAT                               digitalGain;                      ///< Digital Gain of in the input stream
    FLOAT                               blackLevelOffset;                 ///< Black Level Offset
    XCFAInputData                       cFAInput;                         ///< XCFA Input Data
    VOID*                               pInterpolationData;               ///< Input Memory for Interpolation data
    VOID*                               pBLSInterpolationData;            ///< Input menory for Interpolation data
    BOOL                                blsCalculated;                    ///< BLS is already calculated
};

struct Demux161InputData
{
    VOID*                                               pHWSetting;       ///< Pointer to the HW Setting Object
    demuxblklevel_1_6_1::chromatix_demuxblklevel16Type* pChromatix;       ///< Input Chromatix tuning data
    UINT8                               bayerPattern;                     ///< Bayer pattern
    UINT32                              demuxInConfigPeriod;              ///< Configration period
    UINT32                              demuxInConfigConfig;              ///< Determine config for even or odd channel
    FLOAT                               digitalGain;                      ///< Digital Gain of in the input stream
    FLOAT                               DRCGain;                          ///< DRC Gain
    FLOAT                               blackLevelOffset;                 ///< Black Level Offset
    FLOAT                               stretchGainRed;                   ///< Stretch Gain Red
    FLOAT                               stretchGainGreenEven;             ///< Stretch Gain Green
    FLOAT                               stretchGainGreenOdd;              ///< Stretch Gain Green
    FLOAT                               stretchGainBlue;                  ///< stretch Gain Blue
    VOID*                               pInterpolationData;               ///< Input Memory for Interpolation data
    VOID*                               pBLSInterpolationData;            ///< Input menory for Interpolation data
    UINT16                              chipsetVersion;                   ///< Chipset version
    VECTORFF                            trigger;                          ///< 2d Trigger for this module
    //VOID*                               pNodeset;                         ///< Used in interpolation
};

/// @brief Input Data to Demosaic36 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct Demosaic36InputData
{
    VOID*                                     pHWSetting;           ///< Pointer to the HW Setting Object
    demosaic_3_6_0::chromatix_demosaic36Type* pChromatix;           ///< Input Chromatix tuning data
    BOOL                                      symbolIDChanged;      ///< Symbol ID changed, reload triggers
    UINT32                                    imageWidth;           ///< Current Sensor Image Output Width
    UINT32                                    imageHeight;          ///< Current Sensor Image Output Height
    FLOAT                                     DRCGain;              ///< Input trigger value:  DRCGain
    FLOAT                                     exposureTime;         ///< Input trigger value:  exporsure time
    FLOAT                                     exposureGainRatio;    ///< Input trigger value:  exposure gain ratio
    FLOAT                                     AECSensitivity;       ///< Input trigger value:  AEC sensitivity data
    FLOAT                                     luxIndex;             ///< Input trigger value:  Lux index
    FLOAT                                     AECGain;              ///< Input trigger value:  AEC Gain Value
    VOID*                                     pInterpolationData;   ///< input memory for interpolation data
};

/// @brief Input Data to Demosaic36 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct Demosaic361InputData
{
    VOID*                                     pHWSetting;           ///< Pointer to the HW Setting Object
    demosaic_3_6_1::chromatix_demosaic36Type* pChromatix;           ///< Input Chromatix tuning data
    BOOL                                      symbolIDChanged;      ///< Symbol ID changed, reload triggers
    UINT32                                    imageWidth;           ///< Current Sensor Image Output Width
    UINT32                                    imageHeight;          ///< Current Sensor Image Output Height
    VOID*                                     pInterpolationData;   ///< input memory for interpolation data
};

/// @brief Input Data to Demosaic37 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct Demosaic37InputData
{
    VOID*                                     pHWSetting;           ///< Pointer to the HW Setting Object
    demosaic_3_7_0::chromatix_demosaic37Type* pChromatix;           ///< Input Chromatix tuning data
    BOOL                                      symbolIDChanged;      ///< Symbol ID changed, reload triggers
    UINT32                                    imageWidth;           ///< Current Sensor Image Output Width
    UINT32                                    imageHeight;          ///< Current Sensor Image Output Height
    FLOAT                                     DRCGain;              ///< Input trigger value:  DRCGain
    FLOAT                                     exposureTime;         ///< Input trigger value:  exporsure time
    FLOAT                                     exposureGainRatio;    ///< Input trigger value:  exposure gain ratio
    FLOAT                                     AECSensitivity;       ///< Input trigger value:  AEC sensitivity data
    FLOAT                                     luxIndex;             ///< Input trigger value:  Lux index
    FLOAT                                     AECGain;              ///< Input trigger value:  AEC Gain Value
    VOID*                                     pInterpolationData;   ///< input memory for interpolation data
};

/// @brief Input Data to Demosaic371 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct Demosaic371InputData
{
    VOID*                                     pHWSetting;           ///< Pointer to the HW Setting Object
    demosaic_3_7_1::chromatix_demosaic37Type* pChromatix;           ///< Input Chromatix tuning data
    BOOL                                      symbolIDChanged;      ///< Symbol ID changed, reload triggers
    UINT32                                    imageWidth;           ///< Current Sensor Image Output Width
    UINT32                                    imageHeight;          ///< Current Sensor Image Output Height
    FLOAT                                     DRCGain;              ///< Input trigger value:  DRCGain
    FLOAT                                     exposureTime;         ///< Input trigger value:  exporsure time
    FLOAT                                     exposureGainRatio;    ///< Input trigger value:  exposure gain ratio
    FLOAT                                     AECSensitivity;       ///< Input trigger value:  AEC sensitivity data
    FLOAT                                     luxIndex;             ///< Input trigger value:  Lux index
    FLOAT                                     AECGain;              ///< Input trigger value:  AEC Gain Value
    VOID*                                     pInterpolationData;   ///< input memory for interpolation data
};
/// @brief Input Data to SFESWGD IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct SWGDInputData
{
    mrc_1_0_1::chromatix_mrc10Type* pChromatix;                     ///< Chromatix Data for swGD
    UINT32                          chipsetVersion;                 ///< Titan version
    FLOAT                           AECSensitivity;                 ///< AEC sensitivity data
    INT                             highlightThr1;                  ///< highlight threshold for hdr501
    FLOAT                           luxIndex;                       ///< Lux index
    NcLibWarpGrid*                  pEisStolAlign;                  ///< NClib grid info
};


/// @brief Input Data to DS410 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct DS410InputData
{
    VOID*                                     pHWSetting;           ///< Pointer to the HW Setting Object
    ds4to1_1_0_0::chromatix_ds4to1v10Type*    pDS4Chromatix;        ///< Chromatix pointer for DS4
    ds4to1_1_0_0::chromatix_ds4to1v10Type*    pDS16Chromatix;       ///< Chromatix pointer for DS16
    UINT32                                    stream_height;        ///< Stream Height in pixels
    UINT                                      modulePath;           ///< IFE pipeline path for module
};

/// @brief Input Data to DS410 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct DS411InputData
{
    VOID*                                     pHWSetting;           ///< Pointer to the HW Setting Object
    ds4to1_1_1_0::chromatix_ds4to1v11Type*    pDS4Chromatix;        ///< Chromatix pointer for DS4
    ds4to1_1_1_0::chromatix_ds4to1v11Type*    pDS16Chromatix;       ///< Chromatix pointer for DS16
    UINT32                                    streamWidth;          ///< Stream Height in pixels
    UINT32                                    streamHeight;         ///< Stream Height in pixels
    UINT                                      modulePath;           ///< IFE pipeline path for module
};

/// @brief Input Data to DS410 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct DSX10InputData
{
    VOID*                                  pHWSetting;                  ///< Pointer to the HW Setting Object
    dsx_1_0_0::chromatix_dsx10Type*        pChromatix;                  ///< Input Chromatix tuning data
    ds4to1_1_1_0::chromatix_ds4to1v11Type* pDS4to1Chromatix;            ///< Input Chromatix tuning data
    FLOAT                                  scaleRatio;                  ///< Input trigger value
    UINT32                                 inW;                         ///< Input width [16, 8190]
    UINT32                                 inH;                         ///< Input hight [16, 16384]
    UINT32                                 outW;                        ///< Output width [2, 1696]
    UINT32                                 outH;                        ///< Output width [2, 13108]
    FLOAT                                  downscaleX;                  ///< Step size [1.25, 4]
    FLOAT                                  downscaleY;                  ///< Step size [1.25, 4]
    FLOAT                                  offsetX;                     ///< input offset X [0, 0.8*inW]
    FLOAT                                  offsetY;                     ///< input offset Y [0, 0.8*inH]
    UINT32                                 numPasses;                   ///< Pass number
    VOID*                                  pDSXChromatix;               ///< Chromatix Input pointer
    VOID*                                  pInterpolationData;          ///< input memory for interpolation data
    VOID*                                  pUnpackedfield;              ///< input memory Unpacked filed
    UINT                                   modulePath;                  ///< IFE pipeline path for module
    BOOL                                   isPrepareStripeInputContext; ///< Flag to indicate prepare striping
    VOID*                                  pICAInterpolationData;       ///< ICA DATA
    NCLIB_DSX_HOST_TYPE                    host;                        ///< host for dsx: IFE_DSX or IPE_DSX
    VOID*                                  pICA30Chromatix;             ///< ICA 30 Chromatix
    VOID*                                  pICA30InterpolationData;     ///< input memory for interpolation data
    FLOAT                                  luxIndex;                    ///< Input trigger : Lux index
    FLOAT                                  digitalGain;                 ///< Input trigger : Digital Gain Value
    BOOL                                   isGridFromChromatixEnabled;  ///< Flag to check if grid from chromatixis Enabled
    UINT32                                 titanVersion;                ///< Titan Version
    UINT64                                 preDSXPhaseInitLuma;         ///< Left Stripe DSX luma_start_location_x for Luma
    UINT64                                 preDSXPhaseInitChroma;       ///< Left Stripe DSX luma_art_location_x for Chroma
    BOOL                                   updatePreDSXPhaseInit;       ///< flag to signify update preDSX_phase_init param
};

/// @brief Input Data to DSX101 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct DSX101InputData
{
    VOID*                                  pHWSetting;                  ///< Pointer to the HW Setting Object
    dsx_1_0_1::chromatix_dsx10Type*        pChromatix;                  ///< Input Chromatix tuning data
    ds4to1_1_1_0::chromatix_ds4to1v11Type* pDS4to1Chromatix;            ///< Input Chromatix tuning data
    FLOAT                                  scaleRatio;                  ///< Input trigger value
    UINT32                                 inW;                         ///< Input width [16, 8190]
    UINT32                                 inH;                         ///< Input hight [16, 16384]
    UINT32                                 outW;                        ///< Output width [2, 1696]
    UINT32                                 outH;                        ///< Output width [2, 13108]
    FLOAT                                  downscaleX;                  ///< Step size [1.25, 4]
    FLOAT                                  downscaleY;                  ///< Step size [1.25, 4]
    FLOAT                                  offsetX;                     ///< input offset X [0, 0.8*inW]
    FLOAT                                  offsetY;                     ///< input offset Y [0, 0.8*inH]
    UINT32                                 numPasses;                   ///< Pass number
    VOID*                                  pDSXChromatix;               ///< Chromatix Input pointer
    VOID*                                  pInterpolationData;          ///< input memory for interpolation data
    VOID*                                  pUnpackedfield;              ///< input memory Unpacked filed
    UINT                                   modulePath;                  ///< IFE pipeline path for module
    BOOL                                   isPrepareStripeInputContext; ///< Flag to indicate prepare striping
    NCLIB_DSX_HOST_TYPE                    host;                        ///< host for dsx: IFE_DSX or IPE_DSX
    VOID*                                  pICAChromatix;               ///< ICA Chromatix
    VOID*                                  pIcaInterpolationData;       ///< input memory for interpolation data
    FLOAT                                  luxIndex;                    ///< Input trigger : Lux index
    FLOAT                                  digitalGain;                 ///< Input trigger : Digital Gain Value
    BOOL                                   isGridFromChromatixEnabled;  ///< Flag to check if grid from chromatixis Enabled
    UINT32                                 titanVersion;                ///< Titan Version
    UINT64                                 preDSXPhaseInitLuma;         ///< Left Stripe DSX luma_start_location_x for Luma
    UINT64                                 preDSXPhaseInitChroma;       ///< Left Stripe DSX luma_art_location_x for Chroma
    BOOL                                   updatePreDSXPhaseInit;       ///< flag to signify update preDSX_phase_init param
    VOID*                                  pGeoVideoConfig;             ///< input memory for geovideoconfig data
    VOID*                                  pGeo2VideoConfig;            ///< input memory for geovideoconfig data
    VOID*                                  pGeoICA0mapping;             ///< GEO ICA0 Mapping
};

/// @brief Input Data to GIC30 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct GIC30InputData
{
    VOID*                           pHWSetting;             ///< Pointer to the HW Setting Object
    gic_3_0_0::chromatix_gic30Type* pChromatix;             ///< Input Chromatix tunning data
    BOOL                            moduleEnable;           ///< Module enable flag
    BOOL                            symbolIDChanged;        ///< Symbol ID changed, reload triggers
    FLOAT                           DRCGain;                ///< Input trigger value:  drcGain
    FLOAT                           exposureTimeTrigger;    ///< Input trigger value:  exporsure time
    FLOAT                           exposureGainRatio;      ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;         ///< Input trigger value:  AEC sensitivity data
    FLOAT                           luxIndex;               ///< Input trigger value:  Lux index
    FLOAT                           realGain;               ///< Input trigger value:  Real Gain Value
    UINT8                           LUTBankSel;             ///< LUT bank used for the frame
    UINT32                          imageWidth;             ///< Current Sensor Image Output Width
    UINT32                          imageHeight;            ///< Current Sensor Image Output Height
    UINT32                          sensorOffsetX;          ///< Current Sensor Image Output horizontal offset
    UINT32                          sensorOffsetY;          ///< Current Sensor Image Output vertical offset
    VOID*                           pInterpolationData;     ///< input memory for interpolation data
};

/// @brief Input Data to GIC30 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct GIC301InputData
{
    VOID*                           pHWSetting;             ///< Pointer to the HW Setting Object
    gic_3_0_1::chromatix_gic30Type* pChromatix;             ///< Input Chromatix tunning data
    BOOL                            moduleEnable;           ///< Module enable flag
    BOOL                            prevStateEnable;        ///< Previous enable flag
    BOOL                            symbolIDChanged;        ///< Symbol ID changed, reload triggers
    UINT8                           LUTBankSel;             ///< LUT bank used for the frame
    UINT32                          imageWidth;             ///< Current Sensor Image Output Width
    UINT32                          imageHeight;            ///< Current Sensor Image Output Height
    UINT32                          sensorOffsetX;          ///< Current Sensor Image Output horizontal offset
    UINT32                          sensorOffsetY;          ///< Current Sensor Image Output vertical offset
    VOID*                           pInterpolationData;     ///< input memory for interpolation data
    UINT8                           bayerPattern;           ///< Bayer Pattern
    FLOAT                           DRCGain;                ///< Input trigger value:  drcGain
    FLOAT                           exposureTimeTrigger;    ///< Input trigger value:  exporsure time
    FLOAT                           exposureGainRatio;      ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;         ///< Input trigger value:  AEC sensitivity data
    FLOAT                           luxIndex;               ///< Input trigger value:  Lux index
    FLOAT                           realGain;               ///< Input trigger value:  Real Gain Value
};

/// @brief Input Data to GIC311 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct GIC311InputData
{
    VOID*                           pHWSetting;             ///< Pointer to the HW Setting Object
    gic_3_1_1::chromatix_gic31Type* pChromatix;             ///< Input Chromatix tunning data
    BOOL                            moduleEnable;           ///< Module enable flag
    BOOL                            prevStateEnable;        ///< Previous enable flag
    BOOL                            symbolIDChanged;        ///< Symbol ID changed, reload triggers
    UINT8                           LUTBankSel;             ///< LUT bank used for the frame
    UINT32                          imageWidth;             ///< Current Sensor Image Output Width
    UINT32                          imageHeight;            ///< Current Sensor Image Output Height
    UINT32                          sensorOffsetX;          ///< Current Sensor Image Output horizontal offset
    UINT32                          sensorOffsetY;          ///< Current Sensor Image Output vertical offset
    UINT32                          GIC_BITDEPTH;           ///< Bitdepth for GIC
    VOID*                           pInterpolationData;     ///< input memory for interpolation data
    UINT8                           bayerPattern;           ///< Bayer Pattern
    UINT32                          chipsetVersion;         ///< Titan Version
    VOID*                           pOnlineTuningSetting;   ///< OnlineTuningSettings
};

/// @brief Input Data to HDR20 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct HDR20InputData
{
    VOID*                           pHWSetting;           ///< Pointer to the HW Setting Object
    hdr_2_0_0::chromatix_hdr20Type* pChromatix;           ///< Input Chromatix tunning data
    BOOL                            moduleMacEnable;      ///< Module HDR MAC enable flag
    BOOL                            moduleReconEnable;    ///< Module HDR Recon enable flag
    FLOAT                           exposureTime;         ///< Input trigger value:  exposure time
    FLOAT                           exposureGainRatio;    ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;       ///< Input trigger value:  AEC sensitivity data
    FLOAT                           luxIndex;             ///< Input trigger value:  Lux index
    FLOAT                           AECGain;              ///< Input trigger value:  Digital Gain Value
    FLOAT                           leftGGainWB;          ///< G channel gain to adjust white balance
    FLOAT                           leftBGainWB;          ///< B channel gain to adjust white balance
    FLOAT                           leftRGainWB;          ///< R channel gain to adjust white balance
    UINT16                          RECONFirstField;      ///< HDR First field 0=T1, 1=T2
    UINT16                          ZZHDRMode;            ///< ZZHDR mode or IHDR mode
    UINT16                          ZZHDRPattern;         ///< 0~3, Bayer starting R1: 0=R1G1G2B1, 1=R1G1G2B2,
                                                          ///<                         2=R1G2G1B1, 3=R1G2G1B2
    UINT16                          ZZHDRFirstRBEXP;      ///< ZZHDR first R/B Exp,  0=T1, 1=T2
    UINT16                          HDRZigzagReconSel;    ///< ZZHDR ReconSel
    UINT32                          blackLevelOffset;     ///< Black Level Offset
    VOID*                           pInterpolationData;   ///< input memory for interpolation data
};

/// @brief Input Data to HDR23 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct HDR23InputData
{
    VOID*                           pHWSetting;           ///< Pointer to the HW Setting Object
    hdr_2_3_0::chromatix_hdr23Type* pChromatix;           ///< Input Chromatix tunning data
    BOOL                            moduleMacEnable;      ///< Module HDR MAC enable flag
    BOOL                            moduleReconEnable;    ///< Module HDR Recon enable flag
    FLOAT                           exposureTime;         ///< Input trigger value:  exposure time
    FLOAT                           exposureGainRatio;    ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;       ///< Input trigger value:  AEC sensitivity data
    FLOAT                           luxIndex;             ///< Input trigger value:  Lux index
    FLOAT                           AECGain;              ///< Input trigger value:  Digital Gain Value
    FLOAT                           leftGGainWB;          ///< G channel gain to adjust white balance
    FLOAT                           leftBGainWB;          ///< B channel gain to adjust white balance
    FLOAT                           leftRGainWB;          ///< R channel gain to adjust white balance
    UINT16                          RECONFirstField;      ///< HDR First field 0=T1, 1=T2
    UINT16                          ZZHDRMode;            ///< ZZHDR mode or IHDR mode
    UINT16                          ZZHDRPattern;         ///< 0~3, Bayer starting R1: 0=R1G1G2B1, 1=R1G1G2B2,
                                                          ///<                         2=R1G2G1B1, 3=R1G2G1B2
    UINT16                          ZZHDRFirstRBEXP;      ///< ZZHDR first R/B Exp,  0=T1, 1=T2
    UINT16                          HDRZigzagReconSel;    ///< ZZHDR ReconSel
    UINT32                          blackLevelOffset;     ///< Black Level Offset
    VOID*                           pInterpolationData;   ///< input memory for interpolation data
};
/// @brief Input Data to HDR23 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct HDR231InputData
{
    VOID*                           pHWSetting;           ///< Pointer to the HW Setting Object
    hdr_2_3_1::chromatix_hdr23Type* pChromatix;           ///< Input Chromatix tunning data
    BOOL                            moduleMacEnable;      ///< Module HDR MAC enable flag
    BOOL                            moduleReconEnable;    ///< Module HDR Recon enable flag
    FLOAT                           exposureTime;         ///< Input trigger value:  exposure time
    FLOAT                           exposureGainRatio;    ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;       ///< Input trigger value:  AEC sensitivity data
    FLOAT                           luxIndex;             ///< Input trigger value:  Lux index
    FLOAT                           AECGain;              ///< Input trigger value:  Digital Gain Value
    FLOAT                           leftGGainWB;          ///< G channel gain to adjust white balance
    FLOAT                           leftBGainWB;          ///< B channel gain to adjust white balance
    FLOAT                           leftRGainWB;          ///< R channel gain to adjust white balance
    UINT16                          RECONFirstField;      ///< HDR First field 0=T1, 1=T2
    UINT16                          ZZHDRMode;            ///< ZZHDR mode or IHDR mode
    UINT16                          ZZHDRPattern;         ///< 0~3, Bayer starting R1: 0=R1G1G2B1, 1=R1G1G2B2,
                                                          ///<                         2=R1G2G1B1, 3=R1G2G1B2
    UINT16                          ZZHDRFirstRBEXP;      ///< ZZHDR first R/B Exp,  0=T1, 1=T2
    UINT16                          HDRZigzagReconSel;    ///< ZZHDR ReconSel
    UINT32                          blackLevelOffset;     ///< Black Level Offset
    VOID*                           pInterpolationData;   ///< input memory for interpolation data
};
/// @brief Input Data to Pedestal13 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct Pedestal13InputData
{
    VOID*                                     pHWSetting;             ///< Pointer to the HW Setting Object
    pedestal_1_3_0::chromatix_pedestal13Type* pChromatix;             ///< Input Chromatix tunning data
    BOOL                                      symbolIDChanged;        ///< Symbol ID changed, reload triggers
    FLOAT                                     DRCGain;                ///< Input trigger value:  drcGain
    FLOAT                                     exposureTimeTrigger;    ///< Input trigger value:  exporsure time
    FLOAT                                     exposureGainRatio;      ///< Input trigger value:  exposure gain ratio
    FLOAT                                     AECSensitivity;         ///< Input trigger value:  AEC sensitivity data
    FLOAT                                     LEDTrigger;             ///< Input trigger value:  Led Index
    FLOAT                                     LEDFirstEntryRatio;     ///< Ratio of Dual LED
    UINT16                                    numberOfLED;            ///< Number of LED
    FLOAT                                     luxIndex;               ///< Input trigger value:  Lux index
    FLOAT                                     CCTTrigger;             ///< Input trigger value:  CCT
    FLOAT                                     AECGain;                ///< Input trigger value:  Digital Gain Value
    UINT16                                    LUTBankSel;             ///< LUT bank used for the frame
    UINT8                                     bayerPattern;           ///< Bayer Pattern
    UINT32                                    imageWidth;             ///< Current Sensor Image Output Width
    UINT32                                    imageHeight;            ///< Current Sensor Image Output Height
    VOID*                                     pInterpolationData;     ///< input memory for interpolation data
};

/// @brief Input Data to Pedestal13 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct Pedestal131InputData
{
    VOID*                                     pHWSetting;             ///< Pointer to the HW Setting Object
    pedestal_1_3_1::chromatix_pedestal13Type* pChromatix;             ///< Input Chromatix tunning data
    BOOL                                      symbolIDChanged;        ///< Symbol ID changed, reload triggers
    UINT16                                    LUTBankSel;             ///< LUT bank used for the frame
    UINT8                                     bayerPattern;           ///< Bayer Pattern
    UINT32                                    imageWidth;             ///< Current Sensor Image Output Width
    UINT32                                    imageHeight;            ///< Current Sensor Image Output Height
    VOID*                                     pInterpolationData;     ///< input memory for interpolation data
};

/// @brief Input Data to Linearization34 IQ Algorithm
/// NOWHINE NC004c: Share code with system team
struct Linearization34IQInput
{
    VOID*                                                pHWSetting;             ///< Pointer to the HW Setting Object
    linearization_3_4_0::chromatix_linearization34Type*  pChromatix;             ///< Input Chromatix tunning data
    BOOL                                                 symbolIDChanged;        ///< Symbol IOD changed, reload triggers
    FLOAT                                                DRCGain;                ///< Input trigger value: DRCGain
    FLOAT                                                exposureTimeTrigger;    ///< Input trigger value: exporsure time
    FLOAT                                                exposureGainRatio;      ///< Input trigger value:  exposure gain ratio
    FLOAT                                                AECSensitivity;         ///< Input trigger value: AEC sensitivity data
    FLOAT                                                LEDTrigger;             ///< Input trigger value: Led Index
    UINT16                                               numberOfLED;            ///< Number of LED
    FLOAT                                                LEDFirstEntryRatio;     ///< Ratio of Dual LED
    FLOAT                                                luxIndexTrigger;        ///< Input trigger value: Lux index
    FLOAT                                                CCTTrigger;             ///< Input trigger value: CCT
    FLOAT                                                realGain;               ///< Input trigger value: Real Gain Value
    UINT16                                               LUTBankSel;             ///< LUT bank need for this frame
    UINT8                                                bayerPattern;           ///< Bayer pattern
    BOOL                                                 pedestalEnable;         ///< pedestal is enabled or not
    VOID*                                                pInterpolationData;     ///< input memory for interpolation data
};

/// @brief Input Data to Linearization341 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct Linearization341IQInput
{
    VOID*                                                pHWSetting;             ///< Pointer to the HW Setting Object
    linearization_3_4_1::chromatix_linearization34Type*  pChromatix;             ///< Input Chromatix tunning data
    BOOL                                                 symbolIDChanged;        ///< Symbol IOD changed, reload triggers
    UINT16                                               LUTBankSel;             ///< LUT bank need for this frame
    UINT8                                                bayerPattern;           ///< Bayer pattern
    BOOL                                                 pedestalEnable;         ///< pedestal is enabled or not
    VOID*                                                pInterpolationData;     ///< input memory for interpolation data
};

/// @brief Input Data to FlickerCorrectionGain10 IQ Algorithem
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct FCG10InputData
{
    VOID*   pHWSetting;             ///< Pointer to the HW Setting Object
    BOOL    moduleEnable;           ///< Module enable flag
    UINT8   bayerPattern;           ///< Bayer pattern
    UINT8   bank_sel;               ///< Bank selection for LUT table
    UINT8   gain_table_size;        ///< Size of the Gain table
    FLOAT   gainLUT[128];           ///< Base Gain
    FLOAT   LUT_sample_rate;        ///< LUT Sample Rate
    FLOAT   phase_idx_r;            ///< Starting Index of LUT
    FLOAT   phase_idx_g;            ///< Starting Index of LUT
    FLOAT   phase_idx_b;            ///< Starting Index of LUT
    FLOAT   scale_r;                ///< Scale for channel gain
    FLOAT   scale_g;                ///< Scale for channel gain
    FLOAT   scale_b;                ///< Scale for channel gain
    FLOAT   offset_r;               ///< Offset for channel gain
    FLOAT   offset_g;               ///< Offset for channel gain
    FLOAT   offset_b;               ///< Offset for channel gain
    UINT8   interpolation_type;     ///< 0: None, 1: Bilinear
    UINT8   pixel_screening_enable; ///< Enable/Disable Saturation check screening
    UINT8   quad_sync_enable;       ///< Enable/Disable Quad Sync
    UINT32  dark_th1[4];            ///< Lower Threshold for dark pixel screening
    UINT32  dark_th2[4];            ///< Upper Threshold for dark pixel screening
    UINT32  bright_th1[4];          ///< Lower Threshold for bright pixel screening
    UINT32  bright_th2[4];          ///< Upper Threshold for bright pixel screening
    UINT32  blackLevelResOffset;    ///< Black Level Residual Ofset
    UINT16  pipelineId;             ///< Pipeline Id
    UINT16  bitShift;               ///< Shift bits
};

/// @brief Input Data to WhiteBalance12 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct WB12InputData
{
    VOID* pHWSetting;      ///< Pointer to the HW Setting Object
    FLOAT leftGGainWB;     ///< G channel gain to adjust white balance
    FLOAT leftBGainWB;     ///< B channel gain to adjust white balance
    FLOAT leftRGainWB;     ///< R channel gain to adjust white balance
    FLOAT predictiveGain;  ///< Predictive Gain
};

/// @brief Input Data to WhiteBalance13 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct WB13InputData
{
    VOID*  pHWSetting;      ///< Pointer to the HW Setting Object
    FLOAT  leftGGainWB;     ///< G channel gain to adjust white balance
    FLOAT  leftBGainWB;     ///< B channel gain to adjust white balance
    FLOAT  leftRGainWB;     ///< R channel gain to adjust white balance
    FLOAT  predictiveGain;  ///< Predictive Gain
    UINT16 inputWidth;      ///< Input Image Width
};

/// @brief Input Data to WhiteBalance14 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct WB14InputData
{
    VOID*  pHWSetting;          ///< Pointer to the HW Setting Object
    FLOAT  leftGGainWB;         ///< G channel gain to adjust white balance
    FLOAT  leftBGainWB;         ///< B channel gain to adjust white balance
    FLOAT  leftRGainWB;         ///< R channel gain to adjust white balance
    UINT8  bayerPattern;        ///< Bayer pattern
    FLOAT  predictiveGain;      ///< Predictive Gain
    UINT32 blackLevelResOffset; ///< Black Level Residual Ofset
    UINT16 inputWidth;          ///< Input Image Width
    UINT8  highlightKeepEn;     ///< Hightlight Keep Enable
    UINT32 chipsetVersion;      ///< Chipset version
    UINT16 type;             ///< pipeline type
};

/// @brief Input Data to WhiteBalance15 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct WB15InputData
{
    VOID*  pHWSetting;          ///< Pointer to the HW Setting Object
    FLOAT  resGGainWB;          ///< G channel gain to adjust white balance
    FLOAT  resBGainWB;          ///< B channel gain to adjust white balance
    FLOAT  resRGainWB;          ///< R channel gain to adjust white balance
    UINT32 blackLevelResOffset; ///< Black Level Residual Ofset
    UINT16 inputWidth;          ///< Input Width
};

/// @brief Input Data to WhiteBalance201 IQ Algorithem
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct WB201InputData
{
    VOID*                           pHWSetting;            ///< Pointer to the HW Setting Object
    wb_2_0_1::chromatix_wb20Type*   pChromatix;            ///< Input chromatix Tunning Data
    FLOAT                           leftGGainWB;           ///< G channel gain to adjust white balance
    FLOAT                           leftBGainWB;           ///< B channel gain to adjust white balance
    FLOAT                           leftRGainWB;           ///< R channel gain to adjust white balance
    FLOAT                           predictiveGain;        ///< Predictive Gain
    UINT8                           bayerPattern;          ///< Bayer pattern
    UINT16                          inputWidth;            ///< Input Width
    UINT32                          blackLevelResOffset;   ///< Black Level Residual Ofset
    VOID*                           pInterpolationData;    ///< input memory for interpolation data
    UINT32                          chipsetVersion;        ///< chipset Version
    FLOAT*                          pScaleRatioWBCurrent;  ///< WB scale Ratio output
    FLOAT*                          pScaleRatioWBPrevious; ///< WB scale Ratio output
    FLOAT*                          pGTMRatioKnee;         ///< GTM Ratio Knee output
};

/// @brief Input Data to WhiteBalance21 IQ Algorithem
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct WB211InputData
{
    VOID*                           pHWSetting;             ///< Pointer to the HW Setting Object
    wb_2_1_1::chromatix_wb21Type*   pChromatix;             ///< Input chromatix Tunning Data
    FLOAT                           leftGGainWB;            ///< G channel gain to adjust white balance
    FLOAT                           leftBGainWB;            ///< B channel gain to adjust white balance
    FLOAT                           leftRGainWB;            ///< R channel gain to adjust white balance
    FLOAT                           predictiveGain;         ///< Predictive Gain
    UINT8                           bayerPattern;           ///< Bayer pattern
    UINT16                          inputWidth;             ///< Input Width
    UINT32                          blackLevelResOffset;    ///< Black Level Residual Ofset
    VOID*                           pInterpolationData;     ///< input memory for interpolation data
    UINT32                          chipsetVersion;         ///< chipset Version
    FLOAT*                          pScaleRatioWBCurrent;   ///< WB scale Ratio output
    FLOAT*                          pScaleRatioWBPrevious;  ///< WB scale Ratio output
    FLOAT*                          pGTMRatioKnee;          ///< GTM Ratio Knee output
};

/// @brief Input Data to CVP10 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LRMEInputData
{
    VOID*                            pHWSetting;           ///< Pointer to the HW Setting Object
    VOID*                            pCapability;          ///< LRME capabilities
    UINT32                           tarWidth;             ///< Target port width
    UINT32                           tarHeight;            ///< Target port height
    UINT32                           refWidth;             ///< Reference port width
    UINT32                           refHeight;            ///< Reference port height
    BOOL                             isRefValid;           ///< flag for reference validity
    BOOL                             isDS2Enabled;         ///< flag for DS2 enablement
    UINT32                           tarFormat;            ///< Target port format
    UINT32                           refFormat;            ///< Reference port format
    UINT32                           vectorOutputFormat;   ///< Output port format
    VOID*                            pLRMECmdBuffer;       ///< Pointer LRME command buffer
    UINT32                           frameNum;             ///< Current frame number
};

/// @brief Input Data to CVP10 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct CVP10InputData
{
    VOID*                            pHWSetting;           ///< Pointer to the HW Setting Object
    cvp_1_0_0::chromatix_cvp10Type*  pChromatix;           ///< Input Chromatix tunning data
    FLOAT                            preScaleRatio;        ///< Pre Scale Ratio
    FLOAT                            exposureTime;         ///< Input trigger value:  exporsure time
    FLOAT                            exposureGainRatio;    ///< Input trigger value:  exporsure Gain Ratio
    FLOAT                            AECSensitivity;       ///< Input trigger value:  AEC sensitivity data
    FLOAT                            luxIndex;             ///< Input trigger value:  Lux index
    FLOAT                            realGain;             ///< Real Gain
    FLOAT                            totalScaleRatio;      ///< Input trigger value:  Real Gain Value
    FLOAT                            persp[9];             ///< persp
    FLOAT                            upscaleFactor;        ///< upscaleFactor
    INT                              coarseCenterW;        ///< coarseCenterW
    INT                              coarseCenterH;        ///< coarseCenterH
    UINT8                            hasCVPRefInput;       ///< 1: has reference input, 0: no reference input
    UINT8                            ifeAreDsImagesPD;     ///< IFE DS is PD
    UINT8                            ifeAreDsImages10Bps;  ///< IFE DS image are 10bit
    UINT8                            useCase;              ///< useCase
    UINT32                           frameNum;             ///< Current frame number
    UINT32                           numOfFrames;          ///< Number of frames for MFNR use case
    UINT32                           ifeOutFrameWidth;     ///< IFE Out Frame Width
    UINT32                           ifeOutFrameHeight;    ///< IFE Out Frame Height
    UINT32                           confidence;           ///< confidence
    VOID*                            pInterpolationData;   ///< input memory  for chromatix interpolation data
    VOID*                            pUnpackedfield;       ///< input memory Unpacked filed
};

/// @brief Input Data to CVP20 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct CVP20InputData
{
    VOID*                           pHWSetting;                     ///< Pointer to the HW Setting Object
    cvp_2_0_0::chromatix_cvp20Type* pChromatix_mac;                 ///< Input Chromatix tunning data
    cvp_2_0_0::chromatix_cvp20Type* pChromatix_temporal;            ///< Input Chromatix tunning data
    cvp_2_0_0::chromatix_cvp20Type* pChromatix_sat;                 ///< Input Chromatix tunning data
    FLOAT                           preScaleRatio;                  ///< Pre Scale Ratio
    FLOAT                           exposureTime;                   ///< Input trigger value:  exporsure time
    FLOAT                           exposureGainRatio;              ///< Input trigger value:  exporsure Gain Ratio
    FLOAT                           AECSensitivity;                 ///< Input trigger value:  AEC sensitivity data
    FLOAT                           luxIndex;                       ///< Input trigger value:  Lux index
    FLOAT                           realGain;                       ///< Real Gain
    FLOAT                           totalScaleRatio;                ///< Input trigger value:  Real Gain Value
    UINT32                          frameNum;                       ///< Current frame number
    UINT32                          numOfFrames;                    ///< Number of frames for MFNR use case
    UINT8                           hasCVPRefInput;                 ///< 1: has reference input, 0: no reference input
    VOID*                           pInterpolationData;             ///< input memory  for chromatix interpolation data
    VOID*                           pInterpolationData_mac;         ///< input memory  for chromatix interpolation data
    VOID*                           pInterpolationData_temporal;    ///< input memory  for chromatix interpolation data
    VOID*                           pInterpolationData_sat;         ///< input memory  for chromatix interpolation data
    VOID*                           pUnpackedfield;                 ///< input memory Unpacked filed
    UINT32                          ifeOutFrameWidth;               ///< IFE Out Frame Width
    UINT32                          ifeOutFrameHeight;              ///< IFE Out Frame Height
    UINT8                           ifeAreDsImagesPD;               ///< IFE Image PD
    UINT8                           ifeAreDsImages10Bps;            ///< IFE Image 10Bps
    UINT32                          confidence;                     ///< confidence
    FLOAT                           persp[9];                       ///< persp
    INT                             coarseCenterW;                  ///< coarseCenterW
    INT                             coarseCenterH;                  ///< coarseCenterH
    FLOAT                           upscaleFactor;                  ///< upscaleFactor
    UINT8                           useCase;                        ///< useCase
};

/// @brief Input Data to CVP201 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct CVP201InputData
{
    cvp_2_0_1::chromatix_cvp20Type*  pChromatix;                    ///< Input Chromatix tunning data
    FLOAT                            preScaleRatio;                 ///< Pre Scale Ratio
    FLOAT                            realGain;                      ///< Real Gain
    UINT32                           frameNum;                      ///< Current frame number
    UINT32                           numOfFrames;                   ///< Number of frames for MFNR use case
    UINT8                            hasCVPRefInput;                ///< 1: has reference input, 0: no reference input
    VOID*                            pInterpolationData;            ///< input memory  for chromatix interpolation data
    VOID*                            pInterpolationData_mac;        ///< input memory  for chromatix interpolation data
    VOID*                            pInterpolationData_temporal;   ///< input memory  for chromatix interpolation data
    VOID*                            pInterpolationData_sat;        ///< input memory  for chromatix interpolation data
    VOID*                            pUnpackedfield;                ///< input memory Unpacked filed
    UINT32                           ifeOutFrameWidth;              ///< IFE Out Frame Width
    UINT32                           ifeOutFrameHeight;             ///< IFE Out Frame Height
    UINT8                            ifeAreDsImagesPD;              ///< IFE Image PD
    UINT8                            ifeAreDsImages10Bps;           ///< IFE Image 10Bps
    uint32_t                         confidence;                    ///< confidence
    FLOAT                            persp[3][3];                   ///< persp
    INT                              coarseCenterW;                 ///< coarseCenterW
    INT                              coarseCenterH;                 ///< coarseCenterH
    FLOAT                            upscaleFactorW;                ///< upscaleFactor
    FLOAT                            upscaleFactorH;                ///< upscaleFactor
    UINT8                            useCase;                       ///< useCase
    VOID*                            pCVPICAFrameCfgData;           ///< CVP ICA frame configuraion data
};

/// @brief Input Data to SGM10 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct SGM10InputData
{
    VOID*                           pHWSetting;             ///< Pointer to the HW Setting Object
    sgm_1_0_1::chromatix_sgm10Type* pChromatix_conf;        ///< Pointer to tuning mode data
    sgm_1_0_1::chromatix_sgm10Type* pChromatix_1_1;         ///< Pointer to tuning mode data
    sgm_1_0_1::chromatix_sgm10Type* pChromatix_1_4;         ///< Pointer to tuning mode data
    BOOL                            symbolIDChanged;        ///< Symbol IOD changed, reload triggers
    FLOAT                           exposureTime;           ///< Input trigger value:  exposure time
    FLOAT                           exposureGainRatio;      ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;         ///< Input trigger value:  AEC sensitivity data
    FLOAT                           AECGain;                ///< Input trigger value:  AEC Gain Value
    FLOAT                           preScaleRatio;          ///< Pre Scale Ratio
    FLOAT                           luxIndex;               ///< Input trigger value:  Lux index
    UINT8                           bayerPattern;           ///< Bayer Pattern
    VOID*                           pInterpolationData_conf;///< input memory for interpolation data
    VOID*                           pInterpolationData_1_1; ///< input memory for interpolation data
    VOID*                           pInterpolationData_1_4; ///< input memory for interpolation data
    NCLIB_CONTEXT_SGM*              pNclibSGMContext;       ///< NCLib SGM COntext
    UINT8                           sgmPass;                ///< Indicates num of passes
    VOID*                           pEvaSgmFrameConfigInfo; ///< EVA SGM frame config Info
    VOID*                           pEvaSgmFrameConfigData; ///< EVA SGM frame config Data
};

/// @brief Input Data to SGM11 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct SGM11InputData
{
    VOID*                                 pHWSetting;             ///< Pointer to the HW Setting Object
    dmmsgm_1_1_1::chromatix_dmmsgm11Type* pChromatix;             ///< Pointer to tuning mode data
    BOOL                                  symbolIDChanged;        ///< Symbol IOD changed, reload triggers
    FLOAT                                 exposureTime;           ///< Input trigger value:  exposure time
    FLOAT                                 exposureGainRatio;      ///< Input trigger value:  exposure gain ratio
    FLOAT                                 AECSensitivity;         ///< Input trigger value:  AEC sensitivity data
    FLOAT                                 AECGain;                ///< Input trigger value:  AEC Gain Value
    FLOAT                                 preScaleRatio;          ///< Pre Scale Ratio
    FLOAT                                 luxIndex;               ///< Input trigger value:  Lux index
    UINT8                                 bayerPattern;           ///< Bayer Pattern
    VOID*                                 pInterpolationData;     ///< input memory for interpolation data
    NCLIB_CONTEXT_SGM*                    pNclibSGMContext;       ///< NCLib SGM COntext
    UINT8                                 sgmPass;                ///< Indicates num of passes
    VOID*                                 pEvaSgmFrameConfigInfo; ///< EVA SGM frame config Info
    VOID*                                 pEvaSgmFrameConfigData; ///< EVA SGM frame config Data
};

/// @brief Input Data to SGM11 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct SGM11InitializationInputData
{
    VOID*                                 pEvaSgmSessionConfig;   ///< EVA SGMFrame Config
    dmmsgm_1_1_1::chromatix_dmmsgm11Type* pChromatix;             ///< Pointer to tuning mode data
    VOID*                                 pInterpolationData;     ///< input memory for interpolation data
};

/// @brief Input Data to DMe30 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct DME30InputData
{
    dme_3_0_1::chromatix_dme30Type*  pChromatix;           ///< Input Chromatix tunning data
    FLOAT                            preScaleRatio;        ///< Pre Scale Ratio
    FLOAT                            exposureTime;         ///< Input trigger value:  exporsure time
    FLOAT                            exposureGainRatio;    ///< Input trigger value:  exporsure Gain Ratio
    FLOAT                            AECSensitivity;       ///< Input trigger value:  AEC sensitivity data
    FLOAT                            luxIndex;             ///< Input trigger value:  Lux index
    FLOAT                            realGain;              ///< Real Gain
    FLOAT                            totalScaleRatio;      ///< Input trigger value:  Real Gain Value
    UINT32                           frameNum;             ///< Current frame number
    UINT32                           numOfFrames;          ///< Number of frames for MFNR use case
    UINT8                            hasCVPRefInput;       ///< 1: has reference input, 0: no reference input
    VOID*                            pInterpolationData;   ///< input memory  for chromatix interpolation data
    VOID*                            pInterpolationData_mac;   ///< input memory  for chromatix interpolation data
    VOID*                            pInterpolationData_temporal;   ///< input memory  for chromatix interpolation data
    VOID*                            pInterpolationData_sat;   ///< input memory  for chromatix interpolation data
    VOID*                            pUnpackedfield;       ///< input memory Unpacked filed
    UINT32                           ifeOutFrameWidth;     ///< IFE Out Frame Width
    UINT32                           ifeOutFrameHeight;    ///< IFE Out Frame Height
    UINT8                            ifeAreDsImagesPD;     ///< IFE Image PD
    UINT8                            ifeAreDsImages10Bps;  ///< IFE Image 10Bps
    uint32_t                         confidence;           ///< confidence
    FLOAT                            persp[3][3];          ///< persp
    INT                              coarseCenterW;        ///< coarseCenterW
    INT                              coarseCenterH;        ///< coarseCenterH
    FLOAT                            upscaleFactorW;       ///< upscaleFactor
    FLOAT                            upscaleFactorH;       ///< upscaleFactor
    UINT8                            useCase;              ///< useCase
    FLOAT                            downScaleRatio;       ///< down scale ratio
    uint32_t                         dmeTunedSize;         ///< multi_frame_input_resolution
    VOID*                            pHWSetting;           ///< Hw settings
    VOID*                            pCVPDMEFrameCfg;      ///< CVP DME Frame Cfg
    NCLIB_CONTEXT_DME*               pNclibDMEContext;     ///< NCLib DME COntext
};

/// @brief OverrideTransformModel, override TransformModel data
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct OverrideTransformModel
{
    BOOL                             isOverridden;         ///< Is value overridden flag
    BOOL                             transformModel;       ///< Value of transfrom model
};

/// @brief Input Data to DME31 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct DME311InputData
{
    dme_3_1_1::chromatix_dme31Type*  pChromatix;           ///< Input Chromatix tunning data
    FLOAT                            preScaleRatio;        ///< Pre Scale Ratio
    FLOAT                            exposureTime;         ///< Input trigger value:  exporsure time
    FLOAT                            exposureGainRatio;    ///< Input trigger value:  exporsure Gain Ratio
    FLOAT                            AECSensitivity;       ///< Input trigger value:  AEC sensitivity data
    FLOAT                            luxIndex;             ///< Input trigger value:  Lux index
    FLOAT                            realGain;              ///< Real Gain
    FLOAT                            totalScaleRatio;      ///< Input trigger value:  Real Gain Value
    UINT32                           frameNum;             ///< Current frame number
    UINT32                           numOfFrames;          ///< Number of frames for MFNR use case
    UINT8                            hasCVPRefInput;       ///< 1: has reference input, 0: no reference input
    VOID*                            pInterpolationData;   ///< input memory  for chromatix interpolation data
    VOID*                            pInterpolationData_mac;   ///< input memory  for chromatix interpolation data
    VOID*                            pInterpolationData_temporal;   ///< input memory  for chromatix interpolation data
    VOID*                            pInterpolationData_sat;   ///< input memory  for chromatix interpolation data
    UINT32                           selfie_hdr_enable;        ///< if Selfie HDR is enabled
    FLOAT                            selfie_hdr_face_threshold;///< Selfie HDR threshold
    VOID*                            pUnpackedfield;       ///< input memory Unpacked filed
    UINT32                           ifeOutFrameWidth;     ///< IFE Out Frame Width
    UINT32                           ifeOutFrameHeight;    ///< IFE Out Frame Height
    UINT8                            ifeAreDsImagesPD;     ///< IFE Image PD
    UINT8                            ifeAreDsImages10Bps;  ///< IFE Image 10Bps
    uint32_t                         confidence;           ///< confidence
    FLOAT                            persp[3][3];          ///< persp
    INT                              coarseCenterW;        ///< coarseCenterW
    INT                              coarseCenterH;        ///< coarseCenterH
    FLOAT                            upscaleFactorW;       ///< upscaleFactor
    FLOAT                            upscaleFactorH;       ///< upscaleFactor
    UINT8                            useCase;              ///< useCase
    FLOAT                            downScaleRatio;       ///< down scale ratio
    uint32_t                         dmeTunedSize;         ///< multi_frame_input_resolution
    VOID*                            pHWSetting;           ///< Hw settings
    VOID*                            pCVPDMEFrameCfg;      ///< CVP DME Frame Cfg
    CHIRectangle                     maxFDROIInDS4;        ///< The max face ROI in DS4 input image domain
    NCLIB_CONTEXT_DME*               pNclibDMEContext;     ///< NCLib DME COntext
    OverrideTransformModel           overrideTransformModel;  ///< Override tranform model
};

/// @brief Input Data to ABF40 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct ABF40InputData
{
    VOID*                           pHWSetting;                 ///< Pointer to the HW Setting Object
    abf_4_0_0::chromatix_abf40Type* pChromatix;                 ///< Input Chromatix tunning data
    BOOL                            moduleEnable;               ///< Module enable flag
    FLOAT                           DRCGain;                    ///< Input trigger value:  DRCGain
    FLOAT                           exposureTime;               ///< Input trigger value:  exporsure time
    FLOAT                           exposureGainRatio;          ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;             ///< Input trigger value:  AEC sensitivity data
    FLOAT                           luxIndex;                   ///< Input trigger value:  Lux index
    FLOAT                           realGain;                   ///< Input trigger value:  Real Gain Value
    FLOAT                           leftGGainWB;                ///< G channel gain to adjust white balance
    FLOAT                           leftBGainWB;                ///< B channel gain to adjust white balance
    FLOAT                           leftRGainWB;                ///< R channel gain to adjust white balance
    UINT8                           LUTBankSel;                 ///< Lut Bank
    BLS12InputData                  BLSData;                    ///< Black Level is clubbed with ABF40 in BPS
    UINT32                          sensorOffsetX;              ///< Sensor X offset used for RNR
    UINT32                          sensorOffsetY;              ///< Sensor y offset used for RNR
    UINT32                          sensorWidth;                ///< Sensor output width
    UINT32                          sensorHeight;               ///< Sensor output Height
    VOID*                           pInterpolationData;         ///< input memory for interpolation data
    BOOL                            bilateralEnable;            ///< enable bilateral filtering
    BOOL                            minmaxEnable;               ///< enable built-in min-max pixel filter
    BOOL                            directionalSmoothEnable;    ///< enable directional smoothing filter
    BOOL                            BLSEnable;                  ///< enable BLS
    BOOL                            crossPlaneEnable;           ///< enable cross plane
    BOOL                            activityAdjustEnable;       ///< enable activity adjustment
    // NOWHINE NC003a : Shared file with system team so uses non-CamX file naming
    VOID*                           nrmOutdata;                 ///< nrmOutdata
    NRMConfigData                   nrmCfgData;                 ///< NRM config data
    FLOAT                           luma_denoising;             ///< Slider Based Tuning
};

/// @brief Input Data to ABF40 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct ABF401InputData
{
    VOID*                           pHWSetting;          ///< Pointer to the HW Setting Object
    abf_4_0_1::chromatix_abf40Type* pChromatix;          ///< Input Chromatix tunning data
    BOOL                            moduleEnable;        ///< Module enable flag
    BOOL                            prevStateEnable;     ///< Previous enable flag
    FLOAT                           leftGGainWB;         ///< G channel gain to adjust white balance
    FLOAT                           leftBGainWB;         ///< B channel gain to adjust white balance
    FLOAT                           leftRGainWB;         ///< R channel gain to adjust white balance
    UINT8                           LUTBankSel;          ///< Lut Bank
    BLS121InputData                 BLSData;             ///< Black Level is clubbed with ABF40 in BPS
    UINT32                          sensorOffsetX;       ///< Sensor X offset used for RNR
    UINT32                          sensorOffsetY;       ///< Sensor y offset used for RNR
    UINT32                          sensorWidth;         ///< Sensor output width
    UINT32                          sensorHeight;        ///< Sensor output Height
    VOID*                           pInterpolationData;  ///< input memory for interpolation data
    BOOL                            bilateralEnable;     ///< enable bilateral filtering
    BOOL                            directionalSmoothEnable;    ///< enable directional smoothing filter
    BOOL                            minmaxEnable;        ///< enable built-in min-max pixel filter
    BOOL                            BLSEnable;           ///< enable BLS
    BOOL                            crossPlaneEnable;    ///< enable cross plane
    BOOL                            activityAdjustEnable;       ///< enable activity adjustment
    NRMConfigData                   nrmCfgData;                 ///< NRM config data
};

/// @brief Input Data to AI control SW Algorithm
// NOWHINE NC004c: Share code with system team
struct aicontrol101InputData
{
    aicontrol_1_0_1::chromatix_aicontrol10Type*  pChromatix;          ///< Input Chromatix tunning data
    VOID*                                        pInterpolationData;  ///< input memory for interpolation data
    UINT8                                        final_DAS_Tone;      ///< Dynamic AI strength for tone
    UINT8                                        final_DAS_Color;     ///< Dynamic AI strength for color
    UINT8                                        final_DAS_Texture;   ///< Dynamic AI strength for texture
};

/// @brief Input Data to AI control SW Algorithm
// NOWHINE NC004c: Share code with system team
struct aicontrol111InputData
{
    aicontrol_1_1_1::chromatix_aicontrol11Type* pChromatix;   ///< Input Chromatix tunning data
    VOID* pInterpolationData;  ///< input memory for interpolation data
    UINT8                          final_DAS_Tone;      ///< Dynamic AI strength for tone
    UINT8                          final_DAS_Color;     ///< Dynamic AI strength for color
    UINT8                          final_DAS_Texture;   ///< Dynamic AI strength for texture
    UINT8                          globabConfLUT[129];  ///< Global confidence LUT
};

/// @brief Input Data to QSEGNET11 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct qsegnet111InputData
{
    qsegnet_1_1_1::chromatix_qsegnet11Type* pChromatix;           ///< Input Chromatix tunning data
    VOID* pInterpolationData;   ///< input memory  for chromatix interpolation data
};

/// @brief Input Data to CS20 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct CS20InputData
{
    VOID*                          pHWSetting;          ///< Pointer to the HW Setting Object
    cs_2_0_0::chromatix_cs20Type*  pChromatix;          ///< Input Chromatix tunning data
    FLOAT                          DRCGain;             ///< Input trigger value:  DRCGain
    FLOAT                          exposureTime;        ///< Input trigger value:  exposure time
    FLOAT                          exposureGainRatio;   ///< Input trigger value:  exposure gain ratio
    FLOAT                          AECSensitivity;      ///< Input trigger value:  AEC sensitivity data
    FLOAT                          luxIndex;            ///< Input trigger value:  Lux index
    FLOAT                          linearGain;          ///< Input trigger value:  Digital Gain Value
    VOID*                          pInterpolationData;  ///< input memory for interpolation data
};

/// @brief Input Data to CS201 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct CS201InputData
{
    VOID*                          pHWSetting;          ///< Pointer to the HW Setting Object
    cs_2_0_1::chromatix_cs20Type*  pChromatix;          ///< Input Chromatix tunning data
    VOID*                          pInterpolationData;  ///< input memory for interpolation data
};

/// @brief Input Data to BPSHDR22 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct HDR22InputData
{
    VOID*                           pHWSetting;             ///< Pointer to the HW Setting Object
    hdr_2_2_0::chromatix_hdr22Type* pChromatix;             ///< Input Chromatix tunning data
    BOOL                            moduleMacEnable;        ///< Module enable flag
    BOOL                            moduleReconEnable;      ///< Module enable flag
    FLOAT                           exposureTime;           ///< Input trigger value:  exposure time
    FLOAT                           exposureGainRatio;      ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;         ///< Input trigger value:  AEC sensitivity data
    FLOAT                           luxIndex;               ///< Input trigger value:  Lux index
    FLOAT                           AECGain;                ///< Input trigger value:  Digital Gain Value
    FLOAT                           leftGGainWB;            ///< G channel gain to adjust white balance
    FLOAT                           leftBGainWB;            ///< B channel gain to adjust white balance
    FLOAT                           leftRGainWB;            ///< R channel gain to adjust white balance
    UINT32                          blackLevelOffset;       ///< Black Level Offset
    UINT16                          RECONFirstField;        ///< HDR First field 0=T1, 1=T2
    UINT16                          ZZHDRMode;              ///< ZZHDR mode or IHDR mode
    UINT16                          ZZHDRPattern;           ///< 0~3 Bayer starting R1: 0=R1G1G2B1, 1=R1G1G2B2,
                                                            ///< 2=R1G2G1B1, 3=R1G2G1B2
    UINT16                          ZZHDRFirstRBEXP;        ///< ZZHDR first r/B Exp, 0=T1, 1=T2
    UINT8                           bayerPattern;           ///< Bayer pattern
    VOID*                           pInterpolationData;     ///< input memory for interpolation data
};

/// @brief Input Data to BPSHDR22 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct HDR221InputData
{
    VOID*                           pHWSetting;             ///< Pointer to the HW Setting Object
    hdr_2_2_1::chromatix_hdr22Type* pChromatix;             ///< Input Chromatix tunning data
    BOOL                            moduleMacEnable;        ///< Module enable flag
    BOOL                            moduleReconEnable;      ///< Module enable flag
    FLOAT                           exposureTime;           ///< Input trigger value:  exposure time
    FLOAT                           exposureGainRatio;      ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;         ///< Input trigger value:  AEC sensitivity data
    FLOAT                           luxIndex;               ///< Input trigger value:  Lux index
    FLOAT                           AECGain;                ///< Input trigger value:  Digital Gain Value
    FLOAT                           leftGGainWB;            ///< G channel gain to adjust white balance
    FLOAT                           leftBGainWB;            ///< B channel gain to adjust white balance
    FLOAT                           leftRGainWB;            ///< R channel gain to adjust white balance
    UINT32                          blackLevelOffset;       ///< Black Level Offset
    UINT16                          RECONFirstField;        ///< HDR First field 0=T1, 1=T2
    UINT16                          ZZHDRMode;              ///< ZZHDR mode or IHDR mode
    UINT16                          ZZHDRPattern;           ///< 0~3 Bayer starting R1: 0=R1G1G2B1, 1=R1G1G2B2,
                                                            ///< 2=R1G2G1B1, 3=R1G2G1B2
    UINT16                          ZZHDRFirstRBEXP;        ///< ZZHDR first r/B Exp, 0=T1, 1=T2
    UINT8                           bayerPattern;           ///< Bayer pattern
    VOID*                           pInterpolationData;     ///< input memory for interpolation data
};
/// @brief Input Data to BC10 IQ Algorithm
/// NOWHINE NC004c: Share code with system team
struct BC10InputData
{
    VOID*                                   pHWSetting;             ///< Pointer to the HW Setting Object
    bincorr_1_0_0::chromatix_bincorr10Type* pChromatix;             ///< Pointer to BC10 chromatix
    BOOL                                    moduleEnable;           ///< BC10 module enable
    FLOAT                                   postScaleRatio;         ///< Input trigger value:  Post scale ratio
    FLOAT                                   preScaleRatio;          ///< Input trigger value:  Pre scale ratio
    VOID*                                   pBC10InterpolationData; ///< input memory for interpolation data
};

/// @brief Input Data to BC101 IQ Algorithm
/// NOWHINE NC004c: Share code with system team
struct BC101InputData
{
    VOID*                                   pHWSetting;              ///< Pointer to the HW Setting Object
    bincorr_1_0_1::chromatix_bincorr10Type* pChromatixBC;            ///< Pointer to BC101 chromatix
    BOOL                                    moduleEnable;            ///< BC101 module enable
    FLOAT                                   postScaleRatio;          ///< Input trigger value:  Post scale ratio
    FLOAT                                   preScaleRatio;           ///< Input trigger value:  Pre scale ratio
    VOID*                                   pBC101InterpolationData; ///< input memory for interpolation data
};

/// @brief Input Data to HDR30 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct HDR30InputData
{
    VOID*                                   pHWSetting;             ///< Pointer to the HW Setting Object
    hdr_3_0_0::chromatix_hdr30Type*         pChromatix;             ///< Input Chromatix HDR tunning data
    BOOL                                    prevMacStateEnable;     ///< Previous enable flag
    BOOL                                    moduleReconEnable;      ///< Module enable flag
    BOOL                                    prevReconStateEnable;   ///< Previous enable flag
    FLOAT                                   exposureTime;           ///< Input trigger value:  exposure time
    FLOAT                                   exposureGainRatio;      ///< Input trigger value:  exposure gain ratio
    FLOAT                                   AECSensitivity;         ///< Input trigger value:  AEC sensitivity data
    FLOAT                                   luxIndex;               ///< Input trigger value:  Lux index
    FLOAT                                   AECGain;                ///< Input trigger value:  Digital Gain Value
    FLOAT                                   leftGGainWB;            ///< G channel gain to adjust white balance
    FLOAT                                   leftBGainWB;            ///< B channel gain to adjust white balance
    FLOAT                                   leftRGainWB;            ///< R channel gain to adjust white balance
    UINT32                                  blackLevelOffset;       ///< Black Level Offset
    UINT16                                  RECONFirstField;        ///< HDR First field 0=T1, 1=T2
    UINT16                                  ZZHDRMode;              ///< ZZHDR mode or IHDR mode
    UINT16                                  ZZHDRPattern;           ///< 0~3 Bayer starting R1: 0=R1G1G2B1, 1=R1G1G2B2,
                                                                    ///<                        2=R1G2G1B1, 3=R1G2G1B2
    UINT16                                  ZZHDRFirstRBEXP;        ///< ZZHDR first r/B Exp, 0=T1, 1=T2
    UINT8                                   bayerPattern;           ///< Bayer pattern
    VOID*                                   pInterpolationData;     ///< input memory for interpolation data
    BC10InputData                           bc10Data;               ///< Bin correction input data
};

/// @brief Input Data to HDR30 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct HDR301InputData
{
    VOID*                                   pHWSetting;             ///< Pointer to the HW Setting Object
    hdr_3_0_1::chromatix_hdr30Type*         pChromatix;             ///< Input Chromatix HDR tunning data
    BOOL                                    hdr_enable;             ///< Module enable flag
    BOOL                                    prevMacStateEnable;     ///< Previous enable flag
    BOOL                                    moduleReconEnable;      ///< Module enable flag
    BOOL                                    prevReconStateEnable;   ///< Previous enable flag
    FLOAT                                   AECSensitivity;         ///< Input trigger value:  AEC sensitivity data
    FLOAT                                   leftGGainWB;            ///< G channel gain to adjust white balance
    FLOAT                                   leftBGainWB;            ///< B channel gain to adjust white balance
    FLOAT                                   leftRGainWB;            ///< R channel gain to adjust white balance
    UINT32                                  blackLevelOffset;       ///< Black Level Offset
    UINT16                                  RECONFirstField;        ///< HDR First field 0=T1, 1=T2
    UINT16                                  ZZHDRMode;              ///< ZZHDR mode or IHDR mode
    UINT16                                  ZZHDRPattern;           ///< 0~3 Bayer starting R1: 0=R1G1G2B1, 1=R1G1G2B2,
                                                                    ///<                        2=R1G2G1B1, 3=R1G2G1B2
    UINT16                                  ZZHDRFirstRBEXP;        ///< ZZHDR first r/B Exp, 0=T1, 1=T2
    UINT8                                   bayerPattern;           ///< Bayer pattern
    VOID*                                   pInterpolationData;     ///< input memory for interpolation data
    BC101InputData                          bc101Data;               ///< Bin correction input data
};

/// @brief Input Data to HDR40 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct HDR40InputData
{
    VOID*                                   pHWSetting;                     ///< Pointer to the HW Setting Object
    hdr_4_0_0::chromatix_hdr40Type*         pChromatix;                     ///< Input Chromatix HDR tunning data
    BOOL                                    hdr_enable;                     ///< Module enable flag
    BOOL                                    realtimeFlag;                   ///< flag to indicate realtime usecase or not
    FLOAT                                   exposureGainRatio;              ///< Input trigger value:  exposure gain ratio
    FLOAT                                   exposureGainRatioT1T2;          ///< Input trigger value:  L/M exposure gain ratio
    FLOAT                                   exposureGainRatioT2T3;          ///< Input trigger value:  M/S exposure gain ratio
    FLOAT                                   exposureGainRatioT1T3;          ///< Input trigger value:  L/S exposure gain ratio
    FLOAT                                   exposureTimeRatioT1T2;          ///< Input trigger value:  L/M exposure time ratio
    FLOAT                                   exposureTimeRatioT2T3;          ///< Input trigger value:  M/S exposure time ratio
    FLOAT                                   exposureTimeRatioT1T3;          ///< Input trigger value:  L/S exposure time ratio
    FLOAT                                   exposureSensitivityRatioT1T2;   ///< Input trigger value:  L/M sensitivity ratio
    FLOAT                                   exposureSensitivityRatioT2T3;   ///< Input trigger value:  M/S sensitivity ratio
    FLOAT                                   exposureSensitivityRatioT1T3;   ///< Input trigger value:  L/S sensitivity ratio
    FLOAT                                   BGMidStatsSatRatio;             ///< BG Mid Stats Ratio
    FLOAT                                   BGMidStatsDarkRatio;            ///< BG Mid Stats Ratio
    FLOAT                                   luxIndex;                       ///< Input trigger value:  Lux index
    FLOAT                                   AECGain;                        ///< Input trigger value:  Digital Gain Value
    FLOAT                                   leftGGainWB;                    ///< G channel gain to adjust white balance
    FLOAT                                   leftBGainWB;                    ///< B channel gain to adjust white balance
    FLOAT                                   leftRGainWB;                    ///< R channel gain to adjust white balance
    VOID*                                   pInterpolationData;             ///< input memory for interpolation data
    UINT32                                  expCount;                       ///< exposure count
    TwoExposureHDRCombination               twoExposureCombination;         ///< two exposure combination
    UINT32                                  QLLEnable;                      ///< QLL enable flag
    FLOAT                                   shortBlendRatio;                ///< Short Blend Ratio
  };

/// @brief Input Data to HDR401 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct HDR401InputData
{
    VOID*                                   pHWSetting;                     ///< Pointer to the HW Setting Object
    hdr_4_0_1::chromatix_hdr40Type*         pChromatix;                     ///< Input Chromatix HDR tunning data
    BOOL                                    hdr_enable;                     ///< Module enable flag
    BOOL                                    realtimeFlag;                   ///< flag to indicate realtime usecase or not
    FLOAT                                   exposureGainRatio;              ///< Input trigger value:  exposure gain ratio
    FLOAT                                   exposureGainRatioT1T2;          ///< Input trigger value:  L/M exposure gain ratio
    FLOAT                                   exposureGainRatioT2T3;          ///< Input trigger value:  M/S exposure gain ratio
    FLOAT                                   exposureGainRatioT1T3;          ///< Input trigger value:  L/S exposure gain ratio
    FLOAT                                   exposureTimeRatioT1T2;          ///< Input trigger value:  L/M exposure time ratio
    FLOAT                                   exposureTimeRatioT2T3;          ///< Input trigger value:  M/S exposure time ratio
    FLOAT                                   exposureTimeRatioT1T3;          ///< Input trigger value:  L/S exposure time ratio
    FLOAT                                   exposureSensitivityRatioT1T2;   ///< Input trigger value:  L/M sensitivity ratio
    FLOAT                                   exposureSensitivityRatioT2T3;   ///< Input trigger value:  M/S sensitivity ratio
    FLOAT                                   exposureSensitivityRatioT1T3;   ///< Input trigger value:  L/S sensitivity ratio
    FLOAT                                   BGMidStatsSatRatio;             ///< BG Mid Stats Ratio
    FLOAT                                   BGMidStatsDarkRatio;            ///< BG Mid Stats Ratio
    FLOAT                                   leftGGainWB;                    ///< G channel gain to adjust white balance
    FLOAT                                   leftBGainWB;                    ///< B channel gain to adjust white balance
    FLOAT                                   leftRGainWB;                    ///< R channel gain to adjust white balance
    VOID*                                   pInterpolationData;             ///< input memory for interpolation data
    UINT32                                  expCount;                       ///< exposure count
    TwoExposureHDRCombination               twoExposureCombination;         ///< two exposure combination
    UINT32                                  QLLEnable;                      ///< QLL enable flag
    FLOAT                                   shortBlendRatio;                ///< Short Blend Ratio
};

/// @brief RGBHDR501 Mod pass data structure
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct RGBHDR501ModPassData
{
    rgbhdr_5_0_1::mod_rgbhdr50_pass_dataType mod_rgbhdr50_pass_data[4];
};

/// @brief Input Data to RGBHDR501 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct RGBHDR501InputData
{
    VOID*                                  pHWSetting;                    ///< Pointer to the HW Setting Object
    rgbhdr_5_0_1::chromatix_rgbhdr50Type*  pChromatix;                    ///< Input Chromatix HDR tunning data
    BOOL                                   hdr_enable;                    ///< Module enable flag
    BOOL                                   realtimeFlag;                  ///< flag to indicate realtime usecase or not
    FLOAT                                  exposureGainRatio;             ///< Input trigger value:  exposure gain ratio
    FLOAT                                  exposureGainRatioT1T2;         ///< Input trigger value:  exposure gain ratio
    FLOAT                                  exposureGainRatioT2T3;         ///< Input trigger value:  exposure gain ratio
    FLOAT                                  exposureGainRatioT1T3;         ///< Input trigger value:  exposure gain ratio
    FLOAT                                  exposureTimeRatioT1T2;         ///< Input trigger value:  exposure gain ratio
    FLOAT                                  exposureTimeRatioT2T3;         ///< Input trigger value:  exposure gain ratio
    FLOAT                                  exposureTimeRatioT1T3;         ///< Input trigger value:  exposure gain ratio
    FLOAT                                  exposureSensitivityRatioT1T2;  ///< Input trigger value:  exposure gain ratio
    FLOAT                                  exposureSensitivityRatioT2T3;  ///< Input trigger value:  exposure gain ratio
    FLOAT                                  exposureSensitivityRatioT1T3;  ///< Input trigger value:  exposure gain ratio
    FLOAT                                  BGMidStatsSatRatio;            ///< Saturated Stats Ratio
    FLOAT                                  BGMidStatsDarkRatio;           ///< Dark Stats Ratio
    FLOAT                                  leftGGainWB;                   ///< G channel gain to adjust white balance
    FLOAT                                  leftBGainWB;                   ///< B channel gain to adjust white balance
    FLOAT                                  leftRGainWB;                   ///< R channel gain to adjust white balance
    VOID*                                  pInterpolationData;            ///< input memory for interpolation data
    UINT8                                  expCount;                      ///< expCount
    TwoExposureHDRCombination              twoExposureCombination;        ///< two exposure combination
    UINT32                                 QLLEnable;                     ///< QLL enable flag
    UINT32                                 numPasses;                     ///< num of passes
    FLOAT                                  shortBlendRatio;               ///< Short Blend Ratio
    SWGDOutput                             SWGDOutput;                    ///< HDR MAC motion adjust scale info
    BOOL                                   isIIREnable;                   ///< enable bit for IIR MFHDR
    BOOL                                   iirPhase;                      ///< enable bit for IIR MFHDR
    UINT16                                 iirMfhdrStage;                 ///< IIR MFHDR Stage
    BOOL                                   isLastFrame;                   ///< is Last Frame or not
    FLOAT                                  totalExposureGain;             ///< IIR MFHDR Stage
};

/// @brief RGBHDR501 Mod pass data structure
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct RGBHDR511ModPassData
{
    rgbhdr_5_1_1::mod_rgbhdr51_pass_dataType mod_rgbhdr51_pass_data[4];
};

/// @brief Input Data to HDR511 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct RGBHDR511InputData
{
    VOID*                                   pHWSetting;             ///< Pointer to the HW Setting Object
    rgbhdr_5_1_1::chromatix_rgbhdr51Type*   pChromatix;             ///< Input Chromatix HDR tunning data
    BOOL                                    hdr_enable;             ///< Module enable flag
    BOOL                                    realtimeFlag;           ///< flag to indicate realtime usecase or not
    FLOAT                                   exposureGainRatio;      ///< Input trigger value:  exposure gain ratio
    FLOAT                                   exposureGainRatioT1T2;  ///< Input trigger value:  exposure gain ratio
    FLOAT                                   exposureGainRatioT2T3;  ///< Input trigger value:  exposure gain ratio
    FLOAT                                   exposureGainRatioT1T3;  ///< Input trigger value:  exposure gain ratio
    FLOAT                                   exposureTimeRatioT1T2;  ///< Input trigger value:  exposure gain ratio
    FLOAT                                   exposureTimeRatioT2T3;  ///< Input trigger value:  exposure gain ratio
    FLOAT                                   exposureTimeRatioT1T3;  ///< Input trigger value:  exposure gain ratio
    FLOAT                                   exposureSensitivityRatioT1T2;  ///< Input trigger value:  exposure gain ratio
    FLOAT                                   exposureSensitivityRatioT2T3;  ///< Input trigger value:  exposure gain ratio
    FLOAT                                   exposureSensitivityRatioT1T3;  ///< Input trigger value:  exposure gain ratio
    FLOAT                                   leftGGainWB;            ///< G channel gain to adjust white balance
    FLOAT                                   leftBGainWB;            ///< B channel gain to adjust white balance
    FLOAT                                   leftRGainWB;            ///< R channel gain to adjust white balance
    VOID*                                   pInterpolationData;     ///< input memory for interpolation data
    UINT8                                   expCount;               ///< expCount
    UINT32                                  QLLEnable;              ///< QLL enable flag
    FLOAT                                   BGMidStatsSatRatio;     ///< Saturated Stats Ratio
    FLOAT                                   BGMidStatsDarkRatio;    ///< Dark Stats Ratio
    FLOAT                                   shortBlendRatio;        ///< Short Blend Ratio
    SWGDOutput                              SWGDOutput;             ///< HDR MAC motion adjust scale info
    UINT8                                   useCase;                ///< UseCase: Video, Still
    UINT16                                  isAFDControlEnable;     ///< AFD Control Enable flag
    UINT32                                  numPasses;              ///< Number of Passes
    BOOL                                    isIIREnable;            ///< enable bit for IIR MFHDR
    BOOL                                    iirPhase;               ///< enable bit for IIR MFHDR
    UINT16                                  iirMfhdrStage;          ///< IIR MFHDR Stage
    BOOL                                    isLastFrame;            ///< is Last Frame or not
    FLOAT                                   totalExposureGain;      ///< IIR MFHDR Stage
    UINT32                                  CAMIFWidth;             ///< Input CAMIF width
    UINT32                                  CAMIFHeight;            ///< Input CAMIF Height
    UINT32                                  sensorOffsetX;          ///< Current Sensor Image O/P horizontal offset
    UINT32                                  sensorOffsetY;          ///< Current Sensor Image O/P vertical offset
    UINT32                                  horizontalOffset;       ///< Horizontal Offset
    UINT32                                  verticalOffset;         ///< Vertical Offset
    UINT16                                  pipelineId;             ///< Pipeline Id
    UINT32                                  fullResWidth;           ///< Full resolution width
    UINT32                                  fullResHeight;          ///< Full resolution height
};

/// @brief Input Data to PDPC20 IQ Algorithm
/// NOWHINE NC004c: Share code with system team
struct PDPC20IQInput
{
    VOID*                             pHWSetting;                               ///< Pointer to the HW Setting Object
    pdpc_2_0_0::chromatix_pdpc20Type* pChromatix;                               ///< Input Chromatix tunning data
    BOOL                              moduleEnable;                             ///< Module enable flag
    BOOL                              zzHDRModeEnable;                          ///< ISP or Sensor HDR mode
    SensorType                        sensorType;                               ///< Sensor type
    UINT32                            imageWidth;                               ///< Current Sensor Image Output Width
    UINT32                            imageHeight;                              ///< Current Sensor Image Output Height
    UINT32                            PDAFBlockWidth;                           ///< Current Sensor Image Output Width
    UINT32                            PDAFBlockHeight;                          ///< Current Sensor Image Output Height
    UINT32                            blackLevelOffset;                         ///< Black Level Offset
    UINT32                            PDAFPixelCount;                           ///< PD pixel count
    UINT32                            ZZHDRPattern;                             ///< zzHDR Pattern
    UINT16                            zzHDRFirstRBEXP;                          ///< zzHDR First RBEXP
    UINT16                            PDAFGlobaloffsetX;                        ///< Current Sensor Image Output Width
    UINT16                            PDAFGlobaloffsetY;                        ///< Current Sensor Image Output Height
    UINT16                            LUTBankSel;                               ///< LUT bank need for this frame.
    UINT8                             bayerPattern;                             ///< Bayer pattern
    FLOAT                             DRCGain;                                  ///< Input trigger value:  drcGain
    FLOAT                             exposureGainRatio;                        ///< Input trigger value:  exporsure gain Ratio
    FLOAT                             exposureTime;                             ///< Input trigger value:  exporsure time
    FLOAT                             AECSensitivity;                           ///< Input trigger value:  AEC sensitivity data
    FLOAT                             luxIndex;                                 ///< Input trigger value:  Lux index
    FLOAT                             realGain;                                 ///< Input trigger value:  Digital Gain Value
    FLOAT                             digitalGain;                              ///< Input trigger value:  Digital Gain Value
    FLOAT                             leftGGainWB;                              ///< G channel gain to adjust white balance
    FLOAT                             leftBGainWB;                              ///< B channel gain to adjust white balance
    FLOAT                             leftRGainWB;                              ///< R channel gain to adjust white balance
    PDPixelCoordinates                PDAFPixelCoords[MAX_CAMIF_PDAF_PIXELS];   ///< Pixel coordinates
    VOID*                             pInterpolationData;                       ///< input memory for interpolation data
    FLOAT                             bad_pixel_correction;                     ///< Slider Based Tuning
};

/// @brief Input Data to PDPC20 IQ Algorithm
/// NOWHINE NC004c: Share code with system team
struct PDPC201IQInput
{
    VOID*                             pHWSetting;                               ///< Pointer to the HW Setting Object
    pdpc_2_0_1::chromatix_pdpc20Type* pChromatix;                               ///< Input Chromatix tunning data
    BOOL                              moduleEnable;                             ///< Module enable flag
    BOOL                              zzHDRModeEnable;                          ///< ISP or Sensor HDR mode
    SensorType                        sensorType;                               ///< Sensor type
    UINT32                            imageWidth;                               ///< Current Sensor Image Output Width
    UINT32                            imageHeight;                              ///< Current Sensor Image Output Height
    UINT32                            PDAFBlockWidth;                           ///< Current Sensor Image Output Width
    UINT32                            PDAFBlockHeight;                          ///< Current Sensor Image Output Height
    UINT32                            blackLevelOffset;                         ///< Black Level Offset
    UINT32                            PDAFPixelCount;                           ///< PD pixel count
    UINT32                            ZZHDRPattern;                             ///< zzHDR Pattern
    UINT16                            zzHDRFirstRBEXP;                          ///< zzHDR First RBEXP
    UINT16                            PDAFGlobaloffsetX;                        ///< Current Sensor Image Output Width
    UINT16                            PDAFGlobaloffsetY;                        ///< Current Sensor Image Output Height
    UINT16                            LUTBankSel;                               ///< LUT bank need for this frame.
    UINT8                             bayerPattern;                             ///< Bayer pattern
    FLOAT                             DRCGain;                                  ///< Input trigger value:  drcGain
    FLOAT                             exposureGainRatio;                        ///< Input trigger value:  exporsure gain Ratio
    FLOAT                             exposureTime;                             ///< Input trigger value:  exporsure time
    FLOAT                             AECSensitivity;                           ///< Input trigger value:  AEC sensitivity data
    FLOAT                             luxIndex;                                 ///< Input trigger value:  Lux index
    FLOAT                             realGain;                                 ///< Input trigger value:  Digital Gain Value
    FLOAT                             digitalGain;                              ///< Input trigger value:  Digital Gain Value
    FLOAT                             leftGGainWB;                              ///< G channel gain to adjust white balance
    FLOAT                             leftBGainWB;                              ///< B channel gain to adjust white balance
    FLOAT                             leftRGainWB;                              ///< R channel gain to adjust white balance
    PDPixelCoordinates                PDAFPixelCoords[MAX_CAMIF_PDAF_PIXELS];   ///< Pixel coordinates
    VOID*                             pInterpolationData;                       ///< input memory for interpolation data
    FLOAT                             bad_pixel_correction;                     ///< Slider Based Tuning
};

static const UINT32 BPSPDPC30DMILengthPDAF  = 64;                               ///< This value should match the size for
                                                                                ///< PDAFPDMask defined gicbpspdpc30setting.h
static const UINT32 BPSPDPC30DMILengthNoise = 64;                               ///< This value should match the size for


static const UINT32 BPSPDPC301DMILengthPDAF  = 64;                               ///< This value should match the size for
                                                                                ///< PDAFPDMask defined gicbpspdpc30setting.h
static const UINT32 BPSPDPC301DMILengthNoise = 64;                               ///< This value should match the size for

                                                                                ///< noiseStdLUTLevel0 defined in
                                                                                ///< noiseStdLUTLevel0 defined in
static const UINT32 BPSPDPC311DMILengthPDAF = 64;                               ///< This value should match the size for
                                                                                ///< PDAFPDMask defined pdpc311setting.h

/// @brief Input Data to PDPC30 IQ Algorithm
/// NOWHINE NC004c: Share code with system team
struct PDPC30IQInput
{
    VOID*                             pHWSetting;                               ///< Pointer to the HW Setting Object
    pdpc_3_0_0::chromatix_pdpc30Type* pChromatix;                               ///< Input Chromatix tunning data
    BOOL                              isPrepareStripeInputContext;              ///< Flag to indicate prepare striping
    BOOL                              moduleEnable;                             ///< Module enable flag
    BOOL                              bpcEnable;                                ///< BPC Module enable flag
    BOOL                              directionalBPCEnable;                     ///< directional BPC enable flag
    BOOL                              gicEnable;                                ///< GIC Module enable flag
    BOOL                              pdpcEnable;                               ///< PDPC Module enable flag
    BOOL                              zzHDRModeEnable;                          ///< ISP or Sensor HDR mode
    BOOL                              prevStateEnable;                          ///< Previous enable flag
    SensorType                        sensorType;                               ///< Sensor type
    UINT32                            blackLevelOffset;                         ///< Black Level Offset
    UINT32                            imageWidth;                               ///< Current Sensor Image Output Width
    UINT32                            imageHeight;                              ///< Current Sensor Image Output Height
    UINT32                            PDAFBlockWidth;                           ///< Current Sensor Image Output Width
    UINT32                            PDAFBlockHeight;                          ///< Current Sensor Image Output Height
    UINT16                            PDAFGlobaloffsetX;                        ///< Current Sensor Image Output Width
    UINT16                            PDAFGlobaloffsetY;                        ///< Current Sensor Image Output Height
    UINT16                            LUTBankSel;                               ///< LUT bank need for this frame.
    UINT16                            zzHDRFirstRBEXP;                          ///< zzHDR First RB EXP
    UINT16                            ZZHDRPattern;                             ///< zzHDR Pattern
    UINT8                             bayerPattern;                             ///< Bayer pattern
    FLOAT                             DRCGain;                                  ///< Input trigger value:  drcGain
    FLOAT                             exposureTime;                             ///< Input trigger value:  exporsure time
    FLOAT                             exposureGainRatio;                        ///< Input trigger value:  exposure gain ratio
    FLOAT                             AECSensitivity;                           ///< Input trigger value:  AEC sensitivity data
    FLOAT                             luxIndex;                                 ///< Input trigger value:  Lux index
    FLOAT                             realGain;                                 ///< Input trigger value:  Digital Gain Value
    FLOAT                             digitalGain;                              ///< Input trigger value:  Digital Gain Value
    FLOAT                             leftGGainWB;                              ///< G channel gain to adjust white balance
    FLOAT                             leftBGainWB;                              ///< B channel gain to adjust white balance
    FLOAT                             leftRGainWB;                              ///< R channel gain to adjust white balance
    PDPixelCoordinates                PDAFPixelCoords[MAX_CAMIF_PDAF_PIXELS];   ///< Pixel coordinates
    UINT32                            PDAFPixelCount;                           ///< PD pixel count
    VOID*                             pInterpolationData;                       ///< input memory for interpolation data
    NRMConfigData                     nrmCfgData;                               ///< NRM config data
};
static const UINT32 PDPC30DMILengthDword = 64;

/// @brief Input Data to PDPC151 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct PDPC151InputData
{
    VOID*                             pHWSetting;                               ///< Pointer to the HW Setting Object
    pdpc_1_5_1::chromatix_pdpc15Type* pChromatix;                               ///< Input Chromatix tunning data
    BOOL                              BPCEnable;                                ///< BPC Module enable flag
    BOOL                              PDPCEnable;                               ///< PDPC Module enable flag
    SensorType                        sensorType;                               ///< Sensor type
    UINT32                            imageWidth;                               ///< Current Sensor Image Output Width
    UINT32                            imageHeight;                              ///< Current Sensor Image Output Height
    UINT32                            PDAFBlockWidth;                           ///< Current Sensor Image Output Width
    UINT32                            PDAFBlockHeight;                          ///< Current Sensor Image Output Height
    UINT16                            PDAFGlobaloffsetX;                        ///< Current Sensor Image Output Width
    UINT16                            PDAFGlobaloffsetY;                        ///< Current Sensor Image Output Height
    UINT16                            LUTBankSel;                               ///< LUT bank need for this frame.
    PDPixelCoordinates                PDAFPixelCoords[MAX_CAMIF_PDAF_PIXELS];   ///< Pixel coordinates
    UINT32                            PDAFPixelCount;                           ///< PD pixel count
    VOID*                             pInterpolationData;                       ///< input memory for interpolation data
    UINT32                            chipsetVersion;                           ///< Titan Version
};
/// @brief Input Data to PDPC301 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct PDPC301InputData
{
    VOID*                             pHWSetting;                               ///< Pointer to the HW Setting Object
    pdpc_3_0_1::chromatix_pdpc30Type* pChromatix;                               ///< Input Chromatix tunning data
    BOOL                              bpcEnable;                                ///< BPC Module enable flag
    BOOL                              gicEnable;                                ///< GIC Module enable flag
    BOOL                              directionalBPCEnable;                     ///< directional BPC enable flag
    BOOL                              pdpcEnable;                               ///< PDPC Module enable flag
    BOOL                              moduleEnable;                             ///< Module enable flag
    BOOL                              zzHDRModeEnable;                          ///< ISP or Sensor HDR mode
    BOOL                              prevStateEnable;                          ///< Previous enable flag
    BOOL                              isPrepareStripeInputContext;              ///< Flag to indicate prepare striping
    SensorType                        sensorType;                               ///< Sensor type
    UINT32                            blackLevelOffset;                         ///< Black Level Offset
    UINT32                            imageWidth;                               ///< Current Sensor Image Output Width
    UINT32                            imageHeight;                              ///< Current Sensor Image Output Height
    UINT32                            PDAFBlockWidth;                           ///< Current Sensor Image Output Width
    UINT32                            PDAFBlockHeight;                          ///< Current Sensor Image Output Height
    UINT16                            PDAFGlobaloffsetX;                        ///< Current Sensor Image Output Width
    UINT16                            PDAFGlobaloffsetY;                        ///< Current Sensor Image Output Height
    UINT16                            LUTBankSel;                               ///< LUT bank need for this frame.
    UINT16                            zzHDRFirstRBEXP;                          ///< zzHDR First RB EXP
    UINT16                            ZZHDRPattern;                             ///< zzHDR Pattern
    UINT8                             bayerPattern;                             ///< Bayer pattern
    FLOAT                             AECSensitivity;                           ///< Input trigger value:  AEC sensitivity data
    FLOAT                             leftGGainWB;                              ///< G channel gain to adjust white balance
    FLOAT                             leftBGainWB;                              ///< B channel gain to adjust white balance
    FLOAT                             leftRGainWB;                              ///< R channel gain to adjust white balance
    PDPixelCoordinates                PDAFPixelCoords[MAX_CAMIF_PDAF_PIXELS];   ///< Pixel coordinates
    UINT32                            PDAFPixelCount;                           ///< PD pixel count
    VOID*                             pInterpolationData;                       ///< input memory for interpolation data
    NRMConfigData                     nrmCfgData;                               ///< NRM config data
};
static const UINT32 PDPC301DMILengthDword = 64;

/// @brief Input Data to PDPC31 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct PDPC311InputData
{
    VOID*                             pHWSetting;                               ///< Pointer to the HW Setting Object
    pdpc_3_1_1::chromatix_pdpc31Type* pChromatix;                               ///< Input Chromatix tunning data
    BOOL                              isPrepareStripeInputContext;              ///< Flag to indicate prepare striping
    BOOL                              moduleEnable;                             ///< Module enable flag
    BOOL                              prevStateEnable;                          ///< Previous enable flag
    BOOL                              bpcEnable;                                ///< BPC Module enable flag
    BOOL                              pdpcEnable;                               ///< PDPC Module enable flag
    BOOL                              directionalBPCEnable;                     ///< directional BPC enable flag
    SensorType                        sensorType;                               ///< Sensor type
    UINT32                            blackLevelOffset;                         ///< Black Level Offset
    UINT32                            imageWidth;                               ///< Current Sensor Image Output Width
    UINT32                            imageHeight;                              ///< Current Sensor Image Output Height
    UINT32                            BPSfetchCropWindowLeft;                   ///< BPS Fetch Crop Window Left Offset
    UINT32                            BPSfetchCropWindowTop;                    ///< BPS Fetch Crop Window Top Offset
    UINT32                            PDAFBlockWidth;                           ///< Current Sensor PDAF Block Width
    UINT32                            PDAFBlockHeight;                          ///< Current Sensor PDAF Block Height
    UINT16                            PDAFGlobaloffsetX;                        ///< Current Sensor PDAF Global OffsetX
    UINT16                            PDAFGlobaloffsetY;                        ///< Current Sensor PDAF Global OffsetY
    UINT16                            LUTBankSel;                               ///< LUT bank need for this frame.
    UINT16                            zzHDRFirstRBEXP;                          ///< zzHDR First RB EXP
    UINT16                            ZZHDRPattern;                             ///< zzHDR Pattern
    UINT8                             bayerPattern;                             ///< Bayer pattern
    FLOAT                             AECSensitivity;                           ///< Input trigger value:  AEC sensitivity data
    FLOAT                             digitalGain;                              ///< Input trigger value:  Digital Gain Value
    FLOAT                             leftGGainWB;                              ///< G channel gain to adjust white balance
    FLOAT                             leftBGainWB;                              ///< B channel gain to adjust white balance
    FLOAT                             leftRGainWB;                              ///< R channel gain to adjust white balance
    // PDAF
    PDPixelCoordinates                PDAFPixelCoords[MAX_CAMIF_PDAF_PIXELS];   ///< Pixel coordinates
    UINT32                            PDAFPixelCount;                           ///< PD pixel count
    UINT32                            chipsetVersion;                           ///< Titan Version
    VOID*                             pInterpolationData;                       ///< input memory for interpolation data
    NRMConfigData                     nrmCfgData;                               ///< NRM config data
    VOID*                             pNRM11InterpolationData;                  ///< NRM InterpolationData
    VOID*                             pNRM11ReserveData;                        ///< NRM Reserve data
    VOID*                             pOnlineTuningSetting;                     ///< OnlineTuningSettings
};
static const UINT32 PDPC311DMILengthDword = 64;

/// @brief Input Data to TDL10 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct TDL10InputData
{
    VOID*                           pHWSetting;          ///< Pointer to the HW Setting Object
    tdl_1_0_0::chromatix_tdl10Type* pChromatix;          ///< Input Chromatix tunning data
    FLOAT                           DRCGain;             ///< Input trigger value:  drcGain
    FLOAT                           exposureTime;        ///< Input trigger value:  exposure time
    FLOAT                           exposureGainRatio;   ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;      ///< Input trigger value:  AEC sensitivity data
    FLOAT                           LEDTrigger;          ///< Input trigger value:  LED Trigger
    FLOAT                           LEDFirstEntryRatio;  ///< Ratio of Dual LED
    UINT16                          numberOfLED;         ///< Number of LED
    FLOAT                           luxIndex;            ///< Input trigger value:  Lux index
    FLOAT                           CCTTrigger;          ///< Input trigger value:  CCT
    FLOAT                           realGain;            ///< Input trigger value:  real Gain Value
    FLOAT                           AECShortSensitivity; ///< AEC short sensitivity
    VOID*                           pInterpolationData;  ///< input memory for interpolation data
};

/// @brief Input Data to TDL10 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct TDL101InputData
{
    VOID*                           pHWSetting;          ///< Pointer to the HW Setting Object
    tdl_1_0_1::chromatix_tdl10Type* pChromatix;          ///< Input Chromatix tunning data
    VOID*                           pInterpolationData;  ///< input memory for interpolation data
};

/// @brief Input Data to TDL11 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct TDL111InputData
{
    VOID*                           pHWSetting;          ///< Pointer to the HW Setting Object
    tdl_1_1_1::chromatix_tdl11Type* pChromatix;          ///< Input Chromatix tunning data
    VOID*                           pInterpolationData;  ///< input memory for interpolation data
    BOOL                            aIEnable;            ///< To enable AI modifiers
    UINT32                          imageWidth;          ///< image width
    UINT32                          imageHeight;         ///< image height
    UINT32                          stmpInWidth;         ///< stmp in width
    UINT32                          stmpInHeight;        ///< stmp in height
    UINT32                          stmpUS;              ///< stmp upscale factor to configure us params
    UINT32                          chipsetVersion;      ///< chipset Version
    UINT8                           final_DAS;           ///< Dynamic AI Strength
    VOID*                           pOnlineTuningSetting;        ///< OnlineTuningSettings
};

/// @brief OEM Weight for ASF
struct ASFWeightInputData
{
    FLOAT          gainLUTWeightForLayer1;                 ///< Layer1 Weight for Gain LUT
    FLOAT          gainLUTWeightForLayer2;                 ///< Layer2 Weight for Gain LUT
};

/// @brief OEM Weight for ASF
struct ASFSharpnessInputData
{
    FLOAT           sharpness;                            ///< OEM overwrite sharpness
    FLOAT           sharpnessForLayer1;                   ///< Layer1 sharpness
    FLOAT           sharpnessForLayer2;                   ///< Layer2 sharpness
};

/// @brief Input Data ASF30 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct ASF30InputData
{
    VOID*                           pHWSetting;                  ///< Pointer to the HW Setting Object
    asf_3_0_0::chromatix_asf30Type* pChromatix;                  ///< Input Chromatix tunning data
    BOOL                            moduleEnable;                ///< Module enable flag
    FLOAT                           totalScaleRatio;             ///< Input trigger value:  Totalscale ratio
    FLOAT                           DRCGain;                     ///< Input trigger value:  DRC Gain
    FLOAT                           exposureGainRatio;           ///< exposure Gain Ratio
    FLOAT                           exposureTime;                ///< Input trigger value:  exporsure time
    FLOAT                           AECSensitivity;              ///< Input trigger value:  AEC sensitivity data
    FLOAT                           luxIndex;                    ///< Input trigger value:  Lux index
    FLOAT                           digitalGain;                 ///< Input trigger value:  Digital Gain Value
    UINT16                          edgeAlignEnable;             ///< edge alignment enable flag
    UINT16                          layer1Enable;                ///< layer1 enable flag
    UINT16                          layer2Enable;                ///< layer2 enable flag
    UINT16                          contrastEnable;              ///< contrast enable flag
    UINT16                          radialEnable;                ///< rnr enable flag
    UINT32                          chYStreamInWidth;            ///< Sensor output Channel Y stream in width
    UINT32                          chYStreamInHeight;           ///< Sensor output Channel Y stream in height
    struct FDData*                  pFDData;                      ///< Pointer to FD Data
    UINT16                          faceHorzOffset;              ///< face horizontal offset
    UINT16                          faceVertOffset;              ///< face vertical offset
    UINT8                           specialEffectAbsoluteEnable; ///< special effect; 0 for Emboss,
                                                                 ///< 1: for Sketch when negAbsY1 is 1
                                                                 ///< 1: for Neon when negAbsY1 is 0
    UINT8                           negateAbsoluteY1;            ///< special effect; see comments for spEffAbsen
    UINT8                           specialEffectEnable;         ///< special effect enable flag; 1 to enable special effect
    UINT8                           specialPercentage;           ///< special percentage
    UINT8                           smoothPercentage;            ///< smooth percentage
    UINT8                           nonZero[8];                  ///< non-zero flag; 0x1A90 for special effect
    UINT32                          sensorOffsetX;               ///< Current Sensor Image Output horizontal offset
    UINT32                          sensorOffsetY;               ///< Current Sensor Image Output vertical offset
    UINT32                          edgeMode;                    ///< sharpness control
    FLOAT                           sharpness;                   ///< sharpness strength
    VOID*                           pInterpolationData;          ///< input memory for interpolation data
    VOID*                           pWarpGeometriesOutput;       ///< Pointer to Warp Geometries Output
    BOOL                            sliderEnable;                ///< Slider Based Tuning
    FLOAT                           sharpness_sl;                ///< Slider Based Tuning
};

/// @brief Input Data ASF301 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct ASF301InputData
{
    VOID*                           pHWSetting;                  ///< Pointer to the HW Setting Object
    asf_3_0_1::chromatix_asf30Type* pChromatix;                  ///< Input Chromatix tunning data
    BOOL                            moduleEnable;                ///< Module enable flag
    BOOL                            prevStateEnable;             ///< Previous enable flag
    UINT16                          edgeAlignEnable;             ///< edge alignment enable flag
    UINT16                          layer1Enable;                ///< layer1 enable flag
    UINT16                          layer2Enable;                ///< layer2 enable flag
    UINT16                          contrastEnable;              ///< contrast enable flag
    UINT16                          radialEnable;                ///< rnr enable flag
    UINT32                          chYStreamInWidth;            ///< Sensor output Channel Y stream in width
    UINT32                          chYStreamInHeight;           ///< Sensor output Channel Y stream in height
    struct FDData*                  pFDData;                     ///< Pointer to FD Data
    UINT16                          faceHorzOffset;              ///< face horizontal offset
    UINT16                          faceVertOffset;              ///< face vertical offset
    UINT8                           specialEffectAbsoluteEnable; ///< special effect; 0 for Emboss,
                                                                 ///< 1: for Sketch when negAbsY1 is 1
                                                                 ///< 1: for Neon when negAbsY1 is 0
    UINT8                           negateAbsoluteY1;            ///< special effect; see comments for spEffAbsen
    UINT8                           specialEffectEnable;         ///< special effect enable flag; 1 to enable special effect
    UINT8                           specialPercentage;           ///< special percentage
    UINT8                           smoothPercentage;            ///< smooth percentage
    UINT8                           nonZero[8];                  ///< non-zero flag; 0x1A90 for special effect
    UINT32                          sensorOffsetX;               ///< Current Sensor Image Output horizontal offset
    UINT32                          sensorOffsetY;               ///< Current Sensor Image Output vertical offset
    UINT32                          edgeMode;                    ///< sharpness control
    FLOAT                           sharpness;                   ///< sharpness strength
    VOID*                           pInterpolationData;          ///< input memory for interpolation data
    VOID*                           pWarpGeometriesOutput;       ///< Pointer to Warp Geometries Output Structure
};

/// @brief Input Data ASF30 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct ASF32InputData
{
    VOID*                           pHWSetting;                  ///< Pointer to the HW Setting Object
    asf_3_2_0::chromatix_asf32Type* pChromatix;                  ///< Input Chromatix tunning data
    BOOL                            moduleEnable;                ///< Module enable flag
    BOOL                            prevStateEnable;             ///< Previous enable flag
    FLOAT                           totalScaleRatio;             ///< Input trigger value:  Totalscale ratio
    FLOAT                           DRCGain;                     ///< Input trigger value:  DRC Gain
    FLOAT                           exposureTime;                ///< Input trigger value:  exporsure time
    FLOAT                           exposureGainRatio;                ///< Input trigger value:  exporsure gain Ratio
    FLOAT                           AECSensitivity;              ///< Input trigger value:  AEC sensitivity data
    FLOAT                           luxIndex;                    ///< Input trigger value:  Lux index
    FLOAT                           digitalGain;                 ///< Input trigger value:  Digital Gain Value
    UINT16                          contrastEnable;              ///< contrast enable flag
    UINT16                          radialEnable;                ///< rnr enable flag
    UINT32                          chYStreamInWidth;            ///< Sensor output Channel Y stream in width
    UINT32                          chYStreamInHeight;           ///< Sensor output Channel Y stream in height
    UINT8                           specialEffectAbsoluteEnable; ///< special effect; 0 for Emboss,
                                                                 ///< 1: for Sketch when negAbsY1 is 1
                                                                 ///< 1: for Neon when negAbsY1 is 0
    UINT8                           negateAbsoluteY1;            ///< special effect; see comments for spEffAbsen
    UINT8                           specialEffectEnable;         ///< special effect enable flag; 1 to enable special effect
    UINT8                           specialPercentage;           ///< special percentage
    UINT8                           smoothPercentage;            ///< smooth percentage
    UINT8                           nonZero[8];                  ///< non-zero flag; 0x1A90 for special effect
    UINT32                          sensorOffsetX;               ///< Current Sensor Image Output horizontal offset
    UINT32                          sensorOffsetY;               ///< Current Sensor Image Output vertical offset
    UINT32                          edgeMode;                    ///< sharpness control
    FLOAT                           sharpness;                   ///< sharpness strength
    VOID*                           pInterpolationData;          ///< input memory for interpolation data
    VOID*                           pWarpGeometriesOutput;       ///< Pointer to Warp Geometries Output Structure
};

/// @brief Input Data ASF331 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct ASF331InputData
{
    VOID*                           pHWSetting;                  ///< Pointer to the HW Setting Object
    asf_3_3_1::chromatix_asf33Type* pChromatix;                  ///< Input Chromatix tunning data
    BOOL                            moduleEnable;                ///< Module enable flag
    BOOL                            prevStateEnable;             ///< Previous enable flag
    UINT16                          contrastEnable;              ///< contrast enable flag
    UINT16                          radialEnable;                ///< rnr enable flag
    UINT16                          edgeAlignEnable;             ///< edge alignment enable flag
    UINT16                          layer1Enable;                ///< layer1 enable flag
    UINT16                          en8Direction;                ///< directional enablement for edge alignment
    UINT32                          chYStreamInWidth;            ///< Sensor output Channel Y stream in width
    UINT32                          chYStreamInHeight;           ///< Sensor output Channel Y stream in height
    UINT8                           specialEffectAbsoluteEnable; ///< special effect; 0 for Emboss,
                                                                 ///< 1: for Sketch when negAbsY1 is 1
                                                                 ///< 1: for Neon when negAbsY1 is 0
    UINT8                           negateAbsoluteY1;            ///< special effect; see comments for spEffAbsen
    UINT8                           specialEffectEnable;         ///< special effect enable flag; 1 to enable special effect
    UINT8                           specialPercentage;           ///< special percentage
    UINT8                           smoothPercentage;            ///< smooth percentage
    UINT8                           nonZero[8];                  ///< non-zero flag; 0x1A90 for special effect
    UINT32                          sensorOffsetX;               ///< Current Sensor Image Output horizontal offset
    UINT32                          sensorOffsetY;               ///< Current Sensor Image Output vertical offset
    UINT32                          edgeMode;                    ///< sharpness control
    FLOAT                           sharpness;                   ///< sharpness strength
    VOID*                           pInterpolationData;          ///< input memory for interpolation data
    VOID*                           pWarpGeometriesOutput;       ///< Pointer to Warp Geometries Output Structure
};

/// @brief Input Data ASF341 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct ASF341InputData
{
    VOID*                           pHWSetting;                  ///< Pointer to the HW Setting Object
    asf_3_4_1::chromatix_asf34Type* pChromatix;                  ///< Input Chromatix tunning data
    BOOL                            moduleEnable;                ///< Module enable fla
    BOOL                            prevStateEnable;             ///< Previous enable flag
    FLOAT                           totalScaleRatio;             ///< Input trigger value:  Totalscale ratio
    FLOAT                           DRCGain;                     ///< Input trigger value:  DRC Gain
    FLOAT                           exposureTime;                ///< Input trigger value:  exporsure time
    FLOAT                           exposureGainRatio;           ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;              ///< Input trigger value:  AEC sensitivity data
    FLOAT                           luxIndex;                    ///< Input trigger value:  Lux index
    FLOAT                           digitalGain;                 ///< Input trigger value:  Digital Gain Value
    UINT16                          edgeAlignEnable;             ///< edge alignment enable flag
    UINT16                          layer1Enable;                ///< layer1 enable flag
    UINT16                          layer2Enable;                ///< layer2 enable flag
    UINT16                          layer1ContrastEnable;        ///< contrast enable flag
    UINT16                          layer2ContrastEnable;        ///< contrast enable flag
    UINT8                           LUTBankSel;                  ///< LUT bank need for this frame
    UINT16                          en8Direction;                ///< 8 direction enable flag
    UINT16                          radialEnable;                ///< rnr enable flag
    UINT32                          chYStreamInWidth;            ///< Sensor output Channel Y stream in width
    UINT32                          chYStreamInHeight;           ///< Sensor output Channel Y stream in height
    struct FDData*                  pFDData;                     ///< Pointer to FD Data
    UINT16                          faceHorzOffset;              ///< face horizontal offset
    UINT16                          faceVertOffset;              ///< face vertical offset
    UINT8                           specialEffectAbsoluteEnable; ///< special effect; 0 for Emboss,
                                                                 ///< 1: for Sketch when negAbsY1 is 1
                                                                 ///< 1: for Neon when negAbsY1 is 0
    UINT8                           negateAbsoluteY1;            ///< special effect; see comments for spEffAbsen
    UINT8                           specialEffectEnable;         ///< special effect enable flag; 1 to enable special effect
    UINT8                           specialPercentage;           ///< special percentage
    UINT8                           smoothPercentage;            ///< smooth percentage
    UINT8                           nonZero[8];                  ///< non-zero flag; 0x1A90 for special effect
    UINT32                          sensorOffsetX;               ///< Current Sensor Image Output horizontal offset
    UINT32                          sensorOffsetY;               ///< Current Sensor Image Output vertical offset
    UINT32                          edgeMode;                    ///< sharpness control
    FLOAT                           sharpness;                   ///< sharpness strength
    VOID*                           pInterpolationData;          ///< input memory for interpolation data
    VOID*                           pWarpGeometriesOutput;       ///< Pointer to Warp Geometries Output Structure
    FLOAT                           sharpness_sl_factor;         ///< Slider Based Tuning
};

/// @brief Input Data ASF341 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct ASF351InputData
{
    VOID*                           pHWSetting;                  ///< Pointer to the HW Setting Object
    asf_3_5_1::chromatix_asf35Type* pChromatix;                  ///< Input Chromatix tunning data
    BOOL                            moduleEnable;                ///< Module enable fla
    BOOL                            prevStateEnable;             ///< Previous enable flag
    FLOAT                           totalScaleRatio;             ///< Input trigger value:  Totalscale ratio
    FLOAT                           DRCGain;                     ///< Input trigger value:  DRC Gain
    FLOAT                           exposureTime;                ///< Input trigger value:  exporsure time
    FLOAT                           exposureGainRatio;           ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;              ///< Input trigger value:  AEC sensitivity data
    FLOAT                           luxIndex;                    ///< Input trigger value:  Lux index
    FLOAT                           digitalGain;                 ///< Input trigger value:  Digital Gain Value
    UINT16                          edgeAlignEnable;             ///< edge alignment enable flag
    UINT16                          layer1Enable;                ///< layer1 enable flag
    UINT16                          layer2Enable;                ///< layer2 enable flag
    UINT16                          layer1ContrastEnable;        ///< contrast enable flag
    UINT16                          layer2ContrastEnable;        ///< contrast enable flag
    UINT8                           LUTBankSel;                  ///< LUT bank need for this frame
    UINT16                          en8Direction;                ///< 8 direction enable flag
    UINT16                          radialEnable;                ///< rnr enable flag
    UINT32                          chYStreamInWidth;            ///< Sensor output Channel Y stream in width
    UINT32                          chYStreamInHeight;           ///< Sensor output Channel Y stream in height
    UINT32                          cmusOutWidth;                ///< for cat map upsclaing
    UINT32                          cmusOutHeight;               ///< for cat map upscaling
    struct FDData*                  pFDData;                     ///< Pointer to FD Data
    UINT16                          faceHorzOffset;              ///< face horizontal offset
    UINT16                          faceVertOffset;              ///< face vertical offset
    UINT8                           specialEffectAbsoluteEnable; ///< special effect; 0 for Emboss,
                                                                 ///< 1: for Sketch when negAbsY1 is 1
                                                                 ///< 1: for Neon when negAbsY1 is 0
    UINT8                           negateAbsoluteY1;            ///< special effect; see comments for spEffAbsen
    UINT8                           specialEffectEnable;         ///< special effect enable flag; 1 to enable special effect
    UINT8                           specialPercentage;           ///< special percentage
    UINT8                           smoothPercentage;            ///< smooth percentage
    UINT8                           nonZero[8];                  ///< non-zero flag; 0x1A90 for special effect
    UINT32                          sensorOffsetX;               ///< Current Sensor Image Output horizontal offset
    UINT32                          sensorOffsetY;               ///< Current Sensor Image Output vertical offset
    UINT32                          edgeMode;                    ///< sharpness control
    FLOAT                           sharpness;                   ///< sharpness strength
    VOID*                           pInterpolationData;          ///< input memory for interpolation data
    VOID*                           pWarpGeometriesOutput;       ///< Pointer to Warp Geometries Output Structure
    BOOL                            aIEnable;                    ///< To enable AI modifiers
    UINT8                           final_DAS;                   ///< Dynamic AI strength
    BOOL                            enableAdditionalASF;         ///< Enable flag for additional ASF
    UINT32                          chipsetVersion;              ///< chipset Version
    VOID*                           pOnlineTuningSetting;        ///< OnlineTuningSettings
    ASFWeightInputData*             pWeightData;                 ///< Weight data for Layers
    ASFSharpnessInputData*          pSharpnessData;              ///< Sharpness data for Layers
};

/// @brief Input Data to CV12 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct CV12InputData
{
    VOID*                               pHWSetting;         ///< Pointer to the HW Setting Object
    cv_1_2_0::chromatix_cv12Type*       pChromatix;          ///< Input Chromatix tunning data
    FLOAT                               DRCGain;             ///< Input trigger value:  DRCGain
    FLOAT                               exposureTime;        ///< Input trigger value:  exporsure time
    FLOAT                               exposureGainRatio;   ///< Input trigger value:  exposure gain ratio
    FLOAT                               AECSensitivity;      ///< Input trigger value:  AEC sensitivity data
    FLOAT                               luxIndex;            ///< Input trigger value:  Lux index
    FLOAT                               LEDTrigger;;         ///< Input trigger value:  LED Trigger
    FLOAT                               LEDFirstEntryRatio;  ///< Ratio of Dual LED
    UINT16                              numberOfLED;         ///< Number of LED
    FLOAT                               colorTemperature;    ///< Input trigger value:  cct
    FLOAT                               digitalGain;         ///< Input trigger value:  Digital Gain Value
    VOID*                               pInterpolationData;  ///< input memory for interpolation data
    FLOAT                               stretch_factor;      ///< Input trigger value:  Aec Histogram scale factor
    FLOAT                               clamp;               ///< Input trigger value:  Aec Histogram offset
    UINT32                              chipsetVersion;      ///< Titan version
    FLOAT                               saturation_sl;       ///< Slider Based Tuning
};

/// @brief Input Data to CV121 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct CV121InputData
{
    VOID*                               pHWSetting;         ///< Pointer to the HW Setting Object
    cv_1_2_1::chromatix_cv12Type*       pChromatix;          ///< Input Chromatix tunning data
    VOID*                               pInterpolationData;  ///< input memory for interpolation data
    FLOAT                               stretch_factor;      ///< Input trigger value:  Aec Histogram scale factor
    FLOAT                               clamp;               ///< Input trigger value:  Aec Histogram offset
    UINT32                              chipsetVersion;      ///< Titan version
    VOID*                               pOnlineTuningSetting;   ///< OnlineTuningSettings
    FLOAT                               color_factor;        ///< Slider Based Tuning
};

/// @brief Gamma Weight data for OEM data
struct GammaWeightInputData
{
    BOOL                                enableGammaWeight;         ///< Flag to indicagte Gamma Weight is enabled/Disabled
    UINT                                numOfGammaWeights;         ///< Number of Valid Gamma Weights
    FLOAT*                              pGammaWeightForR;          ///< Pointer to Gamma Weight for R
    FLOAT*                              pGammaWeightForG;          ///< Pointer to Gamma Weight for G
    FLOAT*                              pGammaWeightForB;          ///< Pointer to Gamma Weight for B
};

/// @brief Input Data to Gamma15 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct Gamma15InputData
{
    VOID*                               pHWSetting;                ///< Pointer to the HW Setting Object
    gamma_1_5_0::chromatix_gamma15Type* pChromatix;                ///< Input Chromatix tunning data
    FLOAT                               DRCGain;                   ///< Input trigger value:  drcGain
    FLOAT                               exposureTime;              ///< Input trigger value:  exporsure time
    FLOAT                               exposureGainRatio;         ///< Input trigger value:  exposure gain ratio
    FLOAT                               AECSensitivity;            ///< Input trigger value:  AEC sensitivity data
    FLOAT                               luxIndex;                  ///< Input trigger value:  Lux index
    FLOAT                               LEDTrigger;                ///< Input trigger value:  LED Trigger
    FLOAT                               LEDFirstEntryRatio;        ///< Ratio of Dual LED
    UINT16                              numberOfLED;               ///< Number of LED
    FLOAT                               colorTemperature;          ///< Input trigger value:  AWB colorTemperature
    FLOAT                               digitalGain;               ///< Input trigger value:  Digital Gain Value
    VOID*                               pLibData;                  ///< Pointer to the library specific data
    UINT8                               contrastLevel;             ///< contrast level pass down by APP
    BOOL                                isHDR10Mode;               ///< HDR10 mode check
    UseCaseMode                         usecaseMode;               ///< Use case Mode
    VOID*                               pInterpolationData;        ///< input memory for interpolation data
    UINT32                              chipsetVersion;            ///< Titan version
    UINT16                              pipelineType;              ///< Pipeline type
    UINT8                               LUTBankSel;                ///< LUT bank need for this frame
};

/// @brief Input Data to Gamma151 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct Gamma151InputData
{
    VOID*                               pHWSetting;                  ///< Pointer to the HW Setting Object
    gamma_1_5_1::chromatix_gamma15Type* pChromatix;                  ///< Input Chromatix tunning data
    FLOAT                               DRCGain;                     ///< Input trigger value:  drcGain
    VOID*                               pLibData;                    ///< Pointer to the library specific data
    UINT8                               contrastLevel;               ///< contrast level pass down by APP
    BOOL                                isHDR10Mode;                 ///< HDR10 mode check
    UseCaseMode                         usecaseMode;                 ///< Use case Mode
    VOID*                               pInterpolationData;          ///< input memory for interpolation data
    UINT32                              chipsetVersion;              ///< Titan version
    UINT16                              pipelineType;                ///< Pipeline type
    UINT16                              CLCPos;                      ///< To differentiate CLC position for different bpp
    UINT8                               LUTBankSel;                  ///< LUT bank need for this frame
    UINT16                              outputpath;                  ///< output path to identify the instance in 690
    FLOAT                               tone;                        ///< Variable to control DynamicGamma. Default value 0.0
    BOOL                                isAIDEenabled;               ///< Flag to indicate AIDE is enabled/Disabled
    UINT8                               aideMode;                  ///< AIDE mode indicator : 0-TCN , 1,2 - Full
    UINT                                modulePath;                ///< check if path is pre LTM
    VOID*                               pOnlineTuningSetting;        ///< OnlineTuningSettings
    GammaWeightInputData                weightData;                  ///< Weight data for Gamma Table
};

/// @brief Input Data to UVGamma101 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct UVG101InputData
{
    VOID*                               pHWSetting;                ///< Pointer to the HW Setting Object
    VOID*                               pLibData;                  ///< Pointer to the library specific data
    VOID*                               pInterpolationData;        ///< input memory for interpolation data
    FLOAT                               LEDFirstEntryRatio;        ///< Ratio of Dual LED
    FLOAT                               colorTemperature;          ///< Input trigger value:  AWB colorTemperature
    FLOAT                               digitalGain;               ///< Input trigger value:  Digital Gain Value
    BOOL                                isHDR10Mode;               ///< HDR10 mode check
    UINT8                               contrastLevel;             ///< contrast level pass down by APP
    UINT8                               LUTBankSel;                ///< LUT bank need for this frame
    UINT16                              numberOfLED;               ///< Number of LED
    UINT16                              pipelineType;              ///< Pipeline type
    UINT32                              chipsetVersion;            ///< For chipset version
    UseCaseMode                         usecaseMode;               ///< Use case Mode
    uvg_1_0_1::chromatix_uvg10Type*     pChromatix;                ///< Input Chromatix tunning data
    UINT32*                             pUVGammaLUT;               ///< For UVG Inverse
    BOOL                                uvgEnable;                 ///< UVG enable
};

/// @brief Input Data to SCE11 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct SCE11InputData
{
    VOID*                           pHWSetting;          ///< Pointer to the HW Setting Object
    sce_1_1_0::chromatix_sce11Type* pChromatix;          ///< Input Chromatix tunning data
    FLOAT                           DRCGain;             ///< Input trigger value:  DRCGain
    FLOAT                           exposureTime;        ///< Input trigger value:  exporsure time
    FLOAT                           exposureGainRatio;   ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;      ///< Input trigger value:  AEC sensitivity data
    FLOAT                           luxIndex;            ///< Input trigger value:  Lux index
    FLOAT                           realGain;            ///< Input trigger value:  Real Gain Value
    FLOAT                           leftGGainWB;         ///< G channel gain to adjust white balance
    FLOAT                           leftBGainWB;         ///< B channel gain to adjust white balance
    FLOAT                           leftRGainWB;         ///< R channel gain to adjust white balanc
    VOID*                           pInterpolationData;  ///< input memory for interpolation data
};

/// @brief Input Data to SCE111 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct SCE111InputData
{
    VOID*                           pHWSetting;          ///< Pointer to the HW Setting Object
    sce_1_1_1::chromatix_sce11Type* pChromatix;          ///< Input Chromatix tunning data
    FLOAT                           DRCGain;             ///< Input trigger value:  DRCGain
    FLOAT                           exposureTime;        ///< Input trigger value:  exporsure time
    FLOAT                           exposureGainRatio;   ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;      ///< Input trigger value:  AEC sensitivity data
    FLOAT                           luxIndex;            ///< Input trigger value:  Lux index
    FLOAT                           realGain;            ///< Input trigger value:  Real Gain Value
    FLOAT                           leftGGainWB;         ///< G channel gain to adjust white balance
    FLOAT                           leftBGainWB;         ///< B channel gain to adjust white balance
    FLOAT                           leftRGainWB;         ///< R channel gain to adjust white balanc
    UINT32                          chipsetVersion;     ///< Titan version
    VOID*                           pInterpolationData;  ///< input memory for interpolation data
};

/// @brief Input Data to CAC22 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct CAC22InputData
{
    VOID*                           pHWSetting;         ///< Pointer to the HW Setting Object
    cac_2_2_0::chromatix_cac22Type* pChromatix;         ///< Input Chromatix tunning data
    FLOAT                           totalScaleRatio;    ///< Input trigger value:  Total Scale Ratio
    FLOAT                           luxIndex;           ///< Input trigger value:  Lux index
    FLOAT                           digitalGain;        ///< Input trigger value:  Digital Gain Value
    UINT32                          enableSNR;          ///< SNR enable flag
    UINT32                          resolution;         ///< 0 - 420 proessing 1 - 422 processing
    VOID*                           pInterpolationData; ///< input memory for interpolation data
};

/// @brief Input Data to CAC23 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct CAC23InputData
{
    VOID*                           pHWSetting;         ///< Pointer to the HW Setting Object
    cac_2_3_0::chromatix_cac23Type* pChromatix;         ///< Input Chromatix tunning data
    FLOAT                           totalScaleRatio;    ///< Input trigger value:  Total Scale Ratio
    FLOAT                           luxIndex;           ///< Input trigger value:  Lux index
    FLOAT                           digitalGain;        ///< Input trigger value:  Digital Gain Value
    UINT32                          enableSNR;          ///< SNR enable flag
    UINT32                          resolution;         ///< 0 - 420 proessing 1 - 422 processing
    VOID*                           pInterpolationData; ///< input memory for interpolation data
};

/// @brief Input Data to CAC231 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct CAC231InputData
{
    VOID*                           pHWSetting;         ///< Pointer to the HW Setting Object
    cac_2_3_1::chromatix_cac23Type* pChromatix;         ///< Input Chromatix tunning data
    UINT32                          enableSNR;          ///< SNR enable flag
    UINT32                          resolution;         ///< 0 - 420 proessing 1 - 422 processing
    VOID*                           pInterpolationData; ///< input memory for interpolation data
    VOID*                           pOnlineTuningSetting; ///< OnlineTuningSettings
};

/// @brief Input Data to TF10 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct TF10InputData
{
    VOID*                         pHWSetting;                       ///< Pointer to the HW Setting Object
    tf_1_0_0::chromatix_tf10Type* pChromatix;                       ///< Chromatix data for TF10 module
    BOOL                          moduleEnable;                     ///< Module enable flag
    BOOL                          bypassMode;                       ///< Bypass ANR and TF
    BOOL                          resetReferenceInput;              ///< Reset reference input during failure
    BOOL                          enable_mfsr;                      ///< Enable Mfsr
    FLOAT                         lensPosition;                     ///< Input trigger value:  Lens position
    FLOAT                         lensZoom;                         ///< Input trigger value:  Lens Zoom
    FLOAT                         postScaleRatio;                   ///< Input trigger value:  Post scale ratio
    FLOAT                         preScaleRatio;                    ///< Input trigger value:  Pre scale ratio
    FLOAT                         DRCGain;                          ///< Input trigger value:  drcGain
    FLOAT                         exposureTime;                     ///< Input trigger value:  exposure time
    FLOAT                         exposureGainRatio;                ///< Input trigger value:  exposure gain ratio
    FLOAT                         AECSensitivity;                   ///< Input trigger value:  AEC sensitivity data
    FLOAT                         luxIndex;                         ///< Input trigger value:  Lux index
    FLOAT                         AECGain;                          ///< Input trigger value:  AEC Gain Value
    FLOAT                         CCTTrigger;                       ///< Input trigger value:  AWB colorTemperature
    FLOAT                         upscalingFactorMFSR;              ///< MFSR upscaling factor
    UINT32                        fullPassIcaOutputFrameWidth;      ///< Full Pass ICA Output Frame width
    UINT32                        fullPassIcaOutputFrameHeight;     ///< Full Pass ICA Ouput Frame Height
    UINT32                        multiFrameSpatialWeightLumaQ8;    ///< Multi Frame Spatial Weight Luma
    UINT32                        multiFrameSpatialWeightChromaQ8;  ///< Multi Frame Spatial Weight Chroma
    UINT32                        maxUsedPasses;                    ///< Maximum passes used in the request
    UINT32                        frameNum;                         ///< Current frame number
    UINT32                        mfFrameNum;                       ///< MFNR/MFSR blending frame number
    UINT32                        numOfFrames;                      ///< Number of frames for MFNR/MFSR use case
    UINT32                        perspectiveConfidence;            ///< Transform confidence
    UINT32                        digitalZoomStartX;                ///< Digital zoom horizontal start offset
    UINT32                        digitalZoomStartY;                ///< Digital zoom vertical start offset
    UINT8                         hasTFRefInput;                    ///< 1: has reference input, 0: no reference input
    UINT8                         isDigitalZoomEnabled;             ///< 1: digital zoom enable, 0: disable
    UINT8                         useCase;                          ///< UseCase: Video, Still
    UINT8                         configMF;                         ///< Multiframe Config: Prefilter or Temporal
    VOID*                         pWarpGeometriesOutput;            ///< Pointer to Warp Geometries Output Structure
    VOID*                         pRefinementParameters;            ///< Pointer to refinement parameters
    VOID*                         pTFParameters;                    ///< Pointer to TF parameters
    VOID*                         pLMCParameters;                   ///< Pointer to TF LMC parameters
    VOID*                         pInterpolationData;               ///< input memory  for chromatix interpolation data
    VOID*                         pUnpackedfield;                   ///< input memory Unpacked filed
    VOID*                         pNCChromatix;                     ///< Chromatix Input pointer
    UINT32                        maxSupportedPassesForUsecase;     ///< Maximum supported passes for usecase
};

/// @brief Input Data to TF101 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct TF101InputData
{
    VOID*                         pHWSetting;                       ///< Pointer to the HW Setting Object
    tf_1_0_1::chromatix_tf10Type* pChromatix;                       ///< Chromatix data for TF10 module
    BOOL                          moduleEnable;                     ///< Module enable flag
    BOOL                          bypassMode;                       ///< Bypass ANR and TF
    BOOL                          resetReferenceInput;              ///< Reset reference input during failure
    BOOL                          enable_mfsr;                      ///< Enable Mfsr
    FLOAT                         lensPosition;                     ///< Input trigger value:  Lens position
    FLOAT                         lensZoom;                         ///< Input trigger value:  Lens Zoom
    FLOAT                         postScaleRatio;                   ///< Input trigger value:  Post scale ratio
    FLOAT                         preScaleRatio;                    ///< Input trigger value:  Pre scale ratio
    FLOAT                         DRCGain;                          ///< Input trigger value:  drcGain
    FLOAT                         exposureTime;                     ///< Input trigger value:  exposure time
    FLOAT                         exposureGainRatio;                ///< Input trigger value:  exposure gain ratio
    FLOAT                         AECSensitivity;                   ///< Input trigger value:  AEC sensitivity data
    FLOAT                         luxIndex;                         ///< Input trigger value:  Lux index
    FLOAT                         AECGain;                          ///< Input trigger value:  AEC Gain Value
    FLOAT                         CCTTrigger;                       ///< Input trigger value:  AWB colorTemperature
    FLOAT                         upscalingFactorMFSR;              ///< MFSR upscaling factor
    UINT32                        fullPassIcaOutputFrameWidth;      ///< Full Pass ICA Output Frame width
    UINT32                        fullPassIcaOutputFrameHeight;     ///< Full Pass ICA Ouput Frame Height
    UINT32                        multiFrameSpatialWeightLumaQ8;    ///< Multi Frame Spatial Weight Luma
    UINT32                        multiFrameSpatialWeightChromaQ8;  ///< Multi Frame Spatial Weight Chroma
    UINT32                        maxUsedPasses;                    ///< Maximum passes used in the request
    UINT32                        frameNum;                         ///< Current frame number
    UINT32                        mfFrameNum;                       ///< MFNR/MFSR blending frame number
    UINT32                        numOfFrames;                      ///< Number of frames for MFNR/MFSR use case
    UINT32                        perspectiveConfidence;            ///< Transform confidence
    UINT32                        digitalZoomStartX;                ///< Digital zoom horizontal start offset
    UINT32                        digitalZoomStartY;                ///< Digital zoom vertical start offset
    UINT8                         hasTFRefInput;                    ///< 1: has reference input, 0: no reference input
    UINT8                         isDigitalZoomEnabled;             ///< 1: digital zoom enable, 0: disable
    UINT8                         useCase;                          ///< UseCase: Video, Still
    UINT8                         configMF;                         ///< Multiframe Config: Prefilter or Temporal
    VOID*                         pWarpGeometriesOutput;            ///< Pointer to Warp Geometries Output Structure
    VOID*                         pRefinementParameters;            ///< Pointer to refinement parameters
    VOID*                         pTFParameters;                    ///< Pointer to TF parameters
    VOID*                         pLMCParameters;                   ///< Pointer to TF LMC parameters
    VOID*                         pInterpolationData;               ///< input memory  for chromatix interpolation data
    VOID*                         pUnpackedfield;                   ///< input memory Unpacked filed
    VOID*                         pNCChromatix;                     ///< Chromatix Input pointer
    UINT32                        maxSupportedPassesForUsecase;     ///< Maximum supported passes for usecase
};

/// @brief Input Data to TF20 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct TF20InputData
{
    VOID*                               pHWSetting;                   ///< Pointer to the HW Setting Object
    tf_2_0_0::chromatix_tf20Type*       pChromatix;                   ///< Chromatix data for TF20 module
    nradj_1_0_0::chromatix_nradj10Type* pNRAjust10Chromatix;          ///< Input Chromatix tunning data for NR adjust
    BOOL                                moduleEnable;                 ///< Module enable flag
    BOOL                                bypassMode;                   ///< Bypass ANR and TF
    FLOAT                               lensPosition;                 ///< Input trigger value:  Lens position
    FLOAT                               lensZoom;                     ///< Input trigger value:  Lens Zoom
    FLOAT                               postScaleRatio;               ///< Input trigger value:  Post scale ratio
    FLOAT                               preScaleRatio;                ///< Input trigger value:  Pre scale ratio
    FLOAT                               DRCGain;                      ///< Input trigger value:  drcGain
    FLOAT                               exposureTime;                 ///< Input trigger value:  exposure time
    FLOAT                               exposureGainRatio;            ///< Input trigger value:  exposure gain ratio
    FLOAT                               AECSensitivity;               ///< Input trigger value:  AEC sensitivity data
    FLOAT                               luxIndex;                     ///< Input trigger value:  Lux index
    FLOAT                               AECGain;                      ///< Input trigger value:  AEC Gain Value
    FLOAT                               CCTTrigger;                   ///< Input trigger value:  AWB colorTemperature
    FLOAT                               upscalingFactorMFSR;          ///< MFSR upscaling factor
    UINT32                              fullPassIcaOutputFrameWidth;  ///< Full Pass ICA Output Frame width
    UINT32                              fullPassIcaOutputFrameHeight; ///< Full Pass ICA Ouput Frame Height
    UINT32                              maxUsedPasses;                ///< Maximum passes used in the request
    UINT32                              frameNum;                     ///< Current frame number
    UINT32                              mfFrameNum;                   ///< MFNR/MFSR blending frame number
    UINT32                              numOfFrames;                  ///< Number of frames for MFNR/MFSR use case
    UINT32                              perspectiveConfidence;        ///< Transform confidence
    UINT32                              digitalZoomStartX;            ///< Digital zoom horizontal start offset
    UINT32                              digitalZoomStartY;            ///< Digital zoom vertical start offset
    UINT8                               hasTFRefInput;                ///< 1: has reference input, 0: no reference input
    UINT8                               isDigitalZoomEnabled;         ///< 1: digital zoom enable, 0: disable
    UINT8                               useCase;                      ///< UseCase: Video, Still
    UINT8                               configMF;                     ///< Multiframe Config: Prefilter or Temporal
    VOID*                               pWarpGeometriesOutput;        ///< Pointer to Warp Geometries Output Structure
    VOID*                               pRefinementParameters;        ///< Pointer to refinement parameters
    VOID*                               pTFParameters;                ///< Pointer to TF parameters
    VOID*                               pInterpolationData;           ///< input memory  for chromatix interpolation data
    VOID*                               pNCChromatix;                 ///< Chromatix Input pointer
    VOID*                               pLMCParameters;               ///< Pointer to Lmc parameterps
    UINT32                              maxSupportedPassesForUsecase; ///< Maximum supported passes for usecase
    BOOL                                enableNRAdjust;               ///< Enable NR adjust flag from Chromatix
    VOID*                               pGTMInfo;                     ///< Pointer to GTM info from IFE/BPS
    NRAdjust_TFData*                    pNRadjustPrev;                ///< Pointer to previous parameters of noise adjustment
    NRAdjust_TFData*                    pNRadjustCurr;                ///< Pointer to current parameters of noise adjustment
    BOOL                                runExtraPass;                 ///< Flag to determine if extrapass needs to be run
    BOOL                                runExtraPassWithBlend;        ///< Flag to determine if extrapass with blending needed
    UINT8                               extraPassBlendFactor;         ///< Extra pass blend factor
    NRMConfigData                       nrmCfgData;                   ///< NRM config data
    BOOL                                validTemporalData;            ///< is valid temporal data or not
};

/// @brief Input Data to TF201 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct TF201InputData
{
    VOID*                               pHWSetting;                   ///< Pointer to the HW Setting Object
    tf_2_0_1::chromatix_tf20Type*       pChromatix;                   ///< Chromatix data for TF20 module
    nradj_1_0_0::chromatix_nradj10Type* pNRAjust10Chromatix;          ///< Input Chromatix tunning data for NR adjust
    BOOL                                moduleEnable;                 ///< Module enable flag
    BOOL                                bypassMode;                   ///< Bypass ANR and TF
    FLOAT                               lensPosition;                 ///< Input trigger value:  Lens position
    FLOAT                               lensZoom;                     ///< Input trigger value:  Lens Zoom
    FLOAT                               postScaleRatio;               ///< Input trigger value:  Post scale ratio
    FLOAT                               preScaleRatio;                ///< Input trigger value:  Pre scale ratio
    FLOAT                               DRCGain;                      ///< Input trigger value:  drcGain
    FLOAT                               exposureTime;                 ///< Input trigger value:  exposure time
    FLOAT                               exposureGainRatio;            ///< Input trigger value:  exposure gain ratio
    FLOAT                               AECSensitivity;               ///< Input trigger value:  AEC sensitivity data
    FLOAT                               luxIndex;                     ///< Input trigger value:  Lux index
    FLOAT                               AECGain;                      ///< Input trigger value:  AEC Gain Value
    FLOAT                               CCTTrigger;                   ///< Input trigger value:  AWB colorTemperature
    FLOAT                               upscalingFactorMFSR;          ///< MFSR upscaling factor
    UINT32                              fullPassIcaOutputFrameWidth;  ///< Full Pass ICA Output Frame width
    UINT32                              fullPassIcaOutputFrameHeight; ///< Full Pass ICA Ouput Frame Height
    UINT32                              maxUsedPasses;                ///< Maximum passes used in the request
    UINT32                              frameNum;                     ///< Current frame number
    UINT32                              mfFrameNum;                   ///< MFNR/MFSR blending frame number
    UINT32                              numOfFrames;                  ///< Number of frames for MFNR/MFSR use case
    UINT32                              perspectiveConfidence;        ///< Transform confidence
    UINT32                              digitalZoomStartX;            ///< Digital zoom horizontal start offset
    UINT32                              digitalZoomStartY;            ///< Digital zoom vertical start offset
    UINT8                               hasTFRefInput;                ///< 1: has reference input, 0: no reference input
    UINT8                               isDigitalZoomEnabled;         ///< 1: digital zoom enable, 0: disable
    UINT8                               useCase;                      ///< UseCase: Video, Still
    UINT8                               configMF;                     ///< Multiframe Config: Prefilter or Temporal
    VOID*                               pWarpGeometriesOutput;        ///< Pointer to Warp Geometries Output Structure
    VOID*                               pRefinementParameters;        ///< Pointer to refinement parameters
    VOID*                               pTFParameters;                ///< Pointer to TF parameters
    VOID*                               pInterpolationData;           ///< input memory  for chromatix interpolation data
    VOID*                               pNCChromatix;                 ///< Chromatix Input pointer
    VOID*                               pLMCParameters;               ///< Pointer to Lmc parameterps
    UINT32                              maxSupportedPassesForUsecase; ///< Maximum supported passes for usecase
    BOOL                                enableNRAdjust;               ///< Enable NR adjust flag from Chromatix
    VOID*                               pGTMInfo;                     ///< Pointer to GTM info from IFE/BPS
    NRAdjust_TFData*                    pNRadjustPrev;                ///< Pointer to previous parameters of noise adjustment
    NRAdjust_TFData*                    pNRadjustCurr;                ///< Pointer to current parameters of noise adjustment
    BOOL                                runExtraPass;                 ///< Flag to determine if extrapass needs to be run
    BOOL                                runExtraPassWithBlend;        ///< Flag to determine if extrapass with blending needed
    UINT8                               extraPassBlendFactor;         ///< Extra pass blend factor
    NRMConfigData                       nrmCfgData;                   ///< NRM config data
    BOOL                                validTemporalData;            ///< is valid temporal data or not
    BOOL                                prevStateEnable;                 ///< Previous enable flag
    UINT32                              multiFrameSpatialWeightLumaQ8;   ///< Multi Frame Spatial Weight Luma
    UINT32                              multiFrameSpatialWeightChromaQ8; ///< Multi Frame Spatial Weight Chroma
    VOID*                               pUnpackedfield;                     ///< input memory Unpacked filed
    BOOL                                resetReferenceInput;                ///< Reset reference input during failure
    BOOL                                enable_mfsr;                        ///< Enable Mfsr
};

/// @brief TF121 Module Pass Data
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct TF121ModPassData
{
    tf_1_2_1::mod_tf12_pass_dataType mod_tf12_pass_data[4];
};

/// @brief Input Data to TF121 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct TF121InputData
{
    VOID*                         pHWSetting;                   ///< Pointer to the HW Setting Object
    tf_1_2_1::chromatix_tf12Type* pChromatix;                   ///< Chromatix data for TF10 module
    BOOL                          moduleEnable;                 ///< Module enable flag
    BOOL                          bypassMode;                   ///< Bypass ANR and TF
    BOOL                          prevStateEnable;              ///< Previous enable flag
    FLOAT                         upscalingFactorMFSR;          ///< MFSR upscaling factor
    UINT32                        fullPassIcaOutputFrameWidth;  ///< Full Pass ICA Output Frame width
    UINT32                        fullPassIcaOutputFrameHeight; ///< Full Pass ICA Ouput Frame Height
    UINT32                        multiFrameSpatialWeightLumaQ8;///< Multi Frame Spatial Weight Luma
    UINT32                        multiFrameSpatialWeightChromaQ8;///< Multi Frame Spatial Weight Chroma
    UINT32                        maxUsedPasses;                ///< Maximum passes used in the request
    UINT32                        frameNum;                     ///< Current frame number
    UINT32                        mfFrameNum;                   ///< MFNR/MFSR blending frame number
    UINT32                        numOfFrames;                  ///< Number of frames for MFNR/MFSR use case
    UINT32                        perspectiveConfidence;        ///< Transform confidence
    UINT32                        digitalZoomStartX;            ///< Digital zoom horizontal start offset
    UINT32                        digitalZoomStartY;            ///< Digital zoom vertical start offset
    UINT8                         hasTFRefInput;                ///< 1: has reference input, 0: no reference input
    UINT8                         isDigitalZoomEnabled;         ///< 1: digital zoom enable, 0: disable
    UINT8                         useCase;                      ///< UseCase: Video, Still
    UINT8                         configMF;                     ///< Multiframe Config: Prefilter or Temporal
    VOID*                         pWarpGeometriesOutput;        ///< Pointer to Warp Geometries Output Structure
    VOID*                         pRefinementParameters;        ///< Pointer to refinement parameters
    VOID*                         pTFParameters;                ///< Pointer to TF parameters
    VOID*                         pLMCParameters;               ///< Pointer to TF LMC parameters
    VOID*                         pInterpolationData;           ///< input memory  for chromatix interpolation data
    VOID*                         pUnpackedfield;               ///< input memory Unpacked filed
    VOID*                         pNCChromatix;                 ///< Chromatix Input pointer
    BOOL                          resetReferenceInput;          ///< Reset reference input during failure
    BOOL                          enable_mfsr;                  ///< Enable Mfsr
    UINT32                        maxSupportedPassesForUsecase; ///< Maximum supported passes for usecase
    UINT32                        tfTestMode;                   ///< TF test mode
    VOID*                         pGTMInfo;                     ///< Pointer to GTM info from IFE/BPS
    BOOL                          enableNRAdjust;               ///< Enable NR adjust flag from Chromatix
    NRAdjust_TFData*              pNRadjustPrev;                ///< Pointer to previous parameters of noise adjustment
    NRAdjust_TFData*              pNRadjustCurr;                ///< Pointer to current parameters of noise adjustment
    BOOL                          validTemporalData;            ///< is valid temporal data or not
    BOOL                          isBPSEnabled;                 ///< is BPS enabled or not from Pipeline
    BOOL                          isTFEEnabled;                 ///< is TFE enabled or not from Pipeline
    UINT32                        chipsetVersion;               ///< Titan version
};

/// @brief TF201 Module Pass Data
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct TF101ModPassData
{
    tf_1_0_1::mod_tf10_pass_dataType mod_tf10_pass_data[4];
};

/// @brief TF201 Module Pass Data
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct TF201ModPassData
{
    tf_2_0_1::mod_tf20_pass_dataType mod_tf20_pass_data[4];
};

/// @brief Input Data to TF211 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct TF211InputData
{
    VOID*                         pHWSetting;                   ///< Pointer to the HW Setting Object
    tf_2_1_1::chromatix_tf21Type* pChromatix;                   ///< Chromatix data for TF211 module
    BOOL                          moduleEnable;                 ///< Module enable flag
    BOOL                          bypassMode;                   ///< Bypass ANR and TF
    BOOL                          prevStateEnable;              ///< Previous enable flag
    FLOAT                         upscalingFactorMFSR;          ///< MFSR upscaling factor
    UINT32                        fullPassIcaOutputFrameWidth;  ///< Full Pass ICA Output Frame width
    UINT32                        fullPassIcaOutputFrameHeight; ///< Full Pass ICA Ouput Frame Height
    UINT32                        multiFrameSpatialWeightLumaQ8;///< Multi Frame Spatial Weight Luma
    UINT32                        multiFrameSpatialWeightChromaQ8;///< Multi Frame Spatial Weight Chroma
    UINT32                        maxUsedPasses;                ///< Maximum passes used in the request
    UINT32                        frameNum;                     ///< Current frame number
    UINT32                        mfFrameNum;                   ///< MFNR/MFSR blending frame number
    UINT32                        numOfFrames;                  ///< Number of frames for MFNR/MFSR use case
    UINT32                        perspectiveConfidence;        ///< Transform confidence
    UINT32                        digitalZoomStartX;            ///< Digital zoom horizontal start offset
    UINT32                        digitalZoomStartY;            ///< Digital zoom vertical start offset
    UINT8                         hasTFRefInput;                ///< 1: has reference input, 0: no reference input
    UINT8                         isDigitalZoomEnabled;         ///< 1: digital zoom enable, 0: disable
    UINT8                         useCase;                      ///< UseCase: Video, Still
    UINT8                         configMF;                     ///< Multiframe Config: Prefilter or Temporal
    VOID*                         pWarpGeometriesOutput;        ///< Pointer to Warp Geometries Output Structure
    VOID*                         pRefinementParameters;        ///< Pointer to refinement parameters
    VOID*                         pTFParameters;                ///< Pointer to TF parameters
    VOID*                         pLMCParameters;               ///< Pointer to TF LMC parameters
    VOID*                         pInterpolationData;           ///< input memory  for chromatix interpolation data
    VOID*                         pUnpackedfield;               ///< input memory Unpacked filed
    VOID*                         pNCChromatix;                 ///< Chromatix Input pointer
    BOOL                          resetReferenceInput;          ///< Reset reference input during failure
    BOOL                          enable_mfsr;                  ///< Enable Mfsr
    UINT32                        maxSupportedPassesForUsecase; ///< Maximum supported passes for usecase
    UINT32                        tfTestMode;                   ///< TF test mode
    UINT32                        mfmaxFrameNum;                ///< MFNR/MFSR blending frame number
    BOOL                          enableNRAdjust;               ///< Enable NR adjust flag from Chromatix
    VOID*                         pGTMInfo;                     ///< Pointer to GTM info from IFE/BPS
    NRAdjust_TFData*              pNRadjustPrev;                ///< Pointer to previous parameters of noise adjustment
    NRAdjust_TFData*              pNRadjustCurr;                ///< Pointer to current parameters of noise adjustment
    nradj_1_0_0::chromatix_nradj10Type* pNRAjust10Chromatix;    ///< Input Chromatix tunning data for NR adjust
    BOOL                          runExtraPass;                 ///< Flag to determine if extrapass needs to be run
    BOOL                          runExtraPassWithBlend;        ///< Flag to determine if extrapass with blending needed
    UINT8                         extraPassBlendFactor;         ///< Extra pass blend factor
    NRMConfigData                 nrmCfgData;                   ///< NRM config data
    UINT8                         isDmmEnabled;                 ///< Flag to indicate DMM is enabled or disabled
    BOOL                          validTemporalData;            ///< is valid temporal data or not
};

/// @brief Input Data to TF221 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct TF221InputData
{
    VOID*                         pHWSetting;                   ///< Pointer to the HW Setting Object
    tf_2_2_1::chromatix_tf22Type* pChromatix;                   ///< Chromatix data for TF221 module
    BOOL                          moduleEnable;                 ///< Module enable flag
    BOOL                          bypassMode;                   ///< Bypass ANR and TF
    BOOL                          prevStateEnable;              ///< Previous enable flag
    FLOAT                         upscalingFactorMFSR;          ///< MFSR upscaling factor
    UINT32                        fullPassIcaOutputFrameWidth;  ///< Full Pass ICA Output Frame width
    UINT32                        fullPassIcaOutputFrameHeight; ///< Full Pass ICA Ouput Frame Height
    NcLibImageSize                cmusOutDims[4];               ///< cmus out dimensions for catmap
    UINT32                        multiFrameSpatialWeightLumaQ8;///< Multi Frame Spatial Weight Luma
    UINT32                        multiFrameSpatialWeightChromaQ8;///< Multi Frame Spatial Weight Chroma
    UINT32                        maxUsedPasses;                ///< Maximum passes used in the request
    UINT32                        frameNum;                     ///< Current frame number
    UINT32                        mfFrameNum;                   ///< MFNR/MFSR blending frame number
    UINT32                        numOfFrames;                  ///< Number of frames for MFNR/MFSR use case
    UINT32                        perspectiveConfidence;        ///< Transform confidence
    UINT32                        digitalZoomStartX;            ///< Digital zoom horizontal start offset
    UINT32                        digitalZoomStartY;            ///< Digital zoom vertical start offset
    UINT8                         hasTFRefInput;                ///< 1: has reference input, 0: no reference input
    UINT8                         isDigitalZoomEnabled;         ///< 1: digital zoom enable, 0: disable
    UINT8                         useCase;                      ///< UseCase: Video, Still
    UINT8                         configMF;                     ///< Multiframe Config: Prefilter or Temporal
    VOID*                         pWarpGeometriesOutput;        ///< Pointer to Warp Geometries Output Structure
    VOID*                         pRefinementParameters;        ///< Pointer to refinement parameters
    VOID*                         pTFParameters;                ///< Pointer to TF parameters
    VOID*                         pLMCParameters;               ///< Pointer to TF LMC parameters
    VOID*                         pInterpolationData;           ///< input memory  for chromatix interpolation data
    VOID*                         pUnpackedfield;               ///< input memory Unpacked filed
    VOID*                         pNCChromatix;                 ///< Chromatix Input pointer
    BOOL                          resetReferenceInput;          ///< Reset reference input during failure
    BOOL                          enable_mfsr;                  ///< Enable Mfsr
    UINT32                        maxSupportedPassesForUsecase; ///< Maximum supported passes for usecase
    UINT32                        tfTestMode;                   ///< TF test mode
    UINT32                        mfmaxFrameNum;                ///< MFNR/MFSR blending frame number
    BOOL                          enableNRAdjust;               ///< Enable NR adjust flag from Chromatix
    VOID*                         pGTMInfo;                     ///< Pointer to GTM info from IFE/BPS
    NRAdjust_TFData*              pNRadjustPrev;                ///< Pointer to previous parameters of noise adjustment
    NRAdjust_TFData*              pNRadjustCurr;                ///< Pointer to current parameters of noise adjustment
    nradj_1_0_0::chromatix_nradj10Type* pNRAjust10Chromatix;    ///< Input Chromatix tunning data for NR adjust
    BOOL                          runExtraPass;                 ///< Flag to determine if extrapass needs to be run
    BOOL                          runExtraPassWithBlend;        ///< Flag to determine if extrapass with blending needed
    UINT8                         extraPassBlendFactor;         ///< Extra pass blend factor
    NRMConfigData                 nrmCfgData;                   ///< NRM config data
    UINT8                         isDmmEnabled;                 ///< Flag to indicate DMM is enabled or disabled
    BOOL                          aIEnable;                     ///< To enable AI modifiers
    UINT32                        final_DAS;                    ///< Dynamic AI strength
    UINT32                        chipsetVersion;               ///< Titan version
    VOID*                         pRegPass;                     ///< ANR Registers
    BOOL                          validTemporalData;            ///< is valid temporal data or not
    BOOL                          isBPSEnabled;                 ///< is BPS enabled or not from Pipeline
    BOOL                          isTFEEnabled;                 ///< is TFE enabled or not from Pipeline
};

/// @brief TF211 Module Pass Data
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct TF211ModPassData
{
    tf_2_1_1::mod_tf21_pass_dataType mod_tf21_pass_data[4];
};

/// @brief TF221 Module Pass Data
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct TF221ModPassData
{
    tf_2_2_1::mod_tf22_pass_dataType mod_tf22_pass_data[4];
};

/// @brief TF231 Module Pass Data
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct TF231ModPassData
{
    tf_2_3_1::mod_tf23_pass_dataType mod_tf23_pass_data[4];
};

/// @brief Input Data to TF23 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct TF231InputData
{
    VOID*                         pHWSetting;                   ///< Pointer to the HW Setting Object
    tf_2_3_1::chromatix_tf23Type* pChromatix;                   ///< Chromatix data for TF10 module
    BOOL                          moduleEnable;                 ///< Module enable flag
    BOOL                          bypassMode;                   ///< Bypass ANR and TF
    BOOL                          prevStateEnable;              ///< Previous enable flag
    FLOAT                         upscalingFactorMFSR;          ///< MFSR upscaling factor
    UINT32                        fullPassIcaOutputFrameWidth;  ///< Full Pass ICA Output Frame width
    UINT32                        fullPassIcaOutputFrameHeight; ///< Full Pass ICA Ouput Frame Height
    NcLibImageSize                cmusOutDims[4];               ///< cmus out dimensions for catmap
    UINT32                        multiFrameSpatialWeightLumaQ8;///< Multi Frame Spatial Weight Luma
    UINT32                        multiFrameSpatialWeightChromaQ8;///< Multi Frame Spatial Weight Chroma
    UINT32                        maxUsedPasses;                ///< Maximum passes used in the request
    UINT32                        frameNum;                     ///< Current frame number
    UINT32                        mfFrameNum;                   ///< MFNR/MFSR blending frame number
    UINT32                        mfmaxFrameNum;                   ///< MFNR/MFSR blending frame number
    UINT32                        numOfFrames;                  ///< Number of frames for MFNR/MFSR use case
    UINT32                        perspectiveConfidence;        ///< Transform confidence
    UINT32                        digitalZoomStartX;            ///< Digital zoom horizontal start offset
    UINT32                        digitalZoomStartY;            ///< Digital zoom vertical start offset
    UINT8                         hasTFRefInput;                ///< 1: has reference input, 0: no reference input
    UINT8                         isDigitalZoomEnabled;         ///< 1: digital zoom enable, 0: disable
    UINT8                         useCase;                      ///< UseCase: Video, Still
    UINT8                         configMF;                     ///< Multiframe Config: Prefilter or Temporal
    VOID*                         pWarpGeometriesOutput;        ///< Pointer to Warp Geometries Output Structure
    VOID*                         pRefinementParameters;        ///< Pointer to refinement parameters
    VOID*                         pTFParameters;                ///< Pointer to TF parameters
    VOID*                         pLMCParameters;               ///< Pointer to TF LMC parameters
    VOID*                         pInterpolationData;           ///< input memory  for chromatix interpolation data
    VOID*                         pUnpackedfield;               ///< input memory Unpacked filed
    VOID*                         pNCChromatix;                 ///< Chromatix Input pointer
    VOID*                         pTempDeblurBuffers;           ///< TempDeblurBuffers
    BOOL                          resetReferenceInput;          ///< Reset reference input during failure
    BOOL                          enable_mfsr;                  ///< Enable Mfsr
    UINT32                        maxSupportedPassesForUsecase; ///< Maximum supported passes for usecase
    UINT32                        tfTestMode;                   ///< TF test mode
    BOOL                          enableNRAdjust;               ///< Enable NR adjust flag from Chromatix
    VOID*                         pGTMInfo;                     ///< Pointer to GTM info from IFE/BPS
    NRAdjust_TFData*              pNRadjustPrev;                ///< Pointer to previous parameters of noise adjustment
    NRAdjust_TFData*              pNRadjustCurr;                ///< Pointer to current parameters of noise adjustment
    nradj_1_0_0::chromatix_nradj10Type* pNRAjust10Chromatix;    ///< Input Chromatix tunning data for NR adjust
    BOOL                          runExtraPass;                 ///< Flag to determine if extrapass needs to be run
    BOOL                          runExtraPassWithBlend;        ///< Flag to determine if extrapass with blending needed
    UINT8                         extraPassBlendFactor;         ///< Extra pass blend factor
    NRMConfigData                 nrmCfgData;                   ///< NRM config data
    VOID*                         pNRM11InterpolationData;      ///< Pointer to NRM
    VOID*                         pNRM11ReserveData;            ///< Pointer to NRM reserve data
    BOOL                          aIEnable;                     ///< To enable AI modifiers
    BOOL                          isDmmEnabled;                 ///< DMM enable flag
    UINT32                        final_DAS;                    ///< Dynamic AI strength
    UINT32                        chipsetVersion;               ///< Titan version
    VOID*                         pRegPass;                     ///< TF Registers
    UINT32                        eisInputWidth;                ///< EIS input width (filled by QIS)
    UINT32                        eisInputHeight;               ///< EIS input height (filled by QIS)
    BOOL                          validTemporalData;            ///< is valid temporal data or not
    VOID*                         pOnlineTuningSetting;         ///< OnlineTuningSettings
};
/// @brief TF221 module unpacked data
// NOWHINE NC004c: Share code with system team
struct TF221UnpackedField
{
    AIMapDecode101UnpackedField modifier[4];    ///< AI decoder modifier
};

/// @brief Output Data to TF221
// NOWHINE NC004c: Shared file with system team so uses non-CamX file naming
struct TF221OutputData
{
    UINT32*              pDMIDataPtr;              ///< Pointer to the DMI table
    TF221UnpackedField*  pUnpackedRegisterData;    ///< ANR141 data
};

/// @brief TF231 module unpacked data
// NOWHINE NC004c: Share code with system team
struct TF231UnpackedField
{
    AIMapDecode101UnpackedField modifier[4];    ///< AI decoder modifier
};

/// @brief Output Data to TF221
// NOWHINE NC004c: Shared file with system team so uses non-CamX file naming
struct TF231OutputData
{
    UINT32*              pDMIDataPtr;              ///< Pointer to the DMI table
    TF231UnpackedField*  pUnpackedRegisterData;    ///< TF231 data
};

/// @brief Input Data ICA IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct ICAInputData
{
    VOID*                            pHWSetting;                          ///< Pointer to the HW Setting Object
    UINT32                           titanVersion;                        ///< titan version
    UINT32                           hwVersion;                           ///< hardware version
    UINT32                           icaVersion;                          ///< ICA version
    UINT32                           instanceID;                          ///< instance ID
    UINT32                           opticalCenterX;                      ///< optical center X
    UINT32                           opticalCenterY;                      ///< optical center Y
    UINT64                           frameNum;                            ///< frame number
    UINT                             IPEPath;                             ///< IPE path indicating input or reference.
    UINT                             configMode;                          ///< ICA Configuration Mode
    UINT                             ICAIntransformConfidence;            ///< Transform Confidence
    UINT                             ICAReftransformConfidence;           ///< Transform Confidence
    BOOL                             byPassAlignmentMatrixAdjustement;    ///< Flag to byPass Alignment Matrix Adjustement
    BOOL                             mctfEis;                             ///< Enable mctf and eis together
    ConfigICAMode                    ICAMode;                             ///< ICA mode
    BOOL                             dumpICAOut;                          ///< Dump for ICA transforms
    BOOL                             isGridFromChromatixEnabled;          ///< Flag to check if grid from chromatix is enabled
    FLOAT                            luxIndex;                            ///< Input trigger value:  Lux index
    FLOAT                            digitalGain;                         ///< Input trigger value:  Digital Gain Value
    FLOAT                            lensZoomRatio;                       ///< Lens Zoom ratio
    FLOAT                            lensPosition;                        ///< Lens Position
    struct FDData*                   pFDData;                             ///< Pointer to FD Data
    struct _ImageDimensions*         pImageDimensions;                    ///< Input dimension
    struct _ImageDimensions*         pMarginDimensions;                   ///< Margin related dimension
    struct _ImageDimensions*         pFullImageDimensions;                ///< Full Input Image dimension
    struct _WindowRegion*            pZoomWindow;                         ///< Zoom Window
    struct _WindowRegion*            pIFEZoomWindow;                      ///< IFE Zoom Window
    WindowRegionFl*                  pEISCropFOV;                         ///< EIS output crop FOV
    VOID*                            pNCChromatix;                        ///< Chromatix pointer required for NCLib
    VOID*                            pWarpData;                           ///< ICA Reg Pointer
    VOID*                            pLdcChromatix;                       ///< LDC Chromatix pointer
    VOID*                            pNCRegData;                          ///< ICA Reg Pointer
    VOID*                            pLmcParams680;                       ///< LMC parameters
    VOID*                            pCurrICAInData;                      ///< ICA input current frame Data
    VOID*                            pPrevICAInData;                      ///< ICA input previous frame Data
    VOID*                            pCurrICAInStabData;                  ///< ICA input stabilize current frame Data
    VOID*                            pPrevICAInStabData;                  ///< ICA input previous stabilize frame Data
    VOID*                            pCurWarpAssistStabData;              ///< Current stabilize Warp assist data
    VOID*                            pPrevWarpAssistStabData;             ///< Previous stabilize Warp assist data
    VOID*                            pCurrICARefData;                     ///< ICA reference current frame Data
    VOID*                            pAlignmentFusionInputData;           ///< MCTF alignement fusion input data
    VOID*                            pAlignmentFusionOutputData;          ///< MCTF alignement fusion output data
    VOID*                            pICATempWarpData;                    ///< ICA temp warp filled by ica setting
    VOID*                            pWarpGeomOut;                        ///< Warp Geometry Output buffer pointer
    VOID*                            pInterpolationParamters;             ///< Interpolation Parameters
    VOID*                            pIcaInterpolationData;               ///< input memory for interpolation data
    VOID*                            pInterpolationData;                  ///< input memory for interpolation data
    VOID*                            pLdcInterpolationData;               ///< input memory for interpolation data
    VOID*                            pChromatix;                          ///< Input Chromatix tunning data
    VOID*                            pIcaGeolibInputData;                 ///< Input data for geolib
    VOID*                            pCVPICAIntermediateBuffer;           ///< Intermediate buffer used for cvp ica calculation
    NcLibWarpImageDomain             imageMCTFAlignmentMatrixDomain;      ///< Image MCTF alignment domain
    NcLibWarpImageDomain             gyroMCTFAlignmentMatrixDomain;       ///< Gyro MCTF alignment domain
    NcLibWarpImageDomain             faceDetectionDomain;                 ///< Face detection domain
    NcLibIcaGrid*                    pNCChromatixGrid;                    ///< Chromatix grids
    NcLibIcaContext*                 pNcLibIcaContext;                    ///< NcLib ICA Context for LMC Params
    BOOL                             gmoStatsCalcNeeded;                  ///< Flag for whether GMO statics need calculation
    VOID*                            pLMCParameters;                      ///< Pointer to ICA LMC parameters
    VOID*                            pIcaGeoPassParameters;               ///< ICA GeoPass Parameters
    VOID*                            pIcaGeoParam;                        ///< ICA Geo Params
    VOID*                            pGeoifeconfig;                       ///< grid resampling params
    UINT32                           alignementMode;                      ///< Indicate alignement mode (DME/DMM)
    VOID*                            pICAScratchWarpData;                 ///< ICA temp warp filled by ica setting
    NCLIB_YInterpolationMode         YInterpolationModeMap;               ///< Indication that input is CatMap or DepthMap
    const CHAR*                      pNodeIdentifierString;               ///< Node identifier String
    BOOL                             isAlignTransformConvToDistoretd;     ///< indicate if convert DME alignment to distorted
    VOID*                            pLdcLocalWarpDataOut;                ///< for resampled LDC grid
    // needed for sim alignment
    UINT                             oPEPath;                      ///< OPE path indicating input or reference.
    BOOL                             isCatMap;                     ///< to check if input is a catmap
    NcLibWindowRegion                ldcFOVDistWindow;             ///< LDC Distorted FOV Window
    NcLibWindowRegion                ldcFOVUndistWindow;           ///< LDC UnDistorted FOV Window
    VOID*                            pCurWarpAssistData;           ///< Current Warp assist data
    VOID*                            pPrevWarpAssistData;          ///< Current Warp assist data
    VOID*                            pIcaGeoParameters;            ///< pICA geo pass parameters
};

/// @brief Input Data ICA401 IQ Chromatix
// NOWHINE NC004c: Share code with system team
struct ICA401InputData
{
    ica_4_0_1::chromatix_ica40Type* pChromatix;   ///< Pointer to ica40 chromatix data
};

/// @brief Input Data ICA411 IQ Chromatix
// NOWHINE NC004c: Share code with system team
struct ICA411InputData
{
    ica_4_1_1::chromatix_ica41Type* pChromatix;   ///< Pointer to ica41 chromatix data
};

/// @brief Input Data ICA431 IQ Chromatix
// NOWHINE NC004c: Share code with system team
struct ICA431InputData
{
    ica_4_3_1::chromatix_ica43Type* pChromatix;   ///< Pointer to ica43 chromatix data
};

/// @brief Input Data for CMUS calculation
// NOWHINE NC004c: Share code with system team
struct CMUS101InputData
{
    VOID*                               pHWSetting;                   ///< Pointer to the HW Setting Object
    BOOL                                aiEnable;                     ///< AI camera enable
    UINT32                              numPasses;                    ///< number of pass
    UINT32                              upscaleRatio[PASS_NAME_MAX];  ///< catmap upscale ratio 1x, 2x, 4x
};

/// @brief Input Data to ANR10 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct ANR10InputData
{
    // Need to modify it as ANR Input data.
    VOID*                               pHWSetting;                   ///< Pointer to the HW Setting Object
    anr_1_0_0::chromatix_anr10Type*     pChromatix;                   ///< Chromatix data for ANR10 module
    nradj_1_0_0::chromatix_nradj10Type* pNRAjust10Chromatix;          ///< Input Chromatix tunning data for NR adjust
    FLOAT                               lensPosition;                 ///< Input trigger value:  Lens position
    FLOAT                               lensZoom;                     ///< Input trigger value:  Lens Zoom
    FLOAT                               postScaleRatio;               ///< Input trigger value:  Post scale ratio
    FLOAT                               preScaleRatio;                ///< Input trigger value:  Pre scale ratio
    FLOAT                               DRCGain;                      ///< Input trigger value:  drcGain
    FLOAT                               exposureTime;                 ///< Input trigger value:  exposure time
    FLOAT                               exposureGainRatio;            ///< Input trigger value:  exposure gain ratio
    FLOAT                               AECSensitivity;               ///< Input trigger value:  AEC sensitivity data
    FLOAT                               luxIndex;                     ///< Input trigger value:  Lux index
    FLOAT                               AECGain;                      ///< Input trigger value:  AEC Gain Value
    FLOAT                               CCTTrigger;                   ///< Input trigger value:  AWB colorTemperature
    VOID*                               pWarpGeometriesOutput;        ///< Pointer to Warp Geometries Output Structure
    UINT32                              numPasses;                    ///< Pass number
    UINT64                              frameNum;                     ///< Current frame number
    UINT32                              bitWidth;                     ///< format bitwidth
    UINT32                              opticalCenterX;               ///< Optical center X
    UINT32                              opticalCenterY;               ///< Optical Center Y
    struct FDData*                      pFDData;                      ///< Pointer to FD Data
    struct _ImageDimensions*            pImageDimensions;             ///< Input dimension
    struct _ImageDimensions*            pMarginDimensions;            ///< Margin related dimension
    VOID*                               pANRParameters;               ///< Pointer to ANR parameters
    VOID*                               pInterpolationData;           ///< input memory  for chromatix interpolation data
    VOID*                               pNCChromatix;                 ///< Chromatix Input pointer
    BOOL                                validateANRSettings;          ///< Validate ANR register settings
    BOOL                                realtimeFlag;                 ///< Validate ANR register settings
    UINT32                              maxSupportedPassesForUsecase; ///< Maximum supported passes for usecase
    BOOL                                enableNRAdjust;               ///< Enable NR adjust flag from Chromatix
    VOID*                               pGTMInfo;                     ///< Pointer to ANR parameters
    NRAdjust_ANRData*                   pNRadjustPrev;                ///< Pointer to previous parameters of noise adjustment
    NRAdjust_ANRData*                   pNRadjustCurr;                ///< Pointer to current parameters of noise adjustment
    NRMConfigData                       nrmCfgData;                   ///< NRM config data
    BOOL                                validTemporalData;            ///< is valid temporal data or not

    BOOL                                sliderEnable;                 ///< Slider Based tuning
    FLOAT                               luma_denoising_factor;        ///< Slider Based Tuning
    FLOAT                               chroma_denoising_factor;      ///< Slider Based Tuning
};

/// @brief Input Data to ANR12 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct ANR121InputData
{
    // Need to modify it as ANR Input data.
    VOID*                               pHWSetting;                   ///< Pointer to the HW Setting Object
    anr_1_2_1::chromatix_anr12Type*     pChromatix;                   ///< Chromatix data for ANR10 module
    nradj_1_1_0::chromatix_nradj11Type* pNRAjust10Chromatix;          ///< Input Chromatix tunning data for NR adjust
    FLOAT                               lensPosition;                 ///< Input trigger value:  Lens position
    FLOAT                               lensZoom;                     ///< Input trigger value:  Lens Zoom
    FLOAT                               postScaleRatio;               ///< Input trigger value:  Post scale ratio
    FLOAT                               preScaleRatio;                ///< Input trigger value:  Pre scale ratio
    FLOAT                               DRCGain;                      ///< Input trigger value:  drcGain
    FLOAT                               exposureTime;                 ///< Input trigger value:  exposure time
    FLOAT                               exposureGainRatio;            ///< Input trigger value:  exposure gain ratio
    FLOAT                               AECSensitivity;               ///< Input trigger value:  AEC sensitivity data
    FLOAT                               luxIndex;                     ///< Input trigger value:  Lux index
    FLOAT                               AECGain;                      ///< Input trigger value:  AEC Gain Value
    FLOAT                               CCTTrigger;                   ///< Input trigger value:  AWB colorTemperature
    VOID*                               pWarpGeometriesOutput;        ///< Pointer to Warp Geometries Output Structure
    UINT32                              numPasses;                    ///< Pass number
    UINT64                              frameNum;                     ///< Current frame number
    UINT32                              bitWidth;                     ///< format bitwidth
    UINT32                              opticalCenterX;               ///< Optical center X
    UINT32                              opticalCenterY;               ///< Optical Center Y
    struct FDData*                      pFDData;                      ///< Pointer to FD Data
    struct _ImageDimensions*            pImageDimensions;             ///< Input dimension
    struct _ImageDimensions*            pMarginDimensions;            ///< Margin related dimension
    VOID*                               pANRParameters;               ///< Pointer to ANR parameters
    VOID*                               pInterpolationData;           ///< input memory  for chromatix interpolation data
    VOID*                               pUnpackedfield;               ///< input memory Unpacked filed
    VOID*                               pNCChromatix;                 ///< Chromatix Input pointer
    BOOL                                validateANRSettings;          ///< Validate ANR register settings
    BOOL                                realtimeFlag;                 ///< Validate ANR register settings
    UINT32                              maxSupportedPassesForUsecase; ///< Maximum supported passes for usecase
    BOOL                                enableNRAdjust;               ///< Enable NR adjust flag from Chromatix
    VOID*                               pGTMInfo;                     ///< Pointer to ANR parameters
    NRAdjust_ANRData*                   pNRadjustPrev;                ///< Pointer to previous parameters of noise adjustment
    NRAdjust_ANRData*                   pNRadjustCurr;                ///< Pointer to current parameters of noise adjustment
    NRMConfigData                       nrmCfgData;                   ///< NRM config data
    UINT32                              chipsetVersion;               ///< Titan version
    BOOL                                isBPSEnabled;                 ///< is BPS enabled or not from Pipeline
    BOOL                                isTFEEnabled;                 ///< is TFE enabled or not from Pipeline
    BOOL                                validTemporalData;            ///< is valid temporal data or not
};

// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct GCE121InputData
{
    gce_1_2_1::chromatix_gce12Type*         pChromatix;             ///<
    VOID*                                   pInterpolationData;     ///< input memory for interpolation data
};

/// @brief ANR141 module unpacked data
// NOWHINE NC004c: Share code with system team
struct ANR141UnpackedField
{
    AIMapDecode101UnpackedField modifier[3];    ///< AI decoder modifier
};

/// @brief Output Data to ANR141
// NOWHINE NC004c: Share code with system team
struct ANR141OutputData
{
    UINT32*               pDMIDataPtr;              ///< Pointer to the DMI table
    ANR141UnpackedField*  pUnpackedRegisterData;    ///< ANR141 data
};

/// @brief ANR121 Module Pass Data
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct ANR121ModPassData
{
    anr_1_2_1::mod_anr12_pass_dataType mod_anr12_pass_data[4];
};

/// @brief Input Data to ANR14 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct ANR141InputData
{
    // Need to modify it as ANR Input data.
    VOID*                               pHWSetting;                   ///< Pointer to the HW Setting Object
    anr_1_4_1::chromatix_anr14Type*     pChromatix;                   ///< Chromatix data for ANR10 module
    nradj_1_0_0::chromatix_nradj10Type* pNRAjust10Chromatix;          ///< Input Chromatix tunning data for NR adjust
    FLOAT                               lensPosition;                 ///< Input trigger value:  Lens position
    FLOAT                               lensZoom;                     ///< Input trigger value:  Lens Zoom
    FLOAT                               postScaleRatio;               ///< Input trigger value:  Post scale ratio
    FLOAT                               preScaleRatio;                ///< Input trigger value:  Pre scale ratio
    FLOAT                               DRCGain;                      ///< Input trigger value:  drcGain
    FLOAT                               exposureTime;                 ///< Input trigger value:  exposure time
    FLOAT                               exposureGainRatio;            ///< Input trigger value:  exposure gain ratio
    FLOAT                               AECSensitivity;               ///< Input trigger value:  AEC sensitivity data
    FLOAT                               luxIndex;                     ///< Input trigger value:  Lux index
    FLOAT                               AECGain;                      ///< Input trigger value:  AEC Gain Value
    FLOAT                               CCTTrigger;                   ///< Input trigger value:  AWB colorTemperature
    VOID*                               pWarpGeometriesOutput;        ///< Pointer to Warp Geometries Output Structure
    UINT32                              numPasses;                    ///< Pass number
    UINT64                              frameNum;                     ///< Current frame number
    UINT32                              bitWidth;                     ///< format bitwidth
    UINT32                              opticalCenterX;               ///< Optical center X
    UINT32                              opticalCenterY;               ///< Optical Center Y
    struct FDData*                      pFDData;                      ///< Pointer to FD Data
    struct _ImageDimensions*            pImageDimensions;             ///< Input dimension
    struct _ImageDimensions*            pMarginDimensions;            ///< Margin related dimension
    NcLibImageSize                      cmusOutDims[4];               ///< cmus out dimensions for catmap
    VOID*                               pANRParameters;               ///< Pointer to ANR parameters
    ISPVersion                          chipsetVersion;               ///< For chipset version
    VOID*                               pInterpolationData;           ///< input memory  for chromatix interpolation data
    VOID*                               pUnpackedfield;               ///< input memory Unpacked filed
    VOID*                               pNCChromatix;                 ///< Chromatix Input pointer
    BOOL                                validateANRSettings;          ///< Validate ANR register settings
    BOOL                                realtimeFlag;                 ///< Validate ANR register settings
    UINT32                              maxSupportedPassesForUsecase; ///< Maximum supported passes for usecase
    BOOL                                enableNRAdjust;               ///< Enable NR adjust flag from Chromatix
    VOID*                               pGTMInfo;                     ///< Pointer to ANR parameters
    NRAdjust_ANRData*                   pNRadjustPrev;                ///< Pointer to previous parameters of noise adjustment
    NRAdjust_ANRData*                   pNRadjustCurr;                ///< Pointer to current parameters of noise adjustment
    NRMConfigData                       nrmCfgData;                   ///< NRM config data
    BOOL                                aIEnable;                     ///< To enable AI modifiers
    UINT8                               final_DAS;                    ///< Dynamic AI strength
    VOID*                               pRegPass;                     ///< ANR Registers
    BOOL                                validTemporalData;            ///< is valid temporal data or not
    FLOAT                               MACMotionAdjustScale1[2];     ///< SFE HDR MAC motion thresh old1 adjust scale
    FLOAT                               MACMotionAdjustScale2[2];     ///< SFE HDR MAC motion thresh old2 adjust scale
    VOID*                               pOnlineTuningSetting;         ///< OnlineTuningSettings
    UseCaseMode                         useCase;                      ///< useCase
    BOOL                                isBPSEnabled;                 ///< is BPS enabled or not from Pipeline
    BOOL                                isTFEEnabled;                 ///< is TFE enabled or not from Pipeline
};

/// @brief ANR141 Module Pass Data
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct ANR141ModPassData
{
    anr_1_4_1::mod_anr14_pass_dataType mod_anr14_pass_data[4];
};

/// @brief Input Data to ANR101 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct ANR101InputData
{
    // Need to modify it as ANR Input data.
    VOID*                               pHWSetting;                   ///< Pointer to the HW Setting Object
    anr_1_0_1::chromatix_anr10Type*     pChromatix;                   ///< Chromatix data for ANR10 module
    nradj_1_0_0::chromatix_nradj10Type* pNRAjust10Chromatix;          ///< Input Chromatix tunning data for NR adjust
    FLOAT                               lensPosition;                 ///< Input trigger value:  Lens position
    FLOAT                               lensZoom;                     ///< Input trigger value:  Lens Zoom
    FLOAT                               postScaleRatio;               ///< Input trigger value:  Post scale ratio
    FLOAT                               preScaleRatio;                ///< Input trigger value:  Pre scale ratio
    FLOAT                               DRCGain;                      ///< Input trigger value:  drcGain
    FLOAT                               exposureTime;                 ///< Input trigger value:  exposure time
    FLOAT                               exposureGainRatio;            ///< Input trigger value:  exposure gain ratio
    FLOAT                               AECSensitivity;               ///< Input trigger value:  AEC sensitivity data
    FLOAT                               luxIndex;                     ///< Input trigger value:  Lux index
    FLOAT                               AECGain;                      ///< Input trigger value:  AEC Gain Value
    FLOAT                               CCTTrigger;                   ///< Input trigger value:  AWB colorTemperature
    VOID*                               pWarpGeometriesOutput;        ///< Pointer to Warp Geometries Output Structure
    UINT32                              numPasses;                    ///< Pass number
    UINT64                              frameNum;                     ///< Current frame number
    UINT32                              bitWidth;                     ///< format bitwidth
    UINT32                              opticalCenterX;               ///< Optical center X
    UINT32                              opticalCenterY;               ///< Optical Center Y
    struct FDData*                      pFDData;                      ///< Pointer to FD Data
    struct _ImageDimensions*            pImageDimensions;             ///< Input dimension
    struct _ImageDimensions*            pMarginDimensions;            ///< Margin related dimension
    VOID*                               pANRParameters;               ///< Pointer to ANR parameters
    VOID*                               pInterpolationData;           ///< input memory  for chromatix interpolation data
    VOID*                               pNCChromatix;                 ///< Chromatix Input pointer
    BOOL                                validateANRSettings;          ///< Validate ANR register settings
    BOOL                                realtimeFlag;                 ///< Validate ANR register settings
    UINT32                              maxSupportedPassesForUsecase; ///< Maximum supported passes for usecase
    BOOL                                enableNRAdjust;               ///< Enable NR adjust flag from Chromatix
    VOID*                               pGTMInfo;                     ///< Pointer to ANR parameters
    NRAdjust_ANRData*                   pNRadjustPrev;                ///< Pointer to previous parameters of noise adjustment
    NRAdjust_ANRData*                   pNRadjustCurr;                ///< Pointer to current parameters of noise adjustment
    NRMConfigData                       nrmCfgData;                   ///< NRM config data
    BOOL                                validTemporalData;            ///< is valid temporal data or not
    UINT32                              chipsetVersion;               ///< Titan version
    FLOAT                               MACMotionAdjustScale1[2];     ///< SFE HDR MAC motion threshold1 adjust scale
    FLOAT                               MACMotionAdjustScale2[2];     ///< SFE HDR MAC motion threshold2 adjust scale
    BOOL                                sliderEnable;                 ///< Slider Based tuning
    FLOAT                               luma_denoising_factor;        ///< Slider Based Tuning
    FLOAT                               chroma_denoising_factor;      ///< Slider Based Tuning
};

/// @brief ANR101 Module Pass Data
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct ANR101ModPassData
{
    anr_1_0_1::mod_anr10_pass_dataType mod_anr10_pass_data[4];
};

/// @brief Input Data to LCAC11 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct LCAC11InputData
{
    VOID*                             pHWSetting;              ///< Pointer to the HW Setting Object
    lcac_1_1_0::chromatix_lcac11Type* pChromatix;              ///< Chromatix data for lcac11 module
    FLOAT                             lensPosition;            ///< Input trigger value:  Lens position
    FLOAT                             lensZoom;                ///< Input trigger value:  Lens Zoom
    UINT32                            imageWidth;              ///< Current Sensor Image Output Width
    UINT32                            imageHeight;             ///< Current Sensor Image Output Height
    UINT16                            pipelineId;              ///< Pipeline Id
    UINT8                             bayerPattern;            ///< Bayer pattern
    BOOL                              isIFE;                   ///< boolean to differentiate between ife and bps
    NcLibImageSize*                   pMarginDimensions;       ///< Margin related dimension
    VOID*                             pLCACParameters;         ///< Pointer to ANR parameters
    VOID*                             pInterpolationData;      ///< input memory  for chromatix interpolation data
    VOID*                             pUnpackedfield;          ///< input memory Unpacked filed
    VOID*                             pNCChromatix;            ///< Chromatix Input pointer
    BOOL                              validateLCACSettings;    ///< Validate LCAC register settings
    UINT8                             LUTBankSel;              ///< Bank Select
};

/// @brief Input Data to LCAC111 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct LCAC111InputData
{
    VOID*                             pHWSetting;              ///< Pointer to the HW Setting Object
    lcac_1_1_1::chromatix_lcac11Type* pChromatix;              ///< Chromatix data for lcac11 module
    FLOAT                             lensPosition;            ///< Input trigger value:  Lens position
    FLOAT                             lensZoom;                ///< Input trigger value:  Lens Zoom
    UINT32                            imageWidth;              ///< Current Sensor Image Output Width
    UINT32                            imageHeight;             ///< Current Sensor Image Output Height
    UINT16                            pipelineId;              ///< Pipeline Id
    UINT8                             bayerPattern;            ///< Bayer pattern
    BOOL                              isIFE;                   ///< boolean to differentiate between ife and bps
    NcLibImageSize*                   pMarginDimensions;       ///< Margin related dimension
    VOID*                             pLCACParameters;         ///< Pointer to ANR parameters
    VOID*                             pInterpolationData;      ///< input memory  for chromatix interpolation data
    VOID*                             pUnpackedfield;          ///< input memory Unpacked filed
    VOID*                             pNCChromatix;            ///< Chromatix Input pointer
    BOOL                              validateLCACSettings;    ///< Validate LCAC register settings
    UINT8                             LUTBankSel;              ///< Bank Select
    VOID*                             pOnlineTuningSetting;    ///< OnlineTuningSettings
};

/// @brief Input Data to LTM13 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct LTM13InputData
{
    VOID*                           pHWSetting;                    ///< Pointer to the HW Setting Object
    ltm_1_3_0::chromatix_ltm13Type* pChromatix;                    ///< Input Chromatix tunning data
    UINT32                          imageWidth;                    ///< Current Sensor Image Output Width
    UINT32                          imageHeight;                   ///< Current Sensor Image Output Height
    FLOAT                           DRCGain;                       ///< Input trigger value: DRCGain
    FLOAT                           DRCGainDark;                   ///< Input trigger value: DRCGainDark
    FLOAT                           exposureTime;                  ///< Input trigger value: exporsure time
    FLOAT                           exposureGainRatio;             ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;                ///< Input trigger value: AEC sensitivity data
    FLOAT                           luxIndex;                      ///< Input trigger value: Lux index
    FLOAT                           exposureIndex;                 ///< Exposure Index, Same as Lux index for non ADRC cases
    FLOAT                           prevExposureIndex;             ///< Exposure Index of Previous Frame
    FLOAT                           realGain;                      ///< Input trigger value: Real Gain Value
    FLOAT                           ltmDarkBoostStrength;          ///< Input trigger value: Dark Boost Strength
    FLOAT                           ltmBrightSupressStrength;      ///< Input trigger value: Bright Supress Strength
    FLOAT                           ltmLceStrength;                ///< Input trigger value: Local Contrast Strength
    INT32*                          pGammaPrev;                    ///< Ptr to cached version of InverseGamma() input gamma
    INT32*                          pIGammaPrev;                   ///< Ptr to cached version of InverseGamma() output igamma
    FLOAT                           gammaOutput[65];               ///< Gamma ouput from gamma15 module
    ADRCData*                       pAdrcInputData;                ///< Pointer to the input data for adrc algo calculation.
    VOID*                           pInterpolationData;            ///< input memory for interpolation data
    FLOAT                           gamma15Output[257];            ///< Gamma output from gamma15 module
    ParsedHDRBHistStatsOutput*      pParsedHDRBHistStats;          ///< HDR BHIST stats
    ParsedHDRBEStatsOutput*         pParsedHDRBEStats;             ///< HDR BE stats
    FLOAT                           contrast;                      ///< Slider Based Tuning
};

/// @brief Input Data to LTM13 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct LTM131InputData
{
    VOID*                           pHWSetting;                    ///< Pointer to the HW Setting Object
    ltm_1_3_1::chromatix_ltm13Type* pChromatix;                    ///< Input Chromatix tunning data
    UINT32                          imageWidth;                    ///< Current Sensor Image Output Width
    UINT32                          imageHeight;                   ///< Current Sensor Image Output Height
    FLOAT                           DRCGain;                       ///< Input trigger value: DRCGain
    FLOAT                           DRCGainDark;                   ///< Input trigger value: DRCGainDark
    FLOAT                           exposureTime;                  ///< Input trigger value: exporsure time
    FLOAT                           exposureGainRatio;             ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;                ///< Input trigger value: AEC sensitivity data
    FLOAT                           luxIndex;                      ///< Input trigger value: Lux index
    FLOAT                           exposureIndex;                 ///< Exposure Index, Same as Lux index for non ADRC cases
    FLOAT                           prevExposureIndex;             ///< Exposure Index of Previous Frame
    FLOAT                           realGain;                      ///< Input trigger value: Real Gain Value
    FLOAT                           ltmDarkBoostStrength;          ///< Input trigger value: Dark Boost Strength
    FLOAT                           ltmBrightSupressStrength;      ///< Input trigger value: Bright Supress Strength
    FLOAT                           ltmLceStrength;                ///< Input trigger value: Local Contrast Strength
    BOOL                            LTM_data_collect_enable;       ///< DC enable
    INT16                           LTM_Dc_Pass;                   ///< DC pass
    INT32*                          pGammaPrev;                    ///< Ptr to cached version of InverseGamma() input gamma
    INT32*                          pIGammaPrev;                   ///< Ptr to cached version of InverseGamma() output igamma
    FLOAT                           gammaOutput[65];               ///< Gamma ouput from gamma15 module
    ADRCData*                       pAdrcInputData;                ///< Pointer to the input data for adrc algo calculation.
    VOID*                           pInterpolationData;            ///< input memory for interpolation data
    FLOAT                           gamma15Output[257];            ///< Gamma output from gamma15 module
    ParsedHDRBHistStatsOutput*      pParsedHDRBHistStats;          ///< HDR BHIST stats
    ParsedHDRBEStatsOutput*         pParsedHDRBEStats;             ///< HDR BE stats
    FLOAT                           contrast;                      ///< Slider Based Tuning
};
/// @brief Input Data to LTM14 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct LTM14InputData
{
    VOID*                           pHWSetting;                    ///< Pointer to the HW Setting Object
    ltm_1_4_0::chromatix_ltm14Type* pChromatix;                    ///< Input Chromatix tunning data
    UINT32                          imageWidth;                    ///< Current Sensor Image Output Width
    UINT32                          imageHeight;                   ///< Current Sensor Image Output Height
    FLOAT                           DRCGain;                       ///< Input trigger value: DRCGain
    FLOAT                           DRCGainDark;                   ///< Input trigger value: DRCGainDark
    FLOAT                           exposureTime;                  ///< Input trigger value: exporsure time
    FLOAT                           exposureGainRatio;             ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;                ///< Input trigger value: AEC sensitivity data
    FLOAT                           luxIndex;                      ///< Input trigger value: Lux index
    FLOAT                           exposureIndex;                 ///< Exposure Index, Same as Lux index for non ADRC cases
    FLOAT                           prevExposureIndex;             ///< Exposure Index of Previous Frame
    FLOAT                           realGain;                      ///< Input trigger value: Real Gain Value
    INT32*                          pGammaPrev;                    ///< Ptr to cached version of InverseGamma() input gamma
    INT32*                          pIGammaPrev;                   ///< Ptr to cached version of InverseGamma() output igamma
    FLOAT                           gammaOutput[65];               ///< Gamma ouput from gamma15 module
    ADRCData*                       pAdrcInputData;                ///< Pointer to the input data for adrc algo calculation.
    VOID*                           pInterpolationData;            ///< input memory for interpolation data
    UINT16                          first_pixel;                   ///< Pre-crop parameters
    UINT16                          last_pixel;                    ///< Pre-crop parameters
    UINT16                          first_line;                    ///< Pre-crop parameters
    UINT16                          last_line;                     ///< Pre-crop parameters
    BOOL                            LTM_data_collect_enable;       ///< DC enable
    INT16                           LTM_Dc_Pass;                   ///< DC pass
    BOOL                            tmc13Disable;                  ///< TMC13 Disable in case oif mfhdr
    FLOAT                           gamma15Output[257];            ///< Gamma output from gamma15 module
    ParsedHDRBHistStatsOutput*      pParsedHDRBHistStats;          ///< HDR BHIST stats
    ParsedHDRBEStatsOutput*         pParsedHDRBEStats;             ///< HDR BE stats
};

/// @brief Input Data to LTM141 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LTM141InputData
{
    VOID*                             pHWSetting;               ///< Pointer to the HW Setting Object
    ltm_1_4_1::chromatix_ltm14Type* pChromatix;                    ///< Input Chromatix tunning data
    UINT32                          imageWidth;                    ///< Current Sensor Image Output Width
    UINT32                          imageHeight;                   ///< Current Sensor Image Output Height
    FLOAT                           DRCGain;                       ///< Input trigger value: DRCGain
    FLOAT                           DRCGainDark;                   ///< Input trigger value: DRCGainDark
    FLOAT                           exposureTime;                  ///< Input trigger value: exporsure time
    FLOAT                           exposureGainRatio;             ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;                ///< Input trigger value: AEC sensitivity data
    FLOAT                           luxIndex;                      ///< Input trigger value: Lux index
    FLOAT                           exposureIndex;                 ///< Exposure Index, Same as Lux index for non ADRC cases
    FLOAT                           prevExposureIndex;             ///< Exposure Index of Previous Frame
    INT32*                          pGammaPrev;                    ///< Ptr to cached version of InverseGamma() input gamma
    INT32*                          pIGammaPrev;                   ///< Ptr to cached version of InverseGamma() output igamma
    FLOAT                           gammaOutput[65];               ///< Gamma ouput from Gamma151 module
    ADRCData*                       pAdrcInputData;                ///< Pointer to the input data for adrc algo calculation.
    VOID*                           pInterpolationData;            ///< input memory for interpolation data
    UINT16                          first_pixel;                   ///< Pre-crop parameters
    UINT16                          last_pixel;                    ///< Pre-crop parameters
    UINT16                          first_line;                    ///< Pre-crop parameters
    UINT16                          last_line;                     ///< Pre-crop parameters
    BOOL                            LTM_data_collect_enable;       ///< DC enable
    INT16                           LTM_Dc_Pass;                   ///< DC pass
    BOOL                            tmc13Disable;                  ///< TMC13 Disable in case oif mfhdr
    FLOAT                           gamma15Output[257];           ///< Gamma output from gamma15 module
    ParsedHDRBHistStatsOutput*      pParsedHDRBHistStats;          ///< HDR BHIST stats
    ParsedHDRBEStatsOutput*         pParsedHDRBEStats;             ///< HDR BE stats
};

/// @brief Input Data to BLTM101 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct BLTM101InputData
{
    VOID*                             pHWSetting;               ///< Pointer to the HW Setting Object
    bltm_1_0_1::chromatix_bltm10Type* pChromatix;               ///< Input Chromatix tunning data
    UINT32                            imageWidth;               ///< Current Sensor Image Output Width
    UINT32                            imageHeight;              ///< Current Sensor Image Output Height
    FLOAT                             luxIndex;                 ///< Input trigger value: Lux index
    FLOAT                             exposureIndex;            ///< Exposure Index, Same as Lux index for non ADRC cases
    FLOAT                             prevExposureIndex;        ///< Exposure Index of Previous Frame
    FLOAT                             AECGain;                  ///< Input trigger value: Real Gain Value
    INT32*                            pGammaPrev;               ///< Ptr to cached version of InverseGamma() input gamma
    INT32*                            pIGammaPrev;              ///< Ptr to cached version of InverseGamma() output igamma
    FLOAT                             gammaOutput[65];          ///< Gamma ouput from gamma15 module
    ADRCData*                         pAdrcInputData;           ///< Pointer to the input data for adrc algo calculation.
    VOID*                             pInterpolationData;       ///< input memory for interpolation data
    UINT16                            first_pixel;              ///< Pre-crop parameters
    UINT16                            last_pixel;               ///< Pre-crop parameters
    UINT16                            first_line;               ///< Pre-crop parameters
    UINT16                            last_line;                ///< Pre-crop parameters
    BOOL                              LTM_data_collect_enable;  ///< DC enable
    INT16                             LTM_Dc_Pass;              ///< DC pass
    BOOL                              disableIP;                ///< Flag to disable image process
    UINT8                             LUTBankSel;               ///< LUT bank need for this fram
    UINT32                            chipsetVersion;           ///< For chipset version
};


static const UINT16 OEMMaxTMCKnees = 64;

struct OEMTMCKneePoints
{
    UINT8   numberOfKneePoints;
    FLOAT   X[OEMMaxTMCKnees];
    FLOAT   Y[OEMMaxTMCKnees];
};

enum OEMTMCLookupTableType
{
    OEMBAYERGTM = 0,
    OEMBAYERLTM = 1,
    OEMRGBGTM = 2,
    OEMMAXLOOKUPTABLETYPE = 3
};

struct OEMTMCLookupTable
{
    OEMTMCLookupTableType  type;
    OEMTMCKneePoints       points;
};

struct OEMStatsTMCConfig
{
    UINT8           numOfTMCTables;
    UINT8           isChanged;
    OEMTMCLookupTable  lookupTable[OEMMAXLOOKUPTABLETYPE];
};

/// @brief Input Data to BLTM111 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct BLTM111InputData
{
    VOID*                           pHWSetting;                    ///< Pointer to the HW Setting Object
    bltm_1_1_1::chromatix_bltm11Type* pChromatix;                  ///< Input Chromatix tunning data
    UINT32                          imageWidth;                    ///< Current Sensor Image Output Width
    UINT32                          imageHeight;                   ///< Current Sensor Image Output Height
    UINT8                           bayerPattern;                  ///< Sensor bayer Pattern
    FLOAT                           luxIndex;                      ///< Input trigger value: Lux index
    FLOAT                           exposureIndex;                 ///< Exposure Index, Same as Lux index for non ADRC cases
    FLOAT                           prevExposureIndex;             ///< Exposure Index of Previous Frame
    ADRCData*                       pAdrcInputData;                ///< Pointer to the input data for adrc algo calculation.
    VOID*                           pInterpolationData;            ///< input memory for interpolation data
    UINT16                          first_pixel;                   ///< Pre-crop parameters
    UINT16                          last_pixel;                    ///< Pre-crop parameters
    UINT16                          first_line;                    ///< Pre-crop parameters
    UINT16                          last_line;                     ///< Pre-crop parameters
    BOOL                            LTM_data_collect_enable;       ///< DC enable
    INT16                           LTM_Dc_Pass;                   ///< DC pass
    UINT8                           LUTBankSel;                    ///< LUT bank need for this fram
    BOOL                            disableIP;                     ///< Flag to disable image process
    OEMStatsTMCConfig*              pOemTmcData;                   ///< OEM TMC Knee points
    VECTORFF                        trigger;                       ///< Trigger for all the modules

};

/// @brief Input Data to BLTM121 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct BLTM121InputData
{
    VOID*                             pHWSetting;               ///< Pointer to the HW Setting Object
    bltm_1_2_1::chromatix_bltm12Type* pChromatix;               ///< Input Chromatix tunning data
    UINT32                            imageWidth;               ///< Current Sensor Image Output Width
    UINT32                            imageHeight;              ///< Current Sensor Image Output Height
    FLOAT                             luxIndex;                 ///< Input trigger value: Lux index
    FLOAT                             exposureIndex;            ///< Exposure Index, Same as Lux index for non ADRC cases
    FLOAT                             prevExposureIndex;        ///< Exposure Index of Previous Frame
    FLOAT                             AECGain;                  ///< Input trigger value: Real Gain Value
    INT32*                            pGammaPrev;               ///< Ptr to cached version of InverseGamma() input gamma
    INT32*                            pIGammaPrev;              ///< Ptr to cached version of InverseGamma() output igamma
    FLOAT                             gammaOutput[65];          ///< Gamma ouput from gamma15 module
    ADRCData*                         pAdrcInputData;           ///< Pointer to the input data for adrc algo calculation.
    VOID*                             pInterpolationData;       ///< input memory for interpolation data
    UINT16                            first_pixel;              ///< Pre-crop parameters
    UINT16                            last_pixel;               ///< Pre-crop parameters
    UINT16                            first_line;               ///< Pre-crop parameters
    UINT16                            last_line;                ///< Pre-crop parameters
    BOOL                              LTM_data_collect_enable;  ///< DC enable
    INT16                             LTM_Dc_Pass;              ///< DC pass
    UINT8                             LUTBankSel;               ///< LUT bank need for this fram
    BOOL                              disableIP;                ///< Flag to disable image process
    FLOAT                             expAttenStart;            ///< Attenuation start
    FLOAT                             expAttenEnd;              ///< Attenuation end
    UINT32                            chipsetVersion;           ///< For chipset version
};

/// @brief Input Data to LTM15 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct LTM15InputData
{
    VOID*                           pHWSetting;                    ///< Pointer to the HW Setting Object
    ltm_1_5_0::chromatix_ltm15Type* pChromatix;                    ///< Input Chromatix tunning data
    UINT32                          imageWidth;                    ///< Current Sensor Image Output Width
    UINT32                          imageHeight;                   ///< Current Sensor Image Output Height
    FLOAT                           DRCGain;                       ///< Input trigger value: DRCGain
    FLOAT                           DRCGainDark;                   ///< Input trigger value: DRCGainDark
    FLOAT                           exposureTime;                  ///< Input trigger value: exporsure time
    FLOAT                           exposureGainRatio;             ///< Input trigger value: exporsure gain ratio
    FLOAT                           AECSensitivity;                ///< Input trigger value: AEC sensitivity data
    FLOAT                           luxIndex;                      ///< Input trigger value: Lux index
    FLOAT                           exposureIndex;                 ///< Exposure Index, Same as Lux index for non ADRC cases
    FLOAT                           prevExposureIndex;             ///< Exposure Index of Previous Frame
    FLOAT                           realGain;                      ///< Input trigger value: Real Gain Value
    INT32*                          pGammaPrev;                    ///< Ptr to cached version of InverseGamma() input gamma
    INT32*                          pIGammaPrev;                   ///< Ptr to cached version of InverseGamma() output igamma
    FLOAT                           gammaOutput[65];               ///< Gamma ouput from gamma15 module
    ADRCData*                       pAdrcInputData;                ///< Pointer to the input data for adrc algo calculation.
    VOID*                           pInterpolationData;            ///< input memory for interpolation data
    UINT16                          first_pixel;                   ///< Pre-crop parameters
    UINT16                          last_pixel;                    ///< Pre Crop Parameters
    UINT16                          first_line;                    ///< Pre Crop Parameters
    UINT16                          last_line;                     ///< Pre Crop Parameters
    BOOL                            LTM_data_collect_enable;       ///< LTM data collect enable
    INT16                           LTM_Dc_Pass;                   ///< LTM DC pass
};

/// @brief Input Data to LTM16 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LTM16InputData
{
    VOID*                           pHWSetting;                    ///< Pointer to the HW Setting Object
    ltm_1_6_0::chromatix_ltm16Type* pChromatix;                    ///< Input Chromatix tunning data
    UINT32                          imageWidth;                    ///< Current Sensor Image Output Width
    UINT32                          imageHeight;                   ///< Current Sensor Image Output Height
    FLOAT                           DRCGain;                       ///< Input trigger value: DRCGain
    FLOAT                           DRCGainDark;                   ///< Input trigger value: DRCGainDark
    FLOAT                           exposureTime;                  ///< Input trigger value: exporsure time
    FLOAT                           exposureGainRatio;             ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;                ///< Input trigger value: AEC sensitivity data
    FLOAT                           luxIndex;                      ///< Input trigger value: Lux index
    FLOAT                           exposureIndex;                 ///< Exposure Index, Same as Lux index for non ADRC cases
    FLOAT                           prevExposureIndex;             ///< Exposure Index of Previous Frame
    FLOAT                           realGain;                      ///< Input trigger value: Real Gain Value
    INT32*                          pGammaPrev;                    ///< Ptr to cached version of InverseGamma() input gamma
    INT32*                          pIGammaPrev;                   ///< Ptr to cached version of InverseGamma() output igamma
    FLOAT                           gammaOutput[65];               ///< Gamma ouput from gamma15 module
    ADRCData*                       pAdrcInputData;                ///< Pointer to the input data for adrc algo calculation.
    VOID*                           pInterpolationData;            ///< input memory for interpolation data
    UINT16                          first_pixel;                   ///< Pre-crop parameters
    UINT16                          last_pixel;                    ///< Pre-crop parameters
    UINT16                          first_line;                    ///< Pre-crop parameters
    UINT16                          last_line;                     ///< Pre-crop parameters
    BOOL                            LTM_data_collect_enable;       ///< DC enable
    INT16                           LTM_Dc_Pass;                   ///< DC pass
    BOOL                            tab_sel_enable;                ///< tablesel enable
    UINT32                          DCTab_Sel;                     ///< DC Table select
    UINT32                          fullTab_Sel;                   ///< Full table select
    UINT32                          passType;                      ///< passtype
};

/// @brief Input Data to LTM161 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LTM161InputData
{
    VOID*                           pHWSetting;                    ///< Pointer to the HW Setting Object
    ltm_1_6_1::chromatix_ltm16Type* pChromatix;                    ///< Input Chromatix tunning data
    UINT32                          imageWidth;                    ///< Current Sensor Image Output Width
    UINT32                          imageHeight;                   ///< Current Sensor Image Output Height
    FLOAT                           luxIndex;                      ///< Input trigger value: Lux index
    FLOAT                           exposureIndex;                 ///< Exposure Index, Same as Lux index for non ADRC cases
    FLOAT                           prevExposureIndex;             ///< Exposure Index of Previous Frame
    FLOAT                           realGain;                      ///< Input trigger value: Real Gain Value
    INT32*                          pGammaPrev;                    ///< Ptr to cached version of InverseGamma() input gamma
    INT32*                          pIGammaPrev;                   ///< Ptr to cached version of InverseGamma() output igamma
    FLOAT                           gammaOutput[65];               ///< Gamma ouput from gamma151 module
    ADRCData*                       pAdrcInputData;                ///< Pointer to the input data for adrc algo calculation.
    VOID*                           pInterpolationData;            ///< input memory for interpolation data
    UINT16                          first_pixel;                   ///< Pre-crop parameters
    UINT16                          last_pixel;                    ///< Pre-crop parameters
    UINT16                          first_line;                    ///< Pre-crop parameters
    UINT16                          last_line;                     ///< Pre-crop parameters
    BOOL                            LTM_16_data_collect_enable;    ///< DC enable
    INT16                           LTM_16_Dc_Pass;                ///< DC pass
    BOOL                            tab_sel_enable;                ///< tablesel enable
    UINT32                          DCTab_Sel;                     ///< DC Table select
    UINT32                          fullTab_Sel;                   ///< Full table select
    UINT32                          passType;                      ///< passtype
    UINT32                          isHDR;                         ///< isHDR mode
    UINT32                          chipsetVersion;                ///< For chipset version
    BOOL                            disableIP;                     ///< Flag to disable image process
    FLOAT                           contrast_factor;               ///< Slider Based Tuning
};

/// @brief Input Data to LTM20 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LTM201InputData
{
    VOID*                           pHWSetting;                    ///< Pointer to the HW Setting Object
    ltm_2_0_1::chromatix_ltm20Type* pChromatix;                    ///< Input Chromatix tunning data
    UINT32                          imageWidth;                    ///< Current Sensor Image Output Width
    UINT32                          imageHeight;                   ///< Current Sensor Image Output Height
    UINT32                          fullResWidth;                  ///< Current Sensor Image Max Output Width
    UINT32                          fullResHeight;                 ///< Current Sensor Image Max Output Height
    UINT32                          stmpInWidth;                   ///< stmp in width
    UINT32                          stmpInHeight;                  ///< stmp in height
    FLOAT                           luxIndex;                      ///< Input trigger value: Lux index
    FLOAT                           exposureIndex;                 ///< Exposure Index, Same as Lux index for non ADRC cases
    FLOAT                           prevExposureIndex;             ///< Exposure Index of Previous Frame
    FLOAT                           realGain;                      ///< Input trigger value: Real Gain Value
    INT32*                          pGammaPrev;                    ///< Ptr to cached version of InverseGamma() input gamma
    INT32*                          pIGammaPrev;                   ///< Ptr to cached version of InverseGamma() output igamma
    FLOAT                           gammaOutput[65];               ///< Gamma ouput from Gamma151 module
    ADRCData*                       pAdrcInputData;                ///< Pointer to the input data for adrc algo calculation.
    VOID*                           pInterpolationData;            ///< input memory for interpolation data
    UINT16                          first_pixel;                   ///< Pre-crop parameters
    UINT16                          last_pixel;                    ///< Pre-crop parameters
    UINT16                          first_line;                    ///< Pre-crop parameters
    UINT16                          last_line;                     ///< Pre-crop parameters
    BOOL                            LTM_20_data_collect_enable;    ///< DC enable
    INT16                           LTM_20_Dc_Pass;                ///< DC pass
    UINT32                          passType;                      ///< passtype
    struct FDData*                  pFDData;                       ///< Face data
    UINT32                          blackLevelOffset;              ///< Black level offset
    UINT32                          numPasses;                     ///< number of IPE Passes
    UINT32                          isHDR;                         ///< isHDR case
    BOOL                            aiEnable;                      ///< To enable AI modifiers
    UINT32                          stmpUS;                        ///< stmp upscale factor to configure us params
    UINT8                           final_DAS;                     ///< Dynamic AI strength
    BOOL                            isAnchorKneeUsed;             ///< flag to indicate whether use Anchor Knee for LTM
    UINT8                           cropEnable;                    ///< ds4 cropper 0x0:Disable, 0x1: Enable
    UINT16                          crop_first_pixel;              ///< First Pixel index of the croper after upscaling
    UINT16                          crop_last_pixel;               ///< Last Pixel index of the cropper after upscaling
    UINT16                          crop_first_line;               ///< First Line index of the cropper after upscaling
    UINT16                          crop_last_line;                ///< Last Line index of the cropper after upscaling
    BOOL                            isBlurMode;                    ///< is blur mode
    BOOL                            disableIP;                     ///< Flag to disable image process
    VOID*                           pWarpGeometriesOutput;         ///< Pointer to Warp Geometries Output Structure
};

/// @brief Input Data to LTM20 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LTM202InputData
{
    VOID*                            pHWSetting;                    ///< Pointer to the HW Setting Object
    ltm_2_0_2::chromatix_ltm202Type* pChromatix;                    ///< Input Chromatix tunning data
    UINT32                          imageWidth;                     ///< Current Sensor Image Output Width
    UINT32                          imageHeight;                    ///< Current Sensor Image Output Height
    UINT32                          fullResWidth;                   ///< Current Sensor Image Max Output Width
    UINT32                          fullResHeight;                  ///< Current Sensor Image Max Output Height
    UINT32                          stmpInWidth;                    ///< STMP Input Width
    UINT32                          stmpInHeight;                   ///< STMP Input Height
    FLOAT                           luxIndex;                       ///< Input trigger value: Lux index
    FLOAT                           exposureIndex;                  ///< Exposure Index, Same as Lux index for non ADRC cases
    FLOAT                           prevExposureIndex;              ///< Exposure Index of Previous Frame
    FLOAT                           realGain;                       ///< Input trigger value: Real Gain Value
    INT32*                          pGammaPrev;                     ///< Ptr to cached version of InverseGamma() input gamma
    INT32*                          pIGammaPrev;                   ///< Ptr to cached version of InverseGamma() output igamma
    FLOAT                           gammaOutput[65];                ///< Gamma ouput from Gamma151 module
    ADRCData*                       pAdrcInputData;                 ///< Pointer to the input data for adrc algo calculation.
    VOID*                           pInterpolationData;             ///< input memory for interpolation data
    UINT16                          first_pixel;                    ///< Pre-crop parameters
    UINT16                          last_pixel;                     ///< Pre-crop parameters
    UINT16                          first_line;                     ///< Pre-crop parameters
    UINT16                          last_line;                      //< Pre-crop parameters
    BOOL                            LTM_20_data_collect_enable;     ///< DC enable
    INT16                           LTM_20_Dc_Pass;                 ///< DC pass
    UINT32                          passType;                       ///< passtype
    struct FDData*                  pFDData;                        ///< Face data
    UINT32                          blackLevelOffset;               ///< Black level offset
    UINT32                          numPasses;                      ///< number of IPE Passes
    UINT32                          isHDR;                          ///< isHDR case
    BOOL                            aiEnable;                       ///< To enable AI modifiers
    UINT32                          stmpUS;                         ///< stmp upscale factor to configure us params
    UINT8                           final_DAS;                      ///< Dynamic AI strength
    UINT8                           cropEnable;                     ///< ds4 cropper 0x0:Disable, 0x1: Enable
    UINT16                          crop_first_pixel;               ///< First Pixel index of the cropper after upscaling
    UINT16                          crop_last_pixel;                ///< Last Pixel index of the cropper after upscaling
    UINT16                          crop_first_line;                ///< First Line index of the cropper after upscaling
    UINT16                          crop_last_line;                 ///< Last Line index of the cropper after upscaling
    BOOL                            isAnchorKneeUsed;               ///< flag to indicate whether use Anchor Knee for LTM
    BOOL                            isBlurMode;                     ///< is blur mode
    BOOL                            disableIP;                      ///< Flag to disable image process
    VOID*                           pOnlineTuningSetting;           ///< OnlineTuningSettings
    VOID*                           pWarpGeometriesOutput;          ///< Pointer to Warp Geometries Output Structure
};

/// @brief Input Data to TMC142 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct TMC142InputData
{
    tmc_1_4_2::chromatix_tmc142Type* pChromatix;                          ///< Input Chromatix tunning data
    UINT32                           chipsetVersion;                      ///< Chipset version
    FLOAT                            DRCGain;                             ///< Input trigger value:  DRCGain
    FLOAT                            luxIndex;                            ///< Input trigger value:  Lux index
    FLOAT                            prevluxIndex;                        ///< Lux index of previous frame
    FLOAT                            DRCGainDark;                         ///< Input trigger value:  drcGainDarkFLOAT
    FLOAT*                           pPreviousCalculatedHistogram;        ///< calculated histogram for next frame
    FLOAT*                           pPreviousCalculatedCDF;              ///< calculated CDF for next frame
    FLOAT                            previousCalculatedFacelevel;         ///< calculated facelevel for next frame
    UINT32                           frameNumber;                         ///< Frame number
    // UINT32*                          pGRHist;                             ///< BHIST GR stats, TMC142 removed BHist input
    UINT16*                          pIHist;                              ///< iHist stats
    ADRCData*                        pAdrcOutputData;                     ///< Pointer to the input data for adrc calculation
    // NOWHINE NC008: Share code with system team
    FLOAT                            GammaInput[Gamma151TableSize];       ///< IPE gamma output from IPE gamma15 module
    struct FDData*                   pFDData_tmc;                         ///< Face data
    UINT32                           imageWidth;                          ///< Current Sensor Image Output Width
    UINT32                           imageHeight;                         ///< Current Sensor Image Output Height
    FLOAT                            face_level;                          ///< face_level
    FLOAT                            out_stats_fusion_long_range;         ///< out_stats_fusion_long_range
    FLOAT                            out_stats_fusion_long_str;           ///< out_stats_fusion_long_str
    FLOAT                            out_stats_fusion_medium_range;       ///< out_stats_fusion_medium_range
    FLOAT                            out_stats_fusion_medium_str;         ///< out_stats_fusion_medium_str
    FLOAT                            out_stats_fusion_short_range;        ///< out_stats_fusion_short_range
    BOOL                             adrcGTMEnable;                       ///< GTM is enabled or not for ADRC
    BOOL                             adrcLTMEnable;                       ///< LTM is enabled or not for ADRC
    FLOAT                            scaleRatioWB_current;                ///< Scale Ratio current
    FLOAT                            faceAdjRatioPrev;                    ///< Face Adjust Ratio Prev
    FLOAT                            scaleRatioWB_prev;                   ///< Scale Ratio WB prev
    FLOAT                            faceLuma;                            ///< Face Luma CDF for the frame
    FLOAT                            faceConfidence;                      ///< Face Confidence for the frame
    // TMC 1.4 onwards
    VOID*                            pInterpolationData;                  ///< input memory for interpolation data
    BOOL                             isRealtimePipeline;                  ///< indicate realtime pipeline
};
/// @brief Input Data to TMC13 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct TMC13InputData
{
    tmc_1_3_0::chromatix_tmc13Type* pChromatix;                         ///< Input Chromatix tunning data
    BOOL                            ADRCGTMEnable;                      ///< Flag to check GTM is enabled
    BOOL                            ADRCLTMEnable;                      ///< LTM is enabled or not for ADRC
    FLOAT                           DRCGain;                            ///< Input trigger value:  DRCGain
    FLOAT                           DRCGainDark;                        ///< Input trigger value:  drcGainDark
    FLOAT                           realGain;                           ///< Input trigger value:  Real Gain Value
    FLOAT                           luxIndex;                           ///< Input trigger value:  Lux index
    FLOAT                           exposureTime;                       ///< Input trigger value:  exporsure time
    FLOAT                           exposureGainRatio;                  ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;                     ///< Input trigger value:  AEC sensitivity data
    FLOAT                           prevluxIndex;                       ///< Lux index of previous frame
    FLOAT*                          pPreviousCalculatedHistogram;       ///< calculated histogram for next frame
    FLOAT*                          pPreviousCalculatedCDF;             ///< calculated CDF for next frame
    FLOAT                           previousCalculatedFacelevel;        ///< calculated facelevel for next frame
    UINT32                          frameNumber;                        ///< Frame number
    UINT32*                         pGRHist;                            ///< BHIST GR stats
    ADRCData*                       pADRCOutputData;                    ///< Pointer to the input data for adrc algo calculation
    FDData*                         pFDDataTMC;                         ///< Face Detection data for TMC
                                                                        ///  which is an input for TMC calculation
    UINT32                          imageWidth;                         ///< Current Sensor Image Output Width
    UINT32                          imageHeight;                        ///< Current Sensor Image Output Height
    FLOAT                           faceLevel;                          ///< Face level
    FLOAT                           out_stats_fusion_long_range;        ///< out_stats_fusion_long_range
    FLOAT                           out_stats_fusion_long_str;          ///< out_stats_fusion_long_str
    FLOAT                           out_stats_fusion_medium_range;      ///< out_stats_fusion_medium_range
    FLOAT                           out_stats_fusion_medium_str;        ///< out_stats_fusion_medium_str
    FLOAT                           out_stats_fusion_short_range;       ///< out_stats_fusion_short_range
    // NOWHINE NC008: Share code with system team
    FLOAT                           GammaInput[Gamma15TableSize];       ///< IPE gamma output from IPE gamma15 module
    BOOL                            sliderEnable;                       ///< Slider Based Tuning
    FLOAT                           tone;                               ///< Slider Based Tuning
};

/// @brief Input Data to TMC12 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct TMC12InputData
{
    tmc_1_2_0::chromatix_tmc12Type* pChromatix;                         ///< Input Chromatix tunning data
    FLOAT                           DRCGain;                            ///< Input trigger value:  DRCGain
    FLOAT                           DRCGainDark;                        ///< Input trigger value:  drcGainDark
    FLOAT                           realGain;                           ///< Input trigger value:  Real Gain Value
    FLOAT                           luxIndex;                           ///< Input trigger value:  Lux index
    FLOAT                           exposureTime;                       ///< Input trigger value:  exporsure time
    FLOAT                           exposureGainRatio;                  ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;                     ///< Input trigger value:  AEC sensitivity data
    FLOAT                           prevluxIndex;                       ///< Lux index of previous frame
    FLOAT*                          pPreviousCalculatedHistogram;       ///< calculated histogram for next frame
    FLOAT*                          pPreviousCalculatedCDF;             ///< calculated CDF for next frame
    UINT32                          frameNumber;                        ///< Frame number
    UINT32*                         pGRHist;                            ///< BHIST GR stats
    ADRCData*                       pAdrcOutputData;                    ///< Pointer to the input data for adrc algo calculation
    FLOAT                           gammaInput[Gamma15TableSize];       ///< Gamma input for TMC/ADRC
    FLOAT                           overrideDarkBoostOffset;            ///< Override dark boost offset for user control
    FLOAT                           overrideFourthToneAnchor;           ///< Override fourth tone anchor for user control
    UINT32                          chipsetVersion;                     ///< Titan version
};

/// @brief Input Data to TMC11 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct TMC11InputData
{
    tmc_1_1_0::chromatix_tmc11Type* pChromatix;                     ///< Input Chromatix tunning data
    FLOAT                           DRCGain;                        ///< Input trigger value:  DRCGain
    FLOAT                           DRCGainDark;                    ///< Input trigger value:  drcGainDark
    FLOAT                           realGain;                       ///< Input trigger value:  Real Gain Value
    FLOAT                           luxIndex;                       ///< Input trigger value:  Lux index
    FLOAT                           exposureTime;                   ///< Input trigger value:  exporsure time
    FLOAT                           exposureGainRatio;              ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;                 ///< Input trigger value:  AEC sensitivity data
    UINT32*                         pGRHist;                        ///< BHIST GR stats
    ADRCData*                       pAdrcOutputData;                ///< Pointer to the input data for adrc algo calculation.
    FLOAT                           IPEGammaOutput[Gamma15TableSize];   ///< IPE gamma output from IPE gamma15 module
};

/// @brief Input Data to TMC11 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct TMC111InputData
{
    tmc_1_1_1::chromatix_tmc11Type* pChromatix;                     ///< Input Chromatix tunning data
    FLOAT                           DRCGain;                        ///< Input trigger value:  DRCGain
    FLOAT                           DRCGainDark;                    ///< Input trigger value:  drcGainDark
    FLOAT                           realGain;                       ///< Input trigger value:  Real Gain Value
    FLOAT                           luxIndex;                       ///< Input trigger value:  Lux index
    FLOAT                           exposureTime;                   ///< Input trigger value:  exporsure time
    FLOAT                           exposureGainRatio;              ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;                 ///< Input trigger value:  AEC sensitivity data
    UINT32*                         pGRHist;                        ///< BHIST GR stats
    ADRCData*                       pAdrcOutputData;                ///< Pointer to the input data for adrc algo calculation.
    FLOAT                           IPEGammaOutput[Gamma15TableSize];   ///< IPE gamma output from IPE gamma15 module
};
/// @brief Input Data to TMC10 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct TMC10InputData
{
    tmc_1_0_0::chromatix_tmc10Type* pChromatix;      ///< Input Chromatix tunning data
    FLOAT                           drcGain;         ///< Input trigger value:  DRCGain
    FLOAT                           drcGainDark;     ///< Input trigger value:  drcGainDark
    FLOAT                           realGain;        ///< Input trigger value:  Real Gain Value
    FLOAT                           luxIndex;        ///< Input trigger value:  Lux index
    BOOL                            adrcGTMEnable;   ///< GTM is enabled or not for ADRC
    BOOL                            adrcLTMEnable;   ///< LTM is enabled or not for ADRC
    ADRCData*                       pAdrcOutputData; ///< Pointer to the input data for adrc algo calculation.
};


/// @brief Input Data to VSR11 / VSR12 IQ
// NOWHINE NC004c: Share code with system team
struct VSRInputData
{
    UINT32                          frameNumber;                        ///< Frame number
    GeoLib2CalcFrameIn              geolibIPECalFrameIn;                ///< Geolib IPE calc frame input
//  GeoLib2EvaCalcFrameIn           geolibEVACalFrameIn;                ///< Geolib EVA calc frame input
};

/// @brief Input Data to VSR11 IQ
// NOWHINE NC004c: Share code with system team
struct VSR11InputData
{
    UINT32                              frameNumber;                        ///< Frame number
    video_1_1_1::chromatix_video11Type* pChromatix;                         ///< Pointer to tuning mode data
    VOID*                               pInterpolationData;                 ///< Interpolation data
    GeoLib2CalcFrameIn                  geolibIPECalFrameIn;                ///< Geolib IPE calc frame input
};

/// @brief Input Data to VSR12 IQ
// NOWHINE NC004c: Share code with system team
struct VSR12InputData
{
    UINT32                              frameNumber;                        ///< Frame number
    video_1_2_1::chromatix_video12Type* pChromatix;                         ///< Pointer to tuning mode data
    VOID*                               pInterpolationData;                 ///< Interpolation data
    GeoLib2CalcFrameIn                  geolibIPECalFrameIn;                ///< Geolib IPE calc frame input
};

/// @brief Input Data to VSR13 IQ
// NOWHINE NC004c: Share code with system team
struct VSR13InputData
{
    UINT32                              frameNumber;                        ///< Frame number
    video_1_3_1::chromatix_video13Type* pChromatix;                         ///< Pointer to tuning mode data
    VOID*                               pInterpolationData;                 ///< Interpolation data
    GeoLib2CalcFrameIn                  geolibIPECalFrameIn;                ///< Geolib IPE calc frame input
};

/// @brief Input Data to EIS16 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct EIS16InputData
{
    eis_1_6_0::chromatix_eis16Type* pChromatix;             ///< Input Chromatix tunning data
    UINT32                          moduleEnable;           ///< Enable flag

};

/// @brief Input Data to VIDEO10 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct VIDEO10InputData
{
    video_1_0_0::chromatix_video10Type* pChromatix;             ///< Input Chromatix tunning data
    BOOL                                moduleEnable;           ///< Module enable flag
    FLOAT                               lensZoom;               ///< Input trigger value:  lensZoom
    FLOAT                               exposureTime;           ///< Input trigger value:  exposure time
    FLOAT                               exposureGainRatio;      ///< Input trigger value:  exposure gain ratio
    FLOAT                               AECSensitivity;         ///< Input trigger value:  AEC sensitivity data
    FLOAT                               AECSensitivityShort;    ///< Input trigger value:  AEC sensitivity data
    FLOAT                               realGain;               ///< Input trigger value:  Digital Gain Value
    FLOAT                               digitalGain;            ///< Digital gain from Sensor
    FLOAT                               lensPosition;           ///< Input trigger value:  Lens position
    FLOAT                               preScaleRatio;          ///< Input trigger value:  Pre scale ratio
    FLOAT                               luxIndex;               ///< Input trigger value:  Lux index
};

/// @brief Input Data to MF11 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct MF101InputData
{
    mf_1_0_1::chromatix_mf10Type*   pChromatix;             ///< Input Chromatix tunning data
    BOOL                            moduleEnable;           ///< Module enable flag
    FLOAT                           lensZoom;               ///< Input trigger value:  lensZoom
    FLOAT                           DRCGain;                ///< Input trigger value:  drcGain
    FLOAT                           exposureTime;           ///< Input trigger value:  exposure time
    FLOAT                           exposureGainRatio;      ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;         ///< Input trigger value:  AEC sensitivity data
    FLOAT                           AECSensitivityShort;    ///< Input trigger value:  AEC sensitivity data
    FLOAT                           realGain;               ///< Input trigger value:  Digital Gain Value
    FLOAT                           digitalGain;            ///< Digital gain from Sensor
    FLOAT                           luxIndex;               ///< Input trigger value:  Lux index
};

/// @brief Input Data to MF11 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct MF11InputData
{
    mf_1_1_0::chromatix_mf11Type*   pChromatix;             ///< Input Chromatix tunning data
    BOOL                            moduleEnable;           ///< Module enable flag
    FLOAT                           lensZoom;               ///< Input trigger value:  lensZoom
    FLOAT                           DRCGain;                ///< Input trigger value:  drcGain
    FLOAT                           exposureTime;           ///< Input trigger value:  exposure time
    FLOAT                           exposureGainRatio;      ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;         ///< Input trigger value:  AEC sensitivity data
    FLOAT                           AECSensitivityShort;    ///< Input trigger value:  AEC sensitivity data
    FLOAT                           realGain;               ///< Input trigger value:  Digital Gain Value
    FLOAT                           digitalGain;            ///< Digital gain from Sensor
    FLOAT                           luxIndex;               ///< Input trigger value:  Lux index
    FLOAT                           lensPosition;           ///< Input trigger value:  Lens position
    FLOAT                           postScaleRatio;         ///< Input trigger value:  Post scale ratio
    FLOAT                           preScaleRatio;          ///< Input trigger value:  Pre scale ratio
    FLOAT                           CCTTrigger;             ///< Input trigger value:  AWB colorTemperature
};

/// @brief Input Data to NRM10 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct NRAdjust10InputData
{
    nradj_1_0_0::chromatix_nradj10Type* pChromatix;   ///< Input Chromatix tunning data
    BOOL                                moduleEnable; ///< Module enable flag
};

/// @brief Input Data to NRM10 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct NRAdjust11InputData
{
    nradj_1_1_0::chromatix_nradj11Type* pChromatix;   ///< Input Chromatix tunning data
    BOOL                                moduleEnable; ///< Module enable flag
};

/// @brief Input Data to NRM101 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct NRM101InputData
{
    nrm_1_0_1::chromatix_nrm10Type* pChromatix;             ///< Input Chromatix tunning data
    VOID*                           pInterpolationData;     ///< input memory for interpolation data
    BOOL                            moduleEnable;           ///< Module enable flag
    UINT32                          frameExposureType;      ///< frame exposure type
    UINT32                          frameNumber;            ///< Frame number
    UINT32                          chipsetVersion;         ///< Titan version
};

/// @brief Input Data to NRM10 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct NRM10InputData
{
    nrm_1_0_0::chromatix_nrm10Type* pChromatix;             ///< Input Chromatix tunning data
    VOID*                           pInterpolationData;     ///< input memory for interpolation data
    BOOL                            moduleEnable;           ///< Module enable flag
    UINT32                          frameExposureType;      ///< frame exposure type
    UINT32                          frameNumber;            ///< Frame number
    UINT32                          chipsetVersion;         ///< Titan version
    FLOAT                           exposureTime;           ///< Input trigger value:  exposure time
    FLOAT                           exposureGainRatio;      ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;         ///< Input trigger value:  AEC sensitivity data
    FLOAT                           AECSensitivityShort;    ///< Input trigger value:  AEC sensitivity data
    FLOAT                           realGain;               ///< Input trigger value:  Digital GainValue
    FLOAT                           digitalGain;            ///< Digital gain from Sensor
    FLOAT                           luxIndex;               ///< Input trigger value:  Lux index
};

/// @brief Input Data to NRM111 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct NRM111InputData
{
    nrm_1_1_1::chromatix_nrm11Type* pChromatix;             ///< Input Chromatix tunning data
    VOID*                           pInterpolationData;     ///< input memory for interpolation data
    BOOL                            moduleEnable;           ///< Module enable flag
    UINT32                          frameExposureType;      ///< frame exposure type
    UINT32                          frameNumber;            ///< Frame number
    UINT32                          chipsetVersion;         ///< Titan version
};

/// @brief Input Data to Upscale12 and Chroma Upsample IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct Upscale12InputData
{
    VOID*                                   pHWSetting;                    ///< Pointer to the HW Setting Object
    FLOAT                                   luxIndex;                      ///< Input trigger value:  Lux index
    FLOAT                                   AECGain;                       ///< Input trigger value:  Digital Gain Value
    UINT16                                  lumaVScaleFirAlgorithm;        ///< Vertical scale FIR algo
    UINT16                                  lumaHScaleFirAlgorithm;        ///< Horizontal scale FIR algo
    UINT16                                  lumaInputDitheringDisable;     ///< Input Dithering disable
    UINT16                                  lumaInputDitheringMode;        ///< Input Dithering Mode
    UINT16                                  chromaVScaleFirAlgorithm;      ///< Vertical scale FIR algo
    UINT16                                  chromaHScaleFirAlgorithm;      ///< Horizontal scale FIR algo
    UINT16                                  chromaInputDitheringDisable;   ///< Input Dithering disable
    UINT16                                  chromaInputDitheringMode;      ///< Input Dithering Mode
    UINT16                                  chromaRoundingModeV;           ///< Chroma rounding mode vertical
    UINT16                                  chromaRoundingModeH;           ///< Chroma rounding mode horizontal
};

/// @brief Input Data to Upscale12 and Chroma Upsample IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct Upscale121InputData
{
    VOID*                                   pHWSetting;                    ///< Pointer to the HW Setting Object
    FLOAT                                   luxIndex;                      ///< Input trigger value:  Lux index
    FLOAT                                   AECGain;                       ///< Input trigger value:  Digital Gain Value
    UINT16                                  lumaVScaleFirAlgorithm;        ///< Vertical scale FIR algo
    UINT16                                  lumaHScaleFirAlgorithm;        ///< Horizontal scale FIR algo
    UINT16                                  lumaInputDitheringDisable;     ///< Input Dithering disable
    UINT16                                  lumaInputDitheringMode;        ///< Input Dithering Mode
    UINT16                                  chromaVScaleFirAlgorithm;      ///< Vertical scale FIR algo
    UINT16                                  chromaHScaleFirAlgorithm;      ///< Horizontal scale FIR algo
    UINT16                                  chromaInputDitheringDisable;   ///< Input Dithering disable
    UINT16                                  chromaInputDitheringMode;      ///< Input Dithering Mode
    UINT16                                  chromaRoundingModeV;           ///< Chroma rounding mode vertical
    UINT16                                  chromaRoundingModeH;           ///< Chroma rounding mode horizontal
};

/// @brief Input Data to LDC11 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LDC11InputData
{
    ldc_1_1_0::chromatix_ldc11Type*   pChromatix;             ///< Input Chromatix tunning data
    FLOAT                             lensZoom;               ///< Input trigger value:  lensZoom
    FLOAT                             lensPosition;           ///< Input trigger value:  Lens position
};

/// @brief Input Data to LDC111 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LDC111InputData
{
    ldc_1_1_1::chromatix_ldc11Type*   pChromatix;             ///< Input Chromatix tunning data
};

/// @brief Input Data to Upscale20 and Chroma Upsample IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct Upscale20InputData
{
    VOID*                                   pHWSetting;         ///< Pointer to the HW Setting Object
    upscale_2_0_0::chromatix_upscale20Type* pChromatix;         ///< Input Chromatix tunning data
    FLOAT                                   totalScaleRatio;    ///< Input trigger value:  Total ScaleRatio
    FLOAT                                   luxIndex;           ///< Input trigger value:  Lux index
    FLOAT                                   AECGain;            ///< Input trigger value:  Digital Gain Value
    UINT16                                  cosited;            ///< 0: interstitial; 1: cosited
    UINT16                                  evenOdd;            ///< 0: even; 1: odd
    UINT16                                  enableHorizontal;   ///< 1: enable horizontal chroma upsample; 0: disable
    UINT16                                  enableVertical;     ///< 1: enable vertical chroma upsample; 0: disable
    UINT32                                  ch0InputWidth;      ///< Input image width for channel 0
    UINT32                                  ch0InputHeight;     ///< Input image height for channel 0
    UINT32                                  ch1InputWidth;      ///< Input image width for channel 1
    UINT32                                  ch1InputHeight;     ///< Input image height for channel 1
    UINT32                                  ch2InputWidth;      ///< Input image width for channel 2
    UINT32                                  ch2InputHeight;     ///< Input image height for channel 2
    VOID*                                   pInterpolationData; ///< input memory for interpolation data
    UINT16                                  outWidth;           ///< added module output width
    UINT16                                  outHeight;          ///< added module output height
};

/// @brief Input Data to Upscale201 and Chroma Upsample IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct Upscale201InputData
{
    VOID*                                   pHWSetting;         ///< Pointer to the HW Setting Object
    upscale_2_0_1::chromatix_upscale20Type* pChromatix;         ///< Input Chromatix tunning data
    UINT16                                  cosited;            ///< 0: interstitial; 1: cosited
    UINT16                                  evenOdd;            ///< 0: even; 1: odd
    UINT16                                  enableHorizontal;   ///< 1: enable horizontal chroma upsample; 0: disable
    UINT16                                  enableVertical;     ///< 1: enable vertical chroma upsample; 0: disable
    UINT32                                  ch0InputWidth;      ///< Input image width for channel 0
    UINT32                                  ch0InputHeight;     ///< Input image height for channel 0
    UINT32                                  ch1InputWidth;      ///< Input image width for channel 1
    UINT32                                  ch1InputHeight;     ///< Input image height for channel 1
    UINT32                                  ch2InputWidth;      ///< Input image width for channel 2
    UINT32                                  ch2InputHeight;     ///< Input image height for channel 2
    VOID*                                   pInterpolationData; ///< input memory for interpolation data
    UINT16                                  outWidth;           ///< added module output width
    UINT16                                  outHeight;          ///< added module output height
    FLOAT                                   postScaleRatio;     ///< postScaleRatio value
    UINT32                                  chipsetVersion;     ///< chipset version
    VOID*                                   pOnlineTuningSetting;        ///< OnlineTuningSettings
};

/// @brief Input Data to GRA10 IQ Algorithm
/// NOWHINE NC004c: Share code with system team
struct GRA10IQInput
{
    VOID*                           pHWSetting;         ///< Pointer to the HW Setting Object
    gra_1_0_0::chromatix_gra10Type* pChromatix;         ///< Input Chromatix tunning data
    BOOL                            moduleEnable;       ///< Module enable flag
    UINT32                          frameNum;           ///< Input Frame number for algorithm
    FLOAT                           colorTemperature;   ///< Input trigger value:  AWB color Temperature
    FLOAT                           luxIndex;           ///< Input trigger value:  Lux index
    FLOAT                           linearGain;         ///< Input trigger value:  linear Gain Value
    FLOAT                           preScaleRatio;      ///< Input trigger value:  Prescale ratio Mode
    VOID*                           pInterpolationData; ///< input memory for interpolation data
};

/// @brief Input Data to GRA101 IQ Algorithm
/// NOWHINE NC004c: Share code with system team
struct GRA101IQInput
{
    VOID*                           pHWSetting;         ///< Pointer to the HW Setting Object
    gra_1_0_1::chromatix_gra10Type* pChromatix;         ///< Input Chromatix tunning data
    BOOL                            moduleEnable;       ///< Module enable flag
    UINT32                          frameNum;           ///< Input Frame number for algorithm
    FLOAT                           colorTemperature;   ///< Input trigger value:  AWB color Temperature
    FLOAT                           luxIndex;           ///< Input trigger value:  Lux index
    FLOAT                           linearGain;         ///< Input trigger value:  linear Gain Value
    FLOAT                           preScaleRatio;      ///< Input trigger value:  Prescale ratio Mode
    VOID*                           pInterpolationData; ///< input memory for interpolation data
};

/// @brief Input Data to GRA101 IQ Algorithm
/// NOWHINE NC004c: Share code with system team
struct GRA101InputData
{
    VOID*                           pHWSetting;         ///< Pointer to the HW Setting Object
    gra_1_0_1::chromatix_gra10Type* pChromatix;         ///< Input Chromatix tunning data
    BOOL                            moduleEnable;       ///< Module enable flag
    UINT32                          frameNum;           ///< Input Frame number for algorithm
    FLOAT                           colorTemperature;   ///< Input trigger value:  AWB color Temperature
    FLOAT                           luxIndex;           ///< Input trigger value:  Lux index
    FLOAT                           linearGain;         ///< Input trigger value:  linear Gain Value
    FLOAT                           preScaleRatio;      ///< Input trigger value:  Prescale ratio Mode
    VOID*                           pInterpolationData; ///< input memory for interpolation data
};

/// @brief Input Data to MF131 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct MF131InputData
{
    mf_1_3_1::chromatix_mf13Type* pChromatix;             ///< Input Chromatix tunning data
    BOOL                          moduleEnable;           ///< Module enable flag
    VOID*                         pInterpolationData;     ///< Interpolation data
    UINT32                        frameNumber;            ///< Frame number
};

/// @brief Input Data to LENR10 IQ Algorithm
/// NOWHINE NC004c: Share code with system team
struct LENR10InputData
{
    VOID*                              pHWSetting;                      ///< Pointer to the HW Setting Object
    lenr_1_0_0::chromatix_lenr10Type*  pChromatix;                      ///< Input Chromatix tunning data
    BOOL                               moduleEnable;                    ///< Module enable flag
    BOOL                               prevStateEnable;                 ///< Previous enable flag
    FLOAT                              totalScaleRatio;                 ///< Input trigger value:  TotalScaleRatio
    FLOAT                              DRCGain;                         ///< Input trigger value:  drcGain
    FLOAT                              exposureTime;                    ///< Input trigger value:  exporsure time
    FLOAT                              exposureGainRatio;               ///< Input trigger value:  Exposure Gain Ratio
    FLOAT                              AECSensitivity;                  ///< Input trigger value:  AEC sensitivity data
    FLOAT                              luxIndex;                        ///< Input trigger value:  Lux index
    FLOAT                              realGain;                        ///< Input trigger value:  Digital Gain Value
    UINT32                             streamWidth;                     ///< Stream Width
    UINT32                             streamHeight;                    ///< Stream height
    UINT32                             cropFrameBoundaryPixAlignRight;  ///< 0: 4-pix align, 1: 2-pix align
    UINT32                             horizontalOffset;                ///< Horizontal Offset
    UINT32                             verticalOffset;                  ///< Vertical Offset
    struct FDData*                     pFDData;                         ///< Face data
    VOID*                              pInterpolationData;              ///< input memory for interpolation data
    FLOAT                              ica_zoom_factor;                 ///< icaZoomFactor
    FLOAT                              sensorScaling;                   ///< sensorScaling
};

/// @brief Input Data to LENR101 IQ Algorithm
/// NOWHINE NC004c: Share code with system team
struct LENR101InputData
{
    VOID*                              pHWSetting;                      ///< Pointer to the HW Setting Object
    lenr_1_0_1::chromatix_lenr10Type*  pChromatix;                      ///< Input Chromatix tunning data
    BOOL                               moduleEnable;                    ///< Module enable flag
    BOOL                               prevStateEnable;                 ///< Previous enable flag
    UINT32                             streamWidth;                     ///< Stream Width
    UINT32                             streamHeight;                    ///< Stream height
    UINT32                             cropFrameBoundaryPixAlignRight;  ///< 0: 4-pix align, 1: 2-pix align
    UINT32                             horizontalOffset;                ///< Horizontal Offset
    UINT32                             verticalOffset;                  ///< Vertical Offset
    struct FDData*                     pFDData;                         ///< Face data
    VOID*                              pInterpolationData;              ///< input memory for interpolation data
    FLOAT                              ica_zoom_factor;                 ///< icaZoomFactor
    FLOAT                              sensorScaling;                   ///< sensorScaling
    VOID*                              pOnlineTuningSetting;            ///< OnlineTuningSettings
};

/// @brief Input Data to BLUR101 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct BLUR101InputData
{
    VOID*                               pHWSetting;                 ///< Pointer to the HW Setting Object
    blur_1_0_1::chromatix_blur10Type*   pChromatix;                 ///< Input Chromatix tuning data
    FLOAT                               DRCGain;                    ///< Input trigger value:  drcGain
    FLOAT                               exposureTime;               ///< Input trigger value:  exposure time
    FLOAT                               exposureGainRatio;          ///< Input trigger value:  exposure gain ratio
    FLOAT                               AECSensitivity;             ///< Input trigger value:  AEC sensitivity data
    FLOAT                               luxIndex;                   ///< Input trigger value:  Lux index
    FLOAT                               AECGain;                    ///< Input trigger value:  AEC Gain Value
    FLOAT                               CCTTrigger;                 ///< Input trigger value:  AWB colorTemperature
    UINT32                              numPasses;                  ///< Pass number
    UINT32                              frameNum;                   ///< Current frame number
    NcLibImageSize*                     pImageDimensions;           ///< Input dimension
    NcLibImageSize*                     pMarginDimensions;          ///< Margin related dimension
    BOOL                                isMapLutInput;              ///< Whether the map LUT is provided by SW context
    UINT8*                              pMapLUT;                    ///< blur map lut
    BOOL                                blurEffect;                 ///< true for blur effect and false for map update
    FLOAT                               blurStrengthFactor;         ///< blur strength factorfor vse module
    FLOAT                               minFocusedDisparity;        ///< min focus disparity for vse
    FLOAT                               maxFocusedDisparity;        ///< min focus disparity for vse
    FLOAT                               focusDisparity;             ///< focus disparity for blur module
    VOID*                               pBLURParameters;            ///< Pointer to BLUR parameters
    VOID*                               pInterpolationData;         ///< input memory for chromatix interpolation data
    VOID*                               pUnpackedfield;             ///< input memory Unpacked filed
    BOOL                                validateBLURSettings;       ///< Validate BLUR register settings
    jbu_1_0_1::chromatix_jbu10Type*     pJBUChromatix;              ///< Input JBU Chromatix tuning data
    VOID*                               pJBUParameters;             ///< Pointer to JBU parameters
};

/* MUCH OF THIS IS GOING TO CHANGE! */
/// @brief SBLUR101 Module Pass Data
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct SBLUR101InputData
{
    VOID*                               pHWSetting;                 ///< Pointer to the HW Setting Object
    sblur_1_0_1::chromatix_sblur10Type* pChromatix;                 ///< Input SBLUR Chromatix tuning data
    VOID*                               pInterpolationData;         ///< input memory for chromatix interpolation data
    VOID*                               pUnpackedfield;             ///< input memory Unpacked filed
    UINT                                sblurWorkModeSW;            ///< input Sblur workmode from user
    UINT                                sblurShapeSW;               ///< input Sblur shape from user
    BOOL                                validateSBLURSettings;      ///< Validate SBLUR register settings
};

/// @brief BLUR101 Module Pass Data
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct BLUR101ModPassData
{
    blur_1_0_1::mod_blur10_pass_dataType mod_blur10_pass_data[4];
};


/// @brief SBLUR101 Module Pass Data
//// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct SBLUR101ModPassData
{
    sblur_1_0_1::mod_sblur10_pass_dataType mod_sblur10_pass_data[4];
};

/// @brief Input Data to JBU101 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct JBU101InputData
{
    jbu_1_0_1::chromatix_jbu10Type* pChromatix;                   ///< Input Chromatix tuning data
    FLOAT                           DRCGain;                      ///< Input trigger value:  drcGain
    FLOAT                           exposureTime;                 ///< Input trigger value:  exposure time
    FLOAT                           exposureGainRatio;            ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;               ///< Input trigger value:  AEC sensitivity data
    FLOAT                           luxIndex;                     ///< Input trigger value:  Lux index
    FLOAT                           AECGain;                      ///< Input trigger value:  AEC Gain Value
    FLOAT                           CCTTrigger;                   ///< Input trigger value:  AWB colorTemperature
    UINT32                          numPasses;                    ///< Pass number
    UINT32                          jbuType;                      ///< 0- jbu in blur module 1- jbu in vse module
    NcLibImageSize*                 pImageDimensions;             ///< Input dimension
    NcLibImageSize*                 pMarginDimensions;            ///< Margin related dimension
    VOID*                           pJBUParameters;               ///< Pointer to JBU parameters
    VOID*                           pInterpolationData;           ///< input memory  for chromatix interpolation data
    VOID*                           pUnpackedfield;               ///< input memory Unpacked field
    BOOL                            validateJBUSettings;          ///< Validate JBU register settings
};

/// @brief JBU101 Module Pass Data
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct JBU101ModPassData
{
    jbu_1_0_1::mod_jbu10_pass_dataType mod_jbu10_pass_data[4];
};

/// @brief Input Data to PPM10 SW Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct PPM101InputData
{
    ppm_1_0_1::chromatix_ppm10Type* pChromatix;             ///< Input Chromatix tuning data
    VOID*                           pInterpolationData;     ///< input memory for chromatix interpolation data
    BOOL                            isFirstFrame;           ///< Whether the frame to be processed is the first in the sequence
    UINT8                           segnetConfidence;       ///< Segmentation confidence value provided by seglib
    NcLibImageSize                  fdDomainResolution;     ///< FD coordinates are defined on this dimension
    FaceROIInformation*             pFaceRoiData;           ///< Face roi data
    FLOAT                           manualBlurStrength;     ///< Manual blur strength factor
                                                            /// which can be used by user to control the blur strehgth
};

/// @brief Output Data of PPM10 SW Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct PPM101OutputData
{
    UINT8* pMapLUT;                                  ///< memory for output mapLUT
};

/// @brief Input Data to VSE101 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct VSE101InputData
{
    VOID*                           pHWSetting;                   ///< Pointer to the HW Setting Object
    vse_1_0_1::chromatix_vse10Type* pChromatix;                   ///< Input Chromatix tuning data
    FLOAT                           postScaleRatio;               ///< Input trigger value:  Post scale ratio
    FLOAT                           preScaleRatio;                ///< Input trigger value:  Pre scale ratio
    FLOAT                           DRCGain;                      ///< Input trigger value:  drcGain
    FLOAT                           exposureTime;                 ///< Input trigger value:  exposure time
    FLOAT                           exposureGainRatio;            ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;               ///< Input trigger value:  AEC sensitivity data
    FLOAT                           luxIndex;                     ///< Input trigger value:  Lux index
    FLOAT                           AECGain;                      ///< Input trigger value:  AEC Gain Value
    FLOAT                           CCTTrigger;                   ///< Input trigger value:  AWB colorTemperature
    NcLibImageSize*                 pImageDimensions;             ///< Input dimension
    NcLibImageSize*                 pMarginDimensions;            ///< Margin related dimension
    FLOAT                           effectStrengthFactor;         ///< blur strength factorfor vse module
    FLOAT                           focusDisparity;               ///< focus disparity for vse
    FLOAT                           minFocusedDisparity;          ///< min focus disparity for vse
    FLOAT                           maxFocusedDisparity;          ///< min focus disparity for vse
    BOOL                            mapLutInput;                  ///< supply map lut from application
    UINT8*                          pMapLUT;                      ///< external map lut for vse
    VOID*                           pVSEParameters;               ///< Pointer to VSE parameters
    VOID*                           pInterpolationData;           ///< input memory  for chromatix interpolation data
    VOID*                           pUnpackedfield;               ///< input memory Unpacked field
    BOOL                            validateVSESettings;          ///< Validate VSE register settings
    jbu_1_0_1::chromatix_jbu10Type* pJBUChromatix;                ///< Input JBU Chromatix tuning data
    VOID*                           pJBUParameters;               ///< Pointer to JBU parameters
    BOOL                            isMMF;                        ///< Flag to indicate the enablement of MMF
    UINT32                          numOfFrames;                  ///< Number of frames for MMF processing
    BOOL                            manualBlurConfig;             ///< enable manual configure or not
    FLOAT                           chromaSuppressionU;           ///< chroma suppression U
    FLOAT                           chromaSuppressionV;           ///< chroma suppression V
    UINT8                           effectMode;                   ///< effect mode
    UINT                            sblurWorkModeSW;              ///< input Sblur workmode from user
};

/// @brief VSE101 Module Pass Data
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct VSE101ModPassData
{
    vse_1_0_1::vse10_rgn_dataType mod_vse10_pass_data;
};

/// @brief Input Data to CVP10 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct CVPInputData
{
    VOID*                            pChromatix;           ///< Input Chromatix tunning data
    FLOAT                            preScaleRatio;        ///< Pre Scale Ratio
    FLOAT                            exposureTime;         ///< Input trigger value:  exporsure time
    FLOAT                            exposureGainRatio;    ///< Input trigger value:  exporsure Gain Ratio
    FLOAT                            AECSensitivity;       ///< Input trigger value:  AEC sensitivity data
    FLOAT                            luxIndex;             ///< Input trigger value:  Lux index
    FLOAT                            realGain;             ///< Real Gain
    FLOAT                            totalScaleRatio;      ///< Input trigger value:  Real Gain Value
    UINT32                           frameNum;             ///< Current frame number
    UINT32                           numOfFrames;          ///< Number of frames for MFNR use case
    UINT8                            hasCVPRefInput;       ///< 1: has reference input, 0: no reference input
    VOID*                            pInterpolationData;   ///< input memory  for chromatix interpolation data
    VOID*                            pUnpackedfield;       ///< input memory Unpacked filed
    UINT32                           ifeOutFrameWidth;     ///< IFE Out Frame Width
    UINT32                           ifeOutFrameHeight;    ///< IFE Out Frame Height
    UINT8                            ifeAreDsImagesPD;     ///< IFE DS is PD
    UINT8                            ifeAreDsImages10Bps;  ///< IFE DS image are 10bit
    VOID*                            pCVPICAFrameCfgData;  ///< CVP ICA frame configuraion data
};

/// @brief Input Data to DMM10 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct DMM10InputData
{
    VOID*                                   pHWSetting;               ///< Pointer to the HW Setting Object
    dmm_1_0_1::chromatix_dmm10Type*         pChromatix;               ///< Input Chromatix tunning data
    BOOL                                    symbolIDChanged;          ///< Symbol IOD changed, reload triggers
    FLOAT                                   exposureTime;             ///< Input trigger value:  exposure time
    FLOAT                                   exposureGainRatio;        ///< Input trigger value:  exposure gain ratio
    FLOAT                                   AECSensitivity;           ///< Input trigger value:  AEC sensitivity data
    FLOAT                                   AECGain;                  ///< Input trigger value:  AEC Gain Value
    FLOAT                                   preScaleRatio;            ///< Pre Scale Ratio
    FLOAT                                   luxIndex;                 ///< Input trigger value:  Lux index
    UINT8                                   bayerPattern;             ///< Bayer Pattern
    VOID*                                   pInterpolationData;       ///< input memory for interpolation data
    NcLibGceFrameCfg*                       pGCEConfig;               ///< GCE Config Data
    UINT32                                  gceConfigLength;          ///< Length of GCE Config Data
    NcLibGceFrameCfg*                       pGCEConfigUs;             ///< GCE Config Data Us
    UINT32                                  gceConfigLengthUs;        ///< Length of GCE Config Data Us
    NCLIB_CONTEXT_SGM*                      pSGMContextData;          ///< SGM Context Data
    UINT32                                  sgmContextDataLength;     ///< Length of SGM Context Data
    NcLibIcaLmcPassParams*                  pICALmcCfg;               ///< ICA LMC Config Data
    NcLibROI                                inRoi;                    ///< ROI mapped to EVA input
    NcLibROI                                warpOutRoiFull;           ///< Full out ICA ROI applying this DMM transform
    NcLibDmmAlignmentType                   alignmentType;            ///< Which alignment this DMM is calculating
    float                                   satScaleFactor;           ///< For SAT alignment, ratio between sensor FOVs
    float                                   sgmToIpeRatio;            ///< Requested SGM size to IPE input size ratio
    uint64_t                                requestID;                ///< Request ID for reference
    FLOAT                                   downScaleRatio;           ///< down scale ratio
    uint32_t                                dmeTunedSize;             ///< multi_frame_input_resolution
    BOOL                                    isMVWarpOnly;             ///< if MV warp only instance
    NcLibEvaCalcMvData*                     pMVData;                  ///< MV warp data
    VOID*                                   pDmmSgmAlignControlInfo;  ///< DMM SGM Align Control Info
    BOOL                                    isUsPassEnable;           ///< is upscale pass enable
    BOOL                                    isVideoMvUsPassEnable;    ///< is video upscale pass enable
    BOOL                                    isVideoMvEnable;          ///< is video Mv enable
    UINT32                                  alignmentMode;            ///< Alignment mode
    float                                   vsrLimit;                 ///< Effective/Dynamic Max VSR upscale ratio
    NcLibEvaCalcDmmFrameIn*                 pCalcDmmFrameIn;          ///< EVA DMM frame input data
    NcLibEvaCalcVideoDmmFrameIn*            pCalcVideoDmmFrameIn;     ///< EVA DMM video frame input data
    VOID*                                   pGeolibParams;            ///< Pointer to the geolib parameters
    VOID*                                   pMCTFAlignmentGyro;       ///< MCTF alignement gyro data
    NcLibEvaDmmMaxSizes*                    pDmmSizes;                ///< EVA output sizes
    UINT64                                  requestId;                ///< Request ID for reference
    const CHAR*                             pNodeIdentifier;          ///< Node identifier
};

/// @brief Input Data to DMM111 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct DMMSGM111InputData
{
    dmmsgm_1_1_1::chromatix_dmmsgm11Type*         pChromatix;             ///< Input Chromatix tunning data
    VOID*                           pInterpolationData;     ///< input memory for interpolation data
    UINT8                           sgmPass;            ///< Indicates num of passes
    UINT8                           bayerPattern;           ///< Bayer Pattern
};

/// @brief Input Data to DMM11 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct DMM11InputData
{
    VOID*                                           pHWSetting;               ///< Pointer to the HW Setting Object
    globalalign_1_1_1::chromatix_globalalign11Type* pChromatix;               ///< Input Chromatix tunning data
    BOOL                                            symbolIDChanged;          ///< Symbol IOD changed, reload triggers
    FLOAT                                           exposureTime;             ///< Input trigger value:  exposure time
    FLOAT                                           exposureGainRatio;        ///< Input trigger value:  exposure gain ratio
    FLOAT                                           AECSensitivity;           ///< Input trigger value:  AEC sensitivity data
    FLOAT                                           AECGain;                  ///< Input trigger value:  AEC Gain Value
    FLOAT                                           preScaleRatio;            ///< Pre Scale Ratio
    FLOAT                                           luxIndex;                 ///< Input trigger value:  Lux index
    UINT8                                           bayerPattern;             ///< Bayer Pattern
    VOID*                                           pInterpolationData;       ///< input memory for interpolation data
    NcLibGceFrameCfg*                               pGCEConfig;               ///< GCE Config Data
    UINT32                                          gceConfigLength;          ///< Length of GCE Config Data
    NcLibGceFrameCfg*                               pGCEConfigUs;             ///< GCE Config Data Us
    UINT32                                          gceConfigLengthUs;        ///< Length of GCE Config Data Us
    NCLIB_CONTEXT_SGM*                              pSGMContextData;          ///< SGM Context Data
    UINT32                                          sgmContextDataLength;     ///< Length of SGM Context Data
    NcLibIcaLmcPassParams*                          pICALmcCfg;               ///< ICA LMC Config Data
    NcLibROI                                        inRoi;                    ///< ROI mapped to EVA input
    NcLibROI                                        warpOutRoiFull;           ///< Full out ICA ROI applying this DMM transform
    NcLibDmmAlignmentType                           alignmentType;            ///< Which alignment this DMM is calculating
    float                                           satScaleFactor;           ///< For SAT alignment, ratio between sensor FOVs
    float                                           sgmToIpeRatio;            ///< Requested SGM size to IPE input size ratio
    uint64_t                                        requestID;                ///< Request ID for reference
    FLOAT                                           downScaleRatio;           ///< down scale ratio
    uint32_t                                        dmeTunedSize;             ///< multi_frame_input_resolution
    BOOL                                            isMVWarpOnly;             ///< if MV warp only instance
    NcLibEvaCalcMvData*                             pMVData;                  ///< MV warp data
    VOID*                                           pDmmSgmAlignControlInfo;  ///< DMM SGM Align Control Info
    BOOL                                            isUsPassEnable;           ///< is upscale pass enable
    BOOL                                            isVideoMvUsPassEnable;    ///< is video upscale pass enable
    BOOL                                            isVideoMvEnable;          ///< is video Mv enable
    UINT32                                          alignmentMode;            ///< Alignment mode
    float                                           vsrLimit;                 ///< Effective/Dynamic Max VSR upscale ratio
    FLOAT                                           gceUs;                    ///< GCE VSR Upscale Factor
    NcLibEvaCalcDmmFrameIn*                         pCalcDmmFrameIn;          ///< EVA DMM frame input data
    NcLibEvaCalcVideoDmmFrameIn*                    pCalcVideoDmmFrameIn;     ///< EVA DMM video frame input data
    VOID*                                           pGeolibParams;            ///< Pointer to the geolib parameters
    VOID*                                           pMCTFAlignmentGyro;       ///< MCTF alignement gyro data
    NcLibEvaDmmMaxSizes*                            pDmmSizes;                ///< EVA output sizes
    UINT64                                          requestId;                ///< Request ID for reference
    const CHAR*                                     pNodeIdentifier;          ///< Node identifier
    NcLibFloat2                                     mvRoiSize;                ///< MV Roi size
    BOOL                                            sgmSubsample;             ///< SGM subsample
    BOOL                                            isFirstFrame;             ///< Is First frame
    FLOAT                                           absoluteMotion;           ///< Absolute Motion
};

/// @brief Input Data to DMM12 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct GLOBALALIGN121InputData
{
    VOID*                                           pHWSetting;               ///< Pointer to the HW Setting Object
    globalalign_1_2_1::chromatix_globalalign12Type* pChromatix;               ///< Input Chromatix tunning data
    BOOL                                            symbolIDChanged;          ///< Symbol IOD changed, reload triggers
    FLOAT                                           exposureTime;             ///< Input trigger value:  exposure time
    FLOAT                                           exposureGainRatio;        ///< Input trigger value:  exposure gain ratio
    FLOAT                                           AECSensitivity;           ///< Input trigger value:  AEC sensitivity data
    FLOAT                                           AECGain;                  ///< Input trigger value:  AEC Gain Value
    FLOAT                                           preScaleRatio;            ///< Pre Scale Ratio
    FLOAT                                           luxIndex;                 ///< Input trigger value:  Lux index
    UINT8                                           bayerPattern;             ///< Bayer Pattern
    VOID*                                           pInterpolationData;       ///< input memory for interpolation data
    NcLibGceFrameCfg*                               pGCEConfig;               ///< GCE Config Data
    UINT32                                          gceConfigLength;          ///< Length of GCE Config Data
    NcLibGceFrameCfg*                               pGCEConfigUs;             ///< GCE Config Data Us
    UINT32                                          gceConfigLengthUs;        ///< Length of GCE Config Data Us
    NCLIB_CONTEXT_SGM*                              pSGMContextData;          ///< SGM Context Data
    UINT32                                          sgmContextDataLength;     ///< Length of SGM Context Data
    NcLibIcaLmcPassParams*                          pICALmcCfg;               ///< ICA LMC Config Data
    NcLibROI                                        inRoi;                    ///< ROI mapped to EVA input
    NcLibROI                                        warpOutRoiFull;           ///< Full out ICA ROI applying this DMM transform
    NcLibDmmAlignmentType                           alignmentType;            ///< Which alignment this DMM is calculating
    float                                           satScaleFactor;           ///< For SAT alignment, ratio between sensor FOVs
    float                                           sgmToIpeRatio;            ///< Requested SGM size to IPE input size ratio
    UINT64                                          requestID;                ///< Request ID for reference
    FLOAT                                           downScaleRatio;           ///< down scale ratio
    UINT32                                          dmeTunedSize;             ///< multi_frame_input_resolution
    BOOL                                            isMVWarpOnly;             ///< if MV warp only instance
    NcLibEvaCalcMvData*                             pMVData;                  ///< MV warp data
    VOID*                                           pDmmSgmAlignControlInfo;  ///< DMM SGM Align Control Info
    BOOL                                            isUsPassEnable;           ///< is upscale pass enable
    BOOL                                            isVideoMvUsPassEnable;    ///< is video upscale pass enable
    BOOL                                            isVideoMvEnable;          ///< is video Mv enable
    UINT32                                          alignmentMode;            ///< Alignment mode
    float                                           vsrLimit;                 ///< Effective/Dynamic Max VSR upscale ratio
    FLOAT                                           gceUs;                    ///< GCE VSR Upscale Factor
    NcLibEvaCalcDmmFrameIn*                         pCalcDmmFrameIn;          ///< EVA DMM frame input data
    NcLibEvaCalcVideoDmmFrameIn*                    pCalcVideoDmmFrameIn;     ///< EVA DMM video frame input data
    VOID*                                           pGeolibParams;            ///< Pointer to the geolib parameters
    VOID*                                           pMCTFAlignmentGyro;       ///< MCTF alignement gyro data
    NcLibEvaDmmMaxSizes*                            pDmmSizes;                ///< EVA output sizes
    UINT64                                          requestId;                ///< Request ID for reference
    const CHAR*                                     pNodeIdentifier;          ///< Node identifier
    NcLibFloat2                                     mvRoiSize;                ///< MV Roi size
    BOOL                                            sgmSubsample;             ///< SGM subsample
    BOOL                                            isFirstFrame;             ///< Is First frame
    FLOAT                                           absoluteMotion;           ///< Absolute Motion
};

/// @brief Input Data to DMM10 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct DMM10InitializationInputData
{
    VOID*                                   pHWSetting;             ///< Pointer to the HW Setting Object
    NcLibGceSessionCfg*                     pGCESessionConfig;      ///< GCE Config Data
    UINT32                                  gceConfigLength;        ///< Length of GCE Config Data
    NcLibGceSessionCfg*                     pGCESessionConfigUs;    ///< GCE Config Data
    UINT32                                  gceConfigLengthUs;      ///< Length of GCE Config Data
    NcLibROI                                fullOutROI;             ///< fullOut ROI
    NcLibDmmAlignmentType                   alignmentType;          ///< Type of alignment
    BOOL                                    isMVWarpOnly;           ///< indicates if instance is MV warp
    BOOL                                    isUsPassEnable;         ///< is upscale pass enable
    BOOL                                    isVideoMvEnable;        ///< is video Mv enable
    BOOL                                    isVideoMvUsPassEnable;  ///< is video upscale pass enable
    NcLibEvaMvWarpMaxSizes*                 pVideoMvmaxSizes;       ///< max EVA output sizes for MV warp pass
    NcLibImageSize                          mvVideoInSize;          ///< MV Video Warp in size
    NcLibEvaCalcDmmSessionIn*               pCalcDmmSessionIn;      ///< EVA DMM session input data
    NcLibEvaCalcVideoDmmSessionIn*          pCalcVideoDmmSessionIn; ///< EVA DMM video session input data
    FLOAT                                   sgmDS;                  ///< SGM downscale ratio
};

/// @brief Input Data to DMM11 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct DMM11InitializationInputData
{
    VOID*                                   pHWSetting;             ///< Pointer to the HW Setting Object
    NcLibGceSessionCfg*                     pGCESessionConfig;      ///< GCE Config Data
    UINT32                                  gceConfigLength;        ///< Length of GCE Config Data
    NcLibGceSessionCfg*                     pGCESessionConfigUs;    ///< GCE Config Data
    UINT32                                  gceConfigLengthUs;      ///< Length of GCE Config Data
    NcLibROI                                fullOutROI;             ///< fullOut ROI
    NcLibDmmAlignmentType                   alignmentType;          ///< Type of alignment
    BOOL                                    isMVWarpOnly;           ///< indicates if instance is MV warp
    BOOL                                    isUsPassEnable;         ///< is upscale pass enable
    BOOL                                    isVideoMvEnable;        ///< is video Mv enable
    BOOL                                    isVideoMvUsPassEnable;  ///< is video upscale pass enable
    NcLibEvaMvWarpMaxSizes*                 pVideoMvmaxSizes;       ///< max EVA output sizes for MV warp pass
    NcLibImageSize                          mvVideoInSize;          ///< MV Video Warp in size
    NcLibEvaCalcDmmSessionIn*               pCalcDmmSessionIn;      ///< EVA DMM session input data
    NcLibEvaCalcVideoDmmSessionIn*          pCalcVideoDmmSessionIn; ///< EVA DMM video session input data
    FLOAT                                   sgmDS;                  ///< SGM downscale ratio
};

/// @brief Input Data to DMM12 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct DMM12InitializationInputData
{
    VOID*                                           pHWSetting;             ///< Pointer to the HW Setting Object
    NcLibGceSessionCfg*                             pGCESessionConfig;      ///< GCE Config Data
    globalalign_1_2_1::chromatix_globalalign12Type* pGlobalAlignChromatix;  ///< Pointer to tuning mode data
    VOID*                                           pEvaDmmSessionConfig;   ///< EVA DMM Session Config
    UINT32                                          gceConfigLength;        ///< Length of GCE Config Data
    NcLibGceSessionCfg*                             pGCESessionConfigUs;    ///< GCE Config Data
    UINT32                                          gceConfigLengthUs;      ///< Length of GCE Config Data
    NcLibROI                                        fullOutROI;             ///< fullOut ROI
    NcLibDmmAlignmentType                           alignmentType;          ///< Type of alignment
    BOOL                                            isMVWarpOnly;           ///< indicates if instance is MV warp
    BOOL                                            isUsPassEnable;         ///< is upscale pass enable
    BOOL                                            isVideoMvEnable;        ///< is video Mv enable
    BOOL                                            isVideoMvUsPassEnable;  ///< is video upscale pass enable
    NcLibEvaMvWarpMaxSizes*                         pVideoMvmaxSizes;       ///< max EVA output sizes for MV warp pass
    NcLibImageSize                                  mvVideoInSize;          ///< MV Video Warp in size
    NcLibEvaCalcDmmSessionIn*                       pCalcDmmSessionIn;      ///< EVA DMM session input data
    NcLibEvaCalcVideoDmmSessionIn*                  pCalcVideoDmmSessionIn; ///< EVA DMM video session input data
    FLOAT                                           sgmDS;                  ///< SGM downscale ratio
};

/// @brief Input Data to DMM10 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct GCEInitializationInputData
{
    VOID*                                   pHWSetting;             ///< Pointer to the HW Setting Object
    NcLibGceSessionCfg*                     pGCESessionConfig;      ///< GCE Config Data
    UINT32                                  gceConfigLength;        ///< Length of GCE Config Data
    NcLibGceSessionCfg*                     pGCESessionConfigUs;    ///< GCE Config Data
    UINT32                                  gceConfigLengthUs;      ///< Length of GCE Config Data
    BOOL                                    isMVWarpOnly;           ///< indicates if instance is MV warp
    BOOL                                    isUsEnable;             ///< indicates if upscale pass is enabled
    ica_4_0_1::chromatix_ica40Type*         pICAChromatixLDg;       ///< Chromatix tuning data for ICA
    ica_4_0_1::chromatix_ica40Type*         pICAChromatixLD0;       ///< Chromatix tuning data for ICA
    ica_4_0_1::chromatix_ica40Type*         pICAChromatixLD1;       ///< Chromatix tuning data for ICA
    ica_4_0_1::chromatix_ica40Type*         pICAChromatixLD2;       ///< Chromatix tuning data for ICA
    ica_4_0_1::chromatix_ica40Type*         pICAChromatixMV;        ///< Chromatix tuning data for ICA
    ldc_1_1_1::chromatix_ldc11Type*         pLdcChromatix;          ///< Chromatix tuning data for LDC
    VOID*                           pInterpolationDataICALDg;       ///< input memory for interpolation data ICA
    VOID*                           pInterpolationDataICALD0;       ///< input memory for interpolation data ICA
    VOID*                           pInterpolationDataICALD1;       ///< input memory for interpolation data ICA
    VOID*                           pInterpolationDataICALD2;       ///< input memory for interpolation data ICA
    VOID*                           pInterpolationDataICAMV;        ///< input memory for interpolation data ICA
    VOID*                           pInterpolationDataLDC;          ///< input memory for interpolation data LDC

    VOID*                           pEvaGceSessionConfig;           ///< EVA GCE Frame Config
    VOID*                           pEvaGceSessionConfigData;       ///< EVA GCE Frame Config Data
    VOID*                           pEvaGceSessionConfigUs;         ///< EVA GCE Frame Config
    VOID*                           pEvaGceSessionConfigDataUs;     ///< EVA GCE Frame Config Data
    BOOL                            isQSAT;                         ///< Flag to indicate QSAT enabled
    BOOL                            isMFHDR;                        ///< Flag to indicate MFHDR enabled
    BOOL                            isEISEnable;                    ///< Flag to indicate if EIS is enabled
};


/// @brief Input Data to GCE IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct GCEInputData
{
    VOID*                                   pHWSetting;            ///< Pointer to the HW Setting Object
    DSX101InputData                         dsxInputDataLD0;       ///< Pointer to dsx LD0 input data
    DSX101InputData                         dsxInputDataMV;        ///< Pointer to dsx MV input data
    dsx_1_0_1::chromatix_dsx10Type*         pDSXChromatixLD0;      ///< Chromatix tuning data for DSX
    dsx_1_0_1::chromatix_dsx10Type*         pDSXChromatixMV;       ///< Chromatix tuning data for DSX
    ds4to1_1_1_0::chromatix_ds4to1v11Type*  pDS4ChromatixLD0DC4;   ///< Chromatix tuning data for DS4to1
    ds4to1_1_1_0::chromatix_ds4to1v11Type*  pDS4ChromatixLD0DC16;  ///< Chromatix tuning data for DS4to1
    ds4to1_1_1_0::chromatix_ds4to1v11Type*  pDS4ChromatixMVDC4;    ///< Chromatix tuning data for DS4to1
    ds4to1_1_1_0::chromatix_ds4to1v11Type*  pDS4ChromatixMVDC16;   ///< Chromatix tuning data for DS4to1
    ica_4_0_1::chromatix_ica40Type*         pICAChromatixLDg;      ///< Chromatix tuning data for ICA
    ica_4_0_1::chromatix_ica40Type*         pICAChromatixLD0;      ///< Chromatix tuning data for ICA
    ica_4_0_1::chromatix_ica40Type*         pICAChromatixLD1;      ///< Chromatix tuning data for ICA
    ica_4_0_1::chromatix_ica40Type*         pICAChromatixLD2;      ///< Chromatix tuning data for ICA
    ica_4_0_1::chromatix_ica40Type*         pICAChromatixMV;       ///< Chromatix tuning data for ICA
    ldc_1_1_1::chromatix_ldc11Type*         pLdcChromatix;         ///< Chromatix tuning data for LDC
    NcLibIcaGrid*                           pNCChromatixGrid;      ///< Chromatix grids
    BOOL                            symbolIDChanged;        ///< Symbol IOD changed, reload triggers
    FLOAT                           exposureTime;           ///< Input trigger value:  exposure time
    FLOAT                           exposureGainRatio;      ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;         ///< Input trigger value:  AEC sensitivity data
    FLOAT                           AECGain;                ///< Input trigger value:  AEC Gain Value
    FLOAT                           preScaleRatio;          ///< Pre Scale Ratio
    FLOAT                           luxIndex;               ///< Input trigger value:  Lux index
    UINT8                           bayerPattern;           ///< Bayer Pattern
    VOID*                           pInterpolationDataDSXLD0;       ///< input memory for interpolation data
    VOID*                           pInterpolationDataDSXMV;        ///< input memory for interpolation data
    VOID*                           pInterpolationDataICALDg;       ///< input memory for interpolation data ICA
    VOID*                           pInterpolationDataICALD0;       ///< input memory for interpolation data ICA
    VOID*                           pInterpolationDataICALD1;       ///< input memory for interpolation data ICA
    VOID*                           pInterpolationDataICALD2;       ///< input memory for interpolation data ICA
    VOID*                           pInterpolationDataICAMV;        ///< input memory for interpolation data ICA
    VOID*                           pInterpolationDataLDC;          ///< input memory for interpolation data LDC
    UINT32                          gcePassId;                      ///< GCE Pass ID for DMM
    VOID*                           pNcLibGceConfig;                ///< GCE pass config
    VOID*                           pNcLibGceConfigUs;              ///< GCE Us pass config
    NcLibGceSessionCfg*             pGCESessionConfig;              ///< GCE Config Data
    NcLibGceSessionCfg*             pGCESessionConfigUs;            ///< GCE Us Config Data
    VOID*                           pDSxData;                       ///< DSx Config for GCE
    VOID*                           pEvaGceFrameConfig;             ///< EVA GCE Frame Config
    VOID*                           pEvaGceFrameConfigData;         ///< EVA GCE Frame Config Data
    VOID*                           pEvaGceFrameConfigUs;     ///< EVA GCE Us Frame Config
    VOID*                           pEvaGceFrameConfigDataUs; ///< EVA GCE Us Frame Config Data
    BOOL                            isMVWarpOnly;             ///< EVA GCE is mv warp only
    BOOL                            isUsEnable;               ///< indicates if upscale pass is enabled
    VOID*                           pCurrUDGrid;              ///< Current frame UD Grid
    VOID*                           pCurrLD2Grid;             ///< Current frame LD2 Grid
    VOID*                           pPrevUDGrid;              ///< Previous frame UD grid
    VOID*                           pCurrStabMatrix;          ///< Current frame Stab matrix
    VOID*                           pPrevStabMatrix;          ///< Previous frame Stab matrix
    BOOL                            isQSAT;                   ///< Flag to indicate QSAT enabled
    BOOL                            isMFHDR;                  ///< Flag to indicate MFHDR enabled
    BOOL                            isEISEnable;              ///< Flag to indicate if EIS is enabled
    UINT64                          requestId;                ///< Request ID for reference
    const CHAR*                     pNodeIdentifier;          ///< Node identifier
    BOOL                            isTuningChanged;          ///< Flag to indicate TuningChanged
};

/// @brief Input Data to DMM10 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct GCE11InitializationInputData
{
    VOID*                                   pHWSetting;             ///< Pointer to the HW Setting Object
    NcLibGceSessionCfg*                     pGCESessionConfig;      ///< GCE Config Data
    UINT32                                  gceConfigLength;        ///< Length of GCE Config Data
    NcLibGceSessionCfg*                     pGCESessionConfigUs;    ///< GCE Config Data
    UINT32                                  gceConfigLengthUs;      ///< Length of GCE Config Data
    BOOL                                    isMVWarpOnly;           ///< indicates if instance is MV warp
    BOOL                                    isUsEnable;             ///< indicates if upscale pass is enabled
    gce_1_1_0::chromatix_gce11Type*         pGCEChromatixLDg;       ///< Chromatix tuning data for GCE
    gce_1_1_0::chromatix_gce11Type*         pGCEChromatixLD0;       ///< Chromatix tuning data for GCE
    gce_1_1_0::chromatix_gce11Type*         pGCEChromatixLD1;       ///< Chromatix tuning data for GCE
    gce_1_1_0::chromatix_gce11Type*         pGCEChromatixLD2;       ///< Chromatix tuning data for GCE
    ldc_1_1_1::chromatix_ldc11Type*         pLdcChromatix;          ///< Chromatix tuning data for LDC
    ica_4_1_1::chromatix_ica41Type*         pICAChromatix;          ///< Chromatix tuning data for ICA
    VOID*                           pInterpolationDataLDC;          ///< input memory for interpolation data LDC
    VOID*                           pInterpolationDataICA;          ///< input memory for interpolation data ICA
    VOID*                           pEvaGceSessionConfig;           ///< EVA GCE Frame Config
    VOID*                           pEvaGceSessionConfigData;       ///< EVA GCE Frame Config Data
    VOID*                           pEvaGceSessionConfigUs;         ///< EVA GCE Frame Config
    VOID*                           pEvaGceSessionConfigDataUs;     ///< EVA GCE Frame Config Data
    BOOL                            isQSAT;                         ///< Flag to indicate QSAT enabled
    BOOL                            isMFHDR;                        ///< Flag to indicate MFHDR enabled
    BOOL                            isEISEnable;                    ///< Flag to indicate if EIS is enabled
};


/// @brief Input Data to GCE IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct GCE11InputData
{
    VOID*                           pHWSetting;                    ///< Pointer to the HW Setting Object
    gce_1_1_0::chromatix_gce11Type* pGCEChromatixLDg;              ///< Chromatix tuning data for GCE
    gce_1_1_0::chromatix_gce11Type* pGCEChromatixLD0;              ///< Chromatix tuning data for GCE
    gce_1_1_0::chromatix_gce11Type* pGCEChromatixLD1;              ///< Chromatix tuning data for GCE
    gce_1_1_0::chromatix_gce11Type* pGCEChromatixLD2;              ///< Chromatix tuning data for GCE
    ldc_1_1_1::chromatix_ldc11Type* pLdcChromatix;                 ///< Chromatix tuning data for LDC
    ica_4_1_1::chromatix_ica41Type* pICAChromatix;                 ///< Chromatix tuning data for ICA
    NcLibIcaGrid*                   pNCChromatixGrid;              ///< Chromatix grids
    BOOL                            symbolIDChanged;               ///< Symbol IOD changed, reload triggers
    FLOAT                           exposureTime;                  ///< Input trigger value:  exposure time
    FLOAT                           exposureGainRatio;             ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;                ///< Input trigger value:  AEC sensitivity data
    FLOAT                           AECGain;                       ///< Input trigger value:  AEC Gain Value
    FLOAT                           preScaleRatio;                 ///< Pre Scale Ratio
    FLOAT                           luxIndex;                      ///< Input trigger value:  Lux index
    UINT8                           bayerPattern;                  ///< Bayer Pattern
    VOID*                           pInterpolationDataLDC;         ///< input memory for interpolation data LDC
    VOID*                           pInterpolationDataICA;         ///< input memory for interpolation data ICA
    UINT32                          gcePassId;                     ///< GCE Pass ID for DMM
    VOID*                           pNcLibGceConfig;               ///< GCE pass config
    VOID*                           pNcLibGceConfigUs;             ///< GCE Us pass config
    NcLibGceSessionCfg*             pGCESessionConfig;             ///< GCE Config Data
    NcLibGceSessionCfg*             pGCESessionConfigUs;           ///< GCE Us Config Data
    VOID*                           pDSxData;                      ///< DSx Config for GCE
    VOID*                           pEvaGceFrameConfig;            ///< EVA GCE Frame Config
    VOID*                           pEvaGceFrameConfigData;        ///< EVA GCE Frame Config Data
    VOID*                           pEvaGceFrameConfigUs;          ///< EVA GCE Us Frame Config
    VOID*                           pEvaGceFrameConfigDataUs;      ///< EVA GCE Us Frame Config Data
    BOOL                            isMVWarpOnly;                  ///< EVA GCE is mv warp only
    BOOL                            isUsEnable;                    ///< indicates if upscale pass is enabled
    VOID*                           pCurrUDGrid;                   ///< Current frame UD Grid
    VOID*                           pCurrLD2Grid;                  ///< Current frame LD2 Grid
    VOID*                           pPrevUDGrid;                   ///< Previous frame UD grid
    VOID*                           pCurrStabMatrix;               ///< Current frame Stab matrix
    VOID*                           pPrevStabMatrix;               ///< Previous frame Stab matrix
    BOOL                            isQSAT;                        ///< Flag to indicate QSAT enabled
    BOOL                            isMFHDR;                       ///< Flag to indicate MFHDR enabled
    BOOL                            isEISEnable;                   ///< Flag to indicate if EIS is enabled
    UINT64                          requestId;                     ///< Request ID for reference
    const CHAR*                     pNodeIdentifier;               ///< Node identifier
    BOOL                            isTuningChanged;               ///< Flag to indicate TuningChanged
    NcLibIcaGridGeometry            srcGridGeometry;               ///< Src GCE session grid geometry
    NcLibIcaGridGeometry            mfhdrSrcGridGeometry;          ///< MFHDR Src GCE session grid geometry
    NcLibIcaGridGeometry            mfhdrSecSrcGridGeometry;       ///< MFHDR Sec Src GCE session grid geometry
    NcLibIcaGridGeometry            qsatSrcGridGeometry;           ///< QSAT Src GCE session grid geometry
    NcLibIcaGridGeometry            qsatSecSrcGridGeometry;        ///< QSAT Sec Src GCE session grid geometry
};

/// @brief Input Data to GCE12 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct GCE12InitializationInputData
{
    VOID*                                   pHWSetting;             ///< Pointer to the HW Setting Object
    NcLibGceSessionCfg*                     pGCESessionConfig;      ///< GCE Config Data
    UINT32                                  gceConfigLength;        ///< Length of GCE Config Data
    NcLibGceSessionCfg*                     pGCESessionConfigUs;    ///< GCE Config Data
    UINT32                                  gceConfigLengthUs;      ///< Length of GCE Config Data
    BOOL                                    isMVWarpOnly;           ///< indicates if instance is MV warp
    BOOL                                    isUsEnable;             ///< indicates if upscale pass is enabled
    gce_1_2_1::chromatix_gce12Type*         pGCEChromatixLDg;       ///< Chromatix tuning data for GCE
    gce_1_2_1::chromatix_gce12Type*         pGCEChromatixLD0;       ///< Chromatix tuning data for GCE
    gce_1_2_1::chromatix_gce12Type*         pGCEChromatixLD1;       ///< Chromatix tuning data for GCE
    gce_1_2_1::chromatix_gce12Type*         pGCEChromatixLD2;       ///< Chromatix tuning data for GCE
    gce_1_2_1::chromatix_gce12Type*         pGCEChromatixMvWarp;    ///< Chromatix tuning data for GCE
    gce_1_2_1::chromatix_gce12Type*         pGCEChromatixMvWarpDs;  ///< Chromatix tuning data for GCE
    ldc_1_1_1::chromatix_ldc11Type*         pLdcChromatix;          ///< Chromatix tuning data for LDC
    ica_4_3_1::chromatix_ica43Type*         pICAChromatix;          ///< Chromatix tuning data for ICA
    VOID*                           pInterpolationDataLDC;          ///< input memory for interpolation data LDC
    VOID*                           pInterpolationDataICA;          ///< input memory for interpolation data ICA
    VOID*                           pEvaGceSessionConfig;           ///< EVA GCE Frame Config
    VOID*                           pEvaGceSessionConfigData;       ///< EVA GCE Frame Config Data
    VOID*                           pEvaGceSessionConfigUs;         ///< EVA GCE Frame Config
    VOID*                           pEvaGceSessionConfigDataUs;     ///< EVA GCE Frame Config Data
    BOOL                            isQSAT;                         ///< Flag to indicate QSAT enabled
    BOOL                            isMFHDR;                        ///< Flag to indicate MFHDR enabled
    BOOL                            isEISEnable;                    ///< Flag to indicate if EIS is enabled
};


/// @brief Input Data to GCE12 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct GCE12InputData
{
    gce_1_2_1::chromatix_gce12Type* pGCEChromatixLDg;              ///< Chromatix tuning data for GCE
    gce_1_2_1::chromatix_gce12Type* pGCEChromatixLD0;              ///< Chromatix tuning data for GCE
    gce_1_2_1::chromatix_gce12Type* pGCEChromatixLD1;              ///< Chromatix tuning data for GCE
    gce_1_2_1::chromatix_gce12Type* pGCEChromatixLD2;              ///< Chromatix tuning data for GCE
    gce_1_2_1::gce12_rgn_dataType*  pInterpolationDataLDg;         ///< input memory for interpolation data GCE
    gce_1_2_1::gce12_rgn_dataType*  pInterpolationDataLD0;         ///< input memory for interpolation data GCE
    gce_1_2_1::gce12_rgn_dataType*  pInterpolationDataLD1;         ///< input memory for interpolation data GCE
    gce_1_2_1::gce12_rgn_dataType*  pInterpolationDataLD2;         ///< input memory for interpolation data GCE
    ldc_1_1_1::chromatix_ldc11Type* pLdcChromatix;                 ///< Chromatix tuning data for LDC
    ica_4_3_1::chromatix_ica43Type* pICAChromatix;                 ///< Chromatix tuning data for ICA
    NcLibIcaGrid*                   pNCChromatixGrid;              ///< Chromatix grids
    BOOL                            symbolIDChanged;               ///< Symbol IOD changed, reload triggers
    FLOAT                           exposureTime;                  ///< Input trigger value:  exposure time
    FLOAT                           exposureGainRatio;             ///< Input trigger value:  exposure gain ratio
    FLOAT                           AECSensitivity;                ///< Input trigger value:  AEC sensitivity data
    FLOAT                           AECGain;                       ///< Input trigger value:  AEC Gain Value
    FLOAT                           preScaleRatio;                 ///< Pre Scale Ratio
    FLOAT                           luxIndex;                      ///< Input trigger value:  Lux index
    UINT8                           bayerPattern;                  ///< Bayer Pattern
    VOID*                           pInterpolationDataLDC;         ///< input memory for interpolation data LDC
    VOID*                           pInterpolationDataICA;         ///< input memory for interpolation data ICA
    UINT32                          gcePassId;                     ///< GCE Pass ID for DMM
    VOID*                           pNcLibGceConfig;               ///< GCE pass config
    VOID*                           pNcLibGceConfigUs;             ///< GCE Us pass config
    NcLibGceSessionCfg*             pGCESessionConfig;             ///< GCE Config Data
    NcLibGceSessionCfg*             pGCESessionConfigUs;           ///< GCE Us Config Data
    VOID*                           pDSxData;                      ///< DSx Config for GCE
    VOID*                           pEvaGceFrameConfig;            ///< EVA GCE Frame Config
    VOID*                           pEvaGceFrameConfigData;        ///< EVA GCE Frame Config Data
    VOID*                           pEvaGceFrameConfigUs;          ///< EVA GCE Us Frame Config
    VOID*                           pEvaGceFrameConfigDataUs;      ///< EVA GCE Us Frame Config Data
    BOOL                            isMVWarpOnly;                  ///< EVA GCE is mv warp only
    BOOL                            isUsEnable;                    ///< indicates if upscale pass is enabled
    VOID*                           pCurrUDGrid;                   ///< Current frame UD Grid
    VOID*                           pCurrLD2Grid;                  ///< Current frame LD2 Grid
    VOID*                           pPrevUDGrid;                   ///< Previous frame UD grid
    VOID*                           pCurrStabMatrix;               ///< Current frame Stab matrix
    VOID*                           pPrevStabMatrix;               ///< Previous frame Stab matrix
    BOOL                            isQSAT;                        ///< Flag to indicate QSAT enabled
    BOOL                            isMFHDR;                       ///< Flag to indicate MFHDR enabled
    BOOL                            isEISEnable;                   ///< Flag to indicate if EIS is enabled
    UINT64                          requestId;                     ///< Request ID for reference
    const CHAR*                     pNodeIdentifier;               ///< Node identifier
    BOOL                            isTuningChanged;               ///< Flag to indicate TuningChanged
    NcLibIcaGridGeometry            srcGridGeometry;               ///< Src GCE session grid geometry
    NcLibIcaGridGeometry            mfhdrSrcGridGeometry;          ///< MFHDR Src GCE session grid geometry
    NcLibIcaGridGeometry            mfhdrSecSrcGridGeometry;       ///< MFHDR Sec Src GCE session grid geometry
    NcLibIcaGridGeometry            qsatSrcGridGeometry;           ///< QSAT Src GCE session grid geometry
    NcLibIcaGridGeometry            qsatSecSrcGridGeometry;        ///< QSAT Sec Src GCE session grid geometry
};

/// @brief GCE grid/perspective configs
/// NOWHINE NC004c: Share code with system team
struct DMMGceGridPerspConfigs
{
    BOOL                srcGridEnabled;      ///< Grid enable for primary
    UINT32              srcGridGeometry;     ///< Grid Geometry for primary
    BOOL                secSrcEnabled;       ///< Grid enable for secondary
    UINT32              secSrcGridGeometry;  ///< Grid Geometry for secondary
    BOOL                srcPerspEnabled;     ///< Persp enable for primary
    UINT32              srcPerspRows;        ///< Persp rows for primary
    UINT32              srcPerspCols;        ///< Persp cols for primary
    BOOL                secSrcPerspEnabled;  ///< Persp enable for sec
    UINT32              secSrcPerspRows;     ///< Persp rows for secondary
    UINT32              secSrcPerspCols;     ///< Persp cols for secondary
};

/// @brief Input Data to DEPTH101 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct DFSSGM121InputData
{
    VOID*                                 pHWSetting;             ///< Pointer to the HW Setting Object
    dfssgm_1_2_1::chromatix_dfssgm12Type* pChromatix;             ///< Input Chromatix tunning data
    VOID*                                 pInterpolationData;     ///< input memory for interpolation data
    VOID*                                 pEVADFSFrameCfg;        ///< EVA DFS frame config Data
};

/// @brief Input Data to DFSSGM121 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct DFSSGM121InitializationInputData
{
    VOID*                                 pEvaDfsSgmSessionConfig;   ///< EVA DFS SGM Session Config
    dfssgm_1_2_1::chromatix_dfssgm12Type* pChromatix;                ///< Pointer to tuning mode data
    VOID*                                 pInterpolationData;        ///< input memory for interpolation data
};

/// @brief Input Data to DEPTH101 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct DEPTH101InputData
{
    VOID*                                 pHWSetting;             ///< Pointer to the HW Setting Object
    depth_1_0_1::chromatix_depth10Type*   pChromatix;             ///< Input Chromatix tunning data
    VOID*                                 pInterpolationData;     ///< input memory for interpolation data
    VOID*                                 pEvaDepthSgmFrameConfigInfo; ///< EVA DEPTH frame config Info
    VOID*                                 pEvaDepthSgmFrameConfigData; ///< EVA DEPTH frame config Data
};

/// @brief Input Data to DEPTH101 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct DEPTH101InitializationInputData
{
    VOID*                                 pEvaDepthSessionConfig;    ///< EVA DFS SGM Session Config
    depth_1_0_1::chromatix_depth10Type*   pChromatix;                ///< Pointer to tuning mode data
    VOID*                                 pInterpolationData;        ///< input memory for interpolation data
};

/// @brief Input Data to DPP111 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct DPP111InputData
{
    VOID*                                 pHWSetting;                ///< Pointer to the HW Setting Object
    dpp_1_1_1::chromatix_dpp11Type*       pChromatix;                ///< Input Chromatix tunning data
    UINT8                                 bayerPattern;              ///< Bayer Pattern
    VOID*                                 pInterpolationData;        ///< input memory for interpolation data
    VOID*                                 pEvaDppFrameConfig;       ///< EVA DPP frame config Info
};

/// @brief Input Data to DPP111 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct DPP111InitializationInputData
{
    VOID*                                 pEvaDppSessionConfig;      ///< EVA DPP Session Config
    dpp_1_1_1::chromatix_dpp11Type*       pChromatix;                ///< Pointer to tuning mode data
    VOID*                                 pInterpolationData;        ///< input memory for interpolation data
};


/// @brief Input Data to CSMCE11 IQ Algorithm
/// NOWHINE NC004c: Share code with system team
struct CSMCE11InputData
{
    VOID*                                   pHWSetting;         ///< Pointer to the HW Setting Object
    csmce_1_1_0::chromatix_csmce11Type *    pChromatix;         ///< Input chromatix tuning data
    BOOL                                    moduleEnble;        ///< Module enable flag
    FLOAT                                   DRCGain;            ///< Input trigger value:  DRCGain
    FLOAT                                   realGain;           ///< Input trigger value:  Real Gain Value
    FLOAT                                   luxIndex;           ///< Input trigger value:  Lux index
    FLOAT                                   exposureTime;       ///< Input trigger value:  exporsure time
    FLOAT                                   exposureGainRatio;  ///< Input trigger value:  exporsure gain Ratio
    FLOAT                                   AECSensitivity;     ///< Input trigger value:  AEC sensitivity data
    VOID*                                   pInterpolationData; ///< input memory for interpolation data

};

/// @brief Input Data to SWMFNR20 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct SWMFNR20InputData
{
    swmfnr_2_0_0::chromatix_swmfnr20Type* pChromatix;                ///< Input Chromatix tunning data
    BOOL                                  moduleEnable;              ///< Module enable flag
    BOOL                                  prevStateEnable;           ///< Previous enable flag
    FLOAT                                 totalScaleRatio;           ///< Input trigger value:  TotalScaleRatio
    FLOAT                                 DRCGain;                   ///< Input trigger value:  drcGain
    FLOAT                                 exposureTime;              ///< Input trigger value:  exporsure time
    FLOAT                                 exposureGainRatio;         ///< Input trigger value:  exposure gain ratio
    FLOAT                                 AECSensitivity;            ///< Input trigger value:  AEC sensitivity data
    FLOAT                                 luxIndex;                  ///< Input trigger value:  Lux index
    FLOAT                                 realGain;                  ///< Input trigger value:  Digital Gain Value
    UINT32                                streamWidth;               ///< Stream Width
    UINT32                                streamHeight;              ///< Stream height
    UINT32                                horizontalOffset;          ///< Horizontal Offset
    UINT32                                verticalOffset;            ///< Vertical Offset
    struct FDData*                        pFDData;                   ///< Face data
    UINT8                                 LUTBankSel;                ///< LUT bank need for this frame
    VOID*                                 pInterpolationData;        ///< input memory for interpolation data
    FLOAT                                 ica_zoom_factor;           ///< ICA Zoom Factor
    FLOAT                                 sensorScaling;             ///< Sensor scaling factor
};

/// @brief Input Data to SWMFNR30 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct SWMFNR30InputData
{
    swmfnr_3_0_0::chromatix_swmfnr30Type* pChromatix;                ///< Input Chromatix tunning data
    BOOL                                  moduleEnable;              ///< Module enable flag
    BOOL                                  prevStateEnable;           ///< Previous enable flag
    FLOAT                                 totalScaleRatio;           ///< Input trigger value:  TotalScaleRatio
    FLOAT                                 DRCGain;                   ///< Input trigger value:  drcGain
    FLOAT                                 exposureTime;              ///< Input trigger value:  exposure time
    FLOAT                                 exposureGainRatio;         ///< Input trigger value:  exposure gain ratio
    FLOAT                                 AECSensitivity;            ///< Input trigger value:  AEC sensitivity data
    FLOAT                                 AECGain;                   ///< Input trigger value:  AEC Gain Value
    FLOAT                                 luxIndex;                  ///< Input trigger value:  Lux index
    UINT32                                streamWidth;               ///< Stream Width
    UINT32                                streamHeight;              ///< Stream height
    UINT32                                horizontalOffset;          ///< Horizontal Offset
    UINT32                                verticalOffset;            ///< Vertical Offset
    UINT8                                 LUTBankSel;                ///< LUT bank need for this frame
    VOID*                                 pInterpolationData;        ///< input memory for interpolation data
    FLOAT                                 sensorScaling;             ///< Sensor scaling factor
};

/// @brief Input Data to SWMCTF10 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct SWMCTF10InputData
{
    swmctf_1_0_0::chromatix_swmctf10Type* pChromatix;                ///< Input Chromatix tunning data
    BOOL                                  moduleEnable;              ///< Module enable flag
    // BOOL                               prevStateEnable;           ///< Previous enable flag
    FLOAT                                 totalScaleRatio;           ///< Input trigger value:  TotalScaleRatio
    FLOAT                                 DRCGain;                   ///< Input trigger value:  drcGain
    FLOAT                                 exposureTime;              ///< Input trigger value:  exporsure time
    FLOAT                                 exposureGainRatio;         ///< Input trigger value:  exposure gain ratio
    FLOAT                                 AECSensitivity;            ///< Input trigger value:  AEC sensitivity data
    FLOAT                                 luxIndex;                  ///< Input trigger value:  Lux index
    FLOAT                                 realGain;                  ///< Input trigger value:  Digital Gain Value
    UINT32                                streamWidth;               ///< Stream Width
    UINT32                                streamHeight;              ///< Stream height
    UINT32                                horizontalOffset;          ///< Horizontal Offset
    VOID*                                 pInterpolationData;        ///< input memory for interpolation data
    UINT32                                verticalOffset;            ///< Vertical Offset
    FLOAT                                 sensorScaling;             ///< Sensor scaling factor
};

struct PREFERENCE101InputData
{
    preference_1_0_1::chromatix_preference10Type* pChromatix;              ///< Input Chromatix tuning data
    VOID*                                         pInterpolationData;      ///< input memory for interpolation data
    BOOL                                          moduleEnable;            ///< Module enable flag
    UINT32                                        frameNumber;             ///< Frame number
    UINT32                                        chipsetVersion;          ///< Titan version
    FLOAT                                         AECGain;                 ///< Input trigger value:  AEC Gain Value
    FLOAT                                         luxIndex;                ///< Input trigger value:  Lux index
    FLOAT                                         CCTTrigger;              ///< Input trigger value:  Lux index
    FLOAT                                         bad_pixel_correction;    ///< BPC Slider data
    FLOAT                                         Luma_noise_correction;   ///< Luma noise correction Slider data
    FLOAT                                         chroma_noise_correction; ///< Chroma noise correction Slider data
    FLOAT                                         multiframe_denoising;    ///< Multiframe denoising Slider data
    FLOAT                                         ghost_reduction;         ///< Ghost reduction Slider data
    FLOAT                                         brightness;              ///< Brightness adjustment Slider data
    FLOAT                                         contrast;                ///< Contrast Adjustment Slider data
    FLOAT                                         color;                   ///< Color  Slider data
    FLOAT                                         sharpness;               ///< Sharpness Slider data
};

/// @brief Input Data to SWMCTF20 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct SWMCTF20InputData
{
    swmctf_2_0_0::chromatix_swmctf20Type* pChromatix;                ///< Input Chromatix tunning data
    BOOL                                  moduleEnable;              ///< Module enable flag
    BOOL                                  prevStateEnable;           ///< Previous enable flag
    FLOAT                                 totalScaleRatio;           ///< Input trigger value:  TotalScaleRatio
    FLOAT                                 DRCGain;                   ///< Input trigger value:  drcGain
    FLOAT                                 exposureTime;              ///< Input trigger value:  exporsure time
    FLOAT                                 exposureGainRatio;         ///< Input trigger value:  exposure gain ratio
    FLOAT                                 AECSensitivity;            ///< Input trigger value:  AEC sensitivity data
    FLOAT                                 AECGain;                   ///< Input trigger value:  AEC Gain Value
    FLOAT                                 luxIndex;                  ///< Input trigger value:  Lux index
    UINT32                                streamWidth;               ///< Stream Width
    UINT32                                streamHeight;              ///< Stream height
    UINT32                                horizontalOffset;          ///< Horizontal Offset
    VOID*                                 pInterpolationData;        ///< input memory for interpolation data
    UINT32                                verticalOffset;            ///< Vertical Offset
    FLOAT                                 sensorScaling;             ///< Sensor scaling factor
};

/// @brief Input Data to QLL10 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct QLL10InputData
{
    qll_1_0_0::chromatix_qll10Type* pChromatix;             ///< Input Chromatix tunning data
    UINT32                          moduleEnable;           ///< Enable flag
    FLOAT                           DRCGain;                ///< Input trigger value: DRC Gain data
    FLOAT                           exposureTime;           ///< Input trigger value: exposure time
    FLOAT                           AECSensitivity;         ///< Input trigger value: AEC sensitivity data
    FLOAT                           exposureGainRatio;      ///< Input trigger value: exposure gain ratio
    FLOAT                           luxIndex;               ///< Input trigger value: Lux index
    FLOAT                           AECGain;                ///< Input trigger value: QEC Gain data
};

/// @brief Input Data to QLL10 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct QLL101InputData
{
    qll_1_0_1::chromatix_qll10Type* pChromatix;                         ///< Input Chromatix tunning data
    UINT32                          moduleEnable;                       ///< Enable flag
    VOID*                           pQLL101InterpolationData;           ///< input memory for interpolation data
};

/// @brief Input Data to QLL20 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct QLL201InputData
{
    qll_2_0_1::chromatix_qll20Type* pChromatix;             ///< Input Chromatix tunning data
    UINT32                          moduleEnable;           ///< Enable flag
    FLOAT                           DRCGain;                ///< Input trigger value: DRC Gain data
    FLOAT                           exposureTime;           ///< Input trigger value: exposure time
    FLOAT                           AECSensitivity;         ///< Input trigger value: AEC sensitivity data
    FLOAT                           exposureGainRatio;      ///< Input trigger value: exposure gain ratio
    FLOAT                           luxIndex;               ///< Input trigger value: Lux index
    FLOAT                           AECGain;                ///< Input trigger value: AEC Gain data
};


/// @brief Input Data to Video11 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct Video11InputData
{
    video_1_1_0::chromatix_video11Type*   pChromatix;             ///< Input Chromatix tunning data
    video_1_1_0::chromatix_video11Type*   pPrevChromatix;         ///< Prev Input Chromatix tunning data
    BOOL                                  moduleEnable;           ///< Module enable flag
    FLOAT                                 lensZoom;               ///< Input trigger value:  lensZoom
    FLOAT                                 exposureTime;           ///< Input trigger value:  exposure time
    FLOAT                                 exposureGainRatio;      ///< Input trigger value:  exposure gain ratio
    FLOAT                                 AECSensitivity;         ///< Input trigger value:  AEC sensitivity data
    FLOAT                                 lensPosition;           ///< Input trigger value:  Lens position
    FLOAT                                 preScaleRatio;          ///< Input trigger value:  Pre scale ratio
    FLOAT                                 luxIndex;               ///< Input trigger value:  Lux index
    FLOAT                                 AECGain;                ///< Input trigger value:  AEC Gain
};

/// @brief Input Data to Video11 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct VIDEO111InputData
{
    video_1_1_1::chromatix_video11Type*   pChromatix;             ///< Input Chromatix tunning data
    video_1_1_1::chromatix_video11Type*   pPrevChromatix;         ///< Prev Input Chromatix tunning data
    BOOL                                  moduleEnable;           ///< Module enable flag
    FLOAT                                 lensZoom;               ///< Input trigger value:  lensZoom
    FLOAT                                 exposureTime;           ///< Input trigger value:  exposure time
    FLOAT                                 exposureGainRatio;      ///< Input trigger value:  exposure gain ratio
    FLOAT                                 AECSensitivity;         ///< Input trigger value:  AEC sensitivity data
    FLOAT                                 lensPosition;           ///< Input trigger value:  Lens position
    FLOAT                                 preScaleRatio;          ///< Input trigger value:  Pre scale ratio
    FLOAT                                 luxIndex;               ///< Input trigger value:  Lux index
    FLOAT                                 AECGain;                ///< Input trigger value:  AEC Gain
};

/// @brief Input Data to VIDEO12 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct VIDEO121InputData
{
    video_1_2_1::chromatix_video12Type*   pChromatix;             ///< Input Chromatix tunning data
    video_1_2_1::chromatix_video12Type*   pPrevChromatix;         ///< Prev Input Chromatix tunning data
    BOOL                                  moduleEnable;           ///< Module enable flag
};

/// @brief Input Data to VIDEO13 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct VIDEO131InputData
{
    video_1_3_1::chromatix_video13Type* pChromatix;             ///< Input Chromatix tunning data
};

// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LSC351CalibrationDataTable
{
    FLOAT* pRGain;    ///< R gain table
    FLOAT* pGRGain;   ///< GR gain table
    FLOAT* pGBGain;   ///< GB gain table
    FLOAT* pBGain;    ///< B gain table
};

/// @brief LSC stripe output
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LSC351Stripe
{
    UINT32   lx_start_l;         ///< Start block x index, 6u
    UINT32   bx_start_l;         ///< Start subgrid x index within start block, 3u
    UINT32   bx_d1_l;            ///< x coordinate of top left pixel in start block/subgrid, 9u
};

typedef LSC34TintlessRatio LSC351TintlessRatio;
/// @brief Input Data to LSC351 IQ Algorithem
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct LSC351InputData
{
    VOID*                                       pHWSetting;           ///< Pointer to the HW Setting Object
    lsc_3_5_1::chromatix_lsc35Type*             pChromatix;           ///< Input Chromatix tunning data
    lscgolden_3_5_1::chromatix_lscgolden35Type* pGoldenChromatix;     ///< Input Chromatix tunning data
    BOOL                                        symbolIDChanged;      ///< Symbol IOD changed, reload triggers
    UINT32                                      fullResWidth;         ///< Current Sensor Image Max Output Width
    UINT32                                      fullResHeight;        ///< Current Sensor Image Max Output Height
    UINT32                                      imageWidth;           ///< Current Sensor Image Output Width
    UINT32                                      imageHeight;          ///< Current Sensor Image Output Height
    UINT32                                      offsetX;              ///< Current Sensor Image Output Width
    UINT32                                      offsetY;              ///< Current Sensor Image Output Height
    UINT32                                      scalingFactor;        ///< Scaling factor from sensor
    FLOAT                                       DRCGain;              ///< Input trigger value:  DRCGain
    FLOAT                                       exposureTime;         ///< Input trigger value:  exposure time
    FLOAT                                       exposureGainRatio;    ///< Input trigger value:  exposure Gain Ratio
    FLOAT                                       AECSensitivity;       ///< Input trigger value:  AEC sensitivity data
    FLOAT                                       luxIndex;             ///< Input trigger value:  Lux index
    FLOAT                                       realGain;             ///< Input trigger value:  real Gain Value
    FLOAT                                       LEDTrigger;           ///< Input trigger value:  LED Value
    FLOAT                                       LEDFirstEntryRatio;   ///< Ratio of Dual LED
    UINT16                                      numberOfLED;          ///< Number of LED
    FLOAT                                       lensPosTrigger;       ///< Input trigger value:  LensPosition Value
    FLOAT                                       CCTTrigger;           ///< Input trigger value:  CCT Value
    FLOAT                                       leftGGainWB;          ///< G channel gain to adjust white balance
    FLOAT                                       leftBGainWB;          ///< B channel gain to adjust white balance
    FLOAT                                       leftRGainWB;          ///< R channel gain to adjust white balance
    UINT16                                      bankSelect;           ///< Bank select for LUT table
    UINT8                                       numTables;            ///< Number of calibration tables
    LSC351CalibrationDataTable*                 pCalibrationTable;    ///< pointer to the Calibration tables
    UINT32                                      numberOfEEPROMTable;  ///< number of tables in EEPROM
    BOOL                                        toCalibrate;          ///< Indicates we need to calibrate
    LSC35Stripe                                 stripeOut;            ///< LSC changed values from striping lib
    BOOL                                        fetchSettingOnly;     ///< Flag to indicate to fetch settings for striping lib
    BOOL                                        enableCalibration;    ///< Indicates if calibration should be enabled or not
    tintless_2_3_1::chromatix_tintless23Type*   pTintlessChromatix;   ///< Pointer to tintless Chromatix
    TintlessConfig*                             pTintlessConfig;      ///< Pointer to the Tintless Algo Configurations
    ParsedTintlessBGStatsOutput*                pTintlessStats;       ///< Pointer to Parsed Tintless data
    CHITintlessAlgorithm*                       pTintlessAlgo;        ///< Pointer to the Tintless Algo resource
    BOOL                                        enableTintless;       ///< Indicates if tintless algo
    LSC351TintlessRatio                         tintlessConfig;       ///< Store tintless ratio, this will be used if tinless
                                                                      ///< algo is skipped
    BOOL                                        isTLBGStatsBinned;    ///< TinglessBG Stats is generated using CSID binned frame
    UINT8                                       bayerPattern;         ///< Bayer Pattern
    UINT32                                      blackLevelOffsetIn;   ///< Black level Offset to be Subracted before processing
    UINT32                                      blackLevelOffsetOut;  ///< Black Level Offset to be Added after processing
    BOOL                                        enableTableScaling;   ///< To scale LSC table after tintless in
    VOID*                                       pInterpolationData;         ///< Input memory for LSC interpolation data
    VOID*                                       pTintlessInterpolationData; ///< Input memory for tintless interpolation data
    UINT8                                       flashStatus;          ///< To indicate Flash Status
    UINT32                                      cameraID;             ///< camera sensor Id
    UINT32                                      sensorAR;             ///< sensorAspect ratio
    UINT32                                      expCount;             ///< Number of Exp for a HDR scene (2 Exp or 3 Exp)
};

/// @brief Tintless201 Interpolation Input
// NOWHINE NC004c: Share code with system team
struct Tintless201InterpolationInput
{
    tintless_2_0_1::chromatix_tintless20Type* pChromatix;           ///< Pointer to tintless Chromatix
    FLOAT                                     exposureTime;         ///< Input trigger value:  exposure time
    FLOAT                                     exposureGainRatio;    ///< Input trigger value:  exposure gain ratio
    FLOAT                                     AECSensitivity;       ///< Input trigger value:  AEC sensitivity data
    FLOAT                                     luxIndex;             ///< Input trigger value:  Lux index
    FLOAT                                     realGain;             ///< Input trigger value:  real Gain Value
};

/// @brief Input Data to Gamma16 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct BGamma101InputData
{
    VOID*                                         pHWSetting;         ///< Pointer to the HW Setting Object
    bayergamma_1_0_1::chromatix_bayergamma10Type* pChromatix;         ///< Input Chromatix tunning data
    BOOL                                          symbolIDChanged;    ///< Symbol ID changed, reload triggers
    UINT16                                        LUTBankSel;         ///< LUT bank used for the frame
    VOID*                                         pLibData;           ///< Pointer to the library specific data
    VOID*                                         pInterpolationData; ///< input memory for interpolation data
};

/// @ bried Input Data to BDS111 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct BDS111InputData
{
    VOID*                               pHWSetting;           ///< Pointer to the HW Setting Object
    bds_1_1_1::chromatix_bds11Type*     pChromatix;           ///< Input Chromatix tunning data
    BOOL                                moduleEnable;         ///< Enable BDS Module
    BOOL                                symbolIDChanged;      ///< Symbol ID changed, reload Triggers
    FLOAT                               leftGGainWB;          ///< G channel gain to adjust white balance
    FLOAT                               leftBGainWB;          ///< B channel gain to adjust white balance
    FLOAT                               leftRGainWB;          ///< R channel gain to adjust white balance
    UINT8                               bayerPattern;         ///< Bayer pattern
    FLOAT                               predictiveGain;       ///< Predictive Gain
    UINT32                              blackLevelResOffset;  ///< Black Level Residual Ofset
    UINT16                              inputWidth;           ///< Input Width
    VOID*                               pInterpolationData;   ///< input Memory for Chromatix Interpolation Data
    FLOAT                               preScaleRatio;        ///< Pre Scale Ratio
};

/// @ bried Input Data to BDSFour101 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct BDSFOUR101InputData
{
    VOID*                                    pHWSetting;               ///< Pointer to the HW Setting Object
    bdsfour_1_0_1::chromatix_bdsfour10Type*  pChromatix;               ///< Input Chromatix tunning data
    BOOL                                     moduleEnable;             ///< Enable BDS Module
    BOOL                                     scaleSelect;              ///< Enable x2 or x4 mode
    BOOL                                     monoEnable;               ///< Enable or disable mono mode
    BOOL                                     preCropEnable;            ///< Enable BDS Module
    BOOL                                     postCropEnable;           ///< Enable BDS Module
    BOOL                                     symbolIDChanged;          ///< Symbol ID changed, reload Triggers
    UINT8                                    bayerPattern;             ///< Bayer pattern
    UINT16                                   inputWidth;               ///< Input Width
    UINT16                                   inputHeight;              ///< Input Width
    VOID*                                    pInterpolationData;       ///< input Memory for Chromatix Interpolation Data
    UINT16                                   first_pixel_pre_crop;     ///< Pre-crop parameters
    UINT16                                   last_pixel_pre_crop;      ///< Pre-crop parameters
    UINT16                                   first_line_pre_crop;      ///< Pre-crop parameters
    UINT16                                   last_line_pre_crop;       ///< Pre-crop parameters
    UINT16                                   first_pixel_post_crop_rb; ///< Pre-crop parameters
    UINT16                                   last_pixel_post_crop_rb;  ///< Pre-crop parameters
    UINT16                                   first_line_post_crop_rb;  ///< Pre-crop parameters
    UINT16                                   last_line_post_crop_rb;   ///< Pre-crop parameters
    UINT16                                   first_pixel_post_crop_g;  ///< Pre-crop parameters
    UINT16                                   last_pixel_post_crop_g;   ///< Pre-crop parameters
    UINT16                                   first_line_post_crop_g;   ///< Pre-crop parameters
    UINT16                                   last_line_post_crop_g;    ///< Pre-crop parameters
};

/// @ bried Input Data to ABF211 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct ABF211InputData
{
    VOID*                               pHWSetting;           ///< Pointer to the HW Setting Object
    abf_2_1_1::chromatix_abf21Type*     pChromatix;           ///< Input Chromatix tunning data
    BOOL                                moduleEnable;         ///< Enable BDS Module
    VOID*                               pInterpolationData;   ///< input memory for interpolation data
    UINT8                               bayerPattern;         ///< Bayer pattern
};

/// @brief Input Data to DEMOSAIC381 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct Demosaic381InputData
{
    VOID*                                     pHWSetting;           ///< Pointer to the HW Setting Object
    demosaic_3_8_1::chromatix_demosaic38Type* pChromatix;           ///< Input Chromatix tuning data
    BOOL                                      symbolIDChanged;      ///< Symbol ID changed, reload triggers
    UINT32                                    imageWidth;           ///< Current Sensor Image Output Width
    UINT32                                    imageHeight;          ///< Current Sensor Image Output Height
    VOID*                                     pInterpolationData;   ///< input memory for interpolation data
    UINT8                                     bayerPattern;         ///< Bayer Pattern
};

/// @brief: This enumerator is for gamma look up tables
enum BGammaLUTChannel
{
    BGammaLUTChannel0 = 0, ///< G channel
    BGammaLUTChannel1 = 1, ///< B channel
    BGammaLUTChannel2 = 2, ///< R channel
    BGammaLUTMax = 3, ///< Max LUTs
};

/// @brief Input Data to CSMCE111 IQ Algorithm
/// NOWHINE NC004c: Share code with system team
struct CSMCE111InputData
{
    VOID*                                   pHWSetting;         ///< Pointer to the HW Setting Object
    csmce_1_1_1::chromatix_csmce11Type *    pChromatix;         ///< Input chromatix tuning data
    BOOL                                    moduleEnble;        ///< Module enable flag
    VOID*                                   pInterpolationData; ///< input memory for interpolation data

};

/// @brief Input Data to PDPC321 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct PDPC321InputData
{
    VOID*                             pHWSetting;                               ///< Pointer to the HW Setting Object
    pdpc_3_2_1::chromatix_pdpc32Type* pChromatix;                               ///< Input Chromatix tunning data
    BOOL                              moduleEnable;                             ///< Module enable flag
    BOOL                              prevStateEnable;                          ///< Previous enable flag
    SensorType                        sensorType;                               ///< Sensor type
    UINT32                            blackLevelOffset;                         ///< Black Level Offset
    UINT32                            imageWidth;                               ///< Current Sensor Image Output Width
    UINT32                            imageHeight;                              ///< Current Sensor Image Output Height
    UINT32                            PDAFBlockWidth;                           ///< Current Sensor Image Output Width
    UINT32                            PDAFBlockHeight;                          ///< Current Sensor Image Output Height
    UINT16                            PDAFGlobaloffsetX;                        ///< Current Sensor Image Output Width
    UINT16                            PDAFGlobaloffsetY;                        ///< Current Sensor Image Output Height
    UINT16                            LUTBankSel;                               ///< LUT bank need for this frame.
    UINT16                            zzHDRFirstRBEXP;                          ///< zzHDR First RB EXP
    UINT16                            ZZHDRPattern;                             ///< zzHDR Pattern
    UINT8                             bayerPattern;                             ///< Bayer pattern
    FLOAT                             AECSensitivity;                           ///< Input trigger value:  AEC sensitivity data
    FLOAT                             leftGGainWB;                              ///< G channel gain to adjust white balance
    FLOAT                             leftBGainWB;                              ///< B channel gain to adjust white balance
    FLOAT                             leftRGainWB;                              ///< R channel gain to adjust white balance
    PDPixelCoordinates                PDAFPixelCoords[MAX_CAMIF_PDAF_PIXELS];   ///< Pixel coordinates
    UINT32                            PDAFPixelCount;                           ///< PD pixel count
    VOID*                             pInterpolationData;                       ///< input memory for interpolation data
    UINT32                            chipsetVersion;                           ///< Titan Version
    BOOL                              pdpcEnable;                               ///< PDPC Enable
    BOOL                              bpcEnable;                                ///< BPC Enable
    NRMConfigData                     nrmCfgData;                               ///< NRM config data
};

static const UINT32 PDPC321DMILengthDword = 64;

/// @brief Input Data to GTM121 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct GTM121InputData
{
    VOID*                           pHWSetting;             ///< Pointer to the HW Setting Object
    gtm_1_2_1::chromatix_gtm12Type* pChromatix;             ///< Input Chromatix tunning data
    BOOL                            symbolIDChanged;        ///< Symbol IOD changed, reload triggers
    FLOAT                           AECSensitivity;         ///< Input trigger value:  AEC sensitivity data
    UINT8                           LUTBankSel;             ///< LUT bank need for this frame
                                                            /// @todo (CAMX-1843) Need to populate below parameters
                                                            ///        from Meta data/calculated values
    UINT32*                         pGRHist;                ///< BHIST GR stats
    FLOAT                           HDRExpTimeRatio;        ///< HDR exposure time ratio
    UINT16                          HDRMSBAlign;            ///< HDR MSB alignment
    UINT16                          HDRExpRatio;            ///< HDR exposure ratio
    UINT16                          HDRBlackIn;             ///< Black level input
    UINT32                          totalNumFrames;         ///< Total number of frames
    UINT32                          frameNum;               ///< Current frame number
    FLOAT                           keyPrevious;            ///< Key from previous frame
    FLOAT                           alphaPrevious;          ///< Alpha from previous frame
    INT32                           maxVHistPrevious;       ///< Maximum value in histogram from previous frame
    INT32                           minVHistPrevious;       ///< Minimum value in histogram from previous frame
    VOID*                           pLibData;               ///< Pointer to the library specific data
    ADRCData*                       pAdrcInputData;         ///< Pointer to the input data for adrc algo calculation
    UINT64                          BHistRequestID;         ///< RequestID to which the BHIST stats correspond to
    UINT32                          maxPipelineDelay;       ///< Maximum pipeline delay
    VOID*                           pInterpolationData;     ///< input memory for interpolation data
    UINT32                          chipsetVersion;         ///< Titan version
};

/// @brief Input Data to LTM151 IQ Algorithm
// NOWHINE NC004c: Share code with system team
struct LTM151InputData
{
    VOID*                           pHWSetting;                    ///< Pointer to the HW Setting Object
    ltm_1_5_1::chromatix_ltm15Type* pChromatix;                    ///< Input Chromatix tunning data
    UINT32                          imageWidth;                    ///< Current Sensor Image Output Width
    UINT32                          imageHeight;                   ///< Current Sensor Image Output Height
    FLOAT                           luxIndex;                      ///< Input trigger value: Lux index
    FLOAT                           exposureIndex;                 ///< Exposure Index, Same as Lux index for non TMC cases
    FLOAT                           prevExposureIndex;             ///< Exposure Index of Previous Frame
    FLOAT                           realGain;                      ///< Input trigger value: Real Gain Value
    INT32*                          pGammaPrev;                    ///< Ptr to cached version of InverseGamma() input gamma
    INT32*                          pIGammaPrev;                   ///< Ptr to cached version of InverseGamma() output igamma
    FLOAT                           gammaOutput[65];               ///< Gamma ouput from gamma15 module
    ADRCData*                       pAdrcInputData;                ///< Pointer to the input data for adrc algo calculation.
    VOID*                           pInterpolationData;            ///< input memory for interpolation data
    UINT16                          first_pixel;                   ///< Pre-crop parameters
    UINT16                          last_pixel;                    ///< Pre Crop Parameters
    UINT16                          first_line;                    ///< Pre Crop Parameters
    UINT16                          last_line;                     ///< Pre Crop Parameters
    BOOL                            LTM_data_collect_enable;       ///< LTM data collect enable
    INT16                           LTM_Dc_Pass;                   ///< LTM DC pass
};


/// @brief Input Data to SHDR111 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct SHDR111InputData
{
    shdr_1_1_1::chromatix_shdr11Type*             pChromatix;                      ///< Input Chromatix tunning data
    BOOL                                          moduleEnable;                    ///< Module enable flag
    VOID*                                         pSHDR111InterpolationData;       ///< input memoryfor interpolation data
};

/// @brief Input Data to SHDR111 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct SHDR121InputData
{
    shdr_1_2_1::chromatix_shdr12Type*             pChromatix;                      ///< Input Chromatix tunning data
    BOOL                                          moduleEnable;                    ///< Module enable flag
    VOID*                                         pSHDR121InterpolationData;       ///< input memoryfor interpolation data
};

/// @brief Input Data to VideoRetouch101 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct VideoRetouch101InputData
{
    videoretouch_1_0_1::chromatix_videoretouch10Type* pChromatix;                         ///< Input Chromatix tunning data
    BOOL                                              moduleEnable;                       ///< Module enable flag
    VOID*                                             pVideoRetouch101InterpolationData;  ///< input memory for interpolation
};

/// @brief Input Data to MRC101 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct MRC101InputData
{
    mrc_1_0_1::chromatix_mrc10Type* pChromatix;                         ///< Input Chromatix tunning data
    UINT32     chipsetVersion;                                          ///< chipset version
};

/// @brief Input Data to EIS14 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct EIS15InputData
{
    eis_1_5_0::chromatix_eis15Type* pChromatix;             ///< Input Chromatix tunning data
    UINT32                          moduleEnable;           ///< Enable flag
};

/// @brief Input Data to VideoRetouch101 IQ Algorithm
// NOWHINE NC004c : Shared file with system team so uses non-CamX file naming
struct SWVRTInputData
{
    VOID*                                             pChromatix;                         ///< Input Chromatix tunning data
    BOOL                                              moduleEnable;                       ///< Module enable flag
    VOID*                                             pVideoRetouch101InterpolationData;  ///< input memory for interpolation
};

#endif // IQCOMMONDEFS_H
