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

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file  camxstatsdebugdatatypes.h
/// @brief Debug data types class declarations
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef CAMXSTATSDEBUGDATATYPES_H
#define CAMXSTATSDEBUGDATATYPES_H

#include "camxincs.h"

// Divide the 2-byte TypeID space into sectors, each allowing 256 types.
// This is merely a guideline; developers need not strictly adhere to this size.
#define TAGTYPE_SECTOR_SIZE         0x100
#define TAGTYPE_BASIC_MAX           0x40
#define TAGTYPE_AEC_MAX             (TAGTYPE_BASIC_MAX + (TAGTYPE_SECTOR_SIZE * 1))
#define TAGTYPE_AWB_MAX             (TAGTYPE_BASIC_MAX + (TAGTYPE_SECTOR_SIZE * 2))
#define TAGTYPE_AF_MAX              (TAGTYPE_BASIC_MAX + (TAGTYPE_SECTOR_SIZE * 3))
#define TAGTYPE_ASD_MAX             (TAGTYPE_BASIC_MAX + (TAGTYPE_SECTOR_SIZE * 4))
#define TAGTYPE_AFD_MAX             (TAGTYPE_BASIC_MAX + (TAGTYPE_SECTOR_SIZE * 5))
#define TAGTYPE_TUNING_MAX_SEC_1    (TAGTYPE_BASIC_MAX + (TAGTYPE_SECTOR_SIZE * 6))
#define TAGTYPE_CONCISE_AEC_MAX     (TAGTYPE_BASIC_MAX + (TAGTYPE_SECTOR_SIZE * 7))
#define TAGTYPE_CONCISE_AWB_MAX     (TAGTYPE_BASIC_MAX + (TAGTYPE_SECTOR_SIZE * 8))
#define TAGTYPE_CONCISE_AF_MAX      (TAGTYPE_BASIC_MAX + (TAGTYPE_SECTOR_SIZE * 9))
#define TAGTYPE_TFE_OPE_MAX         (TAGTYPE_BASIC_MAX + (TAGTYPE_SECTOR_SIZE * 10))
#define TAGTYPE_RESERVED1           (TAGTYPE_BASIC_MAX + (TAGTYPE_SECTOR_SIZE * 11)) // Reserving tag type for automotive data
#define TAGTYPE_RESERVED2           (TAGTYPE_BASIC_MAX + (TAGTYPE_SECTOR_SIZE * 12)) // Reserving tag type for automotive data
#define TAGTYPE_RESERVED3           (TAGTYPE_BASIC_MAX + (TAGTYPE_SECTOR_SIZE * 13)) // Reserving tag type for automotive data
#define TAGTYPE_AFC_SNAP_MAX        (TAGTYPE_BASIC_MAX + (TAGTYPE_SECTOR_SIZE * 14))
#define TAGTYPE_AFC_PREVIEW_MAX     (TAGTYPE_BASIC_MAX + (TAGTYPE_SECTOR_SIZE * 15))
#define TAGTYPE_TUNING_MAX_SEC_2    (TAGTYPE_BASIC_MAX + (TAGTYPE_SECTOR_SIZE * 16))
#define TAGTYPE_RESERVED_START      (TAGTYPE_SECTOR_SIZE * 254)
#define TAGTYPE_RESERVED_MAX        ((TAGTYPE_SECTOR_SIZE * 255) - 1)
#define TAGTYPE_OEM_START           (TAGTYPE_SECTOR_SIZE * 255)
#define TAGTYPE_OEM_MAX             (TAGTYPE_BASIC_MAX + (TAGTYPE_SECTOR_SIZE * 255)) // This is the limit for 2-bytes


// Divide the 2-byte TagID space into sectors, each allowing 512 tags.
// This should allow for a maximum of 128 sectors. Note that there is no requirement to strictly adhere to this guideline; so
// one could have TagID spaces much smaller or larger than this size defined here.
// Disclaimer: existing size definitions determine the start of the subsequent TagID space - and as such anything that is
// already released cannot be modified. Below sizes can therefore not change without adding necessary placeholders to ensure
// enum values stay constant across releases.
#define TAGID_SECTOR_SIZE           0x200
#define TAGID_BUILTIN_MAX           0x40
#define TAGID_AEC_MAX               (TAGID_BUILTIN_MAX + (TAGID_SECTOR_SIZE * 1))
#define TAGID_AWB_MAX               (TAGID_BUILTIN_MAX + (TAGID_SECTOR_SIZE * 2))
#define TAGID_AF_MAX                (TAGID_BUILTIN_MAX + (TAGID_SECTOR_SIZE * 3))
#define TAGID_ASD_MAX               (TAGID_BUILTIN_MAX + (TAGID_SECTOR_SIZE * 4))
#define TAGID_AFD_MAX               (TAGID_BUILTIN_MAX + (TAGID_SECTOR_SIZE * 5))
#define TAGID_TUNING_MAX_SECTION_1  (TAGID_BUILTIN_MAX + (TAGID_SECTOR_SIZE * 6))
#define TAGID_CONCISE_AEC_MAX       (TAGID_BUILTIN_MAX + (TAGID_SECTOR_SIZE * 7))
#define TAGID_CONCISE_AWB_MAX       (TAGID_BUILTIN_MAX + (TAGID_SECTOR_SIZE * 8))
#define TAGID_CONCISE_AF_MAX        (TAGID_BUILTIN_MAX + (TAGID_SECTOR_SIZE * 9))
#define TAGID_TFE_OPE_MAX           (TAGID_BUILTIN_MAX + (TAGID_SECTOR_SIZE * 10))
#define TAGID_TUNING_MAX_SECTION_2  (TAGID_BUILTIN_MAX + (TAGID_SECTOR_SIZE * 11))
#define TAGID_RESERVED1             (TAGID_BUILTIN_MAX + (TAGID_SECTOR_SIZE * 12)) // Reserving tag ID for automotive data
#define TAGID_RESERVED2             (TAGID_BUILTIN_MAX + (TAGID_SECTOR_SIZE * 13)) // Reserving tag ID for automotive data
#define TAGID_AFC_SNAP_MAX          (TAGID_BUILTIN_MAX + (TAGID_SECTOR_SIZE * 14))
#define TAGID_OEM_START             (TAGID_SECTOR_SIZE * 127)
#define TAGID_OEM_MAX               (TAGID_BUILTIN_MAX + (TAGID_SECTOR_SIZE * 127))

CAMX_BEGIN_PACKED

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// NOTE: It must be enforced that new tags only get added to the bottom of this enum of each reserved section.
/// Aka add the new definition right above the "XXX  tag IDs - END". ID values which already exist must not change.
/// tag values should be hard coded and guaranteed to never change
//      so eliminate user error by hard coding values
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///< @brief Defines the type of IDs for the debug data tag
///  NOTE: The values defined in this enum MUST NOT change! If an ID is being deprecated - developers can rename the ID to
///        to indicate that it is deprecated - but should not remove it.
enum class DebugDataTagID : UINT16
{
    UnusedSpace                         = 0,                            ///< Unused space in debug data buffer
    ReservedBasic                       = TAGID_BUILTIN_MAX,            ///< Reserved above can only be used as basic type definition

    // AEC tag IDs - START
    AECConfiguration,
    AECFrameHistory,
    AECModeHistory,
    AECMetering,
    AECConvergence,
    AECArbitration,
    AECExtension,
    AECStatsLumaRegion,
    AECExtremeColor,
    AECHistogram,
    AECLEDTable,
    AECFlash,
    AECBGProcResult,
    AECBHistProcResult,
    AECBayerStats,
    AECBayerHistogram,
    AECAlgorithmVersion,
    // AECX tag IDs - START
    AECXContext,
    AECXFrameHistory,
    AECXMetering,
    AECXConvergence,
    AECXArbitration,
    AECXExtension,
    AECXLEDTable,
    AECXFlash,
    AECXStats,
    AECXPrecisionFlah,
    AECXAlgorithmVersion,
    AECXNZSLMetering,
    AECXNZSLArbitration,
    AECXCamSync,
    AECXAutoHDRDebugTag,
    AECXFrameControlDebugTag,
    AECXSetInputDebugTag,
    AECTagIDMax                         = TAGID_AEC_MAX,
    // AEC tag IDs - END

    // AWB tag IDs - START
    AWBSetParam,                        ///< Deprecated
    AWBReferencePoints,
    AWBMWBGains,
    AWBCurFrameDecision,
    AWBPreFrameDecision,
    AWBPreValidDAPoint,
    AWBPreValidGA,
    AWBFrameIndex,
    AWBLuxIndex,
    AWBSubSampleData,
    AWBStatsScreenData,
    AWBIlluWeightVector,
    AWBDistWeightVector,
    AWBCustRefPoint,
    AWBMLCZData,
    AWBAGWData,
    AWBSAGen1InstanceCnt,
    AWBSAGen1Data,
    AWBSAFaceAssist,
    AWBDecisionAggregator,
    AWBTrigleGainAdjust,
    AWBTemporalConverg,
    AWBDSFData,
    AWBSensorCallibration,
    AWBHistoryInfo,
    AWBFlashData,
    AWBStatsInfo,
    AWBBestShotData,
    AWBLockAWBPoint,
    AWBLCDFlashData,
    AWBLEDTorchData,
    AWBBGStats,
    AWBSADualcamSync,
    AWBSCBasedConverge,
    AWBExternalInfo,
    AWBCustomizedSAInfo,
    AWBMLCZ2Data,
    AWBSAGen2InstanceCnt,
    AWBSAGen2Data,
    AWBGlobalEnvData,
    AWBGeneralWeightVector,
    AWBMLCZ3Data,
    AWBSpectralSensorAssistWeightVector,
    AWBAlgorithmVersion,
    AWBBGStatsExtension,
    AWBTemporalAWBData,
    AWBHDRStatsMerger,                    /// Deprecated
    AWBMFHDRShortStats,
    AWBHDRStatsMergerConcise,
    AWBSALocalAdjData,
    AWBBGWType,
    AWBBFWType,
    AWBSetParamData,
    AWBTagIDMax                         = TAGID_AWB_MAX,
    // AWB tag IDs - END

    // AF tag IDs - START
    AFFarEnd,
    AFNearEnd,
    AFFocalLength,
    AFFocalNumber,
    AFPixelSize,
    AFFocusDistance,
    AFActuatorSensitivity,
    AFCamifWidth,
    AFCamifHeight,
    AFActuator,
    AFConfigFrameId,
    AFGammaTableEnable,
    AFGammaTableLength,
    AFGammaTableContent,
    AFHorizontalKernel,
    AFVerticalKernel,
    AFSoftwareKernel,
    AFRoiInfo,
    AFRoiPattern,
    AFRoiGridSizeH,
    AFRoiGridSizeV,
    AFRoiGridGapH,
    AFRoiGridGapV,
    AFInputSel,
    AFGreenChannelSel,
    AFYChannelWeight,
    AFScaleEnable,
    AFScaleM,
    AFScaleN,
    AFCurrentMonitorIndex,
    AFMonitorHistorySize,
    AFActiveMonMask,
    AFMonitorCommonData,
    AFMonitorCAF,
    AFMonitorPDAF,
    AFMonitorTOF,
    AFCurrentConvergeIndex,
    AFConvergeHistorySize,
    AFActiveAlgoMask,
    AFConvergeCommonData,
    AFConvergeSingleAFData,
    AFConvergeCafFineScanData,
    AFConvergeTofData,
    AFConvergePDData,
    AFConvergeFollowerData,
    AFAlgorithmVersion,
    PDLibVersion,
    AFTagIDMax                          = TAGID_AF_MAX,
    // AF tag IDs - END

    // ASD tag IDs - START
    ASDTagIDMax                         = TAGID_ASD_MAX,
    // ASD tag IDs - END

    // AFD + AFC preview tag IDs - START
    AFDAlgorithmVersion,
    AFDSummaryData,
    AFDRowSumStatsData,
    AFDDataFromAECAF,
    AFDLegacyRollingData,
    AFDLegacyStaticData,
    AFDCorrelationRollingData,
    AFDCorrelationStaticData,
    AFDRowSumStatInfo,
    AFDDifferenceStatInfo,
    AFDStaticCorrelationStepInfo,
    AFDStaticEnergyRatio,
    AFDStaticAbsEnergy,

    AFCPreviewAlgorithmVersion,
    AFCPreviewStatsConfigTag,
    AFCPreviewCameraInfoTag,
    AFCPreviewMetadataTag,
    AFCPreviewStatsInfoTag,
    AFCPreviewTemporalContextTag,
    AFCPreviewInternalOutTag,
    AFCPreviewFCGOutDataTag,
    AFCPreviewDebugSWConfigTag,
    AFDTagIDMax                         = TAGID_AFD_MAX,
    // AFD + AFC preview tag IDs - END

    // Tuning tag IDs Section1 - START
    TuningAECData,
    TuningAWBData,
    TuningSensorPixelFormat,
    TuningSensorNumPixelsPerLine,
    TuningSensorNumLinesPerFrame,
    TuningSensorMaxLineCount,
    TuningSensorResoultion,
    TuningSensorCropInfo,
    TuningBinningTypeH,
    TuningBinningTypeV,
    TuningIFEGamma16PackedLUT,
    TuningIFEGTM10PackedLUT,
    TuningIFELSC34PackedMesh,
    TuningBPSPedestalRegister,
    TuningBPSPedestalPackedLUT,
    TuningBPSLinearizationRegister,
    TuningBPSLinearizationPackedLUT,
    TuningBPSBPCPDPC20Register,
    TuningBPSBPCPDPC20PackedLUT,
    TuningBPSHDR22Register,
    TuningBPSGICRegister,
    TuningBPSGICPackedNoiseLUT,
    TuningBPSABFRegister,
    TuningBPSABFPackedLUT,
    TuningBPSLSC34Register,
    TuningBPSLSC34PackedMesh,
    TuningBPSWBRegister,
    TuningBPSDemosaicRegister,
    TuningBPSDemuxRegister,
    TuningBPSCCRegister,
    TuningBPSGTMPackedLUT,
    TuningBPSGammaLUT,
    TuningBPSCST12Register,
    TuningBPSHNR10Register,
    TuningBPSHNR10PackedLUT,
    TuningIPEGamma15PackedLUT,
    TuningBPSModulesConfigRegister,             ///< Deprecated
    TuningBPSTriggerModulesData,
    TuningBPSensorConfigData,
    TuningIPEGamma15PackedLUTOffline,
    TuningIPEModulesConfigRegister,             ///< Deprecated
    TuningIPEModulesConfigRegisterOffline,      ///< Deprecated
    TuningIPEICA10InputPackedLUT,
    TuningIPEICA10InputPackedLUTOffline,
    TuningIPEICA10ReferencePackedLUT,
    TuningIPEICA10ReferencePackedLUTOffline,
    TuningIPEANR10Register,
    TuningIPEANR10RegisterOffline,
    TuningIPETF10Register,
    TuningIPETF10RegisterOffline,
    TuningIPECAC2xRegister,
    TuningIPECAC2xRegisterOffline,
    TuningIPECST12Register,
    TuningIPECST12RegisterOffline,
    TuningIPELTM13PackedLUT,
    TuningIPELTM13PackedLUTOffline,
    TuningIPECC13Register,
    TuningIPECC13RegisterOffline,
    TuningIPE2DLUT10Register,
    TuningIPE2DLUT10RegisterOffline,
    TuningIPE2DLUT10PackedLUT,
    TuningIPE2DLUT10PackedLUTOffline,
    TuningIPEChromaEnhancement12Register,
    TuningIPEChromaEnhancement12RegisterOffline,
    TuningIPEChromasuppression20Register,
    TuningIPEChromasuppression20RegisterOffline,
    TuningIPESCE11Register,
    TuningIPESCE11RegisterOffline,
    TuningIPEASFRegister,                      ///< Deprecated
    TuningIPEASFRegisterOffline,               ///< Deprecated
    TuningIPEASF30PackedLUT,
    TuningIPEASF30PackedLUTOffline,
    TuningIPEUpscaler20PackedLUT,
    TuningIPEUpscaler20PackedLUTOffline,
    TuningIPEGrainAdder10PackedLUT,
    TuningIPEGrainAdder10PackedLUTOffline,
    TuningBPSHNRFace,
    TuningIPEASFFace,
    TuningIPEASFFaceOffline,
    TuningIPEANRFace,
    TuningIPEANRFaceOffline,
    TuningIPELTMExposureIndex,
    TuningIPELTMExposureIndexOffline,
    TuningBPSExposureGainRatio,
    TuningBPSNodeInfo,
    TuningIPENodeInfo,
    TuningIPENodeInfoOffline,
    TuningIPETuningMode,
    TuningIPETuningModeOffline,
    TuningIPEModulesConfigRegisterV1,          ///< Deprecated
    TuningIPEModulesConfigRegisterOfflineV1,   ///< Deprecated
    TuningIFEModuleEnableConfig,
    TuningIFETriggerModulesData,
    TuningIFEHDR2xRegister,
    TuningIFESensorConfigData,
    TuningBPSBPCPDPC30PackedLUT,
    TuningBPSBPCPDPC30Register,
    TuningBPSHDR30Register,
    TuningBPSLSC40Register,
    TuningBPSLSC40PackedMesh,
    TuningIPEHNR10RegisterOffline,
    TuningIPEHNR10PackedLUTOffline,
    TuningIPEHNRFaceOffline,
    TuningBPSFirmwareHeader,
    TuningBPSChipsetVersion,
    TuningIFELSC34Register,
    TuningIFELSC40Register,
    TuningIFELSC40PackedMesh,
    TuningIFEGamma16Register17x,
    TuningIFEGamma16Register480,
    TuningIFEGTM10Register17x,
    TuningIFEGTM10Register480,
    TuningIFEHDR30Register,
    TuningIPEHNR10Register,
    TuningIPEHNR10PackedLUT,
    TuningIPEHNRFace,
    TuningIPEICA30InputPackedLUT,
    TuningIPEICA30InputPackedLUTOffline,
    TuningIPEICA30ReferencePackedLUT,
    TuningIPEICA30ReferencePackedLUTOffline,
    TuningIPELENR10Register,
    TuningIPELENR10RegisterOffline,
    TuningIPELENRFace,
    TuningIPELENRFaceOffline,
    TuningIPELTM14PackedLUT,
    TuningIPELTM14PackedLUTOffline,
    TuningIPETF20Register,
    TuningIPETF20RegisterOffline,
    TuningIPEASF30Register,
    TuningIPEASF30RegisterOffline,
    TuningIPEFirmwareHeader,
    TuningIPEFirmwareHeaderOffline,
    TuningIPEChipsetVersion,
    TuningIPETriggerModulesData,
    TuningIPETriggerModulesDataOffline,
    TuningMultiFrameNumOfFrames,
    TuningIHDRSensor,
    TuningTMCTrigger,
    TuningDSX10Register,
    TuningDSX10RegisterOffline,
    TuningDSX10PackedLUT,
    TuningDSX10PackedLUTOffline,
    TuningMFHDRGamma16PackedLUT,
    TuningMFHDRGamma16PackedLUTOffline,
    TuningMFHDRCST0Register,
    TuningMFHDRCST0RegisterOffline,
    TuningMFHDRCST1Register,
    TuningMFHDRCST1RegisterOffline,
    TuningMFHDRCST2Register,
    TuningMFHDRCST2RegisterOffline,
    TuningMFHDRCST3Register,
    TuningMFHDRCST3RegisterOffline,
    TuningMFHDRMAC10Register,
    TuningMFHDRMAC10RegisterOffline,
    TuningMFHDRMAC10PackedLUT,
    TuningMFHDRMAC10PackedLUTOffline,
    TuningMFHDRGTM13PackedLUT,
    TuningMFHDRGTM13PackedLUTOffline,
    TuningMFHDRGTM13Register,
    TuningMFHDRGTM13RegisterOffline,
    TuningLTM16PackedLUT,
    TuningLTM16PackedLUTOffline,
    TuningMFHDRLTM16Register,
    TuningMFHDRLTM16RegisterOffline,
    TuningIFENodeInfo,
    TuningMFHDRTintlessBGShort,
    TuningMFHDRTintlessBGMedium,
    TuningMFHDRTintlessBGLong,
    TuningMFHDRBHistShort,
    TuningMFHDRBHistMedium,
    TuningMFHDRBHistLong,
    TuningSnapshotFrameExpType,
    TuningBPSLSC351Register,
    TuningBPSLSC351PackedMesh,
    TuningAWBBGStats17Register,
    TuningBayerGTM101Register,
    TuningBayerGTM101LUT,
    TuningBayerLTM101Register,
    TuningBayerLTM101LUT,
    TuningBayerLTM111Register,
    TuningBayerLTM111PackedLUT,
    TuningBC101Register,
    TuningBHist16Register,
    TuningBLS121Register,
    TuningABF411Register,
    TuningABF411LUT,
    TuningPDPC311Register,
    TuningPDPC311LUT,
    TuningCC131Register,
    TuningCG141Register,
    TuningCST12Register,
    TuningCompDecomp20Register,
    TuningDecomp21Register,
    TuningDemosaic361Register,
    TuningGamma151LUT,
    TuningGIC311Register,
    TuningGIC311LUT,
    TuningGTM131Register,
    TuningGTM131LUT,
    TuningLCAC111Register,
    TuningLCAC111LUT,
    TuningLSC411Register,
    TuningLSC411LUT,
    TuningUVGamma101LUT,
    TuningWB201Register,
    TuningUVGamma101Register,
    TuningDemux141Register,
    TuningDemux161Register,
    TuningBPCABF411PacketLUT,
    TuningIFEUnifiedHDRInfo,
    TuningTF211Register,
    TuningTF211RegisterOffline,
    TuningASF341Register,
    TuningASF341RegisterOffline,
    TuningASF341PackedLUT,
    TuningASF341PackedLUTOffline,
    TuningLENR101Register,
    TuningLENR101RegisterOffline,
    TuningCAC231Register,
    TuningCAC231RegisterOffline,
    TuningCC131RegisterOffline,
    TuningCS201Register,
    TuningCS201RegisterOffline,
    TuningSCE111Register,
    TuningSCE111RegisterOffline,
    TuningLTM161Register,
    TuningLTM161RegisterOffline,
    TuningLTM161PackedLUT,
    TuningLTM161PackedLUTOffline,
    TuningMFHDRLTM161ExposureIndex,
    TuningMFHDRLTM161ExposureIndexOffline,
    TuningMFHDRGamma1513PackedLUT,
    TuningMFHDRGamma1513PackedLUTOffline,
    TuningICA401InputPackedLUT,
    TuningICA401InputPackedLUTOffline,
    TuningICA401ReferencePackedLUT,
    TuningICA401ReferencePackedLUTOffline,
    TuningBLUR101Register,
    TuningBLUR101PackedLUT,
    TuningVSE101Register,
    TuningVSE101PackedLUT,
    TuningUVGamma101LUTOffline,
    TuningHDR10p101Register,
    TuningCST12RegisterOffline,
    TuningMFHDRCST120Register,
    TuningMFHDRCST120RegisterOffline,
    TuningMFHDRCST121Register,
    TuningMFHDRCST121RegisterOffline,
    TuningMFHDRCST122Register,
    TuningMFHDRCST122RegisterOffline,
    TuningChromaEnhancement121Register,
    TuningChromaEnhancement121RegisterOffline,
    TuningIPEFirmwareHeader680,
    TuningIPEFirmwareHeader680Offline,
    TuningBLUR101RegisterOffline,
    TuningBLUR101PackedLUTOffline,
    TuningVSE101RegisterOffline,
    TuningVSE101PackedLUTOffline,
    TuningGIC311RegisterOffline,
    TuningGIC311LUTOffline,
    TuningABF411RegisterOffline,
    TuningABF411LUTOffline,
    TuningBLS121RegisterOffline,
    TuningDemosaic381Register,
    TuningDemosaic381RegisterOffline,
    TuningGamma161LUT,
    TuningGamma161LUTOffline,
    TuningANR121Register,
    TuningANR121RegisterOffline,
    TuningTF121Register,
    TuningTF121RegisterOffline,
    TuningGamma151LUTOffline,
    TuningGTM121LUT,
    TuningGTM121LUTOffline,
    TuningLTM151Register,
    TuningLTM151RegisterOffline,
    TuningLTM151LUT,
    TuningLTM151LUTOffline,
    TuningCSMCE111Register,
    TuningCSMCE111RegisterOffline,
    TuningASF331Register,
    TuningASF331RegisterOffline,
    TuningASF331PackedLUT,
    TuningASF331PackedLUTOffline,
    TuningICA321ReferencePackedLUT,
    TuningICA321ReferencePackedLUTOffline,
    TuningBPSHDR301Register,
    TuningBPSBPCPDPC301PackedLUT,
    TuningBPSBPCPDPC301Register,
    TuningHDR501Register,
    TuningHDR501PacketLUT,
    TuningRemosaicBin101Register,
    TuningQPDPC101Register,
    TuningQPDPC101PacketLUT,
    TuningLSC361Register,
    TuningLSC361PacketLUT,
    TuningCrop12Register,
    TuningLCR11Register,
    TuningQCFADemux20Register,
    TuningBPSBDSFour101Register,
    TuningBGamma101LUT,
    TuningBPSLSC401Register,
    TuningBPSLSC401PackedMesh,
    TuningIPEASF301PackedLUT,
    TuningIPEASF301PackedLUTOffline,
    TuningIPEASF301Register,
    TuningIPEASF301RegisterOffline,
    TuningIPETF201Register,
    TuningIPETF201RegisterOffline,
    TuningIPELTM141PackedLUT,
    TuningIPELTM141PackedLUTOffline,
    TuningGamma151LUTRGBout,
    TuningRemosaicBin101LUT,
    TuningQCFADemux20LUT,
    TuningQCFADemux20ExpLUT,
    TuningMFHDRRGBMAC50Register,
    TuningMFHDRRGBMAC50RegisterOffline,
    TuningMFHDRRGBMAC50PackedLUT,
    TuningMFHDRRGBMAC50PackedLUTOffline,
    TuningICA411InputPackedLUT,
    TuningICA411InputPackedLUTOffline,
    TuningICA411ReferencePackedLUT,
    TuningICA411ReferencePackedLUTOffline,
    TuningLSC421Register,
    TuningLSC421LUT,
    TuningWB211Register,
    TuningPDPCBPC1D151Register,
    TuningPDPCBPC1D151LUT,
    TuningANR141Register,
    TuningANR141RegisterOffline,
    TuningANR141PackedLUT,
    TuningANR141PackedLUTOffline,
    TuningTF221Register,
    TuningTF221RegisterOffline,
    TuningTF221PackedLUT,
    TuningTF221PackedLUTOffline,
    TuningPDPC151Register,
    TuningPDPC151LUT,
    TuningGamma151Register,
    TuningRGBGamma151Register,
    TuningPDAF30Register,
    TuningXCFAChGain151Register,
    TuningXCFADemux301Register,
    TuningXCFADemuxPDAF301PacketLUT,
    TuningXCFADemuxExposure301PacketLUT,
    TuningXCFADemuxNoise301PacketLUT,
    TuningXPDPC201Register,
    TuningXPDPC201PacketLUT,
    TuningXPDPCMask201PacketLUT,
    TuningLSC371Register,
    TuningLSC371PacketLUT,
    TuningHDR511Register,
    TuningHDR511PacketLUT,
    TuningRemosaicBin201Register,
    TuningRemosaicBin201LUT,
    TuningRemosaicBin201NoiseLUT,
    TuningRemosaicBin201PDAFLUT,
    TuningCrop121Register,
    TuningHNR11RegisterOffline,
    TuningHNR11PackedLUTOffline,
    TuningHNR11Register,
    TuningHNR11PackedLUT,
    Tuning2DLUT11Register,
    Tuning2DLUT11RegisterOffline,
    Tuning2DLUT11PackedLUT,
    Tuning2DLUT11PackedLUTOffline,
    TuningLTM201Register,
    TuningLTM201RegisterOffline,
    TuningLTM201PackedLUT,
    TuningLTM201PackedLUTOffline,
    TuningMFHDRLTM201Register,
    TuningMFHDRLTM201RegisterOffline,
    TuningCC14Register,
    TuningCC14RegisterOffline,
    TuningASF351Register,
    TuningASF351RegisterOffline,
    TuningASF351PackedLUT,
    TuningASF351PackedLUTOffline,
    TuningSTMP10RegisterOffline,
    TuningSTMP10PackedLUTOffline,
    TuningSTMP10Register,
    TuningSTMP10PackedLUT,
    TuningCMUS10Register,
    TuningCMUS10RegisterOffline,
    TuningSBLUR10Register,
    TuningSBLUR10RegisterOffline,
    TuningSBLUR10PackedLUT,
    TuningSBLUR10PackedLUTOffline,
    TuningRawMIPIPort,
    TuningBHist17Register,
    TuningIPEFirmwareHeader780,
    TuningIFENodeInfoV2,
    TuningBPSNodeInfoV2,
    TuningIPENodeInfoV2,
    TuningIPENodeInfoOfflineV2,
    TuningAISW10ControlData,
    TuningAISW10ControlDataOffline,
    TuningShortBlendRatioTrigger,
    TuningHDR521Register,
    TuningHDR521PacketLUT,
    TuningWB15Register,
    TuningWB15RegisterOffline,
    TuningLSC501Register,
    TuningLSC501LUT,
    TuningFCG10Register,
    TuningFCG10LUT,
    TuningGS10Register,
    TuningGS10RegisterOffline,
    TuningIFEFCG10Register,
    TuningIFEFCG10LUT,
    TuningICA431InputPackedLUT,
    TuningICA431InputPackedLUTOffline,
    TuningICA431ReferencePackedLUT,
    TuningICA431ReferencePackedLUTOffline,
    TuningMFHDRRGBMAC51Register,
    TuningMFHDRRGBMAC51RegisterOffline,
    TuningMFHDRRGBMAC51PackedLUT,
    TuningMFHDRRGBMAC51PackedLUTOffline,
    TuningTF231Register,
    TuningTF231RegisterOffline,
    TuningTF231PackedLUT,
    TuningTF231PackedLUTOffline,
    TuningRegistrationOutputSize,
    TuningAWBRData,
    TuningBPSHDR221Register,
    TuningBPSLSC341Register,
    TuningBPSLSC341PackedMesh,
    TuningIPELTM131PackedLUT,
    TuningIPELTM131PackedLUTOffline,
    TuningTagIDMax1                     = TAGID_TUNING_MAX_SECTION_1,
    // Tuning tag IDs Section1- END
    // Section 1 for TuningTagIDs is full, please use Section 2

    // Concise AECX tag IDs - START
    ConciseAECTagIDMax                  = TAGID_CONCISE_AEC_MAX,
    // Concise AECX tag IDs - END

    // Concise AWB tag IDs - START
    ConciseAWBReferencePoints,
    ConciseAWBCurFrameDecision,
    ConciseAWBStatsScreenData,
    ConciseAWBAGWData,
    ConciseAWBSAFaceAssist,
    ConciseAWBTemporalConverg,
    ConciseAWBSensorCallibration,
    ConciseAWBFlashData,
    ConciseAWBLCDFlashData,
    ConciseAWBLEDTorchData,
    ConciseAWBTagIDMax                         = TAGID_CONCISE_AWB_MAX,
    // Concise AWB tag IDs - END

    // Concise AF tag IDs - START
    ConciseAFActuatorSensitivity,
    ConciseAFCamifWidth,
    ConciseAFCamifHeight,
    ConciseAFHorizontalKernel,
    ConciseAFVerticalKernel,
    ConciseAFRoiInfo,
    ConciseAFRoiPattern,
    ConciseAFRoiGridSizeH,
    ConciseAFRoiGridSizeV,
    ConciseAFRoiGridGapH,
    ConciseAFRoiGridGapV,
    ConciseAFCurrentConvergeIndex,
    ConciseAFConvergeCommonData,
    ConciseAFTagIDMax                          = TAGID_CONCISE_AF_MAX,
    // Concise AF tag IDs - END

    // TFE/OPE tag IDs - START
    TuningTFEDemux14Register,
    TuningTFELSC35Register,
    TuningTFELSC35PackedMesh,
    TuningTFEWBBDS10Register,
    TuningOPEBPCABF41Register,
    TuningOPEBPCABF41RegisterOffline,
    TuningOPEBLS12Register,
    TuningOPEBLS12RegisterOffline,
    TuningOPEDemosaic36Register,
    TuningOPEDemosaic36RegisterOffline,
    TuningOPECC13Register,
    TuningOPECC13RegisterOffline,
    TuningOPEBPCABF41PackedLUT,
    TuningOPEBPCABF41PackedLUTOffline,
    TuningOPEGTM12PackedLUT,
    TuningOPEGTM12PackedLUTOffline,
    TuningOPELTM15PackedLUT,
    TuningOPELTM15PackedLUTOffline,
    TuningOPEGamma15PackedLUT,
    TuningOPEGamma15PackedLUTOffline,
    TuningOPEASF32PackedLUT,
    TuningOPEASF32PackedLUTOffline,
    TuningOPECSMCE11Register,
    TuningOPECSMCE11RegisterOffline,
    TuningOPEChromaEnhancement12Register,
    TuningOPEChromaEnhancement12RegisterOffline,
    TuningOPESCE11Register,
    TuningOPESCE11RegisterOffline,
    TuningOPEWNR24Register,
    TuningOPEWNR24RegisterOffline,
    TuningOPEASF32Register,
    TuningOPEASF32RegisterOffline,
    TuningOPEUpscaler13Register,
    TuningOPEUpscaler13RegisterOffline,
    TuningOPEWB14Register,
    TuningOPEWB14RegisterOffline,
    TuningOPEGTM12Register,
    TuningOPEGTM12RegisterOffline,
    TuningOPELTM15Register,
    TuningOPELTM15RegisterOffline,
    TuningGamma15Register,
    TuningGamma15RegisterOffline,
    TuningOPECST12Register,
    TuningOPECST12RegisterOffline,
    TuningTFETriggerModulesData,
    TuningTFESensorConfigData,
    TuningOPETuningMode,
    TuningOPETuningModeOffline,
    TuningOPETriggerModulesData,
    TuningOPETriggerModulesDataOffline,
    TuningOPEChipsetVersion,
    TuningOPEDEMUX14Register,
    TuningOPEDEMUX14RegisterOffline,
    TuningOPELSC35Register,
    TuningOPELSC35RegisterOffline,
    TuningOPELSC35PackedLUT,
    TuningOPELSC35PackedLUTOffline,
    TuningTFEDemux141Register,
    TuningTFELSC351Register,
    TuningTFEPDPC321Register,
    TuningTFEWBBDS111Register,
    TuningTFEBDS4Register,
    TuningTFEBDS2Register,
    TuningTFEWB14Register,
    TuningTFEDS4CSTRegister,
    TuningTFEAICSTRegister,
    TuningTFEBLS121Register,
    TuningTFEABF211Register,
    TuningTFEGTM121Register,
    TuningTFEGamma101Register,
    TuningTFELSC351PackedLUT,
    TuningTFEPDPC321PackedLUT,
    TuningTFEGTM121PackedLUT,
    TuningTFEGamma101PackedLUT,
    TuningTFEAECBG18Register,
    TuningTFEBHist15Register,
    TuningTFETintlessBG18Register,
    TuningTFEAWBBG18Register,
    TuningTFERS16Register,
    TuningTFEBAF27Register,
    TuningTFEBAF27GammaLUT,
    TuningTFENodeInfo,
    TuningTFEUnifiedHDRInfo,
    TuningTFEBAF28Register,
    TuningTFEBAF28PackedLUT,
    TuningPDAF31Register,
    TFEOPETagIDMax                      = TAGID_TFE_OPE_MAX,
    // TFE/OPE tag IDs - END

    // Tuning tag IDs Section2 - START
    TuningBPSBHistStats,
    TuningWB141Register,
    TuningFaceLuma,
    TuningLTM202Register,
    TuningLTM202RegisterOffline,
    TuningLTM202PackedLUT,
    TuningLTM202PackedLUTOffline,
    TuningMFHDRLTM202Register,
    TuningMFHDRLTM202RegisterOffline,
    TuningBayerLTM121Register,
    TuningBayerLTM121LUT,
    TuningGTM131LUTOffline,
    TuningGTM131RegisterOffline,
    TuningBPSIHistStats,
    TuningHDR531Register,
    TuningHDR531PacketLUT,
    TuningHDR531RegisterOffline,
    TuningHDR531PacketLUTOffline,
    TuningTagIDMax2                     = TAGID_TUNING_MAX_SECTION_2,
    // Tuning tag IDs Section2 - END

    // Tuning tag IDs Reserved1 - START
    Reserved1                           = TAGID_RESERVED1,
    // Tuning tag IDs Reserved1 - END

    // Tuning tag IDs Reserved2 - START
    Reserved2                           = TAGID_RESERVED2,
    // Tuning tag IDs Reserved2 - END

    // AFC snapshot tag IDs - START
    AFCSnapAlgorithmVersion,
    AFCSnapStatsConfigTag,
    AFCSnapCameraInfoTag,
    AFCSnapMetadataTag,
    AFCSnapStatsInfoTag,
    AFCSnapTemporalContextTag,
    AFCSnapInternalOutTag,
    AFCSnapFCGOutDataTag,
    AFCSnapDebugSWConfigTag,
    AFCTagIDMax                         = TAGID_AFC_SNAP_MAX,
    // AFC snapshot tag IDs - END

    TuningOEMStart                      = TAGID_OEM_START,
    TuningBPSOEMTuningData              = TuningOEMStart,
    TuningIFEOEMTuningData,
    TuningTFEOEMTuningData,
    TuningOEMTagIDMax                   = TAGID_OEM_MAX
} CAMX_PACKED;

///< @brief Defines the type of the debug data tag
///  NOTE: The values defined in this enum MUST NOT change! If an ID is being deprecated - developers can rename the ID to
///        to indicate that it is deprecated - but should not remove it.
enum class DebugDataTagType : UINT16
{
    TypeDefinition                      = 1,                            ///< Payload: DebugDataTag + list of TypedefFieldInfo
    Char,
    Bool,
    UInt8,
    UInt16,
    UInt32,
    UInt64,
    UQNumber,                                                           ///< Payload: DebugDataUQNumber
    URational,                                                          ///< Payload: DebugDataURational
    Int8,
    Int16,
    Int32,
    Int64,
    QNumber,                                                            ///< Payload: DebugDataQNumber
    Rational,                                                           ///< Payload: DebugDataRational
    Float,
    Double,
    TwoDimArray,                                                        ///< Payload: DebugData2DArrayHeader + array data
    EndBasicTypes                       = TAGTYPE_BASIC_MAX,            ///< Reserve up to this number for basic types

    // Custom (non-basic) types - START
    CustomStart                         = EndBasicTypes,                ///< custom (non-basic) type
    // AEC Custom (non-basic) types - START
    AECTypeBegin,
    AECROIDim                           = AECTypeBegin,
    AECConfiguration,
    AECFrameHistory,
    AECModeHistory,
    AECMetering,
    AECConvergence,
    AECArbitration,
    AECExtension,
    AECStatsLumaRegion,
    AECExtremeColor,
    AECHistogram,
    AECLEDSetting,
    AECLEDTable,
    AECFlash,
    AECBGProcInfo,
    AECParsedBGRegionType,
    AECParsedLegacyYRegionType,
    AECBGProcResult,
    AECBHistProcInfo,
    AECBHistProcResult,                 ///< Deprecated
    AECBayerChannel,
    AECStatsRectangle,
    AECBayerStats,
    AECHistogramChannel,
    AECHistogramStats,
    AECBHistProcResultV1,
    AECAlgoVersion,
    // ------------------- AECX tags -------------------
    AECXTypeBegin = 0x81,
    AECXROIDim = AECXTypeBegin,
    AECXContext,
    AECXFrameHistory,
    AECXMetering,
    AECXConvergence,
    AECXArbitration,
    AECXExtension,
    AECXLEDSetting,
    AECXLEDTable,
    AECXFlash,
    AECXStatsROIInfo,
    AECXStatsResolution,
    AECXStatsChInfo,
    AECXStatsChList,
    AECXStats,
    AECXStatsRectangle,
    AECXOneArbitration,
    AECXConvHistory,
    AECXExpRngType,
    AECXROIInfo,
    AECXManualSetting,
    AECXAWBState,
    AECXOverrideSetting,
    AECXSensorInfo,
    AECXCameraInfo,
    AECXInputConfig,
    AECXGeneralSAType,
    AECXGeneralSCType,
    AECXSAComponentType,
    AECXSAArithOpType,
    AECXDataBankType,
    AECXStartEndType,
    AECXExposureSetType,
    AECXExposureInfoType,
    AECXFrameHistoryInfoType,
    AECX3HDRSnapShot,
    AECXPrecisionFlash,
    AECXAlgoVersion,
    AECXNZSLMetering,
    AECXNZSLArbitration,
    AECXOLBMBEROIInfoType,
    AECXOLBMSyncType,
    AECXCamSync,
    AECXAutoHDRDebugTag,
    AECXFrameControlDebugTag,
    AECXSetInputDebugTag,
    AECXFaceROIDebugTag,
    AECXPointDebugTag,
    AECXFace3DPoseDebugTag,
    AECTypeEnd = AECXFace3DPoseDebugTag,
    AECTypeMax = TAGTYPE_AEC_MAX,
    // AEC Custom (non-basic) types - END

    // AWB Custom (non-basic) types - START
    AWBTypeBegin,
    AWBPoint                            = AWBTypeBegin,
    AWBZone,
    AWBZonePData,
    AWBDecisionPData,
    AWBModulePData,
    AWBGains,
    AWBTriggerPoint,
    AWBTriggerFloatData,
    AWBStatsRectangle,
    AWBTriggerNonLastLevelPData,
    AWBcustRefPt,
    AWBSATargetPData,
    AWBSAConfidencePData,
    AWBSFSubSmpPData,
    AWBSFStatsScrPData,
    AWBSFIlluWVPData,
    AWBSFDistWVPData,
    AWBSFCustRefPtPData,
    AWBSFMLCZPData,
    AWBSAAGWPData,
    AWBDASAData,
    AWBFaceAssistSAPData,
    AWBDAPData,
    AWBTriglGAPData,
    AWBTmpConvPData,
    AWBDSFPData,
    AWBSensorCalPData,
    AWBSAGen1PData,
    AWBHistPData,
    AWBFlashPData,
    AWBStatInfo,
    AWBStatPData,
    AWBBestShotPData,
    AWBSpecIlluPData,
    AWBLCDFlashPData,
    AWBLEDTorchPData,
    AWBStatsSensorInfo,                 ///< Deprecated
    AWBStatsWindowInfo,                 ///< Deprecated
    AWBIlluminatFactor,                 ///< Deprecated
    AWBIlluminantsCalibrationFactor,    ///< Deprecated
    AWBGeometricalDisparityCalibration, ///< Deprecated
    AWBStatsLEDCalibrationDataInput,    ///< Deprecated
    AWBManualConfiguration,             ///< Deprecated
    AWBStatsFaceData,                   ///< Deprecated
    AWBStatsFaceHistogram,              ///< Deprecated
    AWBStatsFaceInformation,            ///< Deprecated
    AWBProcessTrigGain,
    AWBFlashInformation,                ///< Deprecated
    AWBSetParamInfo,                    ///< Deprecated
    AWBSFDistWVPTrigger2D,
    AWBBGChannelData,
    AWBBGStatsData,
    AWBSADualcamSyncPData,
    AWBSCBasedConvergeData,
    AWBExternalInfo,
    AWBCustomizedSAInfo,
    AWBWeightedZone,
    AWBWeightedZonePData,
    AWBSFMLCZV2PData,
    AWBSAGen2PData,
    AWBGlobalEnvPData,
    AWBSFGenWVPTrigger2D,
    AWBSFGenWVPData,
    AWBWeightedZonePDataV2,
    AWBSFMLCZV3PData,
    AWBGenWVPData,
    AWBSFSpectralSensorAssistWVPData,
    AWBAlgoVersion,
    AWBFaceStatsCntData,
    AWBBGChannelDataExtension,
    AWBBGStatsDataExtension,
    AWBTemporalAWBPData,
    AWBTemporalAWBDecisionsPData,
    AWBHDRStatsMergerData,              /// Deprecated
    AWBSMControlData,                   /// Deprecated
    AWBFaceStatsROI,
    AWBFaceStatInfo,
    AWBFaceStatFilterData,
    AWBFaceRefIlluCCT,
    AWBFaceRefIlluResults,
    AWBHDRMergerDataConcise,
    AWBROIInfo,
    AWBLocalAdjData,
    AWBLocalAdjDataArray,
    AWBSALocalAdjPData,
    AWBBGWType,
    AWBBFWType,
    AWBLocalAdjTargetPData,
    AWBLocalAdjConfidencePData,
    AWBLocalAdjROIData,
    AWBStatsRange,
    AWBStatsSensorData,
    AWBStatsWindowData,
    AWBIllumaFactor,
    AWBIllumaCalibrationFactor,
    AWBGeometricalDispCalibration,
    AWBStatsLEDCalibDataInput,
    AWBManualConfig,
    AWBStatsUnsignRectangle,
    AWBStats3DPose,
    AWBStatsFaceROIData,
    AWBStatsUnstableFaceInfo,
    AWBFlashInfo,
    AWBStatsCameraInfo,
    AWBWarmStartInfo,
    AWBExternalData,
    AWBSpectralSensorInfo,
    AWBOverrideSetting,
    AWBROINormalized,
    AWBROIAWBData,
    AWBStatsGyroInfo,
    AWBStatsAcceInfo,
    AWBCVPMetaData,
    AWBSetParamPData,
    AWBTypeEnd                          = AWBSetParamPData,
    AWBTypeMax                          = TAGTYPE_AWB_MAX,
    // AWB Custom (non-basic) types - END

    // AF Custom (non-basic) types - START
    AFTypeBegin,
    AFROIInfo                           = AFTypeBegin,
    AFCommonHistory,
    AFConvergeCommon,
    AFSingleAFHistory,
    AFSingleAFData,
    AFCAFFineScanHistory,
    AFCAFFineScanData,
    AFTOFHistory,
    AFTimeOfFlight,
    AFPDData,
    AFPDHistory,
    AFPhaseDifference,
    AFFollower,
    AFMonitorCommon,
    AFValueMonitorData,
    AFMonitorCAF,
    AFMonitorPDAF,
    AFMonitorTOF,
    AFGammaTable,
    AFFocusROI,
    AFFIRFilter,
    AFIIRFilter,
    AFCoringInfo,
    AFFilterKernel,
    AFSWKernel,
    AFAlgoVersion,
    PDLibMajorVersion,
    AFTypeEnd                           = PDLibMajorVersion,
    AFTypeMax                           = TAGTYPE_AF_MAX,
    // AF Custom (non-basic) types - END

    // ASD Custom (non-basic) types - START
    ASDTypeBegin,
    ASDTypeEnd,
    ASDTypeMax                          = TAGTYPE_ASD_MAX,
    // ASD Custom (non-basic) types - END

    // AFD Custom (non-basic) types - START
    AFDTypeBegin,
    AFDAlgoVersion                      = AFDTypeBegin,
    AFDSummary,
    AFDStatInfo,
    AFDDiffStatInfo,
    AFDRowSumStatsInfo,
    AFDAFLensPosInfoData,
    AFDAFLensMoveTypeData,
    AFDAFLogicalLensMoveInfoData,
    AFDACLensMoveInfoData,
    AFDAECAFData,
    AFDDefaultRollingData,
    AFDStaticEnergyRatio,
    AFDStaticAbsEnergy,
    AFDDefaultStaticData,
    AFDCorrelationRollingData,
    AFDStaticCorrStepInfo,
    AFDCorrelationStaticData,
    AFDTypeEnd                          = AFDCorrelationStaticData,
    AFDTypeMax                          = TAGTYPE_AFD_MAX,
    // AFD Custom (non-basic) types - END

    // Tuning metadata custom section 1 - START
    TuningTypeBegin1,
    TuningAECExposureData               = TuningTypeBegin1,
    TuningAECFrameControl,
    TuningAWBFrameControl,
    TuningSensorResolution,
    TuningSensorCropInfo,
    TuningLSC34MeshLUT,
    TuningGammaCurve,
    TuningGTMLUT,
    TuningPedestalLUT,
    TuningBPSBPCPDPC20Config,
    TuningBPSHDR22Config,
    TuningABFLUT,
    TuningHNR10LUT,
    TuningBPSTriggerData,
    TuningBPSSensorConfig,
    TuningICA10LUT,
    TuningANR10Config,
    TuningTF10Config,
    TuningLTM13LUT,
    Tuning2DLUT10LUT,
    TuningASF30LUT,
    TuningUpscaler20LUT,
    TuningGrainAdder10LUT,
    TuningFaceData,
    TuningIPEGamma15Curve,
    TuningIQNodeInfo,
    TuningModeInfo,
    TuningIFEEnableConfig,
    TuningIFETriggerData,
    TuningIFE2xHDR,
    TuningIFESensorConfig,
    TuningBPSBPCPDPC30LUT,
    TuningBPSBPCPDPC30Config,
    TuningLSC40MeshLUT,
    TuningBPSFirmwareHeader,
    TuningIFELSC40Config,
    TuningIFE30HDR,
    TuningICA30LUT,
    TuningLTM14LUT,
    TuningTF20Config,
    TuningIPEFirmwareHeader,
    TuningIPETriggerData,
    TuningLSC351MeshLUT,
    // Header version 1 - basic types
    DebugDataHeaderV1,                                                  ///< Payload: DebugDataHeaderV1 only
    H1Char,                                                             ///< Payload: DebugDataHeaderV1 + base type
    H1Bool,                                                             ///< Payload: DebugDataHeaderV1 + base type
    H1UInt8,                                                            ///< Payload: DebugDataHeaderV1 + base type
    H1UInt16,                                                           ///< Payload: DebugDataHeaderV1 + base type
    H1UInt32,                                                           ///< Payload: DebugDataHeaderV1 + base type
    H1UInt64,                                                           ///< Payload: DebugDataHeaderV1 + base type
    H1UQNumber,                                                         ///< Payload: DebugDataHeaderV1 + DebugDataUQNumber
    H1URational,                                                        ///< Payload: DebugDataHeaderV1 + DebugDataURational
    H1Int8,                                                             ///< Payload: DebugDataHeaderV1 + base type
    H1Int16,                                                            ///< Payload: DebugDataHeaderV1 + base type
    H1Int32,                                                            ///< Payload: DebugDataHeaderV1 + base type
    H1Int64,                                                            ///< Payload: DebugDataHeaderV1 + base type
    H1QNumber,                                                          ///< Payload: DebugDataHeaderV1 + DebugDataQNumber
    H1Rational,                                                         ///< Payload: DebugDataHeaderV1 + DebugDataRational
    H1Float,                                                            ///< Payload: DebugDataHeaderV1 + base type
    H1Double,                                                           ///< Payload: DebugDataHeaderV1 + base type
    // End-of-header version 1 basic types
    TuningTMCTriggerData,
    TuningDSX10LUT,
    TuningDSX10Data,
    TuningGamma16Curve,
    TuningMFHDRMACLUT,
    TuningMFHDRGTMLUT,
    TuningMFHDRGTMData,
    TuningLTM16LUT,
    TuningBHistConfig,
    TuningBHistStatsConfig,
    TuningRectangleCoordinate,
    TuningBGBEConfig,
    TuningBHistStatsOutput,
    TuningTintlessBGStatsConfig,
    TuningTintlessBGStatsOutput,
    TuningBHistStatsOutputHeader,
    TuningTintlessBGStatsOutputHeader,
    TuningHDRBEChannelData,
    TuningMFHDRCSTTuningMetadataHeader,
    TuningMFHDRMACTuningMetadataHeader,
    TuningDSX10LUTHeader,
    TuningBPSAWBBGStats17Config,
    TuningBPSBayerGTM101Config,
    TuningBPSBayerLTM101Config,
    TuningBPSBC101Config,
    TuningBPSBHist16Config,
    TuningBPSBLS121Config,
    TuningBPSABF411Config,
    TuningBPSBPCPDPC311Config,
    TuningBPSCC131Config,
    TuningBPSCG141Config,
    TuningBPSCST12Config680,
    TuningBPSCompDecomp20Config,
    TuningBPSDemosaic361Config,
    TuningBPSGIC311Config,
    TuningBPSGTM131Config,
    TuningBPSLCAC111Config,
    TuningBPSLSC411Config,
    TuningBPSWB201Config,
    TuningBayerGTM101LUT,
    TuningBPSBayerLTM101LUT,            // deprecated
    TuningABF411LUT,
    TuningPDPC311LUT,
    TuningGamma151LUT,
    TuningGIC311LUT,
    TuningGTM131LUT,
    TuningLCAC111LUT,
    TuningLSC411LUT,
    TuningUVGamma101LUT,
    TuningBPSFirmwareHeader680,
    TuningIFEBPCABF411Config,                                            ///< Include ModuleName & version on name
    TuningIFEBLS121Config,
    TuningIFECC131Config,
    TuningIFECST12Config,
    TuningIFEDemosaic361Config,
    TuningIFEDemuxBLS141Config,
    TuningIFEBayerGTM101Config,
    TuningIFEGTM131Config,
    TuningIFEGTMfd131Config,
    TuningIFEGTMfd131LUT,
    TuningIFELCAC111Config,
    TuningIFELCAC111LUT,
    TuningIFELSC411Config,
    TuningIFEPDPC311Config,
    TuningIFEWB201Config,
    TuningIFEBC101Config,
    TuningIFECompdecomp20Config,
    TuningIFEGIC311Config,
    TuningIFEBayerLTM101Config,
    TuningIFEBayerLTM101LUT,            // deprecated
    TuningIFEBayerLTM111Config,
    TuningIFEBayerLTM111LUT,            // deprecated
    TuningIFEUVGamma101Config,
    TuningIFEUnifiedHDRData,
    TuningIPETF211Config,
    TuningIPEASF341Config,
    TuningIPEASF341LUT,
    TuningIPELENR101Config,
    TuningIPECAC231Config,
    TuningIPECC131Config,
    TuningIPECE121Config,
    TuningIPECS201Config,
    TuningIPECST12Config,
    TuningIPESCE111Config,
    TuningIPELTM161Config,
    TuningIPEICA401LUT,
    TuningIPEBLUR101Config,
    TuningIPEBLUR101LUT,
    TuningIPEVSE101Config,
    TuningIPEVSE101LUT,
    TuningIPEHDR10p101Config,
    TuningIPEFirmwareHeader680,
    TuningGIC311Config,
    TuningABF411Config,
    TuningBLS121Config,
    TuningDemosaic381Config,
    TuningANR121Config,
    TuningTF121Config,
    TuningGTM121LUT,
    TuningLTM151Config,
    TuningLTM151LUT,
    TuningCSMCE111Config,
    TuningASF331Config,
    TuningASF331LUT,
    TuningICA321LUT,
    TuningIPEFirmwareHeader640,
    TuningSFEHDR501Config,
    TuningSFEHDR501LUT,
    TuningSFERemosaicBin101Config,
    TuningSFEQPDPC101Config,
    TuningSFEQPDPC101LUT,
    TuningSFELSC361Config,
    TuningSFELSC361LUT,
    TuningSFECrop12Config,
    TuningSFELCR11Config,
    TuningSFEQCFADemux20Config,
    TuningBPSFirmwareHeader640,
    TuningBGamma101LUT,
    TuningSFERemosaicBin101LUT,
    TuningSFEQCFADemux20LUT,
    TuningSFEQCFADemux20ExpLUT,
    TuningBayerLTM101LUT,
    TuningIFEDecomp21Config,
    TuningIFEDemuxBLS161Config,
    TuningGamma151LUTRGBout,
    TuningIPEFirmwareHeader690,
    TuningIPEICA411LUT,
    TuningBPSLSC421Config,
    TuningLSC421LUT,
    TuningBPSWB211Config,
    TuningBPSPDPCBPC1D151Config,
    TuningPDPCBPC1D151LUT,
    TuningBPSFirmwareHeader780,
    TuningANR141Config,
    TuningANR141LUT,
    TuningTF221Config,
    TuningTF221LUT,
    TuningIFELSC421LUT,
    TuningIFEPDPC151Config,
    TuningIFEPDPC151LUT,
    TuningIFELSC421Config,
    TuningIFEGamma151Config,
    TuningIFERGBGamma151Config,
    TuningIFEXCFAChannelGain151Config,
    TuningIFEPDAF30Config,
    TuningIFEXCFAPDPC201Config,
    TuningIFEXCFAPDPC201LUT,
    TuningIFERGBIRRemosaic101Config,
    TuningIFERGBIRRemosaic101LUT,
    TuningSFEXCFAChGain151Config,
    TuningSFEXCFADemux301Config,
    TuningSFEXCFADemuxPDAF301LUT,
    TuningSFEXCFADemuxExposure301LUT,
    TuningSFEXCFADemuxNoise301LUT,
    TuningSFEXPDPC201Config,
    TuningSFEXPDPC201LUT,
    TuningSFEXPDPC201MaskLUT,
    TuningSFEHDR511Config,
    TuningSFELSC371Config,
    TuningSFELSC371LUT,
    TuningSFERemosaicBin201Config,
    TuningSFERemosaicBin201LUT,
    TuningSFERemosaicBin201NoiseLUT,
    TuningSFERemosaicBin201PDAFLUT,
    TuningSFECrop121Config,
    TuningIPEHNR11LUT,
    TuningIPEHNR11Config,
    TuningIPE2DLUT11LUT,
    TuningIPE2DLUT11Config,
    TuningIPELTM20LUT,
    TuningIPELTM20Config,
    TuningIPECC141Config,
    TuningIPEASF351Config,
    TuningIPEASF351LUT,
    TuningIPEMFHDRMAC50LUT,
    TuningIPEMFHDRMAC50TuningMetadataHeader,
    TuningIPESTMP10LUT,
    TuningIPESTMP10Config,
    TuningIPECMUS10Config,
    TuningIPESBLUR10Config,
    TuningIPESBLUR10LUT,
    TuningRawMIPIPortConfig,
    TuningBPSBHist17Config,
    TuningIPEFirmwareHeader780,
    TuningIQNodeInfoV2,
    TuningIPEAISW10ControlData,
    TuningSFEHDR521Config,
    TuningIPEWB15Config,
    TuningIFELSC501LUT,
    TuningIFELSC501Config,
    TuningBPSFirmwareHeader880,
    TuningBPSFCG10Config,
    TuningFCG10LUT,
    TuningBPSLSC501Config,
    TuningLSC501LUT,
    TuningIPEGS10Config,
    TuningIFEFCG10Config,
    TuningIFEFCG10LUT,
    TuningIPEICA431LUT,
    TuningIPEMFHDRMAC51LUT,
    TuningIPEMFHDRMAC51TuningMetadataHeader,
    TuningIPETF231Config,
    TuningIPETF231LUT,
    TuningIFEWB141Config,
    TuningIPEFirmwareHeader670,
    TuningIPEFirmwareHeader880,
    TuningIPEBayerLTM121Config,
    TuningBayerLTM121LUT,
    TuningRegistrationOutputsizeType,
    TuningAWBRFrameControl,
    TuningIHistStatsOutput,
    TuningIHistStatsOutputHeader,
    TuningBayerLTM111LUT,
    TuningLSC341MeshLUT,
    TuningBPSHDR221Config,
    TuningTypeEnd1                      = TuningBPSHDR221Config,
    TuningTypeMax1                      = TAGTYPE_TUNING_MAX_SEC_1,
    // Tuning metadata custom section 1 - END
    // Section 1 for TuningTagTypes is full, please use Section 2

    // AEC Custom (non-basic) types for concise - Start
    ConciseAECTypeBegin,
    ConciseAECTypeEnd,
    // AEC Custom (non-basic) types for concise - END
    // Concise AECX types - Start
    ConciseAECXTypeBegin,
    ConciseAECXTypeEnd,
    ConciseAECXTypeMax = TAGTYPE_CONCISE_AEC_MAX,
    // Concise AECX types - End
    // AWB Custom (non-basic) types for concise - Start
    ConciseAWBTypeBegin,
    ConciseAWBPoint = ConciseAWBTypeBegin,
    ConciseAWBDecisionPData,
    ConciseAWBModulePData,
    ConciseAWBGains,
    ConciseAWBSAConfidencePData,
    ConciseAWBTriggerPoint,
    ConciseAWBSpecIlluPData,
    ConciseAWBSFStatsScrPData,
    ConciseAWBSAAGWPData,
    ConciseAWBFaceAssistSAPData,
    ConciseAWBTmpConvPData,
    ConciseAWBSensorCalPData,
    ConciseAWBFlashPData,
    ConciseAWBLCDFlashPData,
    ConciseAWBLEDTorchPData,
    ConciseAWBFaceStatsCntData,
    ConciseAWBTypeEnd = ConciseAWBFaceStatsCntData,
    ConciseAWBTypeMax = TAGTYPE_CONCISE_AWB_MAX,
    // AWB Custom (non-basic) types for concise - END

    // AF Custom (non-basic) types for concise - Start
    ConciseAFTypeBegin,
    ConciseAFFilterKernel = ConciseAFTypeBegin,
    ConciseAFIIRFilter,
    ConciseAFFIRFilter,
    ConciseAFCoringInfo,
    ConciseAFROIInfo,
    ConciseAFCommonHistory,
    ConciseAFConvergeCommon,
    ConciseAFTypeEnd = ConciseAFConvergeCommon,
    ConciseAFTypeMax = TAGTYPE_CONCISE_AF_MAX,
    // AF Custom (non-basic) types for concise - END


    // TFE/OPE metadata custom - START
    TuningTFEOPETypeBegin,
    TuningTFELSC35MeshLUT               = TuningTFEOPETypeBegin,
    TuningTFEDemux14Config,
    TuningTFEWBBDSDPC10Config,
    TuningTFELSC35Config,
    TuningOPEBPCABF41LUT,
    TuningOPEGTM12LUT,
    TuningOPELTM15LUT,
    TuningOPEGamma15Curve,
    TuningOPEASF32LUT,
    TuningOPEBPCABF41Config,
    TuningOPEBLS12Config,
    TuningOPEDemosaic36Config,
    TuningOPECC13Config,
    TuningOPECE12Config,
    TuningOPESCE11Config,
    TuningOPEWNR24Config,
    TuningOPEASF32Config,
    TuningOPEUpscaler13Config,
    TuningOPEWB14Config,
    TuningOPEGTM12Config,
    TuningOPELTM15Config,
    TuningOPEGamma15Config,
    TuningOPECST12Config,
    TuningTFETriggerData,
    TuningTFESensorConfig,
    TuningOPEModeInfo,
    TuningOPETriggerData,
    TuningOPEDemux14Config,
    TuningOPELSC35LUT,
    TuningOPELSC35Config,
    TuningTFEDemuxBLS141Config,
    TuningTFELSC351Config,
    TuningTFEPDPC321Config,
    TuningTFEWBBDS111Config,
    TuningTFEBDS4Config,
    TuningTFEBDS2Config,
    TuningTFEWB14Config,
    TuningTFEDS4CSTConfig,
    TuningTFEAICSTConfig,
    TuningTFEBLS121Config,
    TuningTFEABF211Config,
    TuningTFEGTM121Config,
    TuningTFEGamma101Config,
    TuningTFELSC351LUT,
    TuningTFEPDPC321LUT,
    TuningTFEGTM121LUT,
    TuningTFEGamma101Curve,
    TuningTFEAECBG18Config,
    TuningTFEBHist15Config,
    TuningTFETintlessBG18Config,
    TuningTFEAWBBG18Config,
    TuningTFERS16Config,
    TuningTFEBAF27Config,
    TuningTFEBAF27GammaCurve,
    TuningTFENodeInfo,
    TuningTFEUnifiedHDRData,
    TuningTFEBAF28Config,
    TuningTFEBAF28LUT,
    TuningTFEPDAF31Config,
    TuningTFEOPETypeEnd                 = TuningTFEPDAF31Config,
    TFEOPETypeMax                       = TAGTYPE_TFE_OPE_MAX,
    // TFE/OPE metadata custom - END

    // Reserved1 - START
    Reserved1                           = TAGTYPE_RESERVED1,
    // Reserved1 - END

    // Reserved2 - START
    Reserved2                           = TAGTYPE_RESERVED2,
    // Reserved2 - END

    // Reserved3 - START
    Reserved3                           = TAGTYPE_RESERVED3,
    // Reserved3 - END

    // AFC snapshot tag types - START
    AFCSnapTypeBegin,
    AFCSnapAlgoVersion = AFCSnapTypeBegin,
    AFCSnapStatsConfig,
    AFCSnapCameraInfo,
    AFCSnapAECInfo,
    AFCSnapAFInfo,
    AFCSnapSensorInfo,
    AFCSnapMetatdataInfo,
    AFCSnapStatsInfo,
    AFCSnapStatsData,
    AFCSnapTemporalParamsInfo,
    AFCSnapTemporalContextInfo,
    AFCSnapTemporalContextInfoArray,
    AFCSnapDebugTriggerParamsInfo,
    AFCSnapDebugSegmentDataInfo,
    AFCSnapDebugModuleDecisionInfo,
    AFCSnapInternalOutInfo,
    AFCSnapInternalOutInfoArray,
    AFCSnapFCGOutDataInfo,
    AFCSnapFCGOutDataInfoArray,
    AFCSnapExposureTypeInfo,
    AFCSnapAlgoOperationMode,
    AFCSnapStatsAlgoRole,
    AFCSnapLensMoveInfo,
    AFCSnapDebugLensPositionInfo,
    AFCSnapDebugSWConfigInfo,
    AFCSnapTypeEnd                      = AFCSnapDebugSWConfigInfo,
    AFCSnapTypeMax                      = TAGTYPE_AFC_SNAP_MAX,
    // AFC snapshot tag types - END

    // AFC preview tag types - START
    AFCPreviewTypeBegin,
    AFCPreviewAlgoVersion = AFCPreviewTypeBegin,
    AFCPreviewStatsConfig,
    AFCPreviewCameraInfo,
    AFCPreviewAECInfo,
    AFCPreviewAFInfo,
    AFCPreviewSensorInfo,
    AFCPreviewMetatdataInfo,
    AFCPreviewStatsInfo,
    AFCPreviewStatsData,
    AFCPreviewTemporalParamsInfo,
    AFCPreviewTemporalContextInfo,
    AFCPreviewTemporalContextInfoArray,
    AFCPreviewDebugTriggerParamsInfo,
    AFCPreviewDebugSegmentDataInfo,
    AFCPreviewDebugModuleDecisionInfo,
    AFCPreviewInternalOutInfo,
    AFCPreviewInternalOutInfoArray,
    AFCPreviewFCGOutDataInfo,
    AFCPreviewFCGOutDataInfoArray,
    AFCPreviewExposureTypeInfo,
    AFCPreviewAlgoOperationMode,
    AFCPreviewStatsAlgoRole,
    AFCPreviewLensMoveInfo,
    AFCPreviewDebugLensPositionInfo,
    AFCPreviewDebugSWConfigInfo,
    AFCPreviewTypeEnd                   = AFCPreviewDebugSWConfigInfo,
    AFCPreviewTypeMax                   = TAGTYPE_AFC_PREVIEW_MAX,
    // AFC preview tag types - END

    // Tuning metadata custom section 2 - START
    TuningTypeBegin2,
    TuningIPEHDRC531Config              = TuningTypeBegin2,
    TuningHDRC531LUT,
    TuningTypeEnd2                      = TuningHDRC531LUT,
    TuningTypeMax2                      = TAGTYPE_TUNING_MAX_SEC_2,
    // Tuning metadata custom section 2 - END

    // Reserved EOM (non-basic) types - START
    ReservedTypeMin                     = TAGTYPE_RESERVED_START,
    ReservedTypeMax                     = TAGTYPE_RESERVED_MAX,
    OEMBegin                            = TAGTYPE_OEM_START,
    // Reserved OEM (non-basic) types - END
    OEMEnd                              = TAGTYPE_OEM_MAX,
    // All metadata custom - END
    CustomEnd                           = TAGTYPE_OEM_MAX

} CAMX_PACKED;

///< @brief List of deprecated debug data tag types as defined in DebugDataTagType enum.
///         All deprecated tags must be listed here but remain in the DebugDataTagType enum to keep the order of existing tags
static DebugDataTagType DebugDataTagTypeDeprecated[] =
{
    DebugDataTagType::AWBStatsSensorInfo,
    DebugDataTagType::AWBStatsWindowInfo,
    DebugDataTagType::AWBIlluminatFactor,
    DebugDataTagType::AWBIlluminantsCalibrationFactor,
    DebugDataTagType::AWBGeometricalDisparityCalibration,
    DebugDataTagType::AWBStatsLEDCalibrationDataInput,
    DebugDataTagType::AWBManualConfiguration,
    DebugDataTagType::AWBStatsFaceData,
    DebugDataTagType::AWBStatsFaceHistogram,
    DebugDataTagType::AWBStatsFaceInformation,
    DebugDataTagType::AWBFlashInformation,
    DebugDataTagType::AWBHDRStatsMergerData,
    DebugDataTagType::AWBSMControlData,
    DebugDataTagType::AWBSetParamInfo,
    DebugDataTagType::AECBHistProcResult,
    DebugDataTagType::TuningBPSBayerLTM101LUT,
    DebugDataTagType::TuningIFEBayerLTM101LUT,
    DebugDataTagType::TuningIFEBayerLTM111LUT,
};

///< @brief List of deprecated debug data tag IDs as defined in DebugDataTagID enum.
///         All deprecated tags must be listed here but remain in the DebugDataTagID enum to keep the order of existing tags
static DebugDataTagID DebugDataTagIDDeprecated[] =
{
    DebugDataTagID::AWBSetParam,
    DebugDataTagID::AWBHDRStatsMerger,
    DebugDataTagID::TuningIPEModulesConfigRegister,
    DebugDataTagID::TuningIPEModulesConfigRegisterOffline,
    DebugDataTagID::TuningBPSModulesConfigRegister,
    DebugDataTagID::TuningIPEASFRegister,
    DebugDataTagID::TuningIPEASFRegisterOffline,
    DebugDataTagID::TuningIPEModulesConfigRegisterV1,
    DebugDataTagID::TuningIPEModulesConfigRegisterOfflineV1,
};

///< @brief Pipeline identification number. It should never be remove any of the enumeration values. External parser depends on it.
enum class DebugDataPipelineID : UINT16
{
    IFE = 1,
    IPE,
    BPS,
    TFE,
    OPE,
    SFE,
};

///< @brief customized debug data ID, It list the debug data ID we can support
enum class CustomizedDebugDataID : UINT16
{
    Invalid,
    AEC,
    AWB,
    AF,
    AFD,
    AFC,
};

typedef UINT32  TagCount;           ///< Data type representing the Debug Data tag count
typedef UINT16  TypedefFieldLen;    ///< Data type representing the Debug Data type-definition field length
typedef UINT8   TypedefFieldID;     ///< Data type representing the Debug Data type-definition field ID

///< @brief Encapsulates a debug data tag header without any payloads
struct DebugDataTag
{
    /// Unique ID that identifies this tag
    DebugDataTagID    id;
    /// Type of the data associated with this tag
    DebugDataTagType  type;
    /// Number of times the data appears (more than 1 indicates array,
    /// while 0 indicates no data at all). Size in bytes of data is
    /// determined by sizeof(tagType) * Count
    ///
    /// Special case: when the type is DebugDataTagType::Typedef, the count determines
    /// the number of fields
    TagCount          count;
} CAMX_PACKED;

///< @brief Represents a single field within a type-definition tag
struct TypedefFieldInfo
{
    TypedefFieldID      fieldID;    ///< The field ID. Thsi should start at 1 for each type-definition
    DebugDataTagType    type;       ///< The data type of this field
    TypedefFieldLen     count;      ///< Number of occurances of this field. Set to 1 if a single field, otherwise set to
                                    ///  number of elements for an array field
} CAMX_PACKED;

///< @brief Debug data payload for DebugDataTagType::QNumber to represent a signed Q number
///         Float representation can be obtained by evaluating    value * pow(2, -1*qNumber)
struct DebugDataQNumber
{
    UINT8   qNumber;    ///< Exponent
    INT32   value;      ///< Value
} CAMX_PACKED;

///< @brief Debug data payload for DebugDataTagType::UQNumber to represent an unsigned Q number
///         Float representation can be obtained by evaluating    value * pow(2, -1*qNumber)
struct DebugDataUQNumber
{
    UINT8   qNumber;    ///< Exponent
    UINT32  value;      ///< Value
} CAMX_PACKED;

///< @brief Debug data payload for DebugDataTagType::Rational to represent a signed rational number
struct DebugDataRational
{
    INT32 numerator;    ///< Rational number's numerator
    INT32 denominator;  ///< Rational number's denominator
} CAMX_PACKED;

///< @brief Debug data payload for DebugDataTagType::URational to represent an unsigned rational number
struct DebugDataURational
{
    UINT32 numerator;   ///< Rational number's numerator
    UINT32 denominator; ///< Rational number's denominator
} CAMX_PACKED;

///< @brief Debug data header for 2D arrays to describe the array dimentions
struct DebugData2DArrayHeader
{
    DebugDataTagType    underlyingType; ///< Type of each element of the 2D array
    UINT16              dimension1;     ///< Array dimension 1 - or number of rows
    UINT16              dimension2;     ///< Array dimension 2 - or number of columns
} CAMX_PACKED;

///< @brief Header information for each data type version 1 (Version 0, means no header)
struct DebugDataHeaderV1
{
    DebugDataPipelineID pipelineID;     ///< Pipeline identification number
    UINT8               pathID;         ///< If multiple HW modules in same pipeline, but different path
    UINT8               orderID;        ///< If multiple HW modules in same path. ID number starting with 0 from input to output
    UINT16              reservedID[4];  ///< Reserved IDs for future use case
} CAMX_PACKED;

///< @brief Basic char type with header V1
struct DebugDataHeaderV1Char
{
    DebugDataHeaderV1   header;
    CHAR                value;
} CAMX_PACKED;

///< @brief Basic bool type with header V1
struct DebugDataHeaderV1Bool
{
    DebugDataHeaderV1   header;
    UINT8               value;
} CAMX_PACKED;

///< @brief Basic UINT8 type with header V1
struct DebugDataHeaderV1UINT8
{
    DebugDataHeaderV1   header;
    UINT8               value;
} CAMX_PACKED;

///< @brief Basic UINT16 type with header V1
struct DebugDataHeaderV1UINT16
{
    DebugDataHeaderV1   header;
    UINT16              value;
} CAMX_PACKED;

///< @brief Basic UINT32 type with header V1
struct DebugDataHeaderV1UINT32
{
    DebugDataHeaderV1   header;
    UINT32              value;
} CAMX_PACKED;

///< @brief Basic UINT64 type with header V1
struct DebugDataHeaderV1UINT64
{
    DebugDataHeaderV1   header;
    UINT64              value;
} CAMX_PACKED;

///< @brief Basic UQNumber type with header V1
struct DebugDataHeaderV1UQNumber
{
    DebugDataHeaderV1   header;
    DebugDataUQNumber   value;
} CAMX_PACKED;

///< @brief Basic URational type with header V1
struct DebugDataHeaderV1URational
{
    DebugDataHeaderV1   header;
    DebugDataURational  value;
} CAMX_PACKED;

///< @brief Basic INT8 type with header V1
struct DebugDataHeaderV1INT8
{
    DebugDataHeaderV1   header;
    INT8                value;
} CAMX_PACKED;

///< @brief Basic INT16 type with header V1
struct DebugDataHeaderV1INT16
{
    DebugDataHeaderV1   header;
    INT16               value;
} CAMX_PACKED;

///< @brief Basic INT32 type with header V1
struct DebugDataHeaderV1INT32
{
    DebugDataHeaderV1   header;
    INT32               value;
} CAMX_PACKED;

///< @brief Basic INT64 type with header V1
struct DebugDataHeaderV1INT64
{
    DebugDataHeaderV1   header;
    INT64               value;
} CAMX_PACKED;

///< @brief Basic QNumber type with header V1
struct DebugDataHeaderV1QNumber
{
    DebugDataHeaderV1   header;
    DebugDataQNumber    value;
} CAMX_PACKED;

///< @brief Basic Rational type with header V1
struct DebugDataHeaderV1Rational
{
    DebugDataHeaderV1   header;
    DebugDataRational   value;
} CAMX_PACKED;

///< @brief Basic float type with header V1
struct DebugDataHeaderV1Float
{
    DebugDataHeaderV1   header;
    FLOAT               value;
} CAMX_PACKED;

///< @brief Basic Double type with header V1
struct DebugDataHeaderV1Double
{
    DebugDataHeaderV1   header;
    double              value;
} CAMX_PACKED;


///< @brief customized debug data information, used to add tags by customer
struct CustomizedDebugdataInfo
{
    DebugDataTagID             tagID;           ///< Debug data tag ID
    CustomizedDebugDataID      type;            ///< Type of the debug data
    BOOL                       enabled;         ///< TRUE if debug data tag used
} CAMX_PACKED;

CAMX_END_PACKED

#endif // CAMXSTATSDEBUGDATATYPES_H
